diff -Nru libimage-exiftool-perl-11.88/arg_files/xmp2exif.args libimage-exiftool-perl-12.40+dfsg/arg_files/xmp2exif.args --- libimage-exiftool-perl-11.88/arg_files/xmp2exif.args 2019-01-10 14:15:16.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/arg_files/xmp2exif.args 2021-09-30 15:04:06.000000000 +0000 @@ -13,6 +13,7 @@ # 2015/01/12 - PH Avoid copying from non-standard namespaces # 2016/09/26 - PH Write Composite SubSec tags # 2018/05/07 - PH Added support for GPSDestXxxRef tags +# 2021/09/30 - PH Removed erroneous "-" when copying CreatorTool # # References: http://www.metadataworkinggroup.org/specs/ # @@ -34,7 +35,7 @@ -Composite:SubSecDateTimeOriginal < XMP-photoshop:DateCreated -Composite:SubSecCreateDate < XMP-xmp:CreateDate -Composite:SubSecModifyDate < XMP-xmp:ModifyDate --EXIF:Software < -XMP-xmp:CreatorTool +-EXIF:Software < XMP-xmp:CreatorTool -EXIF:Copyright < XMP-dc:Rights -EXIF:Artist < XMP-dc:Creator # XMP flash information is translated by the Composite Flash tag diff -Nru libimage-exiftool-perl-11.88/Changes libimage-exiftool-perl-12.40+dfsg/Changes --- libimage-exiftool-perl-11.88/Changes 2020-02-20 14:44:19.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/Changes 2022-02-09 12:19:14.000000000 +0000 @@ -4,8 +4,762 @@ RSS feed: https://exiftool.org/rss.xml -Note: The most recent production release is Version 11.85. (Other versions are -considered development releases, and are not uploaded to CPAN.) +Note: The most recent production release is Version 12.30. (Other versions are +considered development releases, and are not uploaded to MetaCPAN.) + +Feb. 9, 2022 - Version 12.40 + + - Added a new Nikon LensID (thanks Wolfgang Exler) + - Added PageCount tag to return the number of pages in a multi-page TIFF + - Added a few more Sony LensTypes (thanks Jos Roost) + - Decode some new Canon tags (thanks Mark Reid) + - Decode another Nikon Z9 tag (thanks Warren Hatch) + - Decode Nikon NKSC GPSImgDirection (thanks Olaf) + - Improved handling of empty XMP structures in lists + - Tolerate leading UTF-8 BOM in -geotag log files + - Updated photoshop_paths.config to include WorkingPath + - Patched to allow writing of MP4 videos which have url tracks with a missing + sample description entry + - Fixed typo in the name of a new Nikon tag (thanks Herb) + - Fixed description of GPR (General Purpose RAW) file type + - Fixed potential deep recursion runtime error when writing nested XMP + structures + - Fixed warning which could be generated when writing new + Composite:GPSCoordinates tag + - Fixed deep recursion error when reading multi-page TIFF images with more + than 100 pages + +Jan. 13, 2022 - Version 12.39 + + - Added a new Pentax LensType (thanks Christian Shulz) + - Added a couple of new Nikon LensID's + - Added support for Nikon NKSC sidecar files + - Decode more tags for the Nikon Z7 and Z9 (thanks Warren Hatch) + - Decode a couple more FLIR tags + - Extract ZIP file comments + - Made PNG ProfileName, SRGBRendering and Gamma writable + - Patched to avoid possible problem running "more" to show documentation in + Windows version + - Fixed problem writing Composite:GPSPosition with coordinates in DMS format, + and made this tag protected when writing + - Fixed bug where invalid date/time tags could be written to PNG files when + attempting to shift a non-existent date/time tag + - Fixed spelling of a few Matroska tag names (thanks Martin Hoppenheit) + +Dec. 20, 2021 - Version 12.38 + + - Decode a number of new tags for the Nikon Z9 (thanks Warren Hatch) + - Patched incorrect decoding of AEBShotCount for the Canon EOS 90D + - Patched EXR reader to support long tag names + - Patched security issue (thanks Joe Lothan) + - Fixed an incorrect tag ID for a new Nikon MakerNote tag (github #108) + - Fixed XMP-exif:GPSMeasureMode conversions to match EXIF + - Fixed problem where some namespaces may be undeclared in the -X output when + using the -struct option + +Dec. 8, 2021 - Version 12.37 + + - Decode timed GPS from Vantrue S1 dashcam MP4 videos + - Decode ColorData tags for the Canon EOS R3 (thanks LibRaw) + - Decode more makernotes tags for Nikon Z cameras (thanks Warren Hatch) + - Extract TransparentColor from GIF images + - Improved parsing of input time values for GPSTimeStamp to properly handle a + "." separator + - Improved warning when incorrectly using " + +Nov. 16, 2021 - Version 12.36 + + - IMPORTANT: Fixed bug introduced in 12.35 which corrupted JPEG 2000 images + when removing all metadata with -all= + - Added feature to bypass processing of specified XMP namespaces and + properties (to improve performance in cases where the XMP suffers from + Adobe-editing bloat) + - Added a number of new XMP tags used by Lightroom 11.0 + - Decode a number of new Nikon tags (thanks Warren Hatch) + - Made the Composite GPSPosition tag writable + - Fixed erroneous "Skipped unknown bytes after JPEG SOS" warning + - Fixed group for new writable Jpeg2000 color tags in -listx output + - Fixed problem finding files in Windows when using wildcards in file name and + a drive letter with no slash + +Nov. 11, 2021 - Version 12.35 + + - Added ability to write ICC_Profile (and other color specifications) to + Jpeg2000 images + - Added %o code to -W option format string + - Added %f code to -d option for fractional seconds + - Added a couple of new Sony LensType values (thanks Jos Roost) + - Added a new CanonModelID (thanks Norbert Wasser) + - Added a new Nikon LensID + - Decode more Nikon MakerNotes tags for some new models (thanks Warren Hatch) + - Extract ThumbnailImage from some DJI drone videos + - Enhanced -ee option to extract metadata from all frames in a SEQ file + - Patched to avoid possible "Use of uninitialized value" runtime warning + - Fixed a couple of misspelt new ICC_Profile tag names (thanks Herb) + - Fixed problem generating the correct file extension when extracting + OriginalRawImage from a DNG file using the -W option with the %s format code + - Fixed bug introduced in 11.91 where exiftool couldn't find its libraries + when run via a soft link. Also changed to look for config file in the link + target directory instead of the directory of the link itself + +Oct. 27, 2021 - Version 12.34 + + - Added support for ICC.2:2019 (Profile version 5.0.0 - iccMAX) color profiles + - Added ability to detect/delete a Windows Zone.Identifier alternate data + stream (ADS) via the new ZoneIdentifier tag (thanks Alex Xu) + - Added support for the Sony ILCE-7M4 (thanks Jos Roost) + - Added a new Sony lens (thanks LibRaw and Jos Roost) + - Added a new SonyModelID (thanks LibRaw) + - Added a new Canon RF lens (thanks Norbert Wasser) + - Improved handling of some SVG files + - Patched -overwrite_original_in_place option to open the output file in + update mode rather than write mode (to allow some write optimizations on + certain filesystems) (thanks Joel Low) + - Fixed case of tag ID for new XMP-iptcExt:EventID (thanks Michael Steidl) + - Fixed problem extracting ICC_Profile information from some PDF files + - API Changes: + - Added QuickTimePad option + +Oct. 16, 2021 - Version 12.33 + + - Added support for DNG version 1.6.0.0 + - Added two new Sony LensType values (thanks Jos Roost and LibRaw) + - Added some new elements to the XMP-crs:Look structure (thanks Herb) + - Added a few new IPTC XMP tags (thanks Michael Steidl) + - Added a new Canon RF lens (thanks Norbert Wasser) + - Decode Canon ShutterMode (thanks John Moyer) + - Extract LensModel from some Olympus MOV videos + - Generate MediaDataOffset/Size for MOV videos with zero-sized MDAT chunk + - Improvements to CBOR reader, including hex dump with -v3 option + - Recognize Final Cut Pro XML files + - Allow binary data of Protected tags to be extracted with the -X -j and -php + options with -b by setting the API RequestAll option to 3 + - Changed name of "Canon EF 80-200mm f/4.5-5.6" lens with LensType 38 to add + "II" to the name (Exiv2 issue 1906) + - Fixed runtime warning when processing files with a .DIR extension + +Sept. 30, 2021 - Version 12.32 + + - Added support for CBOR-format metadata in JUMBF (note that JUMBF support is + still experimental) + - Added a new Nikon LensID + - Added a new Pentax LensType + - Decode timed GPS for two more dashcam formats + - Support reference direction columns in -geotag CSV input + - Removed generation of GPSSpeedRef and GPSTrackRef tags in timed metadata for + most dashcam formats when speed is km/h and track is relative to true north + - Patched to allow writing of console output to named pipes + - Fixed formatting of InternalSerialNumber for some Panasonic cameras + - Fixed bug in arg_files/xmp2exif.args support file + +Sept. 22, 2021 - Version 12.31 + + - Added a new SonyModelID and a couple of new Sony lenses (thanks Jos Roost) + - Added a new Canon LensType (thanks Chris Skopec) + - Added Composite GPSLatitude/Longitude tags for Sony videos to combine the + reference hemispheres as with the Composite tags for EXIF GPS + - Decode DPX AspectRatio + - Decode more GoPro MP4 tags + - Extract ICC_Profile from CS0 object in PDF files + - Extract encrypted GPS from Akaso V1 dashcam videos (can't yet decrypt) + - Improved handling of QuickTime iTunesInfo tags, and created new "iTunes" + family 1 group for these + - Patched so NoPDFList option also applies when writing + - Patched to allow user-defined PNG TextualData tags to be written only as iTXt + - Patched PDF reader to avoid concatenating values of multiple List-type tags + into a single tag + +Aug. 12, 2021 - Version 12.30 (production release) + + - Added read support for Portable FloatMap (PFM) images (this was a bit of a + pain because they have the same file extension as Printer Font Metrix files) + - Added a few new Nikon LensID values (thanks LibRaw) + - Added a new Canon LensType + - Added a new Olympus CameraType (thanks LibRaw) + - Added minor warning about unknown data between JPEG segments + - Added a couple of new NikonSettings tags (thanks Warren Hatch) + - Added a new Sony LensType (thanks Jos Roost) + - Decode 'id3 ' chunk in WAV audio files + - Decode timed GPS from concatenated Garmin dashcam videos + - Decode SamsungTrailer information from sefd atom in HEIC images + - Decode more Sony MakerNote tags for the ZV-E10 (thanks Jos Roost) + - Decode DepthMapTiff from JPEG images of more Samsung models + - Decode timed GPS from M2TS videos of yet another type of dashcam + - Extract PreviewImage from Xaiomi MP4 videos + - Changed name of second EmbeddedImage in Samsung trailer to EmbeddedImage2 + - Improved Dutch translations for GPS tags (thanks Peter Dubbelman) + - Allow ICC_Profile to be "deleted" from AVIF files (actually, the profile + isn't really deleted. Instead, a zero-length profile is written to allow a + profile to be added back later since QuickTime item property containers + currently can't be created) + - Patched to remove 2 GB size limit when reading Photoshop ImageSourceData + +July 9, 2021 - Version 12.29 + + - Added a few new Nikon and Olympus lenses (thanks LibRaw) + - Improved a QuickTime "File format error" message to be more meaningful, and + made it a minor error + - Changed PNG writer to add EXIF before IDAT + - Some changes the way JUMBF metadata is handled + - Patched to read timed GPS from a different type of INSV videos + - Patched a security issue + - Fixed problem where ExifTool could hang when processing mebx timed metadata + +June 22, 2021 - Version 12.28 + + - Added read support for Leica Image File (LIF) images + - Added a new Olympus LensType (thanks LibRaw) + - Decode another Panasonic tag (thanks LibRaw) + - Decode more timed metadata from Sony MP4 videos + - Attempt to shorten tag names for metadata in CZI files + - Allow full QuickTime Keys tag ID's in UserDefined tags (fixes backward + incompatibility introduced in 12.02) + - Patched to handle special characters in Torrent tag values + +June 9, 2021 - Version 12.27 + + - Added a new SonyModelID value + - Added two new Nikon LensID values (thanks Daniel) + - Added a new Pentax RawDevelopmentProcess value + - Added a few new Sony LensType values (thanks Jos Roost) + - Added warning if IPTCDigest is not current + - Decode a couple more Pentax tags (thanks LibRaw) + - Decode streaming GPS from Novatek INNOVV MP4 and TS videos + - Improved tag names in config_files/covert_regions.config (thanks StarGeek) + - Changed MIME types for MS Office macro-enabled formats to add the .12 + - Patched Canon LensID logic to properly identify the Canon RF 24-105mm F4 L + IS USM lens + - Patched decoding of camm6 GPSDateTime to use a flexible epoch because other + apps don't seem to use a consistent time zero + - Fixed family 7 group names for QuickTime Keys tags + - Fixed problem reading BeatsPerMinute from some MP4 files + - Fixed hemisphere problem when extracting GPS from 70mai dashcam videos + +May 20, 2021 - Version 12.26 (production release) + + - Added support for JPEG Stereo (JPS) images + - Added a new Sony LensType (thanks LibRaw) + - Added a new PentaxModelID (thanks LibRaw) + - Changed ExifTool namespace URI to use exiftool.org instead of exiftool.ca in + the -X option output (exiftool.ca is still recognized when reading XML) + - Improved handling of large-array warnings in -htmldump output + - Changed handling of escaped characters in #[CSTR] lines of -@ argfile + - Patched security vulnerability in argument of -lang option + - Fixed problem which could cause a "Wide character" warning and generate a + corrupted output file when writing some illegal values + +History of older versions (back to Nov. 19, 2003 - Version 1.00) --> + +Apr. 22, 2021 - Version 12.25 + + - JPEG XL support is now official + - Added read support for Medical Research Council (MRC) image files + - Added ability to write a number of 3gp tags in video files + - Added a new Sony PictureProfile value (thanks Jos Roost) + - Added a new Sony LensType (thanks LibRaw) + - Added a new Nikon LensID (thanks Niels Kristian Bech Jensen) + - Added a new Canon LensType + - Decode more GPS information from Blackvue dashcam videos + - Decode a couple of new NikonSettings tags (thanks Warren Hatch) + - Decode a few new RIFF tags + - Improved Validate option to add minor warning if standard XMP is missing + xpacket wrapper + - Avoid decoding some large arrays in DNG images to improve performance unless + the -m option is used + - Patched bug that could give runtime warning when trying to write an empty + XMP structure + - Fixed decoding of ImageWidth/Height for JPEG XL images + - Fixed problem were Microsoft Xtra tags couldn't be deleted + +Apr. 13, 2021 - Version 12.24 + + - Added a new PhaseOne RawFormat value (thanks LibRaw) + - Decode a new Sony tag (thanks Jos Roost) + - Decode a few new Panasonic and FujiFilm tags (thanks LibRaw and Greybeard) + - Updated acdsee.config in distribution (thanks StarGeek) + - Recognize AutoCAD DXF files + - More work on experimental JUMBF read support + - More work on experimental JPEG XL read/write support + - Patched security vulnerability in DjVu reader + +Apr. 1, 2021 - Version 12.23 + + - Added support for Olympus ORI files + - Added experimental read/write support for JPEG XL images + - Added experimental read support for JUMBF metadata in JPEG and Jpeg2000 + images + - Added built-in support for parsing GPS track from Denver ACG-8050 videos + with the -ee option + - Added a some new Sony lenses (thanks Jos Roost and LibRaw) + - Changed priority of Samsung trailer tags so the first DepthMapImage takes + precedence when -a is not used + - Improved identification of M4A audio files + - Patched to avoid escaping ',' in "Binary data" message when -struct is used + - Removed Unknown flag from MXF VideoCodingSchemeID tag + - Fixed -forcewrite=EXIF to apply to EXIF in binary header of EPS files + - API Changes: + - Added BlockExtract option + +Mar. 17, 2021 - Version 12.22 + + - Added a few new Sony LensTypes and a new SonyModelID (thanks Jos Roost and + LibRaw) + - Added Extra BaseName tag + - Added a new CanonModelID (thanks LibRaw) + - Decode timed GPS from unlisted programs in M2TS videos with the -ee3 option + - Decode more Sony rtmd tags + - Decode some tags for the Sony ILME-FX3 (thanks Jos Roost) + - Allow negative values to be written to XMP-aux:LensID + - Recognize HEVC video program in M2TS files + - Enhanced -b option so --b suppresses tags with binary data + - Improved flexibility when writing GPS coordinates: + - Now pulls latitude and longitude from a combined GPSCoordinates string + - Recognize full word "South" and "West" to write negative coordinates + - Improved warning when trying to write an integer QuickTime date/time tag and + Time::Local is not available + - Convert GPSSpeed from mph to km/h in timed GPS from Garmin MP4 videos + +Feb. 24, 2021 - Version 12.21 + + - Added a few new iOS QuickTime tags + - Decode a couple more Sony rtmd tags + - Patch to avoid possible "Use of uninitialized value" warning when attempting + to write QuickTime date/time tags with an invalid value + - Fixed problem writing Microsoft Xtra tags + - Fixed Windows daylight savings time patch for file times that was broken in + 12.19 (however directory times will not yet handle DST properly) + +Feb. 23, 2021 - Version 12.20 + + - Added ability to write some Microsoft Xtra tags in MOV/MP4 videos + - Added two new Canon LensType values (thanks Norbert Wasser) + - Added a new Nikon LensID + - Fixed problem reading FITS comments that start before column 11 + +Feb. 18, 2021 - Version 12.19 + + - Added -list_dir option + - Added the "ls-l" Shortcut tag + - Extract Comment and History from FITS files + - Enhanced FilePermissions to include device type (similar to "ls -l") + - Changed the name of Apple ContentIdentifier tag to MediaGroupUUID + (thanks Neal Krawetz) + - Fixed a potential "substr outside of string" runtime error when reading + corrupted EXIF + - Fixed edge case where NikonScanIFD may not be copied properly when copying + MakerNotes to another file + - API Changes: + - Added ability to read/write System tags of directories + - Enhanced GetAllGroups() to support family 7 and take optional ExifTool + reference + - Changed QuickTimeHandler option default to 1 + +Feb. 9, 2021 - Version 12.18 + + - Added a new SonyModelID + - Decode a number of Sony tags for the ILCE-1 (thanks Jos Roost) + - Decode a couple of new Canon tags (thanks LibRaw) + - Patched to read differently formatted UserData:Keywords as written by iPhone + - Patched to tolerate out-of-order Nikon MakerNote IFD entries when obtaining + tags necessary for decryption + - Fixed a few possible Condition warnings for some NikonSettings tags + +Feb. 3, 2021 - Version 12.17 + + - Added a new Canon FocusMode value + - Added a new FujiFilm FilmMode value + - Added a number of new XMP-crs tags (thanks Herb) + - Decode a new H264 MDPM tag + - Allow non-conforming lower-case XMP boolean "true" and "false" values to be + written, but only when print conversion is disabled + - Improved Validate option to warn about non-capitalized boolean XMP values + - Improved logic for setting GPSLatitude/LongitudeRef values when writing + - Changed -json and -php options so the -a option is implied even without the + -g option + - Avoid extracting audio/video data from AVI videos when -ee -u is used + - Patched decoding of Canon ContinuousShootingSpeed for newer firmware + versions of the EOS-1DXmkIII + - Re-worked LensID patch of version 12.00 (github issue #51) + - Fixed a few typos in newly-added NikonSettings tags (thanks Herb) + - Fixed problem where group could not be specified for PNG-pHYs tags when + writing + +Jan. 21, 2021 - Version 12.16 (production release) + + - Extract another form of video subtitle text + - Enhanced -ee option with -ee2 and -ee3 to allow parsing of the H264 video + stream in MP4 files + - Changed a Nikon FlashMode value + - Fixed problem that caused a failed DPX test on Strawberry Perl + - API Changes: + - Enhanced ExtractEmbedded option + +Jan. 18, 2021 - Version 12.15 (production release) + + - Added a couple of new Sony LensType values (thanks LibRaw and Jos Roost) + - Added a new Nikon FlashMode value (thanks Mike) + - Decode NikonSettings (thanks Warren Hatch) + - Decode thermal information from DJI RJPEG images + - Fixed extra newline in -echo3 and -echo4 outputs added in version 12.10 + - Fixed out-of-memory problem when writing some very large PNG files under + Windows + +Jan. 6, 2021 - Version 12.14 + + - Added support for 2 more types of timed GPS in video files (that makes 49 + different formats now supported) + - Added validity check for PDF trailer dictionary Size + - Added a new Pentax LensType + - Extract metadata from Jpeg2000 Association box + - Changed -g:XX:YY and -G:XX:YY options to show empty strings for non-existent + groups + - Patched to issue warning and avoid writing date/time values with a zero + month or day number + - Patched to avoid runtime warnings if trying to set FileName to an empty + string + - Fixed issue that could cause GPS test number 12 to fail on some systems + - Fixed problem extracting XML as a block from Jpeg2000 images, and extract + XML tags in the XML group instead of XMP + +Dec. 24, 2020 - Version 12.13 + + - Added -i HIDDEN option to ignore files with names that start with "." + - Added a few new Nikon ShutterMode values (thanks Jan Skoda) + - Added ability to write Google GCamera MicroVideo XMP tags + - Add time zone automatically to most string-based QuickTime date/time tags + when writing unless the PrintConv option is disabled + - Decode a new Sony tag (thanks LibRaw) + - Changed behaviour when writing only pseudo tags to return an error and avoid + writing any other tags if writing FileName fails + - Print "X image files read" message even if only 1 file is read when at least + one other file has failed the -if condition + +Dec. 4, 2020 - Version 12.12 + + - Added ability to geotag from DJI CSV log files + - Added a new CanonModelID + - Added a couple of new Sony LensType values (thanks LibRaw) + - Enhanced -csvDelim option to allow "\t", "\n", "\r" and "\\" + - Unescape "\b" and "\f" in imported JSON values + - Fixed bug introduced in 12.10 which generated a "Not an integer" warning + when attempting to shift some QuickTime date/time tags + - Fixed shared-write permission problem with -@ argfile when using -stay_open + and a filename containing special characters on Windows + +Nov. 27, 2020 - Version 12.11 + + - Added -csvDelim option + - Added new Canon and Olympus LensType values (thanks LibRaw) + - Added a warning if ICC_Profile is deleted from an image (github issue #63) + - EndDir() function for -if option now works when -fileOrder is used + - Changed FileSize conversion to use binary prefixes since that is how the + conversion is currently done (eg. MiB instead of MB) + - Patched -csv option so columns aren't resorted when using -G option and one + of the tags is missing from a file + - Fixed incompatiblity with Google Photos when writing UserData:GPSCoordinates + to MP4 videos + - Fixed problem where the tags available in a -p format string were limited to + the same as the -if[NUM] option when NUM was specified + - Fixed incorrect decoding of SourceFileIndex/SourceDirectoryIndex for Ricoh + models + +Nov. 12, 2020 - Version 12.10 + + - Added -validate test for proper TIFF magic number in JPEG EXIF header + - Added support for Nikon Z7 LensData version 0801 + - Added a new XMP-GPano tag + - Decode ColorData for the Canon EOS 1DXmkIII (thanks LibRaw) + - Decode more tags for the Sony ILCE-7SM3 (thanks Jos Roost) + - Automatically apply QuickTimeUTC option for CR3 files + - Improved decoding of XAttrMDLabel from MacOS files + - Ignore time zones when writing date/time values and using the -d option + - Enhanced -echo3 and -echo4 options to allow exit status to be returned + - Changed -execute so the -q option no longer suppresses the "{ready}" message + when a synchronization number is used (eg. -execute123) + +Oct. 29, 2020 - Version 12.09 + + - Added ability to copy CanonMakerNotes from CR3 images to other file types + - Added read support for ON1 presets file (.ONP) + - Added two new CanonModelID values + - Added trailing "/" when writing QuickTime:GPSCoordinates + - Added a number of new XMP-crs tags + - Added a new Sony LensType (thanks Jos Roost) + - Added a new Nikon Z lens (thanks LibRaw) + - Added a new Canon LensType + - Decode ColorData for Canon EOS R5/R6 + - Decode a couple of new HEIF tags + - Decode FirmwareVersion for Canon M50 + - Improved decoding of Sony CreativeStyle tags (thanks Jos Roost) + - Improved parsing of Radiance files to recognize comments + - Renamed GIF AspectRatio tag to PixelAspectRatio + - Patched EndDir() feature so subdirectories are always processed when -r is + used (previously, EndDir() would end processing of a directory completely) + - Yet another tweak to the EventTime formatting rules (also allow time-only + values with fractional seconds and a time zone) + - Avoid loading GoPro module unnecessarily when reading MP4 videos from some + other cameras + - Fixed problem with an incorrect naming of CodecID tags in some MKV videos + - Fixed verbose output to avoid "adding" messages for existing flattened XMP + tags + +Oct. 15, 2020 - Version 12.08 + + - Added read support for MacOS "._" sidecar files + - Added a new Sony LensType (thanks Jos Roost) + - Recognize Mac OS X xattr files + - Extract ThumbnailImage from MP4 videos of more dashcam models + - Improved decoding of a number of Sony tags (thanks Jos Roost) + - Fixed problem where the special -if EndDir() function didn't work properly + for directories after the one in which it was initially called + - Patched to read DLL files which don't have a .rsrc section (thanks Hank) + - Patched to support new IGC date format when geotagging + - Patched to read DLL files with an invalid size in the header + +Oct. 2, 2020 - Version 12.07 + + - Added support for GoPro .360 videos + - Added some new Canon RF and Nikkor Z lenses (thanks LibRaw) + - Added some new Sony LensType and CreativeStyle values and decode some + ILCE-7C tags (thanks Jos Roost) + - Added a number of new Olympus SceneMode values (thanks Herb) + - Added a new Nikon LensID + - Decode more timed metadata from Insta360 videos (thanks Thomas Allen) + - Decode timed GPS from videos of more Garmin dashcam models + - Decode a new GoPro video tag + - Reformat time-only EventTime values when writing and prevent arbitrary + strings from being written + - Patched to accept backslashes in SourceFile entries for -csv option + +Sept. 11, 2020 - Version 12.06 + + - Added read support for Lyrics3 metadata (and fixed problem where APE + metadata may be ignored if Lyrics3 exists) + - Added a new Panasonic VideoBurstMode value (thanks Klaus Homeister) + - Added a new Olympus MultipleExposureMode value + - Added a new Nikon LensID + - Added back conversions for XMP-dwc EventTime that were removed in 12.04 with + a patch to allow time-only values + - Decode GIF AspectRatio + - Decode Olympus FocusBracketStepSize (thanks Karsten) + - Extract PNG iDOT chunk in Binary format with the name AppleDataOffsets + - Process PNG images which do not start with mandatory IHDR chunk + +Aug. 24, 2020 - Version 12.05 + + - Added a new Panasonic SelfTimer value (thanks Herb) + - Decode a few more DPX tags (thanks Harry Mallon) + - Extract AIFF APPL tag as ApplicationData + - Fixed bug writing QuickTime ItemList 'gnre' Genre values + - Fixed an incorrect value for Panasonic VideoBurstResolution (thanks Herb) + - Fixed problem when applying a time shift to some invalid makernote date/time + values + +Aug. 10, 2020 - Version 12.04 + + - Added read support for Zeiss ZISRAW CZI files + - Added some new values for a couple of Olympus tags (thanks Sebastian) + - Decode a number of new tags for the Sony ILCE-7SM3 (thanks Jos Roost) + - Removed formatting restrictions on XMP-dwc:EventTime to allow a time-only + value to be written + - Moved new QuckTime ItemList tags added in version 12.02 to the proper group + (they were incorrectly added to the Keys group) + - Improved QuickTime -v3 output to show default language codes + - Patched -lang option to work for the values of somet tags with coded + translations + - Patched the format of a number of QuickTime tags when writing for improved + compatibility with iTunes and AtomicParsley + - Patched to write a default QuickTime language code of 0x0000 (null) instead + of 0x55c4 ('und') + +July 29, 2020 - Version 12.03 + + - Added family 7 group names to allow tag ID's to be specified when reading + and writing + - Fixed a couple of typos in tag values (thanks Herb) + - API Changes: + - Added HexTagIDs option + - Enhanced GetNewValue() to allow family 7 groups names to be used + - Internal Changes: + - Changed Composite tag ID's to use "-" instead of "::" as a separator + +July 27, 2020 - Version 12.02 + + - Added support for a number of new QuickTime ItemList tags + - Added support for writing XMP-xmp:RatingPercent + - Added a new Sony LensType (thanks Jos Roost and LibRaw) + - Added a new Pentax LensType (thanks James O'Neill) + - Decode barcodes from Ricoh APP5 RMETA segment + - Decode a few new QuickTime tags written by Ricoh and Garmin cameras + - Decode timed GPS from Sony A7R IV MP4 videos + - Decode timed GPS from 70mai dashcam videos + - Decode a few new Panasonic tags (thanks Klaus Homeister) + - Decode altitude and more accurate latitude/longitude from Transcend Driver + Pro 230 MP4 videos + - Improved decoding of some Canon EOS 1DXmkIII custom functions + - Allow integer QuickTime TrackNumber and DiskNumber values + - Relax validity check of QuickTime:ContentCreateDate when writing with -n + - Removed "Com" from the start of some unknown QuickTime ItemList tag names + - Patched CanonCustom decoding for bug in Canon EOS-1DX firmware + - Changed QuickTime CleanAperture tags decode as signed rationals + +June 24, 2020 - Version 12.01 + + - Added a new NEFCompression value (thanks Warren Hatch) + - Added a new Sony LensType (thanks Jos Roost) + - Decode timed GPS from Rove Stealth 4K dashcam videos + - Fixed bug which would corrupt TIFF images with 16-bit image data offsets + when writing (these are very rare) + +June 11, 2020 - Version 12.00 (production release) + + - Added two new Olympus LensTypes (thanks Don Komarechka for one) + - Added two new Sony LensType values (thanks Jos Roost) + - Added a few new Nikon LensID's (thanks Mathieu Carbou) + - Added support for the Sony ZV-1 (thanks Jos Roost) + - Added a new CanonModelID (thanks Jos Roost) + - Added missing MimeType values for HEICS and HEIFS files + - Added definitions for a number of new XMP-crs tags + - Recognize WOFF and WOFF2 font files + - Decode streaming GPS from Roadhawk, EEEkit and 360Fly MP4 videos + - Decode a number of new tags for the Nikon D6 (thanks Warren Hatch) + - Decode a couple more AF tags for the D500/D850 + - Decode a number of new Panasonic tags + - Improved Composite LensID logic (thanks Matt Stancliff) + - Enhanced -v option to state when a directory has 0 entries + - Removed a couple of incorrect Validate warnings for bilevel TIFF images + - Drop ContrastCurve tag when copying from NEF to JPEG + - Changed -csv output to add "Unknown" group name to column headings for + missing tags when -f and -G options are used + - Patched to support new XMP LensID format for Nikon cameras as written by + Apple Photos (thanks Mattsta) + - Fixed problem extracting metadata from Sigma DP2 Quattro X3F files + - Fixed End() and EndDir() functions so they work when writing and when the -v + option is used + - Fixed problem recognizing some PGM files + - Fixed bug in offsets for some Photoshop information in -v3 output + - Fixed problem writing a list containing empty elements inside an XMP + structure + - API Changes: + - Added NoMultiExif option + - Changed FilterW option to not write tag if $_ is set to undef + +May 11, 2020 - Version 11.99 + + - Added a new Nikon LensID (thanks Mykyta Kozlov) + - Added a new Canon LensType + - Added a newn PentaxModelID + - Decode a few new QuickTime tags + - Decode new ID3 Grouping tag + - Decode a few more MinoltaRaw tags (thanks LibRaw) + - Fixed runtime warning which could occur when reading corrupted RTF files + - Fixed another potential pitfall in M2TS Duration calculation + - Fixed problem extracting some unknown QuickTime:Keys tags + - Fixed problem decoding Nikon D850 orientation tags + - Fixed bug where TIFF image data may not be padded to an even number of bytes + +May 1, 2020 - Version 11.98 + + - Added a new Nikon LensID (thanks Warren Hatch) + - Added a new Sony LensType (thanks LibRaw) + - Added a new Canon LensType + - Patched to extract EXIF with an "Exif\0\0" header from WebP images + - Enhanced -efile option and added to the documentation + - Minor tweak to -htmlDump output (disallow locking of empty selection) + - Fixed problem determining Duration of some M2TS videos + +Apr. 27, 2020 - Version 11.97 + + - Added experimental -efile option (undocumented) + - Decode NMEA GGA sentence from streaming GPS of some dashcam videos + +Apr. 24, 2020 - Version 11.96 + + - Decode streaming GPS from Lucas LK-7900 Ace AVI videos + - Changed new Exit/ExitDir function names to End/EndDir + - Fixed inconsistencies when using "-use mwg" together with the -wm option + +Apr. 23, 2020 - Version 11.95 + + - Added Exit() and ExitDir() functions for use in -if conditions (NOTE: these + function names changed to End() and EndDir() in ExifTool 11.96) + - Enhanced -geotag feature to support a more flexible input CSV file format + - Enhanced -if and API Filter options to allow access to ExifTool object via + $self + - Fixed problem reading HEIC Exif with a missing header + +Apr. 17, 2020 - Version 11.94 + + - Added support for QuickTime ItemList:GPSCoordinates + - Added additional Validate test for overlapping EXIF values + - Added a new Sony LensType (thanks Jos Roost) + - Added a new Nikon LensID + - Decode a few more Nikon tags (thanks Warren Hatch) + - Decode Pentax ShutterType + - Changed color of locked highlighted selection in -htmlDump output + - Fixed problem reading PDF files written by Microsoft Print-to-PDF + - Fixed problem where -X output would produce invalid XML for MP4 files + containing an HTCTrack + +Apr. 3, 2020 - Version 11.93 + + - Added new config file to the distribution for writing Pix4D XMP-Camera tags + (config_files/pix4d.config) + - Added support for the DOSCyrillic (cp866) character set + - Added IO::String to the Windows EXE version + - Improved identification of Canon RF lenses (thanks LibRaw) + - Enhanced -htmlDump output to add "File offset" entry for EXIF tags and + ability lock highlighted selection by clicking the mouse + - Enhanced -srcfile option to generate OriginalFileName and OriginalDirectory + UserParam tags + - Patched HEIC writer to add missing pitm box if necessary + - Fixed problem adding back EXIF after deleting it from HEIC file + - Fixed minor problem with incorrect number of bytes being reported for + invalid header in corrupt files + - API Changes: + - Enhanced UserParam option to allow parameters to be extracted as if + they were normal tags + +Mar. 19, 2020 - Version 11.92 + + - Added a new Nikon LensID (thanks Wolfgang Exler) + - Decode a few new Leica tags (thanks Tim Gray) + - Decode AccelerometerData from Samsung Gear 360 videos + - Fixed a couple of problems decoding timed GPS metadata from NextBase dashcam + videos + - Fixed problem where -X option could produce invalid XML when reading + corrupted XMP + +Mar. 5, 2020 - Version 11.91 + + - Added undocumented -xpath option for use by alternate Windows version + - Decode a couple of new Panasonic tags + - Documented -ec option (available since version 11.54) + - Reverted -htmlDump fix of 11.90 because it broke more than it fixed, and + instead applied a targeted patch to fix this problem for RW2 files + +Mar. 3, 2020 - Version 11.90 + + - Added a new Sony LensType (thanks LibRaw and Jos Roost) + - Added two new Olympus LensType values + - Added a new Canon LensType + - Added some new Canon RecordMode values + - Added some new QuickTime GeneralProfileIDC values + - Added new values for a couple of FujiFilm tags + - Added a number of new QuickTime GenreID values + - Decode Nikon Z6/Z7 phase-detect AF points (thanks Andy Dragon) + - Patched to avoid possible "Undefined subroutine" error in MacOS 10.15 + - Fixed incorrect offsets in -htmlDump output for some file types + +Feb. 25, 2020 - Version 11.89 + + - Added support for Exif 2.32 for XMP + - Recognize the HIF file extension + - Improved verbose output for QuickTime iref items + - Patched to create new GPS metadata in Canon CR3 images using a default byte + order that is the same as existing EXIF boxes + - Patched to add missing newline that could occur in XMP with the API Compact + Shorthand option Feb. 20, 2020 - Version 11.88 @@ -864,8 +1618,8 @@ - Added a new Canon LensType (thanks LibRaw) - Minor improvements to verbose dump of streaming GPS metadata - Reverted change of version 10.71 which resulted in Windows not recognizing - PNG CreationTime as written by ExifTool (added this feature to the - StrictDate API option instead) + PNG CreationTime as written by ExifTool (added this feature to the API + StrictDate option instead) - Improved decoding of Nikon CropHiSpeed (thanks LibRaw) - Improved -fast option to reduce memory usage when reading JPG, PNG, QuickTime-based and RIFF-based files via a sequential stream @@ -979,7 +1733,7 @@ June 13, 2018 - Version 11.02 - Added support for a different format of Apple iWorks files - - Added undocumented FixCorruptedMOV API option to allow fixing MOV videos + - Added undocumented API FixCorruptedMOV option to allow fixing MOV videos with multiple 'mdat' atoms which were corrupted by ExifTool - Decode more QuickTime tags - Decode more PanasonicRaw tags (thanks Klaus Homeister) @@ -8934,7 +9688,7 @@ Apr. 6, 2004 - Version 3.36 - Added support for Sanyo and Minolta maker notes - - Added skeleton for interpeting Sony maker notes + - Added skeleton for interpreting Sony maker notes - Interpret Pentax PrintIM Apr. 6, 2004 - Version 3.35 diff -Nru libimage-exiftool-perl-11.88/config_files/acdsee.config libimage-exiftool-perl-12.40+dfsg/config_files/acdsee.config --- libimage-exiftool-perl-11.88/config_files/acdsee.config 2020-02-05 13:52:28.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/config_files/acdsee.config 2022-02-09 12:08:05.000000000 +0000 @@ -2,20 +2,76 @@ # File: acdsee.config # # Description: This config file defines ACDSee XMP region tags for writing. +# The following tags are created in the XMP-acdsee-rs group # -# Usage: exiftool -config acdsee.config -ACDSEETAG=VALUE FILE ... +# RegionInfoACDSee : The structured tag for the ACDSee regions +# (similar to XMP-mwg-rs:RegionInfo) +# +# The following tags are the width, height, and unit of the +# image at the time of processing when storing image region +# metadata. They are similar to the AppliedToDimensions tags +# of the MWG regions. +# ACDSeeRegionAppliedToDimensionsH : Height of the image +# ACDSeeRegionAppliedToDimensionsUnit : Unit of the image +# ACDSeeRegionAppliedToDimensionsW : Width of the image +# +# Actual region data, stored in an array. These flattened tags +# are treated as List Type tags. There are two region types, +# the ALYArea and the DLYArea. The ALYArea tags tags assigned +# by ACDSee and are usually square in dimensions. The DLYArea +# tags are both the tags assigned by ACDSee (but possibly +# rectangular instead of square) as well as any manual +# assigned tags. They are similar to the area tags of the MWG +# regions. +# ACDSeeRegionDLYAreaH : Height of DLY region +# ACDSeeRegionDLYAreaW : Width of DLY region +# ACDSeeRegionDLYAreaX : X centerpoint of DLY region +# ACDSeeRegionDLYAreaY : Y centerpoint of DLY region +# ACDSeeRegionALYAreaH : Height of ALY region +# ACDSeeRegionALYAreaW : Width of ALY region +# ACDSeeRegionALYAreaX : X centerpoint of ALY region +# ACDSeeRegionALYAreaY : Y centerpoint of ALY region +# ACDSeeRegionName : Name of region +# ACDSeeRegionType : Type of region +# ACDSeeRegionNameAssignType : How the type was assigned. +# "Manual" is the only known +# entry at this time +# +# Conversion tags. These tags can be used to convert other region +# type tags to ACDSee regions. +# MPRegion2ACDSeeRegion : Converts a Microsoft RegionInfoMP +# IPTCRegion2ACDSeeRegion : Converts an IPTC ImageRegion +# MWGRegion2ACDSeeRegion : Converts a MWG RegionInfo +# +# Usage: To set individual tags +# exiftool -config acdsee.config -ACDSEETAG=VALUE FILE ... +# +# To convert Microsoft Regions to ACDSee regions +# exiftool -config acdsee.config "-RegionInfoACDSee "ACDSeeRegionAppliedToDimensions*" +# "RegionInfoACDSeeRegionList* -> "ACDSeeRegion*" #------------------------------------------------------------------------------ +use Data::Dumper; my %sACDSeeDimensions = ( STRUCT_NAME => 'ACDSee Dimensions', NAMESPACE => {'acdsee-stDim' => 'http://ns.acdsee.com/sType/Dimensions#'}, - 'w' => { Writable => 'real' }, - 'h' => { Writable => 'real' }, - 'unit' => { }, + 'w' => { Writable => 'real' }, + 'h' => { Writable => 'real' }, + 'unit' => { }, ); my %sACDSeeArea = ( @@ -38,13 +94,119 @@ ); %Image::ExifTool::UserDefined = ( - # new XMP namespaces (eg. xxx) must be added to the Main XMP table: + # new XMP namespaces for ACDSee regions 'Image::ExifTool::XMP::Main' => { 'acdsee-rs' => { # <-- must be the same as the NAMESPACE prefix - SubDirectory => { - TagTable => 'Image::ExifTool::UserDefined::ACDSeeRegions' + SubDirectory => { + TagTable => 'Image::ExifTool::UserDefined::ACDSeeRegions' + }, + }, + }, + 'Image::ExifTool::Composite' => { + # create an ACDSee RegionInfo structure from a Microsoft RegionInfoMP structure + MPRegion2ACDSeeRegion => { + Require => { + 0 => 'RegionInfoMP', + 1 => 'ImageWidth', + 2 => 'ImageHeight', + }, + ValueConv => q{ + my ($rgn, @newRgns); + foreach $rgn (@{$val[0]{Regions}}) { + my $name = $$rgn{PersonDisplayName}; + next unless $$rgn{Rectangle} or defined $name; + my %newRgn = ( Type => 'Face' ); + if (defined $name) { + # don't add ignored faces + next if $name eq 'ffffffffffffffff'; + $newRgn{Name} = $name; + } + if ($$rgn{Rectangle}) { + my @rect = split /\s*,\s*/, $$rgn{Rectangle}; + $newRgn{DLYArea} = { + X => $rect[0] + $rect[2]/2, + Y => $rect[1] + $rect[3]/2, + W => $rect[2], + H => $rect[3], + } if @rect == 4; + } + push @newRgns, \%newRgn; + } + return { + AppliedToDimensions => { W => $val[1], H => $val[2], Unit => 'pixel' }, + RegionList => \@newRgns, + }; }, }, + # create an ACDSee RegionInfo structure from an IPTC ImageRegion list + IPTCRegion2ACDSeeRegion => { + Require => { + 0 => 'ImageRegion', + 1 => 'ImageWidth', + 2 => 'ImageHeight', + }, + ValueConv => q{ + my ($rgn, @newRgns); + my $rgns = ref $val[0] eq 'ARRAY' ? $val[0] : [ $val[0] ]; + foreach $rgn (@$rgns) { + my %newRgn = ( Type => 'Face' ); + if ($$rgn{RegionBoundary} and $$rgn{RegionBoundary}{RbShape} eq 'rectangle') { + my @rect = @{$$rgn{RegionBoundary}}{'RbX','RbY','RbW','RbH'}; + if ($$rgn{RegionBoundary}{RbUnit} eq 'pixel') { + $rect[0] /= $val[1], $rect[2] /= $val[1]; + $rect[1] /= $val[2]; $rect[3] /= $val[2]; + } + $newRgn{'DLYArea'} = { + X => $rect[0] + $rect[2]/2, + Y => $rect[1] + $rect[3]/2, + W => $rect[2], + H => $rect[3], + }; + } else { + next unless defined $$rgn{Name}; + } + $newRgn{Name} = $$rgn{Name} if defined $$rgn{Name}; + push @newRgns, \%newRgn; + } + return { + AppliedToDimensions => { 'W' => $val[1], 'H' => $val[2], 'Unit' => 'pixel' }, + RegionList => \@newRgns, + }; + }, + }, + + # create an MWG RegionInfo structure from an IPTC ImageRegion list + MWGRegion2ACDSeeRegion => { + Require => { + 0 => 'RegionInfo', + 1 => 'ImageWidth', + 2 => 'ImageHeight', + }, + ValueConv => q{ + my ($rgn, @newRgns); + my %newRgn; + foreach $rgn (@{$val[0]{RegionList}}) { + next unless $$rgn{Area} or defined $$rgn{Name}; + my %newRgn; + if ($$rgn{Area}) { + $newRgn{'DLYArea'} = { + 'X' => $$rgn{Area}{'X'}, + 'Y' => $$rgn{Area}{'Y'}, + 'W' => $$rgn{Area}{'W'}, + 'H' => $$rgn{Area}{'H'}, + }; + }; + $newRgn{Name} = $$rgn{Name} if defined $$rgn{Name}; + $newRgn{'Type'} = $$rgn{'Type'} if defined $$rgn{'Type'}; + push @newRgns, \%newRgn; + } + return { + 'AppliedToDimensions' => $val[0]{'AppliedToDimensions'}, + RegionList => \@newRgns, + } + }, + }, + #### }, ); @@ -54,18 +216,43 @@ WRITABLE => 'string', # (default to string-type tags) Regions => { Name => 'RegionInfoACDSee', + FlatName => 'ACDSee', # the "Struct" entry defines the structure fields Struct => { # optional structure name (used for warning messages only) - STRUCT_NAME => 'ACDSee RegionInfo', + STRUCT_NAME => 'ACDSee RegionInfo', RegionList => { + FlatName => 'Region', Struct => \%sACDSeeRegionStruct, List => 'Bag', }, - AppliedToDimensions => { Struct => \%sACDSeeDimensions }, + AppliedToDimensions => { + FlatName => 'RegionAppliedToDimensions',Struct => \%sACDSeeDimensions }, }, }, ); +# Shortcuts to old names added so as not to break previously used commands +%Image::ExifTool::UserDefined::Shortcuts = ( + RegionInfoACDSeeAppliedToDimensionsH => 'ACDSeeRegionAppliedToDimensionsH', + RegionInfoACDSeeAppliedToDimensionsUnit => 'ACDSeeRegionAppliedToDimensionsUnit', + RegionInfoACDSeeAppliedToDimensionsW => 'ACDSeeRegionAppliedToDimensionsW', + RegionInfoACDSeeRegionListDLYAreaH => 'ACDSeeRegionDLYAreaH', + RegionInfoACDSeeRegionListDLYAreaW => 'ACDSeeRegionDLYAreaW', + RegionInfoACDSeeRegionListDLYAreaX => 'ACDSeeRegionDLYAreaX', + RegionInfoACDSeeRegionListDLYAreaY => 'ACDSeeRegionDLYAreaY', + RegionInfoACDSeeRegionListALGAreaH => 'ACDSeeRegionALGAreaH', + RegionInfoACDSeeRegionListALGAreaW => 'ACDSeeRegionALGAreaW', + RegionInfoACDSeeRegionListALGAreaX => 'ACDSeeRegionALGAreaX', + RegionInfoACDSeeRegionListALGAreaY => 'ACDSeeRegionALGAreaY', + RegionInfoACDSeeRegionListName => 'ACDSeeRegionName', + RegionInfoACDSeeRegionListType => 'ACDSeeRegionType', + RegionInfoACDSeeRegionListNameAssignType => 'ACDSeeRegionNameAssignType', +); + +# Forced -struct option during debugging +#%Image::ExifTool::UserDefined::Options = ( +# Struct => 1, +#); #------------------------------------------------------------------------------ 1; #end \ No newline at end of file diff -Nru libimage-exiftool-perl-11.88/config_files/convert_regions.config libimage-exiftool-perl-12.40+dfsg/config_files/convert_regions.config --- libimage-exiftool-perl-11.88/config_files/convert_regions.config 2019-10-28 11:02:40.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/config_files/convert_regions.config 2021-06-09 15:42:23.000000000 +0000 @@ -7,15 +7,15 @@ # # Usage: 1) Convert from MP WLPG or IPTC regions to MWG regions: # -# exiftool -config convert_regions.config "-regioninfo { # create an MWG RegionInfo structure from a Microsoft RegionInfoMP structure - MyRegion => { + MPRegion2MWGRegion => { Require => { 0 => 'RegionInfoMP', 1 => 'ImageWidth', @@ -69,8 +71,8 @@ }, # create an MWG RegionInfo structure from an IPTC ImageRegion list - MyRegion2 => { - Name => 'MyRegion', + IPTCRegion2MWGRegion => { + Name => 'MPRegion2MWGRegion', Require => { 0 => 'ImageRegion', 1 => 'ImageWidth', @@ -78,7 +80,7 @@ }, ValueConv => q{ my ($rgn, @newRgns); - my $rgns = ref $val[0] eq 'ARRAY' ? $val[0] : [ $val[0] ]; + my $rgns = ref $val[0] eq 'ARRAY' ? $val[0] : [ $val[0] ]; foreach $rgn (@$rgns) { my %newRgn = ( Type => 'Face' ); if ($$rgn{RegionBoundary} and $$rgn{RegionBoundary}{RbShape} eq 'rectangle') { @@ -108,7 +110,7 @@ }, # create a Microsoft RegionInfoMP structure from an MWG RegionInfo structure - MyRegionMP => { + MWGRegion2MPRegion => { Require => 'RegionInfo', ValueConv => q{ my ($rgn, @newRgns); @@ -129,8 +131,8 @@ }, # create a Microsoft RegionInfoMP structure from an IPTC ImageRegion list - MyRegionMP2 => { - Name => 'MyRegionMP', + IPTCRegion2MPRegion => { + Name => 'MWGRegion2MPRegion', Require => { 0 => 'ImageRegion', 1 => 'ImageWidth', @@ -138,7 +140,7 @@ }, ValueConv => q{ my ($rgn, @newRgns); - my $rgns = ref $val[0] eq 'ARRAY' ? $val[0] : [ $val[0] ]; + my $rgns = ref $val[0] eq 'ARRAY' ? $val[0] : [ $val[0] ]; foreach $rgn (@$rgns) { my %newRgn; if ($$rgn{RegionBoundary} and $$rgn{RegionBoundary}{RbShape} eq 'rectangle') { @@ -159,7 +161,7 @@ }, # create an IPTC ImageRegion list from an MWG RegionInfo structure - MyRegionIPTC => { + MWGRegion2IPTCRegion => { Require => 'RegionInfo', ValueConv => q{ my ($rgn, @newRgns); @@ -187,8 +189,8 @@ }, # create an IPTC ImageRegion list from a Microsoft RegionInfoMP structure - MyRegionIPTC2 => { - Name => 'MyRegionIPTC', + MPRegion2IPTCRegion => { + Name => 'MWGRegion2IPTCRegion', Require => 'RegionInfoMP', ValueConv => q{ my ($rgn, @newRgns); @@ -220,4 +222,13 @@ }, ); +%Image::ExifTool::UserDefined::Shortcuts = ( + MyRegion => 'MPRegion2MWGRegion', + MyRegion2 => 'IPTCRegion2MWGRegion', + MyRegionMP => 'MWGRegion2MPRegion', + MyRegionMP2 => 'IPTCRegion2MPRegion', + MyRegionIPTC => 'MWGRegion2IPTCRegion', + MyRegionIPTC2 => 'MPRegion2IPTCRegion', +); + 1; #end diff -Nru libimage-exiftool-perl-11.88/config_files/cuepointlist.config libimage-exiftool-perl-12.40+dfsg/config_files/cuepointlist.config --- libimage-exiftool-perl-11.88/config_files/cuepointlist.config 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/config_files/cuepointlist.config 2021-04-20 18:23:11.000000000 +0000 @@ -0,0 +1,70 @@ +#------------------------------------------------------------------------------ +# File: cuepointlist.config +# +# Description: ExifTool config file to generate list of cue points and labels +# in WAV audio files +# +# Usage: exiftool -config cuepointlist.config -cuepointlist -b FILE +# +# Requires: ExifTool version 12.25 or later +# +# Revisions: 2021-04-20 - P. Harvey Created +#------------------------------------------------------------------------------ + +%Image::ExifTool::UserDefined = ( + 'Image::ExifTool::Composite' => { + CuePointList => { + Require => { + 0 => 'CuePoints', + 1 => 'SampleRate', + }, + Desire => { + 2 => 'CuePointLabel', + 3 => 'CuePointNotes', + 4 => 'LabeledText', + }, + ValueConv => q{ + SetByteOrder('II'); + my (%lbl, %rgn, %rtyp, %rlbl, %note, $pos, $i); + # get labels if available + for ($i=1; defined $val[2]; ++$i) { + $lbl{$1} = $2 if $val[2] =~ /^(\d+) (.*)/ and length $2; + $val[2] = $self->GetValue("CuePointLabel ($i)"); + } + # get notes if available + for ($i=1; defined $val[3]; ++$i) { + $note{$1} = $2 if $val[3] =~ /^(\d+) (.*)/ and length $2; + $val[3] = $self->GetValue("CuePointNotes ($i)"); + } + # get regions if available + for ($i=1; defined $val[4]; ++$i) { + if ($val[4] =~ /^(\d+) (\d+) '(.*)' \d+ \d+ \d+ \d+ (.*)/) { + $rgn{$1} = $2; + $rtyp{$1} = $3; + $rlbl{$1} = $4; + } + $val[4] = $self->GetValue("LabeledText ($i)"); + } + my $buff = "Cue\tStart\tEnd\tLabel\tPurpose\tText\tNotes\n"; + for ($pos=4; $pos+24<=length(${$val[0]}); $pos+=24) { + my $n = Get32u($val[0], $pos); + my $start = Get32u($val[0], $pos + 4); + my (@lbl, $lbl); + push @lbl, $lbl{$n} if defined $lbl{$n}; + push @lbl, $rlbl{$n} if defined $rlbl{$n}; + push @lbl, '-', $note{$n} if defined $note{$n}; + my $lbl = join ' ', @lbl; + $buff .= sprintf("%d\t%.3f\t%.3f\t%s\t%s\t%s\t%s\n", + $n, $start/$val[1], ($start+($rgn{$n}||0))/$val[1], + defined($lbl{$n}) ? $lbl{$n} : '', + defined($rtyp{$n}) ? $rtyp{$n} : '', + defined($rlbl{$n}) ? $rlbl{$n} : '', + defined($note{$n}) ? $note{$n} : ''); + } + return $buff; + }, + }, + }, +); + +1; # end \ No newline at end of file diff -Nru libimage-exiftool-perl-11.88/config_files/example.config libimage-exiftool-perl-12.40+dfsg/config_files/example.config --- libimage-exiftool-perl-11.88/config_files/example.config 2020-02-12 13:13:52.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/config_files/example.config 2021-09-22 18:09:04.000000000 +0000 @@ -15,12 +15,12 @@ # # To activate this file, rename it to ".ExifTool_config" and # place it in your home directory or the exiftool application -# directory. (On Windows and Mac systems this must be done via -# the command line since the GUI's don't allow filenames to begin -# with a dot. Use the "rename" command in Windows or "mv" on the -# Mac.) This causes ExifTool to automatically load the file when -# run. Your home directory is determined by the first defined of -# the following environment variables: +# directory. (On Mac and some Windows systems this must be done +# via the command line since the GUI's may not allow filenames to +# begin with a dot. Use the "rename" command in Windows or "mv" +# on the Mac.) This causes ExifTool to automatically load the +# file when run. Your home directory is determined by the first +# defined of the following environment variables: # # 1. EXIFTOOL_HOME # 2. HOME @@ -133,7 +133,7 @@ # Example 12. PNG:NewPngTag1 NewPngTag1 => { }, # Example 13. PNG:NewPngTag2 - NewPngTag2 => { }, + NewPngTag2 => { iTXt => 1 }, # (force this tag to be written as iTXt) # Example 14. PNG:NewPngTag3 NewPngTag3 => { }, }, @@ -165,14 +165,7 @@ # specified, then at least one of the Desire'd tags must exist. See # the Composite table in Image::ExifTool::Exif for more examples, # and lib/Image/ExifTool/README for all of the details. - BaseName => { - Require => { - 0 => 'FileName', - }, - # remove the extension from FileName - ValueConv => '$val[0] =~ /(.*)\./ ? $1 : $val[0]', - }, - # the next few examples demonstrate simplifications which may be + # The first few examples demonstrate simplifications which may be # used if only one tag is Require'd or Desire'd: # 1) the Require lookup may be replaced with a simple tag name # 2) "$val" may be used to represent "$val[0]" in the expression diff -Nru libimage-exiftool-perl-11.88/config_files/photoshop_paths.config libimage-exiftool-perl-12.40+dfsg/config_files/photoshop_paths.config --- libimage-exiftool-perl-11.88/config_files/photoshop_paths.config 2019-12-04 15:51:43.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/config_files/photoshop_paths.config 2022-02-09 12:08:05.000000000 +0000 @@ -34,15 +34,15 @@ # Usage: # # 1) Extract Photoshop path names: -# +# # exiftool -config photoshop_paths.config -allpaths FILE # # 2) Extract Photoshop path names and anchor points: -# +# # exiftool -config photoshop_paths.config -userparam anchor -allpaths FILE # # 3) Extract Photoshop path anchor points only: -# +# # exiftool -config photoshop_paths.config -userparam anchoronly -allpaths FILE # # 4) Copy all Photoshop paths from one file (SRC) to another (DST): @@ -68,6 +68,7 @@ # subpath respectively # 2017/06/03 - PH Added TotalPathPoints # 2017/07/17 - PH Added UniquePathPoints +# 2022/02/03 - PH Added WorkingPath and WorkingPathPix # # References: https://exiftool.org/forum/index.php/topic,1621.0.html # https://exiftool.org/forum/index.php/topic,3910.0.html @@ -77,10 +78,11 @@ # Print Photoshop path name and/or anchor points # Inputs: 0) reference to Photoshop path data, 1) ExifTool object reference # 2-3) optional image width/height to convert anchor points to pixels +# 4) optional path name # Returns: String with name and/or Bezier knot anchor points -sub PrintPath($$;$$) +sub PrintPath($$;$$$) { - my ($val, $et, $w, $h) = @_; + my ($val, $et, $w, $h, $nm) = @_; my ($pos, $name, @rtn); my $len = length($$val) - 26; @@ -88,8 +90,9 @@ if ($$val =~ m{.*/#(.{0,255})#/$}s) { $name = $1; $len -= length($1) + 4; + $name = $nm if defined $nm and not length $name; } else { - $name = ''; + $name = defined $nm ? $nm : ''; } my $anchorOnly = $et->Options(UserParam => 'AnchorOnly'); push @rtn, $name unless $anchorOnly; @@ -118,7 +121,7 @@ } %Image::ExifTool::Shortcuts::UserDefined = ( - # create "AllPaths" shortcut for all Photoshop path tags + # create "AllPaths" shortcut for all Photoshop path tags (except WorkingPath) AllPaths => [ map { sprintf "Path%x", $_ } (0x7d0 .. 0xbb5), ], @@ -133,6 +136,14 @@ Name => 'OriginPathInfo', Flags => [ qw(Writable Protected Binary SetResourceName) ], }, + 0x401 => { + Name => 'WorkingPath', + Flags => [ qw(Writable Protected Binary ConvertBinary SetResourceName) ], + PrintConv => sub { + my ($val, $et) = @_; + PrintPath($val, $et, undef, undef, 'Work Path'); + }, + }, # generate tags for each of the 998 possible Photoshop paths map { $_ => { Name => sprintf('Path%x', $_), @@ -143,6 +154,7 @@ }, 'Image::ExifTool::Composite' => { PathCount => { + # (PathCount statistics do not include WorkingPath) Desire => { map { $_-0x7d0 => sprintf('Path%x', $_) } (0x7d0 .. 0xbb5), }, @@ -180,6 +192,17 @@ Require => 'PathCount', ValueConv => '$$self{TotalPathPoints}', }, + WorkingPathPix => { + Require => { + 0 => 'ImageWidth', + 1 => 'ImageHeight', + 2 => 'WorkingPath', + }, + ValueConv => sub { + my ($val, $et) = @_; + PrintPath($$val[2], $et, $$val[0], $$val[1], 'Work Path'); + }, + }, map { sprintf('PathPix%x', $_) => { Require => { 0 => 'ImageWidth', diff -Nru libimage-exiftool-perl-11.88/config_files/picasa_faces.config libimage-exiftool-perl-12.40+dfsg/config_files/picasa_faces.config --- libimage-exiftool-perl-11.88/config_files/picasa_faces.config 2019-12-04 15:51:40.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/config_files/picasa_faces.config 2022-02-09 12:08:05.000000000 +0000 @@ -63,7 +63,7 @@ # 2015/05/12 - PH Minor code tweaks # 2015/10/26 - BKW Round off area sizes to 7 decimal places # 2016/01/18 - BKW Improved rounding algorithm -# 2016/05/14 - BKW Increased rounding to 9 decimal places (Max Picasa accepts), +# 2016/05/14 - BKW Increased rounding to 9 decimal places (Max Picasa accepts), # moved rounding operation to subroutine # # References: https://exiftool.org/forum/index.php/topic,6354.0.html diff -Nru libimage-exiftool-perl-11.88/config_files/pix4d.config libimage-exiftool-perl-12.40+dfsg/config_files/pix4d.config --- libimage-exiftool-perl-11.88/config_files/pix4d.config 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/config_files/pix4d.config 2022-02-09 12:08:06.000000000 +0000 @@ -0,0 +1,99 @@ +#------------------------------------------------------------------------------ +# File: pix4d.config +# +# Description: This config file contains tag definitions needed to be able +# to write Pix4D XMP-Camera tags +# +# Usage: exiftool -config pix4d.config -XMP-camera:TAG=VAL ... +# +# Requires: ExifTool version 7.00 or later +# +# References: 1) https://support.pix4d.com/hc/en-us/articles/360016450032-Specifications-of-xmpcamera-tags +# +# Revisions: 2017/12/08 - P. Harvey Created +# 2020/04/02 - PH Updated to current specification +#------------------------------------------------------------------------------ + +%Image::ExifTool::UserDefined = ( + 'Image::ExifTool::XMP::Main' => { + Camera => { + SubDirectory => { + TagTable => 'Image::ExifTool::UserDefined::Camera', + }, + }, + }, +); + +%Image::ExifTool::UserDefined::Camera = ( + GROUPS => { 0 => 'XMP', 1 => 'XMP-Camera', 2 => 'Camera' }, + NAMESPACE => { 'Camera' => 'http://pix4d.com/camera/1.0/' }, + WRITABLE => 'string', + Yaw => { Writable => 'real' }, + Pitch => { Writable => 'real' }, + Roll => { Writable => 'real' }, + IMUSampleSize => { Writable => 'integer' }, + IMUTimeOffset => { Writable => 'integer' }, + LineReadoutTime => { Writable => 'integer' }, + IMUFrequency => { Writable => 'real' }, + PrincipalPoint => { }, + ModelType => { }, + PerspectiveFocalLength => { Writable => 'real' }, + PerspectiveDistortion => { }, + IMULinearVelocity => { }, + GPSXYAccuracy => { Writable => 'real' }, + GPSZAccuracy => { Writable => 'real' }, + FlightUUID => { }, + CentralWaveLength => { }, + BandName => { List => 'Seq' }, + RigName => { }, + RigCameraIndex => { Writable => 'integer' }, + BandName => { List => 'Seq' }, + IMUAngularVelocity => { + Binary => 1, + ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)', + ValueConvInv => 'Image::ExifTool::XMP::EncodeBase64($val)', + }, + # added 2020/04/02 (ref 1) + FisheyeAffineMatrix => { }, + FisheyeAffineSymmetric => { }, + FisheyePolynomial => { }, + RigRelatives => { }, + PerspectiveFocalLengthUnits => { }, + CaptureUUID => { }, + CentralWavelength => { List => 'Seq' }, + WavelengthFWHM => { List => 'Seq' }, + BlackCurrent => { List => 'Seq' }, + BandSensitivity => { List => 'Seq' }, + SunSensor => { List => 'Seq' }, + SunSensorExposureTime => { List => 'Seq' }, + SunSensorSensitivity => { List => 'Seq' }, + InvalidPixel => { List => 'Seq' }, + VignettingPolynomial => { List => 'Seq' }, + VignettingCenter => { List => 'Seq' }, + VignettingPolynomial2DName => { List => 'Seq' }, + VignettingPolynomial2D => { List => 'Seq' }, + ColorTransform => { List => 'Seq' }, + IsNormalized => { }, + Albedo => { List => 'Seq' }, + ReflectArea => { List => 'Seq' }, + CalibrationPicture => { Writable => 'integer' }, + GyroRate => { Writable => 'real' }, + IMUPitchAccuracy => { Writable => 'real' }, + IMURollAccuracy => { Writable => 'real' }, + IMUYawAccuracy => { Writable => 'real' }, + NominalCameraDistance => { Writable => 'real' }, + AboveGroundAltitude => { Writable => 'real' }, + SunSensorYaw => { Writable => 'real' }, + SunSensorPitch => { Writable => 'real' }, + SunSensorRoll => { Writable => 'real' }, + SunSensorRelativeRotation => { Writable => 'real', List => 'Seq' }, + TransformAlpha => { List => 'Seq' }, + TransformBeta => { List => 'Seq' }, + TransformGamma => { List => 'Seq' }, + SensorBitDepth => { Writable => 'integer' }, + SensorTemperature => { Writable => 'real' }, + # (ref https://community.pix4d.com/t/camera-sun-irradiance-and-sun-angle-in-red-text/3290) + IrradianceRelativeRotation => { }, +); + +1; #end diff -Nru libimage-exiftool-perl-11.88/config_files/tiff_version.config libimage-exiftool-perl-12.40+dfsg/config_files/tiff_version.config --- libimage-exiftool-perl-11.88/config_files/tiff_version.config 2020-02-14 12:35:59.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/config_files/tiff_version.config 2022-02-09 12:08:06.000000000 +0000 @@ -68,9 +68,9 @@ 35 => 'EXIF:TransferRange', # TransferRange (342/0x0156) 36 => 'EXIF:YCbCrCoefficients', # YCbCrCoefficients (529/0x0211) 37 => 'EXIF:YCbCrPositioning', # YCbCrPositioning (531/0x0213) - 38 => 'EXIF:YCbCrSubSampling', # YCbCrSubSampling (530/0x0212) + 38 => 'EXIF:YCbCrSubSampling', # YCbCrSubSampling (530/0x0212) # Other tags to check - 39 => 'EXIF:PhotometricInterpretation', # PhotometricInterpretation (262/0x0106) + 39 => 'EXIF:PhotometricInterpretation', # PhotometricInterpretation (262/0x0106) 40 => 'EXIF:Compression', # Compression (259/0x0103) }, ValueConv => q{ diff -Nru libimage-exiftool-perl-11.88/debian/changelog libimage-exiftool-perl-12.40+dfsg/debian/changelog --- libimage-exiftool-perl-11.88/debian/changelog 2022-09-14 00:55:29.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/changelog 2022-09-14 03:26:41.000000000 +0000 @@ -1,22 +1,264 @@ -libimage-exiftool-perl (11.88-1ubuntu0.1~16.04.sav0) xenial; urgency=medium +libimage-exiftool-perl (12.40+dfsg-1~16.04.sav0) xenial; urgency=medium * Backport to Xenial * debian/control: Set debhelper-compat (= 10) BD (LP highest for Xenial) - -- Rob Savoury Tue, 13 Sep 2022 17:55:29 -0700 + -- Rob Savoury Tue, 13 Sep 2022 20:26:41 -0700 -libimage-exiftool-perl (11.88-1ubuntu0.1) focal-security; urgency=medium +libimage-exiftool-perl (12.40+dfsg-1) unstable; urgency=medium - * SECURITY UPDATE: Arbitrary code execution - - debian/patches/CVE-2021-22204.patch: Improper neutralization of user - data in the DjVu file format in ExifTool versions 7.44 and up allows - arbitrary code execution when parsing the malicious image. (LP: #1925985) - Thanks to William Bowling for the bug report on Launchpad. - Thanks to Gregor Herrmann for backporting the patch. - From debian release 12.16+dfsg-2. - - CVE-2021-22204 + * Import upstream version 12.40+dfsg. - -- hugo buddelmeijer Wed, 09 Jun 2021 20:39:41 +0200 + -- gregor herrmann Sat, 12 Feb 2022 18:53:54 +0100 + +libimage-exiftool-perl (12.39+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.39+dfsg. + * Update years of upstream and packaging copyright. + + -- gregor herrmann Mon, 17 Jan 2022 20:42:07 +0100 + +libimage-exiftool-perl (12.38+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.38+dfsg. + + -- gregor herrmann Thu, 23 Dec 2021 21:34:19 +0100 + +libimage-exiftool-perl (12.37+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.37+dfsg. + + -- gregor herrmann Sat, 11 Dec 2021 00:24:51 +0100 + +libimage-exiftool-perl (12.36+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.36+dfsg. + + -- gregor herrmann Sat, 20 Nov 2021 17:26:44 +0100 + +libimage-exiftool-perl (12.35+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.35+dfsg. + + -- gregor herrmann Mon, 15 Nov 2021 18:05:05 +0100 + +libimage-exiftool-perl (12.34+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.34+dfsg. + * Add note about API change (new option) to debian/NEWS.Developer. + + -- gregor herrmann Sat, 30 Oct 2021 16:22:54 +0200 + +libimage-exiftool-perl (12.33+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.33+dfsg. + + -- gregor herrmann Fri, 22 Oct 2021 00:28:17 +0200 + +libimage-exiftool-perl (12.32+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.32+dfsg. + + -- gregor herrmann Fri, 01 Oct 2021 22:32:58 +0200 + +libimage-exiftool-perl (12.31+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.31+dfsg. + * Declare compliance with Debian Policy 4.6.0. + * Refresh lintian overrides. + + -- gregor herrmann Mon, 27 Sep 2021 12:15:54 +0200 + +libimage-exiftool-perl (12.30+dfsg-1) unstable; urgency=medium + + * Import upstream versions 12.17+dfsg - 12.30+dfsg. + * Add notes to debian/NEWS.Developer. + * Drop CVE-2021-22204.patch which was taken from the + 12.24 upstream release. + * Move libposix-strptime-perl from Recommends to Suggests as + Time::Piece, which is in perl core, is available as an alternative. + Thanks to Christoph Anton Mitterer for the bug report. + (Closes: #987499) + * Add empty debian/tests/pkg-perl/syntax-skip to enable all of + autopkgtest's syntax.t. + + -- gregor herrmann Mon, 16 Aug 2021 02:20:16 +0200 + +libimage-exiftool-perl (12.16+dfsg-2) unstable; urgency=medium + + * Add patch CVE-2021-22204.patch, taken from upstream release 12.24. + The patch fixes CVE-2021-22204: Improper neutralization of user data in + the DjVu file format in ExifTool versions 7.44 and up allows arbitrary + code execution when parsing the malicious image. + Thanks to William Bowling for the bug report on Launchpad. + (Closes: #987505) (LP: #1925985) + + -- gregor herrmann Sat, 24 Apr 2021 22:40:21 +0200 + +libimage-exiftool-perl (12.16+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.16+dfsg. + + -- gregor herrmann Fri, 22 Jan 2021 20:35:51 +0100 + +libimage-exiftool-perl (12.14+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.14+dfsg. + * Update years of upstream and packaging copyright. + + -- gregor herrmann Sun, 10 Jan 2021 18:02:48 +0100 + +libimage-exiftool-perl (12.13+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.13+dfsg. + + -- gregor herrmann Fri, 25 Dec 2020 14:47:21 +0100 + +libimage-exiftool-perl (12.12+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.12+dfsg. + + -- gregor herrmann Sat, 05 Dec 2020 02:42:36 +0100 + +libimage-exiftool-perl (12.11+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.11+dfsg. + + -- gregor herrmann Tue, 01 Dec 2020 18:16:05 +0100 + +libimage-exiftool-perl (12.10+dfsg-1) unstable; urgency=medium + + [ Debian Janitor] + * Apply multi-arch hints. + + [ gregor herrmann ] + * Import upstream version 12.10+dfsg. + * Declare compliance with Debian Policy 4.5.1. + + -- gregor herrmann Wed, 18 Nov 2020 20:27:15 +0100 + +libimage-exiftool-perl (12.09+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.09+dfsg. + + -- gregor herrmann Fri, 30 Oct 2020 17:53:49 +0100 + +libimage-exiftool-perl (12.08+dfsg-1) unstable; urgency=medium + + * Import upstream version 12.08+dfsg. + + -- gregor herrmann Sun, 18 Oct 2020 04:12:58 +0200 + +libimage-exiftool-perl (12.07+dfsg-1) unstable; urgency=medium + + * Add repacking framework to exclude some binary test data files from + the tarball. + * Import upstream version 12.07+dfsg. + * Skip tests which need the removed test data files. + + -- gregor herrmann Tue, 06 Oct 2020 18:37:55 +0200 + +libimage-exiftool-perl (12.06-1) unstable; urgency=medium + + * Import upstream version 12.06. + + -- gregor herrmann Sat, 12 Sep 2020 17:15:43 +0200 + +libimage-exiftool-perl (12.05-1) unstable; urgency=medium + + * Import upstream version 12.05. + * Add debian/upstream/metadata. + * Update lintian override (use wildcard for line numbers). + + -- gregor herrmann Thu, 27 Aug 2020 16:44:06 +0200 + +libimage-exiftool-perl (12.04-1) unstable; urgency=medium + + * Import upstream version 12.04. + + -- gregor herrmann Tue, 11 Aug 2020 15:15:15 +0200 + +libimage-exiftool-perl (12.03-1) unstable; urgency=medium + + * Import upstream version 12.03. + * Add note about API changes to debian/NEWS.Developer. + + -- gregor herrmann Thu, 30 Jul 2020 17:29:41 +0200 + +libimage-exiftool-perl (12.01-1) unstable; urgency=medium + + * Import upstream version 12.01. + * Update lintian overrides. + lintian has renamed spelling-error-in-manpage to typo-in-manual-page, so + update the override. + Additionally lintian now complains about the false positive spelling + mistake being quoted in the comment explaining why it's not a mistake; so + add another override. + + -- gregor herrmann Sun, 28 Jun 2020 16:27:57 +0200 + +libimage-exiftool-perl (12.00-1) unstable; urgency=medium + + * Import upstream version 12.00. + * Mention API Changes in debian/NEWS.Developer. + * Bump debhelper-compat to 13. + + -- gregor herrmann Fri, 12 Jun 2020 14:04:01 +0200 + +libimage-exiftool-perl (11.99-1) unstable; urgency=medium + + * Import upstream version 11.99. + + -- gregor herrmann Fri, 15 May 2020 17:50:20 +0200 + +libimage-exiftool-perl (11.98-1) unstable; urgency=medium + + * Import upstream version 11.98. + + -- gregor herrmann Sun, 03 May 2020 19:05:15 +0200 + +libimage-exiftool-perl (11.97-1) unstable; urgency=medium + + * Import upstream version 11.97. + + -- gregor herrmann Wed, 29 Apr 2020 18:55:35 +0200 + +libimage-exiftool-perl (11.96-1) unstable; urgency=medium + + * Import upstream version 11.96. + + -- gregor herrmann Mon, 27 Apr 2020 18:11:18 +0200 + +libimage-exiftool-perl (11.94-1) unstable; urgency=medium + + * Import upstream version 11.94. + + -- gregor herrmann Sun, 19 Apr 2020 18:49:49 +0200 + +libimage-exiftool-perl (11.93-1) unstable; urgency=medium + + * Import upstream version 11.93. + * Add note about API changes to debian/NEWS.Developer. + + -- gregor herrmann Tue, 07 Apr 2020 18:53:44 +0200 + +libimage-exiftool-perl (11.92-1) unstable; urgency=medium + + * Import upstream version 11.92. + + -- gregor herrmann Sun, 22 Mar 2020 02:32:01 +0100 + +libimage-exiftool-perl (11.91-1) unstable; urgency=medium + + * Import upstream version 11.91. + + -- gregor herrmann Thu, 05 Mar 2020 22:56:25 +0100 + +libimage-exiftool-perl (11.89-1) unstable; urgency=medium + + * Import upstream version 11.89. + + -- gregor herrmann Sat, 29 Feb 2020 19:31:08 +0100 libimage-exiftool-perl (11.88-1) unstable; urgency=medium diff -Nru libimage-exiftool-perl-11.88/debian/control libimage-exiftool-perl-12.40+dfsg/debian/control --- libimage-exiftool-perl-11.88/debian/control 2022-09-14 00:54:41.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/control 2022-09-14 03:26:32.000000000 +0000 @@ -1,6 +1,5 @@ Source: libimage-exiftool-perl -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Debian Perl Group +Maintainer: Debian Perl Group Uploaders: Mari Wang , gregor herrmann Section: perl @@ -10,7 +9,7 @@ Build-Depends-Indep: libarchive-zip-perl , libunicode-linebreak-perl , perl -Standards-Version: 4.5.0 +Standards-Version: 4.6.0 Vcs-Browser: https://salsa.debian.org/perl-team/modules/packages/libimage-exiftool-perl Vcs-Git: https://salsa.debian.org/perl-team/modules/packages/libimage-exiftool-perl.git Homepage: https://exiftool.org/ @@ -18,11 +17,12 @@ Package: libimage-exiftool-perl Architecture: all +Multi-Arch: foreign Depends: ${misc:Depends}, ${perl:Depends} Recommends: libarchive-zip-perl, - libposix-strptime-perl, libunicode-linebreak-perl +Suggests: libposix-strptime-perl Provides: exiftool Description: library and program to read and write meta information in multimedia files Image::ExifTool is a customizable set of Perl modules plus a full-featured diff -Nru libimage-exiftool-perl-11.88/debian/copyright libimage-exiftool-perl-12.40+dfsg/debian/copyright --- libimage-exiftool-perl-11.88/debian/copyright 2020-02-22 10:16:04.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/copyright 2022-02-12 17:53:54.000000000 +0000 @@ -2,9 +2,13 @@ Upstream-Name: Image-ExifTool Source: https://metacpan.org/release/Image-ExifTool Upstream-Contact: Phil Harvey (philharvey66@gmail.com) +Files-Excluded: t/images/EXE.* t/images/Flash.* +Comment: exclude binary test data files without source + (most probably trivial test files created by upstream, still we have no + source for them) Files: * -Copyright: 2003-2020, Phil Harvey (philharvey66@gmail.com) +Copyright: 2003-2022, Phil Harvey (philharvey66@gmail.com) License: Artistic or GPL-1+ Files: lib/Image/ExifTool/BZZ.pm @@ -23,7 +27,7 @@ Copyright: 2005, 2006, 2007, 2008, 2009, 2010, 2011, Mari Wang 2005, Petter Reinholdtsen 2008, Mark Hymers - 2012-2020, gregor herrmann + 2012-2022, gregor herrmann License: Artistic or GPL-1+ License: Artistic diff -Nru libimage-exiftool-perl-11.88/debian/libimage-exiftool-perl.lintian-overrides libimage-exiftool-perl-12.40+dfsg/debian/libimage-exiftool-perl.lintian-overrides --- libimage-exiftool-perl-11.88/debian/libimage-exiftool-perl.lintian-overrides 2020-02-22 10:16:04.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/libimage-exiftool-perl.lintian-overrides 2022-02-12 17:53:54.000000000 +0000 @@ -1,3 +1,6 @@ # Optio is a Pentax camera model -libimage-exiftool-perl: spelling-error-in-manpage usr/share/man/man3/Image::ExifTool::Pentax.3pm.gz Optio Option -libimage-exiftool-perl: spelling-error-in-manpage usr/share/man/man3/Image::ExifTool::TagNames.3pm.gz Optio Option +libimage-exiftool-perl: typo-in-manual-page usr/share/man/man3/Image::ExifTool::Pentax.3pm.gz * Optio Option +libimage-exiftool-perl: typo-in-manual-page usr/share/man/man3/Image::ExifTool::TagNames.3pm.gz * Optio Option + +# This is a bit unfortunate +libimage-exiftool-perl: spelling-in-override-comment typo-in-manual-page * Optio Option diff -Nru libimage-exiftool-perl-11.88/debian/NEWS.Developer libimage-exiftool-perl-12.40+dfsg/debian/NEWS.Developer --- libimage-exiftool-perl-11.88/debian/NEWS.Developer 2020-02-22 10:16:04.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/NEWS.Developer 2022-02-12 17:53:54.000000000 +0000 @@ -1,3 +1,68 @@ +libimage-exiftool-perl (12.34+dfsg-1) unstable; urgency=medium + + From upstream Changes for 12.34: + - API Changes: + - Added QuickTimePad option + + -- gregor herrmann Sat, 30 Oct 2021 16:21:36 +0200 + +libimage-exiftool-perl (12.25+dfsg-1) unstable; urgency=medium + + From upstream Changes for 12.23: + - API Changes: + - Added BlockExtract option + + -- gregor herrmann Sat, 24 Apr 2021 22:46:19 +0200 + +libimage-exiftool-perl (12.19+dfsg-1) unstable; urgency=medium + + From upstream Changes for 12.19: + - API Changes: + - Added ability to read/write System tags of directories + - Enhanced GetAllGroups() to support family 7 and take optional ExifTool + reference + - Changed QuickTimeHandler option default to 1 + + -- gregor herrmann Sat, 20 Feb 2021 17:56:12 +0100 + +libimage-exiftool-perl (12.17+dfsg-1) unstable; urgency=medium + + From upstream Changes for 12.16 (only added in 12.17): + - API Changes: + - Enhanced ExtractEmbedded option + + -- gregor herrmann Fri, 05 Feb 2021 00:26:46 +0100 + +libimage-exiftool-perl (12.03-1) unstable; urgency=medium + + From upstream Changes for 12.00: + + - API Changes: + - Added HexTagIDs option + - Enhanced GetNewValue() to allow family 7 groups names to be used + + -- gregor herrmann Thu, 30 Jul 2020 17:28:45 +0200 + +libimage-exiftool-perl (12.00-1) unstable; urgency=medium + + From upstream Changes for 12.00: + + - API Changes: + - Changed FilterW option to not write tag if $_ is set to undef + - Added NoMultiExif option + + -- gregor herrmann Fri, 12 Jun 2020 14:02:29 +0200 + +libimage-exiftool-perl (11.93-1) unstable; urgency=medium + + From upstream Changes for 11.93: + + - API Changes: + - Enhanced UserParam option to allow parameters to be extracted as if + they were a normal tag + + -- gregor herrmann Tue, 07 Apr 2020 18:52:41 +0200 + libimage-exiftool-perl (11.86-1) unstable; urgency=medium From upstream Changes for 11.86: diff -Nru libimage-exiftool-perl-11.88/debian/patches/CVE-2021-22204.patch libimage-exiftool-perl-12.40+dfsg/debian/patches/CVE-2021-22204.patch --- libimage-exiftool-perl-11.88/debian/patches/CVE-2021-22204.patch 2021-06-09 18:39:41.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/patches/CVE-2021-22204.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -Description: Fix 'eval injection". - CVE-2021-22204: Improper neutralization of user data in the DjVu file - format in ExifTool versions 7.44 and up allows arbitrary code execution - when parsing the malicious image -Origin: upstream release 12.24 -Bug-Debian: https://bugs.debian.org/987505 -Bug-Ubuntu: https://bugs.launchpad.net/bugs/1925985 -Author: Phil Harvey -Reviewed-by: gregor herrmann -Last-Update: 2021-04-24 -Applied-Upstream: https://github.com/exiftool/exiftool/commit/cf0f4e7dcd024ca99615bfd1102a841a25dde031#diff-fa0d652d10dbcd246e6b1df16c1e992931d3bb717a7e36157596b76bdadb3800 - ---- a/lib/Image/ExifTool/DjVu.pm -+++ b/lib/Image/ExifTool/DjVu.pm -@@ -227,10 +227,11 @@ - last unless $tok =~ /(\\+)$/ and length($1) & 0x01; - $tok .= '"'; # quote is part of the string - } -- # must protect unescaped "$" and "@" symbols, and "\" at end of string -- $tok =~ s{\\(.)|([\$\@]|\\$)}{'\\'.($2 || $1)}sge; -- # convert C escape sequences (allowed in quoted text) -- $tok = eval qq{"$tok"}; -+ # convert C escape sequences, allowed in quoted text -+ # (note: this only converts a few of them!) -+ my %esc = ( a => "\a", b => "\b", f => "\f", n => "\n", -+ r => "\r", t => "\t", '"' => '"', '\\' => '\\' ); -+ $tok =~ s/\\(.)/$esc{$1}||'\\'.$1/egs; - } else { # key name - pos($$dataPt) = pos($$dataPt) - 1; - # allow anything in key but whitespace, braces and double quotes diff -Nru libimage-exiftool-perl-11.88/debian/patches/series libimage-exiftool-perl-12.40+dfsg/debian/patches/series --- libimage-exiftool-perl-11.88/debian/patches/series 2021-06-09 18:39:41.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -CVE-2021-22204.patch diff -Nru libimage-exiftool-perl-11.88/debian/rules libimage-exiftool-perl-12.40+dfsg/debian/rules --- libimage-exiftool-perl-11.88/debian/rules 2020-02-22 10:16:04.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/rules 2022-02-12 17:53:54.000000000 +0000 @@ -3,9 +3,15 @@ PACKAGE = $(shell dh_listpackages) TMP = $(CURDIR)/debian/$(PACKAGE) +SKIP_TESTS = $(shell cat debian/tests/pkg-perl/smoke-skip) +TEST_FILES = $(filter-out $(SKIP_TESTS), $(wildcard t/*.t)) + %: dh $@ +override_dh_auto_test: + dh_auto_test -- TEST_FILES="$(TEST_FILES)" + override_dh_auto_install: dh_auto_install $(RM) -v $(TMP)/usr/share/perl5/Image/ExifTool/README diff -Nru libimage-exiftool-perl-11.88/debian/tests/pkg-perl/smoke-skip libimage-exiftool-perl-12.40+dfsg/debian/tests/pkg-perl/smoke-skip --- libimage-exiftool-perl-11.88/debian/tests/pkg-perl/smoke-skip 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/tests/pkg-perl/smoke-skip 2022-02-12 17:53:54.000000000 +0000 @@ -0,0 +1,3 @@ +# need data files excluded in the +dfsg version +t/EXE.t +t/Flash.t diff -Nru libimage-exiftool-perl-11.88/debian/tests/pkg-perl/syntax-skip libimage-exiftool-perl-12.40+dfsg/debian/tests/pkg-perl/syntax-skip --- libimage-exiftool-perl-11.88/debian/tests/pkg-perl/syntax-skip 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/tests/pkg-perl/syntax-skip 2022-02-12 17:53:54.000000000 +0000 @@ -0,0 +1 @@ +# Empty file to check everything despite Suggests diff -Nru libimage-exiftool-perl-11.88/debian/upstream/metadata libimage-exiftool-perl-12.40+dfsg/debian/upstream/metadata --- libimage-exiftool-perl-11.88/debian/upstream/metadata 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/upstream/metadata 2022-02-12 17:53:54.000000000 +0000 @@ -0,0 +1,6 @@ +--- +Archive: CPAN +Bug-Database: https://github.com/exiftool/exiftool/issues +Bug-Submit: https://github.com/exiftool/exiftool/issues/new +Repository: https://github.com/exiftool/exiftool.git +Repository-Browse: https://github.com/exiftool/exiftool diff -Nru libimage-exiftool-perl-11.88/debian/watch libimage-exiftool-perl-12.40+dfsg/debian/watch --- libimage-exiftool-perl-11.88/debian/watch 2020-02-22 10:16:04.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/debian/watch 2022-02-12 17:53:54.000000000 +0000 @@ -1,3 +1,7 @@ version=4 + +opts=dversionmangle=auto,repacksuffix=+dfsg \ https://exiftool.org/ .*Image-ExifTool-v?@ANY_VERSION@@ARCHIVE_EXT@$ + +opts=dversionmangle=auto,repacksuffix=+dfsg \ https://metacpan.org/release/Image-ExifTool .*/Image-ExifTool-v?@ANY_VERSION@@ARCHIVE_EXT@$ diff -Nru libimage-exiftool-perl-11.88/exiftool libimage-exiftool-perl-12.40+dfsg/exiftool --- libimage-exiftool-perl-11.88/exiftool 2020-02-14 12:11:16.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/exiftool 2022-02-09 12:08:04.000000000 +0000 @@ -10,22 +10,26 @@ use strict; require 5.004; -my $version = '11.88'; +my $version = '12.40'; # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool' -my $exeDir; BEGIN { + # (undocumented -xpath option added in 11.91, must come before other options) + my $exePath = @ARGV && lc($ARGV[0]) eq '-xpath' && shift() ? $^X : $0; # get exe directory - $exeDir = ($0 =~ /(.*)[\\\/]/) ? $1 : '.'; + my $exeDir = ($exePath =~ /(.*)[\\\/]/) ? $1 : '.'; + my $incDir = ($0 =~ /(.*)[\\\/]/) ? "$1/lib" : './lib'; if (-l $0) { my $lnk = eval { readlink $0 }; if (defined $lnk) { my $lnkDir = ($lnk =~ /(.*)[\\\/]/) ? $1 : '.'; $exeDir = (($lnk =~ m(^/)) ? '' : $exeDir . '/') . $lnkDir; + $incDir = "$exeDir/lib"; } } + $Image::ExifTool::exeDir = $exeDir; # use our exeDir for loading config file # add lib directory at start of include path - unshift @INC, "$exeDir/lib"; + unshift @INC, $incDir; # load or disable config file if specified if (@ARGV and lc($ARGV[0]) eq '-config') { shift; @@ -88,6 +92,7 @@ my @csvTags; # order of tags for first file with CSV option (lower case) my @delFiles; # list of files to delete my @dynamicFiles; # list of -tagsFromFile files with dynamic names and -TAG<=FMT pairs +my @efile; # files for writing list of error/fail/same file names my @exclude; # list of excluded tags my (@echo3, @echo4);# stdout and stderr echo after processing is complete my @files; # list of files and directories to scan @@ -103,6 +108,7 @@ my %database; # lookup for database information based on file name (in ExifTool Charset) my %filterExt; # lookup for filtered extensions my %ignore; # directory names to ignore +my $ignoreHidden; # flag to ignore hidden files my %preserveTime; # preserved timestamps for files my %printFmt; # the contents of the print format file my %setTags; # hash of list references for tags to set from files @@ -133,11 +139,13 @@ my $critical; # flag for critical operations (disable CTRL-C) my $csv; # flag for CSV option (set to "CSV", or maybe "JSON" when writing) my $csvAdd; # flag to add CSV information to existing lists +my $csvDelim; # delimiter for CSV files my $csvSaveCount; # save counter for last CSV file loaded my $deleteOrig; # 0=restore original files, 1=delete originals, 2=delete w/o asking my $disableOutput; # flag to disable normal output my $doSetFileName; # flag set if FileName may be written my $doUnzip; # flag to extract info from .gz and .bz2 files +my ($end,$endDir,%endDir); # flags to end processing my $escapeC; # C-style escape my $escapeHTML; # flag to escape printed values for html my $evalWarning; # warning from eval @@ -153,14 +161,17 @@ my $helped; # flag to avoid printing help if no tags specified my $html; # flag for html-formatted output (2=html dump) my $interrupted; # flag set if CTRL-C is pressed during a critical process +my $isBinary; # true if value is a SCALAR ref my $isWriting; # flag set if we are writing tags my $joinLists; # flag set to join list values into a single string my $json; # flag for JSON/PHP output format (1=JSON, 2=PHP) my $langOpt; # language option +my $listDir; # treat a directory as a regular file my $listItem; # item number for extracting single item from a list my $listSep; # list item separator (', ' by default) my $mt; # main ExifTool object my $multiFile; # non-zero if we are scanning multiple files +my $noBinary; # flag set to ignore binary tags my $outFormat; # -1=Canon format, 0=same-line, 1=tag names, 2=values only my $outOpt; # output file or directory name my $overwriteOrig; # flag to overwrite original file (1=overwrite, 2=in place) @@ -197,7 +208,6 @@ my $verbose; # verbose setting my $vout; # verbose output file reference (\*STDOUT or \*STDERR) my $windowTitle; # title for console window -my $isBinary; # true if value is a SCALAR ref my $xml; # flag for XML-formatted output # flag to keep the input -@ argfile open: @@ -235,16 +245,20 @@ '-c' => 1, '-coordformat' => 1, '-charset' => 0, # (optional arg; OK because arg cannot begin with "-") '-config' => 1, + '-csvdelim' => 1, '-d' => 1, '-dateformat' => 1, '-D' => 0, # necessary to avoid matching lower-case equivalent '-echo' => 1, '-echo1' => 1, '-echo2' => 1, '-echo3' => 1, '-echo4' => 1, + '-efile' => 1, '-efile1' => 1, '-efile2' => 1, '-efile3' => 1, '-efile4' => 1, + '-efile!' => 1, '-efile1!' => 1, '-efile2!' => 1, '-efile3!' => 1, '-efile4!' => 1, '-ext' => 1, '--ext' => 1, '-ext+' => 1, '--ext+' => 1, '-extension' => 1, '--extension' => 1, '-extension+' => 1, '--extension+' => 1, - '-fileorder' => 1, + '-fileorder' => 1, '-fileorder0' => 1, '-fileorder1' => 1, '-fileorder2' => 1, + '-fileorder3' => 1, '-fileorder4' => 1, '-fileorder5' => 1, '-geotag' => 1, '-globaltimeshift' => 1, '-i' => 1, '-ignore' => 1, - '-if' => 1, '-if0' => 1, '-if1' => 1, '-if2' => 1, '-if3' => 1, '-if4' => 1, + '-if' => 1, '-if0' => 1, '-if1' => 1, '-if2' => 1, '-if3' => 1, '-if4' => 1, '-if5' => 1, '-lang' => 0, # (optional arg; cannot begin with "-") '-listitem' => 1, '-o' => 1, '-out' => 1, @@ -274,6 +288,7 @@ Digest::SHA IO::Compress::Bzip2 POSIX::strptime + Time::Local Unicode::LineBreak IO::Compress::RawDeflate IO::Uncompress::RawInflate @@ -287,6 +302,10 @@ my %unescapeChar = ( 't'=>"\t", 'n'=>"\n", 'r'=>"\r" ); +# special subroutines used in -if condition +sub Image::ExifTool::EndDir() { return $endDir = 1 } +sub Image::ExifTool::End() { return $end = 1 } + # exit routine sub Exit { if ($pause) { @@ -356,13 +375,21 @@ # loop over sets of command-line arguments separated by "-execute" Command: for (;;) { -@echo3 and print STDOUT join("\n", @echo3), "\n"; -@echo4 and print STDERR join("\n", @echo4), "\n"; +if (@echo3) { + my $str = join("\n", @echo3) . "\n"; + $str =~ s/\$\{status\}/$rtnVal/ig; + print STDOUT $str; +} +if (@echo4) { + my $str = join("\n", @echo4) . "\n"; + $str =~ s/\$\{status\}/$rtnVal/ig; + print STDERR $str; +} $rafStdin->Close() if $rafStdin; undef $rafStdin; -# save or previous return codes +# save our previous return codes $rtnValPrev = $rtnVal; $rtnValApp = $rtnVal if $rtnVal; @@ -377,7 +404,7 @@ # flush console and print "{ready}" message if -stay_open is in effect if ($stayOpen >= 2) { - if ($quiet) { + if ($quiet and not defined $executeID) { # flush output if possible eval { require IO::Handle } and STDERR->flush(), STDOUT->flush(); } else { @@ -400,6 +427,7 @@ undef @dynamicFiles; undef @echo3; undef @echo4; +undef @efile; undef @exclude; undef @files; undef @newValues; @@ -410,6 +438,7 @@ undef %created; undef %csvTags; undef %database; +undef %endDir; undef %filterExt; undef %ignore; undef %printFmt; @@ -433,6 +462,8 @@ undef $disableOutput; undef $doSetFileName; undef $doUnzip; +undef $end; +undef $endDir; undef $escapeHTML; undef $escapeC; undef $evalWarning; @@ -443,10 +474,12 @@ undef $filtered; undef $fixLen; undef $forcePrint; +undef $ignoreHidden; undef $joinLists; undef $langOpt; undef $listItem; undef $multiFile; +undef $noBinary; undef $outOpt; undef $preserveTime; undef $progress; @@ -479,6 +512,7 @@ $countGoodWr = 0; $countNewDir = 0; $countSameWr = 0; +$csvDelim = ','; $csvSaveCount = 0; $fileTrailer = ''; $filterFlag = 0; @@ -541,7 +575,7 @@ for (;;) { # execute the command now if no more arguments or -execute is used - if (not @ARGV or ($ARGV[0] =~ /^(-|\xe2\x88\x92)execute(\d*)$/i and not $endOfOpts)) { + if (not @ARGV or ($ARGV[0] =~ /^(-|\xe2\x88\x92)execute(\d+)?$/i and not $endOfOpts)) { if (@ARGV) { $executeID = $2; # save -execute number for "{ready}" response $helped = 1; # don't show help if we used -execute @@ -663,7 +697,7 @@ } else { # 'g(\d*)' # list all groups in specified family my $family = $2 || 0; - PrintTagList("Groups in family $family", GetAllGroups($family)); + PrintTagList("Groups in family $family", $mt->GetAllGroups($family)); } next; } @@ -725,7 +759,7 @@ } my $fp = ($stayOpen == 1 ? \*STAYOPEN : \*ARGFILE); unless ($mt->Open($fp, $argFile)) { - unless ($argFile !~ /^\// and $mt->Open($fp, "$exeDir/$argFile")) { + unless ($argFile !~ /^\// and $mt->Open($fp, "$Image::ExifTool::exeDir/$argFile")) { Error "Error opening arg file $argFile\n"; $badCmd = 1; next @@ -764,7 +798,11 @@ next; } /^arg(s|format)$/i and $argFormat = 1, next; - /^b(inary)?$/i and $mt->Options(Binary => 1, NoPDFList => 1), $binaryOutput = 1, next; + if (/^(-?)b(inary)?$/i) { + ($binaryOutput, $noBinary) = $1 ? (undef, 1) : (1, undef); + $mt->Options(Binary => $binaryOutput, NoPDFList => $binaryOutput); + next; + } if (/^c(oordFormat)?$/i) { my $fmt = shift; $fmt or Error("Expecting coordinate format for -c option\n"), $badCmd=1, next; @@ -800,7 +838,7 @@ next; } /^config$/i and Warn("Ignored -config option (not first on command line)\n"), shift, next; - if (/^csv(\+?=.*)?/i) { + if (/^csv(\+?=.*)?$/i) { my $csvFile = $1; # must process on 2nd pass so -f and -charset options are available unless ($pass) { @@ -820,7 +858,7 @@ if ($mt->Open(\*CSVFILE, $csvFile)) { binmode CSVFILE; require Image::ExifTool::Import; - $msg = Image::ExifTool::Import::ReadCSV(\*CSVFILE, \%database, $forcePrint); + $msg = Image::ExifTool::Import::ReadCSV(\*CSVFILE, \%database, $forcePrint, $csvDelim); close(CSVFILE); } else { $msg = "Error opening CSV file '${csvFile}'"; @@ -831,6 +869,15 @@ $csv = 'CSV'; next; } + if (/^csvdelim$/i) { + $csvDelim = shift; + defined $csvDelim or Error("Expecting argument for -csvDelim option\n"), $badCmd=1, next; + $csvDelim =~ /"/ and Error("CSV delimiter can not contain a double quote\n"), $badCmd=1, next; + my %unescape = ( 't'=>"\t", 'n'=>"\n", 'r'=>"\r", '\\' => '\\' ); + $csvDelim =~ s/\\(.)/$unescape{$1}||"\\$1"/sge; + $mt->Options(CSVDelim => $csvDelim); + next; + } if (/^d$/ or $a eq 'dateformat') { my $fmt = shift; $fmt or Error("Expecting date format for -d option\n"), $badCmd=1, next; @@ -839,10 +886,11 @@ } (/^D$/ or $a eq 'decimal') and $showTagID = 'D', next; /^delete_original(!?)$/i and $deleteOrig = ($1 ? 2 : 1), next; + /^list_dir$/i and $listDir = 1, next; (/^e$/ or $a eq '-composite') and $mt->Options(Composite => 0), next; (/^-e$/ or $a eq 'composite') and $mt->Options(Composite => 1), next; (/^E$/ or $a eq 'escapehtml') and require Image::ExifTool::HTML and $escapeHTML = 1, next; - ($a eq 'ec' or $a eq 'escapec') and $escapeC = 1, next; # (undocumented) added in 11.54 + ($a eq 'ec' or $a eq 'escapec') and $escapeC = 1, next; ($a eq 'ex' or $a eq 'escapexml') and $escapeXML = 1, next; if (/^echo(\d)?$/i) { my $n = $1 || 1; @@ -857,11 +905,20 @@ $helped = 1; next; } - if (/^(ee|extractembedded)$/i) { - $mt->Options(ExtractEmbedded => 1); + if (/^(ee|extractembedded)(\d*)$/i) { + $mt->Options(ExtractEmbedded => $2 || 1); $mt->Options(Duplicates => 1); next; } + if (/^efile(\d)?(!)?$/i) { + my $arg = shift; + defined $arg or Error("Expecting file name for -$_ option\n"), $badCmd=1, next; + $efile[0] = $arg if not $1 or $1 & 0x01; + $efile[1] = $arg if $1 and $1 & 0x02; + $efile[2] = $arg if $1 and $1 & 0x04; + unlink $arg if $2; + next; + } # (-execute handled at top of loop) if (/^-?ext(ension)?(\+)?$/i) { my $ext = shift; @@ -942,6 +999,7 @@ my $dir = shift; defined $dir or Error("Expecting directory name for -i option\n"), $badCmd=1, next; $ignore{$dir} = 1; + $dir eq 'HIDDEN' and $ignoreHidden = 1; next; } if (/^if(\d*)$/i) { @@ -1179,7 +1237,7 @@ $textOverwrite += 2 if $t2 =~ /\+/; # append if ($t1 ne 'W' and lc($t1) ne 'tagout') { undef $tagOut; - } elsif ($textOverwrite >= 2 and $textOut !~ /%[-+]?\d*[.:]?\d*[lu]?[tgs]/) { + } elsif ($textOverwrite >= 2 and $textOut !~ /%[-+]?\d*[.:]?\d*[lu]?[tgso]/) { $tagOut = 0; # append tags to one file } else { $tagOut = 1; # separate file for each tag @@ -1217,7 +1275,7 @@ if (/^php$/i) { $json = 2; $html = $xml = 0; - $mt->Options(Duplicates=>1); + $mt->Options(Duplicates => 1); next; } if (/^z(ip)?$/i) { @@ -1458,7 +1516,6 @@ require Image::ExifTool::XMP if $json == 1; # (for EncodeBase64) } $mt->Options(List => 1) unless $joinLists; - $mt->Options(Duplicates => 0) unless defined $showGroup; $showTagID = 'D' if $tabFormat and not $showTagID; } elsif ($structOpt) { $mt->Options(List => 1); @@ -1564,7 +1621,7 @@ next; } my %opts = ( Shift => 0 ); # shift values if possible instead of adding/deleting - # allow writing of 'unsafe' tags unless specified by wildcard + # allow writing of 'Unsafe' tags unless specified by wildcard $opts{Protected} = 1 unless $tag =~ /[?*]/; if ($tag =~ s/ 1) { print $vout "Imported entry for '${_}' (full path: '${absPath}')\n"; } + } elsif ($verbose and $verbose > 1) { + print $vout "Imported entry for '${_}' (non-existent file)\n"; } } } @@ -1815,7 +1876,7 @@ printf($o "%5d image files %s\n", $countCopyWr, $overwriteOrig ? 'moved' : 'copied') if $countCopyWr; printf($o "%5d files weren't updated due to errors\n", $countBadWr) if $countBadWr; printf($o "%5d files weren't created due to errors\n", $countBadCr) if $countBadCr; - printf($o "%5d image files read\n", $count) if $tot>1 or ($countDir and not $totWr); + printf($o "%5d image files read\n", $count) if ($tot+$countFailed)>1 or ($countDir and not $totWr); printf($o "%5d files could not be read\n", $countBad) if $countBad; printf($o "%5d output files created\n", scalar(keys %created)) if $textOut; printf($o "%5d output files appended\n", scalar(keys %appended)) if %appended; @@ -1885,6 +1946,9 @@ $first = $file unless defined $first; } $file = $first if defined $first; + my ($d, $f) = Image::ExifTool::SplitFileName($orig); + $et->Options(UserParam => "OriginalDirectory#=$d"); + $et->Options(UserParam => "OriginalFileName#=$f"); } else { $file = $orig; } @@ -1892,16 +1956,27 @@ my $pipe = $file; if ($doUnzip) { # pipe through gzip or bzip2 if necessary - if ($file =~ /\.gz$/i) { - $pipe = qq{gzip -dc "$file" |}; - } elsif ($file =~ /\.bz2$/i) { - $pipe = qq{bzip2 -dc "$file" |}; + if ($file =~ /\.(gz|bz2)$/i) { + my $type = lc $1; + if ($file =~ /[^-_.'A-Za-z0-9\/\\]/) { + Warn "Error: Insecure zip file name. Skipped\n"; + EFile($file); + ++$countBad; + return; + } + if ($type eq 'gz') { + $pipe = qq{gzip -dc "$file" |}; + } else { + $pipe = qq{bzip2 -dc "$file" |}; + } + $$et{TRUST_PIPE} = 1; } } # evaluate -if expression for conditional processing if (@condition) { unless ($file eq '-' or $et->Exists($file)) { Warn "Error: File not found - $file\n"; + EFile($file); FileNotFound($file); ++$countBad; return; @@ -1927,7 +2002,8 @@ # set package so eval'd functions are in Image::ExifTool namespace package Image::ExifTool; - #### eval "-if" condition (%info) + my $self = $et; + #### eval "-if" condition (%info, $self) $result = eval $cond; $@ and $evalWarning = $@; @@ -1943,9 +2019,11 @@ } last unless $result; } + undef @foundTags if $fastCondition; # ignore if we didn't get all tags } unless ($result) { $verbose and print $vout "-------- $file (failed condition)$progStr\n"; + EFile($file, 2); ++$countFailed; return; } @@ -1966,6 +2044,7 @@ ++$countGoodWr; } else { Warn "Error renaming $original\n"; + EFile($file); ++$countBad; } return; @@ -1976,7 +2055,7 @@ my ($fp, $outfile, $append); if ($textOut and $verbose and not $tagOut) { ($fp, $outfile, $append) = OpenOutputFile($orig); - $fp or ++$countBad, return; + $fp or EFile($file), ++$countBad, return; # delete file if we exit prematurely (unless appending) $tmpText = $outfile unless $append; $et->Options(TextOut => $fp); @@ -2008,6 +2087,7 @@ Warn "Error: File not found - $file\n"; FileNotFound($file); $outfile and close($fp), undef($tmpText), $et->Unlink($outfile); + EFile($file); ++$countBad; return; } @@ -2057,6 +2137,7 @@ } if ($info->{Error}) { Warn "Error: $info->{Error} - $file\n"; + EFile($file); ++$countBad; return; } @@ -2067,7 +2148,7 @@ # or if there is none of the requested information available if ($binaryOutput or not %$info) { my $errs = $et->GetInfo('Warning', 'Error'); - PrintErrors($et, $errs, $file) and $rtnVal = 1; + PrintErrors($et, $errs, $file) and EFile($file), $rtnVal = 1; } elsif ($et->GetValue('Error') or ($$et{Validate} and $et->GetValue('Warning'))) { $rtnVal = 1; } @@ -2075,7 +2156,7 @@ # open output file (or stdout if no output file) if not done already unless ($outfile or $tagOut) { ($fp, $outfile, $append) = OpenOutputFile($orig); - $fp or ++$countBad, return; + $fp or EFile($file), ++$countBad, return; $tmpText = $outfile unless $append; } @@ -2134,7 +2215,7 @@ } delete $printFmt{HEAD} unless $outfile; # print header only once per output file my $errs = $et->GetInfo('Warning', 'Error'); - PrintErrors($et, $errs, $file); + PrintErrors($et, $errs, $file) and EFile($file); } elsif (not $disableOutput) { my ($tag, $line, %noDups, %csvInfo, $bra, $ket, $sep); if ($fp) { @@ -2149,7 +2230,7 @@ my $f = $file; CleanXML(\$f); print $fp "\n' if $outFormat < 1; # finish rdf:Description token unless short format $ind = $outFormat >= 0 ? ' ' : ' '; @@ -2192,7 +2274,9 @@ my $noDups = ($json or ($xml and $outFormat > 0)); my $printConv = $et->Options('PrintConv'); my $lastGroup = ''; + my $i = -1; TAG: foreach $tag (@foundTags) { + ++$i; # keep track on index in @foundTags my $tagName = GetTagName($tag); my ($group, $valList); # get the value for this tag @@ -2205,10 +2289,11 @@ # avoid extracting Protected binary tags (eg. data blocks) [insider information] my $lcTag = lc $tag; $lcTag =~ s/ .*//; - next unless $$et{REQ_TAG_LOOKUP}{$lcTag}; + next unless $$et{REQ_TAG_LOOKUP}{$lcTag} or ($$et{OPTIONS}{RequestAll} || 0) > 2; } $val = ConvertBinary($val); # convert SCALAR references - if ($structOpt) { + next unless defined $val; + if ($structOpt and ref $val) { # serialize structure if necessary $val = Image::ExifTool::XMP::SerializeStruct($val) unless $xml or $json; } elsif (ref $val eq 'ARRAY') { @@ -2241,9 +2326,9 @@ $group = $et->GetGroup($tag, $showGroup); # look ahead to see if this tag may suppress a priority tag in # the same group, and if so suppress this tag instead - next if $noDups and $tag =~ /^(.*?) ?\(/ and defined $$info{$1} and + next if $noDups and $tag =~ /^(.*?) \(/ and defined $$info{$1} and $group eq $et->GetGroup($1, $showGroup); - $group = 'Unknown' if not $group and ($xml or $json); + $group = 'Unknown' if not $group and ($xml or $json or $csv); if ($fp and not ($allGroup or $csv)) { if ($lastGroup ne $group) { if ($html) { @@ -2264,6 +2349,9 @@ } undef $group; # undefine so we don't print it below } + } elsif ($noDups) { + # don't allow duplicates, but avoid suppressing the priority tag + next if $tag =~ /^(.*?) \(/ and defined $$info{$1}; } ++$lineCount; # we are printing something meaningful @@ -2281,7 +2369,8 @@ } my @groups = $et->GetGroup($tag); $outfile and close($fp), undef($tmpText); # (shouldn't happen) - ($fp, $outfile, $append) = OpenOutputFile($orig, $tagName, \@groups, $ext); + my $org = $et->GetValue('OriginalRawFileName') || $et->GetValue('OriginalFileName'); + ($fp, $outfile, $append) = OpenOutputFile($orig, $tagName, \@groups, $ext, $org); $fp or ++$countBad, next TAG; $tmpText = $outfile unless $append; } @@ -2310,26 +2399,38 @@ } # save information for CSV output if ($csv) { - my $t = $group ? "$group:$tagName" : $tagName; - $t .= '#' if $tag =~ /#/; # add ValueConv "#" suffix if used + my $tn = $tagName; + $tn .= '#' if $tag =~ /#/; # add ValueConv "#" suffix if used + my $gt = $group ? "$group:$tn" : $tn; # (tag-name case may be different if some tags don't exist # in a file, so all logic must use lower-case tag names) - my $lcTag = lc $t; + my $lcTag = lc $gt; # override existing entry only if top priority next if defined $csvInfo{$lcTag} and $tag =~ /\(/; $csvInfo{$lcTag} = $val; if (defined $csvTags{$lcTag}) { # overwrite with actual extracted tag name # (note: can't check "if defined $val" here because -f may be used) - $csvTags{$lcTag} = $t if defined $$info{$tag}; - } else { - # (don't save unextracted tag name unless -f was used) - $csvTags{$lcTag} = defined($val) ? $t : ''; - if (@csvFiles == 1) { - push @csvTags, $lcTag; # save order of tags for first file - } elsif (@csvTags) { - undef @csvTags; - } + $csvTags{$lcTag} = $gt if defined $$info{$tag}; + next; + } + # must check for "Unknown" group (for tags that don't exist) + if ($group and defined $csvTags[$i] and $csvTags[$i] =~ /^(.*):$tn$/i) { + next if $group eq 'Unknown'; # nothing more to do if we don't know tag group + if ($1 eq 'unknown') { + # replace unknown entry in CSV tag lookup and list + delete $csvTags{$csvTags[$i]}; + $csvTags{$lcTag} = defined($val) ? $gt : ''; + $csvTags[$i] = $lcTag; + next; + } + } + # (don't save unextracted tag name unless -f was used) + $csvTags{$lcTag} = defined($val) ? $gt : ''; + if (@csvFiles == 1) { + push @csvTags, $lcTag; # save order of tags for first file + } elsif (@csvTags) { + undef @csvTags; } next; } @@ -2626,11 +2727,12 @@ $outfile = FilenameSPrintf($outOpt, $orig); if ($outfile eq '') { Warn "Error: Can't create file with zero-length name from $orig\n"; + EFile($infile); ++$countBadCr; return 0; } } - if (not $isStdout and ($et->IsDirectory($outfile) or $outfile =~ /\/$/)) { + if (not $isStdout and (($et->IsDirectory($outfile) and not $listDir) or $outfile =~ /\/$/)) { $outfile .= '/' unless $outfile =~ /\/$/; my $name = $file; $name =~ s/^.*\///s; # remove directory name @@ -2642,6 +2744,7 @@ unless (CanCreate($outType)) { my $what = $srcType ? 'other types' : 'scratch'; WarnOnce "Error: Can't create $outType files from $what\n"; + EFile($infile); ++$countBadCr; return 0; } @@ -2679,6 +2782,7 @@ $outfile = NextUnusedFilename($outfile); if ($et->Exists($outfile) and not $doSetFileName) { Warn "Error: '${outfile}' already exists - $infile\n"; + EFile($infile); ++$countBadWr; return 0; } @@ -2699,7 +2803,7 @@ $setTags = $tagsFromSrc || $setTags{$dyFile}; } else { $fromFile = FilenameSPrintf($dyFile, $orig); - ++$countBadWr, return 0 unless defined $fromFile; + defined $fromFile or EFile($infile), ++$countBadWr, return 0; $setTags = $setTags{$dyFile}; } # do we have multiple -tagsFromFile options with this file? @@ -2780,11 +2884,15 @@ # determine what our output file name should be my $newFileName = $et->GetNewValues('FileName'); my $newDir = $et->GetNewValues('Directory'); + if (defined $newFileName and not length $newFileName) { + Warn "Warning: New file name is empty - $ infile\n"; + undef $newFileName; + } if (defined $testName) { my $err; $err = "You shouldn't write FileName or Directory with TestFile" if defined $newFileName or defined $newDir; $err = "The -o option shouldn't be used with TestFile" if defined $outfile; - $err and Warn("Error: $err - $infile\n"), ++$countBadWr, return 0; + $err and Warn("Error: $err - $infile\n"), EFile($infile), ++$countBadWr, return 0; $testName = FilenameSPrintf($testName, $orig); $testName = Image::ExifTool::GetNewFileName($file, $testName) if $file ne ''; } @@ -2811,6 +2919,7 @@ $sameFile = $outfile; # same file, but the name has a different case } else { Warn "Error: '${outfile}' already exists - $infile\n"; + EFile($infile); ++$countBadWr; return 0; } @@ -2826,10 +2935,15 @@ unless (defined $tmpFile) { # count the number of tags and pseudo-tags we are writing my ($numSet, $numPseudo) = $et->CountNewValues(); + if ($numSet != $numPseudo and $et->IsDirectory($file)) { + print $vout "Can't write real tags to a directory - $infile\n" if defined $verbose; + $numSet = $numPseudo; + } if ($et->Exists($file)) { unless ($numSet) { # no need to write if no tags set print $vout "Nothing changed in $file\n" if defined $verbose; + EFile($infile, 1); ++$countSameWr; return 1; } @@ -2837,6 +2951,7 @@ if ($numSet == $numPseudo) { # no need to write if no real tags Warn("Error: Nothing to write - $file\n"); + EFile($infile, 1); ++$countBadWr; return 0; } @@ -2848,28 +2963,35 @@ } else { # file doesn't exist, and we can't create it Warn "Error: File not found - $file\n"; + EFile($infile); FileNotFound($file); ++$countBadWr; return 0; } # quickly rename file and/or set file date if this is all we are doing if ($numSet == $numPseudo) { - my $r1 = $et->SetFileModifyDate($file,undef,'FileCreateDate'); - my $r2 = $et->SetFileModifyDate($file); - my $r3 = $et->SetSystemTags($file); - my $r4 = 0; - $r4 = $et->SetFileName($file, $outfile) if defined $outfile; - if ($r1 > 0 or $r2 > 0 or $r3 > 0 or $r4 > 0) { + my ($r0, $r1, $r2, $r3) = (0, 0, 0, 0); + if (defined $outfile) { + $r0 = $et->SetFileName($file, $outfile); + $file = $$et{NewName} if $r0 > 0; # continue with new name if changed + } + unless ($r0 < 0) { + $r1 = $et->SetFileModifyDate($file,undef,'FileCreateDate'); + $r2 = $et->SetFileModifyDate($file); + $r3 = $et->SetSystemTags($file); + } + if ($r0 > 0 or $r1 > 0 or $r2 > 0 or $r3 > 0) { ++$countGoodWr; - } elsif ($r1 < 0 or $r2 < 0 or $r3 < 0 or $r4 < 0) { + } elsif ($r0 < 0 or $r1 < 0 or $r2 < 0 or $r3 < 0) { + EFile($infile); ++$countBadWr; return 0; } else { + EFile($infile, 1); ++$countSameWr; } if (defined $hardLink or defined $symLink or defined $testName) { - my $src = (defined $outfile and $r4 > 0) ? $outfile : $file; - DoHardLink($et, $src, $hardLink, $symLink, $testName); + DoHardLink($et, $file, $hardLink, $symLink, $testName); } return 1; } @@ -2878,6 +3000,7 @@ $outfile = "${file}_exiftool_tmp"; if ($et->Exists($outfile)) { Warn("Error: Temporary file already exists: $outfile\n"); + EFile($infile); ++$countBadWr; return 0; } @@ -2943,12 +3066,14 @@ # temporarily disable CTRL-C during this critical operation $critical = 1; undef $tmpFile; # handle deletion of temporary file ourself - if ($et->Open(\*ORIG_FILE, $file, '>')) { + if ($et->Open(\*ORIG_FILE, $file, '+<')) { binmode(ORIG_FILE); while (read(NEW_FILE, $buff, 65536)) { print ORIG_FILE $buff or $err = 1; } close(NEW_FILE); + # Handle files being shorter than the original + eval { truncate(ORIG_FILE, tell(ORIG_FILE)) } or $err = 1; close(ORIG_FILE) or $err = 1; if ($err) { Warn "Couldn't overwrite in place - $file\n"; @@ -2974,6 +3099,7 @@ } else { close(NEW_FILE); Warn "Error opening $file for writing\n"; + EFile($infile); $et->Unlink($newFile); ++$countBadWr; } @@ -2991,11 +3117,13 @@ # unlink may fail if already renamed or no permission if (not $et->Unlink($file)) { Warn "Error renaming temporary file to $dstFile\n"; + EFile($infile); $et->Unlink($newFile); ++$countBadWr; # try renaming again now that the target has been deleted } elsif (not $et->Rename($newFile, $dstFile)) { Warn "Error renaming temporary file to $dstFile\n"; + EFile($infile); # (don't delete tmp file now because it is all we have left) ++$countBadWr; } else { @@ -3017,6 +3145,7 @@ ++$countGoodWr; } } elsif ($success) { + EFile($infile, 1); if ($isTemporary) { # just erase the temporary file since no changes were made $et->Unlink($tmpFile); @@ -3030,6 +3159,7 @@ } print $vout "Nothing changed in $file\n" if defined $verbose; } else { + EFile($infile); $et->Unlink($tmpFile) if defined $tmpFile; ++$countBadWr; } @@ -3127,7 +3257,8 @@ } elsif (ref $val eq 'HASH') { $gt = " rdf:parseType='Resource'>"; my $val2 = ''; - foreach (sort keys %$val) { + my @keys = $$val{_ordered_keys_} ? @{$$val{_ordered_keys_}} : sort keys %$val; + foreach (@keys) { # (some variable-namespace XML structure fields may have a different group) my $tok = /:/ ? $_ : ($grp . ':' . $_); $val2 .= "\n$ind <$tok" . FormatXML($$val{$_}, "$ind ", $grp) . ""; @@ -3204,7 +3335,8 @@ } elsif (ref $val eq 'HASH') { my ($bra, $ket, $sep) = $json == 1 ? ('{','}',':') : ('Array(',')',' =>'); print $fp $bra; - foreach (sort keys %$val) { + my @keys = $$val{_ordered_keys_} ? @{$$val{_ordered_keys_}} : sort keys %$val; + foreach (@keys) { print $fp ',' if $comma; my $key = EscapeJSON($_, 1); print $fp qq(\n$ind $key$sep ); @@ -3240,7 +3372,7 @@ # the -b option is used to encode as Base64. It is unclear whether or not this # is valid CSV, but some readers may not like it. (If this becomes a problem, # in the future values may need to be truncated at the first NULL character.) - $val = qq{"$val"} if $val =~ s/"/""/g or $val =~ /(^\s+|\s+$)/ or $val =~ /[,\n\r]/; + $val = qq{"$val"} if $val =~ s/"/""/g or $val =~ /(^\s+|\s+$)/ or $val =~ /[\n\r]|\Q$csvDelim/; return $val; } @@ -3253,9 +3385,9 @@ @csvTags or @csvTags = sort keys %csvTags; # make a list of tags actually found foreach $lcTag (@csvTags) { - push @tags, $csvTags{$lcTag} if $csvTags{$lcTag}; + push @tags, FormatCSV($csvTags{$lcTag}) if $csvTags{$lcTag}; } - print join(',', 'SourceFile', @tags), "\n"; + print join($csvDelim, 'SourceFile', @tags), "\n"; my $empty = defined($forcePrint) ? $forcePrint : ''; foreach $file (@csvFiles) { my @vals = (FormatCSV($file)); # start with full file name @@ -3266,7 +3398,7 @@ defined $val or push(@vals,$empty), next; push @vals, FormatCSV($val); } - print join(',', @vals), "\n"; + print join($csvDelim, @vals), "\n"; } } @@ -3295,20 +3427,25 @@ #------------------------------------------------------------------------------ # Convert binary data (SCALAR references) for printing # Inputs: 0) object reference -# Returns: converted object +# Returns: converted object, or undef if we don't want binary objects sub ConvertBinary($) { my $obj = shift; my ($key, $val); if (ref $obj eq 'HASH') { foreach $key (keys %$obj) { - $$obj{$key} = ConvertBinary($$obj{$key}) if ref $$obj{$key}; + next unless ref $$obj{$key}; + $$obj{$key} = ConvertBinary($$obj{$key}); + return undef unless defined $$obj{$key}; } } elsif (ref $obj eq 'ARRAY') { foreach $val (@$obj) { - $val = ConvertBinary($val) if ref $val; + next unless ref $val; + $val = ConvertBinary($val); + return undef unless defined $val; } } elsif (ref $obj eq 'SCALAR') { + return undef if $noBinary; # (binaryOutput flag is set to 0 for binary mode of XML/PHP/JSON output formats) if (defined $binaryOutput) { $obj = $$obj; @@ -3332,18 +3469,26 @@ } #------------------------------------------------------------------------------ -# Compare two tag values to see if they are equal +# Compare ValueConv and PrintConv values of a tag to see if they are equal # Inputs: 0) value1, 1) value2 # Returns: true if they are equal sub IsEqual($$) { - return 1 if ref $_[0] eq 'SCALAR' or $_[0] eq $_[1]; - return 0 if ref $_[0] ne 'ARRAY' or ref $_[1] ne 'ARRAY' or - @{$_[0]} ne @{$_[1]}; - # test all elements of an array - my $i = 0; - for ($i=0; $iIsDirectory($file)) { + if ($et->IsDirectory($file) and not $listDir) { $multiFile = $validFile = 1; ScanDir($et, $file, $list); } elsif ($filterFlag and not AcceptFile($file)) { @@ -3502,10 +3647,22 @@ if ($list) { push(@$list, $file); } else { + if (%endDir) { + my ($d, $f) = Image::ExifTool::SplitFileName($file); + next if $endDir{$d}; + } GetImageInfo($et, $file); + $end and Warn("End called - $file\n"); + if ($endDir) { + Warn("EndDir called - $file\n"); + my ($d, $f) = Image::ExifTool::SplitFileName($file); + $endDir{$d} = 1; + undef $endDir; + } } } $et->Options(CharsetFileName => $enc) if $utf8FileName{$file}; + last if $end; } } @@ -3516,7 +3673,7 @@ { local $_; my ($et, $dir, $list) = @_; - my (@fileList, $done, $file, $utf8Name, $winSurrogate); + my (@fileList, $done, $file, $utf8Name, $winSurrogate, $endThisDir); my $enc = $et->Options('CharsetFileName'); # recode as UTF-8 if necessary if ($enc) { @@ -3583,8 +3740,11 @@ next if $file =~ /^\./ and ($recurse == 1 or $file eq '.' or $file eq '..'); next if $ignore{$file} or ($ignore{SYMLINKS} and -l $path); ScanDir($et, $path, $list); + last if $end; next; } + next if $endThisDir; + next if $ignoreHidden and $file =~ /^\./; # ignore hidden files if specified # apply rules from -ext options my $accepted; if ($filterFlag) { @@ -3613,6 +3773,7 @@ { Warn("Not writing $path\n"); WarnOnce("Use -overwrite_original_in_place to write files with Unicode surrogate characters\n"); + EFile($file); ++$countBad; next; } @@ -3621,6 +3782,17 @@ push(@$list, $path); } else { GetImageInfo($et, $path); + if ($end) { + Warn("End called - $file\n"); + last; + } + if ($endDir) { + $path =~ s(/$)(); + Warn("EndDir called - $path\n"); + $endDir{$path} = 1; + $endThisDir = 1; + undef $endDir; + } } } ++$countDir; @@ -3644,7 +3816,7 @@ my $enc = $et->Options('CharsetFileName'); $wildfile = $et->Decode($wildfile, $enc, undef, 'UTF8') if $enc and $enc ne 'UTF8'; $wildfile =~ tr/\\/\//; # use forward slashes - my ($dir, $wildname) = ($wildfile =~ m{(.*/)(.*)}) ? ($1, $2) : ('', $wildfile); + my ($dir, $wildname) = ($wildfile =~ m{(.*[:/])(.*)}) ? ($1, $2) : ('', $wildfile); if ($dir =~ /[*?]/) { Warn "Wildcards don't work in the directory specification\n"; return (); @@ -3678,6 +3850,7 @@ $evalWarning =~ s/ at .*//s; Warn "Error: [Win32::FindFile] $evalWarning - $wildfile\n"; undef @files; + EFile($wildfile); ++$countBad; } return @files; @@ -3783,7 +3956,7 @@ $ext = 'xml'; } elsif ($$valPt =~ /^RIFF....WAVE/s) { $ext = 'wav'; - } elsif ($tag eq 'OriginalRawFileData' and defined($ext = $et->GetValue('OriginalRawFileName'))) { + } elsif ($tag eq 'OriginalRawImage' and defined($ext = $et->GetValue('OriginalRawFileName'))) { $ext =~ s/^.*\.//s; $ext = $ext ? lc($ext) : 'raw'; } elsif ($tag eq 'EXIF') { @@ -3835,14 +4008,15 @@ # A sort of sprintf for filenames # Inputs: 0) format string (%d=dir, %f=file name, %e=ext), # 1) source filename or undef to test format string -# 2-4) [%t %g %s only] tag name, ref to array of group names, suggested extension +# 2-4) [%t %g %s %o only] tag name, ref to array of group names, +# suggested extension, original raw file name # Returns: new filename or undef on error (or if no file and fmt contains token) sub FilenameSPrintf($;$@) { my ($fmt, $file, @extra) = @_; local $_; # return format string straight away if no tokens - return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lu]?[dDfFeEtgs]/; + return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lu]?[dDfFeEtgso]/; return undef unless defined $file; CleanFilename($file); # make sure we are using forward slashes # split filename into directory, file, extension @@ -3856,9 +4030,9 @@ } $part{F} = $part{f} . $part{E}; ($part{D} = $part{d}) =~ s{/+$}{}; - @part{qw(t g s)} = @extra; + @part{qw(t g s o)} = @extra; my ($filename, $pos) = ('', 0); - while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lu]?)([dDfFeEtgs]))/g) { + while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lu]?)([dDfFeEtgso]))/g) { $filename .= substr($fmt, $pos, pos($fmt) - $pos - length($1)); $pos = pos($fmt); my ($sign, $wid, $dot, $skip, $mod, $code) = ($2, $3, $4, $5 || 0, $6, $7); @@ -4004,8 +4178,8 @@ } $dir .= '/'; } + ++$countNewDir if $created; } - ++$countNewDir if $created; return $created; } @@ -4021,7 +4195,7 @@ if ($textOut) { $outfile = $file; CleanFilename($outfile); - if ($textOut =~ /%[-+]?\d*[.:]?\d*[lun]?[dDfFeEtgscC]/ or defined $tagOut) { + if ($textOut =~ /%[-+]?\d*[.:]?\d*[lun]?[dDfFeEtgsocC]/ or defined $tagOut) { # make filename from printf-like $textOut $outfile = FilenameSPrintf($textOut, $file, @args); return () unless defined $outfile; @@ -4116,7 +4290,10 @@ # escaped by an odd number of backslashes, and escape a single backslash # if it occurs at the end of the string $arg =~ s{\\(.)|(["\$\@]|\\$)}{'\\'.($2 || $1)}sge; - $arg = eval qq{"$arg"}; # un-escape characters in C string + # un-escape characters in C string + my %esc = ( a => "\a", b => "\b", f => "\f", n => "\n", + r => "\r", t => "\t", '"' => '"', '\\' => '\\' ); + $arg =~ s/\\(.)/$esc{$1}||'\\'.$1/egs; } else { $arg =~ s/^\s+//; # remove leading white space $arg =~ s/[\x0d\x0a]+$//s; # remove trailing newline @@ -4193,6 +4370,29 @@ } #------------------------------------------------------------------------------ +# Add new entry to -efile output file +# Inputs: 0) file name, 1) -efile option number (0=error, 1=same, 2=failed) +sub EFile($$) +{ + my $entry = shift; + my $efile = $efile[shift || 0]; + if (defined $efile and length $entry and $entry ne '-') { + my $err; + CreateDirectory($efile); + if ($mt->Open(\*EFILE_FILE, $efile, '>>')) { + print EFILE_FILE $entry, "\n" or Warn("Error writing to $efile\n"), $err = 1; + close EFILE_FILE; + } else { + Warn("Error opening '${efile}' for append\n"); + $err = 1; + } + if ($err) { + defined $_ and $_ eq $efile and undef $_ foreach @efile; + } + } +} + +#------------------------------------------------------------------------------ # Print list of tags # Inputs: 0) message, 1-N) list of tag names sub PrintTagList($@) @@ -4259,7 +4459,7 @@ =head2 Copying B [I] B<-tagsFromFile> I -[-I[EI]...] I... +[-[IE]I...] I... =head2 Other @@ -4299,46 +4499,48 @@ File Types ------------+-------------+-------------+-------------+------------ - 3FR r | DR4 r/w/c | ITC r | ODP r | RIFF r - 3G2 r/w | DSS r | J2C r | ODS r | RSRC r - 3GP r/w | DV r | JNG r/w | ODT r | RTF r - A r | DVB r/w | JP2 r/w | OFR r | RW2 r/w - AA r | DVR-MS r | JPEG r/w | OGG r | RWL r/w - AAE r | DYLIB r | JSON r | OGV r | RWZ r - AAX r/w | EIP r | K25 r | OPUS r | RM r - ACR r | EPS r/w | KDC r | ORF r/w | SEQ r - AFM r | EPUB r | KEY r | OTF r | SKETCH r - AI r/w | ERF r/w | LA r | PAC r | SO r - AIFF r | EXE r | LFP r | PAGES r | SR2 r/w - APE r | EXIF r/w/c | LNK r | PBM r/w | SRF r - ARQ r/w | EXR r | LRV r/w | PCD r | SRW r/w - ARW r/w | EXV r/w/c | M2TS r | PCX r | SVG r - ASF r | F4A/V r/w | M4A/V r/w | PDB r | SWF r - AVI r | FFF r/w | MAX r | PDF r/w | THM r/w - AVIF r/w | FITS r | MEF r/w | PEF r/w | TIFF r/w - AZW r | FLA r | MIE r/w/c | PFA r | TORRENT r - BMP r | FLAC r | MIFF r | PFB r | TTC r - BPG r | FLIF r/w | MKA r | PFM r | TTF r - BTF r | FLV r | MKS r | PGF r | TXT r - CHM r | FPF r | MKV r | PGM r/w | VCF r - COS r | FPX r | MNG r/w | PLIST r | VRD r/w/c - CR2 r/w | GIF r/w | MOBI r | PICT r | VSD r - CR3 r/w | GPR r/w | MODD r | PMP r | WAV r - CRM r/w | GZ r | MOI r | PNG r/w | WDP r/w - CRW r/w | HDP r/w | MOS r/w | PPM r/w | WEBP r - CS1 r/w | HDR r | MOV r/w | PPT r | WEBM r - CSV r | HEIC r/w | MP3 r | PPTX r | WMA r - DCM r | HEIF r/w | MP4 r/w | PS r/w | WMV r - DCP r/w | HTML r | MPC r | PSB r/w | WTV r - DCR r | ICC r/w/c | MPG r | PSD r/w | WV r - DFONT r | ICS r | MPO r/w | PSP r | X3F r/w - DIVX r | IDML r | MQV r/w | QTIF r/w | XCF r - DJVU r | IIQ r/w | MRW r/w | R3D r | XLS r - DLL r | IND r/w | MXF r | RA r | XLSX r - DNG r/w | INSP r/w | NEF r/w | RAF r/w | XMP r/w/c - DOC r | INSV r | NRW r/w | RAM r | ZIP r - DOCX r | INX r | NUMBERS r | RAR r | - DPX r | ISO r | O r | RAW r/w | + 360 r/w | DR4 r/w/c | JNG r/w | O r | RAW r/w + 3FR r | DSS r | JP2 r/w | ODP r | RIFF r + 3G2 r/w | DV r | JPEG r/w | ODS r | RSRC r + 3GP r/w | DVB r/w | JSON r | ODT r | RTF r + A r | DVR-MS r | JXL r | OFR r | RW2 r/w + AA r | DYLIB r | K25 r | OGG r | RWL r/w + AAE r | EIP r | KDC r | OGV r | RWZ r + AAX r/w | EPS r/w | KEY r | ONP r | RM r + ACR r | EPUB r | LA r | OPUS r | SEQ r + AFM r | ERF r/w | LFP r | ORF r/w | SKETCH r + AI r/w | EXE r | LIF r | ORI r/w | SO r + AIFF r | EXIF r/w/c | LNK r | OTF r | SR2 r/w + APE r | EXR r | LRV r/w | PAC r | SRF r + ARQ r/w | EXV r/w/c | M2TS r | PAGES r | SRW r/w + ARW r/w | F4A/V r/w | M4A/V r/w | PBM r/w | SVG r + ASF r | FFF r/w | MACOS r | PCD r | SWF r + AVI r | FITS r | MAX r | PCX r | THM r/w + AVIF r/w | FLA r | MEF r/w | PDB r | TIFF r/w + AZW r | FLAC r | MIE r/w/ | PDF r/w | TORRENT r + BMP r | FLIF r/w | MIFF r c | PEF r/w | TTC r + BPG r | FLV r | MKA r | PFA r | TTF r + BTF r | FPF r | MKS r | PFB r | TXT r + CHM r | FPX r | MKV r | PFM r | VCF r + COS r | GIF r/w | MNG r/w | PGF r | VRD r/w/c + CR2 r/w | GPR r/w | MOBI r | PGM r/w | VSD r + CR3 r/w | GZ r | MODD r | PLIST r | WAV r + CRM r/w | HDP r/w | MOI r | PICT r | WDP r/w + CRW r/w | HDR r | MOS r/w | PMP r | WEBP r + CS1 r/w | HEIC r/w | MOV r/w | PNG r/w | WEBM r + CSV r | HEIF r/w | MP3 r | PPM r/w | WMA r + CZI r | HTML r | MP4 r/w | PPT r | WMV r + DCM r | ICC r/w/c | MPC r | PPTX r | WTV r + DCP r/w | ICS r | MPG r | PS r/w | WV r + DCR r | IDML r | MPO r/w | PSB r/w | X3F r/w + DFONT r | IIQ r/w | MQV r/w | PSD r/w | XCF r + DIVX r | IND r/w | MRC r | PSP r | XLS r + DJVU r | INSP r/w | MRW r/w | QTIF r/w | XLSX r + DLL r | INSV r | MXF r | R3D r | XMP r/w/c + DNG r/w | INX r | NEF r/w | RA r | ZIP r + DOC r | ISO r | NKSC r/w | RAF r/w | + DOCX r | ITC r | NRW r/w | RAM r | + DPX r | J2C r | NUMBERS r | RAR r | Meta Information ----------------------+----------------------+--------------------- @@ -4369,7 +4571,7 @@ may NOT be combined into one argument). Contrary to standard practice, options may appear after source file names on the exiftool command line. -=head2 Option Summary +=head2 Option Overview L @@ -4388,13 +4590,14 @@ -c FMT (-coordFormat) Set format for GPS coordinates -charset [[TYPE=]CHARSET] Specify encoding for special characters -csv[[+]=CSVFILE] Export/import tags in CSV format + -csvDelim STR Set delimiter for CSV file -d FMT (-dateFormat) Set format for date/time values -D (-decimal) Show tag ID numbers in decimal - -E, -ex (-escape(HTML|XML)) Escape values for HTML (-E) or XML (-ex) + -E,-ex,-ec (-escape(HTML|XML|C))Escape tag values for HTML, XML or C -f (-forcePrint) Force printing of all specified tags -g[NUM...] (-groupHeadings) Organize output by tag group -G[NUM...] (-groupNames) Print group name for each tag - -h (-htmlFormat) Use HMTL formatting for output + -h (-htmlFormat) Use HTML formatting for output -H (-hex) Show tag ID numbers in hexadecimal -htmlDump[OFFSET] Generate HTML-format binary dump -j[[+]=JSONFILE] (-json) Export/import tags in JSON format @@ -4421,8 +4624,8 @@ L -a (-duplicates) Allow duplicate tags to be extracted - -e (--composite) Do not calculate composite tags - -ee (-extractEmbedded) Extract information from embedded files + -e (--composite) Do not generate composite tags + -ee[NUM] (-extractEmbedded) Extract information from embedded files -ext[+] EXT (-extension) Process files with specified extension -F[OFFSET] (-fixBase) Fix the base for maker notes offsets -fast[NUM] Increase speed when extracting metadata @@ -4469,7 +4672,9 @@ -common_args Define common arguments -config CFGFILE Specify configuration file name -echo[NUM] TEXT Echo text to stdout or stderr + -efile[NUM][!] ERRFILE Save names of files with errors -execute[NUM] Execute multiple commands on one line + -list_dir List directories, not their contents -srcfile FMT Process a different source file -stay_open FLAG Keep reading -@ argfile even after EOF -userParam PARAM[[^]=[VAL]] Set user parameter (API UserParam opt) @@ -4527,6 +4732,14 @@ Instead, individual tags may be recovered using the B<-tagsFromFile> option (eg. C<-all= -tagsfromfile @ -artist>). +To speed processing when reading XMP, exclusions in XMP groups also bypass +processing of the corresponding XMP property and any contained properties. +For example, C<--xmp-crs:all> may speed processing significantly in cases +where a large number of XMP-crs tags exist. To use this feature to bypass +processing of a specific XMP property, the property name must be used +instead of the ExifTool tag name (eg. C<--xmp-crs:dabs>). Also, C +may be used to to indicate any XMP namespace (eg. ). + =item B<->I[+-^]B<=>[I] Write a new value for the specified tag (eg. C<-comment=wow>), or delete the @@ -4537,17 +4750,18 @@ decrement if I is negative), and C<-=> may be used to conditionally delete or replace a tag (see L for examples). C<^=> is used to write an empty string instead of deleting the tag when no I -is given, but otherwise it is equivalent to C<=>. +is given, but otherwise it is equivalent to C<=>, but note that the caret +must be quoted on the Windows command line. -I may contain one or more leading family 0, 1 or 2 group names, +I may contain one or more leading family 0, 1, 2 or 7 group names, prefixed by optional family numbers, and separated colons. If no group name is specified, the tag is created in the preferred group, and updated in any other location where a same-named tag already exists. The preferred group -is the first group in the following list where I is valid: 1) EXIF, 2) -IPTC, 3) XMP. +in JPEG and TIFF-format images is the first group in the following list +where I is valid: 1) EXIF, 2) IPTC, 3) XMP. The wildcards C<*> and C may be used in tag names to assign the same -value to multiple tags. When specified with wildcards, "unsafe" tags are +value to multiple tags. When specified with wildcards, "Unsafe" tags are not written. A tag name of C is equivalent to C<*> (except that it doesn't require quoting, while arguments with wildcards do on systems with shell globbing), and is often used when deleting all metadata (ie. C<-All=>) @@ -4594,7 +4808,7 @@ possible to exclude individual tags from a mass delete. For example, C<-time:all --Exif:Time:All> removes all deletable Time tags except those in the EXIF. This difference also applies if family 2 is specified when -deleting all groups. For example, C<-2all:all=> deletes tags individually, +deleting all groups. For example, C<-2all:all=> deletes tags individually, while C<-all:all=> deletes entire blocks. 5) The "APP" group names ("APP0" through "APP15") are used to delete JPEG @@ -4693,10 +4907,10 @@ Notes: 1) Some tags (generally tags which may affect the appearance of the image) -are considered "unsafe" to write, and are only copied if specified +are considered "Unsafe" to write, and are only copied if specified explicitly (ie. no wildcards). See the L for more details about -"unsafe" tags. +"Unsafe" tags. 2) Be aware of the difference between excluding a tag from being copied (--I), and deleting a tag (-I=). Excluding a tag prevents it from @@ -4765,7 +4979,7 @@ string form must be used in the following command since the intent is to set the value of all existing date/time tags from C: - exiftool "-time:all<$createdate" -wm w FILE + exiftool '-time:all<$createdate' -wm w FILE =item B<-x> I (B<-exclude>) @@ -4778,7 +4992,7 @@ =head3 Input-output text formatting Note that trailing spaces are removed from extracted values for most output -text formats. The exceptions are C<-b>, C<-csv>, C<-j> and C<-X>. +text formats. The exceptions are B<-b>, B<-csv>, B<-j> and B<-X>. =over 5 @@ -4791,10 +5005,10 @@ intermediate file (C in this example): exiftool -args -G1 --filename --directory src.jpg > out.args - exiftool -@ out.args -sep ", " dst.jpg + exiftool -@ out.args -sep ', ' dst.jpg Note: Be careful when copying information with this technique since it is -easy to write tags which are normally considered "unsafe". For instance, +easy to write tags which are normally considered "Unsafe". For instance, the FileName and Directory tags are excluded in the example above to avoid renaming and moving the destination file. Also note that the second command above will produce warning messages for any tags which are not writable. @@ -4804,17 +5018,21 @@ the B<-struct> option may be used when extracting to preserve structured XMP information. -=item B<-b> (B<-binary>) +=item B<-b>, B<--b> (B<-binary>, B<--binary>) + +Output requested metadata in binary format without tag names or descriptions +(B<-b> or B<-binary>). This option is mainly used for extracting embedded +images or other binary data, but it may also be useful for some text strings +since control characters (such as newlines) are not replaced by '.' as they +are in the default output. By default, list items are separated by a +newline when extracted with the B<-b> option, but this may be changed (see +the B<-sep> option for details). May be combined with B<-j>, B<-php> or +B<-X> to extract binary data in JSON, PHP or XML format, but note that +"Unsafe" tags are not extracted as binary unless they are specified explicitly or +the API RequestAll option is set to 3 or higher. -Output requested metadata in binary format without tag names or -descriptions. This option is mainly used for extracting embedded images or -other binary data, but it may also be useful for some text strings since -control characters (such as newlines) are not replaced by '.' as they are in -the default output. By default, list items are separated by a newline when -extracted with the B<-b> option, but this may be changed (see the B<-sep> -option for details). May be combined with C<-j>, C<-php> or C<-X> to -extract binary data in JSON, PHP or XML format, but note that "unsafe" tags -must be specified explicitly to be extracted as binary in these formats. +With a leading double dash (B<--b> or B<--binary>), tags which contain +binary data are suppressed in the output when reading. =item B<-c> I (B<-coordFormat>) @@ -4865,6 +5083,7 @@ Thai cp874 Windows Thai DOSLatinUS cp437 DOS Latin US DOSLatin1 cp850 DOS Latin1 + DOSCyrillic cp866 DOS Cyrillic MacRoman cp10000, Roman Macintosh Roman MacLatin2 cp10029 Macintosh Latin2 (Central Europe) MacCyrillic cp10007 Macintosh Cyrillic @@ -4905,8 +5124,11 @@ values must be separated by commas. A special "SourceFile" column specifies the files associated with each row of information (and a SourceFile of "*" may be used to define default tags to be imported for all files which are -combined with any tags specified for the specific SourceFile processed). -The following examples demonstrate basic use of this option: +combined with any tags specified for the specific SourceFile processed). The +B<-csvDelim> option may be used to change the input/output field delimiter +if something other than a comma is required. + +The following examples demonstrate basic use of the B<-csv> option: # generate CSV file with common tags from all images in a directory exiftool -common -csv dir > out.csv @@ -4953,6 +5175,13 @@ either use the JSON (B<-j>) or XML (B<-X>) output format, or use B<-p> to generate a fixed-column CSV file instead of using the B<-csv> option. +=item B<-csvDelim> I + +Set the delimiter for separating CSV entries for CSV file input/output via +the B<-csv> option. I may contain "\t", "\n", "\r" and "\\" to +represent TAB, LF, CR and '\' respectively. A double quote is not allowed +in the delimiter. Default is ','. + =item B<-d> I (B<-dateFormat>) Set the format for date/time tag values. The I string may contain @@ -4961,22 +5190,25 @@ are system dependent -- consult the C man page on your system for details. The default format is equivalent to "%Y:%m:%d %H:%M:%S". This option has no effect on date-only or time-only tags and ignores timezone -information if present. Only one B<-d> option may be used per command. -Requires POSIX::strptime or Time::Piece for the inversion conversion when -writing. +information if present. ExifTool adds a C<%f> format code to represent +fractional seconds, and supports an optional width to specify the number of +digits after the decimal point (eg. C<%3f> would give something like +C<.437>). Only one B<-d> option may be used per command. Requires +POSIX::strptime or Time::Piece for the inversion conversion when writing. =item B<-D> (B<-decimal>) Show tag ID number in decimal when extracting information. -=item B<-E>, B<-ex> (B<-escapeHTML>, B<-escapeXML>) +=item B<-E>, B<-ex>, B<-ec> (B<-escapeHTML>, B<-escapeXML>, B<-escapeC>) -Escape characters in output values for HTML (B<-E>) or XML (B<-ex>). For -HTML, all characters with Unicode code points above U+007F are escaped as -well as the following 5 characters: & (&) E<39> (') E (") -E (>) and E (<). For XML, only these 5 characters are -escaped. The B<-E> option is implied with B<-h>, and B<-ex> is implied with -B<-X>. The inverse conversion is applied when writing tags. +Escape characters in output tag values for HTML (B<-E>), XML (B<-ex>) or C +(B<-ec>). For HTML, all characters with Unicode code points above U+007F +are escaped as well as the following 5 characters: & (&) E<39> (') +E (") E (>) and E (<). For XML, only these 5 +characters are escaped. The B<-E> option is implied with B<-h>, and B<-ex> +is implied with B<-X>. For C, all control characters and the backslash are +escaped. The inverse conversion is applied when writing tags. =item B<-f> (B<-forcePrint>) @@ -4992,15 +5224,15 @@ Organize output by tag group. I specifies a group family number, and may be 0 (general location), 1 (specific location), 2 (category), 3 -(document number), 4 (instance number), 5 (metadata path) or 6 (EXIF/TIFF -format). B<-g0> is assumed if a family number is not specified, and family -numbers may be added wherever B<-g> is mentioned in the documentation. -Multiple families may be specified by separating them with colons. By -default the resulting group name is simplified by removing any leading +(document number), 4 (instance number), 5 (metadata path), 6 (EXIF/TIFF +format) or 7 (tag ID). B<-g0> is assumed if a family number is not +specified. May be combined with other options to add group names to the +output. Multiple families may be specified by separating them with colons. +By default the resulting group name is simplified by removing any leading C and collapsing adjacent identical group names, but this can be -avoided by placing a colon before the first family number (eg. B<-g:3:1>). +avoided by placing a colon before the first family number (eg. B<-g:3:1>). Use the B<-listg> option to list group names for a specified family. The -SavePath and SaveFormat API options are automatically enabled if the +API SavePath and SaveFormat options are automatically enabled if the respective family 5 or 6 group names are requested. See the L for more information. @@ -5043,18 +5275,18 @@ into individual tags in the JSON output, but the original structure may be preserved with the B<-struct> option (this also causes all list-type XMP tags to be output as JSON arrays, otherwise single-item lists would be -output as simple strings). The B<-a> option is implied if the B<-g> or -B<-G> options are used, otherwise it is ignored and tags with identical -JSON names are suppressed. (B<-g4> may be used to ensure that all tags have -unique JSON names.) Adding the B<-D> or B<-H> option changes tag values to -JSON objects with "val" and "id" fields, and adding B<-l> adds a "desc" -field, and a "num" field if the numerical value is different from the -converted "val". The B<-b> option may be added to output binary data, -encoded in base64 if necessary (indicated by ASCII "base64:" as the first 7 -bytes of the value), and B<-t> may be added to include tag table information -(see B<-t> for details). The JSON output is UTF-8 regardless of any B<-L> -or B<-charset> option setting, but the UTF-8 validation is disabled if a -character set other than UTF-8 is specified. +output as simple strings). The B<-a> option is implied when B<-json> is +used, but entries with identical JSON names are suppressed in the output. +(B<-G4> may be used to ensure that all tags have unique JSON names.) Adding +the B<-D> or B<-H> option changes tag values to JSON objects with "val" and +"id" fields, and adding B<-l> adds a "desc" field, and a "num" field if the +numerical value is different from the converted "val". The B<-b> option may +be added to output binary data, encoded in base64 if necessary (indicated by +ASCII "base64:" as the first 7 bytes of the value), and B<-t> may be added +to include tag table information (see B<-t> for details). The JSON output +is UTF-8 regardless of any B<-L> or B<-charset> option setting, but the +UTF-8 validation is disabled if a character set other than UTF-8 is +specified. If I is specified, the file is imported and the tag definitions from the file are used to set tag values on a per-file basis. The special @@ -5173,10 +5405,11 @@ Print output in the format specified by the given file or string. The argument is interpreted as a string unless a file of that name exists, in which case the string is loaded from the contents of the file. Tag names in -the format file or string begin with a C<$> symbol and may contain a leading -group names and/or a trailing C<#>. Case is not significant. Braces C<{}> -may be used around the tag name to separate it from subsequent text. Use -C<$$> to represent a C<$> symbol, and C<$/> for a newline. +the format file or string begin with a C<$> symbol and may contain leading +group names and/or a trailing C<#> (to disable print conversion). Case is +not significant. Braces C<{}> may be used around the tag name to separate +it from subsequent text. Use C<$$> to represent a C<$> symbol, and C<$/> +for a newline. Multiple B<-p> options may be used, each contributing a line (or more) of text to the output. Lines beginning with C<#[HEAD]> and C<#[TAIL]> are @@ -5188,7 +5421,8 @@ C<#[BODY]> and lines not beginning with C<#> are output for each processed file. Lines beginning with C<#[IF]> are not output, but all BODY lines are skipped if any tag on an IF line doesn't exist. Other lines beginning with -C<#> are ignored. For example, this format file: +C<#> are ignored. (To output a line beginning with C<#>, use C<#[BODY]#>.) +For example, this format file: # this is a comment line #[HEAD]-- Generated by ExifTool $exifToolVersion -- @@ -5202,7 +5436,7 @@ produces output like this: - -- Generated by ExifTool 11.88 -- + -- Generated by ExifTool 12.40 -- File: a.jpg - 2003:10:31 15:44:19 (f/5.6, 1/60s, ISO 100) File: b.jpg - 2006:05:23 11:57:38 @@ -5219,7 +5453,7 @@ If a specified tag does not exist, a minor warning is issued and the line with the missing tag is not printed. However, the B<-f> option may be used to set the value of missing tags to '-' (but this may be configured via the -MissingTagValue API option), or the B<-m> option may be used to ignore minor +API MissingTagValue option), or the B<-m> option may be used to ignore minor warnings and leave the missing values empty. Alternatively, B<-q -q> may be used to simply suppress the warning messages. @@ -5362,18 +5596,18 @@ argument like C<%d%f.txt> is written as C<%%d%%f.txt>. 2) If the argument for B<-w> does not contain a valid format code (eg. %f), -then it is interpreted as a file extension. It is not possible to specify a -simple filename as an argument -- creating a single output file from -multiple source files is typically done by shell redirection, ie) +then it is interpreted as a file extension, but there are three different +ways to create a single output file from multiple source files: + # 1. Shell redirection exiftool FILE1 FILE2 ... > out.txt -But if necessary, an empty format code may be used to force the argument to -be interpreted as a format string, and the same result may be obtained -without the use of shell redirection: - + # 2. With the -w option and a zero-width format code exiftool -w+! %0fout.txt FILE1 FILE2 ... + # 3. With the -W option (see the -W option below) + exiftool -W+! out.txt FILE1 FILE2 ... + Advanced features: A substring of the original file name, directory or extension may be taken @@ -5457,12 +5691,14 @@ 1) With B<-W>, a new output file is created for each extracted tag. -2) B<-W> supports three additional format codes: %t, %g and %s represent -the tag name, group name, and suggested extension for the output file (based -on the format of the data). The %g code may be followed by a single digit -to specify the group family number (eg. %g1), otherwise family 0 is assumed. -The substring width/position/case specifiers may be used with these format -codes in exactly the same way as with %f and %e. +2) B<-W> supports four additional format codes: %t, %g and %s represent the +tag name, group name, and suggested extension for the output file (based on +the format of the data), and %o represents the value of the +OriginalRawFileName or OriginalFileName tag from the input file (including +extension). The %g code may be followed by a single digit to specify the +group family number (eg. %g1), otherwise family 0 is assumed. The substring +width/position/case specifiers may be used with these format codes in +exactly the same way as with %f and %e. 3) The argument for B<-W> is interpreted as a file name if it contains no format codes. (For B<-w>, this would be a file extension.) This change @@ -5482,7 +5718,7 @@ 4) Adding the B<-v> option to B<-W> sends a list of the tags and output file names to the console instead of giving a verbose dump of the entire file. (Unless appending all output to one file for each source file by using -B<-W+> with an output file I that does not contain %t, $g or %s.) +B<-W+> with an output file I that does not contain %t, %g, %s or %o.) 5) Individual list items are stored in separate files when B<-W> is combined with B<-b>, but note that for separate files to be created %c or %C must be @@ -5518,9 +5754,10 @@ details). Note: This output is NOT the same as XMP because it uses -dynamically-generated property names corresponding to the ExifTool tag -names, and not the standard XMP properties. To write XMP instead, use the -B<-o> option with an XMP extension for the output file. +dynamically-generated property names corresponding to the ExifTool tag names +with ExifTool family 1 group names as namespaces, and not the standard XMP +properties and namespaces. To write XMP instead, use the B<-o> option with +an XMP extension for the output file. =back @@ -5539,9 +5776,9 @@ =item B<-e> (B<--composite>) -Extract existing tags only -- don't calculate composite tags. +Extract existing tags only -- don't generate composite tags. -=item B<-ee> (B<-extractEmbedded>) +=item B<-ee>[I] (B<-extractEmbedded>) Extract information from embedded documents in EPS files, embedded EPS information and JPEG and Jpeg2000 images in PDF files, embedded MPF images @@ -5559,6 +5796,12 @@ generation of GPS track logs from timed metadata in videos. See L for examples. +Setting I to 2 causes the H264 video stream in MP4 videos to be parsed +until the first Supplemental Enhancement Information (SEI) message is +decoded, or 3 to parse the entire H624 stream and decode all SEI +information. For M2TS videos, a setting of 3 causes the entire file to be +parsed in search of unlisted programs which may contain timed GPS. + =item B<-ext>[+] I, B<--ext> I (B<-extension>) Process only files with (B<-ext>) or without (B<--ext>) a specified @@ -5610,7 +5853,8 @@ metadata from the file, and returns only pseudo System tags, but still reads the file header to obtain an educated guess at FileType. B<-fast4> doesn't even read the file header, and returns only System tags and a FileType based -on the file extension. Has no effect when writing. +on the file extension. B<-fast5> also disables generation of the Composite +tags (like B<-e>). Has no effect when writing. Note that a separate B<-fast> setting may be used for evaluation of a B<-if> condition, or when ordering files with the B<-fileOrder> option. See the @@ -5635,7 +5879,9 @@ reduced by specifying a I for the B<-fast> level used during the metadata-extraction phase. For example, B<-fileOrder4> may be used if I is a pseudo System tag. If multiple B<-fileOrder> options are used, -the extraction is done at the lowest B<-fast> level. +the extraction is done at the lowest B<-fast> level. Note that files are +sorted across directory boundaries if multiple input directories are +specified. =item B<-i> I (B<-ignore>) @@ -5643,8 +5889,10 @@ name, or a full path. If a full path is specified, it must match the Directory tag exactly to be ignored. Use multiple B<-i> options to ignore more than one directory name. A special I value of C (case -sensitive) may be specified to ignore symbolic links when the B<-r> option -is used. +sensitive) may be specified to avoid recursing into directories which are +symbolic links when the B<-r> option is used. As well, a value of C +(case sensitive) may be used to ignore files with names that start with a +"." (ie. hidden files on Unix systems) when scanning a directory. =item B<-if>[I] I @@ -5676,9 +5924,18 @@ executed for evaluating I at a B<-fast> level given by I (see the B<-fast> option documentation for details). Without I, only one processing pass is done at the level specified by the B<-fast> option. For -example, using B<-if4> is possible if I uses only pseudo System tags, +example, using B<-if5> is possible if I uses only pseudo System tags, and may significantly speed processing if enough files fail the condition. +The expression has access to the current ExifTool object through C<$self>, +and the following special functions are available to allow short-circuiting +of the file processing. Both functions have a return value of 1. Case is +significant for function names. + + End() - end processing after this file + EndDir() - end processing of files in this directory (not + compatible with the B<-fileOrder> option) + Notes: 1) The B<-n> and B<-b> options also apply to tags used in I. @@ -5787,12 +6044,12 @@ Preserve the filesystem modification date/time (C) of the original file when writing. Note that some filesystems store a creation -date (Windows C or Mac C) -which is not affected by this option. The creation date is preserved on -Windows systems where Win32API::File and Win32::API are available regardless -of this setting. For other systems, the B<-overwrite_original_in_place> -option may be used if necessary to preserve the creation date. This option -is superseded by any value written to the FileModifyDate tag. +date (ie. C on Windows and Mac systems) which is not +affected by this option. This creation date is preserved on Windows systems +where Win32API::File and Win32::API are available regardless of this +setting. For other systems, the B<-overwrite_original_in_place> option may +be used if necessary to preserve the creation date. The B<-P> option is +superseded by any value written to the FileModifyDate tag. =item B<-password> I @@ -6061,7 +6318,7 @@ for any tag on the command line. See the L for more details. Note that this option is not reversible, and remains in effect until the -application terminates, even across the C<-execute> option. +application terminates, even across the B<-execute> option. =back @@ -6139,7 +6396,20 @@ Echo I to stdout (B<-echo> or B<-echo1>) or stderr (B<-echo2>). Text is output as the command line is parsed, before the processing of any input files. I may also be 3 or 4 to output text (to stdout or stderr -respectively) after processing is complete. +respectively) after processing is complete. For B<-echo3> and B<-echo4>, +"${status}" may be used in the I string to represent the numerical +exit status of the command (see L). + +=item B<-efile>[I][!] I + +Save the names of files giving errors (I missing or 1), files that were +unchanged (I is 2), files that fail the B<-if> condition (I is 4), +or any combination thereof by summing I (eg. B<-efile3> is the same +has having both B<-efile> and B<-efile2> options with the same I). +By default, file names are appended to any existing I, but +I is overwritten if an exclamation point is added to the option +(eg. B<-efile!>). Saves the name of the file specified by the B<-srcfile> +option if applicable. =item B<-execute>[I] @@ -6149,7 +6419,22 @@ B<-config> and B<-use> options which remain in effect for subsequent commands). Allows multiple commands to be executed from a single command line. I is an optional number that is echoed in the "{ready}" message -when using the B<-stay_open> feature. +when using the B<-stay_open> feature. If a I is specified, the B<-q> +option no longer suppresses the output "{readyNUM}" message. + +=item B<-list_dir> + +List directories themselves instead of their contents. This option +effectively causes directories to be treated as normal files when reading +and writing. For example, with this option the output of the C +command on Mac/Linux may be approximated by this exiftool command: + + exiftool -list_dir -T -ls-l -api systemtags -fast5 .* * + +(The B<-T> option formats the output in tab-separated columns, B<-ls-l> is a +L, the API SystemTags option is +required to extract some necessary tags, and the B<-fast5> option is added +for speed since only system tags are being extracted.) =item B<-srcfile> I @@ -6174,12 +6459,16 @@ useful when specifying multiple B<-srcfile> options (eg. to fall back to processing the original I if no sidecar exists). +When this option is used, two special UserParam tags (OriginalFileName and +OriginalDirectory) are generated to allow access to the original I +name and directory. + =item B<-stay_open> I -If I is C<1> or C, causes exiftool keep reading from the B<-@> -I even after reaching the end of file. This feature allows calling -applications to pre-load exiftool, thus avoiding the overhead of loading -exiftool for each command. The procedure is as follows: +If I is C<1> or C (case insensitive), causes exiftool keep +reading from the B<-@> I even after reaching the end of file. This +feature allows calling applications to pre-load exiftool, thus avoiding the +overhead of loading exiftool for each command. The procedure is as follows: 1) Execute C>, where I is the name of an existing (possibly empty) argument file or C<-> to pipe arguments @@ -6190,17 +6479,21 @@ 3) Write C<-execute\n> to I, where C<\n> represents a newline sequence. (Note: You may need to flush your write buffers here if using -buffered output.) Exiftool will then execute the command with the arguments +buffered output.) ExifTool will then execute the command with the arguments received up to this point, send a "{ready}" message to stdout when done (unless the B<-q> or B<-T> option is used), and continue trying to read arguments for the next command from I. To aid in command/response -synchronization, any number appended to the C<-execute> option is echoed in -the "{ready}" message. For example, C<-execute613> results in "{ready613}". +synchronization, any number appended to the B<-execute> option is echoed in +the "{ready}" message. For example, C<-execute613> results in "{ready613}". +When this number is added, B<-q> no longer suppresses the "{ready}" message. +(Also, see the B<-echo3> and B<-echo4> options for additional ways to pass +signals back to your application.) 4) Repeat steps 2 and 3 for each command. -5) Write C<-stay_open\nFalse\n> to I when done. This will cause -exiftool to process any remaining command-line arguments then exit normally. +5) Write C<-stay_open\nFalse\n> (or C<-stay_open\n0\n>) to I when +done. This will cause exiftool to process any remaining command-line +arguments then exit normally. The input I may be changed at any time before step 5 above by writing the following lines to the currently open I: @@ -6210,7 +6503,7 @@ -@ NEWARGFILE -This causes I to be closed, and I to be kept open. +This causes I to be closed, and I to be kept open. (Without the B<-stay_open> here, exiftool would have returned to reading arguments from I after reaching the end of I.) @@ -6223,14 +6516,15 @@ =item B<-userParam> I -Set user parameter. I is an arbitrary user parameter name. This -is an interface to the API UserParam option (see the +Set user parameter. I is an arbitrary user parameter name. This is +an interface to the API UserParam option (see the L documentation), and -provides a method to access user-defined parameters from inside tag name -expressions (as if it were any other tag, see example below), and from -PrintConv/ValueConv logic (via the ExifTool Options function). Similar to -the B<-api> option, the parameter value is set to 1 if I<=VAL> is omitted, -undef if just I is omitted with C<=>, or an empty string if +provides a method to access user-defined parameters in arguments to the +B<-if> and B<-p> options as if they were any other tag. Appending a hash +tag (C<#>) to I (eg. C<-userParam MyTag#=yes>) also causes the +parameter to be extracted as a normal tag in the UserParam group. Similar +to the B<-api> option, the parameter value is set to 1 if I<=VAL> is +omitted, undef if just I is omitted with C<=>, or an empty string if I is omitted with C<^=>. exiftool -p '$test from $filename' -userparam test=Hello FILE @@ -6301,9 +6595,9 @@ The B<-sep> option is necessary to split the string back into individual list items when writing to a list-type tag. -An optional flag argument may be set to 1 to cause C to return undef -if no duplicates existed, thus preventing the file from being rewritten -unnecessarily: +An optional flag argument may be set to 1 to cause C to set C<$_> to +undef if no duplicates existed, thus preventing the file from being +rewritten unnecessarily: exiftool -sep '##' '-keywords<${keywords;NoDups(1)}' a.jpg @@ -6324,8 +6618,8 @@ routines, thus providing support for most Unicode file names (see note 4). But note that it is not trivial to pass properly encoded file names on the Windows command line (see L for details), -so placing them in a UTF-8 encoded B<-@> argfile and using C<-charset -filename=utf8> is recommended if possible. +so placing them in a UTF-8 encoded B<-@> argfile and using +C<-charset filename=utf8> is recommended if possible. A warning is issued if a specified filename contains special characters and the filename character set was not provided. However, the warning may be @@ -6399,7 +6693,7 @@ tags, sorted by group (for family 1). For performance reasons, this command may not extract all available metadata. (Metadata in embedded documents, metadata extracted by external utilities, and metadata requiring excessive -processing time may not be extracted). Add C<-ee> and C<-api RequestAll=3> +processing time may not be extracted). Add C<-ee3> and C<-api RequestAll=3> to the command to extract absolutely everything available. =item exiftool -common dir @@ -6468,7 +6762,7 @@ Print one line of output containing the file name and DateTimeOriginal for each image in directory C. -=item exiftool -ee -p '$gpslatitude, $gpslongitude, $gpstimestamp' a.m2ts +=item exiftool -ee3 -p '$gpslatitude, $gpslongitude, $gpstimestamp' a.m2ts Extract all GPS positions from an AVCHD video. @@ -6941,6 +7235,13 @@ =back +=head1 INTERRUPTING EXIFTOOL + +Interrupting exiftool with a CTRL-C or SIGINT will not result in partially +written files or temporary files remaining on the hard disk. The exiftool +application traps SIGINT and defers it until the end of critical processes +if necessary, then does a proper cleanup before exiting. + =head1 EXIT STATUS The exiftool application exits with a status of 0 on success, or 1 if an @@ -6949,7 +7250,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey +Copyright 2003-2022, Phil Harvey This is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/fmt_files/gpx.fmt libimage-exiftool-perl-12.40+dfsg/fmt_files/gpx.fmt --- libimage-exiftool-perl-11.88/fmt_files/gpx.fmt 2019-10-24 17:07:33.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/fmt_files/gpx.fmt 2021-09-22 18:09:04.000000000 +0000 @@ -3,7 +3,7 @@ # # Description: Example ExifTool print format file to generate a GPX track log # -# Usage: exiftool -p gpx.fmt -ee FILE [...] > out.gpx +# Usage: exiftool -p gpx.fmt -ee3 FILE [...] > out.gpx # # Requires: ExifTool version 10.49 or later # @@ -13,7 +13,7 @@ # 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value # # Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude. -# 2) The -ee option is to extract the full track from video files. +# 2) The -ee3 option is to extract the full track from video files. # 3) The -fileOrder option may be used to control the order of the # generated track points when processing multiple files. #------------------------------------------------------------------------------ diff -Nru libimage-exiftool-perl-11.88/fmt_files/gpx_wpt.fmt libimage-exiftool-perl-12.40+dfsg/fmt_files/gpx_wpt.fmt --- libimage-exiftool-perl-11.88/fmt_files/gpx_wpt.fmt 2020-02-14 12:35:45.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/fmt_files/gpx_wpt.fmt 2021-09-22 18:09:04.000000000 +0000 @@ -4,7 +4,7 @@ # Description: Example ExifTool print format file to generate GPX waypoints # with pictures # -# Usage: exiftool -p gpx_wpt.fmt -ee FILE [...] > out.gpx +# Usage: exiftool -p gpx_wpt.fmt -ee3 FILE [...] > out.gpx # # Requires: ExifTool version 10.49 or later # @@ -14,7 +14,7 @@ # 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value # # Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude. -# 2) The -ee option is to extract the full track from video files. +# 2) The -ee3 option is to extract the full track from video files. # 3) The -fileOrder option may be used to control the order of the # generated track points when processing multiple files. #------------------------------------------------------------------------------ diff -Nru libimage-exiftool-perl-11.88/fmt_files/kml.fmt libimage-exiftool-perl-12.40+dfsg/fmt_files/kml.fmt --- libimage-exiftool-perl-11.88/fmt_files/kml.fmt 2020-01-27 15:57:20.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/fmt_files/kml.fmt 2021-03-17 13:12:48.000000000 +0000 @@ -15,7 +15,7 @@ # 2020/01/11 - F. Kotov Limited image preview size to 500px # # Notes: 1) Input files must contain GPSLatitude and GPSLongitude. -# 2) Add the -ee option to extract the full track from video files. +# 2) Add the -ee3 option to extract the full track from video files. # 3) For Google Earth to be able to find the images, the input # images must be specified using relative paths, and "out.kml" # must stay in the same directory as where the command was run. diff -Nru libimage-exiftool-perl-11.88/fmt_files/kml_track.fmt libimage-exiftool-perl-12.40+dfsg/fmt_files/kml_track.fmt --- libimage-exiftool-perl-11.88/fmt_files/kml_track.fmt 2019-10-29 13:55:20.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/fmt_files/kml_track.fmt 2021-03-17 13:12:48.000000000 +0000 @@ -11,7 +11,7 @@ # # From video files: # -# exiftool -p kml.fmt -ee FILEorDIR [...] > out.kml +# exiftool -p kml.fmt -ee3 FILEorDIR [...] > out.kml # # Requires: ExifTool version 10.41 or later # diff -Nru libimage-exiftool-perl-11.88/html/ancient_history.html libimage-exiftool-perl-12.40+dfsg/html/ancient_history.html --- libimage-exiftool-perl-11.88/html/ancient_history.html 2020-02-14 12:14:26.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/ancient_history.html 2021-11-11 17:36:16.000000000 +0000 @@ -13,6 +13,789 @@

Note: This page gives the history of older exiftool versions. See history.html for the recent history.

+Apr. 22, 2021 - Version 12.25 +
    +
  • JPEG XL support is now official +
  • Added read support for Medical Research Council (MRC) image files +
  • Added ability to write a number of 3gp tags in video files +
  • Added a new Sony PictureProfile value (thanks Jos Roost) +
  • Added a new Sony LensType (thanks LibRaw) +
  • Added a new Nikon LensID (thanks Niels Kristian Bech Jensen) +
  • Added a new Canon LensType +
  • Decode more GPS information from Blackvue dashcam videos +
  • Decode a couple of new NikonSettings tags (thanks Warren Hatch) +
  • Decode a few new RIFF tags +
  • Improved Validate option to add minor warning if standard XMP is missing + xpacket wrapper +
  • Avoid decoding some large arrays in DNG images to improve performance unless + the -m option is used +
  • Patched bug that could give runtime warning when trying to write an empty + XMP structure +
  • Fixed decoding of ImageWidth/Height for JPEG XL images +
  • Fixed problem were Microsoft Xtra tags couldn't be deleted +
+ +Apr. 13, 2021 - Version 12.24 +
    +
  • Added a new PhaseOne RawFormat value (thanks LibRaw) +
  • Decode a new Sony tag (thanks Jos Roost) +
  • Decode a few new Panasonic and FujiFilm tags (thanks LibRaw and Greybeard) +
  • Updated acdsee.config in distribution (thanks StarGeek) +
  • Recognize AutoCAD DXF files +
  • More work on experimental JUMBF read support +
  • More work on experimental JPEG XL read/write support +
  • Patched security vulnerability in DjVu reader +
+ +Apr. 1, 2021 - Version 12.23 +
    +
  • Added support for Olympus ORI files +
  • Added experimental read/write support for JPEG XL images +
  • Added experimental read support for JUMBF metadata in JPEG and Jpeg2000 + images +
  • Added built-in support for parsing GPS track from Denver ACG-8050 videos + with the -ee option +
  • Added a some new Sony lenses (thanks Jos Roost and LibRaw) +
  • Changed priority of Samsung trailer tags so the first DepthMapImage takes + precedence when -a is not used +
  • Improved identification of M4A audio files +
  • Patched to avoid escaping ',' in "Binary data" message when -struct is used +
  • Removed Unknown flag from MXF VideoCodingSchemeID tag +
  • Fixed -forcewrite=EXIF to apply to EXIF in binary header of EPS files +
  • API Changes: + +
+ +Mar. 17, 2021 - Version 12.22 +
    +
  • Added a few new Sony LensTypes and a new SonyModelID (thanks Jos Roost and + LibRaw) +
  • Added Extra BaseName tag +
  • Added a new CanonModelID (thanks LibRaw) +
  • Decode timed GPS from unlisted programs in M2TS videos with the -ee3 option +
  • Decode more Sony rtmd tags +
  • Decode some tags for the Sony ILME-FX3 (thanks Jos Roost) +
  • Allow negative values to be written to XMP-aux:LensID +
  • Recognize HEVC video program in M2TS files +
  • Enhanced -b option so --b suppresses tags with binary data +
  • Improved flexibility when writing GPS coordinates: +
      +
    • Now pulls latitude and longitude from a combined GPSCoordinates string +
    • Recognize full word "South" and "West" to write negative coordinates +
    +
  • Improved warning when trying to write an integer QuickTime date/time tag and + Time::Local is not available +
  • Convert GPSSpeed from mph to km/h in timed GPS from Garmin MP4 videos +
+ +Feb. 24, 2021 - Version 12.21 +
    +
  • Added a few new iOS QuickTime tags +
  • Decode a couple more Sony rtmd tags +
  • Patch to avoid possible "Use of uninitialized value" warning when attempting + to write QuickTime date/time tags with an invalid value +
  • Fixed problem writing Microsoft Xtra tags +
  • Fixed Windows daylight savings time patch for file times that was broken in + 12.19 (however directory times will not yet handle DST properly) +
+ +Feb. 23, 2021 - Version 12.20 +
    +
  • Added ability to write some Microsoft Xtra tags in MOV/MP4 videos +
  • Added two new Canon LensType values (thanks Norbert Wasser) +
  • Added a new Nikon LensID +
  • Fixed problem reading FITS comments that start before column 11 +
+ +Feb. 18, 2021 - Version 12.19 +
    +
  • Added -list_dir option +
  • Added the "ls-l" Shortcut tag +
  • Extract Comment and History from FITS files +
  • Enhanced FilePermissions to include device type (similar to "ls -l") +
  • Changed the name of Apple ContentIdentifier tag to MediaGroupUUID + (thanks Neal Krawetz) +
  • Fixed a potential "substr outside of string" runtime error when reading + corrupted EXIF +
  • Fixed edge case where NikonScanIFD may not be copied properly when copying + MakerNotes to another file +
  • API Changes: +
      +
    • Added ability to read/write System tags of directories +
    • Enhanced GetAllGroups() to support family 7 and take optional ExifTool + reference +
    • Changed QuickTimeHandler option default to 1 +
    +
+ +Feb. 9, 2021 - Version 12.18 +
    +
  • Added a new SonyModelID +
  • Decode a number of Sony tags for the ILCE-1 (thanks Jos Roost) +
  • Decode a couple of new Canon tags (thanks LibRaw) +
  • Patched to read differently formatted UserData:Keywords as written by iPhone +
  • Patched to tolerate out-of-order Nikon MakerNote IFD entries when obtaining + tags necessary for decryption +
  • Fixed a few possible Condition warnings for some NikonSettings tags +
+ +Feb. 3, 2021 - Version 12.17 +
    +
  • Added a new Canon FocusMode value +
  • Added a new FujiFilm FilmMode value +
  • Added a number of new XMP-crs tags (thanks Herb) +
  • Decode a new H264 MDPM tag +
  • Allow non-conforming lower-case XMP boolean "true" and "false" values to be + written, but only when print conversion is disabled +
  • Improved Validate option to warn about non-capitalized boolean XMP values +
  • Improved logic for setting GPSLatitude/LongitudeRef values when writing +
  • Changed -json and -php options so the -a option is implied even without the + -g option +
  • Avoid extracting audio/video data from AVI videos when -ee -u is used +
  • Patched decoding of Canon ContinuousShootingSpeed for newer firmware + versions of the EOS-1DXmkIII +
  • Re-worked LensID patch of version 12.00 (github issue #51) +
  • Fixed a few typos in newly-added NikonSettings tags (thanks Herb) +
  • Fixed problem where group could not be specified for PNG-pHYs tags when + writing +
+ +Jan. 21, 2021 - Version 12.16 (production release) +
    +
  • Extract another form of video subtitle text +
  • Enhanced -ee option with -ee2 and -ee3 to allow parsing of the H264 video + stream in MP4 files +
  • Changed a Nikon FlashMode value +
  • Fixed problem that caused a failed DPX test on Strawberry Perl +
  • API Changes: + +
+ +Jan. 18, 2021 - Version 12.15 (production release) +
    +
  • Added a couple of new Sony LensType values (thanks LibRaw and Jos Roost) +
  • Added a new Nikon FlashMode value (thanks Mike) +
  • Decode NikonSettings (thanks Warren Hatch) +
  • Decode thermal information from DJI RJPEG images +
  • Fixed extra newline in -echo3 and -echo4 outputs added in version 12.10 +
  • Fixed out-of-memory problem when writing some very large PNG files under + Windows +
+ +Jan. 6, 2021 - Version 12.14 +
    +
  • Added support for 2 more types of timed GPS in video files (that makes 49 + different formats now supported) +
  • Added validity check for PDF trailer dictionary Size +
  • Added a new Pentax LensType +
  • Extract metadata from Jpeg2000 Association box +
  • Changed -g:XX:YY and -G:XX:YY options to show empty strings for non-existent + groups +
  • Patched to issue warning and avoid writing date/time values with a zero + month or day number +
  • Patched to avoid runtime warnings if trying to set FileName to an empty + string +
  • Fixed issue that could cause GPS test number 12 to fail on some systems +
  • Fixed problem extracting XML as a block from Jpeg2000 images, and extract + XML tags in the XML group instead of XMP +
+ +Dec. 24, 2020 - Version 12.13 +
    +
  • Added -i HIDDEN option to ignore files with names that start with "." +
  • Added a few new Nikon ShutterMode values (thanks Jan Škoda) +
  • Added ability to write Google GCamera MicroVideo XMP tags +
  • Add time zone automatically to most string-based QuickTime date/time tags + when writing unless the PrintConv option is disabled +
  • Decode a new Sony tag (thanks LibRaw) +
  • Changed behaviour when writing only pseudo tags to return an error and avoid + writing any other tags if writing FileName fails +
  • Print "X image files read" message even if only 1 file is read when at least + one other file has failed the -if condition +
+ +Dec. 4, 2020 - Version 12.12 +
    +
  • Added ability to geotag from DJI CSV log files +
  • Added a new CanonModelID +
  • Added a couple of new Sony LensType values (thanks LibRaw) +
  • Enhanced -csvDelim option to allow "\t", "\n", "\r" and "\\" +
  • Unescape "\b" and "\f" in imported JSON values +
  • Fixed bug introduced in 12.10 which generated a "Not an integer" warning + when attempting to shift some QuickTime date/time tags +
  • Fixed shared-write permission problem with -@ argfile when using -stay_open + and a filename containing special characters on Windows +
+ +Nov. 27, 2020 - Version 12.11 +
    +
  • Added -csvDelim option +
  • Added new Canon and Olympus LensType values (thanks LibRaw) +
  • Added a warning if ICC_Profile is deleted from an image (github issue #63) +
  • EndDir() function for -if option now works when -fileOrder is used +
  • Changed FileSize conversion to use binary prefixes since that is how the + conversion is currently done (eg. MiB instead of MB) +
  • Patched -csv option so columns aren't resorted when using -G option and one + of the tags is missing from a file +
  • Fixed incompatiblity with Google Photos when writing UserData:GPSCoordinates + to MP4 videos +
  • Fixed problem where the tags available in a -p format string were limited to + the same as the -if[NUM] option when NUM was specified +
  • Fixed incorrect decoding of SourceFileIndex/SourceDirectoryIndex for Ricoh + models +
+ +Nov. 12, 2020 - Version 12.10 +
    +
  • Added -validate test for proper TIFF magic number in JPEG EXIF header +
  • Added support for Nikon Z7 LensData version 0801 +
  • Added a new XMP-GPano tag +
  • Decode ColorData for the Canon EOS 1DXmkIII (thanks LibRaw) +
  • Decode more tags for the Sony ILCE-7SM3 (thanks Jos Roost) +
  • Automatically apply QuickTimeUTC option for CR3 files +
  • Improved decoding of XAttrMDLabel from MacOS files +
  • Ignore time zones when writing date/time values and using the -d option +
  • Enhanced -echo3 and -echo4 options to allow exit status to be returned +
  • Changed -execute so the -q option no longer suppresses the "{ready}" message + when a synchronization number is used (eg. -execute123) +
+ +Oct. 29, 2020 - Version 12.09 +
    +
  • Added ability to copy CanonMakerNotes from CR3 images to other file types +
  • Added read support for ON1 presets file (.ONP) +
  • Added two new CanonModelID values +
  • Added trailing "/" when writing QuickTime:GPSCoordinates +
  • Added a number of new XMP-crs tags +
  • Added a new Sony LensType (thanks Jos Roost) +
  • Added a new Nikon Z lens (thanks LibRaw) +
  • Added a new Canon LensType +
  • Decode ColorData for Canon EOS R5/R6 +
  • Decode a couple of new HEIF tags +
  • Decode FirmwareVersion for Canon M50 +
  • Improved decoding of Sony CreativeStyle tags (thanks Jos Roost) +
  • Improved parsing of Radiance files to recognize comments +
  • Renamed GIF AspectRatio tag to PixelAspectRatio +
  • Patched EndDir() feature so subdirectories are always processed when -r is + used (previously, EndDir() would end processing of a directory completely) +
  • Yet another tweak to the EventTime formatting rules (also allow time-only + values with fractional seconds and a time zone) +
  • Avoid loading GoPro module unnecessarily when reading MP4 videos from some + other cameras +
  • Fixed problem with an incorrect naming of CodecID tags in some MKV videos +
  • Fixed verbose output to avoid "adding" messages for existing flattened XMP + tags +
+ +Oct. 15, 2020 - Version 12.08 +
    +
  • Added read support for MacOS "._" sidecar files +
  • Added a new Sony LensType (thanks Jos Roost) +
  • Recognize Mac OS X xattr files +
  • Extract ThumbnailImage from MP4 videos of more dashcam models +
  • Improved decoding of a number of Sony tags (thanks Jos Roost) +
  • Fixed problem where the special -if EndDir() function didn't work properly + for directories after the one in which it was initially called +
  • Patched to read DLL files which don't have a .rsrc section (thanks Hank) +
  • Patched to support new IGC date format when geotagging +
  • Patched to read DLL files with an invalid size in the header +
+ +Oct. 2, 2020 - Version 12.07 +
    +
  • Added support for GoPro .360 videos +
  • Added some new Canon RF and Nikkor Z lenses (thanks LibRaw) +
  • Added some new Sony LensType and CreativeStyle values and decode some + ILCE-7C tags (thanks Jos Roost) +
  • Added a number of new Olympus SceneMode values (thanks Herb) +
  • Added a new Nikon LensID +
  • Decode more timed metadata from Insta360 videos (thanks Thomas Allen) +
  • Decode timed GPS from videos of more Garmin dashcam models +
  • Decode a new GoPro video tag +
  • Reformat time-only EventTime values when writing and prevent arbitrary + strings from being written +
  • Patched to accept backslashes in SourceFile entries for -csv option +
+ +Sept. 11, 2020 - Version 12.06 +
    +
  • Added read support for Lyrics3 metadata (and fixed problem where APE + metadata may be ignored if Lyrics3 exists) +
  • Added a new Panasonic VideoBurstMode value (thanks Klaus Homeister) +
  • Added a new Olympus MultipleExposureMode value +
  • Added a new Nikon LensID +
  • Added back conversions for XMP-dwc EventTime that were removed in 12.04 with + a patch to allow time-only values +
  • Decode GIF AspectRatio +
  • Decode Olympus FocusBracketStepSize (thanks Karsten) +
  • Extract PNG iDOT chunk in Binary format with the name AppleDataOffsets +
  • Process PNG images which do not start with mandatory IHDR chunk +
+ +Aug. 24, 2020 - Version 12.05 +
    +
  • Added a new Panasonic SelfTimer value (thanks Herb) +
  • Decode a few more DPX tags (thanks Harry Mallon) +
  • Extract AIFF APPL tag as ApplicationData +
  • Fixed bug writing QuickTime ItemList 'gnre' Genre values +
  • Fixed an incorrect value for Panasonic VideoBurstResolution (thanks Herb) +
  • Fixed problem when applying a time shift to some invalid makernote date/time + values +
+ +Aug. 10, 2020 - Version 12.04 +
    +
  • Added read support for Zeiss ZISRAW CZI files +
  • Added some new values for a couple of Olympus tags (thanks Sebastian) +
  • Decode a number of new tags for the Sony ILCE-7SM3 (thanks Jos Roost) +
  • Removed formatting restrictions on XMP-dwc:EventTime to allow a time-only + value to be written +
  • Moved new QuckTime ItemList tags added in version 12.02 to the proper group + (they were incorrectly added to the Keys group) +
  • Improved QuickTime -v3 output to show default language codes +
  • Patched -lang option to work for the values of somet tags with coded + translations +
  • Patched the format of a number of QuickTime tags when writing for improved + compatibility with iTunes and AtomicParsley +
  • Patched to write a default QuickTime language code of 0x0000 (null) instead + of 0x55c4 ('und') +
+ +July 29, 2020 - Version 12.03 +
    +
  • Added family 7 group names to allow tag ID's to be specified when reading + and writing +
  • Fixed a couple of typos in tag values (thanks Herb) +
  • API Changes: + +
  • Internal Changes: +
      +
    • Changed Composite tag ID's to use "-" instead of "::" as a separator +
    +
+ +July 27, 2020 - Version 12.02 +
    +
  • Added support for a number of new QuickTime ItemList tags +
  • Added support for writing XMP-xmp:RatingPercent +
  • Added a new Sony LensType (thanks Jos Roost and LibRaw) +
  • Added a new Pentax LensType (thanks James O'Neill) +
  • Decode barcodes from Ricoh APP5 RMETA segment +
  • Decode a few new QuickTime tags written by Ricoh and Garmin cameras +
  • Decode timed GPS from Sony A7R IV MP4 videos +
  • Decode timed GPS from 70mai dashcam videos +
  • Decode a few new Panasonic tags (thanks Klaus Homeister) +
  • Decode altitude and more accurate latitude/longitude from Transcend Driver + Pro 230 MP4 videos +
  • Improved decoding of some Canon EOS 1DXmkIII custom functions +
  • Allow integer QuickTime TrackNumber and DiskNumber values +
  • Relax validity check of QuickTime:ContentCreateDate when writing with -n +
  • Removed "Com" from the start of some unknown QuickTime ItemList tag names +
  • Patched CanonCustom decoding for bug in Canon EOS-1DX firmware +
  • Changed QuickTime CleanAperture tags decode as signed rationals +
+ +June 24, 2020 - Version 12.01 +
    +
  • Added a new NEFCompression value (thanks Warren Hatch) +
  • Added a new Sony LensType (thanks Jos Roost) +
  • Decode timed GPS from Rove Stealth 4K dashcam videos +
  • Fixed bug which would corrupt TIFF images with 16-bit image data offsets + when writing (these are very rare) +
+ +June 11, 2020 - Version 12.00 (production release) +
    +
  • Added two new Olympus LensTypes (thanks Don Komarechka for one) +
  • Added two new Sony LensType values (thanks Jos Roost) +
  • Added a few new Nikon LensID's (thanks Mathieu Carbou) +
  • Added support for the Sony ZV-1 (thanks Jos Roost) +
  • Added a new CanonModelID (thanks Jos Roost) +
  • Added missing MimeType values for HEICS and HEIFS files +
  • Added definitions for a number of new XMP-crs tags +
  • Recognize WOFF and WOFF2 font files +
  • Decode streaming GPS from Roadhawk, EEEkit and 360Fly MP4 videos +
  • Decode a number of new tags for the Nikon D6 (thanks Warren Hatch) +
  • Decode a couple more AF tags for the D500/D850 +
  • Decode a number of new Panasonic tags +
  • Improved Composite LensID logic (thanks Matt Stancliff) +
  • Enhanced -v option to state when a directory has 0 entries +
  • Removed a couple of incorrect Validate warnings for bilevel TIFF images +
  • Drop ContrastCurve tag when copying from NEF to JPEG +
  • Changed -csv output to add "Unknown" group name to column headings for + missing tags when -f and -G options are used +
  • Patched to support new XMP LensID format for Nikon cameras as written by + Apple Photos (thanks Mattsta) +
  • Fixed problem extracting metadata from Sigma DP2 Quattro X3F files +
  • Fixed End() and EndDir() functions so they work when writing and when the -v + option is used +
  • Fixed problem recognizing some PGM files +
  • Fixed bug in offsets for some Photoshop information in -v3 output +
  • Fixed problem writing a list containing empty elements inside an XMP + structure +
  • API Changes: + +
+ +May 11, 2020 - Version 11.99 +
    +
  • Added a new Nikon LensID (thanks Mykyta Kozlov) +
  • Added a new Canon LensType +
  • Added a newn PentaxModelID +
  • Decode a few new QuickTime tags +
  • Decode new ID3 Grouping tag +
  • Decode a few more MinoltaRaw tags (thanks LibRaw) +
  • Fixed runtime warning which could occur when reading corrupted RTF files +
  • Fixed another potential pitfall in M2TS Duration calculation +
  • Fixed problem extracting some unknown QuickTime:Keys tags +
  • Fixed problem decoding Nikon D850 orientation tags +
  • Fixed bug where TIFF image data may not be padded to an even number of bytes +
+ +May 1, 2020 - Version 11.98 +
    +
  • Added a new Nikon LensID (thanks Warren Hatch) +
  • Added a new Sony LensType (thanks LibRaw) +
  • Added a new Canon LensType +
  • Patched to extract EXIF with an "Exif\0\0" header from WebP images +
  • Enhanced -efile option and added to the documentation +
  • Minor tweak to -htmlDump output (disallow locking of empty selection) +
  • Fixed problem determining Duration of some M2TS videos +
+ +Apr. 27, 2020 - Version 11.97 +
    +
  • Added experimental -efile option (undocumented) +
  • Decode NMEA GGA sentence from streaming GPS of some dashcam videos +
+ +Apr. 24, 2020 - Version 11.96 +
    +
  • Decode streaming GPS from Lucas LK-7900 Ace AVI videos +
  • Changed new Exit/ExitDir function names to End/EndDir +
  • Fixed inconsistencies when using "-use mwg" together with the -wm option +
+ +Apr. 23, 2020 - Version 11.95 +
    +
  • Added Exit() and ExitDir() functions for use in -if conditions (NOTE: these + function names changed to End() and EndDir() in ExifTool 11.96) +
  • Enhanced -geotag feature to support a more flexible input CSV file format +
  • Enhanced -if and API Filter options to allow access to ExifTool object via + $self +
  • Fixed problem reading HEIC Exif with a missing header +
+ +Apr. 17, 2020 - Version 11.94 +
    +
  • Added support for QuickTime ItemList:GPSCoordinates +
  • Added additional Validate test for overlapping EXIF values +
  • Added a new Sony LensType (thanks Jos Roost) +
  • Added a new Nikon LensID +
  • Decode a few more Nikon tags (thanks Warren Hatch) +
  • Decode Pentax ShutterType +
  • Changed color of locked highlighted selection in -htmlDump output +
  • Fixed problem reading PDF files written by Microsoft Print-to-PDF +
  • Fixed problem where -X output would produce invalid XML for MP4 files + containing an HTCTrack +
+ +Apr. 3, 2020 - Version 11.93 +
    +
  • Added new config file to the distribution for writing Pix4D XMP-Camera tags + (config_files/pix4d.config) +
  • Added support for the DOSCyrillic (cp866) character set +
  • Added IO::String to the Windows EXE version +
  • Improved identification of Canon RF lenses (thanks LibRaw) +
  • Enhanced -htmlDump output to add "File offset" entry for EXIF tags and + ability lock highlighted selection by clicking the mouse +
  • Enhanced -srcfile option to generate OriginalFileName and OriginalDirectory + UserParam tags +
  • Patched HEIC writer to add missing pitm box if necessary +
  • Fixed problem adding back EXIF after deleting it from HEIC file +
  • Fixed minor problem with incorrect number of bytes being reported for + invalid header in corrupt files +
  • API Changes: +
      +
    • Enhanced UserParam option to allow parameters to be extracted as if + they were normal tags +
    +
+ +Mar. 19, 2020 - Version 11.92 +
    +
  • Added a new Nikon LensID (thanks Wolfgang Exler) +
  • Decode a few new Leica tags (thanks Tim Gray) +
  • Decode AccelerometerData from Samsung Gear 360 videos +
  • Fixed a couple of problems decoding timed GPS metadata from NextBase dashcam + videos +
  • Fixed problem where -X option could produce invalid XML when reading + corrupted XMP +
+ +Mar. 5, 2020 - Version 11.91 +
    +
  • Added undocumented -xpath option for use by alternate Windows version +
  • Decode a couple of new Panasonic tags +
  • Documented -ec option (available since version 11.54) +
  • Reverted -htmlDump fix of 11.90 because it broke more than it fixed, and + instead applied a targeted patch to fix this problem for RW2 files +
+ +Mar. 3, 2020 - Version 11.90 +
    +
  • Added a new Sony LensType (thanks LibRaw and Jos Roost) +
  • Added two new Olympus LensType values +
  • Added a new Canon LensType +
  • Added some new Canon RecordMode values +
  • Added some new QuickTime GeneralProfileIDC values +
  • Added new values for a couple of FujiFilm tags +
  • Added a number of new QuickTime GenreID values +
  • Decode Nikon Z6/Z7 phase-detect AF points (thanks Andy Dragon) +
  • Patched to avoid possible "Undefined subroutine" error in MacOS 10.15 +
  • Fixed incorrect offsets in -htmlDump output for some file types +
+ +Feb. 25, 2020 - Version 11.89 +
    +
  • Added support for Exif 2.32 for XMP +
  • Recognize the HIF file extension +
  • Improved verbose output for QuickTime iref items +
  • Patched to create new GPS metadata in Canon CR3 images using a default byte + order that is the same as existing EXIF boxes +
  • Patched to add missing newline that could occur in XMP with the API Compact + Shorthand option +
+ +Feb. 20, 2020 - Version 11.88 +
    +
  • Added write support for new Google depth-map XMP tags +
  • Added config_files/depthmap.config to the distribution +
  • Added minor error when attempting to write FFF images due to incompatibility + with Hasselblad Phocus software +
  • Patched to avoid "Invalid iloc offset size" error when writing some + QuickTime-based files +
  • Fixed incorrect ColumnCount for CSV files +
  • Fixed various spelling errors (thanks Jens Schleusener) +
  • Fixed bug writing QuickTime:Rotation in HEIC files +
+ +Feb. 13, 2020 - Version 11.87 +
    +
  • Added read support for CSV files +
  • Added "--" option to indicate the end of options +
  • Added ability to read/write/copy/delete the JPEG trailer as a block +
  • Added new Olympus CameraType and LensType values (thanks LibRaw) +
  • Decode a few more FujiFilm tags +
  • Enhanced -fast option (API FastScan) to bypass PNG CRC validation when + writing +
+ +Feb. 4, 2020 - Version 11.86 +
    +
  • Added support for DNG version 1.5 +
  • Added config_files/acdsee.config to the full distribution (thanks StarGeek) +
  • Added a new Sony LensType (thanks Jos Roost and LibRaw) +
  • Decode two more bits from Nikon LensType (thanks LibRaw) +
  • Decode QuickTime MovieFragmentSequence +
  • Patched HEIC writer to add missing iref box if necessary +
  • Fixed typo in a Canon LensType value +
  • API Changes: +
      +
    • Patched ImageInfo() to recognize a stringified object as a file name +
    +
+ +Jan. 28, 2020 - Version 11.85 (production release) +
    +
  • Added a new Sony LensType (thanks Jos Roost) +
  • Added a new Olympus CameraType (thanks LibRaw) +
  • Added a two new Pentax LensType values +
  • Added a new FujiFilm FocusMode +
  • Decode timed GPS from Akaso dashcam MOV videos +
  • Decode Insta360 trailer from INSP images and made Insta360 a deletable group +
  • Patched kml.fmt file to limit maximum image size (thanks Fedor Kotov) +
  • Fixed problem decoding values from Leica M10 and S maker notes +
+ +Jan. 10, 2020 - Version 11.84 +
    +
  • Decode accelerometer data from timed metadata of more dashcam videos +
  • Decode Canon G9 white balance tags (thanks LibRaw) +
  • Recognize INSP files +
+ +Jan. 9, 2020 - Version 11.83 +
    +
  • Added a couple of new XMP-crs tags (thanks Herb) +
  • Fixed bug introduced in 11.82 with the -php -D output +
  • Fixed problem where some flattened XMP tags could be written when they + should be avoided +
+ +Jan. 8, 2020 - Version 11.82 +
    +
  • Added a new Canon LensType +
  • Added a new CanonModelID (thanks LibRaw) +
  • Added ability to process SubDirectories in QuickTime Keys tags +
  • Removed minor error when writing PDF 2.0 files (github issue #30) +
  • Fixed problem where trailing null bytes were removed from binary values in + the -php output when the -b option was used +
+ +Jan. 2, 2020 - Version 11.81 +
    +
  • Added a new Nikon LensID +
  • Added two new CanonModelID's (thanks LibRaw) +
  • Decode AVIF AV1 configuration record +
  • Changed names of QuickTime MovieData tags to "MediaData" +
  • Patched to use 4-digit years in Time::Local calls +
  • Patched Composite sub-second date/time tags to do additional validation of + source EXIF date/time tags before adding sub seconds +
  • Fixed problem where -json output could produce invalid JSON when -struct was + used and the structure field names contained special characters (github + issue #32) +
  • Fixed spelling in a Panasonic SceneMode value (thanks Hubert) +
+ +Dec. 17, 2019 - Version 11.80 +
    +
  • Added a new Canon LensType +
  • Added a new Nikon Z LensID (thanks LibRaw) +
  • Added a few new Sony LensType values (thanks Jos Roost) +
  • Attempt to improve reliability of Samsung DepthMapWidth/Height decoding +
  • Updated a number of Canon-mount Tamron lens names to include the Tamron + model number +
  • Patched MOV/MP4 writer to allow a small amount of garbage at the end of a + file to be deleted when writing with the -m option +
  • Fixed bug where some Composite tags may not have taken priority over other + tags as they should have +
+ +Dec. 12, 2019 - Version 11.79 +
    +
  • Added support for AVIF files +
  • Added new Canon, Sigma and Sony LensType values (thanks LibRaw) +
  • Made PDF 2.0 writable at your own risk with the -m option (github issue #30) +
  • Enhanced -validate feature to warn about duplicate languages in an XMP + lang-alt list +
  • Fixed inconsistency between documentation and ExifTool capabilities for + "Writable" status of some tags +
+ +Dec. 5, 2019 - Version 11.78 +
    +
  • Added a new Nikon LensID (thanks Chris) +
  • Added two new FujiFilm SceneRecognition values +
  • Patched to avoid crash in Windows when writing a negative epoch time using + the "-d %s" option +
  • Fixed problem editing MIE tags when using the "-wm w" option +
+ +Nov. 27, 2019 - Version 11.77 +
    +
  • Added a new Nikon LensID (thanks Joe Schönberg) +
  • Added a number of new Olympus LensType values (thanks LibRaw) +
  • Added a new Canon LensType +
  • Decode timed GPS from Ambarella A12 dash cam MP4 videos +
  • Decode a number of new Sigma tags (thanks LibRaw) +
  • Decode a couple of new PanasonicRaw tags (thanks LibRaw) +
  • Enhanced -fileOrder option to add -fast feature +
+ +Nov. 12, 2019 - Version 11.76 +
    +
  • Added support for the Sony ILCE-9M2 (thanks Jos Roost) +
  • Added a couple of new XMP-GCamera tags +
  • Added MIMEType values for some formats that previously reported + "application/unknown" +
  • Enhanced -geotag feature to write pitch to CameraElevationAngle if available +
  • Improved determination of MIMEEncoding for TXT files +
+ +Nov. 4, 2019 - Version 11.75 +
    +
  • Added ability to read some basic characteristics of TXT files +
  • Added kml_track.fmt to the fmt_files of the full distribution +
  • Added built-in support for decoding GPS from the four video subtitle text + formats that were previously handled by separate config files, and removed + these config files from the distribution +
  • Derive GPSDateTime from CreateDate and SampleTime if not already available + when extracting timed GPS metadata from QuickTime-format videos +
  • Changed family 2 groups of some Extra tags +
+ +Oct. 29, 2019 - Version 11.74 +
    +
  • Added support for new XMP IPTC Extension version 1.5 tags +
  • Added a new Nikon LensID (thanks LibRaw) +
  • Decode GPS track from Auto-Vox dashcam MOV videos +
  • Improved Russian translations (thanks Andrei Korzhyts and Alexander) +
  • Enhanced convert_regions.config to support new IPTC Extension 1.5 ImageRegion +
  • Changed the way the FlatName element works when used in a structure element + (the structure name is now added as a prefix to the flattened tag name) +
  • Patched gpx.fmt and gpx_wpt.fmt to support sub-seconds in GPSDateTime value +
+ +Oct. 23, 2019 - Version 11.73 +
    +
  • Decode timed metadata from Parrot drone videos +
  • Patched dji.config file to properly handle time zones +
  • Fixed bug which caused runtime error when reading timed metadata from Cobra + Dash Cam AVI videos +
+ +Oct. 22, 2019 - Version 11.72 +
    +
  • Added warning messages for corrupted Photoshop document data +
  • Added a new Olympus CameraType +
  • Added a new Canon LensType +
  • Decode more Sigma tags +
  • Improved Russian translations (thanks Alexander) +
  • Updated decoding of some CanonCustom settings for recent models +
  • Documented DNG OpcodeList values +
+ +Oct. 16, 2019 - Version 11.71 +
    +
  • Added a new Sony LensType (thanks Jos Roost) +
  • Added a few new Nikon Z LensID's +
  • Added a simple print conversion for DNG OpcodeList tags (note that due to + this, these tags must now be copied using the -n option) +
  • Fixed problems determining some video parameters for DV files +
  • Changed behaviour of -sep option when writing empty list items +
  • API Changes: + +
+ +Oct. 10, 2019 - Version 11.70 (production release) +
    +
  • Added a new CanonModelID (thanks Laurent Clévy) +
  • Improved identification of Office Open XML files (github issue #27) +
  • Removed RAF version check when writing FujiFilm RAF files +
  • Limited the number of accelerometer records that ExifTool will read by + default with the -ee option from INSV files to avoid excessive processing + times and memory usage +
  • Patched Windows version to allow reading of shared files with Unicode names + (thanks Eriksson) +
  • Patched to avoid converting some bad GPS coordinates (thanks Csaba Toth) +
  • Fixed verbose output to include YCbCrSubSampling for JPEG files +
  • Fixed conversion and group names for the new FujiFilm tag added in 11.68 +
  • Fixed format of GeoTiffDirectory and GeoTiffDoubleParams when writing +
+ Oct. 2, 2019 - Version 11.69
  • Fixed bug introduced in version 11.66 where the sign was lost when writing @@ -758,8 +1541,8 @@
  • Added a new Canon LensType (thanks LibRaw)
  • Minor improvements to verbose dump of streaming GPS metadata
  • Reverted change of version 10.71 which resulted in Windows not recognizing - PNG CreationTime as written by ExifTool (added this feature to the - StrictDate API option instead) + PNG CreationTime as written by ExifTool (added this feature to the API + StrictDate option instead)
  • Improved decoding of Nikon CropHiSpeed (thanks LibRaw)
  • Improved -fast option to reduce memory usage when reading JPG, PNG, QuickTime-based and RIFF-based files via a sequential stream @@ -886,7 +1669,7 @@ June 13, 2018 - Version 11.02
    • Added support for a different format of Apple iWorks files -
    • Added undocumented FixCorruptedMOV API option to allow fixing MOV videos +
    • Added undocumented API FixCorruptedMOV option to allow fixing MOV videos with multiple 'mdat' atoms which were corrupted by ExifTool
    • Decode more QuickTime tags
    • Decode more PanasonicRaw tags (thanks Klaus Homeister) @@ -2208,7 +2991,7 @@
    • Added a new Canon LensType (thanks Norbert Wasser)
    • Added a few new QuickTime GenreID values (thanks François Bonzon)
    • Decode a new Pentax tag -
    • Leica programmers should all be ashamed of the complete shambles of metadata +
    • Leica programmers should all be ashamed of the complete shambles of metadata they have created
    • Minor change to the name of a Sigma lens for Canon
    • Improved recognition of Pentax lens adapter @@ -9777,7 +10560,7 @@ Apr. 6, 2004 - Version 3.36
      • Added support for Sanyo and Minolta maker notes -
      • Added skeleton for interpeting Sony maker notes +
      • Added skeleton for interpreting Sony maker notes
      • Interpret Pentax PrintIM
      diff -Nru libimage-exiftool-perl-11.88/html/config.html libimage-exiftool-perl-12.40+dfsg/html/config.html --- libimage-exiftool-perl-11.88/html/config.html 2020-02-12 13:19:15.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/config.html 2021-09-22 18:09:05.000000000 +0000 @@ -23,12 +23,12 @@ # # To activate this file, rename it to ".ExifTool_config" and # place it in your home directory or the exiftool application -# directory. (On Windows and Mac systems this must be done via -# the command line since the GUI's don't allow filenames to begin -# with a dot. Use the "rename" command in Windows or "mv" on the -# Mac.) This causes ExifTool to automatically load the file when -# run. Your home directory is determined by the first defined of -# the following environment variables: +# directory. (On Mac and some Windows systems this must be done +# via the command line since the GUI's may not allow filenames to +# begin with a dot. Use the "rename" command in Windows or "mv" +# on the Mac.) This causes ExifTool to automatically load the +# file when run. Your home directory is determined by the first +# defined of the following environment variables: # # 1. EXIFTOOL_HOME # 2. HOME @@ -141,7 +141,7 @@ # Example 12. PNG:NewPngTag1 NewPngTag1 => { }, # Example 13. PNG:NewPngTag2 - NewPngTag2 => { }, + NewPngTag2 => { iTXt => 1 }, # (force this tag to be written as iTXt) # Example 14. PNG:NewPngTag3 NewPngTag3 => { }, }, diff -Nru libimage-exiftool-perl-11.88/html/data_members.html libimage-exiftool-perl-12.40+dfsg/html/data_members.html --- libimage-exiftool-perl-11.88/html/data_members.html 2019-12-17 13:14:43.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/data_members.html 2021-11-16 16:10:44.000000000 +0000 @@ -64,7 +64,7 @@ DemoteErrorsErrors are demoted to warnings and this count is incremented if non-zero to begin with -DIR_COUNTHash reference for counters of various types of directorys (ICC, IPTC,...) +DIR_COUNTHash reference for counters of various types of directories (ICC, IPTC,...) DIR_NAMEName of directory currently being processed @@ -85,9 +85,17 @@ writing (Note: entry may exist but be undefined for top-level directory!) +EndUsed by application to signal end of processing + +EndDirUsed by application to signal end of the current directory + ESCAPE_PROCRoutine for XML or HTML escaping if Escape option is set -EXCL_TAG_LOOKUPHash for looking up excluded tags (keys are lower case tag names) +EXCL_TAG_LOOKUPHash for looking up excluded tags (keys are lower case tag names without group) + +EXCL_XMP_LOOKUPHash for looking up excluded "XMP-xxx:yyy" tags (keys are lower case including group). + "XMP-xxx" may be any ExifTool family 1 XMP group name, or "XMP-all" for any XMP group. "yyy" may + be any XMP property name (NOT ExifTool tag name), or "all" for all tags in a group EXIF_DATAEXIF data block (valid while reading from file) diff -Nru libimage-exiftool-perl-11.88/html/ExifTool.html libimage-exiftool-perl-12.40+dfsg/html/ExifTool.html --- libimage-exiftool-perl-11.88/html/ExifTool.html 2020-02-20 14:12:56.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/ExifTool.html 2022-01-12 22:51:53.000000000 +0000 @@ -170,7 +170,7 @@
      2-N) [optional] list of tag names to find (or tag list reference or options hash reference, see below) -ReturnsReference to hash of tag key/value pairs +ReturnsReference to hash of tag-key/value pairs

      Examples:

      @@ -303,12 +303,12 @@

      Return Value:

      -

      ImageInfo returns a reference to a hash of tag -key/value pairs. The tag keys are identifiers -- essentially case-sensitive tag -names with an appended instance number if multiple tags with the same name were -extracted from the image. Many of the ExifTool functions require a tag key as -an argument. Use GetTagName to get the tag name for a -given tag key. Note that the case of the tag names may not be the same as +

      ImageInfo returns a reference to a hash of +tag-key/value pairs. The tag keys are identifiers -- essentially case-sensitive +tag names with an appended instance number if multiple tags with the same name +were extracted from the image. Many of the ExifTool functions require a tag key +as an argument. Use GetTagName to get the tag name +for a given tag key. Note that the case of the tag names may not be the same as requested.

      Values of the returned hash are usually simple scalars, but a scalar @@ -380,6 +380,8 @@ my $exifTool = new Image::ExifTool; +

      One ExifTool object may be used to process many files, so creating multiple +ExifTool objects usually is not necessary.

      Note that ExifTool uses AUTOLOAD to load non-member methods, so any class using Image::ExifTool as a base class must define an AUTOLOAD which calls Image::ExifTool::DoAutoLoad(). ie)

      @@ -397,13 +399,14 @@

      Options

      Get/set ExifTool options. This function can be called to set the default -options for an ExifTool object. Options set this way are in effect for -all function calls but may be overridden by options passed as arguments -to some functions. Option names are not case sensitive.

      +options for an ExifTool object. Options set this way are in effect for all +function calls but may be overridden by options passed as arguments to some +functions. Option names are not case sensitive.

      The default option values may be changed by defining a %Image::ExifTool::UserDefined::Options hash. See the -ExifTool_config file in the full ExifTool -distribution for examples.

      +ExifTool_config file in the full ExifTool distribution +for examples. A default of undef has the same behaviour as a value of 0 for +numerical options.

      + + + @@ -495,13 +506,14 @@ Note that 'NoPadding' effects only embedded XMP since padding is never written for stand-alone XMP files. Also note that 'OneDesc' is not recommended when writing XMP larger than 64 kB to a JPG file because it interferes with ExifTool's technique - of splitting off the large description elements into the extended XMP. Case is not - significant for any of these options. + - + @@ -323,8 +336,8 @@ - - + +
      PrototypeOptions($$;@)
      Inputs0) ExifTool object reference @@ -427,6 +430,13 @@ are not necessarily extracted unless this option is set or the tag is specifically requested by name. 0 or 1undef
      BlockExtractFlag to extract some directories + (mentioned in the Tag Name documentation) as a block. + + + +
      0 =Extract as block only if tag specified by name
      1 =Extract as block, and extract contained tags
      2 =Extract as block without contained tags
      undef
      ByteOrderThe byte order for newly created EXIF segments when writing. Note that if EXIF information already exists, the existing order is maintained. If ByteOrder is not defined, then the order of the maker notes is @@ -455,6 +465,7 @@
      Thai(cp874)
      DOSLatinUS(cp437)
      DOSLatin1(cp850)
      DOSCyrillic(cp866)
      MacRoman(cp10000, Mac, Roman)
      MacLatin2(cp10029)
      MacCyrillic(cp10007)
      - - - + of splitting off large rdf:Description elements into the extended XMP. Case is not + significant for any of these options. Some options have aliases (shown in brackets). + @@ -1097,8 +1142,8 @@ WriteInfo:

      ByteOrder, Charset, CharsetEXIF, CharsetFileName, CharsetIPTC, Compact, -Compress, FixBase, IgnoreMinorErrors, Password, QuickTimeHandler, Verbose -and WriteMode. +Compress, FixBase, IgnoreMinorErrors, NoMultiExif, NoPDFList, Password, +QuickTimeHandler, QuickTimePad, Verbose and WriteMode.

      GetTagList

      @@ -1257,8 +1302,8 @@ to using a Group option argument. Also, a '#' may be appended to the tag name (eg. 'EXIF:Orientation#'), with the same effect as setting Type to 'ValueConv'. Wildcards ('*' and - '?') may be used in the tag name to assign multiple tags - simultaneously A tag name of '*' is special when deleting + '?') may be used in the tag name to assign or delete multiple + tags simultaneously. A tag name of '*' is special when deleting information, and will delete an entire group even if some individual tags in the group are not writable, but only if a single family 0 or 1 group name is specified (otherwise, the tags are deleted individually). Use @@ -1311,7 +1356,7 @@ - + - + +
      NoPadding =Avoid 2 kB of recommended padding at end of XMP
      NoIndent =Avoid spaces to indent lines for readability
      NoNewline =Avoid unnecessary newlines
      + + + - + @@ -566,8 +578,12 @@ - + metadata in videos, and the resource fork of Mac OS files. A setting of 2 + also causes the H264 video stream in MP4 files to be parsed until the first + SEI message is decoded, or 3 to parse the entire H264 stream in MP4 videos + and the entire M2TS file to look for any unlisted program containing GPS + metadata. + - + based on the file's extension. For 5, generation of Composite tags is also + disabled (like setting Composite to 0). + + changing the value of this variable as required. The current ExifTool + object may be accessed through $self. The value is not changed if $_ is + set to undef. + changing the value of this variable as required. The current ExifTool + object may be accessed through $self. The tag is not written if $_ is + set to undef. + + @@ -733,6 +755,8 @@ expression returns undef). If not set, a minor error is issued for missing values, or the value is set to '' if IgnoreMinorErrors is set. + @@ -745,8 +769,17 @@ + Handler, but it is commonly found in samples from other software, and it has been + reported that Apple QuickTime Player and Photos.apps will ignore ItemList tags + if this is missing. + + + + the default is to not convert these times (except for Canon CR3 files, which + always use UTC times). This option also disables the autodetection of + incorrect time-zero offsets in QuickTime date/time values, and enforces a + time zero of 1904 as per the QuickTime specification. + of some additional tags as mentioned in the Tag Name documentation. - + when reading unknown XMP tags with values that look like rational numbers or dates.
      NoPadding =Avoid 2 kB of recommended padding at end of XMP (NoPad)
      NoIndent =Avoid spaces to indent lines for readability (NoSpace, NoSpaces)
      NoNewline =Avoid unnecessary newlines (NoNewlines)
      Shorthand =Use XMP Shorthand format
      OneDesc =Combine XMP properties into a single rdf:Description
      OneDesc =Combine XMP properties into a single rdf:Description (OneDescr)
      AllSpace ='NoPadding,NoIndent,NoNewline'
      AllFormat ='Shorthand,OneDesc'
      All ='AllSpace,AllFormat'
      Flag to extract information from embedded documents in EPS files, embedded EPS information and JPEG and Jpeg2000 images in PDF files, embedded MPF images in JPEG and MPO files, timed - metadata in videos, and the resource fork of Mac OS files.0 or 1undef
      0, 1, 2 or 3undef
      FastScan Flag to increase speed when reading files by avoiding extraction of some types of metadata. With this option set to 1, ExifTool will not scan to the @@ -583,23 +599,26 @@ MakerNote information, and will stop parsing at the IDAT chunk of PNG images. (By the PNG specification, metadata is allowed after IDAT, but ExifTool always writes it before because some utilities will ignore it - otherwise.) When set to 3 or 4, only pseudo system tags and FileType are + otherwise.) When set to 3 or higher, only pseudo system tags and FileType are generated. For 3, the file header is read to provide an educated guess at FileType. For 4, the file is not read at all and FileType is determined - based on the file's extension.0, 1, 2, 3 or 4undef
      0, 1, 2, 3, 4 or 5undef
      Filter Perl expression used to filter all returned tag values. Applies to PrintConv values only. List items are filtered individually. Expression to act on the value of the Perl default variable ($_), - changing the value of this variable as required. The value is not changed - if $_ is set to undef. undef
      FilterW Perl expression used to filter PrintConv values when writing. Expression to act on the value of the Perl default variable ($_), - changing the value of this variable as required. The value is not changed - if $_ is set to undef. undef
      FixBase Fix maker notes base offset. Allows values to be extracted from maker notes @@ -661,6 +680,9 @@ See GetGroup for a description of group families, and GetAllGroups for a list of available groups. undef
      HexTagIDsUse hexadecimal instead of decimal for the family 7 + group names of tags with numerical ID's.0 or 1undef
      HtmlDumpDump information in hex to a dynamic HTML web page. Option value sets a limit on the maximum block size. Output file is specified by the TextOut option. Any string, or undefundef
      NoMultiExifRaise error when attempting to write multi-segment + EXIF in a JPEG image.0 or 1undef
      NoPDFListFlag to avoid splitting PDF list-type tag values into separate items. 0 or 1undef
      QuickTimeHandlerFlag set to add an 'mdir' Handler to a newly created Meta box when adding QuickTime ItemList tags. Adobe Bridge does not add this - Handler, but it is commonly found in samples from other software, so it is - possible that this could affect the interoperability of ItemList tags.0 or 11
      QuickTimePadFlag to preserve the padding of + some QuickTime atoms when writing. QuickTime-based Canon CR3 files pad + the values of container atoms with null bytes. This padding is removed by + default when the file is rewritten, but setting this option to 1 adds + padding to preserve the original atom size if the new atom would be smaller + than the original. 0 or 1 undef
      QuickTimeUTCFlag set to assume that QuickTime @@ -754,16 +787,17 @@ extracted and from local time when written. According to the QuickTime specification date/time values should be UTC, but many digital cameras store local time instead (presumably because they don't know the time zone), so - the default is to not convert these times. This option also disables the - autodetection of incorrect time-zero offsets in QuickTime date/time values, - and enforces a time zero of 1904 as per the QuickTime specification. 0 or 1 undef
      RequestAllFlag to request all tags to be extracted. This causes some tags to be generated which normally would not be unless specifically requested (by passing the tag name to ImageInfo or ExtractInfo). May be set to 2 or 3 to enable generation - of some additional tags as mentioned in the tag name documentation. 0, 1, 2 or 3undef
      RequestTagsList of additional tag and/or group names to request in the next call to ExtractInfo. This option is @@ -851,8 +885,10 @@ PARAM is the user-defined parameter name (case insensitive). These parameters may be accessed in tag name expressions by prefixing the parameter name with a dollar sign just like normal tags, or via the API by calling Options('UserParam','PARAM'). - If called without no additional arguments, Options('UserParam') returns - a reference to the hash of all user parameters (with lower-case names). + Appending a hash tag (#) to the parameter name also causes the parameter + to be extracted as a normal tag (in the UserParam group). If called without + additional arguments, Options('UserParam') returns a reference to the + hash of all user parameters (with lower-case names). @@ -865,7 +901,7 @@
      PARAM-Get parameter
      undef-Clear UserParam hash
      { }
      ValidateFlag to perform extra validation checks +
      ValidateFlag to perform extra metadata validation checks when reading, causing extra warnings to be generated if problems are found. 0 or 1undef
      VerbosePrint verbose messages to file specified by TextOut option. @@ -893,7 +929,7 @@ MacOS XAttr Tags documentation for more information). 0 or 1undef
      XMPAutoConvFlag to enable automatic conversion - for unknown XMP tags with values that look like rational numbers or dates. 0 or 1 1
      @@ -1030,7 +1066,16 @@ to additional files without the need to call SetNewValue again.

      -

      Note that it is NOT necessary to call ExtractInfo +

      ExifTool queues all new values that are assigned via calls to +SetNewValue, then applies them to any number of files +through one or more calls to WriteInfo. These queued +values may be accessed through GetNewValue, and are +completely separate from metadata extracted from files via +ExtractInfo or ImageInfo +and accessed through GetInfo or +GetValue.

      + +

      To be clear, it is NOT necessary to call ExtractInfo or ImageInfo before WriteInfo. WriteInfo changes only metadata specified by previous calls to SetNewValue.

      @@ -1042,8 +1087,8 @@ create a file from scratch. A reference to a File::RandomAccess object is also allowed as a source, but in this case the destination is not optional.
      2) [optional] Destination file name, file reference, scalar - reference, or undef to overwrite the original file. May be '-' to write to - stdout. + reference to write to memory, or undef to overwrite the original file. May + be '-' to write to stdout.
      3) [optional] Destination file type. Ignored if a source is defined.
      NoFlatTreat flattened tags as 'unsafe'0 or 10
      NoShortcutDisables default behaviour of looking up tag in shortcuts if not found otherwise.0 or 10
      ProtectedAllow protected tags to be written
      ProtectedAllow unsafe and protected tags to be written Bitmask of tag protection levels to write: @@ -1461,7 +1506,8 @@
      0x01 =
      PrototypeGetNewValue($$)
      Inputs0) ExifTool object reference -
      1) Tag name (case sensitive, may be prefixed by family 0 or 1 group name) +
      1) Tag name (case sensitive, may be prefixed by family 0, 1 or 7 + group names, separated by colons)
      ReturnsList of new Raw tag values, or first value in list when called in scalar context. The list may be empty either if the tag @@ -1487,8 +1533,8 @@
      1) File name, file reference, or scalar reference
      2-N) [optional] List of tag names to set or options hash references. All writable tags are set if none are specified. The tag names - are not case sensitive, and may be prefixed by one or more family 0, 1 or 2 - group names with optional leading family numbers, separated by colons (eg. + are not case sensitive, and may be prefixed by one or more family 0, 1, 2 + or 7 group names with optional leading family numbers, separated by colons (eg. 'exif:iso'). A leading '-' indicates tags to be excluded (eg. '-comment'), or a trailing '#' causes the ValueConv value to be copied (same as setting the Type option to @@ -1729,7 +1775,8 @@

      Notes:

      Will not overwrite existing files. New directories are created as -necessary.

      +necessary. If the file is successfully renamed, the new file name may be +accessed via $$exifTool{NewName}.


      SetNewGroups

      Set the order of the preferred groups when adding new information. In @@ -1829,7 +1876,8 @@

      3Document Number Main, Doc1, Doc3-2
      4Instance Number Copy1, Copy2, Copy3...
      5Metadata Path eg. JPEG-APP1-IFD0-ExifIFD
      6EXIF/TIFF Format int8u, int32u, undef, string...
      6EXIF/TIFF Format int8u, int32u, undef, string
      7Tag ID ID-271, ID-rights, ID-a9aut

      Families 0 and 1 are based on the file structure, and are similar except that @@ -1870,6 +1918,15 @@

      Family 6 is currently used only for EXIF/TIFF metadata, and gives the format type of the extracted value. Generated only if the SaveFormat option is used when extracting.

      +

      Family 7 is used for tag ID's. The group names are the actual tag ID's with +a leading "ID-" string. Non-numerical tag ID's have characters other than +[-_A-Za-z0-9] converted to hex. Numerical tag ID's are returned in hex if the +HexTagIDs option is set, otherwise decimal is used. +When specifying a family 7 group name, numerical ID's may be in hex (with +leading "0x") or decimal, and non-numerical ID's may or may not have characters +other than [-_A-Za-z0-9] converted to hex. Note that unlike other group names, +the tag ID's in family 7 group names are case sensitive (but the leading "ID-" +is not).

      See GetAllGroups for lists of group names.

      Examples:

      @@ -2025,7 +2082,7 @@

      Get list of all group names in specified family.

      - @@ -2034,55 +2091,56 @@
      PrototypeGetAllGroups($)
      Inputs0) Group family number (0-4) +
      Inputs0) Group family number (0-7)
      Returns A list of all groups in the specified family in alphabetical order
      - + +
      FamilyGroup Names
      0 (Information Type)AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP4, APP5, -APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG, DV, DjVu, Ducky, -EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font, +AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP3, APP4, +APP5, APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG, DV, DjVu, +Ducky, EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font, FotoStation, GIF, GIMP, GeoTiff, GoPro, H264, HTML, ICC_Profile, ID3, IPTC, -ISO, ITC, JFIF, JPEG, JSON, Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, MIFF, -MNG, MOI, MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg, OpenEXR, -Opus, PDF, PICT, PLIST, PNG, PSP, Palm, Parrot, PanasonicRaw, PhotoCD, -PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF, RIFF, RSRC, -RTF, Radiance, Rawzor, Real, Red, SVG, SigmaRaw, Stim, Theora, Torrent, -Trailer, VCard, Vorbis, WTV, XML, XMP, ZIP +ISO, ITC, JFIF, JPEG, JSON, JUMBF, Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, +MIFF, MNG, MOI, MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg, +OpenEXR, Opus, PDF, PICT, PLIST, PNG, PSP, Palm, Parrot, PanasonicRaw, +PhotoCD, PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF, +RIFF, RSRC, RTF, Radiance, Rawzor, Real, Red, SVG, SigmaRaw, Stim, Theora, +Torrent, Trailer, UserParam, VCard, Vorbis, WTV, XML, XMP, ZIP
      1 (Specific Location) AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, AdobeDNG, Apple, Audible, -CIFF, CameraIFD, Canon, CanonCustom, CanonRaw, CanonVRD, Casio, Chapter#, -Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM, EXE, EXIF, -ExifIFD, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font, +CBOR, CIFF, CameraIFD, Canon, CanonCustom, CanonRaw, CanonVRD, Casio, +Chapter#, Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM, +EXE, EXIF, ExifIFD, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font, FotoStation, FujiFilm, FujiIFD, GE, GIF, GIMP, GPS, GeoTiff, GlobParamIFD, GoPro, GraphConv, H264, HP, HTC, HTML, HTML-dc, HTML-ncc, HTML-office, HTML-prod, HTML-vw96, HTTP-equiv, ICC-chrm, ICC-clrt, ICC-header, ICC-meas, ICC-meta, ICC-view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360, -InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JSON, JVC, Jpeg2000, -KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD, -KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lytro, M2TS, MAC, MIE-Audio, -MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, -MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient, -MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MNG, -MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS, MakerNotes, -MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft, Minolta, -MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom, NikonScan, -Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF, PICT, PNG, PNG-pHYs, PSP, -Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD, PhotoMechanic, -Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD, -Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor, -Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5, -Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, -SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD, -System, Theora, Torrent, Track#, UserData, VCalendar, VCard, Version0, -Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP-GAudio, XMP-GDepth, -XMP-GFocus, XMP-GImage, XMP-GPano, XMP-GSpherical, XMP-LImage, XMP-MP, -XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album, XMP-apple-fi, -XMP-aux, XMP-cc, XMP-cell, XMP-creatorAtom, XMP-crs, XMP-dc, XMP-dex, -XMP-digiKam, XMP-drone-dji, XMP-dwc, XMP-exif, XMP-exifEX, -XMP-expressionmedia, XMP-extensis, XMP-fpv, XMP-getty, XMP-ics, -XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-microsoft, -XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx, XMP-photomech, -XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism, XMP-prl, XMP-prm, XMP-pur, -XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM, -XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, ZIP +InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JPS, JSON, JUMBF, JVC, +Jpeg2000, KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD, +KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lyrics3, Lytro, M2TS, MAC, +MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, +MIE-Geo, MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, +MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, +MIFF, MNG, MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS, +MakerNotes, MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft, +Minolta, MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom, +NikonScan, NikonSettings, NineEdits, Nintendo, Ocad, Ogg, Olympus, OpenEXR, +Opus, PDF, PICT, PNG, PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax, +PhaseOne, PhotoCD, PhotoMechanic, Photoshop, PictureInfo, PostScript, +PreviewIFD, PrintIM, ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF, +RMETA, RSRC, RTF, Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP, +Real-RA3, Real-RA4, Real-RA5, Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, +SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, +Sony, SonyIDC, Stim, SubIFD, System, Theora, Torrent, Track#, UserData, +UserParam, VCalendar, VCard, Version0, Vorbis, WTV, XML, XMP, XMP-DICOM, +XMP-Device, XMP-GAudio, XMP-GDepth, XMP-GFocus, XMP-GImage, XMP-GPano, +XMP-GSpherical, XMP-LImage, XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, +XMP-acdsee, XMP-album, XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell, +XMP-creatorAtom, XMP-crs, XMP-dc, XMP-dex, XMP-digiKam, XMP-drone-dji, +XMP-dwc, XMP-exif, XMP-exifEX, XMP-expressionmedia, XMP-extensis, XMP-fpv, +XMP-getty, XMP-ics, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, +XMP-microsoft, XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx, +XMP-photomech, XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism, XMP-prl, +XMP-prm, XMP-pur, XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ, +XMP-xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, +ZIP, iTunes
      2 (Category) Audio, Author, Camera, Device, Document, ExifTool, Image, Location, Other, @@ -2100,7 +2158,14 @@
      6 (EXIF/TIFF Format) int8u, string, int16u, int32u, rational64u, int8s, undef, int16s, int32s, rational64s, float, double, ifd, unicode, complex, int64u, int64s, ifd64
      7 (Tag ID)ID-xxx (Where xxx is the tag ID. Numerical ID's are returned in hex with a +leading "0x" if the HexTagIDs option is set, or decimal otherwise. Characters +in non-numerical ID's which are not valid in a group name are returned as 2 +hex digits.)
      +

      Note: This function may also be called as an ExifTool member function to +allow the HexTagIDs option to be set when retrieving family 7 group names.

      Example:

       @groupList = Image::ExifTool::GetAllGroups($family);
      @@ -2118,14 +2183,14 @@
       

      Below is a current list of deletable group names.

      -
      AFCP, APP0, APP1, APP10, APP11, APP12, APP13, APP14, APP15, APP2, APP3, -APP4, APP5, APP6, APP7, APP8, APP9, Adobe, Audio, Author, CIFF, Camera, -CanonVRD, Document, Ducky, EXIF, ExifIFD, ExifTool, File, FlashPix, -FotoStation, GPS, GlobParamIFD, ICC_Profile, IFD0, IFD1, IPTC, Image, -InteropIFD, JFIF, Jpeg2000, Location, MIE, MPF, MakerNotes, Meta, MetaIFD, -NikonCapture, Other, PDF, PDF-update, PNG, PNG-pHYs, PhotoMechanic, -Photoshop, Preview, PrintIM, Printing, RMETA, RSRC, SubIFD, Time, Trailer, -Video, XML, XML-*, XMP, XMP-*
      +
      Adobe, AFCP, APP0, APP1, APP10, APP11, APP12, APP13, APP14, APP15, APP2, +APP3, APP4, APP5, APP6, APP7, APP8, APP9, Audio, Author, Camera, CanonVRD, +CIFF, Document, Ducky, EXIF, ExifIFD, ExifTool, File, FlashPix, FotoStation, +GlobParamIFD, GPS, ICC_Profile, IFD0, IFD1, Image, Insta360, InteropIFD, +IPTC, ItemList, JFIF, Jpeg2000, Keys, Location, MakerNotes, Meta, MetaIFD, +Microsoft, MIE, MPF, NikonCapture, Other, PDF, PDF-update, PhotoMechanic, +Photoshop, PNG, PNG-pHYs, Preview, PrintIM, Printing, QuickTime, RMETA, +RSRC, SubIFD, Time, Trailer, UserData, Video, XML, XML-*, XMP, XMP-*

      To schedule a group for deletion, call SetNewValue with a tag name like 'EXIF:*' and an undefined tag value.

      Deleting a family 0 or 1 group will delete the entire corresponding block of diff -Nru libimage-exiftool-perl-11.88/html/exiftool_pod.html libimage-exiftool-perl-12.40+dfsg/html/exiftool_pod.html --- libimage-exiftool-perl-11.88/html/exiftool_pod.html 2020-02-20 14:43:20.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/exiftool_pod.html 2022-02-09 12:17:57.000000000 +0000 @@ -4,7 +4,7 @@ exiftool Application Documentation - + @@ -29,7 +29,7 @@

    • DESCRIPTION
    • OPTIONS
        -
      • Option Summary
      • +
      • Option Overview
      • Option Details
        • Tag operations
        • @@ -56,6 +56,7 @@
        • RENAMING EXAMPLES
        • GEOTAGGING EXAMPLES
        • PIPING EXAMPLES
        • +
        • INTERRUPTING EXIFTOOL
        • EXIT STATUS
        • AUTHOR
        • SEE ALSO
        • @@ -77,7 +78,7 @@

          Copying

          -

          exiftool [OPTIONS] -tagsFromFile SRCFILE [-SRCTAG[>DSTTAG]...] FILE...

          +

          exiftool [OPTIONS] -tagsFromFile SRCFILE [-[DSTTAG<]SRCTAG...] FILE...

          Other

          @@ -99,46 +100,48 @@
            File Types
             ------------+-------------+-------------+-------------+------------
          -  3FR   r     | DR4   r/w/c | ITC   r     | ODP   r     | RIFF  r
          -  3G2   r/w   | DSS   r     | J2C   r     | ODS   r     | RSRC  r
          -  3GP   r/w   | DV    r     | JNG   r/w   | ODT   r     | RTF   r
          -  A     r     | DVB   r/w   | JP2   r/w   | OFR   r     | RW2   r/w
          -  AA    r     | DVR-MS r    | JPEG  r/w   | OGG   r     | RWL   r/w
          -  AAE   r     | DYLIB r     | JSON  r     | OGV   r     | RWZ   r
          -  AAX   r/w   | EIP   r     | K25   r     | OPUS  r     | RM    r
          -  ACR   r     | EPS   r/w   | KDC   r     | ORF   r/w   | SEQ   r
          -  AFM   r     | EPUB  r     | KEY   r     | OTF   r     | SKETCH r
          -  AI    r/w   | ERF   r/w   | LA    r     | PAC   r     | SO    r
          -  AIFF  r     | EXE   r     | LFP   r     | PAGES r     | SR2   r/w
          -  APE   r     | EXIF  r/w/c | LNK   r     | PBM   r/w   | SRF   r
          -  ARQ   r/w   | EXR   r     | LRV   r/w   | PCD   r     | SRW   r/w
          -  ARW   r/w   | EXV   r/w/c | M2TS  r     | PCX   r     | SVG   r
          -  ASF   r     | F4A/V r/w   | M4A/V r/w   | PDB   r     | SWF   r
          -  AVI   r     | FFF   r/w   | MAX   r     | PDF   r/w   | THM   r/w
          -  AVIF  r/w   | FITS  r     | MEF   r/w   | PEF   r/w   | TIFF  r/w
          -  AZW   r     | FLA   r     | MIE   r/w/c | PFA   r     | TORRENT r
          -  BMP   r     | FLAC  r     | MIFF  r     | PFB   r     | TTC   r
          -  BPG   r     | FLIF  r/w   | MKA   r     | PFM   r     | TTF   r
          -  BTF   r     | FLV   r     | MKS   r     | PGF   r     | TXT   r
          -  CHM   r     | FPF   r     | MKV   r     | PGM   r/w   | VCF   r
          -  COS   r     | FPX   r     | MNG   r/w   | PLIST r     | VRD   r/w/c
          -  CR2   r/w   | GIF   r/w   | MOBI  r     | PICT  r     | VSD   r
          -  CR3   r/w   | GPR   r/w   | MODD  r     | PMP   r     | WAV   r
          -  CRM   r/w   | GZ    r     | MOI   r     | PNG   r/w   | WDP   r/w
          -  CRW   r/w   | HDP   r/w   | MOS   r/w   | PPM   r/w   | WEBP  r
          -  CS1   r/w   | HDR   r     | MOV   r/w   | PPT   r     | WEBM  r
          -  CSV   r     | HEIC  r/w   | MP3   r     | PPTX  r     | WMA   r
          -  DCM   r     | HEIF  r/w   | MP4   r/w   | PS    r/w   | WMV   r
          -  DCP   r/w   | HTML  r     | MPC   r     | PSB   r/w   | WTV   r
          -  DCR   r     | ICC   r/w/c | MPG   r     | PSD   r/w   | WV    r
          -  DFONT r     | ICS   r     | MPO   r/w   | PSP   r     | X3F   r/w
          -  DIVX  r     | IDML  r     | MQV   r/w   | QTIF  r/w   | XCF   r
          -  DJVU  r     | IIQ   r/w   | MRW   r/w   | R3D   r     | XLS   r
          -  DLL   r     | IND   r/w   | MXF   r     | RA    r     | XLSX  r
          -  DNG   r/w   | INSP  r/w   | NEF   r/w   | RAF   r/w   | XMP   r/w/c
          -  DOC   r     | INSV  r     | NRW   r/w   | RAM   r     | ZIP   r
          -  DOCX  r     | INX   r     | NUMBERS r   | RAR   r     |
          -  DPX   r     | ISO   r     | O     r     | RAW   r/w   |
          +  360   r/w   | DR4   r/w/c | JNG   r/w   | O     r     | RAW   r/w
          +  3FR   r     | DSS   r     | JP2   r/w   | ODP   r     | RIFF  r
          +  3G2   r/w   | DV    r     | JPEG  r/w   | ODS   r     | RSRC  r
          +  3GP   r/w   | DVB   r/w   | JSON  r     | ODT   r     | RTF   r
          +  A     r     | DVR-MS r    | JXL   r     | OFR   r     | RW2   r/w
          +  AA    r     | DYLIB r     | K25   r     | OGG   r     | RWL   r/w
          +  AAE   r     | EIP   r     | KDC   r     | OGV   r     | RWZ   r
          +  AAX   r/w   | EPS   r/w   | KEY   r     | ONP   r     | RM    r
          +  ACR   r     | EPUB  r     | LA    r     | OPUS  r     | SEQ   r
          +  AFM   r     | ERF   r/w   | LFP   r     | ORF   r/w   | SKETCH r
          +  AI    r/w   | EXE   r     | LIF   r     | ORI   r/w   | SO    r
          +  AIFF  r     | EXIF  r/w/c | LNK   r     | OTF   r     | SR2   r/w
          +  APE   r     | EXR   r     | LRV   r/w   | PAC   r     | SRF   r
          +  ARQ   r/w   | EXV   r/w/c | M2TS  r     | PAGES r     | SRW   r/w
          +  ARW   r/w   | F4A/V r/w   | M4A/V r/w   | PBM   r/w   | SVG   r
          +  ASF   r     | FFF   r/w   | MACOS r     | PCD   r     | SWF   r
          +  AVI   r     | FITS  r     | MAX   r     | PCX   r     | THM   r/w
          +  AVIF  r/w   | FLA   r     | MEF   r/w   | PDB   r     | TIFF  r/w
          +  AZW   r     | FLAC  r     | MIE   r/w/  | PDF   r/w   | TORRENT r
          +  BMP   r     | FLIF  r/w   | MIFF  r   c | PEF   r/w   | TTC   r
          +  BPG   r     | FLV   r     | MKA   r     | PFA   r     | TTF   r
          +  BTF   r     | FPF   r     | MKS   r     | PFB   r     | TXT   r
          +  CHM   r     | FPX   r     | MKV   r     | PFM   r     | VCF   r
          +  COS   r     | GIF   r/w   | MNG   r/w   | PGF   r     | VRD   r/w/c
          +  CR2   r/w   | GPR   r/w   | MOBI  r     | PGM   r/w   | VSD   r
          +  CR3   r/w   | GZ    r     | MODD  r     | PLIST r     | WAV   r
          +  CRM   r/w   | HDP   r/w   | MOI   r     | PICT  r     | WDP   r/w
          +  CRW   r/w   | HDR   r     | MOS   r/w   | PMP   r     | WEBP  r
          +  CS1   r/w   | HEIC  r/w   | MOV   r/w   | PNG   r/w   | WEBM  r
          +  CSV   r     | HEIF  r/w   | MP3   r     | PPM   r/w   | WMA   r
          +  CZI   r     | HTML  r     | MP4   r/w   | PPT   r     | WMV   r
          +  DCM   r     | ICC   r/w/c | MPC   r     | PPTX  r     | WTV   r
          +  DCP   r/w   | ICS   r     | MPG   r     | PS    r/w   | WV    r
          +  DCR   r     | IDML  r     | MPO   r/w   | PSB   r/w   | X3F   r/w
          +  DFONT r     | IIQ   r/w   | MQV   r/w   | PSD   r/w   | XCF   r
          +  DIVX  r     | IND   r/w   | MRC   r     | PSP   r     | XLS   r
          +  DJVU  r     | INSP  r/w   | MRW   r/w   | QTIF  r/w   | XLSX  r
          +  DLL   r     | INSV  r     | MXF   r     | R3D   r     | XMP   r/w/c
          +  DNG   r/w   | INX   r     | NEF   r/w   | RA    r     | ZIP   r
          +  DOC   r     | ISO   r     | NKSC  r/w   | RAF   r/w   |
          +  DOCX  r     | ITC   r     | NRW   r/w   | RAM   r     |
          +  DPX   r     | J2C   r     | NUMBERS r   | RAR   r     |
           
             Meta Information
             ----------------------+----------------------+---------------------
          @@ -162,7 +165,7 @@
           
           

          Case is not significant for any command-line option (including tag and group names), except for single-character options when the corresponding upper-case option exists. Many single-character options have equivalent long-name versions (shown in brackets), and some options have inverses which are invoked with a leading double-dash. Unrecognized options are interpreted as tag names (for this reason, multiple single-character options may NOT be combined into one argument). Contrary to standard practice, options may appear after source file names on the exiftool command line.

          -

          Option Summary

          +

          Option Overview

          Tag operations

          @@ -181,13 +184,14 @@ -c FMT (-coordFormat) Set format for GPS coordinates -charset [[TYPE=]CHARSET] Specify encoding for special characters -csv[[+]=CSVFILE] Export/import tags in CSV format + -csvDelim STR Set delimiter for CSV file -d FMT (-dateFormat) Set format for date/time values -D (-decimal) Show tag ID numbers in decimal - -E, -ex (-escape(HTML|XML)) Escape values for HTML (-E) or XML (-ex) + -E,-ex,-ec (-escape(HTML|XML|C))Escape tag values for HTML, XML or C -f (-forcePrint) Force printing of all specified tags -g[NUM...] (-groupHeadings) Organize output by tag group -G[NUM...] (-groupNames) Print group name for each tag - -h (-htmlFormat) Use HMTL formatting for output + -h (-htmlFormat) Use HTML formatting for output -H (-hex) Show tag ID numbers in hexadecimal -htmlDump[OFFSET] Generate HTML-format binary dump -j[[+]=JSONFILE] (-json) Export/import tags in JSON format @@ -214,8 +218,8 @@

          Processing control

            -a          (-duplicates)        Allow duplicate tags to be extracted
          -  -e          (--composite)        Do not calculate composite tags
          -  -ee         (-extractEmbedded)   Extract information from embedded files
          +  -e          (--composite)        Do not generate composite tags
          +  -ee[NUM]    (-extractEmbedded)   Extract information from embedded files
             -ext[+] EXT (-extension)         Process files with specified extension
             -F[OFFSET]  (-fixBase)           Fix the base for maker notes offsets
             -fast[NUM]                       Increase speed when extracting metadata
          @@ -262,7 +266,9 @@
             -common_args                     Define common arguments
             -config CFGFILE                  Specify configuration file name
             -echo[NUM] TEXT                  Echo text to stdout or stderr
          +  -efile[NUM][!] ERRFILE           Save names of files with errors
             -execute[NUM]                    Execute multiple commands on one line
          +  -list_dir                        List directories, not their contents
             -srcfile FMT                     Process a different source file
             -stay_open FLAG                  Keep reading -@ argfile even after EOF
             -userParam PARAM[[^]=[VAL]]      Set user parameter (API UserParam opt)
          @@ -292,15 +298,17 @@

          Exclude specified tag from extracted information. Same as the -x option. Group names and wildcards are permitted as described above for -TAG. Once excluded from the output, a tag may not be re-included by a subsequent option. May also be used following a -tagsFromFile option to exclude tags from being copied (when redirecting to another tag, it is the source tag that should be excluded), or to exclude groups from being deleted when deleting all information (eg. -all= --exif:all deletes all but EXIF information). But note that this will not exclude individual tags from a group delete (unless a family 2 group is specified, see note 4 below). Instead, individual tags may be recovered using the -tagsFromFile option (eg. -all= -tagsfromfile @ -artist).

          +

          To speed processing when reading XMP, exclusions in XMP groups also bypass processing of the corresponding XMP property and any contained properties. For example, --xmp-crs:all may speed processing significantly in cases where a large number of XMP-crs tags exist. To use this feature to bypass processing of a specific XMP property, the property name must be used instead of the ExifTool tag name (eg. --xmp-crs:dabs). Also, XMP-all may be used to to indicate any XMP namespace (eg. <C--xmp-all:dabs>).

          +
          -TAG[+-^]=[VALUE]
          -

          Write a new value for the specified tag (eg. -comment=wow), or delete the tag if no VALUE is given (eg. -comment=). += and -= are used to add or remove existing entries from a list, or to shift date/time values (see Image::ExifTool::Shift.pl and note 6 below for more details). += may also be used to increment numerical values (or decrement if VALUE is negative), and -= may be used to conditionally delete or replace a tag (see "WRITING EXAMPLES" for examples). ^= is used to write an empty string instead of deleting the tag when no VALUE is given, but otherwise it is equivalent to =.

          +

          Write a new value for the specified tag (eg. -comment=wow), or delete the tag if no VALUE is given (eg. -comment=). += and -= are used to add or remove existing entries from a list, or to shift date/time values (see Image::ExifTool::Shift.pl and note 6 below for more details). += may also be used to increment numerical values (or decrement if VALUE is negative), and -= may be used to conditionally delete or replace a tag (see "WRITING EXAMPLES" for examples). ^= is used to write an empty string instead of deleting the tag when no VALUE is given, but otherwise it is equivalent to =, but note that the caret must be quoted on the Windows command line.

          -

          TAG may contain one or more leading family 0, 1 or 2 group names, prefixed by optional family numbers, and separated colons. If no group name is specified, the tag is created in the preferred group, and updated in any other location where a same-named tag already exists. The preferred group is the first group in the following list where TAG is valid: 1) EXIF, 2) IPTC, 3) XMP.

          +

          TAG may contain one or more leading family 0, 1, 2 or 7 group names, prefixed by optional family numbers, and separated colons. If no group name is specified, the tag is created in the preferred group, and updated in any other location where a same-named tag already exists. The preferred group in JPEG and TIFF-format images is the first group in the following list where TAG is valid: 1) EXIF, 2) IPTC, 3) XMP.

          -

          The wildcards * and ? may be used in tag names to assign the same value to multiple tags. When specified with wildcards, "unsafe" tags are not written. A tag name of All is equivalent to * (except that it doesn't require quoting, while arguments with wildcards do on systems with shell globbing), and is often used when deleting all metadata (ie. -All=) or an entire group (eg. -XMP-dc:All=, see note 4 below). Note that not all groups are deletable, and that the JPEG APP14 "Adobe" group is not removed by default with -All= because it may affect the appearance of the image. However, color space information is removed, so the colors may be affected (but this may be avoided by copying back the tags defined by the ColorSpaceTags shortcut). Use the -listd option for a complete list of deletable groups, and see note 5 below regarding the "APP" groups. Also, within an image some groups may be contained within others, and these groups are removed if the containing group is deleted:

          +

          The wildcards * and ? may be used in tag names to assign the same value to multiple tags. When specified with wildcards, "Unsafe" tags are not written. A tag name of All is equivalent to * (except that it doesn't require quoting, while arguments with wildcards do on systems with shell globbing), and is often used when deleting all metadata (ie. -All=) or an entire group (eg. -XMP-dc:All=, see note 4 below). Note that not all groups are deletable, and that the JPEG APP14 "Adobe" group is not removed by default with -All= because it may affect the appearance of the image. However, color space information is removed, so the colors may be affected (but this may be avoided by copying back the tags defined by the ColorSpaceTags shortcut). Use the -listd option for a complete list of deletable groups, and see note 5 below regarding the "APP" groups. Also, within an image some groups may be contained within others, and these groups are removed if the containing group is deleted:

            JPEG Image:
             - Deleting EXIF or IFD0 also deletes ExifIFD, GlobParamIFD,
          @@ -352,7 +360,7 @@
           
           

          Notes:

          -

          1) Some tags (generally tags which may affect the appearance of the image) are considered "unsafe" to write, and are only copied if specified explicitly (ie. no wildcards). See the tag name documentation for more details about "unsafe" tags.

          +

          1) Some tags (generally tags which may affect the appearance of the image) are considered "Unsafe" to write, and are only copied if specified explicitly (ie. no wildcards). See the tag name documentation for more details about "Unsafe" tags.

          2) Be aware of the difference between excluding a tag from being copied (--TAG), and deleting a tag (-TAG=). Excluding a tag prevents it from being copied to the destination image, but deleting will remove a pre-existing tag from the image.

          @@ -380,7 +388,7 @@

          Finally, the behaviour is different when a destination tag or group of All is used. When copying directly, a destination group and/or tag name of All writes to the same family 1 group and/or tag name as the source. But when interpolated in a string, the identity of the source tags are lost and the value is written to all possible groups/tags. For example, the string form must be used in the following command since the intent is to set the value of all existing date/time tags from CreateDate:

          -
              exiftool "-time:all<$createdate" -wm w FILE
          +
              exiftool '-time:all<$createdate' -wm w FILE
          -x TAG (-exclude)
          @@ -393,7 +401,7 @@

          Input-output text formatting

          -

          Note that trailing spaces are removed from extracted values for most output text formats. The exceptions are -b, -csv, -j and -X.

          +

          Note that trailing spaces are removed from extracted values for most output text formats. The exceptions are -b, -csv, -j and -X.

          @@ -403,17 +411,19 @@

          Output information in the form of exiftool arguments, suitable for use with the -@ option when writing. May be combined with the -G option to include group names. This feature may be used to effectively copy tags between images, but allows the metadata to be altered by editing the intermediate file (out.args in this example):

              exiftool -args -G1 --filename --directory src.jpg > out.args
          -    exiftool -@ out.args -sep ", " dst.jpg
          + exiftool -@ out.args -sep ', ' dst.jpg
          -

          Note: Be careful when copying information with this technique since it is easy to write tags which are normally considered "unsafe". For instance, the FileName and Directory tags are excluded in the example above to avoid renaming and moving the destination file. Also note that the second command above will produce warning messages for any tags which are not writable.

          +

          Note: Be careful when copying information with this technique since it is easy to write tags which are normally considered "Unsafe". For instance, the FileName and Directory tags are excluded in the example above to avoid renaming and moving the destination file. Also note that the second command above will produce warning messages for any tags which are not writable.

          As well, the -sep option should be used as in the second command above to maintain separate list items when writing metadata back to image files, and the -struct option may be used when extracting to preserve structured XMP information.

          -
          -b (-binary)
          +
          -b, --b (-binary, --binary)
          -

          Output requested metadata in binary format without tag names or descriptions. This option is mainly used for extracting embedded images or other binary data, but it may also be useful for some text strings since control characters (such as newlines) are not replaced by '.' as they are in the default output. By default, list items are separated by a newline when extracted with the -b option, but this may be changed (see the -sep option for details). May be combined with -j, -php or -X to extract binary data in JSON, PHP or XML format, but note that "unsafe" tags must be specified explicitly to be extracted as binary in these formats.

          +

          Output requested metadata in binary format without tag names or descriptions (-b or -binary). This option is mainly used for extracting embedded images or other binary data, but it may also be useful for some text strings since control characters (such as newlines) are not replaced by '.' as they are in the default output. By default, list items are separated by a newline when extracted with the -b option, but this may be changed (see the -sep option for details). May be combined with -j, -php or -X to extract binary data in JSON, PHP or XML format, but note that "Unsafe" tags are not extracted as binary unless they are specified explicitly or the API RequestAll option is set to 3 or higher.

          + +

          With a leading double dash (--b or --binary), tags which contain binary data are suppressed in the output when reading.

          -c FMT (-coordFormat)
          @@ -457,6 +467,7 @@ Thai cp874 Windows Thai DOSLatinUS cp437 DOS Latin US DOSLatin1 cp850 DOS Latin1 + DOSCyrillic cp866 DOS Cyrillic MacRoman cp10000, Roman Macintosh Roman MacLatin2 cp10029 Macintosh Latin2 (Central Europe) MacCyrillic cp10007 Macintosh Cyrillic @@ -486,7 +497,9 @@
          -csv[[+]=CSVFILE]
          -

          Export information in CSV format, or import information if CSVFILE is specified. When importing, the CSV file must be in exactly the same format as the exported file. The first row of the CSVFILE must be the ExifTool tag names (with optional group names) for each column of the file, and values must be separated by commas. A special "SourceFile" column specifies the files associated with each row of information (and a SourceFile of "*" may be used to define default tags to be imported for all files which are combined with any tags specified for the specific SourceFile processed). The following examples demonstrate basic use of this option:

          +

          Export information in CSV format, or import information if CSVFILE is specified. When importing, the CSV file must be in exactly the same format as the exported file. The first row of the CSVFILE must be the ExifTool tag names (with optional group names) for each column of the file, and values must be separated by commas. A special "SourceFile" column specifies the files associated with each row of information (and a SourceFile of "*" may be used to define default tags to be imported for all files which are combined with any tags specified for the specific SourceFile processed). The -csvDelim option may be used to change the input/output field delimiter if something other than a comma is required.

          + +

          The following examples demonstrate basic use of the -csv option:

              # generate CSV file with common tags from all images in a directory
               exiftool -common -csv dir > out.csv
          @@ -509,10 +522,16 @@
           

          Note that this option is fundamentally different than all other output format options because it requires information from all input files to be buffered in memory before the output is written. This may result in excessive memory usage when processing a very large number of files with a single command. Also, it makes this option incompatible with the -w option. When processing a large number of files, it is recommended to either use the JSON (-j) or XML (-X) output format, or use -p to generate a fixed-column CSV file instead of using the -csv option.

          +
          -csvDelim STR
          +
          + +

          Set the delimiter for separating CSV entries for CSV file input/output via the -csv option. STR may contain "\t", "\n", "\r" and "\\" to represent TAB, LF, CR and '\' respectively. A double quote is not allowed in the delimiter. Default is ','.

          + +
          -d FMT (-dateFormat)
          -

          Set the format for date/time tag values. The FMT string may contain formatting codes beginning with a percent character (%) to represent the various components of a date/time value. The specifics of the FMT syntax are system dependent -- consult the strftime man page on your system for details. The default format is equivalent to "%Y:%m:%d %H:%M:%S". This option has no effect on date-only or time-only tags and ignores timezone information if present. Only one -d option may be used per command. Requires POSIX::strptime or Time::Piece for the inversion conversion when writing.

          +

          Set the format for date/time tag values. The FMT string may contain formatting codes beginning with a percent character (%) to represent the various components of a date/time value. The specifics of the FMT syntax are system dependent -- consult the strftime man page on your system for details. The default format is equivalent to "%Y:%m:%d %H:%M:%S". This option has no effect on date-only or time-only tags and ignores timezone information if present. ExifTool adds a %f format code to represent fractional seconds, and supports an optional width to specify the number of digits after the decimal point (eg. %3f would give something like .437). Only one -d option may be used per command. Requires POSIX::strptime or Time::Piece for the inversion conversion when writing.

          -D (-decimal)
          @@ -521,10 +540,10 @@

          Show tag ID number in decimal when extracting information.

          -
          -E, -ex (-escapeHTML, -escapeXML)
          +
          -E, -ex, -ec (-escapeHTML, -escapeXML, -escapeC)
          -

          Escape characters in output values for HTML (-E) or XML (-ex). For HTML, all characters with Unicode code points above U+007F are escaped as well as the following 5 characters: & (&amp;) ' (&#39;) " (&quot;) > (&gt;) and < (&lt;). For XML, only these 5 characters are escaped. The -E option is implied with -h, and -ex is implied with -X. The inverse conversion is applied when writing tags.

          +

          Escape characters in output tag values for HTML (-E), XML (-ex) or C (-ec). For HTML, all characters with Unicode code points above U+007F are escaped as well as the following 5 characters: & (&amp;) ' (&#39;) " (&quot;) > (&gt;) and < (&lt;). For XML, only these 5 characters are escaped. The -E option is implied with -h, and -ex is implied with -X. For C, all control characters and the backslash are escaped. The inverse conversion is applied when writing tags.

          -f (-forcePrint)
          @@ -536,7 +555,7 @@
          -g[NUM][:NUM...] (-groupHeadings)
          -

          Organize output by tag group. NUM specifies a group family number, and may be 0 (general location), 1 (specific location), 2 (category), 3 (document number), 4 (instance number), 5 (metadata path) or 6 (EXIF/TIFF format). -g0 is assumed if a family number is not specified, and family numbers may be added wherever -g is mentioned in the documentation. Multiple families may be specified by separating them with colons. By default the resulting group name is simplified by removing any leading Main: and collapsing adjacent identical group names, but this can be avoided by placing a colon before the first family number (eg. -g:3:1). Use the -listg option to list group names for a specified family. The SavePath and SaveFormat API options are automatically enabled if the respective family 5 or 6 group names are requested. See the API GetGroup documentation for more information.

          +

          Organize output by tag group. NUM specifies a group family number, and may be 0 (general location), 1 (specific location), 2 (category), 3 (document number), 4 (instance number), 5 (metadata path), 6 (EXIF/TIFF format) or 7 (tag ID). -g0 is assumed if a family number is not specified. May be combined with other options to add group names to the output. Multiple families may be specified by separating them with colons. By default the resulting group name is simplified by removing any leading Main: and collapsing adjacent identical group names, but this can be avoided by placing a colon before the first family number (eg. -g:3:1). Use the -listg option to list group names for a specified family. The API SavePath and SaveFormat options are automatically enabled if the respective family 5 or 6 group names are requested. See the API GetGroup documentation for more information.

          -G[NUM][:NUM...] (-groupNames)
          @@ -566,7 +585,7 @@
          -j[[+]=JSONFILE] (-json)
          -

          Use JSON (JavaScript Object Notation) formatting for console output, or import JSON file if JSONFILE is specified. This option may be combined with -g to organize the output into objects by group, or -G to add group names to each tag. List-type tags with multiple items are output as JSON arrays unless -sep is used. By default XMP structures are flattened into individual tags in the JSON output, but the original structure may be preserved with the -struct option (this also causes all list-type XMP tags to be output as JSON arrays, otherwise single-item lists would be output as simple strings). The -a option is implied if the -g or -G options are used, otherwise it is ignored and tags with identical JSON names are suppressed. (-g4 may be used to ensure that all tags have unique JSON names.) Adding the -D or -H option changes tag values to JSON objects with "val" and "id" fields, and adding -l adds a "desc" field, and a "num" field if the numerical value is different from the converted "val". The -b option may be added to output binary data, encoded in base64 if necessary (indicated by ASCII "base64:" as the first 7 bytes of the value), and -t may be added to include tag table information (see -t for details). The JSON output is UTF-8 regardless of any -L or -charset option setting, but the UTF-8 validation is disabled if a character set other than UTF-8 is specified.

          +

          Use JSON (JavaScript Object Notation) formatting for console output, or import JSON file if JSONFILE is specified. This option may be combined with -g to organize the output into objects by group, or -G to add group names to each tag. List-type tags with multiple items are output as JSON arrays unless -sep is used. By default XMP structures are flattened into individual tags in the JSON output, but the original structure may be preserved with the -struct option (this also causes all list-type XMP tags to be output as JSON arrays, otherwise single-item lists would be output as simple strings). The -a option is implied when -json is used, but entries with identical JSON names are suppressed in the output. (-G4 may be used to ensure that all tags have unique JSON names.) Adding the -D or -H option changes tag values to JSON objects with "val" and "id" fields, and adding -l adds a "desc" field, and a "num" field if the numerical value is different from the converted "val". The -b option may be added to output binary data, encoded in base64 if necessary (indicated by ASCII "base64:" as the first 7 bytes of the value), and -t may be added to include tag table information (see -t for details). The JSON output is UTF-8 regardless of any -L or -charset option setting, but the UTF-8 validation is disabled if a character set other than UTF-8 is specified.

          If JSONFILE is specified, the file is imported and the tag definitions from the file are used to set tag values on a per-file basis. The special "SourceFile" entry in each JSON object associates the information with a specific target file. An object with a missing SourceFile or a SourceFile of "*" defines default tags for all target files which are combined with any tags specified for the specific SourceFile processed. The imported JSON file must have the same format as the exported JSON files with the exception that the -g option is not compatible with the import file format (use -G instead). Additionally, tag names in the input JSON file may be suffixed with a # to disable print conversion.

          @@ -653,9 +672,9 @@
          -p FMTFILE or STR (-printFormat)
          -

          Print output in the format specified by the given file or string. The argument is interpreted as a string unless a file of that name exists, in which case the string is loaded from the contents of the file. Tag names in the format file or string begin with a $ symbol and may contain a leading group names and/or a trailing #. Case is not significant. Braces {} may be used around the tag name to separate it from subsequent text. Use $$ to represent a $ symbol, and $/ for a newline.

          +

          Print output in the format specified by the given file or string. The argument is interpreted as a string unless a file of that name exists, in which case the string is loaded from the contents of the file. Tag names in the format file or string begin with a $ symbol and may contain leading group names and/or a trailing # (to disable print conversion). Case is not significant. Braces {} may be used around the tag name to separate it from subsequent text. Use $$ to represent a $ symbol, and $/ for a newline.

          -

          Multiple -p options may be used, each contributing a line (or more) of text to the output. Lines beginning with #[HEAD] and #[TAIL] are output before the first processed file and after the last processed file respectively. Lines beginning with #[SECT] and #[ENDS] are output before and after each section of files. A section is defined as a group of consecutive files with the same section header (eg. files are grouped by directory if #[SECT] contains $directory). Lines beginning with #[BODY] and lines not beginning with # are output for each processed file. Lines beginning with #[IF] are not output, but all BODY lines are skipped if any tag on an IF line doesn't exist. Other lines beginning with # are ignored. For example, this format file:

          +

          Multiple -p options may be used, each contributing a line (or more) of text to the output. Lines beginning with #[HEAD] and #[TAIL] are output before the first processed file and after the last processed file respectively. Lines beginning with #[SECT] and #[ENDS] are output before and after each section of files. A section is defined as a group of consecutive files with the same section header (eg. files are grouped by directory if #[SECT] contains $directory). Lines beginning with #[BODY] and lines not beginning with # are output for each processed file. Lines beginning with #[IF] are not output, but all BODY lines are skipped if any tag on an IF line doesn't exist. Other lines beginning with # are ignored. (To output a line beginning with #, use #[BODY]#.) For example, this format file:

              # this is a comment line
               #[HEAD]-- Generated by ExifTool $exifToolVersion --
          @@ -669,7 +688,7 @@
           
           

          produces output like this:

          -
              -- Generated by ExifTool 11.88 --
          +
              -- Generated by ExifTool 12.40 --
               File: a.jpg - 2003:10:31 15:44:19
               (f/5.6, 1/60s, ISO 100)
               File: b.jpg - 2006:05:23 11:57:38
          @@ -680,7 +699,7 @@
           
           

          When -ee (-extractEmbedded) is combined with -p, embedded documents are effectively processed as separate input files.

          -

          If a specified tag does not exist, a minor warning is issued and the line with the missing tag is not printed. However, the -f option may be used to set the value of missing tags to '-' (but this may be configured via the MissingTagValue API option), or the -m option may be used to ignore minor warnings and leave the missing values empty. Alternatively, -q -q may be used to simply suppress the warning messages.

          +

          If a specified tag does not exist, a minor warning is issued and the line with the missing tag is not printed. However, the -f option may be used to set the value of missing tags to '-' (but this may be configured via the API MissingTagValue option), or the -m option may be used to ignore minor warnings and leave the missing values empty. Alternatively, -q -q may be used to simply suppress the warning messages.

          The "Advanced formatting feature" may be used to modify the values of individual tags with the -p option.

          @@ -774,13 +793,16 @@

          1) In a Windows BAT file the % character is represented by %%, so an argument like %d%f.txt is written as %%d%%f.txt.

          -

          2) If the argument for -w does not contain a valid format code (eg. %f), then it is interpreted as a file extension. It is not possible to specify a simple filename as an argument -- creating a single output file from multiple source files is typically done by shell redirection, ie)

          +

          2) If the argument for -w does not contain a valid format code (eg. %f), then it is interpreted as a file extension, but there are three different ways to create a single output file from multiple source files:

          -
              exiftool FILE1 FILE2 ... > out.txt
          +
              # 1. Shell redirection
          +    exiftool FILE1 FILE2 ... > out.txt
           
          -

          But if necessary, an empty format code may be used to force the argument to be interpreted as a format string, and the same result may be obtained without the use of shell redirection:

          + # 2. With the -w option and a zero-width format code + exiftool -w+! %0fout.txt FILE1 FILE2 ... -
              exiftool -w+! %0fout.txt FILE1 FILE2 ...
          + # 3. With the -W option (see the -W option below) + exiftool -W+! out.txt FILE1 FILE2 ...

          Advanced features:

          @@ -839,7 +861,7 @@

          1) With -W, a new output file is created for each extracted tag.

          -

          2) -W supports three additional format codes: %t, %g and %s represent the tag name, group name, and suggested extension for the output file (based on the format of the data). The %g code may be followed by a single digit to specify the group family number (eg. %g1), otherwise family 0 is assumed. The substring width/position/case specifiers may be used with these format codes in exactly the same way as with %f and %e.

          +

          2) -W supports four additional format codes: %t, %g and %s represent the tag name, group name, and suggested extension for the output file (based on the format of the data), and %o represents the value of the OriginalRawFileName or OriginalFileName tag from the input file (including extension). The %g code may be followed by a single digit to specify the group family number (eg. %g1), otherwise family 0 is assumed. The substring width/position/case specifiers may be used with these format codes in exactly the same way as with %f and %e.

          3) The argument for -W is interpreted as a file name if it contains no format codes. (For -w, this would be a file extension.) This change allows a simple file name to be specified, which, when combined with the append feature, provides a method to write metadata from multiple source files to a single output file without the need for shell redirection. For example, the following pairs of commands give the same result:

          @@ -851,7 +873,7 @@ exiftool test.jpg >> out.txt # shell redirection exiftool test.jpg -W+ out.txt # equivalent -W option
          -

          4) Adding the -v option to -W sends a list of the tags and output file names to the console instead of giving a verbose dump of the entire file. (Unless appending all output to one file for each source file by using -W+ with an output file FMT that does not contain %t, $g or %s.)

          +

          4) Adding the -v option to -W sends a list of the tags and output file names to the console instead of giving a verbose dump of the entire file. (Unless appending all output to one file for each source file by using -W+ with an output file FMT that does not contain %t, %g, %s or %o.)

          5) Individual list items are stored in separate files when -W is combined with -b, but note that for separate files to be created %c or %C must be used in FMT to give the files unique names.

          @@ -869,7 +891,7 @@

          By default, -X outputs flattened tags, so -struct should be added if required to preserve XMP structures. List-type tags with multiple values are formatted as an RDF Bag, but they are combined into a single string when -s or -sep is used. Using -L changes the XML encoding from "UTF-8" to "windows-1252". Other -charset settings change the encoding only if there is a corresponding standard XML character set. The -b option causes binary data values to be written, encoded in base64 if necessary. The -t option adds tag table information to the output (see -t for details).

          -

          Note: This output is NOT the same as XMP because it uses dynamically-generated property names corresponding to the ExifTool tag names, and not the standard XMP properties. To write XMP instead, use the -o option with an XMP extension for the output file.

          +

          Note: This output is NOT the same as XMP because it uses dynamically-generated property names corresponding to the ExifTool tag names with ExifTool family 1 group names as namespaces, and not the standard XMP properties and namespaces. To write XMP instead, use the -o option with an XMP extension for the output file.

          @@ -887,16 +909,18 @@
          -e (--composite)
          -

          Extract existing tags only -- don't calculate composite tags.

          +

          Extract existing tags only -- don't generate composite tags.

          -
          -ee (-extractEmbedded)
          +
          -ee[NUM] (-extractEmbedded)

          Extract information from embedded documents in EPS files, embedded EPS information and JPEG and Jpeg2000 images in PDF files, embedded MPF images in JPEG and MPO files, streaming metadata in AVCHD videos, and the resource fork of Mac OS files. Implies the -a option. Use -g3 or -G3 to identify the originating document for extracted information. Embedded documents containing sub-documents are indicated with dashes in the family 3 group name. (eg. Doc2-3 is the 3rd sub-document of the 2nd embedded document.) Note that this option may increase processing time substantially, especially for PDF files with many embedded images or videos with streaming metadata.

          When used with -ee, the -p option is evaluated for each embedded document as if it were a separate input file. This allows, for example, generation of GPS track logs from timed metadata in videos. See https://exiftool.org/geotag.html#Inverse for examples.

          +

          Setting NUM to 2 causes the H264 video stream in MP4 videos to be parsed until the first Supplemental Enhancement Information (SEI) message is decoded, or 3 to parse the entire H624 stream and decode all SEI information. For M2TS videos, a setting of 3 causes the entire file to be parsed in search of unlisted programs which may contain timed GPS.

          +
          -ext[+] EXT, --ext EXT (-extension)
          @@ -926,7 +950,7 @@
          -fast[NUM]
          -

          Increase speed of extracting information. With -fast (or -fast1), ExifTool will not scan to the end of a JPEG image to check for an AFCP or PreviewImage trailer, or past the first comment in GIF images or the audio/video data in WAV/AVI files to search for additional metadata. These speed benefits are small when reading images directly from disk, but can be substantial if piping images through a network connection. For more substantial speed benefits, -fast2 also causes exiftool to avoid extracting any EXIF MakerNote information. -fast3 avoids extracting metadata from the file, and returns only pseudo System tags, but still reads the file header to obtain an educated guess at FileType. -fast4 doesn't even read the file header, and returns only System tags and a FileType based on the file extension. Has no effect when writing.

          +

          Increase speed of extracting information. With -fast (or -fast1), ExifTool will not scan to the end of a JPEG image to check for an AFCP or PreviewImage trailer, or past the first comment in GIF images or the audio/video data in WAV/AVI files to search for additional metadata. These speed benefits are small when reading images directly from disk, but can be substantial if piping images through a network connection. For more substantial speed benefits, -fast2 also causes exiftool to avoid extracting any EXIF MakerNote information. -fast3 avoids extracting metadata from the file, and returns only pseudo System tags, but still reads the file header to obtain an educated guess at FileType. -fast4 doesn't even read the file header, and returns only System tags and a FileType based on the file extension. -fast5 also disables generation of the Composite tags (like -e). Has no effect when writing.

          Note that a separate -fast setting may be used for evaluation of a -if condition, or when ordering files with the -fileOrder option. See the -if and -fileOrder options for details.

          @@ -938,13 +962,13 @@
              exiftool -fileOrder DateTimeOriginal DIR
          -

          Additional -fileOrder options may be added for secondary sort keys. Numbers are sorted numerically, and all other values are sorted alphabetically. Files missing the specified tag are sorted last. The sort order may be reversed by prefixing the tag name with a - (eg. -fileOrder -createdate). Print conversion of the sorted values is disabled with the -n option, or a # appended to the tag name. Other formatting options (eg. -d) have no effect on the sorted values. Note that the -fileOrder option can have a large performance impact since it involves an additional processing pass of each file, but this impact may be reduced by specifying a NUM for the -fast level used during the metadata-extraction phase. For example, -fileOrder4 may be used if TAG is a pseudo System tag. If multiple -fileOrder options are used, the extraction is done at the lowest -fast level.

          +

          Additional -fileOrder options may be added for secondary sort keys. Numbers are sorted numerically, and all other values are sorted alphabetically. Files missing the specified tag are sorted last. The sort order may be reversed by prefixing the tag name with a - (eg. -fileOrder -createdate). Print conversion of the sorted values is disabled with the -n option, or a # appended to the tag name. Other formatting options (eg. -d) have no effect on the sorted values. Note that the -fileOrder option can have a large performance impact since it involves an additional processing pass of each file, but this impact may be reduced by specifying a NUM for the -fast level used during the metadata-extraction phase. For example, -fileOrder4 may be used if TAG is a pseudo System tag. If multiple -fileOrder options are used, the extraction is done at the lowest -fast level. Note that files are sorted across directory boundaries if multiple input directories are specified.

          -i DIR (-ignore)
          -

          Ignore specified directory name. DIR may be either an individual folder name, or a full path. If a full path is specified, it must match the Directory tag exactly to be ignored. Use multiple -i options to ignore more than one directory name. A special DIR value of SYMLINKS (case sensitive) may be specified to ignore symbolic links when the -r option is used.

          +

          Ignore specified directory name. DIR may be either an individual folder name, or a full path. If a full path is specified, it must match the Directory tag exactly to be ignored. Use multiple -i options to ignore more than one directory name. A special DIR value of SYMLINKS (case sensitive) may be specified to avoid recursing into directories which are symbolic links when the -r option is used. As well, a value of HIDDEN (case sensitive) may be used to ignore files with names that start with a "." (ie. hidden files on Unix systems) when scanning a directory.

          -if[NUM] EXPR
          @@ -964,7 +988,13 @@ # find images containing a specific keyword (case insensitive) exiftool -if '$keywords =~ /harvey/i' -filename dir
          -

          Adding NUM to the -if option causes a separate processing pass to be executed for evaluating EXPR at a -fast level given by NUM (see the -fast option documentation for details). Without NUM, only one processing pass is done at the level specified by the -fast option. For example, using -if4 is possible if EXPR uses only pseudo System tags, and may significantly speed processing if enough files fail the condition.

          +

          Adding NUM to the -if option causes a separate processing pass to be executed for evaluating EXPR at a -fast level given by NUM (see the -fast option documentation for details). Without NUM, only one processing pass is done at the level specified by the -fast option. For example, using -if5 is possible if EXPR uses only pseudo System tags, and may significantly speed processing if enough files fail the condition.

          + +

          The expression has access to the current ExifTool object through $self, and the following special functions are available to allow short-circuiting of the file processing. Both functions have a return value of 1. Case is significant for function names.

          + +
              End()    - end processing after this file
          +    EndDir() - end processing of files in this directory (not
          +               compatible with the B<-fileOrder> option)

          Notes:

          @@ -1023,7 +1053,7 @@
          -P (-preserve)
          -

          Preserve the filesystem modification date/time (FileModifyDate) of the original file when writing. Note that some filesystems store a creation date (Windows FileCreateDate or Mac MDItemFSCreationDate) which is not affected by this option. The creation date is preserved on Windows systems where Win32API::File and Win32::API are available regardless of this setting. For other systems, the -overwrite_original_in_place option may be used if necessary to preserve the creation date. This option is superseded by any value written to the FileModifyDate tag.

          +

          Preserve the filesystem modification date/time (FileModifyDate) of the original file when writing. Note that some filesystems store a creation date (ie. FileCreateDate on Windows and Mac systems) which is not affected by this option. This creation date is preserved on Windows systems where Win32API::File and Win32::API are available regardless of this setting. For other systems, the -overwrite_original_in_place option may be used if necessary to preserve the creation date. The -P option is superseded by any value written to the FileModifyDate tag.

          -password PASSWD
          @@ -1196,7 +1226,7 @@
          -use MODULE
          -

          Add features from specified plug-in MODULE. Currently, the MWG module is the only plug-in module distributed with exiftool. This module adds read/write support for tags as recommended by the Metadata Working Group. As a convenience, -use MWG is assumed if the MWG group is specified for any tag on the command line. See the MWG Tags documentation for more details. Note that this option is not reversible, and remains in effect until the application terminates, even across the -execute option.

          +

          Add features from specified plug-in MODULE. Currently, the MWG module is the only plug-in module distributed with exiftool. This module adds read/write support for tags as recommended by the Metadata Working Group. As a convenience, -use MWG is assumed if the MWG group is specified for any tag on the command line. See the MWG Tags documentation for more details. Note that this option is not reversible, and remains in effect until the application terminates, even across the -execute option.

          @@ -1252,13 +1282,29 @@
          -echo[NUM] TEXT
          -

          Echo TEXT to stdout (-echo or -echo1) or stderr (-echo2). Text is output as the command line is parsed, before the processing of any input files. NUM may also be 3 or 4 to output text (to stdout or stderr respectively) after processing is complete.

          +

          Echo TEXT to stdout (-echo or -echo1) or stderr (-echo2). Text is output as the command line is parsed, before the processing of any input files. NUM may also be 3 or 4 to output text (to stdout or stderr respectively) after processing is complete. For -echo3 and -echo4, "${status}" may be used in the TEXT string to represent the numerical exit status of the command (see "EXIT STATUS").

          + +
          +
          -efile[NUM][!] ERRFILE
          +
          + +

          Save the names of files giving errors (NUM missing or 1), files that were unchanged (NUM is 2), files that fail the -if condition (NUM is 4), or any combination thereof by summing NUM (eg. -efile3 is the same has having both -efile and -efile2 options with the same ERRFILE). By default, file names are appended to any existing ERRFILE, but ERRFILE is overwritten if an exclamation point is added to the option (eg. -efile!). Saves the name of the file specified by the -srcfile option if applicable.

          -execute[NUM]
          -

          Execute command for all arguments up to this point on the command line (plus any arguments specified by -common_args). The result is as if the commands were executed as separate command lines (with the exception of the -config and -use options which remain in effect for subsequent commands). Allows multiple commands to be executed from a single command line. NUM is an optional number that is echoed in the "{ready}" message when using the -stay_open feature.

          +

          Execute command for all arguments up to this point on the command line (plus any arguments specified by -common_args). The result is as if the commands were executed as separate command lines (with the exception of the -config and -use options which remain in effect for subsequent commands). Allows multiple commands to be executed from a single command line. NUM is an optional number that is echoed in the "{ready}" message when using the -stay_open feature. If a NUM is specified, the -q option no longer suppresses the output "{readyNUM}" message.

          + +
          +
          -list_dir
          +
          + +

          List directories themselves instead of their contents. This option effectively causes directories to be treated as normal files when reading and writing. For example, with this option the output of the ls -la command on Mac/Linux may be approximated by this exiftool command:

          + +
              exiftool -list_dir -T -ls-l -api systemtags -fast5 .* *
          + +

          (The -T option formats the output in tab-separated columns, -ls-l is a shortcut tag, the API SystemTags option is required to extract some necessary tags, and the -fast5 option is added for speed since only system tags are being extracted.)

          -srcfile FMT
          @@ -1274,21 +1320,23 @@

          A FMT of @ may be used to represent the original FILE, which may be useful when specifying multiple -srcfile options (eg. to fall back to processing the original FILE if no sidecar exists).

          +

          When this option is used, two special UserParam tags (OriginalFileName and OriginalDirectory) are generated to allow access to the original FILE name and directory.

          +
          -stay_open FLAG
          -

          If FLAG is 1 or True, causes exiftool keep reading from the -@ ARGFILE even after reaching the end of file. This feature allows calling applications to pre-load exiftool, thus avoiding the overhead of loading exiftool for each command. The procedure is as follows:

          +

          If FLAG is 1 or True (case insensitive), causes exiftool keep reading from the -@ ARGFILE even after reaching the end of file. This feature allows calling applications to pre-load exiftool, thus avoiding the overhead of loading exiftool for each command. The procedure is as follows:

          1) Execute exiftool -stay_open True -@ ARGFILE, where ARGFILE is the name of an existing (possibly empty) argument file or - to pipe arguments from the standard input.

          2) Write exiftool command-line arguments to ARGFILE, one argument per line (see the -@ option for details).

          -

          3) Write -execute\n to ARGFILE, where \n represents a newline sequence. (Note: You may need to flush your write buffers here if using buffered output.) Exiftool will then execute the command with the arguments received up to this point, send a "{ready}" message to stdout when done (unless the -q or -T option is used), and continue trying to read arguments for the next command from ARGFILE. To aid in command/response synchronization, any number appended to the -execute option is echoed in the "{ready}" message. For example, -execute613 results in "{ready613}".

          +

          3) Write -execute\n to ARGFILE, where \n represents a newline sequence. (Note: You may need to flush your write buffers here if using buffered output.) ExifTool will then execute the command with the arguments received up to this point, send a "{ready}" message to stdout when done (unless the -q or -T option is used), and continue trying to read arguments for the next command from ARGFILE. To aid in command/response synchronization, any number appended to the -execute option is echoed in the "{ready}" message. For example, -execute613 results in "{ready613}". When this number is added, -q no longer suppresses the "{ready}" message. (Also, see the -echo3 and -echo4 options for additional ways to pass signals back to your application.)

          4) Repeat steps 2 and 3 for each command.

          -

          5) Write -stay_open\nFalse\n to ARGFILE when done. This will cause exiftool to process any remaining command-line arguments then exit normally.

          +

          5) Write -stay_open\nFalse\n (or -stay_open\n0\n) to ARGFILE when done. This will cause exiftool to process any remaining command-line arguments then exit normally.

          The input ARGFILE may be changed at any time before step 5 above by writing the following lines to the currently open ARGFILE:

          @@ -1305,7 +1353,7 @@
          -userParam PARAM[[^]=[VAL]]
          -

          Set user parameter. PARAM is an arbitrary user parameter name. This is an interface to the API UserParam option (see the Image::ExifTool Options documentation), and provides a method to access user-defined parameters from inside tag name expressions (as if it were any other tag, see example below), and from PrintConv/ValueConv logic (via the ExifTool Options function). Similar to the -api option, the parameter value is set to 1 if =VAL is omitted, undef if just VAL is omitted with =, or an empty string if VAL is omitted with ^=.

          +

          Set user parameter. PARAM is an arbitrary user parameter name. This is an interface to the API UserParam option (see the Image::ExifTool Options documentation), and provides a method to access user-defined parameters in arguments to the -if and -p options as if they were any other tag. Appending a hash tag (#) to PARAM (eg. -userParam MyTag#=yes) also causes the parameter to be extracted as a normal tag in the UserParam group. Similar to the -api option, the parameter value is set to 1 if =VAL is omitted, undef if just VAL is omitted with =, or an empty string if VAL is omitted with ^=.

              exiftool -p '$test from $filename' -userparam test=Hello FILE
          @@ -1346,7 +1394,7 @@

          The -sep option is necessary to split the string back into individual list items when writing to a list-type tag.

          -

          An optional flag argument may be set to 1 to cause NoDups to return undef if no duplicates existed, thus preventing the file from being rewritten unnecessarily:

          +

          An optional flag argument may be set to 1 to cause NoDups to set $_ to undef if no duplicates existed, thus preventing the file from being rewritten unnecessarily:

              exiftool -sep '##' '-keywords<${keywords;NoDups(1)}' a.jpg
          @@ -1397,7 +1445,7 @@
          exiftool -a -u -g1 a.jpg
          -

          Print all meta information in an image, including duplicate and unknown tags, sorted by group (for family 1). For performance reasons, this command may not extract all available metadata. (Metadata in embedded documents, metadata extracted by external utilities, and metadata requiring excessive processing time may not be extracted). Add -ee and -api RequestAll=3 to the command to extract absolutely everything available.

          +

          Print all meta information in an image, including duplicate and unknown tags, sorted by group (for family 1). For performance reasons, this command may not extract all available metadata. (Metadata in embedded documents, metadata extracted by external utilities, and metadata requiring excessive processing time may not be extracted). Add -ee3 and -api RequestAll=3 to the command to extract absolutely everything available.

          exiftool -common dir
          @@ -1484,7 +1532,7 @@

          Print one line of output containing the file name and DateTimeOriginal for each image in directory dir.

          -
          exiftool -ee -p '$gpslatitude, $gpslongitude, $gpstimestamp' a.m2ts
          +
          exiftool -ee3 -p '$gpslatitude, $gpslongitude, $gpstimestamp' a.m2ts

          Extract all GPS positions from an AVCHD video.

          @@ -1974,13 +2022,17 @@
          +

          INTERRUPTING EXIFTOOL

          + +

          Interrupting exiftool with a CTRL-C or SIGINT will not result in partially written files or temporary files remaining on the hard disk. The exiftool application traps SIGINT and defers it until the end of critical processes if necessary, then does a proper cleanup before exiting.

          +

          EXIT STATUS

          The exiftool application exits with a status of 0 on success, or 1 if an error occurred, or 2 if all files failed the -if condition (for any of the commands if -execute was used).

          AUTHOR

          -

          Copyright 2003-2020, Phil Harvey

          +

          Copyright 2003-2022, Phil Harvey

          This is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

          diff -Nru libimage-exiftool-perl-11.88/html/faq.html libimage-exiftool-perl-12.40+dfsg/html/faq.html --- libimage-exiftool-perl-11.88/html/faq.html 2019-12-20 18:54:07.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/faq.html 2021-03-17 13:19:32.000000000 +0000 @@ -44,6 +44,8 @@
        • Import from database
        • Windows .BAT file problems
        • Copying a shifted date/time
        • +
        • ARGFILE options
        • +
        • Extracting all metadata
        • @@ -134,7 +136,7 @@ different meta information formats within the same file. For example, often XMP will be ignored if IPTC exists and the Photoshop:IPTCDigest does not agree with the IPTC content. The -Metadata Working Group +Metadata Working Group recommends techniques to keep the EXIF, IPTC and XMP metadata synchronized. These recommendations are implemented by the ExifTool MWG tags. For maximum compatibility with the @@ -480,16 +482,17 @@ not significant):
          - - - - - - - - - - + + + + + + + + + + +
          UTF8(cp65001, UTF‑8)Thai(cp874)
          Latin(cp1252, Latin1)MacRoman(cp10000, Mac, Roman)
          Latin2(cp1250)MacLatin2(cp10029)
          Cyrillic(cp1251, Russian)     MacCyrillic(cp10007)
          Greek(cp1253)MacGreek(cp10006)
          Turkish(cp1254)MacTurkish(cp10081)
          Hebrew(cp1255)MacRomanian(cp10010)
          Arabic(cp1256)MacIceland(cp10079)
          Baltic(cp1257)MacCroatian(cp10082)
          Vietnam(cp1258)
          UTF8(cp65001, UTF‑8)DOSLatinUS(cp437)
          Latin(cp1252, Latin1)DOSLatin1(cp850)
          Latin2(cp1250)DOSCyrillic(cp866)
          Cyrillic(cp1251, Russian)     MacRoman(cp10000, Mac, Roman)
          Greek(cp1253)MacLatin2(cp10029)
          Turkish(cp1254)MacCyrillic(cp10007)
          Hebrew(cp1255)MacGreek(cp10006)
          Arabic(cp1256)MacTurkish(cp10081)
          Baltic(cp1257)MacRomanian(cp10010)
          Vietnam(cp1258)MacIceland(cp10079)
          Thai(cp874)MacCroatian(cp10082)
          The -L option is equivalent to "-charset Latin", @@ -584,7 +587,7 @@ UTF‑8, converting the following 5 characters to XML character references: & < > ' ". By default no further conversion is performed, however the -charset or -L option may be -used used to convert text to/from a specified external character set when +used to convert text to/from a specified external character set when reading/writing.
          PNG: @@ -684,7 +687,7 @@
          Note: The config file must be renamed at the command line because neither the Windows nor Mac GUI allow a file name to begin with a ".". To do this in Windows, run "cmd.exe" and type -the following (pressing RETURN at the end of each line): +the following (pressing ENTER at the end of each line):
          cd %HOMEPATH%
           rename ExifTool_config .ExifTool_config
           
          @@ -842,9 +845,20 @@
          exiftool -f -r -p my.fmt t/images > out.csv
           
          -Alternatively, the -p option may be used with a format string instead -of a file name. The following command has the same effect as above except that -the row of headings is not printed (Note: Use single quotes as below on Mac/Linux, +But note that any values containing commas, quotes or some other special +characters may mess up the CSV formatting. If this is a possibility, the +-api filter option may be added to the command to quote values +if necessary. For example: + +
          # in Windows
          +exiftool -api filter="$_ = qq{""$_""} if s/""/""""/g or /(^\s+|\s+$)/ or /[,\n\r]/" ...
          +
          +# in Mac/Linux
          +exiftool -api filter='$_ = qq{"$_"} if s/"/""/g or /(^\s+|\s+$)/ or /[,\n\r]/' ...
          + +The -p option argument may also be a format string instead of a +file name. The following command has the same effect as above except that the +row of headings is not printed (Note: Use single quotes as below on Mac/Linux, or double quotes instead on Windows):
          exiftool -f -r -p '$filename,$aperture,$iso' t/images > out.csv
          @@ -916,11 +930,12 @@
           seconds with any number of decimal places.
          For EXIF GPS coordinates, the reference direction is specified -separately with the EXIF:GPSLatitudeRef or EXIF:GPSLongitudeRef tag. -GPSLatitudeRef may be written with a string ending in "N" or -"S", or with a signed coordinate value, positive for the northern -hemisphere or negative for the south. GPSLongitudeRef accepts similar values, -but for E (positive) and W (negative).
          +separately with the EXIF:GPSLatitudeRef or EXIF:GPSLongitudeRef tag. +GPSLatitudeRef may be written with a string containing "N", +"North", "S" or "South", or with a signed +coordinate value (positive for the northern hemisphere or negative for the +south). GPSLongitudeRef accepts similar values, but for E/East (positive) and +W/West (negative).
          For XMP GPS coordinates, the reference direction is specified within the XMP:GPSLatitude or XMP:GPSLongitude value, with west longitudes and south @@ -943,6 +958,10 @@ coordinate styles to the proper format for the specific tag used.
          +
          ExifTool 12.22 and later allow combined lat/lon GPSCoordinates +values to be written to GPSLatitude and GPSLongitude, and the appropriate +latitude or longitude part will be pulled from the input string.
          +
          When reading, by default ExifTool reports coordinates in the format
          DDD deg MM' SS.SS"
          where DDD is degrees, MM is minutes, and SS.SS @@ -1081,7 +1100,7 @@ List items are assigned separately as above, NOT all together, because this would represent a single keyword: -
          exiftool -keywords="one, two, three" test.jpg  (WRONG!)
          +
          exiftool -keywords="one, two, three" test.jpg  (WRONG!)
           
          The -sep option may be used to split values of list-type tags into @@ -1157,7 +1176,7 @@ However, this is not the case if the tag is interpolated within a format string (ie. has a leading "$" symbol), like this -
          exiftool "-keywords<$subject" DIR  (WRONG!)
          +
          exiftool "-keywords<$subject" DIR  (WRONG!)
          but here the -sep option may be used to split the list back into separate items: @@ -1168,7 +1187,7 @@ tag: Here, any assignment to a tag overrides earlier assignments to the same tag in the command. For instance, this command: -
          exiftool "-keywords<filename" "-keywords<comment" DIR  (WRONG!)
          +
          exiftool "-keywords<filename" "-keywords<comment" DIR  (WRONG!)
           
          writes only the value from the Comment tag. This may seem strange, but it prevents @@ -1203,7 +1222,7 @@ Start menu and enter "cmd").
        • Change the font in the console Properties to any True Type font (eg. "TT Lucida Console").
        • -
        • Type "chcp 65001" then press RETURN at the command prompt.
        • +
        • Type "chcp 65001" then press ENTER at the command prompt.
        • The console should now be able to display UTF‑8 characters (cp65001). But @@ -1293,7 +1312,10 @@ the same directory as the exiftool application. Note that the file name begins with a ".", so if you are in Windows or on a Mac you may need to rename the file from the command line since the GUI might not like file names -beginning with a ".".
          +beginning with a ".". [An alternative is to load the +config file with the -config option -- see the +application documentation +for details.]
          User-defined Composite tags have many other features, including the ability to combine the values of multiple tags. See the @@ -1397,11 +1419,15 @@ inserted with CTRL-T, but I have found no way to insert a carriage return (CR).]

          -
        • Use the -E option to allow HTML character entities (Note: -In Windows a newline is "&#xd;&#xa;" instead of just -"&#xa;"): -
          exiftool -E "-comment=line 1&#xa;line 2" image.jpg
          -
        • +
        • Use the -ec or -E option to allow C-style escape +sequences or HTML character entities (Note: +In Windows a newline is "\r\n" or "&#xd;&#xa;" +instead of just "\n" or "&#xa;"). For example, +using C-style escape sequences: +
          exiftool -ec "-comment=line 1\nline 2" image.jpg
          +or using HTML character entities: +
          exiftool -E "-comment=line 1&#xa;line 2" image.jpg
          +
        • Write the tag from the contents of a separate text file:
          exiftool "-comment<=file.txt" image.jpg
           
        • @@ -1413,8 +1439,8 @@ avoided with the -fast3 option.)
          exiftool '-comment<line 1$/line 2' image.jpg
           
          -
        • Use the "#[CSTR]" feature to allow C-style escape sequences in -a -@ argfile. For example, this command: +
        • Use the "#[CSTR]" feature to allow C-style escape sequences +for a specific line in a -@ argfile. For example, this command:
          exiftool -@ test.args image.jpg
          with this "test.args" file:
          #[CSTR]-comment=line 1\nline 2
        • @@ -1433,7 +1459,7 @@
        • When copying values to list-type tags (eg. "-keywords<filename"), new values are accumulated only if -addTagsFromFile is used, otherwise they override earlier -assigments if -tagsFromFile is used or implied.
           
        • +assignments if -tagsFromFile is used or implied.
           
        • Tags copied with the -tagsFromFile option are assigned in order, and all together at the point in the command line where the -tagsFromFile option is located, regardless of whether these tags @@ -1477,7 +1503,7 @@
          Tags are not written if the format of the target file doesn't support the specific type of meta information. For example, CRW images do not -support EXIF or IPTC metdata. See the +support EXIF or IPTC metadata. See the Supported File Types table for an indication of the tags supported by your file. If the tags aren't supported for your file type, then a metadata sidecar file is an @@ -1530,16 +1556,14 @@ also sets this to the current date/time when the file is edited. On Windows the creation date is readable/writable through the FileCreateDate tag (see the Extra Tags documentation), and is preserved -with the -P option. On Mac the MDItemFSCreationDate tag is used -(see the MacOS MDItem Tags documentation), -however this tag is extracted only if specified explicitly or the -MDItemTags API option is set. The --P option does not preserve the creation date when editing a file -on Mac systems, but the -overwrite_original_in_place option may be -used to preserve all Finder information including the creation date, or the -MDItemFSCreationDate may be copied back specifically (ie. --tagsfromfile @ -MDItemFSCreationDate). On Linux, the file -creation date is not stored.
          +with the -P option. On MacOS, FileCreateDate is available but +extracted only if specified explicitly, and is writable only if "setfile" is +available. The -P option does not preserve the creation date when +editing a file on Mac systems, but the -overwrite_original_in_place +option may be used to preserve all Finder information including the creation +date, or the FileCreateDate may be copied back specifically (ie. +-tagsfromfile @ -FileCreateDate). On Linux, the file creation date +is not stored.
        • For example, commands like this act on common metadata tags, setting the filesystem modification date/time to the current date/time: @@ -1574,8 +1598,9 @@
          ExifTool is not designed as an image validator but it does have a -validate feature which enables extra validation checks, mainly for -JPEG and TIFF-format images (officially released in version 10.97, May 2018). -Here is an example command to apply these validation checks to a JPEG image: +JPEG and TIFF-format images (officially released in version 10.97, May 2018, +but continually being improved). Here is an example command to apply these +validation checks to a JPEG image:
          exiftool -validate -warning -error -a test.jpg
          @@ -1635,7 +1660,7 @@ for more details.
          -

          27. "My ExifTool command doesn't work from a Windows .BAT file."

          +

          27. "My ExifTool command doesn't work from a Windows .BAT file"

          In a Windows .BAT file the "%" character is significant, so all "%" characters in ExifTool commands must be @@ -1657,7 +1682,7 @@ because the copy operation is superseded by the shift, and the result is that the existing DateTimeOriginal is shifted back by two hours: -
          exiftool "-datetimeoriginal<filemodifydate" -datetimeoriginal-=2 image.jpg  (WRONG!)
          +
          exiftool "-datetimeoriginal<filemodifydate" -datetimeoriginal-=2 image.jpg  (WRONG!)
           
          The -globalTimeShift option fills this niche -- it shifts all @@ -1683,8 +1708,38 @@ $exifTool->SetNewValuesFromFile($src, 'datetimeoriginal<${filemodifydate;ShiftTime("-2")}');
          + +

          29. "My options don't work in a -@ ARGFILE"

          + +
          The ExifTool application has the ability to read options from an +ARGFILE using the -@ option. The parsing of these arguments is +different from the command line. Arguments in this file are separated by +newline characters instead of spaces. Also, arguments should not be quoted. +For example, on the command line you may have: + +
          -d "%Y:%m:%d %H:%M:%S"
          + +but in an ARGFILE, this should be + +
          -d
          +%Y:%m:%d %H:%M:%S
          + + +

          30. "How do I extract absolutely all metadata from a file?"

          + +
          By default, duplicate tags, unknown tags, embedded tags, and System +tags that require external utilities are not extracted. The main reason for +this is performance; extracting these tags will significantly increase +processing time for some files. The following command extracts everything +possible with ExifTool: + +
          exiftool -ee3 -U -G3:1 -api requestall=3 -api largefilesupport FILE
          + +(The -G3:1 option is included in the above command only to give an +indication of where the metadata was stored.)
          +
          -Last revised Dec. 20, 2019 +Last revised Mar 17, 2021

          <-- Back to ExifTool home page

          diff -Nru libimage-exiftool-perl-11.88/html/filename.html libimage-exiftool-perl-12.40+dfsg/html/filename.html --- libimage-exiftool-perl-11.88/html/filename.html 2020-01-31 12:22:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/filename.html 2021-11-11 17:36:17.000000000 +0000 @@ -79,7 +79,7 @@

          If the -d option is used, the unformatted date/time value must be valid (ie. in the form "YYYY:mm:dd HH:MM:SS"), otherwise the date formatting will fail and the file will not be renamed or moved (but this may -be changed via the API StrictDate option). +be changed via the API StrictDate option).

          Also note that the -d formatting applies to date/time tags used in -if conditions unless the print conversion is disabled by adding @@ -296,6 +296,18 @@ DateTimeOriginal if it exists, otherwise CreateDate if it exists, and finally FileModifyDate (which always exists) is used as a fallback.

          + +
          13. +exiftool -d %Y '-filename<$createdate/${model;}/${createdate#;DateFmt("%Y-%m-%d_%H%M%S")}.%e' pics +
          +
          Multiple date/time formatting codes become necessary when other +tags are place between date/time fields. The DateFmt helper +function is provided for this reason, and is applied to the unformatted tag +value (ie. tag name ending with '#') to achieve a different +date/time formatting in the same string. (Note that the single quotes are +necessary in Unix shells due to the '$' symbol, but double quotes +must be used instead when running in a Windows cmd shell.)
          +

          Common Date Format Codes

          Date format codes are used in the argument to the -d option to represent components of the date/time string. The codes listed below are common @@ -309,13 +321,14 @@

    • %B- full locale month name
      %c- preferred locale date/time representation
      %d- day of month (01-31)
      %f- fractional seconds (see note 1 below)
      %H- hour on a 24-hour clock (00-23)
      %I- hour on a 12-hour clock (01-12)
      %j- day of year (001-366)
      %m- month number (01-12)
      %M- minute (00-59)
      %p- 'AM' or 'PM'
      %s- number of seconds since the Epoch, UTC (see note 1 below)
      %s- number of seconds since the Epoch, UTC (see note 2 below)
      %S- seconds (00-59)
      %w- weekday number (0-6)
      %W- week number of the year (00-53)
      %X- preferred locale time representation
      %y- 2-digit year (00-99)
      %Y- 4-digit year (eg. 2006)
      %z- time zone in the form +/-hhmm (see note 1 below)
      %Z- system time zone name (see note 2 below)
      %z- time zone in the form +/-hhmm (see note 2 below)
      %Z- system time zone name (see note 3 below)
      %%- a literal '%' character

      ExifTool file name format codes may be used inside a date format @@ -343,13 +356,22 @@ with these name format codes.

      Notes:

        -
      1. The %s and %z format codes use the time zone specified by the date/time -value. If the date/time value does not include a time zone specification, then -it is interpreted as a local time in the system time zone. These format codes -are parsed by ExifTool, so they should work on all systems.

      2. -
      3. The %Z format code ignores any time zone specified in the date/time value, -and returns the system time-zone name for the given date/time interpreted as a -local system time.
      4. +
      5. The %f format code is an ExifTool-specific enhancement and +supports an optional number of digits after the decimal point. For example, +%3f gives fractional seconds with 3 digits (eg. ".123"). The value +is rounded to the specified number of digits, and the date/time value is +incremented by one second if the rounding would overflow to the next second, +even if the number of decimal digits is zero (ie. %0f). Without +%f, the fractional seconds are simply discarded and no rounding is +performed.

      6. +
      7. The %s and %z format codes use the time zone +specified by the date/time value. If the date/time value does not include a +time zone specification, then it is interpreted as a local time in the system +time zone. These format codes are parsed by ExifTool, so they should work on +all systems.

      8. +
      9. The %Z format code ignores any time zone specified in the +date/time value, and returns the system time-zone name for the given date/time +interpreted as a local system time.

      <-- Back to ExifTool home page

      diff -Nru libimage-exiftool-perl-11.88/html/geotag.html libimage-exiftool-perl-12.40+dfsg/html/geotag.html --- libimage-exiftool-perl-11.88/html/geotag.html 2019-12-04 15:50:46.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/geotag.html 2021-09-30 15:04:06.000000000 +0000 @@ -18,6 +18,7 @@
        - Geotag
        - Geosync
        - Geotime +
      CSV File Format
      Examples
      Options
      Orientation @@ -58,6 +59,8 @@
    • Bramor gEO log
    • Winplus Beacon .TXT
    • GPS/IMU .CSV
    • +
    • DJI .CSV
    • +
    • ExifTool .CSV file
    @@ -88,11 +91,11 @@

    Multiple GPS log files may be loaded simultaneously by using more than one -geotag option or -geotag= assignment in the same -command. This allows batch processing of images spanning different tracks with -a single command. Wildcards may be used in the argument of the --geotag option, but note that the argument may then need to be -quoted on some systems to prevent shell globbing, and that wildcards are not -supported with the -geotag= syntax. See the +command, or by using wildcards in the filename argument of the +-geotag option. This allows batch processing of images spanning +different tracks with a single command. When using wildcards the argument may +need to be quoted on some systems to prevent shell globbing, but note that +wildcards are not supported with the -geotag= syntax. See the examples below.

    Deleting the Geotag tag (with -geotag=) causes the @@ -220,6 +223,35 @@ ensure this). + +

    ExifTool CSV Log File Format

    + +

    ExifTool supports input log files in CSV format with the first row containing +headings in the form of ExifTool tag names or descriptions. Valid column +headings are:

    + +
    + + + + + + + + + + + + +
    Column HeadingDescription
    GPSDateTimeDate and time in standard EXIF format, or other +format specified by the -d option if used.
    Time is assumed to be +in UTC unless the values contain another time zone
    GPSDateStampDate in standard EXIF format
    GPSTimeStampTime in EXIF format. UTC is assumed unless +the values include a time zone
    GPSLatitudeLatitude in flexible ExifTool format (see FAQ 14)
    GPSLongitudeLongitude in flexible ExifTool format (see FAQ 14)
    GPSLatitudeRefString beginning with "S" for southern coordinates (used only if GPSLatitude isn't signed or doesn't specify hemisphere)
    GPSLongitudeRefString beginning with "W" for western coordinates (used only if GPSLongitude isn't signed or doesn't specify hemisphere)
    GPSAltitudeAltitude in meters relative to sea level (negative for below sea level)
    GPSTrackCompass heading in degrees true
    GPSPitch or
    CameraElevationAngle
    Pitch angle in degrees with positive pitch upwards
    GPSRollRoll angle in degrees
    + +

    Required columns are GPSDateTime (or GPSDateStamp and GPSTimeStamp), +GPSLatitude and GPSLongitude. All other columns are optional, and unrecognized +columns are ignored.

    +

    Examples

    @@ -526,7 +558,7 @@ geotagged images. The -p option may be used to output files in any number of formats. This section gives examples for creating GPX and KML output files from a set of geotagged images, or from a geotagged video file. -(But note that the -ee option must be added to the commands below +(But note that the -ee3 option must be added to the commands below to extract the full track from a video file.)

    @@ -538,18 +570,19 @@
    #------------------------------------------------------------------------------
     # File:         gpx.fmt
     #
    -# Description:  Example ExifTool print format file for generating GPX track log
    +# Description:  Example ExifTool print format file to generate a GPX track log
     #
    -# Usage:        exiftool -p gpx.fmt -ee FILE [...] > out.gpx
    +# Usage:        exiftool -p gpx.fmt -ee3 FILE [...] > out.gpx
     #
     # Requires:     ExifTool version 10.49 or later
     #
     # Revisions:    2010/02/05 - P. Harvey created
    -#               2018/01/03 - PH Added IF to be sure position exists
    +#               2018/01/04 - PH Added IF to be sure position exists
     #               2018/01/06 - PH Use DateFmt function instead of -d option
    +#               2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
     #
     # Notes:     1) Input file(s) must contain GPSLatitude and GPSLongitude.
    -#            2) The -ee option is to extract the full track from video files.
    +#            2) The -ee3 option is to extract the full track from video files.
     #            3) The -fileOrder option may be used to control the order of the
     #               generated track points when processing multiple files.
     #------------------------------------------------------------------------------
    @@ -565,7 +598,7 @@
     #[IF]  $gpslatitude $gpslongitude
     #[BODY]<trkpt lat="$gpslatitude#" lon="$gpslongitude#">
     #[BODY]  <ele>$gpsaltitude#</ele>
    -#[BODY]  <time>${gpsdatetime#;DateFmt("%Y-%m-%dT%H:%M:%SZ")}</time>
    +#[BODY]  <time>${gpsdatetime#;my ($ss)=/\.\d+/g;DateFmt("%Y-%m-%dT%H:%M:%SZ");s/Z/${ss}Z/ if $ss}</time>
     #[BODY]</trkpt>
     #[TAIL]</trkseg>
     #[TAIL]</trk>
    @@ -631,10 +664,11 @@
     # Revisions:    2010/02/05 - P. Harvey created
     #               2013/02/05 - PH Fixed camera icon to work with new Google Earth
     #               2017/02/02 - PH Organize into folders based on file directory
    -#               2018/01/03 - PH Added IF to be sure position exists
    +#               2018/01/04 - PH Added IF to be sure position exists
    +#               2020/01/11 - F. Kotov Limited image preview size to 500px
     #
     # Notes:     1) Input files must contain GPSLatitude and GPSLongitude.
    -#            2) Add the -ee option to extract the full track from video files.
    +#            2) Add the -ee3 option to extract the full track from video files.
     #            3) For Google Earth to be able to find the images, the input
     #               images must be specified using relative paths, and "out.kml"
     #               must stay in the same directory as where the command was run.
    @@ -658,14 +692,13 @@
     #[HEAD]      </IconStyle>
     #[HEAD]    </Style>
     #[SECT]    <Folder>
    -#[SECT]      <name>$directory</name>
    +#[SECT]      <name>$main:directory</name>
     #[SECT]      <open>0</open>
     #[IF]  $gpslatitude $gpslongitude
     #[BODY]      <Placemark>
    -#[BODY]        <description><![CDATA[<br/><table><tr><td>
    -#[BODY]        <img src='$directory/$filename'
    -#[BODY]          width='$imagewidth' height='$imageheight'>
    -#[BODY]        </td></tr></table>]]></description>
    +#[BODY]        <description><![CDATA[<img src='$main:directory/$main:filename'
    +#[BODY]          style='max-width:500px;max-height:500px;'> ]]>
    +#[BODY]        </description>
     #[BODY]        <Snippet/>
     #[BODY]        <name>$filename</name>
     #[BODY]        <styleUrl>#Photo</styleUrl>
    @@ -686,7 +719,7 @@
     
     
    Created Apr. 2, 2009
    -Last revised Jul. 22, 2019 +Last revised Sept. 23, 2021

    <-- Back to ExifTool home page

    diff -Nru libimage-exiftool-perl-11.88/html/history.html libimage-exiftool-perl-12.40+dfsg/html/history.html --- libimage-exiftool-perl-11.88/html/history.html 2020-02-20 14:44:19.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/history.html 2022-02-09 12:19:14.000000000 +0000 @@ -11,232 +11,279 @@

    RSS feed: https://exiftool.org/rss.xml

    -

    Note: The most recent production release is Version 11.85. (Other versions are -considered development releases, and are not uploaded to CPAN.)

    +

    Note: The most recent production release is Version 12.30. (Other versions are +considered development releases, and are not uploaded to MetaCPAN.)

    -Feb. 20, 2020 - Version 11.88 +Feb. 9, 2022 - Version 12.40
      -
    • Added write support for new Google depth-map XMP tags -
    • Added config_files/depthmap.config to the distribution -
    • Added minor error when attempting to write FFF images due to incompatibility - with Hasselblad Phocus software -
    • Patched to avoid "Invalid iloc offset size" error when writing some - QuickTime-based files -
    • Fixed incorrect ColumnCount for CSV files -
    • Fixed various spelling errors (thanks Jens Schleusener) -
    • Fixed bug writing QuickTime:Rotation in HEIC files -
    - -Feb. 13, 2020 - Version 11.87 -
      -
    • Added read support for CSV files -
    • Added "--" option to indicate the end of options -
    • Added ability to read/write/copy/delete the JPEG trailer as a block -
    • Added new Olympus CameraType and LensType values (thanks LibRaw) -
    • Decode a few more FujiFilm tags -
    • Enhanced -fast option (API FastScan) to bypass PNG CRC validation when - writing -
    - -Feb. 4, 2020 - Version 11.86 -
      -
    • Added support for DNG version 1.5 -
    • Added config_files/acdsee.config to the full distribution (thanks StarGeek) -
    • Added a new Sony LensType (thanks Jos Roost and LibRaw) -
    • Decode two more bits from Nikon LensType (thanks LibRaw) -
    • Decode QuickTime MovieFragmentSequence -
    • Patched HEIC writer to add missing iref box if necessary -
    • Fixed typo in a Canon LensType value +
    • Added a new Nikon LensID (thanks Wolfgang Exler) +
    • Added PageCount tag to return the number of pages in a multi-page TIFF +
    • Added a few more Sony LensTypes (thanks Jos Roost) +
    • Decode some new Canon tags (thanks Mark Reid) +
    • Decode another Nikon Z9 tag (thanks Warren Hatch) +
    • Decode Nikon NKSC GPSImgDirection (thanks Olaf) +
    • Improved handling of empty XMP structures in lists +
    • Tolerate leading UTF-8 BOM in -geotag log files +
    • Updated photoshop_paths.config to include WorkingPath +
    • Patched to allow writing of MP4 videos which have url tracks with a missing + sample description entry +
    • Fixed typo in the name of a new Nikon tag (thanks Herb) +
    • Fixed description of GPR (General Purpose RAW) file type +
    • Fixed potential deep recursion runtime error when writing nested XMP + structures +
    • Fixed warning which could be generated when writing new + Composite:GPSCoordinates tag +
    • Fixed deep recursion error when reading multi-page TIFF images with more + than 100 pages +
    + +Jan. 13, 2022 - Version 12.39 +
      +
    • Added a new Pentax LensType (thanks Christian Shulz) +
    • Added a couple of new Nikon LensID's +
    • Added support for Nikon NKSC sidecar files +
    • Decode more tags for the Nikon Z7 and Z9 (thanks Warren Hatch) +
    • Decode a couple more FLIR tags +
    • Extract ZIP file comments +
    • Made PNG ProfileName, SRGBRendering and Gamma writable +
    • Patched to avoid possible problem running "more" to show documentation in + Windows version +
    • Fixed problem writing Composite:GPSPosition with coordinates in DMS format, + and made this tag protected when writing +
    • Fixed bug where invalid date/time tags could be written to PNG files when + attempting to shift a non-existent date/time tag +
    • Fixed spelling of a few Matroska tag names (thanks Martin Hoppenheit) +
    + +Dec. 20, 2021 - Version 12.38 +
      +
    • Decode a number of new tags for the Nikon Z9 (thanks Warren Hatch) +
    • Patched incorrect decoding of AEBShotCount for the Canon EOS 90D +
    • Patched EXR reader to support long tag names +
    • Patched security issue (thanks Joe Lothan) +
    • Fixed an incorrect tag ID for a new Nikon MakerNote tag (github #108) +
    • Fixed XMP-exif:GPSMeasureMode conversions to match EXIF +
    • Fixed problem where some namespaces may be undeclared in the -X output when + using the -struct option +
    + +Dec. 8, 2021 - Version 12.37 +
      +
    • Decode timed GPS from Vantrue S1 dashcam MP4 videos +
    • Decode ColorData tags for the Canon EOS R3 (thanks LibRaw) +
    • Decode more makernotes tags for Nikon Z cameras (thanks Warren Hatch) +
    • Extract TransparentColor from GIF images +
    • Improved parsing of input time values for GPSTimeStamp to properly handle a + "." separator +
    • Improved warning when incorrectly using "<" instead of "=" to assign a tag + value +
    • Shortened a few of the new obscenely-long XMP-crs tag names +
    • Avoid writing XMP-dwc:EventID and XMP-tiff:NativeDigest +
    • Avoid printing same structure twice in -j and -X output when -l is used +
    • Fixed typo in a QuickTime tag name (thanks Hubert) +
    • Fixed two XMP-crs tag names and typo in a NikonSettings value (thanks Herb) +
    • Fixed patch of version 12.25 to avoid writing XMP which contains an + undefined namespace +
    + +Nov. 16, 2021 - Version 12.36 +
      +
    • IMPORTANT: Fixed bug introduced in 12.35 which corrupted JPEG 2000 images + when removing all metadata with -all= +
    • Added feature to bypass processing of specified XMP namespaces and + properties (to improve performance in cases where the XMP suffers from + Adobe-editing bloat) +
    • Added a number of new XMP tags used by Lightroom 11.0 +
    • Decode a number of new Nikon tags (thanks Warren Hatch) +
    • Made the Composite GPSPosition tag writable +
    • Fixed erroneous "Skipped unknown bytes after JPEG SOS" warning +
    • Fixed group for new writable Jpeg2000 color tags in -listx output +
    • Fixed problem finding files in Windows when using wildcards in file name and + a drive letter with no slash +
    + +Nov. 11, 2021 - Version 12.35 +
      +
    • Added ability to write ICC_Profile (and other color specifications) to + Jpeg2000 images +
    • Added %o code to -W option format string +
    • Added %f code to -d option for fractional seconds +
    • Added a couple of new Sony LensType values (thanks Jos Roost) +
    • Added a new CanonModelID (thanks Norbert Wasser) +
    • Added a new Nikon LensID +
    • Decode more Nikon MakerNotes tags for some new models (thanks Warren Hatch) +
    • Extract ThumbnailImage from some DJI drone videos +
    • Enhanced -ee option to extract metadata from all frames in a SEQ file +
    • Patched to avoid possible "Use of uninitialized value" runtime warning +
    • Fixed a couple of misspelt new ICC_Profile tag names (thanks Herb) +
    • Fixed problem generating the correct file extension when extracting + OriginalRawImage from a DNG file using the -W option with the %s format code +
    • Fixed bug introduced in 11.91 where exiftool couldn't find its libraries + when run via a soft link. Also changed to look for config file in the link + target directory instead of the directory of the link itself +
    + +Oct. 27, 2021 - Version 12.34 +
      +
    • Added support for ICC.2:2019 (Profile version 5.0.0 - iccMAX) color profiles +
    • Added ability to detect/delete a Windows Zone.Identifier alternate data + stream (ADS) via the new ZoneIdentifier tag (thanks Alex Xu) +
    • Added support for the Sony ILCE-7M4 (thanks Jos Roost) +
    • Added a new Sony lens (thanks LibRaw and Jos Roost) +
    • Added a new SonyModelID (thanks LibRaw) +
    • Added a new Canon RF lens (thanks Norbert Wasser) +
    • Improved handling of some SVG files +
    • Patched -overwrite_original_in_place option to open the output file in + update mode rather than write mode (to allow some write optimizations on + certain filesystems) (thanks Joel Low) +
    • Fixed case of tag ID for new XMP-iptcExt:EventID (thanks Michael Steidl) +
    • Fixed problem extracting ICC_Profile information from some PDF files
    • API Changes:
        -
      • Patched ImageInfo() to recognize a stringified object as a file name +
      • Added QuickTimePad option
    -Jan. 28, 2020 - Version 11.85 (production release) -
      -
    • Added a new Sony LensType (thanks Jos Roost) -
    • Added a new Olympus CameraType (thanks LibRaw) -
    • Added a two new Pentax LensType values -
    • Added a new FujiFilm FocusMode -
    • Decode timed GPS from Akaso dashcam MOV videos -
    • Decode Insta360 trailer from INSP images and made Insta360 a deletable group -
    • Patched kml.fmt file to limit maximum image size (thanks Fedor Kotov) -
    • Fixed problem decoding values from Leica M10 and S maker notes -
    - -Jan. 10, 2020 - Version 11.84 -
      -
    • Decode accelerometer data from timed metadata of more dashcam videos -
    • Decode Canon G9 white balance tags (thanks LibRaw) -
    • Recognize INSP files -
    - -Jan. 9, 2020 - Version 11.83 +Oct. 16, 2021 - Version 12.33
      -
    • Added a couple of new XMP-crs tags (thanks Herb) -
    • Fixed bug introduced in 11.82 with the -php -D output -
    • Fixed problem where some flattened XMP tags could be written when they - should be avoided +
    • Added support for DNG version 1.6.0.0 +
    • Added two new Sony LensType values (thanks Jos Roost and LibRaw) +
    • Added some new elements to the XMP-crs:Look structure (thanks Herb) +
    • Added a few new IPTC XMP tags (thanks Michael Steidl) +
    • Added a new Canon RF lens (thanks Norbert Wasser) +
    • Decode Canon ShutterMode (thanks John Moyer) +
    • Extract LensModel from some Olympus MOV videos +
    • Generate MediaDataOffset/Size for MOV videos with zero-sized MDAT chunk +
    • Improvements to CBOR reader, including hex dump with -v3 option +
    • Recognize Final Cut Pro XML files +
    • Allow binary data of Protected tags to be extracted with the -X -j and -php + options with -b by setting the API RequestAll option to 3 +
    • Changed name of "Canon EF 80-200mm f/4.5-5.6" lens with LensType 38 to add + "II" to the name (Exiv2 issue 1906) +
    • Fixed runtime warning when processing files with a .DIR extension
    -Jan. 8, 2020 - Version 11.82 -
      -
    • Added a new Canon LensType -
    • Added a new CanonModelID (thanks LibRaw) -
    • Added ability to process SubDirectories in QuickTime Keys tags -
    • Removed minor error when writing PDF 2.0 files (github issue #30) -
    • Fixed problem where trailing null bytes were removed from binary values in - the -php output when the -b option was used -
    - -Jan. 2, 2020 - Version 11.81 +Sept. 30, 2021 - Version 12.32
      +
    • Added support for CBOR-format metadata in JUMBF (note that JUMBF support is + still experimental)
    • Added a new Nikon LensID -
    • Added two new CanonModelID's (thanks LibRaw) -
    • Decode AVIF AV1 configuration record -
    • Changed names of QuickTime MovieData tags to "MediaData" -
    • Patched to use 4-digit years in Time::Local calls -
    • Patched Composite sub-second date/time tags to do additional validation of - source EXIF date/time tags before adding sub seconds -
    • Fixed problem where -json output could produce invalid JSON when -struct was - used and the structure field names contained special characters (github - issue #32) -
    • Fixed spelling in a Panasonic SceneMode value (thanks Hubert) -
    - -Dec. 17, 2019 - Version 11.80 -
      -
    • Added a new Canon LensType -
    • Added a new Nikon Z LensID (thanks LibRaw) -
    • Added a few new Sony LensType values (thanks Jos Roost) -
    • Attempt to improve reliability of Samsung DepthMapWidth/Height decoding -
    • Updated a number of Canon-mount Tamron lens names to include the Tamron - model number -
    • Patched MOV/MP4 writer to allow a small amount of garbage at the end of a - file to be deleted when writing with the -m option -
    • Fixed bug where some Composite tags may not have taken priority over other - tags as they should have -
    - -Dec. 12, 2019 - Version 11.79 -
      -
    • Added support for AVIF files -
    • Added new Canon, Sigma and Sony LensType values (thanks LibRaw) -
    • Made PDF 2.0 writable at your own risk with the -m option (github issue #30) -
    • Enhanced -validate feature to warn about duplicate languages in an XMP - lang-alt list -
    • Fixed inconsistency between documentation and ExifTool capabilities for - "Writable" status of some tags -
    - -Dec. 5, 2019 - Version 11.78 -
      -
    • Added a new Nikon LensID (thanks Chris) -
    • Added two new FujiFilm SceneRecognition values -
    • Patched to avoid crash in Windows when writing a negative epoch time using - the "-d %s" option -
    • Fixed problem editing MIE tags when using the "-wm w" option -
    - -Nov. 27, 2019 - Version 11.77 -
      -
    • Added a new Nikon LensID (thanks Joe Schönberg) -
    • Added a number of new Olympus LensType values (thanks LibRaw) +
    • Added a new Pentax LensType +
    • Decode timed GPS for two more dashcam formats +
    • Support reference direction columns in -geotag CSV input +
    • Removed generation of GPSSpeedRef and GPSTrackRef tags in timed metadata for + most dashcam formats when speed is km/h and track is relative to true north +
    • Patched to allow writing of console output to named pipes +
    • Fixed formatting of InternalSerialNumber for some Panasonic cameras +
    • Fixed bug in arg_files/xmp2exif.args support file +
    + +Sept. 22, 2021 - Version 12.31 +
      +
    • Added a new SonyModelID and a couple of new Sony lenses (thanks Jos Roost) +
    • Added a new Canon LensType (thanks Chris Skopec) +
    • Added Composite GPSLatitude/Longitude tags for Sony videos to combine the + reference hemispheres as with the Composite tags for EXIF GPS +
    • Decode DPX AspectRatio +
    • Decode more GoPro MP4 tags +
    • Extract ICC_Profile from CS0 object in PDF files +
    • Extract encrypted GPS from Akaso V1 dashcam videos (can't yet decrypt) +
    • Improved handling of QuickTime iTunesInfo tags, and created new "iTunes" + family 1 group for these +
    • Patched so NoPDFList option also applies when writing +
    • Patched to allow user-defined PNG TextualData tags to be written only as iTXt +
    • Patched PDF reader to avoid concatenating values of multiple List-type tags + into a single tag +
    + +Aug. 12, 2021 - Version 12.30 (production release) +
      +
    • Added read support for Portable FloatMap (PFM) images (this was a bit of a + pain because they have the same file extension as Printer Font Metrix files) +
    • Added a few new Nikon LensID values (thanks LibRaw)
    • Added a new Canon LensType -
    • Decode timed GPS from Ambarella A12 dash cam MP4 videos -
    • Decode a number of new Sigma tags (thanks LibRaw) -
    • Decode a couple of new PanasonicRaw tags (thanks LibRaw) -
    • Enhanced -fileOrder option to add -fast feature -
    - -Nov. 12, 2019 - Version 11.76 -
      -
    • Added support for the Sony ILCE-9M2 (thanks Jos Roost) -
    • Added a couple of new XMP-GCamera tags -
    • Added MIMEType values for some formats that previously reported - "application/unknown" -
    • Enhanced -geotag feature to write pitch to CameraElevationAngle if available -
    • Improved determination of MIMEEncoding for TXT files -
    - -Nov. 4, 2019 - Version 11.75 -
      -
    • Added ability to read some basic characteristics of TXT files -
    • Added kml_track.fmt to the fmt_files of the full distribution -
    • Added built-in support for decoding GPS from the four video subtitle text - formats that were previously handled by separate config files, and removed - these config files from the distribution -
    • Derive GPSDateTime from CreateDate and SampleTime if not already available - when extracting timed GPS metadata from QuickTime-format videos -
    • Changed family 2 groups of some Extra tags -
    - -Oct. 29, 2019 - Version 11.74 -
      -
    • Added support for new XMP IPTC Extension version 1.5 tags -
    • Added a new Nikon LensID (thanks LibRaw) -
    • Decode GPS track from Auto-Vox dashcam MOV videos -
    • Improved Russian translations (thanks Andrei Korzhyts and Alexander) -
    • Enhanced convert_regions.config to support new IPTC Extension 1.5 ImageRegion -
    • Changed the way the FlatName element works when used in a structure element - (the structure name is now added as a prefix to the flattened tag name) -
    • Patched gpx.fmt and gpx_wpt.fmt to support sub-seconds in GPSDateTime value -
    - -Oct. 23, 2019 - Version 11.73 -
      -
    • Decode timed metadata from Parrot drone videos -
    • Patched dji.config file to properly handle time zones -
    • Fixed bug which caused runtime error when reading timed metadata from Cobra - Dash Cam AVI videos -
    - -Oct. 22, 2019 - Version 11.72 -
      -
    • Added warning messages for corrupted Photoshop document data -
    • Added a new Olympus CameraType -
    • Added a new Canon LensType -
    • Decode more Sigma tags -
    • Improved Russian translations (thanks Alexander) -
    • Updated decoding of some CanonCustom settings for recent models -
    • Documented DNG OpcodeList values -
    - -Oct. 16, 2019 - Version 11.71 -
      +
    • Added a new Olympus CameraType (thanks LibRaw) +
    • Added minor warning about unknown data between JPEG segments +
    • Added a couple of new NikonSettings tags (thanks Warren Hatch)
    • Added a new Sony LensType (thanks Jos Roost) -
    • Added a few new Nikon Z LensID's -
    • Added a simple print conversion for DNG OpcodeList tags (note that due to - this, these tags must now be copied using the -n option) -
    • Fixed problems determining some video parameters for DV files -
    • Changed behaviour of -sep option when writing empty list items -
    • API Changes: - -
    - -Oct. 10, 2019 - Version 11.70 (production release) -
      -
    • Added a new CanonModelID (thanks Laurent Clévy) -
    • Improved identification of Office Open XML files (github issue #27) -
    • Removed RAF version check when writing FujiFilm RAF files -
    • Limited the number of accelerometer records that ExifTool will read by - default with the -ee option from INSV files to avoid excessive processing - times and memory usage -
    • Patched Windows version to allow reading of shared files with Unicode names - (thanks Eriksson) -
    • Patched to avoid converting some bad GPS coordinates (thanks Csaba Toth) -
    • Fixed verbose output to include YCbCrSubSampling for JPEG files -
    • Fixed conversion and group names for the new FujiFilm tag added in 11.68 -
    • Fixed format of GeoTiffDirectory and GeoTiffDoubleParams when writing +
    • Decode 'id3 ' chunk in WAV audio files +
    • Decode timed GPS from concatenated Garmin dashcam videos +
    • Decode SamsungTrailer information from sefd atom in HEIC images +
    • Decode more Sony MakerNote tags for the ZV-E10 (thanks Jos Roost) +
    • Decode DepthMapTiff from JPEG images of more Samsung models +
    • Decode timed GPS from M2TS videos of yet another type of dashcam +
    • Extract PreviewImage from Xaiomi MP4 videos +
    • Changed name of second EmbeddedImage in Samsung trailer to EmbeddedImage2 +
    • Improved Dutch translations for GPS tags (thanks Peter Dubbelman) +
    • Allow ICC_Profile to be "deleted" from AVIF files (actually, the profile + isn't really deleted. Instead, a zero-length profile is written to allow a + profile to be added back later since QuickTime item property containers + currently can't be created) +
    • Patched to remove 2 GB size limit when reading Photoshop ImageSourceData +
    + +July 9, 2021 - Version 12.29 +
      +
    • Added a few new Nikon and Olympus lenses (thanks LibRaw) +
    • Improved a QuickTime "File format error" message to be more meaningful, and + made it a minor error +
    • Changed PNG writer to add EXIF before IDAT +
    • Some changes the way JUMBF metadata is handled +
    • Patched to read timed GPS from a different type of INSV videos +
    • Patched a security issue +
    • Fixed problem where ExifTool could hang when processing mebx timed metadata +
    + +June 22, 2021 - Version 12.28 +
      +
    • Added read support for Leica Image File (LIF) images +
    • Added a new Olympus LensType (thanks LibRaw) +
    • Decode another Panasonic tag (thanks LibRaw) +
    • Decode more timed metadata from Sony MP4 videos +
    • Attempt to shorten tag names for metadata in CZI files +
    • Allow full QuickTime Keys tag ID's in UserDefined tags (fixes backward + incompatibility introduced in 12.02) +
    • Patched to handle special characters in Torrent tag values +
    + +June 9, 2021 - Version 12.27 +
      +
    • Added a new SonyModelID value +
    • Added two new Nikon LensID values (thanks Daniel) +
    • Added a new Pentax RawDevelopmentProcess value +
    • Added a few new Sony LensType values (thanks Jos Roost) +
    • Added warning if IPTCDigest is not current +
    • Decode a couple more Pentax tags (thanks LibRaw) +
    • Decode streaming GPS from Novatek INNOVV MP4 and TS videos +
    • Improved tag names in config_files/covert_regions.config (thanks StarGeek) +
    • Changed MIME types for MS Office macro-enabled formats to add the .12 +
    • Patched Canon LensID logic to properly identify the Canon RF 24-105mm F4 L + IS USM lens +
    • Patched decoding of camm6 GPSDateTime to use a flexible epoch because other + apps don't seem to use a consistent time zero +
    • Fixed family 7 group names for QuickTime Keys tags +
    • Fixed problem reading BeatsPerMinute from some MP4 files +
    • Fixed hemisphere problem when extracting GPS from 70mai dashcam videos +
    + +May 20, 2021 - Version 12.26 (production release) +
      +
    • Added support for JPEG Stereo (JPS) images +
    • Added a new Sony LensType (thanks LibRaw) +
    • Added a new PentaxModelID (thanks LibRaw) +
    • Changed ExifTool namespace URI to use exiftool.org instead of exiftool.ca in + the -X option output (exiftool.ca is still recognized when reading XML) +
    • Improved handling of large-array warnings in -htmldump output +
    • Changed handling of escaped characters in #[CSTR] lines of -@ argfile +
    • Patched security vulnerability in argument of -lang option +
    • Fixed problem which could cause a "Wide character" warning and generate a + corrupted output file when writing some illegal values
    -History of older versions (back to 1.00) -->

    +History of older versions (back to Nov. 19, 2003 - Version 1.00) -->


    <-- Back to ExifTool home page

    diff -Nru libimage-exiftool-perl-11.88/html/htmldump.html libimage-exiftool-perl-12.40+dfsg/html/htmldump.html --- libimage-exiftool-perl-11.88/html/htmldump.html 2019-02-25 16:53:06.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/htmldump.html 2020-05-01 13:16:48.000000000 +0000 @@ -69,7 +69,8 @@ var safari1 = navigator.userAgent.indexOf("Safari/312.6") >= 0; var ie6 = navigator.userAgent.toLowerCase().indexOf('msie 6') >= 0; var mspan = new Array; -var hlist, tt, tb; +var clicked = 0; +var hlist, tt, tb, firstOutEvt, lastInEvt; function GetElementsByClass(classname, tagname) { var found = new Array(); @@ -87,6 +88,20 @@ return found; } +// click mouse +function doClick(e) +{ + if (!clicked) { + firstOutEvt = lastInEvt = undefined; + high(e, 2); + if (hlist) clicked = 1; + } else { + clicked = 0; + if (firstOutEvt) high(firstOutEvt, 0); + if (lastInEvt) high(lastInEvt, 1); + } +} + // move tooltip function move(e) { @@ -134,6 +149,12 @@ // highlight/unhighlight text function high(e,on) { + if (on) { + lastInEvt = e; + } else { + if (!firstOutEvt) firstOutEvt = e; + } + if (clicked) return; var targ; if (e.target) targ = e.target; else if (e.srcElement) targ = e.srcElement; @@ -181,7 +202,7 @@ } for (var i=0; iunderlined.

    +

    Clicking the mouse locks current the highlighted entry, and clicking again +unlocks it.

    +

    Currently, only TIFF/EXIF and JPEG meta information is dumped. The leftmost column of the output gives the offset in hex relative to the start of the TIFF header (by default). For a TIFF image this is at the start of the file, but for @@ -334,7 +358,7 @@ 0530 0540 0550 -

                ff d8 ff e1  04 60 45 78 69 66 00 00
    +
                ff d8 ff e1  04 60 45 78 69 66 00 00
     49 49 2a 00 08 00 00 00  0b 00
     0f 01 02 00 09 00 00 00  92 00 00 00
     10 01 02 00 10 00 00 00  9c 00 00 00
    @@ -441,7 +465,7 @@
     00 00 00 00 00 00 00 00  00 00 00 00 00 00 ff da
     00 0c 03 01 00 02 11 03  11 00 3f 00 b3 00 1f ff
     d9
    -
        .....`Exif..
    +
        .....`Exif..
     II*.......
     ............
     ............
    @@ -548,7 +572,7 @@
     ................
     ..........?.....
     .
    -
    JPEG header APP1 header Exif header
    +
    JPEG header APP1 header Exif header
     TIFF header IFD0 entries
     IFD0-00 Make
     IFD0-01 Model
    diff -Nru libimage-exiftool-perl-11.88/html/idiosyncracies.html libimage-exiftool-perl-12.40+dfsg/html/idiosyncracies.html
    --- libimage-exiftool-perl-11.88/html/idiosyncracies.html	2020-02-14 12:10:44.000000000 +0000
    +++ libimage-exiftool-perl-12.40+dfsg/html/idiosyncracies.html	2020-03-19 14:04:28.000000000 +0000
    @@ -227,6 +227,15 @@
     first edited with ExifTool (probably because ExifTool fixes the above mentioned
     problems when it rewrites the image).

    +

    Hasselblad FFF: Many Hasselblad camera models +write TIFF-format FFF raw files which contain a double-referenced +reduced-resolution image that is referenced from both IFD0 and IFD1.Immediately +following the data for this image is an unreferenced data block that the +Hasselblad Phocus software uses for an updated preview to reflect the raw +development settings. This unreferenced data is lost if the FFF file is edited +using a TIFF-compatible algorithm, which results in the Phocus no longer +updating the preview when the settings are changed.

    +

    Leica DNG: The makernote offsets for the M8 are relative to the start of the makernote IFD in JPEG images, but relative to the start of the makernote header (8 bytes earlier) in DNG images. [2009-09-09: This is fixed for the @@ -261,7 +270,7 @@

    Ricoh DNG: The GR Digital IV (firmware 1.14) stores an incorrect length for the JPEG preview in SubIFD1.

    -

    Samsung SRW: Yet another TIFF-based RAW image with no proper file +

    Samsung SRW: Yet another TIFF-based raw image with no proper file identifier. In these images the thumbnail is stored inside a SubIFD of IFD1 instead of directly in IFD1 (dumb, dumb...). Also, the NX200 (firmware NX200_011181) uses a base offset for the X/YResolution values that is different @@ -278,7 +287,7 @@


    Created Mar. 25, 2005 -
    Last revised Jan. 11, 2019 +
    Last revised Feb. 24, 2020

    <-- Back to ExifTool home page

    diff -Nru libimage-exiftool-perl-11.88/html/index.html libimage-exiftool-perl-12.40+dfsg/html/index.html --- libimage-exiftool-perl-11.88/html/index.html 2020-02-20 14:44:24.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/index.html 2022-02-09 12:19:26.000000000 +0000 @@ -39,7 +39,14 @@ table.dl { border: 1px solid gray; border-collapse: collapse } table.dl td { padding: .4em .8em } table.bm { margin: 0 0 .35em 0 } -span.sup { font-size: 0.8em; font-weight: normal; position: relative; top: -.4em; } +table.sticky { border-collapse: separate; border-spacing: 0 } +table.sticky th { position: sticky; top: 0; background: #ddd; z-index: 1; border-top: 1px solid gray; + border-bottom: 1px solid gray; border-right: 1px solid gray } +table.sticky td { border-bottom: 1px solid gray; border-right: 1px solid gray } +table.sticky th:first-child, +table.sticky td:first-child { border-left: 1px solid gray} +span.sup { font-size: 0.8em; font-weight: normal; position: relative; top: -.4em } +i.orng { color: #c60 } --> @@ -47,6 +54,10 @@

    ExifTool by Phil Harvey

    Read, Write and Edit Meta Information!

    Also available --> Utility to fix Nikon NEF images corrupted by Nikon software

    +

    Note: If exiftool.org goes down, it is because of the crappy DreamHost +web hosting which disables an "unlimited traffic" web site if a single bot hammers +the site with a moderate load. An alternate ExifTool homepage is available at +http://exiftool.sourceforge.net/

    @@ -81,9 +92,9 @@
    - -Download Version 11.88 (4.5 MB) - -Feb. 20, 2020
    + +Download Version 12.40 (4.8 MB) - +Feb. 9, 2022

    ExifTool is a platform-independent Perl library plus a command-line application for @@ -101,6 +112,7 @@ FlashPix, AFCP and ID3, +Lyrics3, as well as the maker notes of many digital cameras by Canon, Casio, @@ -135,8 +147,8 @@

    Windows Executable: - - exiftool-11.88.zip (6.2 MB)
    + + exiftool-12.40.zip (6.4 MB)

    The stand-alone Windows executable does not require Perl. Just download and un-zip the archive then double-click on @@ -153,8 +165,8 @@

    MacOS Package: - - ExifTool-11.88.dmg (2.9 MB)
    + + ExifTool-12.40.dmg (3.1 MB)

    The MacOS package installs the ExifTool command-line application and libraries in /usr/local/bin. After installing, type "exiftool" in a @@ -164,10 +176,10 @@ installing ExifTool on Windows, MacOS and Unix systems.

    Features

    @@ -184,7 +196,8 @@ Photoshop IRB, FlashPix, AFCP, - ID3 and more...
  • + ID3, + Lyrics3 and more...
  • Writes EXIF, GPS, IPTC, @@ -227,7 +240,7 @@ hex dump outputs
-

A Note to Unix Power-Users

If you find +

A Note to Unix Power-Users

If you feel the need to use "find" or "awk" in conjunction with ExifTool, then you probably haven't discovered the full power of ExifTool. Read about the -ext, -if, -p and -tagsFromFile options in the @@ -257,6 +270,10 @@
"Insanely great tool with a long learning curve ..." - Adobe Forums
+
"ExifTool has been outstanding in our custom used Tesla image gallery build. +We are able to aggregate image meta from our user base and incorporate this into development +iterations to continually optimize our platform..." +- Find My Electric
"... it's super awesome, it's super reliable and after many years of development it's still being updated!" - P_W999 blog @@ -274,8 +291,9 @@

ExifTool can Read, Write and/or Create files in the following formats. Also listed are the support levels for EXIF, IPTC, XMP, ICC_Profile and other metadata types for each file format.

-
+
+ @@ -286,8 +304,8 @@ - - + + @@ -304,6 +322,7 @@ + @@ -334,7 +353,7 @@ - + @@ -344,7 +363,7 @@ - + @@ -360,15 +379,18 @@ + + + @@ -379,34 +401,38 @@ - + - - + + + + - - - + + + + - + + @@ -422,7 +448,7 @@ - + @@ -471,7 +497,8 @@ 3 Non-standard format, 4 Only writable for PostScript-format file type, 5 Only writable for PDF-format file type, -6 Only writable when ignoring minor errors due to Phocus incompatibility +6 Only writable when ignoring minor errors due to Phocus incompatibility, +7 Old metdata is never actually deleted

Supported JPEG Meta Information

ExifTool can Read, Write and/or Create the following types of meta information in JPEG images:

@@ -493,17 +520,22 @@ + + + + + @@ -511,6 +543,7 @@ + @@ -528,9 +561,11 @@ + -
File TypeSupportDescriptionEXIFIPTCXMPICC1Other
360R/WGoPro 360 video (QuickTime-based)R/W3R/W3R/W/C-R/W/C QuickTime, R GoPro
3FRRHasselblad RAW (TIFF-based)RRRR-
3G2, 3GP2R/W3rd Gen. Partnership Project 2 a/v (QuickTime-based)R/W3R/W3R/W/C-R/W/C QuickTime
3GP, 3GPPR/W3rd Gen. Partnership Project a/v (QuickTime-based)R/W3R/W3R/W/C-R/W/C QuickTime
ACRRAmerican College of Radiology ACR-NEMA (DICOM-like)----R DICOM
AFM, ACFM, AMFMRAdobe [Composite/Multiple Master] Font Metrics----R Font
AI, AITR/WAdobe Illustrator [Template] (PS or PDF)R/W/C4R/W/C4R/W/C5R/W/C4R/W/C PDF PostScript, R Photoshop
AIFF, AIF, AIFCRAudio Interchange File Format [Compressed]----R AIFF ID3
APERMonkey's Audio----R APE ID3
AIFF, AIF, AIFCRAudio Interchange File Format [Compressed]----R AIFF ID3 Lyrics3
APERMonkey's Audio----R APE ID3 Lyrics3
ARQR/WSony Alpha Pixel-Shift RAW (TIFF-based)R/W/CR/W/CR/W/CR/W/CR/W Sony SonyIDC
ARWR/WSony Alpha RAW (TIFF-based)R/W/CR/W/CR/W/CR/W/CR/W Sony SonyIDC
ASFRMicrosoft Advanced Systems Format--R-R ASF
CRW, CIFFR/WCanon RAW Camera Image File Format (CRW spec)--R/W/C-R/W CanonRaw, R/W/C CanonVRD2
CS1R/WSinar CaptureShop 1-shot RAW (PSD-based)R/W/CR/W/CR/W/CR/W/CR Photoshop
CSVRComma-Separated Values----R Text
CZIRZeiss Integrated Software RAW (ZISRAW)----R ZISRAW, R XML
DCM, DC3, DIC, DICMRDICOM - Digital Imaging and Communications in Medicine----R DICOM
DCPR/WDNG Camera Profile (DNG-like)R/W/CR/W/CR/W/CR/W/C-
DCRRKodak Digital Camera RAW (TIFF-based)RRRR-
FFFRFLIR Systems thermal image File Format----R FLIR
FITSRFlexible Image Transport System----R FITS
FLARMacromedia/Adobe Flash project (FPX-like)--RRR FlashPix
FLACRFree Lossless Audio Codec----R FLAC ID3
FLACRFree Lossless Audio Codec----R FLAC ID3 Lyrics3
FLIFR/WFree Lossless Image FormatR/W/C-R/W/CR/W/CR FLIF
FLVRFlash Video--R-R Flash
FPFRFLIR Public image Format----R FLIR
GZ, GZIPRGNU ZIP compressed archive----R ZIP
HDP, WDP, JXRR/WWindows HD Photo / Media Photo / JPEG XR (TIFF-based)R/W/CR/W/CR/W/CR/W/C-
HDRRRadiance RGBE High Dynamic-Range----R Radiance
HEIC, HEIFR/WHigh Efficiency Image Format (QuickTime-based)R/W/C-R/W/CR/WR/W QuickTime
HEIC, HEIF, HIFR/WHigh Efficiency Image Format (QuickTime-based)R/W/C-R/W/CR/WR/W QuickTime
HTML, HTM, XHTMLR[Extensible] HyperText Markup Language----R HTML
ICC, ICMR/W/C1International Color Consortium color profile---R/W/C-
ICS, ICALRiCalendar Schedule----R VCalendar
JP2, JPF, JPM, JPXR/WJPEG 2000 image [Compound/Extended]R/W/C3R/W/C3R/W/CRR/W/C Jpeg2000, R Photoshop3
JPEG, JPG, JPER/WJoint Photographic Experts Group imageR/W/CR/W/CR/W/CR/W/CSupported JPEG Meta Information
JSONRJavaScript Object Notation----R JSON
JXLR/WJPEG XL (codestream and ISO BMFF)R/W/C-R/W/C--
K25RKodak DC25 RAW (TIFF-based)RRRR-
KDCRKodak Digital Camera RAW (TIFF-based)RRRRR Kodak
KEY, KTHRApple iWork '09 Keynote presentation/Theme----R XML ZIP
LARLossless Audio (RIFF-based)R3-R-R RIFF
LFP, LFRRLytro Light Field Picture----R Lytro
LIFRLeica Image File----R LIF
LNKRMicrosoft Shell Link (Windows shortcut)----R LNK
LRVR/WLow-Resolution Video (QuickTime-based)R/W3R/W3R/W/C-R/W/C QuickTime
M2TS, MTS, M2T, TSRMPEG-2 Transport Stream (used for AVCHD video)----R M2TS H264
M4A, M4B, M4P, M4VR/WMPEG-4 Audio/Video (QuickTime-based)R/W3R/W3R/W/C-R/W/C QuickTime
MACOSRMacOS "._" sidecar file (may have any extension)----R XAttr RSRC
MAXR3D Studio MAX (FPX-like)--RRR FlashPix
MEFR/WMamiya (RAW) Electronic Format (TIFF-based)R/W/CR/W/CR/W/CR/W/C-
MIER/W/CMeta Information Encapsulation (MIE specification)R/W/CR/W/CR/W/CR/W/CR/W/C MIE
MOIRMOD Information file----R MOI
MOSR/WCreo Leaf Mosaic (TIFF-based)R/W/CR/W/CR/W/CR/W/CR Leaf
MOV, QTR/WApple QuickTime MovieR/W3R/W3R/W/C-R/W/C QuickTime
MP3RMPEG-1 layer 3 audio----R MPEG ID3 APE
MP3RMPEG-1 layer 3 audio----R MPEG ID3 Lyrics3 APE
MP4R/WMotion Picture Experts Group version 4 (QuickTime-based)R/W3R/W3R/W/C-R/W/C QuickTime
MPCRMusepack Audio----R MPC ID3 APE
MPEG, MPG, M2VRMotion Picture Experts Group version 1 or 2----R MPEG ID3
MPCRMusepack Audio----R MPC ID3 Lyrics3 APE
MPEG, MPG, M2VRMotion Picture Experts Group version 1 or 2----R MPEG ID3 Lyrics3
MPOR/WExtended Multi-Picture format (JPEG with MPF extensions)R/W/CR/W/CR/W/CR/W/CSupported JPEG Meta Information
MQVR/WSony Mobile QuickTime VideoR/W3R/W3R/W/C-R/W/C QuickTime
MRWR/WMinolta RAWR/W/CR/W/CR/W/CR/W/CR/W MinoltaRaw Minolta
MRCRMedical Research Council----R MRC
MXFRMaterial Exchange Format----R MXF
NEFR/WNikon (RAW) Electronic Format (TIFF-based)R/W/CR/W/CR/W/CR/W/CR/W Nikon NikonCapture
NKSCR/WNikon Sidecar (XMP-based)--R/W/C--
NMBTEMPLATERApple iWork '09 Numbers Template----R XML ZIP
NRWR/WNikon RAW (2) (TIFF-based)R/W/CR/W/CR/W/CR/W/CR/W Nikon NikonCapture
NUMBERSRApple iWork '09 Numbers spreadsheet----R XML ZIP
ORUnix compiled code Object----R EXE
ODB, ODC, ODF, ODG,
ODI, ODP, ODS, ODT
ROpen Document Database/Chart/Formula/Graphics/
Image/Presentation/Spreadsheet/Text (ZIP/XML-based)
----R XML ZIP
OFRROptimFROG audio (RIFF-based)R3-R-R RIFF
OGG, OGVROgg bitstream container----R FLAC ID3 Theora Vorbis
OPUSROgg Opus audio----R FLAC ID3 Opus Vorbis
ORFR/WOlympus RAW Format (TIFF-based)R/W/CR/W/CR/W/CR/W/CR/W Olympus
OGG, OGVROgg bitstream container----R FLAC ID3 Lyrics3 Theora Vorbis
ONPRON1 Presets----R JSON PLIST
OPUSROgg Opus audio----R FLAC ID3 Lyrics3 Opus Vorbis
ORF, ORIR/WOlympus RAW Format (TIFF-based)R/W/CR/W/CR/W/CR/W/CR/W Olympus
OTFROpen Type Font----R Font
PACRLossless Predictive Audio Compression (RIFF-based)R3-R-R RIFF
PAGESRApple iWork '09 Pages document----R XML ZIP
PCDRKodak Photo CD Image Pac----R PhotoCD
PCXRPC Paintbrush----R PCX
PDB, PRCRPalm Database----R Palm
PDFR/WAdobe Portable Document FormatR3R3R/W/CR3R/W/C PDF, R Photoshop
PDFR/W7Adobe Portable Document FormatR3R3R/W/CR3R/W/C PDF, R Photoshop
PEFR/WPentax (RAW) Electronic Format (TIFF-based)R/W/CR/W/CR/W/CR/W/CR/W Pentax
PFA, PFBRPostScript Font ASCII/Binary----R Font
PFMRPrinter Font Metrics----R Font
PFMRPortable FloatMap----R PFM
PGFRProgressive Graphics File----R PGF PNG
PICT, PCTRApple Picture file---RR PICT Photoshop
PLISTRApple Property List (binary and XML formats)----R PLIST
PSP, PSPIMAGERPaint Shop ProR---R PSP
QTIF, QTI, QIFR/WQuickTime Image FileR/W3R/W3R/W/C-R/W/C QuickTime
R3DRRedcode RAW video----R Red
RARReal Audio----R Real ID3
RARReal Audio----R Real ID3 Lyrics3
RAFR/WFujiFilm RAW FormatR/W/CR/W/CR/W/CR/W/CR/W FujiFilm
RAM, RPMRReal Audio/Plug-in Metafile----R Real
RARRRAR Archive----R ZIP
APP2 - PreviewImageRSamsung/GE APP2 preview image (multi-segment)
APP3 - Kodak MetaR/WKodak Meta information (EXIF-like)
APP3 - StimRStereo Still Image format
APP3 - JPSRJPEG Stereo image
APP3 - ThermalDataRThermal data from DJI RJPEG file (multi-segment)
APP3 - PreviewImageRSamsung/HP preview image (multi-segment)
APP4 - ScaladoR(presumably written by Scalado mobile software)
APP4 - ThermalParamsRThermal parameters from DJI RJPEG file
APP4 - FPXRRFlashPix Ready in non-standard location (multi-segment)
APP4 - PreviewImageR(continued from APP3)
APP5 - Ricoh RMETARRicoh custom fields
APP5 - Samsung UniqueIDRSamsung Unique ID
APP5 - ThermalCalibrationRThermal calibration data from DJI RJPEG file
APP5 - PreviewImageR(continued from APP4)
APP6 - EPPIMRToshiba PrintIM
APP6 - NITFRNational Imagery Transmission Format
APP6 - HP TDHDRHewlett-Packard Photosmart R837 TDHD information
APP6 - GoProRGoPro Metadata Format (GPMF) information
APP6 - DJI DTATRDJI Thermal Analysis Tool record (JSON format)
APP7 - PentaxRPentax APP7 maker notes
APP7 - QualcommRQualcomm Camera Attributes
APP7 - HuaweiRHuawei APP7 maker notes (extract with Unknown option)
APP9 - Media JukeboxRMedia Jukebox XML information
APP10 - CommentRPhotoStudio Unicode Comment
APP11 - JPEG-HDRRJPEG-HDR compressed ratio image
APP11 - JUMBFRJpeg Universal Metadata Box Format (multi-segment)
APP12 - Picture InfoRASCII-based Picture Information
APP12 - DuckyR/W/CPhotoshop "Save for Web"
APP13 - Photoshop IRBR/W/CImage Resource Block (multi-segment, includes IPTC)
MIE trailerR/WMeta Information Encapsulation
Samsung trailerRSamsung Galaxy trailer
Insta360 trailerRInsta360 trailer found in INSP files
NikonApp trailerRNikon trailer added by NX Studio to NEF/NRW files
PreviewImage trailerR/W/C(preview image written after JPEG EOI)
EmbeddedVideo trailerR(extracted only with ExtractEmbedded option)
1 All trailers except Samsung, Insta360, PreviewImage and EmbeddedVideo also have R/W support in TIFF images.
+1 All trailers except Samsung, Insta360, PreviewImage and EmbeddedVideo also have +R/W support in TIFF images, and the NikonApp trailer is used in NEF/NRW files.

System Requirements

@@ -780,55 +815,56 @@
- + +
FamilyGroup Names
0 (Information Type)AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP4, APP5, -APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG, DV, DjVu, Ducky, -EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font, +AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP3, APP4, +APP5, APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG, DV, DjVu, +Ducky, EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font, FotoStation, GIF, GIMP, GeoTiff, GoPro, H264, HTML, ICC_Profile, ID3, IPTC, -ISO, ITC, JFIF, JPEG, JSON, Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, MIFF, -MNG, MOI, MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg, OpenEXR, -Opus, PDF, PICT, PLIST, PNG, PSP, Palm, Parrot, PanasonicRaw, PhotoCD, -PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF, RIFF, RSRC, -RTF, Radiance, Rawzor, Real, Red, SVG, SigmaRaw, Stim, Theora, Torrent, -Trailer, VCard, Vorbis, WTV, XML, XMP, ZIP +ISO, ITC, JFIF, JPEG, JSON, JUMBF, Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, +MIFF, MNG, MOI, MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg, +OpenEXR, Opus, PDF, PICT, PLIST, PNG, PSP, Palm, Parrot, PanasonicRaw, +PhotoCD, PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF, +RIFF, RSRC, RTF, Radiance, Rawzor, Real, Red, SVG, SigmaRaw, Stim, Theora, +Torrent, Trailer, UserParam, VCard, Vorbis, WTV, XML, XMP, ZIP
1 (Specific Location) AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, AdobeDNG, Apple, Audible, -CIFF, CameraIFD, Canon, CanonCustom, CanonRaw, CanonVRD, Casio, Chapter#, -Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM, EXE, EXIF, -ExifIFD, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font, +CBOR, CIFF, CameraIFD, Canon, CanonCustom, CanonRaw, CanonVRD, Casio, +Chapter#, Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM, +EXE, EXIF, ExifIFD, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font, FotoStation, FujiFilm, FujiIFD, GE, GIF, GIMP, GPS, GeoTiff, GlobParamIFD, GoPro, GraphConv, H264, HP, HTC, HTML, HTML-dc, HTML-ncc, HTML-office, HTML-prod, HTML-vw96, HTTP-equiv, ICC-chrm, ICC-clrt, ICC-header, ICC-meas, ICC-meta, ICC-view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360, -InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JSON, JVC, Jpeg2000, -KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD, -KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lytro, M2TS, MAC, MIE-Audio, -MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, -MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient, -MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MNG, -MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS, MakerNotes, -MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft, Minolta, -MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom, NikonScan, -Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF, PICT, PNG, PNG-pHYs, PSP, -Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD, PhotoMechanic, -Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD, -Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor, -Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5, -Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, -SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD, -System, Theora, Torrent, Track#, UserData, VCalendar, VCard, Version0, -Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP-GAudio, XMP-GDepth, -XMP-GFocus, XMP-GImage, XMP-GPano, XMP-GSpherical, XMP-LImage, XMP-MP, -XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album, XMP-apple-fi, -XMP-aux, XMP-cc, XMP-cell, XMP-creatorAtom, XMP-crs, XMP-dc, XMP-dex, -XMP-digiKam, XMP-drone-dji, XMP-dwc, XMP-exif, XMP-exifEX, -XMP-expressionmedia, XMP-extensis, XMP-fpv, XMP-getty, XMP-ics, -XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-microsoft, -XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx, XMP-photomech, -XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism, XMP-prl, XMP-prm, XMP-pur, -XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM, -XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, ZIP +InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JPS, JSON, JUMBF, JVC, +Jpeg2000, KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD, +KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lyrics3, Lytro, M2TS, MAC, +MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, +MIE-Geo, MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, +MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, +MIFF, MNG, MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS, +MakerNotes, MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft, +Minolta, MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom, +NikonScan, NikonSettings, NineEdits, Nintendo, Ocad, Ogg, Olympus, OpenEXR, +Opus, PDF, PICT, PNG, PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax, +PhaseOne, PhotoCD, PhotoMechanic, Photoshop, PictureInfo, PostScript, +PreviewIFD, PrintIM, ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF, +RMETA, RSRC, RTF, Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP, +Real-RA3, Real-RA4, Real-RA5, Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, +SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, +Sony, SonyIDC, Stim, SubIFD, System, Theora, Torrent, Track#, UserData, +UserParam, VCalendar, VCard, Version0, Vorbis, WTV, XML, XMP, XMP-DICOM, +XMP-Device, XMP-GAudio, XMP-GDepth, XMP-GFocus, XMP-GImage, XMP-GPano, +XMP-GSpherical, XMP-LImage, XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, +XMP-acdsee, XMP-album, XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell, +XMP-creatorAtom, XMP-crs, XMP-dc, XMP-dex, XMP-digiKam, XMP-drone-dji, +XMP-dwc, XMP-exif, XMP-exifEX, XMP-expressionmedia, XMP-extensis, XMP-fpv, +XMP-getty, XMP-ics, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, +XMP-microsoft, XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx, +XMP-photomech, XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism, XMP-prl, +XMP-prm, XMP-pur, XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ, +XMP-xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, +ZIP, iTunes
2 (Category) Audio, Author, Camera, Device, Document, ExifTool, Image, Location, Other, @@ -846,6 +882,12 @@
6 (EXIF/TIFF Format) int8u, string, int16u, int32u, rational64u, int8s, undef, int16s, int32s, rational64s, float, double, ifd, unicode, complex, int64u, int64s, ifd64
7 (Tag ID)ID-xxx (where xxx is the tag ID. Numerical ID's are given in hex with a +leading "0x" if the HexTagIDs API option +is set, as are characters in non-numerical ID's which are not valid in a group +name. Note that unlike other group names, family 7 group names are case +sensitive.)

The exiftool output can be organized based on these groups using the @@ -854,7 +896,7 @@ the output. See the -g option in the exiftool application documentation for more details, and the GetGroup function in the ExifTool library for a description of the group families. Note -that when writing, only family 0, 1 and 2 group names may be used.

+that when writing, only family 0, 1, 2 and 7 group names may be used.

Writing Meta Information

@@ -919,7 +961,7 @@

Alternatively, information may be written to a specific group only, bypassing these priorities, by providing a group name for the tag. The "Writing Meta Information" section above gave the syntax -rules for exiftool command-line arguments to do this. Any family 0, 1 or 2 group +rules for exiftool command-line arguments to do this. Any family 0, 1, 2 or 7 group name may be used when writing information, although not all groups are writable.

The "-tagsFromFile" Option

@@ -973,10 +1015,11 @@
  • [2020-02-18] Hasselblad Phocus software will no longer update the small preview or thumbnail images of FFF files edited by ExifTool. This is perhaps due to -some unreferenced preview information in the file that is lost when edited by -ExifTool, but this does not seem to have any other effect. +some unreferenced preview information +in the file that is lost when edited by ExifTool, but this does not seem to have +any other effect. [ExifTool 11.88 and later issue a minor error when attempting to -write FFF files]
  • +write FFF files, but this problem seems to be fixed in Phocus v3.5.4]
  • [2019-05-29] Canon Digital Photo Professional 4 (DPP4) will destroy a CR3 image when editing if it had previously been edited by DPP4 followed by ExifTool. @@ -1052,6 +1095,8 @@ option, or ensure that input file names do not start with a dash (U+002D) or a Unicode minus sign (U+2212). One way to accomplish this is to prefix input file names with a known directory name, eg.) "./FILENAME".

    +

    As well, untrusted window title strings should not be using with the +-progress:TITLE option.

    Date/Time Shift Feature

    @@ -1146,7 +1191,10 @@ the print conversions (-n) if these features aren't required. Note that the exclude options (-x or --TAG) are not very efficient, and may have a negative impact on performance if a large number of -tags are excluded individually.

    +tags are excluded individually. The exception is XMP groups, which are bypassed +in processing so they are never even extracted -- specifying +--XMP-crs:all and -XMP-crd:all may speed processing +significantly by avoiding processing of bulky Adobe image-editing information.

    The -fast option can significantly increase speed when extracting information from JPEG images which are piped across a slow network @@ -1209,7 +1257,9 @@

  • Canon RAW (CRW) File Format Specification
  • MIE 1.1 File Format Specification (pdf)
  • ExifTool source code on GitHub
  • -
  • ExifTool SourceForge project page (alternate discussion forum)
  • +
  • ExifTool SourceForge project page (alternate + discussion forum and + home page)
  • JPEG Image Samples (and Table of Makernote Types)
  • Image::ExifTool at MetaCPAN
  • @@ -1234,6 +1284,7 @@

    Windows

    Other Links

    @@ -1442,6 +1497,7 @@ + $ @@ -1449,8 +1505,10 @@
    -

    (Your generous donations have provided the funds used to -register exiftool.org and pay for web site hosting.)

    +

    (Your generous donations have provided the funds used to register +exiftool.org and pay for web site hosting, and for the Mac Mini used to generate +distribution files, run the necessary Windows virtual machine, and maintain +source-code and forum backups.)

    Contact Me

    diff -Nru libimage-exiftool-perl-11.88/html/install.html libimage-exiftool-perl-12.40+dfsg/html/install.html --- libimage-exiftool-perl-11.88/html/install.html 2020-02-20 14:44:19.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/install.html 2022-02-09 12:19:14.000000000 +0000 @@ -31,7 +31,7 @@ @@ -52,10 +52,10 @@

    Stand-Alone Executable

    1. Download the Windows Executable from the ExifTool home page. -
      (The file you download should be named "exiftool-11.88.zip".)
    2. +
      (The file you download should be named "exiftool-12.40.zip".)
    3. Extract "exiftool(-k).exe" from the ".zip" file, and place it on your Desktop. -
      (Double-click on "exiftool-11.88.zip" to open +
      (Double-click on "exiftool-12.40.zip" to open the archive, then drag "exiftool(-k).exe" to your Desktop.)

    You can now double-click on "exiftool(-k).exe" to read the @@ -89,7 +89,7 @@ temporary files -- these are the Perl libraries used by the exiftool application which are unpacked the first time exiftool is run. -

    Uninstalling:

    +

    Uninstalling:

    1. Drag "exiftool(-k).exe" (or "C:\WINDOWS\exiftool.exe") into the Recycle bin.
    2. @@ -99,7 +99,9 @@ the value of the TEMP environment variable (typically "C:\Documents and Settings\USER\Local Settings\Temp" for Windows XP, or "C:\Users\USER\AppData\Local\Temp" for Windows 7 -or later). +or later). Alternately, this command may be used to delete these files: +
      for /D %d in (%TEMP%\par-*) do rmdir /s /q %d
      +

    Full Perl Distribution

    You must have Perl installed to use this version. (A free version of Perl @@ -107,7 +109,7 @@ activeperl.com.)

    1. Download the Image-ExifTool distribution from the ExifTool home page -
      (The file you download should be named "Image-ExifTool-11.88.tar.gz".)
    2. +
      (The file you download should be named "Image-ExifTool-12.40.tar.gz".)
    3. Extract the ExifTool files from the archive.
      (The archive is a gzipped tar file, and can be opened with various Windows utilities, including WinZip.)
    4. @@ -122,7 +124,7 @@ can run exiftool by typing "exiftool.pl" at the "cmd.exe" prompt. Otherwise you should type "perl c:\windows\exiftool.pl".

      -

      Uninstalling:

      +

      Uninstalling:

      1. Drag "C:\WINDOWS\exiftool.pl" and "C:\WINDOWS\lib" into the Recycle bin. You should first confirm @@ -132,7 +134,7 @@

      -

      MacOS

      +

      MacOS

      If you have installed the BSDSDK package from the Xcode Developer Tools (ie. if you have the "make" utility), you should @@ -149,7 +151,7 @@

      MacOS Package

      1. Download the ExifTool MacOS Package from the ExifTool home page. -
        (The file you download should be named "ExifTool-11.88.dmg".)
      2. +
        (The file you download should be named "ExifTool-12.40.dmg".)
      3. Install as a normal MacOS package.
        (Open the disk image, double-click on the install package, and follow the instructions. See the second item in the Notes section below if you are stopped with an "unidentified developer" message.) @@ -165,12 +167,12 @@
        1. Download the Image-ExifTool distribution from the ExifTool home page to your Desktop. -
          (The file you download should be named "Image-ExifTool-11.88.tar.gz".)
        2. +
          (The file you download should be named "Image-ExifTool-12.40.tar.gz".)
        3. Launch the Terminal application from the Utilities folder in your Applications folder.
        4. In the Terminal window, type the following:
              cd ~/Desktop
          -    tar -xzf Image-ExifTool-11.88.tar.gz
          -    cd Image-ExifTool-11.88
          +    tar -xzf Image-ExifTool-12.40.tar.gz
          +    cd Image-ExifTool-12.40
               sudo cp -r exiftool lib /usr/local/bin
           
          (Note: The last step above will require you to enter your @@ -186,7 +188,7 @@ precedence for exiftool, but /Library/Perl/#.#.# is the default for any other Perl scripts.
        5. In MacOS 10.8 or later, you may see this message when you try to open the install package: -
          "ExifTool-11.88.pkg" can't be opened because it is from an +
          "ExifTool-12.40.pkg" can't be opened because it is from an unidentified developer.
          The solution is to control-click on the pkg then select "Open" from the pop-up menu instead of just double-clicking. An alternative is to lower the security settings by changing "Allow applications downloaded from" to @@ -195,7 +197,7 @@ here for a full description.)
        6. -

          Uninstalling

          +

          Uninstalling

          1. Launch the "Terminal" application from the Applications Utilities folder.
          2. Type "open /usr/local/bin" (without the quotes) in the Terminal @@ -213,11 +215,11 @@
            1. Download the Image-ExifTool distribution from the ExifTool home page -
              (The file you download should be named "Image-ExifTool-11.88.tar.gz".)
            2. +
              (The file you download should be named "Image-ExifTool-12.40.tar.gz".)
            3. Unpack the distribution and make it your current directory by typing:
                  cd <your download directory>
              -    gzip -dc Image-ExifTool-11.88.tar.gz | tar -xf -
              -    cd Image-ExifTool-11.88
              +    gzip -dc Image-ExifTool-12.40.tar.gz | tar -xf -
              +    cd Image-ExifTool-12.40
               
              (At this point you may run exiftool by typing "./exiftool <image file name>".)
            4. @@ -248,7 +250,7 @@ man Image::ExifTool::TagNames
    -

    Uninstalling

    +

    Uninstalling

    1. Type "sudo make uninstall" from the distribution directory.
      (Note: Unfortunately, newer systems may give an "Uninstall diff -Nru libimage-exiftool-perl-11.88/html/mistakes.html libimage-exiftool-perl-12.40+dfsg/html/mistakes.html --- libimage-exiftool-perl-11.88/html/mistakes.html 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/mistakes.html 2021-03-17 13:12:48.000000000 +0000 @@ -0,0 +1,155 @@ + + + + Common ExifTool Mistakes + + + + + +

      Common Mistakes when using ExifTool

      + + +

      1. Missing Duplicate Tags

      +
      By default, ExifTool will suppress duplicate tags in the output. +Often this is desirable but sometimes one can be fooled into thinking +that information doesn't exist when it is just hidden by another tag +with the same name. For instance, the following command won't necessarily +return all of the EXIF tags: +
      exiftool -exif:all image.jpg
      +
      +To avoid this problem, use the -a option. +
      + + +

      2. Over-use of Wildcards in File Names (eg. "*.*")

      +
      It is often preferable to specify a directory name (eg. ".") instead +of using wildcards (eg. "*.*") for a number of reasons: +
        +
      1. "*.*" will process any file with a "." in the name. This includes files +that ExifTool should not normally process (like the "_original" backup files for +example). By specifying a directory name instead, ExifTool will process only +supported file types. Or the -ext option may be used to process +specific file types.
      2. +
      3. "*.*" will process any sub-directories which contain "." +in the name. This may be unexpected.
      4. +
      5. The -r option (to recursively process sub-directories) is only +effective when a directory name is specified, so it doesn't work when +"*.*" is specified (unless the first-level directories have a "." +in the name, as mentioned in point b above).
      6. +
      7. Arguments like "*.jpg" are a problem on systems with +case-sensitive file names (like OS X and Linux) because JPG images with +uppercase extensions will be missed. It is better to avoid this problem and use +"-ext jpg ." to process all JPG images in the current directory +because this technique is case-insensitive.
      8. +
      9. This can be a security problem on systems where the shell automatically +expands wildcards (eg. Mac and Linux) because a malicious arrangement of file +names could potentially have unwanted effects since they may be interpreted as +ExifTool options (see Security Issues).
      10. +
      11. There are problems using wildcards to match files with Unicode characters in +their names on Windows systems.
      12. +
      +
      + + +

      3. Over-scripting

      + +
      Often users write shell scripts to do some specific batch processing +when the exiftool application already has the ability to do this either without +scripting or with a greatly simplified script. This includes the ability to +recursively scan sub-directories for a specific file extension (case insensitive), +rename files from metadata values, and move files to different directories. +
      + +
      For example, this Unix script (from +here): + +
      find -name '*.jpg' | while read PIC; do
      +DATE=$(exiftool -p '$DateTimeOriginal' $PIC |
      +sed 's/[: ]//g')
      +touch -t $(echo $DATE | sed 's/\(..$\)/\.\1/') $PIC
      +mv -i $PIC $(dirname $PIC)/$DATE.jpg
      +done
      +
      + +may be replaced with this single command: +
      exiftool -d %Y%m%d "-filename<datetimeoriginal" "-filemodifydate<datetimeoriginal#" -ext jpg -r .
      + +Running as a single command is much faster because the startup time of loading +ExifTool is significant.
      + + +

      4. Writing/Copying Multiple Tags

      +
      Any number of tags may be specified on a single command line, but +often people execute a separate command to write or copy each tag, which is very +inefficient. Combining all of the tag assignments into a single command avoids +the significant overhead of launching exiftool for the subsequent commands. For +example: +
      exiftool -artist=phil -modifydate=now -tagsfromfile %d%f.xmp -xmp:title -xmp:description -ext jpg c:\images
      +
      +The -@ option may be used to read command-line arguments from a +file, and may be useful in situations where there are a large number of +arguments.
      + + +

      5. Errors and Inefficiencies when Redirecting Tags

      + +
      The syntax to redirect tags when copying is "-DSTTAG<SRCTAG", +but the syntax also allows a string containing tag names (prefixed by $) +to be used in place of SRCTAG. Three common mistakes when using this +syntax are: +
        +
      1. Adding a leading "-" before the SRCTAG. (eg. +"-EXIF:Artist<-XMP:Creator") This is wrong, and the tag will +not be copied. (It should be "-EXIF:Artist<XMP:Creator".)
      2. +
      3. Adding a leading "$" when copying a simple tag. (eg. +"-comment<$filename"). This is usually not necessary (see +exception below) and it is less efficient for ExifTool to process the source +string than it is to copy the tag directly. Also, values of list-type and +shortcut tags are concatenated in the string rather than being copied +individually, and wildcards are not allowed. Another difference is that a minor +warning is generated if a tag doesn't exist when interpolating its value in a +string (with "$"), but isn't when copying the tag directly.
      4. +
      5. Using "=" instead of "<" to copy a tag, or +using "<" instead of "=" to assign a value. +
        "<" is used for copying, in which case the +source (right-hand-side) operand is interpreted as either +
          +
        1. a tag name (if the operand does not contain a "$" symbol), or
        2. +
        3. a string containing tag names prefixed by "$" symbols (if the operand contains a "$" symbol).
        4. +
        +"=" is used to assign a simple tag value, and the source operand is +a string that is written directly to the destination tag.
        +(And the combination "<=" is used to assign a tag value from the contents of a file.)
        +
      6. +
      +An exception to rule "b" above occurs when trying to copy the value of one tag +to a group of different tags, for example: +
      exiftool "-time:all<datetimeoriginal" FILE  (WRONG!)
      +The above command doesn't work because the destination tag name of "All" writes +to the tag with the same name as the source (ie. only "DateTimeOriginal"). However, +when interpolated in a string the identity of the source tag is lost, so the +following command will write to all tags in the Time group: +
      exiftool "-time:all<$datetimeoriginal" FILE
      +(Note that single quotes would be necessary in the above command under Mac/Linux.) +
      + +
      +Last revised Mar. 11, 2021 +

      <-- Back to ExifTool home page

      + + diff -Nru libimage-exiftool-perl-11.88/html/Shift.html libimage-exiftool-perl-12.40+dfsg/html/Shift.html --- libimage-exiftool-perl-11.88/html/Shift.html 2020-02-20 14:43:20.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/Shift.html 2022-02-09 12:17:57.000000000 +0000 @@ -4,7 +4,7 @@ ExifTool Date/Time Shift Module - + @@ -162,7 +162,7 @@

      AUTHOR

      -

      Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)

      +

      Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)

      This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

      diff -Nru libimage-exiftool-perl-11.88/html/standards.html libimage-exiftool-perl-12.40+dfsg/html/standards.html --- libimage-exiftool-perl-11.88/html/standards.html 2020-02-14 12:33:19.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/standards.html 2021-01-06 17:44:19.000000000 +0000 @@ -290,7 +290,7 @@
    2. http://partners.adobe.com/public/developer/en/tiff/TIFFPM6.pdf
    3. http://www.adobe.com/products/dng/pdfs/dng_spec_1_3_0_0.pdf
    4. http://www.cipa.jp/english/hyoujunka/kikaku/pdf/DC-008-2010_E.pdf
    5. -
    6. http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf
    7. +
    8. https://web.archive.org/web/20180822085951/http://metadataworkinggroup.com/pdf/mwg_guidance.pdf
    9. http://www.adobe.com/devnet/xmp/
    10. http://support.microsoft.com/kb/927527
    11. http://www.jpeg.org/public/jfif.pdf
    12. diff -Nru libimage-exiftool-perl-11.88/html/TagNames/AIFF.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/AIFF.html --- libimage-exiftool-perl-11.88/html/TagNames/AIFF.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/AIFF.html 2020-08-24 11:37:29.000000000 +0000 @@ -27,31 +27,36 @@ no   +'APPL' +ApplicationData +no +  + 'AUTH' Author no   - + 'COMM' Common - --> AIFF Common Tags - + 'COMT' Comment - --> AIFF Comment Tags - + 'FVER' FormatVersion - --> AIFF FormatVers Tags - + 'ID3 ' ID3 - --> ID3 Tags - + 'NAME' Name no @@ -149,7 +154,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Oct 15, 2018 +
      Last revised Aug 24, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Apple.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Apple.html --- libimage-exiftool-perl-11.88/html/TagNames/Apple.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Apple.html 2021-02-18 20:38:36.000000000 +0000 @@ -39,7 +39,7 @@ (unique ID for all images in a burst) 0x0011 -ContentIdentifier +MediaGroupUUID string   @@ -86,7 +86,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Dec 5, 2017 +
      Last revised Feb 18, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/CanonCustom.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/CanonCustom.html --- libimage-exiftool-perl-11.88/html/TagNames/CanonCustom.html 2019-10-18 13:42:54.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/CanonCustom.html 2021-12-20 13:30:18.000000000 +0000 @@ -1352,12 +1352,17 @@ AEBShotCount
      AEBShotCount int32s
      int32s[2] -(one value for some models...) +(EOS 90D) +
      2 = 2 shots +
      3 = 3 shots +
      5 = 5 shots +
      7 = 7 shots +
      (other models storing a single value)
      0 = 3 shots
      1 = 2 shots
      2 = 5 shots
      3 = 7 shots -
      (two values for others) +
      (models storing two values)
      '2 1' = 2 shots
      '3 0' = 3 shots
      '5 2' = 5 shots @@ -1378,15 +1383,17 @@
      2 = Enable (ISO speed)
      0x0109 -UsableShootingModes -int32s[2] +UsableShootingModes +
      UsableShootingModes +int32s
      int32s[2] [Value 0]
      0 = Disable
      1 = Enable
      0x010a -UsableMeteringModes -int32s[2] +UsableMeteringModes +
      UsableMeteringModes +int32s
      int32s[2] [Value 0]
      0 = Disable
      1 = Enable
      @@ -1864,10 +1871,15 @@
      2 = Enable: Down with Set
      0x0610 -ContinuousShootingSpeed -int32s[3] +ContinuousShootingSpeed +
      ContinuousShootingSpeed +
      ContinuousShootingSpeed +int32s[6]
      int32s[5]
      int32s[3] [Value 0]
      0 = Disable +
      1 = Enable +
      [Value 0] +
      0 = Disable
      1 = Enable
      0x0611 @@ -1878,8 +1890,9 @@
      1 = Enable 0x0612 -RestrictDriveModes -int32s[2] +RestrictDriveModes +
      RestrictDriveModes +int32s
      int32s[2] [Value 0]
      0 = Disable
      1 = Enable
      @@ -2126,8 +2139,9 @@
      3 = Ec-N,R 0x080c -TimerLength -int32s[4] +TimerLength +
      TimerLength +int32s[3]
      int32s[4] [Value 0]
      0 = Disable
      1 = Enable
      @@ -2179,7 +2193,9 @@ DefaultEraseOption int32s 0 = Cancel selected -
      1 = Erase selected
      +
      1 = Erase selected +
      2 = Erase RAW selected +
      3 = Erase non-RAW selected 0x0814 RetractLensOnPowerOff @@ -2202,7 +2218,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Oct 18, 2019 +
      Last revised Dec 20, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Canon.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Canon.html --- libimage-exiftool-perl-11.88/html/TagNames/Canon.html 2020-01-31 17:11:39.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Canon.html 2022-02-09 12:08:44.000000000 +0000 @@ -409,7 +409,8 @@ ColorSpace int16u 1 = sRGB -
      2 = Adobe RGB
      +
      2 = Adobe RGB +
      65535 = n/a 0x00b6 PreviewImageInfo @@ -436,8 +437,10 @@
      ColorData7
      ColorData8
      ColorData9 +
      ColorData10 +
      ColorData11
      ColorDataUnknown --
      -
      -
      -
      -
      -
      -
      -
      -
      - +-
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - --> Canon ColorData1 Tags
      --> Canon ColorData2 Tags
      --> Canon ColorData3 Tags @@ -447,6 +450,8 @@
      --> Canon ColorData7 Tags
      --> Canon ColorData8 Tags
      --> Canon ColorData9 Tags +
      --> Canon ColorData10 Tags +
      --> Canon ColorData11 Tags
      --> Canon ColorDataUnknown Tags 0x4002 @@ -530,11 +535,16 @@ - --> Canon HDRInfo Tags +0x4026 +LogInfo +- +--> Canon LogInfo Tags + 0x4028 AFConfig - --> Canon AFConfig Tags - + 0x403f RawBurstModeRoll - @@ -875,13 +885,19 @@ 0x80000406= EOS 6D Mark II 0x80000408= EOS 77D / 9000D 0x80000417= EOS Rebel SL2 / 200D / Kiss X9 +0x80000421= EOS R5 0x80000422= EOS Rebel T100 / 4000D / 3000D 0x80000424= EOS R 0x80000428= EOS-1D X Mark III 0x80000432= EOS Rebel T7 / 2000D / 1500D / Kiss X90 0x80000433= EOS RP +0x80000435= EOS Rebel T8i / 850D / X10i 0x80000436= EOS SL3 / 250D / Kiss X10 0x80000437= EOS 90D +0x80000450= EOS R3 +0x80000453= EOS R6 +0x80000467= PowerShot ZOOM +0x80000468= EOS M50 Mark II / Kiss M2 0x80000520= EOS D2000C 0x80000560= EOS D6000C @@ -946,8 +962,8 @@
      4 = RAW   5 = Superfine
      7 = CRAW -
      130 = Normal Movie -
      131 = Movie (2) +
      130 = Light (RAW) +
      131 = Standard (RAW) 4 @@ -993,6 +1009,7 @@ 6 = Manual Focus (6)
      16 = Pan Focus
      256 = AF + MF +
      257 = Live View
      512 = Movie Snap Focus
      519 = Movie Servo AF @@ -1004,15 +1021,17 @@ 1 = JPEG
      2 = CRW+THM
      3 = AVI+THM -
      4 = TIF   - 5 = TIF+JPEG -
      6 = CR2 +
      4 = TIF +
      5 = TIF+JPEG   + 6 = CR2
      7 = CR2+JPEG -
      9 = MOV   - 10 = MP4 -
      11 = CRM -
      12 = CR3 -
      13 = CR3+JPEG +
      9 = MOV +
      10 = MP4 +
      11 = CRM   + 12 = CR3 +
      13 = CR3+JPEG +
      14 = HIF +
      15 = CR3+HIF 10 @@ -1437,7 +1456,7 @@ 37.2= Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro (A20) 37.3= Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF] 37.4= Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro -38= Canon EF 80-200mm f/4.5-5.6 +38= Canon EF 80-200mm f/4.5-5.6 II 39= Canon EF 75-300mm f/4-5.6 40= Canon EF 28-80mm f/3.5-5.6 41= Canon EF 28-90mm f/4-5.6 @@ -1720,9 +1739,11 @@ 252.1= Canon EF 70-200mm f/2.8L IS III USM + 1.4x 253= Canon EF 70-200mm f/2.8L IS II USM + 2x 253.1= Canon EF 70-200mm f/2.8L IS III USM + 2x -254= Canon EF 100mm f/2.8L Macro IS USM -255= Sigma 24-105mm f/4 DG OS HSM | A or Other Sigma Lens +254= Canon EF 100mm f/2.8L Macro IS USM or Tamron Lens +254.1= Tamron SP 90mm f/2.8 Di VC USD 1:1 Macro (F017) +255= Sigma 24-105mm f/4 DG OS HSM | A or Other Lens 255.1= Sigma 180mm f/2.8 EX DG OS HSM APO Macro +255.2= Tamron SP 70-200mm f/2.8 Di VC USD 368= Sigma 14-24mm f/2.8 DG HSM | A or other Sigma Lens 368.1= Sigma 20mm f/1.4 DG HSM | A 368.2= Sigma 50mm f/1.4 DG HSM | A @@ -1733,7 +1754,9 @@ 368.7= Sigma 85mm f/1.4 DG HSM | A 368.8= Sigma 105mm f/1.4 DG HSM 368.9= Sigma 14-24mm f/2.8 DG HSM -368.10= Sigma 70mm f/2.8 DG Macro +368.10= Sigma 35mm f/1.4 DG HSM | A +368.11= Sigma 70mm f/2.8 DG Macro +368.12= Sigma 18-35mm f/1.8 DC HSM | A 488= Canon EF-S 15-85mm f/3.5-5.6 IS USM 489= Canon EF 70-300mm f/4-5.6L IS USM 490= Canon EF 8-15mm f/4L Fisheye USM @@ -1761,7 +1784,8 @@ 507= Canon EF 16-35mm f/4L IS USM 508= Canon EF 11-24mm f/4L USM or Tamron Lens 508.1= Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023) -624= Sigma 70-200mm f/2.8 DG OS HSM | S +624= Sigma 70-200mm f/2.8 DG OS HSM | S or other Sigma Lens +624.1= Sigma 150-600mm f/5-6.3 | C 747= Canon EF 100-400mm f/4.5-5.6L IS II USM or Tamron Lens 747.1= Tamron SP 150-600mm f/5-6.3 Di VC USD G2 748= Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x or Tamron Lens @@ -1770,13 +1794,14 @@ 749= Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 2x 750= Canon EF 35mm f/1.4L II USM or Tamron Lens 750.1= Tamron SP 85mm f/1.8 Di VC USD (F016) +750.2= Tamron SP 45mm f/1.8 Di VC USD (F013) 751= Canon EF 16-35mm f/2.8L III USM 752= Canon EF 24-105mm f/4L IS II USM 753= Canon EF 85mm f/1.4L IS USM 754= Canon EF 70-200mm f/4L IS II USM 757= Canon EF 400mm f/2.8L IS III USM 758= Canon EF 600mm f/4L IS III USM -1136= Sigma 24-70mm f/2.8 DG OS HSM | Art 017 +1136= Sigma 24-70mm f/2.8 DG OS HSM | A 4142= Canon EF-S 18-135mm f/3.5-5.6 IS STM 4143= Canon EF-M 18-55mm f/3.5-5.6 IS STM or Tamron Lens 4143.1= Tamron 18-200mm f/3.5-6.3 Di III VC @@ -1796,17 +1821,38 @@ 4158= Canon EF-S 18-55mm f/4-5.6 IS STM 4159= Canon EF-M 32mm f/1.4 STM 4160= Canon EF-S 35mm f/2.8 Macro IS STM -4208= Sigma 56mm f/1.4 DC DN | C +4208= Sigma 56mm f/1.4 DC DN | C or other Sigma Lens +4208.1= Sigma 30mm F1.4 DC DN | C 36910= Canon EF 70-300mm f/4-5.6 IS II USM 36912= Canon EF-S 18-135mm f/3.5-5.6 IS USM -61182= Canon RF 35mm F1.8 Macro IS STM or other Canon RF Lens -61182.1= Canon RF 50mm F1.2 L USM -61182.2= Canon RF 24-105mm F4 L IS USM -61182.3= Canon RF 28-70mm F2 L USM +61182= Canon RF 50mm F1.2L USM or other Canon RF Lens +61182.1= Canon RF 24-105mm F4L IS USM +61182.2= Canon RF 28-70mm F2L USM +61182.3= Canon RF 35mm F1.8 MACRO IS STM 61182.4= Canon RF 85mm F1.2L USM -61182.5= Canon RF 24-240mm F4-6.3 IS USM -61182.6= Canon RF 24-70mm F2.8 L IS USM -61182.7= Canon RF 15-35mm F2.8 L IS USM +61182.5= Canon RF 85mm F1.2L USM DS +61182.6= Canon RF 24-70mm F2.8L IS USM +61182.7= Canon RF 15-35mm F2.8L IS USM +61182.8= Canon RF 24-240mm F4-6.3 IS USM +61182.9= Canon RF 70-200mm F2.8L IS USM +61182.10= Canon RF 85mm F2 MACRO IS STM +61182.11= Canon RF 600mm F11 IS STM +61182.12= Canon RF 600mm F11 IS STM + RF1.4x +61182.13= Canon RF 600mm F11 IS STM + RF2x +61182.14= Canon RF 800mm F11 IS STM +61182.15= Canon RF 800mm F11 IS STM + RF1.4x +61182.16= Canon RF 800mm F11 IS STM + RF2x +61182.17= Canon RF 24-105mm F4-7.1 IS STM +61182.18= Canon RF 100-500mm F4.5-7.1L IS USM +61182.19= Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x +61182.20= Canon RF 100-500mm F4.5-7.1L IS USM + RF2x +61182.21= Canon RF 70-200mm F4L IS USM +61182.22= Canon RF 50mm F1.8 STM +61182.23= Canon RF 14-35mm F4L IS USM +61182.24= Canon RF 100-400mm F5.6-8 IS USM +61182.25= Canon RF 100-400mm F5.6-8 IS USM + RF1.4x +61182.26= Canon RF 100-400mm F5.6-8 IS USM + RF2x +61182.27= Canon RF 16mm F2.8 STM 61491= Canon CN-E 14mm T3.1 L F 61492= Canon CN-E 24mm T1.5 L F 61494= Canon CN-E 85mm T1.3 L F @@ -4614,57 +4660,65 @@
      1 = Rotate 90 CW
      2 = Rotate 270 CW +58 +CameraOrientation +int8u +(1200D only) +
      0 = Horizontal (normal) +
      1 = Rotate 90 CW +
      2 = Rotate 270 CW
      + 85 FocusDistanceUpper int16uRev (60D only) - + 87 FocusDistanceLower int16uRev (60D only) - + 125 ColorTemperature int16u (60D only) - + 232 LensType int16uRev --> Canon LensType Values - + 234 MinFocalLength int16uRev   - + 236 MaxFocalLength int16uRev   - + 409 FirmwareVersion no   - + 473 FileIndex int32u (60D only) - + 485 DirectoryIndex int32u (60D only) - + 761 PictureStyleInfo - --> Canon PSInfo2 Tags
      (1200D) - + 801 PictureStyleInfo - @@ -4764,7 +4818,7 @@

      Canon CameraInfo80D Tags

      -

      CameraInfo tags for the EOS 70D.

      +

      CameraInfo tags for the EOS 80D.

      @@ -5472,51 +5526,58 @@ + + + + + - + - + - + - + - + - + - + - + - + @@ -5798,6 +5859,11 @@ + + + + +
      int16uRev  
      150CameraOrientationint8u0 = Horizontal (normal) +
      1 = Rotate 90 CW +
      2 = Rotate 270 CW
      165 FocusDistanceUpper int16uRev  
      167 FocusDistanceLower int16uRev  
      305 WhiteBalance int16u --> Canon WhiteBalance Values
      309 ColorTemperature int16u  
      361 PictureStyle int8u --> Canon PictureStyle Values
      388 LensType int16uRev --> Canon LensType Values
      390 MinFocalLength int16uRev  
      392 MaxFocalLength int16uRev  
      1085 FirmwareVersion no  
      1097 FirmwareVersion noLensSerialNumber undef[5]  
      1473FirmwareVersionno(M50)

      Canon MovieInfo Tags

      @@ -6342,8 +6408,8 @@
      4 = RAW   5 = Superfine
      7 = CRAW -
      130 = Normal Movie -
      131 = Movie (2) +
      130 = Light (RAW) +
      131 = Standard (RAW) 7 @@ -6439,11 +6505,51 @@ int16u   +23 +ShutterMode +int16s +0 = Mechanical +
      1 = Electronic First Curtain +
      2 = Electronic
      + 25 FlashExposureLock int16s 0 = Off
      1 = On
      + +61 +RFLensType +int16u +0 = n/a +
      257 = Canon RF 50mm F1.2L USM +
      258 = Canon RF 24-105mm F4L IS USM +
      259 = Canon RF 28-70mm F2L USM +
      260 = Canon RF 35mm F1.8 MACRO IS STM +
      261 = Canon RF 85mm F1.2L USM +
      262 = Canon RF 85mm F1.2L USM DS +
      263 = Canon RF 24-70mm F2.8L IS USM +
      264 = Canon RF 15-35mm F2.8L IS USM +
      265 = Canon RF 24-240mm F4-6.3 IS USM +
      266 = Canon RF 70-200mm F2.8L IS USM +
      267 = Canon RF 85mm F2 MACRO IS STM +
      268 = Canon RF 600mm F11 IS STM +
      269 = Canon RF 600mm F11 IS STM + RF1.4x +
      270 = Canon RF 600mm F11 IS STM + RF2x +
      271 = Canon RF 800mm F11 IS STM +
      272 = Canon RF 800mm F11 IS STM + RF1.4x +
      273 = Canon RF 800mm F11 IS STM + RF2x +
      274 = Canon RF 24-105mm F4-7.1 IS STM +
      275 = Canon RF 100-500mm F4.5-7.1L IS USM +
      276 = Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x +
      277 = Canon RF 100-500mm F4.5-7.1L IS USM + RF2x +
      278 = Canon RF 70-200mm F4L IS USM +
      280 = Canon RF 50mm F1.8 STM +
      281 = Canon RF 14-35mm F4L IS USM +
      283 = Canon RF 100-400mm F5.6-8 IS USM +
      284 = Canon RF 100-400mm F5.6-8 IS USM + RF1.4x +
      285 = Canon RF 100-400mm F5.6-8 IS USM + RF2x +
      288 = Canon RF 16mm F2.8 STM

      Canon SerialInfo Tags

      @@ -6786,8 +6892,8 @@
      4 = RAW   5 = Superfine
      7 = CRAW -
      130 = Normal Movie -
      131 = Movie (2) +
      130 = Light (RAW) +
      131 = Standard (RAW) 2 @@ -8570,7 +8676,8 @@

      Canon ColorData7 Tags

      -

      These tags are used by the EOS 1DX, 5DmkIII, 6D, 100D, 650D, 700D, M and 7DmkII.

      +

      These tags are used by the EOS 1DX, 5DmkIII, 6D, 7DmkII, 100D, 650D, 700D, +8000D, M and M2.

      @@ -8580,8 +8687,8 @@ - + @@ -8946,6 +9053,8 @@
      0 ColorDataVersion int16s10 = 10 (1DX/5DmkIII/6D/70D/100D/650D/700D/M) -
      11 = 11 (7DmkII/750D/760D)
      10 = 10 (1DX/5DmkIII/6D/70D/100D/650D/700D/M/M2) +
      11 = 11 (7DmkII/750D/760D/8000D)
      63 WB_RGGBLevelsAsShot

      Canon ColorData8 Tags

      +

      These tags are used by the EOS 1DXmkII, 5DS, 5DSR, 5DmkIV, 6DmkII, 77D, 80D, +200D, 800D, 1300D, 2000D, 4000D and 9000D.

      @@ -8955,10 +9064,10 @@ - +
      15 = 15 (6DmkII/77D/200D/800D,9000D) @@ -9413,6 +9522,7 @@
      0 ColorDataVersion int16s12 = 12 (5DS/5DSR) -
      13 = 13 (80D) +
      12 = 12 (1DXmkII/5DS/5DSR) +
      13 = 13 (80D/5DmkIV)
      14 = 14 (1300D/2000D/4000D) -
      15 = 15 (6DmkII/77D/200D/800D)
      63 WB_RGGBLevelsAsShot

      Canon ColorData9 Tags

      +

      These tags are used by the M6mkII, M50, M200, EOS R, RP, 90D, 250D and 850D

      @@ -9424,8 +9534,8 @@ +
      18 = 18 (EOS RP/250D) +
      19 = 19 (90D/850D/M6mkII/M200) @@ -9825,7 +9935,7 @@ - + @@ -9843,7 +9953,8 @@
      int16s 16 = 16 (M50)
      17 = 17 (EOS R) -
      18 = 18 (EOS RP) -
      19 = 19 (90D/M6mkII/M200)
      71 WB_RGGBLevelsAsShot329 PerChannelBlackLevel int16u[4](1300D)
       
      796 NormalWhiteLevel 
      -

      Canon ColorDataUnknown Tags

      +

      Canon ColorData10 Tags

      +

      These tags are used by the R5, R5 and EOS 1DXmkIII.

      @@ -9852,125 +9963,973 @@ - + + + + + + -
      0 ColorDataVersionnoint16s32 = 32 (1DXmkIII) +
      33 = 33 (R5/R6)
      85WB_RGGBLevelsAsShotint16s[4]  
      - -

      Canon ColorInfo Tags

      -
      -
      - - - - - + + - + - - - - + + + + - - + + - -
      Index2Tag NameWritableValues / Notes
      1Saturation89ColorTempAsShot int16s0 = Normal
       
      2ColorToneint16s0 = Normal
      90WB_RGGBLevelsAutoint16s[4] 
      3ColorSpace94ColorTempAuto int16s1 = sRGB -
      2 = Adobe RGB
      - -

      Canon AFMicroAdj Tags

      -
      -
      - - - + + + + + + - - - - + + + + - - - + + + -
      Index4Tag NameWritableValues / Notes
       
      95WB_RGGBLevelsMeasuredint16s[4] 
      1AFMicroAdjModeint32s0 = Disable -
      1 = Adjust all by the same amount -
      2 = Adjust by lens
      99ColorTempMeasuredint16s 
      2AFMicroAdjValuerational64s100WB_RGGBLevelsUnknown?int16s[4]  
      - -

      Canon VignettingCorr Tags

      -

      This information is found in images from newer EOS models.

      -
      -
      - - - - - - + + + - - + + + + + + + - + + + + + + - - + + - + - - + + + + + + + - + + + + + + - - + + - + - - + + + + + + + + + + + + - - + + - - + + + + + + + - + + + + + + - - + + -
      Index2Tag NameWritableValues / Notes
      0VignettingCorrVersionno104ColorTempUnknown?int16s  
      2PeripheralLighting105WB_RGGBLevelsUnknown2?int16s[4] 
      109ColorTempUnknown2? int16s0 = Off -
      1 = On
       
      110WB_RGGBLevelsUnknown3?int16s[4] 
      3DistortionCorrection114ColorTempUnknown3? int16s0 = Off -
      1 = On
       
      4ChromaticAberrationCorr115WB_RGGBLevelsUnknown4?int16s[4] 
      119ColorTempUnknown4? int16s0 = Off -
      1 = On
       
      120WB_RGGBLevelsUnknown5?int16s[4] 
      5ChromaticAberrationCorr124ColorTempUnknown5? int16s0 = Off -
      1 = On
       
      6PeripheralLightingValue125WB_RGGBLevelsUnknown6?int16s[4] 
      129ColorTempUnknown6? int16s  
      130WB_RGGBLevelsUnknown7?int16s[4] 
      9DistortionCorrectionValue134ColorTempUnknown7? int16s  
      11OriginalImageWidth135WB_RGGBLevelsUnknown8?int16s[4] 
      139ColorTempUnknown8? int16s(full size of original image before being rotated or scaled in camera)
       
      140WB_RGGBLevelsUnknown9?int16s[4] 
      12OriginalImageHeight144ColorTempUnknown9? int16s  
      - -

      Canon VignettingCorrUnknown Tags

      -

      Vignetting correction from PowerShot models.

      -
      -
      - - - + + + + + - - - + + + -
      Index2Tag NameWritableValues / Notes
      145WB_RGGBLevelsUnknown10?int16s[4] 
      0VignettingCorrVersionno149ColorTempUnknown10?int16s  
      + +150 +WB_RGGBLevelsDaylight +int16s[4] +  + +154 +ColorTempDaylight +int16s +  + +155 +WB_RGGBLevelsShade +int16s[4] +  + +159 +ColorTempShade +int16s +  + +160 +WB_RGGBLevelsCloudy +int16s[4] +  + +164 +ColorTempCloudy +int16s +  + +165 +WB_RGGBLevelsTungsten +int16s[4] +  + +169 +ColorTempTungsten +int16s +  + +170 +WB_RGGBLevelsFluorescent +int16s[4] +  + +174 +ColorTempFluorescent +int16s +  + +175 +WB_RGGBLevelsKelvin +int16s[4] +  + +179 +ColorTempKelvin +int16s +  + +180 +WB_RGGBLevelsFlash +int16s[4] +  + +184 +ColorTempFlash +int16s +  + +185 +WB_RGGBLevelsUnknown11? +int16s[4] +  + +189 +ColorTempUnknown11? +int16s +  + +190 +WB_RGGBLevelsUnknown12? +int16s[4] +  + +194 +ColorTempUnknown12? +int16s +  + +195 +WB_RGGBLevelsUnknown13? +int16s[4] +  + +199 +ColorTempUnknown13? +int16s +  + +200 +WB_RGGBLevelsUnknown14? +int16s[4] +  + +204 +ColorTempUnknown14? +int16s +  + +205 +WB_RGGBLevelsUnknown15? +int16s[4] +  + +209 +ColorTempUnknown15? +int16s +  + +210 +WB_RGGBLevelsUnknown16? +int16s[4] +  + +214 +ColorTempUnknown16? +int16s +  + +215 +WB_RGGBLevelsUnknown17? +int16s[4] +  + +219 +ColorTempUnknown17? +int16s +  + +220 +WB_RGGBLevelsUnknown18? +int16s[4] +  + +224 +ColorTempUnknown18? +int16s +  + +225 +WB_RGGBLevelsUnknown19? +int16s[4] +  + +229 +ColorTempUnknown19? +int16s +  + +230 +WB_RGGBLevelsUnknown20? +int16s[4] +  + +234 +ColorTempUnknown20? +int16s +  + +235 +WB_RGGBLevelsUnknown21? +int16s[4] +  + +239 +ColorTempUnknown21? +int16s +  + +240 +WB_RGGBLevelsUnknown22? +int16s[4] +  + +244 +ColorTempUnknown22? +int16s +  + +245 +WB_RGGBLevelsUnknown23? +int16s[4] +  + +249 +ColorTempUnknown23? +int16s +  + +250 +WB_RGGBLevelsUnknown24? +int16s[4] +  + +254 +ColorTempUnknown24? +int16s +  + +255 +WB_RGGBLevelsUnknown25? +int16s[4] +  + +259 +ColorTempUnknown25? +int16s +  + +260 +WB_RGGBLevelsUnknown26? +int16s[4] +  + +264 +ColorTempUnknown26? +int16s +  + +265 +WB_RGGBLevelsUnknown27? +int16s[4] +  + +269 +ColorTempUnknown27? +int16s +  + +270 +WB_RGGBLevelsUnknown28? +int16s[4] +  + +274 +ColorTempUnknown28? +int16s +  + +275 +WB_RGGBLevelsUnknown29? +int16s[4] +  + +279 +ColorTempUnknown29? +int16s +  + +280 +ColorCalib? +- +--> Canon ColorCalib Tags + +343 +PerChannelBlackLevel +int16u[4] +  + +810 +NormalWhiteLevel +int16u +  + +811 +SpecularWhiteLevel +int16u +  + +812 +LinearityUpperMargin +int16u +  + + +

      Canon ColorData11 Tags

      +

      These tags are used by the EOS R3

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index2Tag NameWritableValues / Notes
      0ColorDataVersionint16s34 = 34 (R3)
      105WB_RGGBLevelsAsShotint16s[4] 
      109ColorTempAsShotint16s 
      110WB_RGGBLevelsAutoint16s[4] 
      114ColorTempAutoint16s 
      115WB_RGGBLevelsMeasuredint16s[4] 
      119ColorTempMeasuredint16s 
      120WB_RGGBLevelsUnknown?int16s[4] 
      124ColorTempUnknown?int16s 
      125WB_RGGBLevelsUnknown2?int16s[4] 
      129ColorTempUnknown2?int16s 
      130WB_RGGBLevelsUnknown3?int16s[4] 
      134ColorTempUnknown3?int16s 
      135WB_RGGBLevelsUnknown4?int16s[4] 
      139ColorTempUnknown4?int16s 
      140WB_RGGBLevelsUnknown5?int16s[4] 
      144ColorTempUnknown5?int16s 
      145WB_RGGBLevelsUnknown6?int16s[4] 
      149ColorTempUnknown6?int16s 
      150WB_RGGBLevelsUnknown7?int16s[4] 
      154ColorTempUnknown7?int16s 
      155WB_RGGBLevelsUnknown8?int16s[4] 
      159ColorTempUnknown8?int16s 
      160WB_RGGBLevelsUnknown9?int16s[4] 
      164ColorTempUnknown9?int16s 
      165WB_RGGBLevelsUnknown10?int16s[4] 
      169ColorTempUnknown10?int16s 
      170WB_RGGBLevelsUnknown11?int16s[4] 
      174ColorTempUnknown11?int16s 
      175WB_RGGBLevelsUnknown11?int16s[4] 
      179ColorTempUnknown11?int16s 
      180WB_RGGBLevelsUnknown12?int16s[4] 
      184ColorTempUnknown12?int16s 
      185WB_RGGBLevelsUnknown13?int16s[4] 
      189ColorTempUnknown13?int16s 
      190WB_RGGBLevelsUnknown14?int16s[4] 
      194ColorTempUnknown14?int16s 
      195WB_RGGBLevelsUnknown15?int16s[4] 
      199ColorTempUnknown15?int16s 
      200WB_RGGBLevelsUnknown16?int16s[4] 
      204ColorTempUnknown16?int16s 
      205WB_RGGBLevelsDaylightint16s[4] 
      209ColorTempDaylightint16s 
      210WB_RGGBLevelsShadeint16s[4] 
      214ColorTempShadeint16s 
      215WB_RGGBLevelsCloudyint16s[4] 
      219ColorTempCloudyint16s 
      220WB_RGGBLevelsTungstenint16s[4] 
      224ColorTempTungstenint16s 
      225WB_RGGBLevelsFluorescentint16s[4] 
      229ColorTempFluorescentint16s 
      230WB_RGGBLevelsKelvinint16s[4] 
      234ColorTempKelvinint16s 
      235WB_RGGBLevelsFlashint16s[4] 
      239ColorTempFlashint16s 
      240WB_RGGBLevelsUnknown17?int16s[4] 
      244ColorTempUnknown17?int16s 
      245WB_RGGBLevelsUnknown18?int16s[4] 
      249ColorTempUnknown18?int16s 
      250WB_RGGBLevelsUnknown19?int16s[4] 
      254ColorTempUnknown19?int16s 
      255WB_RGGBLevelsUnknown20?int16s[4] 
      259ColorTempUnknown20?int16s 
      260WB_RGGBLevelsUnknown21?int16s[4] 
      264ColorTempUnknown21?int16s 
      265WB_RGGBLevelsUnknown22?int16s[4] 
      269ColorTempUnknown22?int16s 
      270WB_RGGBLevelsUnknown23?int16s[4] 
      274ColorTempUnknown23?int16s 
      275WB_RGGBLevelsUnknown24?int16s[4] 
      279ColorTempUnknown24?int16s 
      280WB_RGGBLevelsUnknown25?int16s[4] 
      284ColorTempUnknown25?int16s 
      285WB_RGGBLevelsUnknown26?int16s[4] 
      289ColorTempUnknown26?int16s 
      290WB_RGGBLevelsUnknown27?int16s[4] 
      294ColorTempUnknown27?int16s 
      300ColorCalib?---> Canon ColorCalib Tags
      363PerChannelBlackLevelint16u[4] 
      640NormalWhiteLevelint16u 
      641SpecularWhiteLevelint16u 
      642LinearityUpperMarginint16u 
      + +

      Canon ColorDataUnknown Tags

      +
      +
      + + + + + + + + +
      Index2Tag NameWritableValues / Notes
      0ColorDataVersionno 
      + +

      Canon ColorInfo Tags

      +
      +
      + + + + + + + + + + + + + + + + + + +
      Index2Tag NameWritableValues / Notes
      1Saturationint16s0 = Normal
      2ColorToneint16s0 = Normal
      3ColorSpaceint16s1 = sRGB +
      2 = Adobe RGB
      + +

      Canon AFMicroAdj Tags

      +
      +
      + + + + + + + + + + + + + +
      Index4Tag NameWritableValues / Notes
      1AFMicroAdjModeint32s0 = Disable +
      1 = Adjust all by the same amount +
      2 = Adjust by lens
      2AFMicroAdjValuerational64s 
      + +

      Canon VignettingCorr Tags

      +

      This information is found in images from newer EOS models.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index2Tag NameWritableValues / Notes
      0VignettingCorrVersionno 
      2PeripheralLightingint16s0 = Off +
      1 = On
      3DistortionCorrectionint16s0 = Off +
      1 = On
      4ChromaticAberrationCorrint16s0 = Off +
      1 = On
      5ChromaticAberrationCorrint16s0 = Off +
      1 = On
      6PeripheralLightingValueint16s 
      9DistortionCorrectionValueint16s 
      11OriginalImageWidthint16s(full size of original image before being rotated or scaled in camera)
      12OriginalImageHeightint16s 
      + +

      Canon VignettingCorrUnknown Tags

      +

      Vignetting correction from PowerShot models.

      +
      +
      + + + + + + + + +
      Index2Tag NameWritableValues / Notes
      0VignettingCorrVersionno 

      Canon VignettingCorr2 Tags

      @@ -10191,6 +11150,59 @@
      4 = Art (embossed)
      +

      Canon LogInfo Tags

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index4Tag NameWritableValues / Notes
      4CompressionFormatint32s0 = Editing (ALL-I) +
      1 = Standard (IPB) +
      2 = Light (IPB) +
      3 = Motion JPEG +
      4 = RAW
      6Sharpnessint32s 
      7Saturationint32s0 = Normal
      8ColorToneint32s0 = Normal
      9ColorSpace2int32s0 = BT.709 +
      1 = BT.2020 +
      2 = CinemaGamut
      10ColorMatrixint32s0 = EOS Original +
      1 = Neutral
      11CanonLogVersionint32s0 = OFF +
      1 = CLogV1 +
      2 = CLogV2 +
      3 = CLogV3
      +

      Canon AFConfig Tags

      + + + + + - + - + - + - + - + - + + + + + + @@ -388,50 +400,58 @@ + + + + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + +
      LensFocalLength +
      RFLensType + + + + + @@ -529,7 +558,7 @@ - @@ -625,7 +654,7 @@ - +
      @@ -10600,7 +11612,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Jan 31, 2020 +
      Last revised Feb 9, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/CBOR.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/CBOR.html --- libimage-exiftool-perl-11.88/html/TagNames/CBOR.html 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/CBOR.html 2021-09-30 15:05:44.000000000 +0000 @@ -0,0 +1,62 @@ + + + + +CBOR Tags + + + +

      CBOR Tags

      +

      The tags below are extracted from CBOR (Concise Binary Object +Representation) metadata. The C2PA specification uses this format for some +metadata. As well as these tags, ExifTool will read any existing tags.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Tag NameWritableValues / Notes
      AuthorIdentifierno 
      AuthorNameno 
      DocumentIDno 
      Formatno 
      InstanceIDno 
      Relationshipno 
      ThumbnailHashno+ 
      ThumbnailURLno 
      Titleno 
      + +
      +(This document generated automatically by Image::ExifTool::BuildTagLookup) +
      Last revised Sep 30, 2021 +

      <-- ExifTool Tag Names

      + + diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Composite.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Composite.html --- libimage-exiftool-perl-11.88/html/TagNames/Composite.html 2020-02-13 13:41:05.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Composite.html 2022-01-12 22:57:17.000000000 +0000 @@ -326,45 +326,57 @@
      SampleTime
       
      GPSDateTimenoSony:GPSDateStamp +
      Sony:GPSTimeStamp
       
      GPSDestLatitude no GPS:GPSDestLatitude
      GPS:GPSDestLatitudeRef
       
      GPSDestLatitudeRef no XMP-exif:GPSDestLatitude 'N' = North
      'S' = South
      GPSDestLongitude no GPS:GPSDestLongitude
      GPS:GPSDestLongitudeRef
       
      GPSDestLongitudeRef no XMP-exif:GPSDestLongitude 'E' = East
      'W' = West
      GPSLatitude no GPS:GPSLatitude
      GPS:GPSLatitudeRef
       
      GPSLatitude no QuickTime:GPSCoordinates  
      GPSLatitude no QuickTime:LocationInformation  
      GPSLatitudenoSony:GPSLatitude +
      Sony:GPSLatitudeRef
       
      GPSLatitudeRef noQuickTime:LocationInformation  
      GPSLongitudenoSony:GPSLongitude +
      Sony:GPSLongitudeRef
       
      GPSLongitudeRef no XMP-exif:GPSLongitude 'E' = East
      'W' = West
      GPSPositionnoyes! GPSLatitude
      GPSLongitude
       
      (when written, writes GPSLatitude, GPSLatitudeRef, GPSLongitude and +GPSLongitudeRef. This tag may be written using the same coordinate +format as provided by Google Maps when right-clicking on a location)
      HyperfocalDistance no FocalLength
      Aperture
      CircleOfConfusion
      (this value may be incorrect if the image has been resized)
      IDCPreviewImage no IDCPreviewStart
      IDCPreviewLength
       
      ISO no Canon:CameraISO
      Canon:BaseISO
      Canon:AutoISO
      (use CameraISO if numerical, otherwise calculate as BaseISO * AutoISO / 100)
      ImageHeight no IFD0:SensorTopBorder
      IFD0:SensorBottomBorder
       
      ImageHeight no Main:PostScript:ImageData
      PostScript:BoundingBox
       
      ImageSize no ImageWidth @@ -440,32 +460,32 @@
      ExifImageHeight
      RawImageCroppedSize
       
      ImageWidth no IFD0:SensorLeftBorder
      IFD0:SensorRightBorder
       
      ImageWidth no Main:PostScript:ImageData
      PostScript:BoundingBox
       
      JpgFromRaw yes JpgFromRawStart
      JpgFromRawLength
      (this tag is writable, and may be used to update existing embedded images, but not create or delete them)
      Lens no Canon:MinFocalLength
      Canon:MaxFocalLength
       
      Lens35efl no Canon:MinFocalLength @@ -473,7 +493,7 @@
      Lens
      ScaleFactor35efl
       
      LensID no LensType @@ -487,10 +507,19 @@
      LensSpec
      LensType2
      LensType3 -
      LensFocalLength
      (attempt to identify the actual lens from all lenses with a given LensType. Applies only to LensType values with a lookup table. May be configured by adding user-defined lenses)
      LensIDnoLensModel +
      Lens +
      XMP-aux:LensID +
      Make
       
      LensID nono LensTypeMake
      LensTypeModel
      --> Composite LensType Values +--> Olympus LensType Values
      (based on tags found in some Panasonic RW2 images)
      LightValue 
      Rotationyesyes! QuickTime:MatrixStructure
      QuickTime:HandlerType
      (writing this tag updates QuickTime MatrixStructure for all tracks with a @@ -793,142 +822,9 @@  
      -

      Composite LensType Values

      -

      The numerical values below are given in hexadecimal. (Prior to ExifTool -9.15 these were in decimal.)

      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      ValueLensType
      '0 00 00'= None
      '0 01 00'= Olympus Zuiko Digital ED 50mm F2.0 Macro
      '0 01 01'= Olympus Zuiko Digital 40-150mm F3.5-4.5
      '0 01 10'= Olympus M.Zuiko Digital ED 14-42mm F3.5-5.6
      '0 02 00'= Olympus Zuiko Digital ED 150mm F2.0
      '0 02 10'= Olympus M.Zuiko Digital 17mm F2.8 Pancake
      '0 03 00'= Olympus Zuiko Digital ED 300mm F2.8
      '0 03 10'= Olympus M.Zuiko Digital ED 14-150mm F4.0-5.6 [II]
      '0 04 10'= Olympus M.Zuiko Digital ED 9-18mm F4.0-5.6
      '0 05 00'= Olympus Zuiko Digital 14-54mm F2.8-3.5
      '0 05 01'= Olympus Zuiko Digital Pro ED 90-250mm F2.8
      '0 05 10'= Olympus M.Zuiko Digital ED 14-42mm F3.5-5.6 L
      '0 06 00'= Olympus Zuiko Digital ED 50-200mm F2.8-3.5
      '0 06 01'= Olympus Zuiko Digital ED 8mm F3.5 Fisheye
      '0 06 10'= Olympus M.Zuiko Digital ED 40-150mm F4.0-5.6
      '0 07 00'= Olympus Zuiko Digital 11-22mm F2.8-3.5
      '0 07 01'= Olympus Zuiko Digital 18-180mm F3.5-6.3
      '0 07 10'= Olympus M.Zuiko Digital ED 12mm F2.0
      '0 08 01'= Olympus Zuiko Digital 70-300mm F4.0-5.6
      '0 08 10'= Olympus M.Zuiko Digital ED 75-300mm F4.8-6.7
      '0 09 10'= Olympus M.Zuiko Digital 14-42mm F3.5-5.6 II
      '0 10 01'= Kenko Tokina Reflex 300mm F6.3 MF Macro
      '0 10 10'= Olympus M.Zuiko Digital ED 12-50mm F3.5-6.3 EZ
      '0 11 10'= Olympus M.Zuiko Digital 45mm F1.8
      '0 12 10'= Olympus M.Zuiko Digital ED 60mm F2.8 Macro
      '0 13 10'= Olympus M.Zuiko Digital 14-42mm F3.5-5.6 II R
      '0 14 10'= Olympus M.Zuiko Digital ED 40-150mm F4.0-5.6 R
      '0 15 00'= Olympus Zuiko Digital ED 7-14mm F4.0
      '0 15 10'= Olympus M.Zuiko Digital ED 75mm F1.8
      '0 16 10'= Olympus M.Zuiko Digital 17mm F1.8
      '0 17 00'= Olympus Zuiko Digital Pro ED 35-100mm F2.0
      '0 18 00'= Olympus Zuiko Digital 14-45mm F3.5-5.6
      '0 18 10'= Olympus M.Zuiko Digital ED 75-300mm F4.8-6.7 II
      '0 19 10'= Olympus M.Zuiko Digital ED 12-40mm F2.8 Pro
      '0 20 00'= Olympus Zuiko Digital 35mm F3.5 Macro
      '0 20 10'= Olympus M.Zuiko Digital ED 40-150mm F2.8 Pro
      '0 21 10'= Olympus M.Zuiko Digital ED 14-42mm F3.5-5.6 EZ
      '0 22 00'= Olympus Zuiko Digital 17.5-45mm F3.5-5.6
      '0 22 10'= Olympus M.Zuiko Digital 25mm F1.8
      '0 23 00'= Olympus Zuiko Digital ED 14-42mm F3.5-5.6
      '0 23 10'= Olympus M.Zuiko Digital ED 7-14mm F2.8 Pro
      '0 24 00'= Olympus Zuiko Digital ED 40-150mm F4.0-5.6
      '0 24 10'= Olympus M.Zuiko Digital ED 300mm F4.0 IS Pro
      '0 25 10'= Olympus M.Zuiko Digital ED 8mm F1.8 Fisheye Pro
      '0 26 10'= Olympus M.Zuiko Digital ED 12-100mm F4.0 IS Pro
      '0 27 10'= Olympus M.Zuiko Digital ED 30mm F3.5 Macro
      '0 28 10'= Olympus M.Zuiko Digital ED 25mm F1.2 Pro
      '0 29 10'= Olympus M.Zuiko Digital ED 17mm F1.2 Pro
      '0 30 00'= Olympus Zuiko Digital ED 50-200mm F2.8-3.5 SWD
      '0 30 10'= Olympus M.Zuiko Digital ED 45mm F1.2 Pro
      '0 31 00'= Olympus Zuiko Digital ED 12-60mm F2.8-4.0 SWD
      '0 32 00'= Olympus Zuiko Digital ED 14-35mm F2.0 SWD
      '0 32 10'= Olympus M.Zuiko Digital ED 12-200mm F3.5-6.3
      '0 33 00'= Olympus Zuiko Digital 25mm F2.8
      '0 34 00'= Olympus Zuiko Digital ED 9-18mm F4.0-5.6
      '0 34 10'= Olympus M.Zuiko Digital ED 12-45mm F4.0 Pro
      '0 35 00'= Olympus Zuiko Digital 14-54mm F2.8-3.5 II
      '1 01 00'= Sigma 18-50mm F3.5-5.6 DC
      '1 01 10'= Sigma 30mm F2.8 EX DN
      '1 02 00'= Sigma 55-200mm F4.0-5.6 DC
      '1 02 10'= Sigma 19mm F2.8 EX DN
      '1 03 00'= Sigma 18-125mm F3.5-5.6 DC
      '1 03 10'= Sigma 30mm F2.8 DN | A
      '1 04 00'= Sigma 18-125mm F3.5-5.6 DC
      '1 04 10'= Sigma 19mm F2.8 DN | A
      '1 05 00'= Sigma 30mm F1.4 EX DC HSM
      '1 05 10'= Sigma 60mm F2.8 DN | A
      '1 06 00'= Sigma APO 50-500mm F4.0-6.3 EX DG HSM
      '1 06 10'= Sigma 30mm F1.4 DC DN | C
      '1 07 00'= Sigma Macro 105mm F2.8 EX DG
      '1 07 10'= Sigma 16mm F1.4 DC DN | C (017)
      '1 08 00'= Sigma APO Macro 150mm F2.8 EX DG HSM
      '1 09 00'= Sigma 18-50mm F2.8 EX DC Macro
      '1 10 00'= Sigma 24mm F1.8 EX DG Aspherical Macro
      '1 11 00'= Sigma APO 135-400mm F4.5-5.6 DG
      '1 12 00'= Sigma APO 300-800mm F5.6 EX DG HSM
      '1 13 00'= Sigma 30mm F1.4 EX DC HSM
      '1 14 00'= Sigma APO 50-500mm F4.0-6.3 EX DG HSM
      '1 15 00'= Sigma 10-20mm F4.0-5.6 EX DC HSM
      '1 16 00'= Sigma APO 70-200mm F2.8 II EX DG Macro HSM
      '1 17 00'= Sigma 50mm F1.4 EX DG HSM
      '2 01 00'= Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.
      '2 01 10'= Lumix G Vario 14-45mm F3.5-5.6 Asph. Mega OIS
      '2 02 00'= Leica D Summilux 25mm F1.4 Asph.
      '2 02 10'= Lumix G Vario 45-200mm F4.0-5.6 Mega OIS
      '2 03 00'= Leica D Vario Elmar 14-50mm F3.8-5.6 Asph. Mega OIS
      '2 03 01'= Leica D Vario Elmar 14-50mm F3.8-5.6 Asph.
      '2 03 10'= Lumix G Vario HD 14-140mm F4.0-5.8 Asph. Mega OIS
      '2 04 00'= Leica D Vario Elmar 14-150mm F3.5-5.6
      '2 04 10'= Lumix G Vario 7-14mm F4.0 Asph.
      '2 05 10'= Lumix G 20mm F1.7 Asph.
      '2 06 10'= Leica DG Macro-Elmarit 45mm F2.8 Asph. Mega OIS
      '2 07 10'= Lumix G Vario 14-42mm F3.5-5.6 Asph. Mega OIS
      '2 08 10'= Lumix G Fisheye 8mm F3.5
      '2 09 10'= Lumix G Vario 100-300mm F4.0-5.6 Mega OIS
      '2 10 10'= Lumix G 14mm F2.5 Asph.
      '2 11 10'= Lumix G 12.5mm F12 3D
      '2 12 10'= Leica DG Summilux 25mm F1.4 Asph.
      '2 13 10'= Lumix G X Vario PZ 45-175mm F4.0-5.6 Asph. Power OIS
      '2 14 10'= Lumix G X Vario PZ 14-42mm F3.5-5.6 Asph. Power OIS
      '2 15 10'= Lumix G X Vario 12-35mm F2.8 Asph. Power OIS
      '2 16 10'= Lumix G Vario 45-150mm F4.0-5.6 Asph. Mega OIS
      '2 17 10'= Lumix G X Vario 35-100mm F2.8 Power OIS
      '2 18 10'= Lumix G Vario 14-42mm F3.5-5.6 II Asph. Mega OIS
      '2 19 10'= Lumix G Vario 14-140mm F3.5-5.6 Asph. Power OIS
      '2 20 10'= Lumix G Vario 12-32mm F3.5-5.6 Asph. Mega OIS
      '2 21 10'= Leica DG Nocticron 42.5mm F1.2 Asph. Power OIS
      '2 22 10'= Leica DG Summilux 15mm F1.7 Asph.
      '2 23 10'= Lumix G Vario 35-100mm F4.0-5.6 Asph. Mega OIS
      '2 24 10'= Lumix G Macro 30mm F2.8 Asph. Mega OIS
      '2 25 10'= Lumix G 42.5mm F1.7 Asph. Power OIS
      '2 26 10'= Lumix G 25mm F1.7 Asph.
      '2 27 10'= Leica DG Vario-Elmar 100-400mm F4.0-6.3 Asph. Power OIS
      '2 28 10'= Lumix G Vario 12-60mm F3.5-5.6 Asph. Power OIS
      '2 29 10'= Leica DG Summilux 12mm F1.4 Asph.
      '2 30 10'= Leica DG Vario-Elmarit 12-60mm F2.8-4 Asph. Power OIS
      '2 33 10'= Lumix G X Vario 12-35mm F2.8 II Asph. Power OIS
      '2 35 10'= Leica DG Vario-Elmarit 8-18mm F2.8-4 Asph.
      '2 36 10'= Leica DG Elmarit 200mm F2.8 Power OIS
      '2 37 10'= Leica DG Vario-Elmarit 50-200mm F2.8-4 Asph. Power OIS
      '2 38 10'= Leica DG Vario-Summilux 10-25mm F1.7 Asph.
      '3 01 00'= Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.
      '3 02 00'= Leica D Summilux 25mm F1.4 Asph.
      '5 01 10'= Tamron 14-150mm F3.5-5.8 Di III
      -
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 13, 2020 +
      Last revised Jan 12, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/DarwinCore.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/DarwinCore.html --- libimage-exiftool-perl-11.88/html/TagNames/DarwinCore.html 2019-10-25 15:45:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/DarwinCore.html 2021-12-08 13:06:37.000000000 +0000 @@ -220,15 +220,16 @@ (EventEventDate) EventID -string_ -(EventEventID) +string/_ +(EventEventID; avoided in favor of XMP-iptcExt:EventID) EventRemarks lang-alt_ (EventEventRemarks) EventTime -date_ +string_ (EventEventTime) EventFieldNotes @@ -388,15 +389,16 @@   HumanObservationEventID -string_ -  +string/_ +(avoided in favor of XMP-iptcExt:EventID) HumanObservationEventRemarks lang-alt_   HumanObservationEventTime -date_ +string_   HumanObservationFieldNotes @@ -516,15 +518,16 @@   MachineObservationEventID -string_ -  +string/_ +(avoided in favor of XMP-iptcExt:EventID) MachineObservationEventRemarks lang-alt_   MachineObservationEventTime -date_ +string_   MachineObservationFieldNotes @@ -1197,14 +1200,14 @@ EventID string -  +(avoided in favor of XMP-iptcExt:EventID) EventRemarks lang-alt   EventTime -date +string   FieldNotes @@ -1810,7 +1813,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised May 4, 2018 +
      Last revised Dec 8, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/DJI.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/DJI.html --- libimage-exiftool-perl-11.88/html/TagNames/DJI.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/DJI.html 2021-01-18 12:53:16.000000000 +0000 @@ -190,9 +190,98 @@   +

      DJI ThermalParams Tags

      +

      Thermal parameters extracted from APP4 of DJI RJPEG files from the ZH20T.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      36K1no 
      40K2no 
      44K3no 
      48K4no 
      52KFno 
      56B1no 
      60B2no 
      68ObjectDistanceno 
      70RelativeHumidityno 
      72Emissivityno 
      74Reflectionno 
      76AmbientTemperatureno 
      80D2no 
      84KJno 
      86DBno 
      88KKno 
      +
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 14, 2019 +
      Last revised Jan 18, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/DPX.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/DPX.html --- libimage-exiftool-perl-11.88/html/TagNames/DPX.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/DPX.html 2021-09-22 18:09:40.000000000 +0000 @@ -131,6 +131,56 @@
      156 = User-defined 8 component element +801 +TransferCharacteristic +no + +
      0 = User-defined +
      1 = Printing density +
      2 = Linear +
      3 = Logarithmic +
      4 = Unspecified video +
      5 = SMPTE 274M +
      6 = ITU-R 704-4 +
      7 = ITU-R 601-5 system B or G (625) +
      8 = ITU-R 601-5 system M (525) +
      9 = Composite video (NTSC) +
      10 = Composite video (PAL) +
      11 = Z (depth) - linear +
      12 = Z (depth) - homogeneous +
      13 = SMPTE ADX +
      14 = ITU-R 2020 NCL +
      15 = ITU-R 2020 CL +
      16 = IEC 61966-2-4 xvYCC +
      17 = ITU-R 2100 NCL/PQ +
      18 = ITU-R 2100 ICtCp/PQ +
      19 = ITU-R 2100 NCL/HLG +
      20 = ITU-R 2100 ICtCp/HLG +
      21 = RP 431-2:2011 Gama 2.6 +
      22 = IEC 61966-2-1 sRGB
      + + +802 +ColorimetricSpecification +no + +
      0 = User-defined +
      1 = Printing density +
      4 = Unspecified video +
      5 = SMPTE 274M +
      6 = ITU-R 704-4 +
      7 = ITU-R 601-5 system B or G (625) +
      8 = ITU-R 601-5 system M (525) +
      9 = Composite video (NTSC) +
      10 = Composite video (PAL) +
      13 = SMPTE ADX +
      14 = ITU-R 2020 +
      15 = P3D65 +
      16 = P3DCI +
      17 = P3D60 +
      18 = ACES
      + + 803 BitDepth no @@ -196,8 +246,18 @@ no   +1628 +AspectRatio +no +  + 1724 -FrameRate +OriginalFrameRate +no +  + +1728 +ShutterAngle no   @@ -211,6 +271,16 @@ no   +1920 +TimeCode +no +  + +1940 +FrameRate +no +  + 1972 Reserved5? no @@ -224,7 +294,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Jun 27, 2016 +
      Last revised Sep 22, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/EXE.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/EXE.html --- libimage-exiftool-perl-11.88/html/TagNames/EXE.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/EXE.html 2020-03-19 14:08:44.000000000 +0000 @@ -280,7 +280,7 @@ LanguageCode no --> EXE LanguageCode Values -
      (extracted from the StringFileInfo value) +
      (Windows code page; extracted from the StringFileInfo value) LegalCopyright no @@ -312,6 +312,8 @@

      EXE LanguageCode Values

      +

      See https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid +for the full list of Microsoft language codes.

      @@ -758,7 +760,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Jul 30, 2018 +
      Last revised Mar 19, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/EXIF.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/EXIF.html --- libimage-exiftool-perl-11.88/html/TagNames/EXIF.html 2020-02-03 13:52:04.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/EXIF.html 2021-10-16 16:44:41.000000000 +0000 @@ -76,6 +76,7 @@
      0x9 = Depth map of reduced-resolution image
      0x10 = Enhanced image data
      0x10001 = Alternate reduced-resolution image +
      0x10004 = Semantic Mask
      0xffffffff = invalid
      Bit 0 = Reduced resolution
      Bit 1 = Single page @@ -137,7 +138,8 @@
      32845 = Pixar LogLuv
      32892 = Sequential Color Filter
      34892 = Linear Raw -
      51177 = Depth Map
      +
      51177 = Depth Map +
      52527 = Semantic Mask
      0x0107 @@ -843,7 +845,8 @@ 0 = Sony Uncompressed 14-bit RAW
      1 = Sony Uncompressed 12-bit RAW
      2 = Sony Compressed RAW -
      3 = Sony Lossless Compressed RAW
      +
      3 = Sony Lossless Compressed RAW +
      4 = Sony Lossless Compressed RAW 2 0x7010 SonyToneCurve @@ -858,6 +861,7 @@ (found in Sony ARW images)
      256 = Off
      257 = Auto +
      272 = Auto (ILCE-1)
      511 = No correction params available
      0x7032 @@ -2775,7 +2779,7 @@ DNGVersion int8u[4]! IFD0 -(tags 0xc612-0xc7b5 are defined by the DNG specification unless otherwise +(tags 0xc612-0xcd3b are defined by the DNG specification unless otherwise noted. See https://helpx.adobe.com/photoshop/digital-negative.html for the specification) @@ -3296,7 +3300,8 @@
      10 = DeltaPerRow
      11 = DeltaPerColumn
      12 = ScalePerRow -
      13 = ScalePerColumn +
      13 = ScalePerColumn +
      14 = WarpRectilinear2 0xc741 @@ -3316,7 +3321,8 @@
      10 = DeltaPerRow
      11 = DeltaPerColumn
      12 = ScalePerRow -
      13 = ScalePerColumn +
      13 = ScalePerColumn +
      14 = WarpRectilinear2 0xc74e @@ -3336,7 +3342,8 @@
      10 = DeltaPerRow
      11 = DeltaPerColumn
      12 = ScalePerRow -
      13 = ScalePerColumn +
      13 = ScalePerColumn +
      14 = WarpRectilinear2 0xc761 @@ -3492,6 +3499,90 @@ IFD0   +0xcd2d +ProfileGainTableMap +undef! +SubIFD +  + +0xcd2e +SemanticName +no +SubIFD +  + +0xcd30 +SemanticInstanceIFD +no +SubIFD +  + +0xcd31 +CalibrationIlluminant3 +int16u! +IFD0 +--> EXIF LightSource Values + +0xcd32 +CameraCalibration3 +rational64s[n]! +IFD0 +  + +0xcd33 +ColorMatrix3 +rational64s[n]! +IFD0 +  + +0xcd34 +ForwardMatrix3 +rational64s[n]! +IFD0 +  + +0xcd35 +IlluminantData1 +undef! +IFD0 +  + +0xcd36 +IlluminantData2 +undef! +IFD0 +  + +0xcd37 +IlluminantData3 +undef! +IFD0 +  + +0xcd38 +MaskSubArea +no +SubIFD +  + +0xcd39 +ProfileHueSatMapData3 +float[n]! +IFD0 +  + +0xcd3a +ReductionMatrix3 +rational64s[n]! +IFD0 +  + +0xcd3b +RGBTables +undef! +IFD0 +  + 0xea1c Padding undef! @@ -3721,7 +3812,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 3, 2020 +
      Last revised Oct 16, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Extra.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Extra.html --- libimage-exiftool-perl-11.88/html/TagNames/Extra.html 2020-02-06 13:18:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Extra.html 2022-02-09 12:08:41.000000000 +0000 @@ -33,25 +33,31 @@ (the JPEG APP14 Adobe segment. Extracted only if specified. See the JPEG Adobe Tags for more information) +BaseName +no +System +(file name without extension. Not generated unless specifically requested or +the API RequestAll option is set) + CanonDR4 yes!^ CanonVRD (the full Canon DPP version 4 DR4 block. This tag is generated only if specifically requested) - + CanonVRD yes!^ CanonVRD (the full Canon DPP VRD trailer block. This tag is generated only if specifically requested) - + Comment yes File (comment embedded in JPEG, GIF89a or PPM/PGM/PBM image) - + CurrentIPTCDigest no File @@ -60,32 +66,32 @@ specified by the MWG. ExifTool automates the handling of this tag in the MWG module -- see the MWG Composite Tags for details)
      - + Directory yes! System (the directory of the file as specified in the call to ExifTool, or "." if no directory was specified. May be written to move the file to another directory that will be created if doesn't already exist) - + EXIF yes! EXIF (the full EXIF data block from JPEG, PNG, JP2, MIE and MIFF images. This tag is generated only if specifically requested) - + EmbeddedVideo no File   - + Error no ExifTool (returns errors that may have occurred while reading or writing a file. Any Error will prevent the file from being processed. Minor errors may be downgraded to warnings with the -m or IgnoreMinorErrors option) - + ExifByteOrder yes File @@ -93,12 +99,12 @@ byte order only for newly created EXIF segments)
      'II' = Little-endian (Intel, II)
      'MM' = Big-endian (Motorola, MM) - + ExifToolVersion no ExifTool (the version of ExifTool currently running) - + ExifUnicodeByteOrder yes - @@ -110,13 +116,13 @@ characters)
      'II' = Little-endian (Intel, II)
      'MM' = Big-endian (Motorola, MM) - + FileAccessDate no System (the date/time of last access of the file. Note that this access time is updated whenever any software, including ExifTool, reads the file) - + FileAttributes no System @@ -160,72 +166,73 @@
      Bit 13 = Not Content Indexed
      Bit 14 = Encrypted - + FileBlockCount no System (extracted only if specifically requested or the SystemTags or RequestAll API option is set) - + FileBlockSize no System (extracted only if specifically requested or the SystemTags or RequestAll API option is set) - + FileCreateDate yes! System (the filesystem creation date/time. Windows/Mac only. In Windows, the file creation date/time is preserved by default when writing if Win32API::File and Win32::API are available. On Mac, this tag is extracted only if it or -the MacOS group is specifically requested or the RequestAll API option is -set to 2 or higher. Requires "setfile" for writing on Mac) - +the MacOS group is specifically requested or the API RequestAll option is +set to 2 or higher. Requires "setfile" for writing on Mac, which may be +installed by typing xcode-select --install in the Terminal) + FileDeviceID no System (extracted only if specifically requested or the SystemTags or RequestAll API option is set) - + FileDeviceNumber no System (extracted only if specifically requested or the SystemTags or RequestAll API option is set) - + FileGroupID yes! System (extracted only if specifically requested or the SystemTags or RequestAll API option is set. Returns group ID number with the -n option, or name otherwise. May be written with either group name or number) - + FileHardLinks no System (extracted only if specifically requested or the SystemTags or RequestAll API option is set) - + FileInodeChangeDate no System (the date/time when the file's directory information was last changed. Non-Windows systems only) - + FileInodeNumber no System (extracted only if specifically requested or the SystemTags or RequestAll API option is set) - + FileModifyDate yes! System (the filesystem modification date/time. Note that ExifTool may not be able to handle filesystem dates before 1970 depending on the limitations of the system's standard libraries) - + FileName yes! System @@ -234,54 +241,54 @@ to allow dry-run tests before actually writing the file name. See filename.html for more information on writing the FileName, Directory and TestName tags) - + FilePath no System (absolute path of source file. Not generated unless specifically requested or -the RequestAll API option is set. Does not support Windows Unicode file +the API RequestAll option is set. Does not support Windows Unicode file names) - + FilePermissions yes! System (r=read, w=write and x=execute permissions for the file owner, group and others. The ValueConv value is an octal number so bit test operations on this value should be done in octal, eg. 'oct($filePermissions#) & 0200') - + FileSequence no ExifTool (sequence number for each source file when extracting or copying information, including files that fail the -if condition of the command-line application, beginning at 0 for the first file. Not generated unless specifically -requested or the RequestAll API option is set) - +requested or the API RequestAll option is set) + FileSize no System (note that the print conversion for this tag uses historic prefixes: 1 kB = 1024 bytes, etc.) - + FileType no File (a short description of the file type. For many file types this is the just the uppercase file extension) - + FileTypeExtension no File (a common lowercase extension for this file type, or uppercase with the -n option) - + FileUserID yes! System (extracted only if specifically requested or the SystemTags or RequestAll API option is set. Returns user ID number with the -n option, or name otherwise. May be written with either user name or number) - + ForceWrite yes - @@ -291,7 +298,7 @@ EXIF to be rewritten only if the MakerNotes offset base was fixed, or "All" to rewrite all of these metadata types. Values are case insensitive, and multiple values may be separated with commas, eg. -ForceWrite=exif,xmp) - + Geosync yes - @@ -301,7 +308,7 @@ "[+-][[[DD ]HH:]MM:]SS[.ss]". Additional features allow calculation of time differences and time drifts, and extraction of synchronization times from image files. See the geotagging documentation for details) - + Geotag yes - @@ -311,7 +318,7 @@ Beacon text, and Bramor gEO log files. May be set to the special value of "DATETIMEONLY" (all caps) to set GPS date/time tags if no input track points are available. See geotag.html for details) - + Geotime yes - @@ -322,7 +329,7 @@ contain a timezone. May be deleted to delete associated GPS tags. A group name of "EXIF" or "XMP" may be specified to write or delete only EXIF or XMP GPS tags) - + HardLink yes! - @@ -331,34 +338,34 @@ the same operation as writing HardLink, then the link is made to the updated file. Note that subsequent editing of either hard-linked file by exiftool will break the link unless the -overwrite_original_in_place option is used) - + ICC_Profile yes! ICC_Profile (the full ICC_Profile data block. This tag is generated only if specifically requested) - + ID3Size no File (size of the ID3 data block) - + IPTC yes! IPTC (the full IPTC data block. This tag is generated only if specifically requested) - + ImageHeight no File (the height of the image in number of pixels) - + ImageWidth no File (the width of the image in number of pixels) - + JPEGDigest no File @@ -366,34 +373,34 @@ sub-sampling values to generate the value of this tag. The result is compared to known values in an attempt to deduce the originating software based only on the JPEG image data. For performance reasons, this tag is -generated only if specifically requested or the RequestAll API option is set +generated only if specifically requested or the API RequestAll option is set to 3 or higher) - + JPEGImageLength no File (byte length of JPEG image without metadata. For performance reasons, this -tag is generated only if specifically requested or the RequestAll API option +tag is generated only if specifically requested or the API RequestAll option is set to 3 or higher) - + JPEGQualityEstimate no File (an estimate of the IJG JPEG quality setting for the image, calculated from the quantization tables. For performance reasons, this tag is generated -only if specifically requested or the RequestAll API option is set to 3 or +only if specifically requested or the API RequestAll option is set to 3 or higher) - + MIMEType no File (the MIME type of the source file) - + MaxVal no File (maximum pixel value in PPM or PGM image) - + NewGUID no ExifTool @@ -401,19 +408,24 @@ YYYYmmdd-HHMM-SSNN-PPPP-RRRRRRRRRRRR, where Y=year, m=month, d=day, H=hour, M=minute, S=second, N=file sequence number in hex, P=process ID in hex, and R=random hex number; without dashes with the -n option. Not generated -unless specifically requested or the RequestAll API option is set) - +unless specifically requested or the API RequestAll option is set) + Now no ExifTool (the current date/time. Useful when setting the tag values, eg. "-modifydate<now". Not generated unless specifically requested or the -RequestAll API option is set) - +API RequestAll option is set) + OtherImage no File (other JPEG-format embedded image) + +PageCount +no +File +(the number of pages in a multi-page TIFF document) PreviewImage yes @@ -489,7 +501,8 @@ Trailer yes! File -(the full JPEG trailer data block. Extracted only if specifically requested) +(the full JPEG trailer data block. Extracted only if specifically requested +or the API RequestAll option is set to 3 or higher) Validate no @@ -510,26 +523,39 @@ option. Minor warnings with a capital "M" in the "[Minor]" designation indicate that the processing is affected by ignoring the warning) +XML +no +XML +(the XML data block, extracted for some file types) + XMP yes! XMP (the XMP data block, but note that extended XMP in JPEG images may be split into multiple blocks. This tag is generated only if specifically requested) - + XResolution no File (the horizontal pixel resolution) - + YResolution no File (the vertical pixel resolution) + +ZoneIdentifier +yes! +System +(Windows only. Existence indicates that the file has a Zone.Identifier +alternate data stream, which is used by some Windows browsers to mark +downloaded files as possibly unsafe to run. May be deleted to remove this +stream. Requires Win32API::File)

      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 6, 2020 +
      Last revised Feb 9, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/FITS.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/FITS.html --- libimage-exiftool-perl-11.88/html/TagNames/FITS.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/FITS.html 2021-02-23 15:56:36.000000000 +0000 @@ -27,20 +27,30 @@ no   +'COMMENT' +Comment +no +(leading spaces are removed if PrintConv is enabled) + 'DATE' CreateDate no   - + 'DATE-END' ObservationDateEnd no   - + 'DATE-OBS' ObservationDate no   + +'HISTORY' +History +no +(leading spaces are removed if PrintConv is enabled) 'INSTRUME' Instrument @@ -80,7 +90,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Mar 7, 2019 +
      Last revised Feb 23, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/FLIR.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/FLIR.html --- libimage-exiftool-perl-11.88/html/TagNames/FLIR.html 2020-02-14 13:02:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/FLIR.html 2022-01-12 22:57:16.000000000 +0000 @@ -51,7 +51,7 @@

      FLIR FFF Tags

      Information extracted from FLIR FFF images and the APP1 FLIR segment of JPEG images. These tags may also be extracted from the first frame of an FLIR -SEQ file.

      +SEQ file, or all frames if the ExtractEmbedded option is used.

      + + + + +
      @@ -777,15 +777,26 @@ + + + + + - + + + + + + @@ -1416,7 +1427,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 14, 2020 +
      Last revised Jan 12, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/FujiFilm.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/FujiFilm.html --- libimage-exiftool-perl-11.88/html/TagNames/FujiFilm.html 2020-02-04 15:11:28.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/FujiFilm.html 2021-04-13 14:31:47.000000000 +0000 @@ -52,6 +52,8 @@
      'M' = Magnetic North
      'T' = True North
      72GPSImgDirectionRefno'M' = Magnetic North +
      'T' = True North
      76 GPSSpeed no  
      80 GPSTrack no  
      84GPSImgDirectionno 
      88 GPSMapDatum int16u +
      2 = No flash & flash +
      6 = Pixel Shift @@ -387,6 +390,16 @@ + + + + + + + + + + @@ -470,7 +483,9 @@
      0x501 = Pro Neg. Hi
      0x600 = Classic Chrome
      0x700 = Eterna -
      0x800 = Classic Negative +
      0x800 = Classic Negative +
      0x900 = Bleach Bypass +
      0xa00 = Nostalgic Neg @@ -714,27 +729,33 @@ - +
      2 = AF-C + + + + + - - + + - - + + + + + +
      0x0 = Auto +
      0x1 = Auto (white priority) +
      0x2 = Auto (ambiance priority)
      0x100 = Daylight
      0x200 = Cloudy
      0x300 = Daylight Fluorescent @@ -375,7 +377,8 @@
      (other models)
      0 = Off
      1 = On -
      2 = No flash & flash
      0x1101 SequenceNumber- --> FujiFilm DriveSettings Tags
      0x1105PixelShiftShotsint16u 
      0x1106PixelShiftOffsetrational64s[2] 
      0x1153 PanoramaAngle int16u
      0x1402 DynamicRangeSetting0.1 FocusMode2 int32u[val & 0xff] +[val & 0xf]
      0 = AF-M
      1 = AF-S -
      2 = AF-C -
      17 = AF-S (Auto)
      0.2PreAFint32u[val >> 4 & 0xf] +
      0 = Off +
      1 = On
      0.3 AFAreaMode int32u [val >> 8 & 0xf]
      0 = Single Point
      1 = Zone
      2 = Wide/Tracking
      0.3
      0.4 AFAreaPointSize int32u [val >> 12 & 0xf]
      0 = n/a
      0.4
      0.5 AFAreaZoneSize int32u [val >> 16 & 0xf] @@ -1185,7 +1206,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 4, 2020 +
      Last revised Apr 13, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/GeoTiff.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/GeoTiff.html --- libimage-exiftool-perl-11.88/html/TagNames/GeoTiff.html 2020-02-14 13:02:52.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/GeoTiff.html 2020-08-10 13:41:28.000000000 +0000 @@ -527,6 +527,8 @@
      3053 = Hjorsey 1955 Lambert
      3057 = ISN93 Lambert 1993
      3300 = Estonian Coordinate System of 1992 +
      3786 = Popular Visualisation CRS / Mercator +
      3857 = WGS 84 / Pseudo-Mercator
      20137 = Adindan UTM zone 37N
      20138 = Adindan UTM zone 38N
      20248 = AGD66 AMG zone 48 @@ -2293,7 +2295,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 14, 2020 +
      Last revised Aug 10, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/GIF.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/GIF.html --- libimage-exiftool-perl-11.88/html/TagNames/GIF.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/GIF.html 2021-12-08 13:06:36.000000000 +0000 @@ -44,6 +44,10 @@
      Text no (text displayed in image)
      TransparentColorno 

      GIF Extensions Tags

      @@ -172,11 +176,16 @@
      BackgroundColor no  
      6PixelAspectRationo 

      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Oct 24, 2018 +
      Last revised Dec 8, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/GoPro.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/GoPro.html --- libimage-exiftool-perl-11.88/html/TagNames/GoPro.html 2019-11-08 17:41:11.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/GoPro.html 2021-09-22 18:09:40.000000000 +0000 @@ -101,179 +101,209 @@ no   +'EXPT' +MaximumShutterAngle +no +  + 'FACE' FaceDetected no   - + 'FCNM' FaceNumbers no   - + 'FMWR' FirmwareVersion no   - + 'FWVS' OtherFirmware no   - + 'GLPI' GPSPos - --> GoPro GLPI Tags - + 'GPRI' GPSRaw? - --> GoPro GPRI Tags - + 'GPS5' GPSInfo - --> GoPro GPS5 Tags - + 'GPSF' GPSMeasureMode no 2 = 2-Dimensional Measurement
      3 = 3-Dimensional Measurement
      - + 'GPSP' GPSHPositioningError no   - + 'GPSU' GPSDateTime no   - + 'GYRO' Gyroscope no (gyroscope readings in rad/s) - + 'ISOE' ISOSpeeds no   - + 'ISOG' ImageSensorGain no   - + 'KBAT' BatteryStatus - --> GoPro KBAT Tags - + 'LNED' LocalPositionNED no   - + 'MAGN' Magnetometer no   - + 'MINF' Model no   + +'MTRX' +AccelerometerMatrix +no +  +'MUID' +MediaUniqueID +no +  + 'OREN' AutoRotation no 'A' = Auto
      'D' = Down
      'U' = Up
      + +'ORIN' +InputOrientation +no +  +'ORIO' +OutputOrientation +no +  + 'PHDR' HDRSetting no   - + 'PIMN' AutoISOMin no   - + 'PIMX' AutoISOMax no   - + 'PRES' PhotoResolution no   - + 'PRTN' ProTune no 'N' = Off
      'Y' = On
      - + 'PTCL' ColorMode no   - + 'PTEV' ExposureCompensation no   - + 'PTSH' Sharpness no   - + 'PTWB' WhiteBalance no   - + 'RATE' Rate no   - + 'RMRK' Comments no   - + 'SCAL' ScaleFactor? no   - + 'SCPR' ScaledPressure no   - + 'SHUT' ExposureTimes no   - + 'SIMU' ScaledIMU no   - + 'SIUN' SIUnits? no   + +'SROT' +SensorReadoutTime +no +  'STMP' TimeStamp @@ -310,10 +340,20 @@ no   +'UNIF' +InputUniformity +no +  + 'UNIT' Units? no   + +'VERS' +MetadataVersion +no +  'VFOV' FieldOfView @@ -543,7 +583,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Nov 8, 2019 +
      Last revised Sep 22, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/GPS.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/GPS.html --- libimage-exiftool-perl-11.88/html/TagNames/GPS.html 2019-07-02 16:48:45.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/GPS.html 2021-03-17 13:14:04.000000000 +0000 @@ -47,7 +47,7 @@ string[2] (tags 0x0001-0x0006 used for camera location according to MWG 2.0. ExifTool will also accept a number when writing GPSLatitudeRef, positive for north -latitudes or negative for south, or a string ending in N or S) +latitudes or negative for south, or a string containing N, North, S or South)
      'N' = North
      'S' = South @@ -60,7 +60,7 @@ GPSLongitudeRef string[2] (ExifTool will also accept a number when writing this tag, positive for east -longitudes or negative for west, or a string ending in E or W) +longitudes or negative for west, or a string containing E, East, W or West)
      'E' = East
      'W' = West @@ -225,7 +225,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Jul 2, 2019 +
      Last revised Mar 17, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/H264.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/H264.html --- libimage-exiftool-perl-11.88/html/TagNames/H264.html 2019-06-06 12:41:53.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/H264.html 2021-02-03 13:11:59.000000000 +0000 @@ -238,22 +238,27 @@ no (combined with tag 0xc8) +0x00ca +GPSDateStamp +no +(combined with tags 0xcb and 0xcc) + 0x00e0 MakeModel - --> H264 MakeModel Tags - + 0x00e1 RecInfo - --> H264 RecInfo Tags
      (Canon only) - + 0x00e4 Model no -(Sony cameras only, combined with tags 0xe5 and 0xe6) - +(Sony only, combined with tags 0xe5 and 0xe6) + 0x00ee FrameInfo - @@ -388,7 +393,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Oct 24, 2018 +
      Last revised Feb 3, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/ICC_Profile.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/ICC_Profile.html --- libimage-exiftool-perl-11.88/html/TagNames/ICC_Profile.html 2020-02-14 13:02:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/ICC_Profile.html 2021-11-11 17:36:52.000000000 +0000 @@ -36,6 +36,16 @@ no   +'A2B3' +AToB3 +no +  + +'A2M0' +AToM0 +no +  + 'B2A0' BToA0 no @@ -51,25 +61,35 @@ no   +'B2A3' +BToA3 +no +  + 'B2D0' BToD0 no   - + 'B2D1' BToD1 no   - + 'B2D2' BToD2 no   - + 'B2D3' BToD3 no   + +'CxF ' +CXF +no +  'D2B0' DToB0 @@ -96,75 +116,385 @@ - --> ICC_Profile Header Tags +'M2A0' +MToA0 +no +  + +'M2B0' +MToB0 +no +  + +'M2B1' +MToB1 +no +  + +'M2B2' +MToB2 +no +  + +'M2B3' +MToB3 +no +  + +'M2S0' +MToS0 +no +  + +'M2S1' +MToS1 +no +  + +'M2S2' +MToS2 +no +  + +'M2S3' +MToS3 +no +  + 'MS00' WCSProfiles no   + +'bAB0' +BRDFAToB0 +no +  + +'bAB1' +BRDFAToB1 +no +  + +'bAB2' +BRDFAToB2 +no +  + +'bAB3' +BRDFAToB3 +no +  + +'bBA0' +BRDFBToA0 +no +  + +'bBA1' +BRDFBToA1 +no +  + +'bBA2' +BRDFBToA2 +no +  +'bBA3' +BRDFBToA3 +no +  + +'bBD0' +BRDFBToD0 +no +  + +'bBD1' +BRDFBToD1 +no +  + +'bBD2' +BRDFBToD2 +no +  + +'bBD3' +BRDFBToD3 +no +  + +'bDB0' +BRDFDToB0 +no +  + +'bDB1' +BRDFDToB1 +no +  + +'bDB2' +BRDFDToB2 +no +  + +'bDB3' +BRDFDToB3 +no +  + +'bMB0' +BRDFMToB0 +no +  + +'bMB1' +BRDFMToB1 +no +  + +'bMB2' +BRDFMToB2 +no +  + +'bMB3' +BRDFMToB3 +no +  + +'bMS0' +BRDFMToS0 +no +  + +'bMS1' +BRDFMToS1 +no +  + +'bMS2' +BRDFMToS2 +no +  + +'bMS3' +BRDFMToS3 +no +  + 'bTRC' BlueTRC no   - + 'bXYZ' BlueMatrixColumn no   + +'bcp0' +BRDFColorimetricParam0 +no +  +'bcp1' +BRDFColorimetricParam1 +no +  + +'bcp2' +BRDFColorimetricParam2 +no +  + +'bcp3' +BRDFColorimetricParam3 +no +  + 'bfd ' UCRBG no   - + 'bkpt' MediaBlackPoint no   + +'bsp0' +BRDFSpectralParam0 +no +  + +'bsp1' +BRDFSpectralParam1 +no +  + +'bsp2' +BRDFSpectralParam2 +no +  + +'bsp3' +BRDFSpectralParam3 +no +  + +'c2sp' +CustomToStandardPcc +no +  'calt' CalibrationDateTime no   +'cept' +ColorEncodingParams +no +  + 'chad' ChromaticAdaptation no   - + 'chrm' Chromaticity - --> ICC_Profile Chromaticity Tags - + 'ciis' ColorimetricIntentImageState no   + +'clio' +ColorantInfoOut +no +  +'cloo' +ColorantOrderOut +no +  + 'clot' ColorantTableOut no   - + 'clro' ColorantOrder no   - + 'clrt' ColorantTable - --> ICC_Profile ColorantTable Tags - + 'cprt' ProfileCopyright no   - + 'crdi' CRDInfo no   + +'csnm' +ColorSpaceName +no +  + +'dAB0' +DirectionalAToB0 +no +  + +'dAB1' +DirectionalAToB1 +no +  + +'dAB2' +DirectionalAToB2 +no +  + +'dAB3' +DirectionalAToB3 +no +  + +'dBA0' +DirectionalBToA0 +no +  + +'dBA1' +DirectionalBToA1 +no +  + +'dBA2' +DirectionalBToA2 +no +  + +'dBA3' +DirectionalBToA3 +no +  + +'dBD0' +DirectionalBToD0 +no +  + +'dBD1' +DirectionalBToD1 +no +  + +'dBD2' +DirectionalBToD2 +no +  + +'dBD3' +DirectionalBToD3 +no +  + +'dDB0' +DirectionalDToB0 +no +  + +'dDB1' +DirectionalDToB1 +no +  + +'dDB2' +DirectionalDToB2 +no +  + +'dDB3' +DirectionalDToB3 +no +  'desc' ProfileDescription @@ -211,6 +541,26 @@ no   +'gdb0' +GamutBoundaryDescription0 +no +  + +'gdb1' +GamutBoundaryDescription1 +no +  + +'gdb2' +GamutBoundaryDescription2 +no +  + +'gdb3' +GamutBoundaryDescription3 +no +  + 'kTRC' GrayTRC no @@ -221,6 +571,16 @@ no   +'mcta' +MultiplexTypeArray +no +  + +'mdv ' +MultiplexDefaultValues +no +  + 'meas' Measurement - @@ -231,6 +591,16 @@ - --> ICC_Profile Metadata Tags +'miin' +MeasurementInputInfo +no +  + +'minf' +MeasurementInfo +no +  + 'mmod' MakeAndModel no @@ -251,60 +621,70 @@ no   +'nmcl' +NamedColor +no +  + 'pre0' Preview0 no   - + 'pre1' Preview1 no   - + 'pre2' Preview2 no   - + 'ps2i' PS2RenderingIntent no   - + 'ps2s' PostScript2CSA no   - + 'psd0' PostScript2CRD0 no   - + 'psd1' PostScript2CRD1 no   - + 'psd2' PostScript2CRD2 no   - + 'psd3' PostScript2CRD3 no   - + 'pseq' ProfileSequenceDesc no   - + 'psid' ProfileSequenceIdentifier no   + +'psin' +ProfileSequenceInfo +no +  'psvm' PS2CRDVMSize @@ -326,25 +706,35 @@ no   +'rfnm' +ReferenceName +no +  + 'rhoc' ReflectionHardcopyOrigColorimetry no   - + 'rig0' PerceptualRenderingIntentGamut no 'prmg' = Perceptual Reference Medium Gamut - + 'rig2' SaturationRenderingIntentGamut no 'prmg' = Perceptual Reference Medium Gamut - + 'rpoc' ReflectionPrintOutputColorimetry no   + +'s2cp' +StandardToCustomPcc +no +  'sape' SceneAppearanceEstimates @@ -366,11 +756,26 @@ no   +'smap' +SurfaceMap +no +  + +'svcn' +SpectralViewingConditions +no +  + +'swpt' +SpectralWhitePoint +no +  + 'targ' CharTarget no   - + 'tech' Technology no @@ -402,22 +807,22 @@
      'vidc' = Video Camera
      'vidm' = Video Monitor - + 'vcgt' VideoCardGamma no   - + 'view' ViewingConditions - --> ICC_Profile ViewingConditions Tags - + 'vued' ViewingCondDesc no   - + 'wtpt' MediaWhitePoint no @@ -445,8 +850,12 @@ ProfileClass no 'abst' = Abstract Profile +
      'cenc' = ColorEncodingSpace Profile
      'link' = DeviceLink Profile +
      'mid ' = MultiplexIdentification Profile +
      'mlnk' = MultiplexLink Profile
      'mntr' = Display Device Profile +
      'mvis' = MultiplexVisualization Profile
      'nkpf' = Nikon Input Device Profile (NON-STANDARD!)
      'nmcl' = NamedColor Profile
      'prtr' = Output Device Profile @@ -992,7 +1401,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 14, 2020 +
      Last revised Nov 11, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/ID3.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/ID3.html --- libimage-exiftool-perl-11.88/html/TagNames/ID3.html 2019-05-09 14:59:01.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/ID3.html 2021-08-12 12:24:21.000000000 +0000 @@ -8,13 +8,13 @@

      ID3 Tags

      -

      ExifTool extracts ID3 information from MP3, MPEG, AIFF, OGG, FLAC, APE, MPC -and RealAudio files. ID3v2 tags which support multiple languages (eg. -Comment and Lyrics) are extracted by specifying the tag name, followed by a -dash ('-'), then a 3-character ISO 639-2 language code (eg. "Comment-spa"). -See http://www.id3.org/ for the official ID3 specification and -http://www.loc.gov/standards/iso639-2/php/code_list.php for a list of ISO -639-2 language codes.

      +

      ExifTool extracts ID3 and Lyrics3 information from MP3, MPEG, WAV, AIFF, +OGG, FLAC, APE, MPC and RealAudio files. ID3v2 tags which support multiple +languages (eg. Comment and Lyrics) are extracted by specifying the tag name, +followed by a dash ('-'), then a 3-character ISO 639-2 language code (eg. +"Comment-spa"). See http://www.id3.org/ for the official ID3 +specification and http://www.loc.gov/standards/iso639-2/php/code_list.php +for a list of ISO 639-2 language codes.

      @@ -747,362 +747,377 @@ + + + + + - + - + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1189,406 +1204,476 @@ + + + + + - + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
      no  
      'GRP1'Groupingno 
      'IPLS' InvolvedPeople no  
      'ITNU' iTunesU? no  
      'MCDI' MusicCDIdentifier no  
      'MVIN'MovementNumberno 
      'MVNM'MovementNameno 
      'OWNE' Ownership no  
      'PCNT' PlayCounter no  
      'PCST' Podcast? no  
      'POPM' Popularimeter no  
      'PRIV' Private - --> ID3 Private Tags
      'SYLT' SynLyrics - --> ID3 SynLyrics Tags
      'TALB' Album no  
      'TBPM' BeatsPerMinute no  
      'TCAT' PodcastCategory no  
      'TCMP' Compilation no 0 = No
      1 = Yes
      'TCOM' Composer no  
      'TCON' Genre no (uses same lookup table as ID3v1 Genre)
      'TCOP' Copyright no  
      'TDAT' Date no  
      'TDES' PodcastDescription no  
      'TDLY' PlaylistDelay no  
      'TENC' EncodedBy no  
      'TEXT' Lyricist no  
      'TFLT' FileType no  
      'TGID' PodcastID no  
      'TIME' Time no  
      'TIT1' Grouping no  
      'TIT2' Title no  
      'TIT3' Subtitle no  
      'TKEY' InitialKey no  
      'TKWD' PodcastKeywords no  
      'TLAN' Language no  
      'TLEN' Length no  
      'TMED' Media no  
      'TOAL' OriginalAlbum no  
      'TOFN' OriginalFileName no  
      'TOLY' OriginalLyricist no  
      'TOPE' OriginalArtist no  
      'TORY' OriginalReleaseYear no  
      'TOWN' FileOwner no  
      'TPE1' Artist no  
      'TPE2' Band no  
      'TPE3' Conductor no  
      'TPE4' InterpretedBy no  
      'TPOS' PartOfSet no  
      'TPUB' Publisher no  
      'TRCK' Track no  
      'TRDA' RecordingDates no  
      'TRSN' InternetRadioStationName no  
      'TRSO' InternetRadioStationOwner no  
      'TSIZ' Size no  
      'TSO2' AlbumArtistSortOrder no  
      'TSOC' ComposerSortOrder no  
      'TSRC' ISRC no  
      'TSSE' EncoderSettings no  
      'TXXX' UserDefinedText no  
      'TYER' Year no  
      'USER' TermsOfUse no  
      'USLT' Lyrics no  
      'WCOM' CommercialURL no  
      'WCOP' CopyrightURL no  
      'WFED' PodcastURL no  
      'WOAF' FileURL no  
      'WOAR' ArtistURL no  
      'WOAS' SourceURL no  
      'WORS' InternetRadioStationURL no  
      'WPAY' PaymentURL no  
      'WPUB' PublisherURL no  
      'WXXX' UserDefinedURL no  
      'XDOR' OriginalReleaseTime no  
      'XOLY' OlympusDSS - --> Olympus DSS Tags
      'XSOA' AlbumSortOrder no  
      'XSOP' PerformerSortOrder no  
      'XSOT' TitleSortOrder nono  
      'GRP1'Groupingno 
      'ITNU' iTunesU? no  
      'MCDI' MusicCDIdentifier no  
      'MVIN'MovementNumberno 
      'MVNM'MovementNameno 
      'OWNE' Ownership no  
      'PCNT' PlayCounter no  
      'PCST' Podcast? no  
      'POPM' Popularimeter no  
      'PRIV' Private - --> ID3 Private Tags
      'RVA2' RelativeVolumeAdjustment no  
      'SYLT' SynLyrics - --> ID3 SynLyrics Tags
      'TALB' Album no  
      'TBPM' BeatsPerMinute no  
      'TCAT' PodcastCategory no  
      'TCMP' Compilation no 0 = No
      1 = Yes
      'TCOM' Composer no  
      'TCON' Genre no (uses same lookup table as ID3v1 Genre)
      'TCOP' Copyright no  
      'TDEN' EncodingTime no  
      'TDES' PodcastDescription no  
      'TDLY' PlaylistDelay no  
      'TDOR' OriginalReleaseTime no  
      'TDRC' RecordingTime no  
      'TDRL' ReleaseTime no  
      'TDTG' TaggingTime no  
      'TENC' EncodedBy no  
      'TEXT' Lyricist no  
      'TFLT' FileType no  
      'TGID' PodcastID no  
      'TIPL' InvolvedPeople no  
      'TIT1' Grouping no  
      'TIT2' Title no  
      'TIT3' Subtitle no  
      'TKEY' InitialKey no  
      'TKWD' PodcastKeywords no  
      'TLAN' Language no  
      'TLEN' Length no  
      'TMCL' MusicianCredits no  
      'TMED' Media no  
      'TMOO' Mood no  
      'TOAL' OriginalAlbum no  
      'TOFN' OriginalFileName no  
      'TOLY' OriginalLyricist no  
      'TOPE' OriginalArtist no  
      'TOWN' FileOwner no  
      'TPE1' Artist no  
      'TPE2' Band no  
      'TPE3' Conductor no  
      'TPE4' InterpretedBy no  
      'TPOS' PartOfSet no  
      'TPRO' ProducedNotice no  
      'TPUB' Publisher no  
      'TRCK' Track no  
      'TRSN' InternetRadioStationName no  
      'TRSO' InternetRadioStationOwner no  
      'TSO2' AlbumArtistSortOrder no  
      'TSOA' AlbumSortOrder no  
      'TSOC' ComposerSortOrder no  
      'TSOP' PerformerSortOrder no  
      'TSOT' TitleSortOrder no  
      'TSRC' ISRC no  
      'TSSE' EncoderSettings no  
      'TSST' SetSubtitle no  
      'TXXX' UserDefinedText no  
      'USER' TermsOfUse no  
      'USLT' Lyrics no  
      'WCOM' CommercialURL no  
      'WCOP' CopyrightURL no  
      'WFED' PodcastURL no  
      'WOAF' FileURL no  
      'WOAR' ArtistURL no  
      'WOAS' SourceURL no  
      'WORS' InternetRadioStationURL no  
      'WPAY' PaymentURL no  
      'WPUB' PublisherURL no  
      'WXXX' UserDefinedURL no  
      'XDOR' OriginalReleaseTime no  
      'XOLY' OlympusDSS - --> Olympus DSS Tags
      'XSOA' AlbumSortOrder no  
      'XSOP' PerformerSortOrder no  
      'XSOT' TitleSortOrder no  
      +

      ID3 Lyrics3 Tags

      +

      ExifTool extracts Lyrics3 version 1.00 and 2.00 tags from any file that +supports ID3. See https://id3.org/Lyrics3 for the specification.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Tag IDTag NameWritableValues / Notes
      'AUT'Authorno 
      'CRC'CRCno 
      'EAL'ExtendedAlbumNameno 
      'EAR'ExtendedArtistNameno 
      'ETT'ExtendedTrackTitleno 
      'IMG'AssociatedImageFileno 
      'IND'Indicationsno 
      'INF'AdditionalInfono 
      'LYR'Lyricsno 
      +
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Jun 24, 2015 +
      Last revised Aug 12, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/index.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/index.html --- libimage-exiftool-perl-11.88/html/TagNames/index.html 2020-02-20 13:21:27.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/index.html 2022-02-09 12:08:42.000000000 +0000 @@ -10,7 +10,7 @@

      ExifTool Tag Names

      The tables listed below give the names of all tags recognized by ExifTool. -They contain a total of 23338 tags, with 15293 unique tag names. +They contain a total of 25775 tags, with 16465 unique tag names.

      - + @@ -898,7 +898,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Apr 7, 2015 +
      Last revised Oct 2, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Jpeg2000.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Jpeg2000.html --- libimage-exiftool-perl-11.88/html/TagNames/Jpeg2000.html 2019-10-02 13:09:19.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Jpeg2000.html 2021-11-11 17:36:52.000000000 +0000 @@ -8,28 +8,49 @@

      Jpeg2000 Tags

      -

      The tags below are extracted from JPEG 2000 images, however ExifTool -currently writes only EXIF, IPTC and XMP tags in these images.

      +

      The tags below are found in JPEG 2000 images and the JUMBF metadata in JPEG +images, but not all of these are extracted. Note that ExifTool currently +writes only EXIF, IPTC and XMP tags in Jpeg2000 images.

      @@ -28,6 +28,7 @@ PrintIM
      Photoshop
      Apple
      +NikonSettings
      Canon
      CanonCustom
      CanonVRD
      @@ -60,8 +61,8 @@ Unknown
      DNG
      CanonRaw
      -KyoceraRaw
      -MinoltaRaw
      +KyoceraRaw
      +MinoltaRaw
      PanasonicRaw
      SigmaRaw
      Lytro
      @@ -72,6 +73,10 @@ Scalado
      GoPro
      Qualcomm
      +Jpeg2000
      +JSON
      +CBOR
      +PLIST
      APP12
      AFCP
      DarwinCore
      @@ -80,9 +85,8 @@ Microsoft
      GIMP
      MIE
      -Jpeg2000
      -GIF
      -BMP
      +GIF +BMP
      BPG
      PICT
      PNG
      @@ -91,20 +95,24 @@ DjVu
      DPX
      OpenEXR
      +ZISRAW
      +MRC
      +LIF
      MIFF
      PCX
      PGF
      PSP
      PhotoCD
      Radiance
      +PFM
      PDF
      PostScript
      ID3
      -ITC
      +ITC
      FLAC
      Ogg
      Vorbis
      -Opus
      +Opus
      Theora
      APE
      Audible
      @@ -114,7 +122,6 @@ H264
      QuickTime
      Parrot
      -PLIST
      Matroska
      MOI
      MXF
      @@ -124,11 +131,10 @@ Red
      RIFF
      AIFF
      -ASF
      +ASF
      WTV
      -DICOM
      +DICOM
      FITS
      -JSON
      HTML
      Palm
      Torrent
      @@ -231,7 +237,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup)
      Created Feb 15, 2005 -
      Last revised Feb 20, 2020 +
      Last revised Feb 9, 2022

      <-- Back to ExifTool home page

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/IPTC.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/IPTC.html --- libimage-exiftool-perl-11.88/html/TagNames/IPTC.html 2019-06-06 12:13:19.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/IPTC.html 2020-10-02 13:01:10.000000000 +0000 @@ -430,7 +430,7 @@
      103 OriginalTransmissionReference string[0,32] 
      (now used as a job identifier)
      105 Headline
      + + + + + + + + + + - + + + + + + + + + + + @@ -127,8 +148,9 @@ - - + + @@ -151,6 +173,31 @@ + + + + + + + + + + + + + + + + + + + + @@ -235,8 +282,10 @@
      UUID-XMP
      UUID-GeoJP2
      UUID-Photoshop +
      UUID-Signature +
      UUID-C2PAClaimSignature
      UUID-Unknown - + +
      --> Photoshop Tags +
      --> CBOR Tags - + - + +written and copied. It may also be extracted as a block by setting the API +BlockExtract option. This is a List-type tag because multiple XML blocks +may exist) +
      --> XMP XML Tags +
      (used for XMP in JPEG XL files) +
      --> XMP Tags
      Tag IDTag Name WritableValues / Notes
      'Exif'EXIF---> EXIF Tags
      'asoc' Association---> Jpeg2000 Tags
      'bfdb'BinaryDataType no 
      (JUMBF, MIME type and optional file name)
      'bfil' BinaryFilter no  
      'bidb'BinaryDatano(JUMBF)
      'bpcc' BitsPerComponent no  
      'cbor'CBORData---> CBOR Tags
      'cdef' ComponentDefinition 
      'jp2c'ContiguousCodestreamnoContiguousCodestream +
      PreviewImage
      no
      no
       
      'jp2h'- --> Jpeg2000 Tags
      'json'JSONData---> JSON Tags +
      (by default, data in this tag is parsed using the ExifTool JSON module to to +allow individual tags to be accessed when reading, but it may also be +extracted as a block via the "JSONData" tag or by setting the API +BlockExtract option)
      'jumb'JUMBFBox---> Jpeg2000 Tags
      'jumd'JUMBFDescr---> Jpeg2000 JUMD Tags
      'jxlc'JXLCodestreamno(Codestream in JPEG XL image. Currently processed only to determine +ImageSize)
      'lbl ' Label no-
      -
      -
      -
      -
      -
      -
      -
      no
      -
      -
      -
      -
      -
      -
      -
      -
      no
      -
      no
      --> EXIF Tags
      --> EXIF Tags
      --> EXIF Tags @@ -244,21 +293,34 @@
      --> IPTC Tags
      --> XMP Tags
      --> EXIF Tags -
      --> Photoshop Tags
      'xml 'XMLXML +
      XMP
      undef!+--> XMP Tags -
      (by default, the XML data in this tag is parsed using the ExifTool XMP module + + = List'>undef!+
      -
      (by default, the XML data in this tag is parsed using the ExifTool XMP module to to allow individual tags to be accessed when reading, but it may also be extracted as a block via the "XML" tag, which is also how this tag is -written and copied. This is a List-type tag because multiple XML blocks may -exist)

      Jpeg2000 ColorSpec Tags

      +

      The table below contains tags in the color specification (colr) box. This +box may be rewritten by writing either ICC_Profile, ColorSpace or +ColorSpecData. When writing, any existing colr boxes are replaced with the +newly created colr box.

      + +

      NOTE: Care must be taken when writing this color specification because +writing a specification that is incompatible with the image data may make +the image undisplayable.

      @@ -267,21 +329,24 @@ - - + - - + + - - + - +
      0 ColorSpecMethodno1 = Enumerated +int8s!(default for writing is 2 when writing ICC_Profile, 1 when writing +ColorSpace, or 4 when writing ColorSpecData) +
      1 = Enumerated
      2 = Restricted ICC
      3 = Any ICC
      4 = Vendor Color
      1 ColorSpecPrecedenceno 
      int8s!(default for writing is 0)
      2 ColorSpecApproximationno0 = Not Specified +int8s!(default for writing is 0) +
      0 = Not Specified
      1 = Accurate
      2 = Exceptional Quality
      3 = Reasonable Quality @@ -291,7 +356,7 @@
      ICC_Profile
      ColorSpace
      ColorSpecData
      -
      no
      no
      -
      int32u!
      undef!
      --> ICC_Profile Tags
      +
      'jpx ' = JPEG 2000 with extensions (.JPX) +
      'jxl ' = JPEG XL Image (.JXL) @@ -384,6 +450,43 @@
      0 = Bi-level @@ -328,7 +393,8 @@ no 'jp2 ' = JPEG 2000 Image (.JP2)
      'jpm ' = JPEG 2000 Compound Image (.JPM) -
      'jpx ' = JPEG 2000 with extensions (.JPX)
      1 MinorVersion
      +

      Jpeg2000 JUMD Tags

      +

      Information extracted from the JUMBF description box.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Tag IDTag NameWritableValues / Notes
      'id'JUMDIDno 
      'label'JUMDLabelno 
      'sig'JUMDSignatureno 
      'toggles'JUMDToggles?noBit 0 = Requestable +
      Bit 1 = Label +
      Bit 2 = ID +
      Bit 3 = Signature
      'type'JUMDTypeno 
      +

      Jpeg2000 CaptureResolution Tags

      - + - + - + - +
      GoPro +
      DJI_DTAT + +
      --> GoPro GPMF Tags +
      (DJI Thermal Analysis Tool record) - - - + + + - + +
      (extracted only when ExtractEmbedded option is used) +
      (contains editing information in XMP format)
      @@ -461,7 +564,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Oct 11, 2016 +
      Last revised Nov 11, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/JPEG.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/JPEG.html --- libimage-exiftool-perl-11.88/html/TagNames/JPEG.html 2020-01-10 18:51:35.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/JPEG.html 2022-01-13 13:03:33.000000000 +0000 @@ -58,40 +58,50 @@
      'APP3' Meta
      Stim +
      JPS +
      ThermalData
      PreviewImage
      -
      -
      no
      -
      -
      -
      no
      no
      --> Kodak Meta Tags
      --> Stim Tags +
      --> JPEG JPS Tags +
      (DJI raw thermal data)
      (Samsung/HP preview image)
      'APP4' Scalado
      FPXR +
      ThermalParams
      PreviewImage
      -
      -
      no
      -
      -
      -
      no
      --> Scalado Tags
      --> FlashPix Tags +
      --> DJI ThermalParams Tags
      (continued from APP3)
      'APP5' RMETA
      SamsungUniqueID +
      ThermalCalibration
      PreviewImage
      -
      -
      no
      -
      -
      no
      no
      --> Ricoh RMETA Tags
      --> Samsung APP5 Tags +
      (DJI thermal calibration data)
      (continued from APP4)
      'APP6' EPPIM
      NITF
      HP_TDHD -
      GoPro
      -
      -
      -
      -
      -
      -
      -
      -
      no
      --> JPEG EPPIM Tags
      --> JPEG NITF Tags
      --> HP TDHD Tags -
      --> GoPro GPMF Tags
      'APP7' Pentax @@ -118,9 +128,11 @@ (PhotoStudio Unicode comment)
      'APP11'JPEG-HDR---> JPEG HDR Tags
      JPEG-HDR +
      JUMBF
      -
      -
      --> JPEG HDR Tags +
      --> Jpeg2000 Tags
      'APP12' PictureInfo @@ -170,15 +182,17 @@
      Samsung
      EmbeddedVideo
      Insta360 +
      NikonApp
      PreviewImage
      -
      -
      -
      -
      -
      -
      no
      no
      yes
      -
      -
      -
      -
      -
      -
      no
      no
      no
      yes
      --> AFCP Tags
      --> CanonVRD Tags
      --> FotoStation Tags
      --> PhotoMechanic Tags
      --> MIE Tags
      --> Samsung Trailer Tags -
      (extracted only when ExtractEmbedded option is used)

      JPEG AVI1 Tags

      @@ -212,6 +226,51 @@   +

      JPEG JPS Tags

      +

      Tags found in JPEG Stereo (JPS) images.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      10JPSSeparationno(stereo only)
      11JPSFlagsnoBit 0 = Half height +
      Bit 1 = Half width +
      Bit 2 = Left field first
      12JPSLayoutno(mono) +
      0 = Both Eyes +
      1 = Left Eye +
      2 = Right Eye +
      (stereo) +
      1 = Interleaved +
      2 = Side By Side +
      3 = Over Under +
      4 = Anaglyph
      13JPSTypeno0 = Mono +
      1 = Stereo
      16JPSCommentno 
      +

      JPEG EPPIM Tags

      APP6 is used in by the Toshiba PDR-M700 to store a TIFF structure containing PrintIM information.

      @@ -609,7 +668,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Jan 10, 2020 +
      Last revised Jan 13, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/JSON.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/JSON.html --- libimage-exiftool-perl-11.88/html/TagNames/JSON.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/JSON.html 2020-10-29 13:45:34.000000000 +0000 @@ -8,19 +8,51 @@

      JSON Tags

      -

      No JSON tags have been pre-defined, but ExifTool will read any existing -tags from basic JSON-formatted files.

      +

      Other than a few tags in the table below, JSON tags have not been +pre-defined. However, ExifTool will read any existing tags from basic +JSON-formatted files.

      - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Tag IDTag Name
      Tag Name WritableValues / Notes
      [no tags known]
      ON1_SettingsData---> PLIST Tags
      ON1_SettingsMetadataCreatedno 
      ON1_SettingsMetadataModifiedno 
      ON1_SettingsMetadataNameno 
      ON1_SettingsMetadataPluginIDno 
      ON1_SettingsMetadataTimestampno 
      ON1_SettingsMetadataUsageno 
      ON1_SettingsMetadataVisibleToUserno 

      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Mar 13, 2017 +
      Last revised Oct 29, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/LIF.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/LIF.html --- libimage-exiftool-perl-11.88/html/TagNames/LIF.html 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/LIF.html 2021-06-22 18:03:55.000000000 +0000 @@ -0,0 +1,30 @@ + + + + +LIF Tags + + + +

      LIF Tags

      +

      Tags extracted from Leica Image Format (LIF) imaging files. As well as the +tags listed below, all available information is extracted from the +XML-format metadata in the LIF header.

      +
      +
      + + + + + + + +
      Tag NameWritableValues / Notes
      TimeStampListno 
      + +
      +(This document generated automatically by Image::ExifTool::BuildTagLookup) +
      Last revised Jun 22, 2021 +

      <-- ExifTool Tag Names

      + + diff -Nru libimage-exiftool-perl-11.88/html/TagNames/M2TS.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/M2TS.html --- libimage-exiftool-perl-11.88/html/TagNames/M2TS.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/M2TS.html 2021-03-17 13:14:04.000000000 +0000 @@ -45,13 +45,13 @@ - - - + + + - + @@ -71,14 +71,16 @@ - + - + - + - + + +
      ValueStreamTypeValueStreamType
      0x0= Reserved0x12= MPEG-4 generic
      0x1= MPEG-1 Video 0x13= ISO 14496-1 SL-packetized
      0x2= MPEG-2 Video
      0x1= MPEG-1 Video 0x14= ISO 13818-6 Synchronized Download Protocol
      0x2= MPEG-2 Video0x1b= H.264 (AVC) Video
      0x3= MPEG-1 Audio0x1b= H.264 Video0x24= H.265 (HEVC) Video
      0x4= MPEG-2 Audio 0x80= DigiCipher II Video
      0x5= ISO 13818-1 private sections
      0xc= ISO 13818-6 stream descriptors 0x8a= DTS Audio
      0xd= ISO 13818-6 sections0x91= A52b/AC-3 Audio0x90= PGS Audio
      0xe= ISO 13818-1 auxiliary0x92= DVD_SPU vls Subtitle0x91= A52b/AC-3 Audio
      0xf= MPEG-2 AAC Audio0x94= SDDS Audio0x92= DVD_SPU vls Subtitle
      0x10= MPEG-4 Video0xa0= MSCODEC Video0x94= SDDS Audio
      0x11= MPEG-4 LATM AAC Audio0xa0= MSCODEC Video
      0x12= MPEG-4 generic 0xea= Private ES (VC-1)
      @@ -128,7 +130,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Mar 18, 2011 +
      Last revised Mar 17, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/MacOS.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/MacOS.html --- libimage-exiftool-perl-11.88/html/TagNames/MacOS.html 2019-12-23 19:05:55.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/MacOS.html 2021-10-16 16:44:48.000000000 +0000 @@ -11,7 +11,8 @@

      On MacOS systems, the there are additional MDItem and XAttr Finder tags that may be extracted. These tags are not extracted by default -- they must be -specifically requested or enabled via an API option.

      +specifically requested or enabled via an API option. (Except when reading +MacOS "._" files directly, see below.)

      The tables below list some of the tags that may be extracted, but ExifTool will extract all available information even for tags not listed.

      @@ -20,10 +21,89 @@ information is not stored in the file itself. As such, Writable tags in these tables may be changed without having to rewrite the file.

      +

      Note that on some filesystems, MacOS creates sidecar files with names that +begin with "._". ExifTool will read these files if specified, and extract +the information listed in the following table without the need for extra +options, but these files are not writable directly.

      +
      +
      + + + + + + + + + + + + + +
      Tag IDTag NameWritableValues / Notes
      0x0002RSRC---> RSRC Tags
      0x0009ATTR---> MacOS XAttr Tags
      + +

      MacOS XAttr Tags

      +

      XAttr tags are extracted using the "xattr" utility. They are extracted if +any "XAttr*" tag or the MacOS group is specifically requested, or by setting +the API XAttrTags option to 1 or the API RequestAll option to 2 or higher. +And they are extracted by default from MacOS "._" files when reading +these files directly.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Tag NameWritableValues / Notes
      XAttrAppleMailDateReceivedno 
      XAttrAppleMailDateSentno 
      XAttrAppleMailIsRemoteAttachmentno 
      XAttrFinderInfono 
      XAttrLastUsedDateno 
      XAttrMDItemDownloadedDateno 
      XAttrMDItemFinderCommentno 
      XAttrMDItemWhereFromsno 
      XAttrMDLabelno 
      XAttrQuarantineyes!(quarantine information for files downloaded from the internet. May only be +deleted when writing)
      XAttrResourceForkno 
      +

      MacOS MDItem Tags

      MDItem tags are extracted using the "mdls" utility. They are extracted if any "MDItem*" tag or the MacOS group is specifically requested, or by -setting the MDItemTags API option to 1 or the RequestAll API option to 2 or +setting the API MDItemTags option to 1 or the API RequestAll option to 2 or higher. Note that these tags do not necessarily reflect the current metadata of a file -- it may take some time for the MacOS mdworker daemon to index the file after a metadata change.

      @@ -572,65 +652,9 @@   -

      MacOS XAttr Tags

      -

      XAttr tags are extracted using the "xattr" utility. They are extracted if -any "XAttr*" tag or the MacOS group is specifically requested, or by setting -the XAttrTags API option to 1 or the RequestAll API option to 2 or higher.

      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Tag NameWritableValues / Notes
      XAttrAppleMailDateReceivedno 
      XAttrAppleMailDateSentno 
      XAttrAppleMailIsRemoteAttachmentno 
      XAttrFinderInfono 
      XAttrLastUsedDateno 
      XAttrMDItemDownloadedDateno 
      XAttrMDItemFinderCommentno 
      XAttrMDItemWhereFromsno 
      XAttrMDLabelno 
      XAttrQuarantineyes!(quarantine information for files downloaded from the internet. May only be -deleted when writing)
      XAttrResourceForkno 
      -
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Dec 23, 2019 +
      Last revised Oct 16, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Matroska.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Matroska.html --- libimage-exiftool-perl-11.88/html/TagNames/Matroska.html 2019-06-06 12:41:52.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Matroska.html 2022-01-12 22:57:20.000000000 +0000 @@ -1087,30 +1087,31 @@ 0x7672 EquirectangularProj -
      CubemapProj --
      - +
      CubemapProj +
      ProjectionPrivate +-
      -
      no --> QuickTime equi Tags
      --> QuickTime cbmp Tags 0x7673 -ProjectionPosYaw +ProjectionPoseYaw no   0x7674 -ProjectionPosPitch +ProjectionPosePitch no   0x7675 -ProjectionPosRoll +ProjectionPoseRoll no  
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Oct 10, 2017 +
      Last revised Jan 12, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Microsoft.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Microsoft.html --- libimage-exiftool-perl-11.88/html/TagNames/Microsoft.html 2019-10-25 15:45:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Microsoft.html 2021-03-17 13:14:03.000000000 +0000 @@ -298,8 +298,13 @@

      Microsoft Xtra Tags

      -

      Tags extracted from the Microsoft "Xtra" atom of QuickTime videos. Tag ID's -are not shown because some are unruly GUID's.

      +

      Tags found in the Microsoft "Xtra" atom of QuickTime videos. Tag ID's are +not shown because some are unruly GUID's. Currently most of these tags are +not writable because the Microsoft documentation is poor and samples were +not available, but more tags may be made writable in the future if samples +are provided. Note that writable tags in this table are are flagged to +"Avoid", which means that other more common tags will be written instead if +possible unless the Microsoft group is specified explicitly.

      @@ -2590,7 +2595,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Sep 26, 2019 +
      Last revised Oct 29, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/MinoltaRaw.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/MinoltaRaw.html --- libimage-exiftool-perl-11.88/html/TagNames/MinoltaRaw.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/MinoltaRaw.html 2020-10-29 13:45:32.000000000 +0000 @@ -178,12 +178,17 @@
      0xf = Light
      0x10 = Autumn Leaves
      0x11 = Sepia +
      0x12 = FL +
      0x13 = Vivid 2 +
      0x14 = IN +
      0x15 = SH
      0x64 = Neutral
      0x65 = Clear
      0x66 = Deep
      0x67 = Light
      0x68 = Night View
      0x69 = Autumn Leaves +
      0xff = Off
      0xffffffff = n/a
      @@ -339,7 +344,7 @@ - + @@ -351,7 +356,7 @@ - + @@ -363,7 +368,7 @@ - + @@ -430,43 +435,43 @@ - - + + - + - + - + - + - + - + - + - + - + @@ -474,79 +479,79 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -554,35 +559,36 @@ - + - + - + - + - + - + - + - + @@ -590,99 +596,108 @@ - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + + + + + - + - + + + + + - + - + - + - + - + - + @@ -690,115 +705,115 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -810,35 +825,36 @@ - + - - + + - + - + - + - + - + - + @@ -850,28 +866,28 @@ - + - + - + - + - + - - + + @@ -879,7 +895,7 @@ - + @@ -1111,7 +1127,7 @@ - + @@ -1247,14 +1263,14 @@ - + - + - + @@ -1364,15 +1380,15 @@ - + - + - + @@ -1420,7 +1436,7 @@ - + @@ -1460,7 +1476,7 @@ - + @@ -1500,7 +1516,8 @@ - + @@ -1535,15 +1552,15 @@ - - + + - + - + @@ -1551,51 +1568,51 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + @@ -1603,159 +1620,159 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1763,15 +1780,15 @@ - + - + - + @@ -1779,123 +1796,123 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1903,47 +1920,47 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -1951,11 +1968,11 @@ - + - + @@ -1963,158 +1980,162 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + - + @@ -2122,7 +2143,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Apr 30, 2019 +
      Last revised Mar 17, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Minolta.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Minolta.html --- libimage-exiftool-perl-11.88/html/TagNames/Minolta.html 2019-09-26 12:21:16.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Minolta.html 2020-10-29 13:45:33.000000000 +0000 @@ -141,16 +141,21 @@
      7 = Adobe RGB
      12 = Neutral
      13 = Clear -
      14 = Deep - +
       
      AlbumArtistnoUnicode/  
      AlbumArtist 
      AlbumCoverURLnoUnicode/  
      AlbumID 
      AlbumTitlenoUnicode/  
      AlbumTitleno  
      AutoSummarynoAuthorURLUnicode/  
      AverageLevelAutoSummary no  
      BccAddressesAverageLevel no  
      BccNamesBccAddresses no  
      Beats-per-minuteBccNames no  
      BeatsPerMinuteBeats-per-minute no  
      BillingInformationBeatsPerMinute no  
      BirthdayBillingInformation no  
      BitDepthBirthday no  
      BitrateBitDepth no  
      no  
      BroadcastDateBitrate no  
      BusinessAddressBroadcastDate no  
      BusinessCityBusinessAddress no  
      BusinessCountry-RegionBusinessCity no  
      BusinessFaxBusinessCountry-Region no  
      BusinessHomePageBusinessFax no  
      BusinessPOBoxBusinessHomePage no  
      BusinessPhoneBusinessPOBox no  
      BusinessPostalCodeBusinessPhone no  
      BusinessStateOrProvinceBusinessPostalCode no  
      BusinessStreetBusinessStateOrProvince no  
      BuyNowBusinessStreet no  
      BuyTicketsBuyNow no  
      CDTrackEnabledBuyTickets no  
      CallLettersCDTrackEnabled no  
      CallbackNumberCallLetters no  
      CameraMakerCallbackNumber no  
      CameraManufacturerCameraMaker no  
      CameraModelCameraManufacturer no  
      no  
      CarPhoneCameraModel no  
      CategoryCarPhone no  
      CategorynoUnicode/+  
      CcAddressesCategory no  
      CcNamesCcAddresses no  
      CellPhoneCcNames no  
      ChannelNumberCellPhone no  
      ChannelsChannelNumber no  
      no  
      ChapterNumChannels no  
      ChildrenChapterNum no  
      CityChildren no  
      ClientIDCity no  
      ClosedCaptioningClientID no  
      ColorClosedCaptioning no  
      CommentColor no  
      CommentsComment no  
      CompanyComments no  
      CompanyMainPhoneCompany no  
      CompleteCompanyMainPhone no  
      ComposerComplete no  
      ComposersnoComposerUnicode/  
      ComputerComposers no  
      ConductorComputer no  
      ConductorUnicode/+ 
      Conductors no  
      ContactNames no  
      ContentDistributorUnicode/ 
      ContentDistributorDuration no  
      ContentDistributorDurationContentDistributorType no  
      ContentDistributorTypeContentGroupDescription no  
      ContentGroupDescriptionContentType no  
      ContentTypeContributors no  
      ContributorsConversationID no  
      ConversationIDCopyright no  
      no  
      CopyrightCount no  
      CountCountry-Region no  
      Country-RegionCreator no  
      CreatorCurrentBitrate no  
      CurrentBitrateDLNAServerUDN no  
      DLNAServerUDNDLNASourceURI no  
      DLNASourceURIDRMIndividualizedVersion no  
      DRMIndividualizedVersionDRMKeyID no  
      DRMKeyIDDTCPIPHost no  
      DTCPIPHostDTCPIPPort no  
      DTCPIPPortDVDID no  
      DVDIDDataRate no  
      DataRateDate no  
      DateDateAccessed no  
      DateAccessednoDateAcquiredvt_filetime/  
      DateAcquiredDateArchived no  
      DateArchivedDateCompleted no  
      DateCompletedDateCreated no  
      DateCreatedDateImported no  
      DateImportedDateLastSaved no  
      DateLastSavedDateModified no  
      DateModifiedDatePictureTaken no  
      DatePictureTakenDateReceived no  
      DateReceivedDateReleased no  
      DateReleasedDateSent no  
      DateSentDateVisited no  
      DateVisitedDepartment no  
      DepartmentDescription no  
      no  
      DescriptionDimensions no  
      DimensionsnoDirectorUnicode/+  
      DirectorDirectors no  
      DirectorsDisplayArtist no  
      DisplayArtistDivision no  
      DivisionDocumentID no  
      DocumentIDDueDate no  
      DueDateDuration no  
      no  
      DurationE-mail2 no  
      E-mail2E-mail3 no  
      E-mail3E-mailAddress no  
      E-mailAddressE-mailDisplayName no  
      E-mailDisplayNameE-mailList no  
      E-mailListnoEncodedByUnicode/  
      EncodedBy 
      EncodingTimenodate/  
      EndDate 
      InitialKeynoUnicode/  
      InitialKey 
      MediaClassPrimaryIDnoGUID/ '01CD0F29-DA4E-4157-897B-6275D50C4F11' = Audio (not music)
      'D1607DBC-E323-4BE2-86A1-48A42A28441E' = Music
      'DB9830BD-3AB3-4FAB-8A37-1A995F7FF74B' = Video
      'FCF24A76-9A57-4036-990D-E35DD8B244E1' = Other (not audio or video)
      MediaClassSecondaryIDnoGUID/ '00000000-0000-0000-0000-000000000000' = Unknown Content
      '00033368-5009-4AC3-A820-5D2D09A4E7C1' = Sound Clip from Game
      '0B710218-8C0C-475E-AF73-4C41C0C8F8CE' = Home Video from Pictures @@ -1312,7 +1328,7 @@
       
      MoodnoUnicode/  
      Mood 
      OriginalAlbumTitlenoUnicode/  
      OriginalArtistnoUnicode/  
      OriginalLyricistnoUnicode/  
      OtherAddress 
      ParentalRatingnoUnicode/  
      ParentalRating 
      PeriodnoUnicode/  
      Period 
      ProducernoUnicode/+  
      Producersno  
      ProtectednoPromotionURLUnicode/  
      ProtectionTypeProtected no  
      ProviderProtectionType no  
      no  
      ProviderLogoURLnoProviderUnicode/  
      ProviderRatingProviderLogoURL no  
      ProviderStyleProviderRating no  
      ProviderURLProviderStyle no  
      PublisherProviderURL no  
      PublishernoUnicode/  
      RadioBandPublisher no  
      RadioFormatRadioBand no  
      RatingRadioFormat no  
      RatingOrgRating no  
      ReadStatusRatingOrg no  
      RecordingTimeReadStatus no  
      no  
      RecordingTimeDayRecordingTime no  
      RecordingTimeMonthRecordingTimeDay no  
      RecordingTimeYearRecordingTimeMonth no  
      RecordingTimeYearMonthRecordingTimeYear no  
      RecordingTimeYearMonthDayRecordingTimeYearMonth no  
      ReleaseDateRecordingTimeYearMonthDay no  
      ReleaseDateDayReleaseDate no  
      ReleaseDateMonthReleaseDateDay no  
      ReleaseDateYearReleaseDateMonth no  
      ReleaseDateYearMonthReleaseDateYear no  
      ReleaseDateYearMonthDayReleaseDateYearMonth no  
      ReminderTimeReleaseDateYearMonthDay no  
      RequestStateReminderTime no  
      RequiredAttendeeAddressesRequestState no  
      RequiredAttendeesRequiredAttendeeAddresses no  
      RerunRequiredAttendees no  
      ResourcesRerun no  
      SAPResources no  
      SaturationSAP no  
      SearchRankingSaturation no  
      SenderAddressSearchRanking no  
      SenderNameSenderAddress no  
      SensitivitySenderName no  
      ShadowFilePathSensitivity no  
      SharedShadowFilePath no  
      SharedUserRatingShared no  
      SharedWithnoSharedUserRatingint64u/  
      SizeSharedWith no  
      SlidesSize no  
      SourceSlides no  
      SourceURLSource no  
      SpaceFreeSourceURL no  
      SpaceUsedSpaceFree no  
      SpouseSpaceUsed no  
      StartDateSpouse no  
      StateOrProvinceStartDate no  
      StationCallSignStateOrProvince no  
      StationNameStationCallSign no  
      StatusStationName no  
      no  
      StoreStatus no  
      StreetStore no  
      SubjectStreet no  
      no  
      SubjectDistanceSubject no  
      SubscriptionContentIDSubjectDistance no  
      SubtitleSubscriptionContentID no  
      SubtitlenoUnicode/  
      SubtitleDescriptionSubtitle no  
      SuffixSubtitleDescription no  
      SummarySuffix no  
      Sync01Summary no  
      Sync02Sync01 no  
      Sync03Sync02 no  
      Sync04Sync03 no  
      Sync05Sync04 no  
      Sync06Sync05 no  
      Sync07Sync06 no  
      Sync08Sync07 no  
      Sync09Sync08 no  
      Sync10Sync09 no  
      Sync11Sync10 no  
      Sync12Sync11 no  
      Sync13Sync12 no  
      Sync14Sync13 no  
      Sync15Sync14 no  
      Sync16Sync15 no  
      SyncOnlySync16 no  
      SyncStateSyncOnly no  
      TTY-TTDPhoneSyncState no  
      TaskOwnerTTY-TTDPhone no  
      TelexTaskOwner no  
      TemporaryTelex no  
      TitleTemporary no  
      no  
      TitleNumTitle no  
      TitleSortOrderTitleNum no  
      ToAddressesTitleSortOrder no  
      ToDoTitleToAddresses no  
      ToNamesToDoTitle no  
      TotalBitrateToNames no  
      TotalDurationTotalBitrate no  
      TotalEditingTimeTotalDuration no  
      TotalFileSizeTotalEditingTime no  
      TotalSizeTotalFileSize no  
      TrackNumberTotalSize no  
      no  
      TrackingIDTrackNumber no  
      TypeTrackingID no  
      no  
      URLType no  
      UniqueFileIdentifierURL no  
      Untitled0UniqueFileIdentifier no  
      Untitled1Untitled0 no  
      Untitled2Untitled1 no  
      UserCustom1Untitled2 no  
      UserCustom2UserCustom1 no  
      UserEffectiveRatingUserCustom2 no  
      UserLastPlayedTimeUserEffectiveRating no  
      UserPlayCountUserLastPlayedTime no  
      UserPlaycountAfternoonUserPlayCount no  
      UserPlaycountEveningUserPlaycountAfternoon no  
      UserPlaycountMorningUserPlaycountEvening no  
      UserPlaycountNightUserPlaycountMorning no  
      UserPlaycountWeekdayUserPlaycountNight no  
      UserPlaycountWeekendUserPlaycountWeekday no  
      UserRatingUserPlaycountWeekend no  
      UserServiceRatingUserRating no  
      UserWebURLUserServiceRating no  
      VerticalResolutionUserWebURL no  
      VideoBitrateVerticalResolution no  
      VideoCompressionVideoBitrate no  
      VideoFormatVideoCompression no  
      VideoFrameRateVideoFormat no  
      VideoHeightVideoFrameRate no  
      VideoWidthVideoHeight no  
      WMCollectionGroupIDVideoWidth no  
      WMCollectionIDWMCollectionGroupID no  
      WMContentIDWMCollectionID no  
      WMShadowFileSourceDRMTypeWMContentID no  
      WMShadowFileSourceFileTypeWMShadowFileSourceDRMType no  
      WebpageWMShadowFileSourceFileType no  
      WhiteBalanceWebpage no  
      WindowsFileNameWhiteBalance no  
      WordCountWindowsFileName no  
      WriterWordCount no  
      WriterUnicode/ 
      Writers no  
      Year no  
      Year no  
        15 = Light -
      16 = Autumn Leaves -
      17 = Sepia +
      14 = Deep +
      15 = Light +
      16 = Autumn Leaves
        17 = Sepia +
      18 = FL +
      19 = Vivid 2 +
      20 = IN +
      21 = SH
      100 = Neutral
      101 = Clear
      102 = Deep
      103 = Light
      104 = Night View
      105 = Autumn Leaves +
      255 = Off
      4294967295 = n/a
      @@ -213,7 +218,7 @@   28 -WB_RBLevelsUnknown? +WB_RBLevelsCustom int16u[2]   @@ -321,7 +326,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Mar 20, 2013 +
      Last revised Oct 29, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/MPF.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/MPF.html --- libimage-exiftool-perl-11.88/html/TagNames/MPF.html 2019-06-06 12:41:53.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/MPF.html 2020-11-27 16:35:43.000000000 +0000 @@ -13,8 +13,8 @@ from this segment is stored as a JPEG trailer. The MPF tags are not writable, however the MPF segment may be deleted as a group (with "MPF:All") but then the JPEG trailer should also be deleted (with "Trailer:All"). See -http://www.cipa.jp/std/documents/e/DC-007_E.pdf for the official -specification.

      +https://web.archive.org/web/20190713230858/http://www.cipa.jp/std/documents/e/DC-007_E.pdf +for the official specification.

      - + @@ -6668,7 +6668,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Jun 26, 2015 +
      Last revised Apr 1, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/NikonCustom.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/NikonCustom.html --- libimage-exiftool-perl-11.88/html/TagNames/NikonCustom.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/NikonCustom.html 2022-01-12 22:57:19.000000000 +0000 @@ -6856,7 +6856,9 @@
      46 = AF-Area Mode + AF-On (Group Area AF)
      47 = AF-Area Mode + AF-On (Auto Area AF)
      49 = Sync Release (Master Only) -
      50 = Sync Release (Remote Only) +
      50 = Sync Release (Remote Only) +
      58 = AF-Area Mode + AF-On (Group Area AF - HL) +
      59 = AF-Area Mode + AF-On (Group Area AF - VL) @@ -6898,7 +6900,9 @@
      46 = AF-Area Mode + AF-On (Group Area AF)
      47 = AF-Area Mode + AF-On (Auto Area AF)
      49 = Sync Release (Master Only) -
      50 = Sync Release (Remote Only) +
      50 = Sync Release (Remote Only) +
      58 = AF-Area Mode + AF-On (Group Area AF - HL) +
      59 = AF-Area Mode + AF-On (Group Area AF - VL) @@ -8777,9 +8781,2778 @@
      @@ -194,7 +194,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Oct 24, 2018 +
      Last revised Nov 27, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/MRC.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/MRC.html --- libimage-exiftool-perl-11.88/html/TagNames/MRC.html 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/MRC.html 2021-04-22 18:13:32.000000000 +0000 @@ -0,0 +1,731 @@ + + + + +MRC Tags + + + +

      MRC Tags

      +

      Tags extracted from Medical Research Council (MRC) format imaging files. +See https://www.ccpem.ac.uk/mrc_format/mrc2014.php for the specification.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index4Tag NameWritableValues / Notes
      0ImageWidthno 
      1ImageHeightno 
      2ImageDepthno(number of sections. Use ExtractEmbedded option to extract metadata for all +sections)
      3ImageModeno +
      0 = 8-bit signed integer +
      1 = 16-bit signed integer +
      2 = 32-bit signed real +
      3 = complex 16-bit integer +
      4 = complex 32-bit real +
      6 = 16-bit unsigned integer
      +
      4StartPointno 
      7GridSizeno 
      10CellWidthno(cell size in angstroms)
      11CellHeightno 
      12CellDepthno 
      13CellAlphano 
      14CellBetano 
      15CellGammano 
      16ImageWidthAxisno1 = X +
      2 = Y +
      3 = Z
      17ImageHeightAxisno1 = X +
      2 = Y +
      3 = Z
      18ImageDepthAxisno1 = X +
      2 = Y +
      3 = Z
      19DensityMinno 
      20DensityMaxno 
      21DensityMeanno 
      22SpaceGroupNumberno 
      23ExtendedHeaderSizeno 
      26ExtendedHeaderTypeno 
      27MRCVersionno 
      49Originno 
      53MachineStampno 
      54RMSDeviationno 
      55NumberOfLabelsno 
      56Label0no 
      76Label1no 
      96Label2no 
      116Label3no 
      136Label4no 
      156Label5no 
      176Label6no 
      196Label7no 
      216Label8no 
      236Label9no 
      + +

      MRC FEI12 Tags

      +

      Tags extracted from FEI1 and FEI2 extended headers.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      0MetadataSizeno 
      4MetadataVersionno 
      8Bitmask1no 
      12TimeStampno 
      20MicroscopeTypeno 
      36MicroscopeIDno 
      52Applicationno 
      68AppVersionno 
      84HighTensionno(volts)
      92Doseno(electrons/m2)
      100AlphaTiltno 
      108BetaTiltno 
      116XStageno 
      124YStageno 
      132ZStageno 
      140TiltAxisAngleno 
      148DualAxisRotno 
      156PixelSizeXno 
      164PixelSizeYno 
      220Defocusno 
      228STEMDefocusno 
      236AppliedDefocusno 
      244InstrumentModeno1 = TEM +
      2 = STEM
      248ProjectionModeno1 = Diffraction +
      2 = Imaging
      252ObjectiveLensno 
      268HighMagnificationModeno 
      284ProbeModeno1 = Nano +
      2 = Micro
      288EFTEMOnno0 = No +
      1 = Yes
      289Magnificationno 
      297Bitmask2no 
      301CameraLengthno 
      309SpotIndexno 
      313IlluminationAreano 
      321Intensityno 
      329ConvergenceAngleno 
      337IlluminationModeno 
      353WideConvergenceAngleRangeno0 = No +
      1 = Yes
      354SlitInsertedno0 = No +
      1 = Yes
      355SlitWidthno 
      363AccelVoltOffsetno 
      371DriftTubeVoltno 
      379EnergyShiftno 
      387ShiftOffsetXno 
      395ShiftOffsetYno 
      403ShiftXno 
      411ShiftYno 
      419IntegrationTimeno 
      427BinningWidthno 
      431BinningHeightno 
      435CameraNameno 
      451ReadoutAreaLeftno 
      455ReadoutAreaTopno 
      459ReadoutAreaRightno 
      463ReadoutAreaBottomno 
      467CetaNoiseReductno0 = No +
      1 = Yes
      468CetaFramesSummedno 
      472DirectDetElectronCountingno0 = No +
      1 = Yes
      473DirectDetAlignFramesno0 = No +
      1 = Yes
      490Bitmask3no 
      518PhasePlateno0 = No +
      1 = Yes
      519STEMDetectorNameno 
      535Gainno 
      543Offsetno 
      571DwellTimeno 
      579FrameTimeno 
      587ScanSizeLeftno 
      591ScanSizeTopno 
      595ScanSizeRightno 
      599ScanSizeBottomno 
      603FullScanFOV_Xno 
      611FullScanFOV_Yno 
      619Elementno 
      635EnergyIntervalLowerno 
      643EnergyIntervalHigherno 
      651Methodno 
      655IsDoseFractionno0 = No +
      1 = Yes
      656FractionNumberno 
      660StartFrameno 
      664EndFrameno 
      668InputStackFilenameno 
      748Bitmask4no 
      752AlphaTiltMinno 
      760AlphaTiltMaxno 
      768ScanRotationno 
      776DiffractionPatternRotationno 
      784ImageRotationno 
      792ScanModeEnumerationno0 = Other +
      1 = Raster +
      2 = Serpentine
      796AcquisitionTimeStampno 
      804DetectorCommercialNameno 
      820StartTiltAngleno 
      828EndTiltAngleno 
      836TiltPerImageno 
      844TitlSpeedno 
      852BeamCenterXno 
      856BeamCenterYno 
      860CFEGFlashTimeStampno 
      868PhasePlatePositionno 
      872ObjectiveApertureno 
      + +
      +(This document generated automatically by Image::ExifTool::BuildTagLookup) +
      Last revised Apr 22, 2021 +

      <-- ExifTool Tag Names

      + + diff -Nru libimage-exiftool-perl-11.88/html/TagNames/MWG.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/MWG.html --- libimage-exiftool-perl-11.88/html/TagNames/MWG.html 2019-10-25 15:45:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/MWG.html 2021-04-01 17:31:04.000000000 +0000 @@ -14,7 +14,8 @@ synchronized when writing. The MWG Composite tags below are designed to aid in the implementation of these recommendations. As well, the MWG defines new XMP tags which are listed in the subsequent tables below. See -http://www.metadataworkinggroup.org/ for the official MWG specification. +https://web.archive.org/web/20180919181934/http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf +for the official MWG specification.

      MWG Composite Tags

      The table below lists special Composite tags which are used to access other @@ -186,7 +187,8 @@

      MWG Regions Tags

      Image region metadata defined by the MWG 2.0 specification. These tags may be accessed without the need to load the MWG Composite tags above. See -http://www.metadataworkinggroup.org/ for the official specification.

      +https://web.archive.org/web/20180919181934/http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf +for the official specification.

      These tags belong to the ExifTool XMP-mwg-rs family 1 group.

      @@ -393,8 +395,9 @@

      Hierarchical keywords metadata defined by the MWG 2.0 specification. ExifTool unrolls keyword structures to an arbitrary depth of 6 to allow individual levels to be accessed with different tag names, and to avoid -infinite recursion. See http://www.metadataworkinggroup.org/ for the -official specification.

      +infinite recursion. See +https://web.archive.org/web/20180919181934/http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf +for the official specification.

      These tags belong to the ExifTool XMP-mwg-kw family 1 group.

      @@ -539,7 +542,8 @@

      MWG Collections Tags

      Collections metadata defined by the MWG 2.0 specification. See -http://www.metadataworkinggroup.org/ for the official specification.

      +https://web.archive.org/web/20180919181934/http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf +for the official specification.

      These tags belong to the ExifTool XMP-mwg-coll family 1 group.

      @@ -581,7 +585,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Jun 3, 2019 +
      Last revised Apr 1, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/MXF.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/MXF.html --- libimage-exiftool-perl-11.88/html/TagNames/MXF.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/MXF.html 2021-04-01 17:31:03.000000000 +0000 @@ -6474,7 +6474,7 @@
      no  
      VideoCodingSchemeID?VideoCodingSchemeID no  
      15.1 PreviewButton
      16.1 AssignBktButton
      +

      NikonCustom SettingsZ9 Tags

      +

      Custom settings for the Z9.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      1CustomSettingsBankint8u0 = A +
      1 = B +
      2 = C +
      3 = D
      3AF-CPrioritySelectionint8u0 = Release +
      1 = Release + Focus +
      3 = Focus
      5AF-SPrioritySelectionint8u0 = Release +
      1 = Focus
      7BlockShotAFResponseint8u1 = 1 (Quick) +
      2 = 2 +
      3 = 3 (Normal) +
      4 = 4 +
      5 = 5 (Delayed)
      11AFPointSelint8u0 = Use All +
      1 = Use Half
      13StoreByOrientationint8u0 = Off +
      1 = Focus Point +
      2 = Focus Point and AF-area mode
      15AFActivationint8u0 = AF-On Only +
      1 = Shutter/AF-On
      16AF-OnOutOfFocusRelease?int8u0 = Disable +
      1 = Enable
      17LimitAF-AreaModeSelPinpoint?int8u0 = Limit +
      1 = No Limit
      19LimitAF-AreaModeSelWideAF_S?int8u0 = Limit +
      1 = No Limit
      20LimitAF-AreaModeSelWideAF_L?int8u0 = Limit +
      1 = No Limit
      21LimitAFAreaModeSelAuto?int8u0 = Limit +
      1 = No Limit
      22FocusPointWrap?int8u0 = No Wrap +
      1 = Wrap
      23ManualFocusPointIllumination?int8u0 = On During Focus Point Selection Only +
      1 = On
      24DynamicAreaAFAssist?int8u0 = Focus Point Only +
      1 = Focus and Surrounding Points
      25AF-AssistIlluminatorint8u0 = Off +
      1 = On
      26ManualFocusRingInAFModeint8u0 = Off +
      1 = On
      27ExposureControlStepSizeint8u0 = 1/3 EV +
      1 = 1/2 EV +
      2 = 1 EV
      29EasyExposureCompensationint8u0 = Off +
      1 = On +
      2 = On (auto reset)
      31CenterWeightedAreaSizeint8u0 = 8 mm +
      1 = 12 mm +
      4 = Average
      33FineTuneOptMatrixMeteringint8s 
      35FineTuneOptCenterWeightedint8s 
      37FineTuneOptSpotMeteringint8s 
      39FineTuneOptHighlightWeightedint8s 
      41ShutterReleaseButtonAE-Lint8u0 = Off +
      1 = On (Half Press) +
      2 = On (Burst Mode)
      43SelfTimerTimeint8u0 = 2 s +
      1 = 5 s +
      2 = 10 s +
      3 = 20 s
      45SelfTimerShotCountint8u 
      49SelfTimerShotIntervalint8u0 = 0.5 s +
      1 = 1 s +
      2 = 2 s +
      3 = 3 s
      51PlaybackMonitorOffTimeint8u + + +
      0 = 2 s +
      1 = 4 s +
      3 = 10 s +
      4 = 20 s
        5 = 30 s +
      6 = 1 min +
      7 = 5 min +
      8 = 10 min
        11 = 30 min +
      12 = No Limit
      +
      53MenuMonitorOffTimeint8u + + +
      0 = 2 s +
      1 = 4 s +
      3 = 10 s +
      4 = 20 s
        5 = 30 s +
      6 = 1 min +
      7 = 5 min +
      8 = 10 min
        11 = 30 min +
      12 = No Limit
      +
      55ShootingInfoMonitorOffTimeint8u + + +
      0 = 2 s +
      1 = 4 s +
      3 = 10 s +
      4 = 20 s
        5 = 30 s +
      6 = 1 min +
      7 = 5 min +
      8 = 10 min
        11 = 30 min +
      12 = No Limit
      +
      57ImageReviewMonitorOffTimeint8u + + +
      0 = 2 s +
      1 = 4 s +
      3 = 10 s +
      4 = 20 s
        5 = 30 s +
      6 = 1 min +
      7 = 5 min +
      8 = 10 min
        11 = 30 min +
      12 = No Limit
      +
      59CLModeShootingSpeedint8u 
      61MaxContinuousReleaseno 
      65SyncReleaseMode?int8u0 = No Sync +
      1 = Sync
      69LimitSelectableImageAreaDX?int8u0 = Limit +
      1 = No Limit
      70LimitSelectableImageArea1To1?int8u0 = Limit +
      1 = No Limit
      71LimitSelectableImageArea16To9?int8u0 = Limit +
      1 = No Limit
      72FileNumberSequenceint8u0 = Off +
      1 = On
      73FocusPeakingLevel?int8u0 = High Sensitivity +
      1 = Standard Sensitivity +
      2 = Low Sensitivity
      75FocusPeakingHighlightColor?int8u0 = Red +
      1 = Yellow +
      2 = Blue +
      3 = White
      81ContinuousModeDisplayint8u0 = Off +
      1 = On
      83FlashSyncSpeedno + +
      0 = 1/60 s +
      1 = 1/80 s +
      2 = 1/100 s +
      3 = 1/125 s
        4 = 1/160 s +
      5 = 1/200 s +
      6 = 1/250 s
      +
      85HighSpeedSyncint8u0 = Off +
      1 = On
      87FlashShutterSpeedno + + + +
      0 = 1 s +
      1 = 1/2 s +
      2 = 1/4 s
        3 = 1/8 s +
      4 = 1/15 s +
      5 = 1/30 s
        6 = 1/60 s +
      7 = 30 s +
      8 = 15 s
        9 = 8 s +
      10 = 4 s +
      11 = 2 s
      +
      89FlashExposureCompAreaint8u0 = Entire Frame +
      1 = Background Only
      91AutoFlashISOSensitivityint8u0 = Subject and Background +
      1 = Subject Only
      93ModelingFlashint8u0 = Off +
      1 = On
      95AutoBracketModeMint8u0 = Flash/Speed +
      1 = Flash/Speed/Aperture +
      2 = Flash/Aperture +
      3 = Flash Only +
      4 = Flash/ISO
      97AutoBracketOrderint8u0 = 0,-,+ +
      1 = -,0,+
      99Func1Buttonint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      115Func2Buttonint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      131AFOnButtonint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      143SubSelector?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      155AssignMovieRecordButton?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      159LensFunc1Buttonint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      167LensFunc2Buttonint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      173LensControlRingint8u0 = None (Disabled) +
      1 = Focus (M/A) +
      2 = ISO Sensitivity +
      3 = Exposure Compensation +
      4 = Aperture
      175MultiSelectorShootModeint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      179MultiSelectorPlaybackModeint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      183ShutterSpeedLockint8u0 = Off +
      1 = On
      184ApertureLockint8u0 = Off +
      1 = On
      186CmdDialsReverseRotationint8u0 = No +
      1 = Shutter Speed & Aperture +
      0 = Exposure Compensation +
      1 = Exposure Compensation, Shutter Speed & Aperture
      191UseDialWithoutHold?int8u0 = Off +
      1 = On
      193ReverseIndicators?int8u0 = + 0 - +
      1 = - 0 +
      195MovieFunc1Buttonint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      203MovieAF-OnButtonint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      217MovieMultiSelector?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      221MovieAFSpeedint8u 
      223MovieAFSpeedApplyint8u 
      225MovieAFTrackingSensitivityint8u + +
      0 = 1 (High) +
      1 = 2 +
      2 = 3 +
      3 = 4 (Normal)
        4 = 5 +
      5 = 6 +
      6 = 7 (Low)
      +
      257LCDIllumination?int8u0 = Off +
      1 = On
      258ExtendedShutterSpeedsint8u0 = Off +
      1 = On
      259SubjectMotionint8u0 = Erratic +
      1 = Steady
      261FocusPointPersistenceint8u0 = Auto +
      1 = Off
      263AutoFocusModeRestrictions?int8u0 = AF-S +
      1 = AF-C +
      2 = Full-time AF +
      3 = Manual +
      4 = No Restrictions
      267CHModeShootingSpeedint8u 
      269.1LimitReleaseModeSelCL?int8u[val >> 1 & 0x1] +
      0 = Limit +
      1 = No Limit
      269.2LimitReleaseModeSelCH?int8u[val >> 2 & 0x1] +
      0 = Limit +
      1 = No Limit
      269.3LimitReleaseModeSelC30?int8u[val >> 4 & 0x1] +
      0 = Limit +
      1 = No Limit
      269.4LimitReleaseModeSelC120?int8u[val >> 6 & 0x1] +
      0 = Limit +
      1 = No Limit
      269.5LimitReleaseModeSelSelf?int8u[val >> 7 & 0x1] +
      0 = Limit +
      1 = No Limit
      273FlashBurstPriority?int8u0 = Frame Rate +
      1 = Exposure
      277VerticalFuncButtonint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      281Func3Buttonint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      285VerticalAFOnButtonint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      293VerticalMultiSelectorPlaybackMode?int8u0 = Image Scroll L/R +
      1 = Image Scroll Up/Down
      295MovieFunc3Buttonint8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      335LimitAF-AreaModeSelDynamic_S?int8u0 = Limit +
      1 = No Limit
      336LimitAF-AreaModeSelDynamic_M?int8u0 = Limit +
      1 = No Limit
      337LimitAF-AreaModeSelDynamic_L?int8u0 = Limit +
      1 = No Limit
      339LimitAF-AreaModeSel3DTracking?int8u0 = Limit +
      1 = No Limit
      341PlaybackFlickUp?int8u +
      0 = Rating +
      1 = Select To Send (PC) +
      2 = Select To Send (FTP) +
      3 = Protect +
      4 = Voice Memo +
      5 = None
      +
      345PlaybackFlickDown?int8u +
      0 = Rating +
      1 = Select To Send (PC) +
      2 = Select To Send (FTP) +
      3 = Protect +
      4 = Voice Memo +
      5 = None
      +
      349ISOStepSizeint8u0 = 1/3 EV +
      1 = 1/2 EV +
      2 = 1 EV
      355ReverseFocusRingint8u0 = Not Reversed +
      1 = Reversed
      356EVFImageFrame?int8u0 = Off +
      1 = On
      357EVFGrid?int8u + + +
      0 = 3x3 +
      1 = 4x4 +
      2 = 2.35:1
        3 = 1.85:1 +
      4 = 5:4 +
      5 = 4:3
        6 = 1:1 +
      7 = 16:9 +
      8 = 90%
      +
      359VirtualHorizonStyle?int8u0 = Type A (Cockpit) +
      1 = Type B (Sides)
      373Func4Button?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      379AudioButton?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      381QualityButton?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      399VerticalMultiSelector?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      421Func1ButtonPlaybackMode?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      423Func2ButtonPlaybackMode?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      425Func3ButtonPlaybackMode?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      431Func4ButtonPlaybackMode?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      437MovieRecordButtonPlaybackMode?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      439VerticalFuncButtonPlaybackMode?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      441AudioButtonPlaybackMode?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      447QualityButtonPlaybackMode?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      453WhiteBalanceButtonPlaybackMode?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      459CommandDialPlaybackMode?int8u + +
      0 = 1 Frame +
      1 = 10 Frames +
      2 = 50 Frames +
      3 = Folder +
      4 = Protect
        5 = Photos Only +
      6 = Videos Only +
      7 = Rating +
      8 = Page
      +
      463SubCommandDialPlaybackMode?int8u + +
      0 = 1 Frame +
      1 = 10 Frames +
      2 = 50 Frames +
      3 = Folder +
      4 = Protect
        5 = Photos Only +
      6 = Videos Only +
      7 = Rating +
      8 = Page
      +
      467FocusPointLock?int8u0 = Off +
      1 = On
      469ControlRingResponseint8u0 = High +
      1 = Low
      481VerticalMovieFuncButton?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      505VerticalMovieAFOnButton?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      515MovieAFAreaMode?int8u +
      0 = None +
      1 = Preview +
      3 = FV Lock +
      4 = AE/AF Lock +
      5 = AE Lock Only +
      6 = AE Lock (reset on release) +
      7 = AE Lock (hold) +
      8 = AF Lock Only +
      9 = AF-On +
      10 = Flash Disable/Enable +
      11 = Bracketing Burst +
      12 = +NEF(RAW) +
      18 = Virtual Horizon +
      19 = Synchronized Release +
      20 = My Menu +
      21 = My Menu Top Item +
      22 = Playback +
      23 = Rating +
      24 = Protect +
      25 = Zoom +
      26 = Focus Peaking +
      28 = Image Area +
      30 = Non-CPU Lens +
      31 = Active-D Lighting +
      33 = 1 Stop Speed/Aperture +
      35 = Metering +
      36 = Auto Bracketing +
      37 = Multiple Exposure +
      38 = HDR Overlay +
      39 = Picture Control +
      40 = Quality +
      41 = Focus Mode/AF AreaMode +
      42 = Select Center Focus Point +
      44 = Record Movie +
      47 = Choose Folder +
      48 = Power Aperture (Open) +
      49 = Power Aperture (Close) +
      52 = Microphone Sensitivity +
      57 = Preset Focus Point +
      58 = AE/AWB Lock (hold) +
      59 = AF-AreaMode +
      60 = AF-AreaMode + AF-On +
      61 = Recall Shooting Functions +
      64 = Filtered Playback +
      65 = Same as AF-On +
      66 = Voice Memo +
      70 = Photo Shooting Bank +
      73 = Exposure Compensation +
      76 = Silent Mode +
      78 = LiveView Information +
      79 = AWB Lock (hold) +
      80 = Grid Display +
      81 = Starlight View +
      82 = Select To Send (PC) +
      83 = Select To Send (FTP) +
      85 = Control Lock
      +
      527HDMIViewAssist?int8u0 = Off +
      1 = On
      529ZebraPatternToneRange?int8u0 = Off +
      1 = Highlights +
      2 = Midtones
      531MovieZebraPattern?int8u0 = Pattern 1 +
      1 = Pattern 2
      533MovieHighlightDisplayThreshold?int8u 
      535MovieMidtoneDisplayValue?int8u 
      537MovieMidtoneDisplayRange?int8u~ 
      541MovieEVFGrid?int8u + + +
      0 = 3x3 +
      1 = 4x4 +
      2 = 2.35:1
        3 = 1.85:1 +
      4 = 5:4 +
      5 = 4:3
        6 = 1:1 +
      7 = 16:9 +
      8 = 90%
      +
      549MovieShutterSpeedLock?int8u0 = Off +
      1 = On
      550MovieFocusPointLock?int8u0 = Off +
      1 = On
      563MatrixMetering?int8u0 = Face Detection Off +
      1 = Face Detection On
      564AF-CFocusDisplayint8u0 = Off +
      1 = On
      565FocusPeakingDisplay?int8u0 = Off +
      1 = On
      567KeepExposureint8u0 = Off +
      1 = Shutter Speed +
      2 = ISO
      585StarlightView?int8u0 = Off +
      1 = On
      587EVFWarmDisplayMode?int8u0 = Off +
      1 = Mode 1 +
      2 = Mode 2
      589EVFWarmDisplayBrightness?int8s 
      591EVFReleaseIndicator?int8u0 = Off +
      1 = Type A (Dark) +
      2 = Type B (Border) +
      3 = Type C (Sides)
      601MovieApertureLock?int8u0 = Off +
      1 = On
      607FlickAdvanceDirection?int8u0 = Left to Right +
      1 = Right to Left
      +
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Apr 12, 2019 +
      Last revised Jan 12, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Nikon.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Nikon.html --- libimage-exiftool-perl-11.88/html/TagNames/Nikon.html 2020-02-14 13:02:52.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Nikon.html 2022-02-09 12:08:41.000000000 +0000 @@ -148,11 +148,13 @@
      3 = 5:4 Crop
      4 = 3:2 Crop
      6 = 16:9 Crop -
      8 = 2.7x Crop   - 9 = DX Movie Crop -
      10 = 1.3x Movie Crop +
      8 = 2.7x Crop +
      9 = DX Movie Crop   + 10 = 1.3x Movie Crop
      11 = FX Uncropped
      12 = DX Uncropped +
      13 = 2.8x Movie Crop +
      14 = 1.4x Movie Crop
      15 = 1.5x Movie Crop
      17 = 1:1 Crop @@ -251,9 +253,14 @@ 0x0034 ShutterMode int16u -0 = Mechanical + + +
      48 = Electronic Front Curtain +
      64 = Electronic (Movie) +
      80 = Auto (Mechanical) +
      81 = Auto (Electronic Front Curtain)
      0 = Mechanical
      16 = Electronic -
      48 = Electronic Front Curtain
      + 0x0035 HDRInfo @@ -275,10 +282,23 @@ int16u[4]   +0x003e +ImageSizeRAW +yes +1 = Large +
      2 = Medium +
      3 = Small
      + 0x0045 CropArea int16u[4] (left, top, width, height) + +0x004e +NikonSettings +undef!^ +--> NikonSettings Tags 0x004f ColorTemperatureAuto @@ -336,7 +356,8 @@
      3 = Not Ready
      7 = Fired, External
      8 = Fired, Commander Mode -
      9 = Fired, TTL Mode +
      9 = Fired, TTL Mode +
      18 = LED Light 0x0088 @@ -407,10 +428,13 @@
      ShotInfoD4S
      ShotInfoD5
      ShotInfoD500 +
      ShotInfoD6
      ShotInfoD610 +
      ShotInfoZ7II +
      ShotInfoZ9
      ShotInfo02xx
      ShotInfoUnknown --
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - +-
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      - --> Nikon ShotInfoD40 Tags
      --> Nikon ShotInfoD80 Tags
      --> Nikon ShotInfoD90 Tags @@ -433,7 +457,10 @@
      --> Nikon ShotInfoD4S Tags
      --> Nikon ShotInfoD500 Tags
      --> Nikon ShotInfoD500 Tags +
      --> Nikon ShotInfoD6 Tags
      --> Nikon ShotInfoD610 Tags +
      --> Nikon ShotInfoZ7II Tags +
      --> Nikon ShotInfoZ9 Tags
      --> Nikon ShotInfo Tags
      --> Nikon ShotInfo Tags @@ -445,17 +472,7 @@ 0x0093 NEFCompression int16u - -
      1 = Lossy (type 1) -
      2 = Uncompressed -
      3 = Lossless -
      4 = Lossy (type 2) -
      5 = Striped packed 12 bits -
      6 = Uncompressed (reduced to 12 bit) -
      7 = Unpacked 12 bits -
      8 = Small -
      9 = Packed 12 bits
      - +--> Nikon NEFCompression Values 0x0094 SaturationAdj @@ -627,13 +644,15 @@
      FlashInfo0103
      FlashInfo0106
      FlashInfo0107 +
      FlashInfo0300
      FlashInfoUnknown --
      -
      -
      -
      -
      - +-
      -
      -
      -
      -
      -
      - --> Nikon FlashInfo0100 Tags
      --> Nikon FlashInfo0102 Tags
      --> Nikon FlashInfo0103 Tags
      --> Nikon FlashInfo0106 Tags
      --> Nikon FlashInfo0107 Tags +
      --> Nikon FlashInfo0300 Tags
      --> Nikon FlashInfoUnknown Tags 0x00a9 @@ -693,7 +712,8 @@ 0x00b7 AFInfo2 - ---> Nikon AFInfo2 Tags +--> Nikon AFInfo2V0400 Tags +
      --> Nikon AFInfo2 Tags 0x00b8 FileInfo @@ -717,16 +737,22 @@ ^ = Deletable'>undef!^ --> Nikon PictureControl Tags +0x00bf +SilentPhotography +yes +0 = Off +
      1 = On
      + 0x00c3 BarometerInfo - --> Nikon BarometerInfo Tags - + 0x0e00 PrintIM - --> PrintIM Tags - + 0x0e01 NikonCaptureData (this data is dropped when copying Nikon MakerNotes since it may be too large to fit in the EXIF segment of a JPEG image, but it may be copied as a block into existing Nikon MakerNotes later if desired)
      - + 0x0e09 NikonCaptureVersion string^   - + 0x0e0e NikonCaptureOffsets undef^ --> Nikon CaptureOffsets Tags - + 0x0e10 NikonScanIFD - --> Nikon Scan Tags - + 0x0e13 NikonCaptureEditVersions
      NikonCaptureEditVersions @@ -759,18 +785,18 @@ (the ExtractEmbedded option may be used to decode settings from the stored edit versions, otherwise this is extracted as a binary data block)
      --> NikonCapture Tags - + 0x0e1d NikonICCProfile undef! --> ICC_Profile Tags - + 0x0e1e NikonCaptureOutput undef!^ --> Nikon CaptureOutput Tags - + 0x0e22 NEFBitDepth int16u[4]! @@ -781,6 +807,175 @@
      '16 16 16 0' = 16 x 3
      +

      Nikon NEFCompression Values

      +
      +
      + + + + + + + + + + + + + + +
      ValueNEFCompressionValueNEFCompression
      1= Lossy (type 1)7= Unpacked 12 bits
      2= Uncompressed8= Small
      3= Lossless9= Packed 12 bits
      4= Lossy (type 2)10= Packed 14 bits
      5= Striped packed 12 bits13= High Efficiency
      6= Uncompressed (reduced to 12 bit)14= High Efficiency*
      + +

      Nikon ast Tags

      +

      Tags used by Nikon NX Studio in Nikon NKSC sidecar files and trailers.

      + +

      These tags belong to the ExifTool XMP-ast family 1 group.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Tag NameWritableValues / Notes
      Aboutno 
      GPSAltitudeno 
      GPSAltitudeRefno0 = Above Sea Level +
      1 = Below Sea Level
      GPSImgDirectionno 
      GPSImgDirectionRefno'M' = Magnetic North +
      'T' = True North
      GPSLatitudeno 
      GPSLatitudeRefno0 = North +
      1 = South
      GPSLongitudeno 
      GPSLongitudeRefno2 = East +
      3 = West
      GPSMapDatumno 
      GPSVersionIDno 
      IPTC---> IPTC Tags
      Versionno 
      XMLPackets---> XMP Tags
      + +

      Nikon nine Tags

      +

      These tags belong to the ExifTool XMP-nine family 1 group.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Tag NameWritableValues / Notes
      Aboutno 
      Labelno 
      NineEdits---> Nikon NineEdits Tags
      Ratingno 
      Trimno 
      Versionno 
      + +

      Nikon NineEdits Tags

      +

      XML-based tags used to store editing information.

      +
      +
      + + + + + + + + + + + + + + + +
      Tag NameWritableValues / Notes
      FilterParametersBinaryno 
      FilterParametersCustomCustomDatano 
      FilterParametersExportExportDatano 
      + +

      Nikon sdc Tags

      +

      These tags belong to the ExifTool XMP-sdc family 1 group.

      +
      +
      + + + + + + + + + + + + + + + + + + + +
      Tag NameWritableValues / Notes
      Aboutno 
      AppNameno 
      AppVersionno 
      Versionno 
      +

      Nikon PreviewIFD Tags

      - @@ -1668,6 +1868,24 @@
      @@ -803,6 +998,7 @@
      0x9 = Depth map of reduced-resolution image
      0x10 = Enhanced image data
      0x10001 = Alternate reduced-resolution image +
      0x10004 = Semantic Mask
      0xffffffff = invalid
      Bit 0 = Reduced resolution
      Bit 1 = Single page @@ -1047,7 +1243,11 @@
      6 VRMode int8u0 = Normal +(Z Series cameras thru Decemeber 2021) +
      0 = Off +
      1 = Sport +
      3 = Normal +
      0 = Normal
      1 = On (1)
      2 = Active
      3 = Sport
       
      +

      Nikon MakerNotes0x51 Tags

      +
      +
      + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      0FirmwareVersionno 
      10NEFCompressionint16u[0.5]--> Nikon NEFCompression Values
      +

      Nikon AFInfo Tags

      + + + + + + + + + + + + + + +
      @@ -2682,6 +2900,21 @@ CustomSettingsD850 - --> NikonCustom SettingsD850 Tags
      12027RollAnglefixed32u(converted to degrees of clockwise camera roll)
      12031PitchAnglefixed32u(converted to degrees of upward camera tilt)
      12035YawAnglefixed32u(the camera yaw angle when shooting in portrait orientation)

      Nikon ShotInfoD5000 Tags

      @@ -3117,6 +3350,16 @@
      2 = Rotate 90 CW
      3 = Rotate 180
      +208 +Interval +int8u~ +  + +212 +IntervalFrame +int8u~ +  + 1506 FlickerReductionIndicator int8u @@ -3398,8 +3641,8 @@
      3 = Highlight -

      Nikon ShotInfoD610 Tags

      -

      These tags are extracted from encrypted data in images from the D610.

      +

      Nikon ShotInfoD6 Tags

      +

      These tags are extracted from encrypted data in images from the D6.

      @@ -3416,75 +3659,1393 @@ - - - - -
      no  
      1999CustomSettingsD610---> NikonCustom SettingsD610 Tags
      - -

      Nikon ShotInfo Tags

      -

      This information is encrypted for ShotInfoVersion 02xx, and some tags are -only valid for specific models.

      -
      -
      - - - - - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - + - - + + - + - - + + - + - - + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      0ShotInfoVersionno30220IntervalShootingint16u~  
      4FirmwareVersionno 
      49690RollAnglefixed32u(converted to degrees of clockwise camera roll)
      16DistortionControlint8u(P6000) -
      0 = Off -
      1 = On
      49694PitchAnglefixed32u(converted to degrees of upward camera tilt)
      102VR_0x66?int8u(D2X, D2Xs (unverified)) -
      0 = Off -
      1 = On (normal) -
      2 = On (active)
      49698YawAnglefixed32u(the camera yaw angle when shooting in portrait orientation)
      106ShutterCount50190Intervals int32u(D2X, D2Xs)
       
      110DeletedImageCount50194ShotsPerInterval int32u(D2X, D2Xs)
       
      117VibrationReduction50198IntervalExposureSmoothing int8u(D200) -
      0 = Off -
      1 = On (1) -
      2 = On (2) -
      3 = On (3)
      0 = Off +
      1 = On
      130VibrationReduction50200IntervalPriority int8u(D2X, D2Xs) -
      0 = Off +
      0 = Off
      1 = On
      343ShutterCountundef[2]50234FocusShiftNumberShotsint8u 
      50238FocusShiftStepWidthint8u 
      50242FocusShiftIntervalint8u~ 
      50246FocusShiftExposureLockint8u0 = Off +
      1 = On
      50336DiffractionCompensationint8u0 = Off +
      1 = On
      50342FlashControlModeint8u0 = TTL +
      1 = Auto External Flash +
      2 = GN (distance priority) +
      3 = Manual +
      4 = Repeating Flash
      50348FlashGNDistance?no + + +
      0 = 0 +
      1 = 0.1 m +
      2 = 0.2 m +
      3 = 0.3 m +
      4 = 0.4 m +
      5 = 0.5 m +
      6 = 0.6 m +
      7 = 0.7 m +
      8 = 0.8 m +
      9 = 0.9 m +
      10 = 1.0 m +
      11 = 1.1 m +
      12 = 1.3 m
        13 = 1.4 m +
      14 = 1.6 m +
      15 = 1.8 m +
      16 = 2.0 m +
      17 = 2.2 m +
      18 = 2.5 m +
      19 = 2.8 m +
      20 = 3.2 m +
      21 = 3.6 m +
      22 = 4.0 m +
      23 = 4.5 m +
      24 = 5.0 m +
      25 = 5.6 m
        26 = 6.3 m +
      27 = 7.1 m +
      28 = 8.0 m +
      29 = 9.0 m +
      30 = 10.0 m +
      31 = 11.0 m +
      32 = 13.0 m +
      33 = 14.0 m +
      34 = 16.0 m +
      35 = 18.0 m +
      36 = 20.0 m +
      255 = n/a
      +
      50352FlashOutput?int8u 
      50362FlashRemoteControl?int8u0 = Group +
      1 = Quick Wireless +
      2 = Remote Repeating
      50366FlashMasterControlModeint8u0 = TTL +
      1 = Manual +
      2 = Auto +
      3 = Off
      50368FlashMasterCompensation?int8s 
      50372FlashMasterOutput?int8u 
      50374FlashWirelessOption?int8u0 = Optical AWL +
      1 = Off
      50524MovieType?int8u0 = MOV +
      1 = MP4
      + +

      Nikon ShotInfoD610 Tags

      +

      These tags are extracted from encrypted data in images from the D610.

      +
      +
      + + + + + + + + + + + + + + + + + + +
      IndexTag NameWritableValues / Notes
      0ShotInfoVersionno 
      4FirmwareVersionno 
      1999CustomSettingsD610---> NikonCustom SettingsD610 Tags
      + +

      Nikon ShotInfoZ7II Tags

      +

      These tags are extracted from encrypted data in images from the Z7II.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IndexTag NameWritableValues / Notes
      0ShotInfoVersionno 
      4FirmwareVersionno 
      30220IntervalShootingint16u~ 
      32672PortraitImpressionBalanceint8u[2]~ 
      52786RollAnglefixed32u(converted to degrees of clockwise camera roll)
      52790PitchAnglefixed32u(converted to degrees of upward camera tilt)
      52794YawAnglefixed32u(the camera yaw angle when shooting in portrait orientation)
      52918MenuSettingsZ7IIOffsetint8u 
      52920MenuSettingsZ7II---> Nikon MenuSettingsZ7II Tags
      + +

      Nikon MenuSettingsZ7II Tags

      +

      These tags are used by the Z5, Z6, Z7, Z6II, Z7II, Z50 and Zfc.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      160IntervalDurationHoursint32u 
      164IntervalDurationMinutesint32u 
      168IntervalDurationSecondsint32u 
      176Intervalsint32u 
      180ShotsPerIntervalint32u 
      184IntervalExposureSmoothingint8u0 = Off +
      1 = On
      186IntervalPriorityint8u0 = Off +
      1 = On
      220FocusShiftNumberShotsint8u 
      224FocusShiftStepWidthint8u 
      228FocusShiftIntervalint8u~ 
      232FocusShiftExposureLockint8u0 = Off +
      1 = On
      322DiffractionCompensationint8u0 = Off +
      1 = On
      323AutoDistortionControlint8u0 = Off +
      1 = On
      326NikonMeteringModeint8u0 = Matrix +
      1 = Center +
      2 = Spot +
      3 = Highlight
      328FlashControlModeint8u0 = TTL +
      1 = Auto External Flash +
      2 = GN (distance priority) +
      3 = Manual +
      4 = Repeating Flash
      334FlashGNDistance?no + + +
      0 = 0 +
      1 = 0.1 m +
      2 = 0.2 m +
      3 = 0.3 m +
      4 = 0.4 m +
      5 = 0.5 m +
      6 = 0.6 m +
      7 = 0.7 m +
      8 = 0.8 m +
      9 = 0.9 m +
      10 = 1.0 m +
      11 = 1.1 m +
      12 = 1.3 m
        13 = 1.4 m +
      14 = 1.6 m +
      15 = 1.8 m +
      16 = 2.0 m +
      17 = 2.2 m +
      18 = 2.5 m +
      19 = 2.8 m +
      20 = 3.2 m +
      21 = 3.6 m +
      22 = 4.0 m +
      23 = 4.5 m +
      24 = 5.0 m +
      25 = 5.6 m
        26 = 6.3 m +
      27 = 7.1 m +
      28 = 8.0 m +
      29 = 9.0 m +
      30 = 10.0 m +
      31 = 11.0 m +
      32 = 13.0 m +
      33 = 14.0 m +
      34 = 16.0 m +
      35 = 18.0 m +
      36 = 20.0 m +
      255 = n/a
      +
      338FlashOutput?int8u 
      346FlashWirelessOption?int8u0 = Off +
      1 = Optical AWL +
      2 = Optical/Radio AWL +
      3 = Radio AWL
      348FlashRemoteControl?int8u0 = Group +
      1 = Quick Wireless +
      2 = Remote Repeating
      352FlashMasterControlModeint8u0 = TTL +
      1 = Manual +
      2 = Auto +
      3 = Off
      354FlashMasterCompensation?int8s 
      358FlashMasterOutput?int8u 
      502MovieFrameSize?int8u1 = 1920x1080 +
      2 = 3840x2160 +
      3 = 7680x4320
      504MovieFrameRate?int8u + +
      0 = 120p +
      1 = 100p +
      2 = 60p +
      3 = 50p
        4 = 30p +
      5 = 25p +
      6 = 24p
      +
      506MovieSlowMotion?int8u0 = Off +
      1 = On (4x) +
      2 = On (5x)
      510MovieType?int8u0 = MOV +
      1 = MP4
      516MovieISOAutoManualMode?int16u + +
      0 = ISO 64 +
      1 = ISO 80 +
      2 = ISO 100 +
      3 = ISO 125 +
      4 = ISO 160 +
      5 = ISO 200 +
      6 = ISO 250 +
      7 = ISO 320 +
      8 = ISO 400 +
      9 = ISO 500 +
      10 = ISO 640 +
      11 = ISO 800 +
      12 = ISO 1000 +
      13 = ISO 1250 +
      14 = ISO 1600 +
      15 = ISO 2000
        16 = ISO 2500 +
      17 = ISO 3200 +
      18 = ISO 4000 +
      19 = ISO 5000 +
      20 = ISO 6400 +
      21 = ISO 8000 +
      22 = ISO 10000 +
      23 = ISO 12800 +
      24 = ISO 16000 +
      25 = ISO 20000 +
      26 = ISO 25600 +
      27 = ISO Hi 0.3 +
      28 = ISO Hi 0.7 +
      29 = ISO Hi 1.0 +
      32 = ISO Hi 2.0
      +
      568MovieActiveD-Lighting?int8u0 = Off +
      2 = Low +
      3 = Normal +
      4 = High +
      5 = Extra High
      572MovieHighISONoiseReduction?int8u0 = Off +
      1 = Low +
      2 = Normal +
      3 = High
      574MovieVignetteControl?int8u0 = Off +
      1 = Low +
      2 = Normal +
      3 = High
      576MovieVignetteControlSameAsPhoto?int8u0 = No +
      1 = Yes
      577MovieDiffractionCompensation?int8u0 = Off +
      1 = On
      578MovieAutoDistortionControl?int8u0 = Off +
      1 = On
      584MovieFocusMode?int8u0 = Manual +
      1 = AF-S +
      2 = AF-C +
      4 = AF-F
      590MovieVibrationReduction?int8u0 = Off +
      1 = On (Normal) +
      2 = On (Sport)
      591MovieVibrationReductionSameAsPhoto?int8u0 = No +
      1 = Yes
      858HDMIOutputN-Log?int8u0 = Off +
      1 = On
      + +

      Nikon ShotInfoZ9 Tags

      +

      These tags are extracted from encrypted data in images from the Z9.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      IndexTag NameWritableValues / Notes
      0ShotInfoVersionno 
      4FirmwareVersionno 
      27800IntervalShootingint16u~ 
      30788FocusShiftShootingint8u~ 
      60139RollAnglefixed32u(converted to degrees of clockwise camera roll)
      60143PitchAnglefixed32u(converted to degrees of upward camera tilt)
      60147YawAnglefixed32u(the camera yaw angle when shooting in portrait orientation)
      60491MenuSettingsZ9---> Nikon MenuSettingsZ9 Tags
      + +

      Nikon MenuSettingsZ9 Tags

      +

      These tags are used by the Z9.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      140MultipleExposureModeint8u0 = Off +
      1 = On (Series) +
      2 = On
      142MultiExposureShotsint8u 
      188Intervalsint32u 
      192ShotsPerIntervalint32u 
      232FocusShiftNumberShotsint8u 
      236FocusShiftStepWidthint8u 
      240FocusShiftIntervalint8u~ 
      244FocusShiftExposureLock?int8u0 = Off +
      1 = On
      274PhotoShootingMenuBankint8u0 = A +
      1 = B +
      2 = C +
      3 = D
      276ExtendedMenuBanksint8u0 = Off +
      1 = On
      308PhotoShootingMenuBankImageAreaint8u0 = FX +
      1 = DX +
      4 = 16:9 +
      8 = 1:1
      322AutoISOint8u0 = Off +
      1 = On
      324ISOAutoHiLimit?int16u + +
      0 = ISO 64 +
      1 = ISO 80 +
      2 = ISO 100 +
      3 = ISO 125 +
      4 = ISO 160 +
      5 = ISO 200 +
      6 = ISO 250 +
      7 = ISO 320 +
      8 = ISO 400 +
      9 = ISO 500 +
      10 = ISO 640 +
      11 = ISO 800 +
      12 = ISO 1000 +
      13 = ISO 1250 +
      14 = ISO 1600 +
      15 = ISO 2000
        16 = ISO 2500 +
      17 = ISO 3200 +
      18 = ISO 4000 +
      19 = ISO 5000 +
      20 = ISO 6400 +
      21 = ISO 8000 +
      22 = ISO 10000 +
      23 = ISO 12800 +
      24 = ISO 16000 +
      25 = ISO 20000 +
      26 = ISO 25600 +
      27 = ISO Hi 0.3 +
      28 = ISO Hi 0.7 +
      29 = ISO Hi 1.0 +
      32 = ISO Hi 2.0
      +
      326ISOAutoFlashLimit?int16u + +
      0 = ISO 64 +
      1 = ISO 80 +
      2 = ISO 100 +
      3 = ISO 125 +
      4 = ISO 160 +
      5 = ISO 200 +
      6 = ISO 250 +
      7 = ISO 320 +
      8 = ISO 400 +
      9 = ISO 500 +
      10 = ISO 640 +
      11 = ISO 800 +
      12 = ISO 1000 +
      13 = ISO 1250 +
      14 = ISO 1600 +
      15 = ISO 2000
        16 = ISO 2500 +
      17 = ISO 3200 +
      18 = ISO 4000 +
      19 = ISO 5000 +
      20 = ISO 6400 +
      21 = ISO 8000 +
      22 = ISO 10000 +
      23 = ISO 12800 +
      24 = ISO 16000 +
      25 = ISO 20000 +
      26 = ISO 25600 +
      27 = ISO Hi 0.3 +
      28 = ISO Hi 0.7 +
      29 = ISO Hi 1.0 +
      32 = ISO Hi 2.0
      +
      334ISOAutoShutterTimeno + +
      -15 = Auto +
      -12 = 15 s +
      -9 = 8 s +
      -6 = 4 s +
      -3 = 2 s +
      0 = 1 s +
      1 = 1/1.3 s +
      2 = 1/1.6 s +
      3 = 1/2 s +
      4 = 1/2.5 s +
      5 = 1/3 s +
      6 = 1/4 s +
      7 = 1/5 s +
      8 = 1/6 s +
      9 = 1/8 s +
      10 = 1/10 s +
      11 = 1/13 s +
      12 = 1/15 s +
      13 = 1/20 s +
      14 = 1/25 s +
      15 = 1/30 s +
      16 = 1/40 s +
      17 = 1/50 s +
      18 = 1/60 s +
      19 = 1/80 s
        20 = 1/100 s +
      21 = 1/120 s +
      22 = 1/160 s +
      23 = 1/200 s +
      24 = 1/250 s +
      25 = 1/320 s +
      26 = 1/400 s +
      27 = 1/500 s +
      28 = 1/640 s +
      29 = 1/800 s +
      30 = 1/1000 s +
      31 = 1/1250 s +
      32 = 1/1600 s +
      33 = 1/2000 s +
      34 = 1/2500 s +
      35 = 1/3200 s +
      36 = 1/4000 s +
      37 = 1/5000 s +
      37.5 = 1/6000 s +
      38 = 1/6400 s +
      39 = 1/8000 s +
      40 = 1/10000 s +
      40.5 = 1/12000 s +
      41 = 1/13000 s +
      42 = 1/16000 s
      +
      416MovieVignetteControl?int8u0 = Off +
      1 = Low +
      2 = Normal +
      3 = High
      418DiffractionCompensationint8u0 = Off +
      1 = On
      420FlickerReductionShootingint8u0 = Off +
      1 = On
      424FlashControlModeint8u0 = TTL +
      1 = Auto External Flash +
      2 = GN (distance priority) +
      3 = Manual +
      4 = Repeating Flash
      426FlashMasterCompensation?int8s 
      430FlashGNDistance?no + + +
      0 = 0 +
      1 = 0.1 m +
      2 = 0.2 m +
      3 = 0.3 m +
      4 = 0.4 m +
      5 = 0.5 m +
      6 = 0.6 m +
      7 = 0.7 m +
      8 = 0.8 m +
      9 = 0.9 m +
      10 = 1.0 m +
      11 = 1.1 m +
      12 = 1.3 m
        13 = 1.4 m +
      14 = 1.6 m +
      15 = 1.8 m +
      16 = 2.0 m +
      17 = 2.2 m +
      18 = 2.5 m +
      19 = 2.8 m +
      20 = 3.2 m +
      21 = 3.6 m +
      22 = 4.0 m +
      23 = 4.5 m +
      24 = 5.0 m +
      25 = 5.6 m
        26 = 6.3 m +
      27 = 7.1 m +
      28 = 8.0 m +
      29 = 9.0 m +
      30 = 10.0 m +
      31 = 11.0 m +
      32 = 13.0 m +
      33 = 14.0 m +
      34 = 16.0 m +
      35 = 18.0 m +
      36 = 20.0 m +
      255 = n/a
      +
      434FlashOutput?int8u 
      444FlashRemoteControl?int8u0 = Group +
      1 = Quick Wireless +
      2 = Remote Repeating
      456FlashWirelessOption?int8u0 = Off +
      1 = Optical AWL +
      2 = Optical/Radio AWL +
      3 = Radio AWL
      528AFAreaModeint8u + +
      1 = Single +
      2 = Dynamic +
      3 = Wide (S)
        4 = Wide (L) +
      5 = 3D +
      6 = Auto
      +
      530VRModeint8u0 = Off +
      1 = Normal +
      2 = Sport
      534BracketSetint8u0 = AE/Flash +
      1 = AE +
      2 = Flash +
      3 = White Balance +
      4 = Active-D Lighting
      536BracketProgramint8u(AE and/or Flash Bracketing) + +
      0 = Disabled +
      2 = 2F +
      3 = 3F +
      4 = 4F
        5 = 5F +
      7 = 7F +
      9 = 9F
      +
      538BracketIncrementint8u(AE and/or Flash Bracketing) +
      0 = 0.3 +
      2 = 0.7 +
      3 = 1.0 +
      4 = 2.0 +
      5 = 3.0
      556SecondarySlotFunctionint8u0 = Overflow +
      1 = Backup +
      2 = NEF Primary + JPG Secondary +
      3 = JPG Primary + JPG Secondary
      572DXCropAlertint8u0 = Off +
      1 = On
      574SubjectDetectionint8u0 = Off +
      1 = Auto +
      2 = People +
      3 = Animals +
      4 = Vehicles
      604MovieImageArea?int8u[val & 0x1] +
      0 = FX +
      1 = DX
      614MovieType?int8u1 = H.265 8-bit (MP4) +
      2 = H.265 8-bit (MOV) +
      3 = H.265 10-bit (MOV) +
      4 = ProRes 422 HQ 10-bit (MOV)
      616MovieISOAutoHiLimit?int16u + +
      0 = ISO 64 +
      1 = ISO 80 +
      2 = ISO 100 +
      3 = ISO 125 +
      4 = ISO 160 +
      5 = ISO 200 +
      6 = ISO 250 +
      7 = ISO 320 +
      8 = ISO 400 +
      9 = ISO 500 +
      10 = ISO 640 +
      11 = ISO 800 +
      12 = ISO 1000 +
      13 = ISO 1250 +
      14 = ISO 1600 +
      15 = ISO 2000
        16 = ISO 2500 +
      17 = ISO 3200 +
      18 = ISO 4000 +
      19 = ISO 5000 +
      20 = ISO 6400 +
      21 = ISO 8000 +
      22 = ISO 10000 +
      23 = ISO 12800 +
      24 = ISO 16000 +
      25 = ISO 20000 +
      26 = ISO 25600 +
      27 = ISO Hi 0.3 +
      28 = ISO Hi 0.7 +
      29 = ISO Hi 1.0 +
      32 = ISO Hi 2.0
      +
      618MovieISOAutoControlManualMode?int8u0 = Off +
      1 = On
      620MovieISOAutoManualMode?int16u + +
      0 = ISO 64 +
      1 = ISO 80 +
      2 = ISO 100 +
      3 = ISO 125 +
      4 = ISO 160 +
      5 = ISO 200 +
      6 = ISO 250 +
      7 = ISO 320 +
      8 = ISO 400 +
      9 = ISO 500 +
      10 = ISO 640 +
      11 = ISO 800 +
      12 = ISO 1000 +
      13 = ISO 1250 +
      14 = ISO 1600 +
      15 = ISO 2000
        16 = ISO 2500 +
      17 = ISO 3200 +
      18 = ISO 4000 +
      19 = ISO 5000 +
      20 = ISO 6400 +
      21 = ISO 8000 +
      22 = ISO 10000 +
      23 = ISO 12800 +
      24 = ISO 16000 +
      25 = ISO 20000 +
      26 = ISO 25600 +
      27 = ISO Hi 0.3 +
      28 = ISO Hi 0.7 +
      29 = ISO Hi 1.0 +
      32 = ISO Hi 2.0
      +
      696MovieActiveD-Lighting?int8u0 = Off +
      2 = Low +
      3 = Normal +
      4 = High +
      5 = Extra High
      698MovieHighISONoiseReduction?int8u0 = Off +
      1 = Low +
      2 = Normal +
      3 = High
      704MovieFlickerReductionint8u0 = Auto +
      1 = 50Hz +
      2 = 60Hz
      706MovieMeteringMode?int8u0 = Matrix +
      1 = Center +
      2 = Spot +
      3 = Highlight
      708MovieFocusMode?int8u0 = Manual +
      1 = AF-S +
      2 = AF-C +
      4 = AF-F
      710MovieAFAreaModeint8u1 = Single +
      3 = Wide (S) +
      4 = Wide (L) +
      6 = Auto +
      11 = Subject Tracking
      712MovieVRMode?int8u0 = Off +
      1 = Normal +
      2 = Sport
      716MovieElectronicVR?int8u0 = Off +
      1 = On
      718MovieSoundRecording?int8u0 = Off +
      1 = On +
      2 = On
      720MicrophoneSensitivity?int8u 
      722MicrophoneAttenuator?int8u0 = Off +
      1 = On
      724MicrophoneFrequencyResponse?int8u0 = Wide Range +
      1 = Vocal Range
      726WindNoiseReduction?int8u0 = Off +
      1 = On
      748MovieToneMap?int8u0 = SDR +
      1 = HLG +
      2 = N-Log
      754MovieFrameSize?int8u1 = 1920x1080 +
      2 = 3840x2160 +
      3 = 7680x4320
      756MovieFrameRate?int8u + +
      0 = 120p +
      1 = 100p +
      2 = 60p +
      3 = 50p
        4 = 30p +
      5 = 25p +
      6 = 24p
      +
      762MicrophoneJackPower?int8u0 = Off +
      1 = On
      763MovieDXCropAlert?int8u0 = Off +
      1 = On
      764MovieSubjectDetection?int8u0 = Off +
      1 = Auto +
      2 = People +
      3 = Animals +
      4 = Vehicles
      799CustomSettingsZ9---> NikonCustom SettingsZ9 Tags
      1426Language?int8u4 = English +
      5 = Spanish +
      7 = French
      1428TimeZoneint8u +
      5 = +09:00 (Tokyo) +
      6 = +08:00 (Beijing, Honk Kong, Sinapore) +
      10 = +05:45 (Kathmandu) +
      11 = +05:30 (New Dehli) +
      15 = +02:00 (Athens) +
      16 = +01:00 (Madrid, Paris, Berlin) +
      17 = +02:00 (Athens, Helsinki) +
      18 = +00:00 (London) +
      19 = +00:00 +
      22 = -03:00 (Buenos Aires, Sao Paulo) +
      24 = -04:00 (Manaus, Caracas) +
      25 = -05:00 (New York, Toronto, Lima) +
      26 = -06:00 (Chicago, Mexico City) +
      27 = -07:00 (Denver) +
      28 = -08:00 (Los Angeles, Vancouver) +
      29 = -09:00 (Anchorage) +
      30 = -10:00 (Hawaii)
      +
      1434MonitorBrightness?no 
      1456AFFineTune?int8u0 = Off +
      1 = On
      1552HDMIOutputResolutionint8u0 = Auto +
      1 = 4320p +
      2 = 2160p +
      3 = 1080p +
      5 = 720p
      1565SetClockFromLocationData?int8u0 = Off +
      1 = On
      1572AirplaneMode?int8u0 = Off +
      1 = On
      1573EmptySlotRelease?int8u0 = Disable Release +
      1 = Enable Release
      1608EnergySavingMode?int8u0 = Off +
      1 = On
      1632RecordLocationData?int8u0 = Off +
      1 = On
      1636USBPowerDelivery?int8u0 = Off +
      1 = On
      1645SensorShield?int8u0 = Stays Open +
      1 = Closes
      + +

      Nikon ShotInfo Tags

      +

      This information is encrypted for ShotInfoVersion 02xx, and some tags are +only valid for specific models.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3926,7 +5487,17 @@
      12 = Nikkor Z DX 50-250mm f/4.5-6.3 VR
      13 = Nikkor Z 24-70mm f/2.8 S
      14 = Nikkor Z 85mm f/1.8 S -
      15 = Nikkor Z 24mm f/1.8 S
      Index1Tag NameWritableValues / Notes
      0ShotInfoVersionno 
      4FirmwareVersionno 
      16DistortionControlint8u(P6000) +
      0 = Off +
      1 = On
      102VR_0x66?int8u(D2X, D2Xs (unverified)) +
      0 = Off +
      1 = On (normal) +
      2 = On (active)
      106ShutterCountint32u(D2X, D2Xs)
      110DeletedImageCountint32u(D2X, D2Xs)
      117VibrationReductionint8u(D200) +
      0 = Off +
      1 = On (1) +
      2 = On (2) +
      3 = On (3)
      130VibrationReductionint8u(D2X, D2Xs) +
      0 = Off +
      1 = On
      343ShutterCountundef[2] (D50)
      430
      +
      15 = Nikkor Z 24mm f/1.8 S +
      16 = Nikkor Z 70-200mm f/2.8 VR S +
      17 = Nikkor Z 20mm f/1.8 S +
      18 = Nikkor Z 24-200mm f/4-6.3 VR +
      21 = Nikkor Z 50mm f/1.2 S +
      22 = Nikkor Z 24-50mm f/4-6.3 +
      23 = Nikkor Z 14-24mm f/2.8 S +
      24 = Nikkor Z MC 105mm f/2.8 VR S +
      27 = Nikkor Z MC 50mm f/2.8 +
      28 = Nikkor Z 100-400mm f/4.5-5.6 VR S +
      29 = Nikkor Z 28mm f/2.8
      54 @@ -4068,19 +5639,21 @@ - - - + - + - + - + - + + + + +
      ValueFlashFirmwareValueFlashFirmware
      '0 0'= n/a'4 1'= 4.01 (SB-400)
      '1 1'= 1.01 (SB-800 or Metz 58 AF-1) '4 2'= 4.02 (SB-400)
      '1 3'= 1.03 (SB-800)
      '1 1'= 1.01 (SB-800 or Metz 58 AF-1) '4 4'= 4.04 (SB-400)
      '2 1'= 2.01 (SB-800)
      '1 3'= 1.03 (SB-800) '5 1'= 5.01 (SB-900)
      '2 4'= 2.04 (SB-600)
      '2 1'= 2.01 (SB-800) '5 2'= 5.02 (SB-900)
      '2 5'= 2.05 (SB-600)
      '2 4'= 2.04 (SB-600) '6 1'= 6.01 (SB-700)
      '3 1'= 3.01 (SU-800 Remote Commander)
      '2 5'= 2.05 (SB-600) '7 1'= 7.01 (SB-910)
      '3 1'= 3.01 (SU-800 Remote Commander)'14 3'= 14.03 (SB-5000)
      '4 1'= 4.01 (SB-400)  

      Nikon FlashControlMode Values

      @@ -4636,6 +6209,36 @@   +

      Nikon FlashInfo0300 Tags

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      0FlashInfoVersionno 
      4FlashSourceint8u0 = None +
      1 = External +
      2 = Internal
      6ExternalFlashFirmwareint8u[2]--> Nikon FlashFirmware Values
      10FlashCompensationint8s 
      +

      Nikon FlashInfoUnknown Tags

      @@ -4681,6 +6284,49 @@
      1 = On
      +

      Nikon AFInfo2V0400 Tags

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      0AFInfo2Versionno 
      62AFImageWidthint16u 
      64AFImageHeightint16u 
      67FocusPositionHorizontalint8u~ 
      69FocusPositionVerticalint8u~ 
      70AFAreaWidthint16u(size of AF area in AFImage pixels)
      72AFAreaHeightint16u 
      +

      Nikon AFInfo2 Tags

      These tags are written by Nikon DSLR's which have the live view feature.

      @@ -4724,6 +6370,7 @@
      15 = Dynamic Area (72 points)
      16 = Group Area (HL)
      17 = Group Area (VL) +
      18 = Dynamic Area (49 points)
      128 = Single
      129 = Auto (41 points)
      130 = Subject Tracking (41 points) @@ -4749,8 +6396,16 @@
      195 = Wide (S)
      196 = Wide (L)
      197 = Auto -
      198 = Auto (198) -
      199 = Auto (focus lock) +
      198 = Auto (People) +
      199 = Auto (Animal) +
      200 = Normal-area AF +
      201 = Wide-area AF +
      202 = Face-priority AF +
      203 = Subject-tracking AF +
      204 = Dynamic Area (S) +
      205 = Dynamic Area (M) +
      206 = Dynamic Area (L) +
      207 = 3D-tracking 6 @@ -4765,7 +6420,8 @@ 5 = On (5)
      6 = On (105-point)
      7 = On (153-point) -
      8 = On (8) +
      8 = On (81-point) +
      9 = On (105-point) 7 @@ -5200,7 +6856,7 @@
      AFPointsUsed
      AFPointsUsed
      AFPointsUsed -undef[7]
      undef[2]
      undef[5]
      undef[17]
      undef[21]
      undef[29]
      undef[20]
      undef[62]
      undef[7] +undef[7]
      undef[2]
      undef[5]
      undef[17]
      undef[21]
      undef[29]
      undef[20]
      undef[13]
      undef[7] (models with 51-point AF -- 5 rows: A1-9, B1-11, C1-11, D1-11, E1-9. Center point is C6)
      (models with 11-point AF)
      @@ -5228,74 +6884,204 @@ point is F10)
      (models with 153-point AF -- 9 rows (A-I) and 17 columns (1-17). Center point is E9) -
      (models with 493-point AF -- 17 rows (A-Q) and 29 columns (1-29). Center -point is I15) +
      (models with 81-selectable point AF -- 9 rows (A-I) and 9 columns (1-9) for +phase detect AF points. Center point is E5) + + + + + - + - + - + - + - + - + - - + + - + - + - + + + + + + - - - + + + + + + + + - + + + + + + @@ -5549,7 +7335,8 @@ +
      2 = On (2) +
      3 = On (Zoom) @@ -5560,6 +7347,11 @@ + + + + +
      10AFPointsUsedundef[14](models with 105-point AF -- 7 rows (A-G) and 15 columns (1-15). Center +point is D8)
      16 AFImageWidth int16u (this and the following tags are valid only for contrast-detect AF)
      18 AFImageHeight int16u  
      20 AFAreaXPosition int16u (center of AF area in AFImage coordinates)
      22 AFAreaYPosition int16u  
      24 AFAreaWidth int16u (size of AF area in AFImage coordinates)
      26 AFAreaHeight int16u  
      28ContrastDetectAFInFocusint8uContrastDetectAFInFocus +
      AFPointsSelected
      int8u
      undef[20]
      0 = No
      1 = Yes
      42 AFImageWidth int16u  
      44 AFImageHeight int16u  
      46 AFAreaXPosition int16u  
      47AFFocusPointXPositionint8u~ 
      48AFAreaYPositionint16u 
      AFAreaYPosition +
      AFPointsInFocus
      int16u
      undef[20]
      (AF points in focus at the time time image was captured)
      49AFFocusPointYPositionint8u~ 
      50 AFAreaWidth int16u  
      52 AFAreaHeight int16u  
      56PrimaryAFPointint8u(Nikon models with 105-point AF -- 7 rows (A-G) and 15 columns (1-15): D6) + + + + +
      0 = (none) +
      1 = D8 (Center) +
      2 = C8 +
      3 = B8 +
      4 = A8 +
      5 = E8 +
      6 = F8 +
      7 = G8 +
      8 = D9 +
      9 = C9 +
      10 = B9 +
      11 = A9 +
      12 = E9 +
      13 = F9 +
      14 = G9 +
      15 = D10 +
      16 = C10 +
      17 = B10 +
      18 = A10 +
      19 = E10 +
      20 = F10 +
      21 = G10
        22 = D7 +
      23 = C7 +
      24 = B7 +
      25 = A7 +
      26 = E7 +
      27 = F7 +
      28 = G7 +
      29 = D6 +
      30 = C6 +
      31 = B6 +
      32 = A6 +
      33 = E6 +
      34 = F6 +
      35 = G6 +
      36 = D11 +
      37 = C11 +
      38 = B11 +
      39 = A11 +
      40 = E11 +
      41 = F11 +
      42 = G11 +
      43 = D12
        44 = C12 +
      45 = B12 +
      46 = A12 +
      47 = E12 +
      48 = F12 +
      49 = G12 +
      50 = D13 +
      51 = C13 +
      52 = B13 +
      53 = A13 +
      54 = E13 +
      55 = F13 +
      56 = G13 +
      57 = D14 +
      58 = C14 +
      59 = B14 +
      60 = A14 +
      61 = E14 +
      62 = F14 +
      63 = G14 +
      64 = D15 +
      65 = C15
        66 = B15 +
      67 = A15 +
      68 = E15 +
      69 = F15 +
      70 = G15 +
      71 = D5 +
      72 = C5 +
      73 = B5 +
      74 = A5 +
      75 = E5 +
      76 = F5 +
      77 = G5 +
      78 = D4 +
      79 = C4 +
      80 = B4 +
      81 = A4 +
      82 = E4 +
      83 = F4 +
      84 = G4 +
      85 = D3 +
      86 = C3 +
      87 = B3
        88 = A3 +
      89 = E3 +
      90 = F3 +
      91 = G3 +
      92 = D2 +
      93 = C2 +
      94 = B2 +
      95 = A2 +
      96 = E2 +
      97 = F2 +
      98 = G2 +
      99 = D1 +
      100 = C1 +
      101 = B1 +
      102 = A1 +
      103 = E1 +
      104 = F1 +
      105 = G1
      +
      68 PrimaryAFPointint8u 0 = Off
      1 = On (1) -
      2 = On (2)
      1 AFFineTuneIndexAFFineTuneAdj int8s (may only be valid for saved lenses)
      3AFFineTuneAdjTeleint8s(only valid for zoom lenses (ie, AFTune=3))

      Nikon RetouchInfo Tags

      @@ -6112,11 +7904,13 @@
      3 = 5:4 Crop
      4 = 3:2 Crop
      6 = 16:9 Crop -
      8 = 2.7x Crop   - 9 = DX Movie Crop -
      10 = 1.3x Movie Crop +
      8 = 2.7x Crop +
      9 = DX Movie Crop   + 10 = 1.3x Movie Crop
      11 = FX Uncropped
      12 = DX Uncropped +
      13 = 2.8x Movie Crop +
      14 = 1.4x Movie Crop
      15 = 1.5x Movie Crop
      17 = 1:1 Crop @@ -6213,7 +8007,8 @@
      3 = Not Ready
      7 = Fired, External
      8 = Fired, Commander Mode -
      9 = Fired, TTL Mode +
      9 = Fired, TTL Mode +
      18 = LED Light 0x2000098 @@ -6582,6 +8377,7 @@ '00 47 44 44 24 24 00 06'= Tokina AT-X M35 PRO DX (AF 35mm f/2.8 Macro) '00 47 53 80 30 3C 00 06'= Tamron AF 55-200mm f/4-5.6 Di II LD (A15) '00 48 1C 29 24 24 00 06'= Tokina AT-X 116 PRO DX (AF 11-16mm f/2.8) +'00 48 27 27 24 24 00 00'= Carl Zeiss Distagon T* 2.8/15 ZF.2 '00 48 29 3C 24 24 00 06'= Tokina AT-X 16-28 AF PRO FX (AF 16-28mm f/2.8) '00 48 29 50 24 24 00 06'= Tokina AT-X 165 PRO DX (AF 16-50mm f/2.8) '00 48 32 32 24 24 00 00'= Carl Zeiss Distagon T* 2.8/21 ZF.2 @@ -6629,6 +8425,7 @@ '02 3A 37 50 31 3D 02 00'= Sigma 24-50mm F4-5.6 UC '02 3A 5E 8E 32 3D 02 00'= Sigma 75-300mm F4.0-5.6 '02 3B 44 61 30 3D 02 00'= Sigma 35-80mm F4-5.6 +'02 3B 5C 82 30 3C 02 00'= Sigma Zoom-K 70-210mm F4-5.6 '02 3C B0 B0 3C 3C 02 00'= Sigma APO 800mm F5.6 '02 3F 24 24 2C 2C 02 00'= Sigma 14mm F3.5 '02 3F 3C 5C 2D 35 02 00'= Sigma 28-70mm F3.5-4.5 UC @@ -6652,7 +8449,8 @@ '07 36 3D 5F 2C 3C 03 00'= Cosina AF Zoom 28-80mm F3.5-5.6 MC Macro '07 3E 30 43 2D 35 03 00'= Soligor AF Zoom 19-35mm 1:3.5-4.5 MC '07 40 2F 44 2C 34 03 02'= Tamron AF 19-35mm f/3.5-4.5 (A10) -'07 40 30 45 2D 35 03 02'= Tamron AF 19-35mm f/3.5-4.5 (A10) +'07 40 30 45 2D 35 03 02.1'= Tamron AF 19-35mm f/3.5-4.5 (A10) +'07 40 30 45 2D 35 03 02.2'= Voigtlander Ultragon 19-35mm F3.5-4.5 VMV '07 40 3C 5C 2C 35 03 00'= Tokina AF 270 II (AF 28-70mm f/3.5-4.5) '07 40 3C 62 2C 34 03 00'= AF Zoom-Nikkor 28-85mm f/3.5-4.5 '07 46 2B 44 24 30 03 02'= Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical (IF) (A05) @@ -6737,6 +8535,7 @@ '26 40 7B A0 34 40 1C 02'= Sigma APO 170-500mm F5-6.3 Aspherical RF '26 41 3C 8E 2C 40 1C 02'= Sigma 28-300mm F3.5-6.3 DG Macro '26 44 73 98 34 3C 1C 02'= Sigma 135-400mm F4.5-5.6 APO Aspherical +'26 45 68 8E 34 42 1C 02'= Sigma 100-300mm F4.5-6.7 DL '26 48 11 11 30 30 1C 02'= Sigma 8mm F4 EX Circular Fisheye '26 48 27 27 24 24 1C 02'= Sigma 15mm F2.8 EX Diagonal Fisheye '26 48 2D 50 24 24 1C 06'= Sigma 18-50mm F2.8 EX DC @@ -6838,6 +8637,7 @@ '4A 4C 24 24 1E 6C 4D 06'= Samyang 14mm f/2.4 Premium '4A 54 29 29 18 0C 4D 02'= Samyang 16mm f/2.0 ED AS UMC CS '4A 54 62 62 0C 0C 4D 02'= AF Nikkor 85mm f/1.4D IF +'4A 58 30 30 14 0C 4D 02'= Rokinon 20mm f/1.8 ED AS UMC '4A 60 36 36 0C 0C 4D 02'= Samyang 24mm f/1.4 ED AS UMC '4A 60 44 44 0C 0C 4D 02'= Samyang 35mm f/1.4 AS UMC '4A 60 62 62 0C 0C 4D 02'= Samyang AE 85mm f/1.4 AS IF UMC @@ -6918,7 +8718,9 @@ '7A 48 2D 50 24 24 4B 06'= Sigma 18-50mm F2.8 EX DC Macro '7A 48 5C 80 24 24 4B 06'= Sigma 70-200mm F2.8 EX APO DG Macro HSM II '7A 54 6E 8E 24 24 4B 02'= Sigma APO 120-300mm F2.8 EX DG HSM +'7B 48 37 44 18 18 4B 06'= Sigma 24-35mm F2.0 DG HSM | A '7B 48 80 98 30 30 80 0E'= AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED +'7C 54 2B 50 24 24 00 06'= Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16) '7D 48 2B 53 24 24 82 06'= AF-S DX Zoom-Nikkor 17-55mm f/2.8G IF-ED '7F 40 2D 5C 2C 34 84 06'= AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED '7F 48 2B 5C 24 34 1C 06'= Sigma 17-70mm F2.8-4.5 DC Macro Asp. IF @@ -6937,8 +8739,10 @@ '8A 54 6A 6A 24 24 8C 0E'= AF-S VR Micro-Nikkor 105mm f/2.8G IF-ED '8B 40 2D 80 2C 3C 8D 0E'= AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED '8B 40 2D 80 2C 3C FD 0E'= AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED [II] +'8B 48 1C 30 24 24 85 06'= Tokina AT-X 11-20 F2.8 PRO DX (AF 11-20mm f/2.8) '8B 4C 2D 44 14 14 4B 06'= Sigma 18-35mm F1.8 DC HSM '8C 40 2D 53 2C 3C 8E 06'= AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED +'8C 48 29 3C 24 24 86 06'= Tokina opera 16-28mm F2.8 FF '8D 44 5C 8E 34 3C 8F 0E'= AF-S VR Zoom-Nikkor 70-300mm f/4.5-5.6G IF-ED '8D 48 6E 8E 24 24 4B 0E'= Sigma 120-300mm F2.8 DG OS HSM Sports '8E 3C 2B 5C 24 30 4B 0E'= Sigma 17-70mm F2.8-4 DC Macro OS HSM | C @@ -6976,14 +8780,19 @@ '9E 40 2D 6A 2C 3C A0 0E'= AF-S DX VR Zoom-Nikkor 18-105mm f/3.5-5.6G ED '9F 37 50 A0 34 40 4B 0E'= Sigma 50-500mm F4.5-6.3 DG OS HSM '9F 48 48 48 24 24 A1 06'= Yongnuo YN40mm F2.8N +'9F 54 68 68 18 18 A2 06'= Yongnuo YN100mm F2N '9F 58 44 44 14 14 A1 06'= AF-S DX Nikkor 35mm f/1.8G +'A0 37 5C 8E 34 3C A2 06'= Sony FE 70-300mm F4.5-5.6 G OSS 'A0 40 2D 53 2C 3C CA 0E'= AF-P DX Nikkor 18-55mm f/3.5-5.6G VR 'A0 40 2D 53 2C 3C CA 8E'= AF-P DX Nikkor 18-55mm f/3.5-5.6G 'A0 40 2D 74 2C 3C BB 0E'= AF-S DX Nikkor 18-140mm f/3.5-5.6G ED VR 'A0 48 2A 5C 24 30 4B 0E'= Sigma 17-70mm F2.8-4 DC Macro OS HSM 'A0 54 50 50 0C 0C A2 06'= AF-S Nikkor 50mm f/1.4G +'A0 56 44 44 14 14 A2 06'= Sony FE 35mm F1.8 'A1 40 18 37 2C 34 A3 06'= AF-S DX Nikkor 10-24mm f/3.5-4.5G ED +'A1 40 2D 53 2C 3C CB 86'= AF-P DX Nikkor 18-55mm f/3.5-5.6G 'A1 41 19 31 2C 2C 4B 06'= Sigma 10-20mm F3.5 EX DC HSM +'A1 48 6E 8E 24 24 DB 4E'= AF-S Nikkor 120-300mm f/2.8E FL ED SR VR 'A1 54 55 55 0C 0C BC 06'= AF-S Nikkor 58mm f/1.4G 'A2 38 5C 8E 34 40 CD 86'= AF-P DX Nikkor 70-300mm f/4.5-6.3G VR 'A2 40 2D 53 2C 3C BD 0E'= AF-S DX Nikkor 18-55mm f/3.5-5.6G VR II @@ -7055,23 +8864,30 @@ 'B6 48 37 56 24 24 1C 02'= Sigma 24-60mm F2.8 EX DG 'B7 44 60 98 34 3C B9 0E'= AF-S Nikkor 80-400mm f/4.5-5.6G ED VR 'B8 40 2D 44 2C 34 BA 06'= AF-S Nikkor 18-35mm f/3.5-4.5G ED +'BB 48 5C 80 24 24 4B 4E'= Sigma 70-200mm F2.8 DG OS HSM | S 'BF 3C 1B 1B 30 30 01 04'= Irix 11mm f/4 Firefly 'BF 4E 26 26 1E 1E 01 04'= Irix 15mm f/2.4 Firefly 'C1 48 24 37 24 24 4B 46'= Sigma 14-24mm F2.8 DG HSM | A 'C2 4C 24 24 14 14 4B 06'= Sigma 14mm F1.8 DG HSM | A 'C3 34 68 98 38 40 4B 4E'= Sigma 100-400mm F5-6.3 DG OS HSM | C +'C4 4C 73 73 14 14 4B 46'= Sigma 135mm F1.8 DG HSM | A 'C8 54 44 44 0D 0D DF 46'= Tamron SP 35mm f/1.4 Di USD (F045) 'C8 54 62 62 0C 0C 4B 06'= Sigma 85mm F1.4 DG HSM | A 'C8 54 62 62 0C 0C 4B 46'= Sigma 85mm F1.4 DG HSM | A +'C9 3C 44 76 25 31 DF 4E'= Tamron 35-150mm f/2.8-4 Di VC OSD (A043) 'C9 48 37 5C 24 24 4B 4E'= Sigma 24-70mm F2.8 DG OS HSM | A +'CA 3C 1F 37 30 30 4B 46'= Sigma 12-24mm F4 DG HSM | A 'CA 48 27 3E 24 24 DF 4E'= Tamron SP 15-30mm f/2.8 Di VC USD G2 (A041) 'CB 3C 2B 44 24 31 DF 46'= Tamron 17-35mm f/2.8-4 Di OSD (A037) +'CC 44 68 98 34 41 DF 0E'= Tamron 100-400mm f/4.5-6.3 Di VC USD 'CC 4C 50 68 14 14 4B 06'= Sigma 50-100mm F1.8 DC HSM | A 'CD 3D 2D 70 2E 3C 4B 0E'= Sigma 18-125mm F3.8-5.6 DC OS HSM 'CE 34 76 A0 38 40 4B 0E'= Sigma 150-500mm F5-6.3 DG OS APO HSM 'CE 47 37 5C 25 25 DF 4E'= Tamron SP 24-70mm f/2.8 Di VC USD G2 (A032) 'CF 38 6E 98 34 3C 4B 0E'= Sigma APO 120-400mm F4.5-5.6 DG OS HSM 'CF 47 5C 8E 31 3D DF 0E'= Tamron SP 70-300mm f/4-5.6 Di VC USD (A030) +'D2 3C 8E B0 3C 3C 4B 02'= Sigma APO 300-800mm F5.6 EX DG HSM +'DB 40 11 11 2C 2C 1C 06'= Sigma 8mm F3.5 EX DG Circular Fisheye 'DC 48 19 19 24 24 4B 06'= Sigma 10mm F2.8 EX DC HSM Fisheye 'DE 54 50 50 0C 0C 4B 06'= Sigma 50mm F1.4 EX DG HSM 'E0 3C 5C 8E 30 3C 4B 06'= Sigma 70-300mm F4-5.6 APO DG Macro HSM @@ -7093,6 +8909,7 @@ 'EA 40 29 8E 2C 40 DF 0E'= Tamron 16-300mm f/3.5-6.3 Di II VC PZD (B016) 'EA 48 27 27 24 24 1C 02'= Sigma 15mm F2.8 EX Diagonal Fisheye 'EB 40 76 A6 38 40 DF 0E'= Tamron SP AF 150-600mm f/5-6.3 VC USD (A011) +'EC 3E 3C 8E 2C 40 DF 0E'= Tamron 28-300mm f/3.5-6.3 Di VC PZD A010 'ED 40 2D 80 2C 40 4B 0E'= Sigma 18-200mm F3.5-6.3 DC OS HSM 'EE 48 5C 80 24 24 4B 06'= Sigma 70-200mm F2.8 EX APO DG Macro HSM II 'F0 38 1F 37 34 3C 4B 06'= Sigma 12-24mm F4.5-5.6 EX DG Aspherical HSM @@ -7132,7 +8949,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 14, 2020 +
      Last revised Feb 9, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/NikonSettings.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/NikonSettings.html --- libimage-exiftool-perl-11.88/html/TagNames/NikonSettings.html 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/NikonSettings.html 2022-01-12 22:57:15.000000000 +0000 @@ -0,0 +1,2587 @@ + + + + +NikonSettings Tags + + + +

      NikonSettings Tags

      +

      User settings for newer Nikon models. A number of the tags are marked as +Unknown only to reduce the volume of the normal output.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Tag IDTag NameWritableValues / Notes
      0x0001ISOAutoHiLimitno(D6) + +
      1 = ISO 200 +
      2 = ISO 250 +
      3 = ISO 280 +
      4 = ISO 320 +
      5 = ISO 400 +
      6 = ISO 500 +
      7 = ISO 560 +
      8 = ISO 640 +
      9 = ISO 800 +
      10 = ISO 1000 +
      11 = ISO 1100 +
      12 = ISO 1250 +
      13 = ISO 1600 +
      14 = ISO 2000 +
      15 = ISO 2200 +
      16 = ISO 2500 +
      17 = ISO 3200 +
      18 = ISO 4000 +
      19 = ISO 4500 +
      20 = ISO 5000 +
      21 = ISO 6400 +
      22 = ISO 8000 +
      23 = ISO 9000
        24 = ISO 10000 +
      25 = ISO 12800 +
      26 = ISO 16000 +
      27 = ISO 18000 +
      28 = ISO 20000 +
      29 = ISO 25600 +
      30 = ISO 32000 +
      31 = ISO 36000 +
      32 = ISO 40000 +
      33 = ISO 51200 +
      34 = ISO 64000 +
      35 = ISO 72000 +
      36 = ISO 81200 +
      37 = ISO 102400 +
      38 = ISO Hi 0.3 +
      39 = ISO Hi 0.5 +
      40 = ISO Hi 0.7 +
      41 = ISO Hi 1.0 +
      42 = ISO Hi 2.0 +
      43 = ISO Hi 3.0 +
      44 = ISO Hi 4.0 +
      45 = ISO Hi 5.0
      +(Z7 and Z7_2) + +
      1 = ISO 100 +
      2 = ISO 125 +
      4 = ISO 160 +
      5 = ISO 200 +
      6 = ISO 250 +
      8 = ISO 320 +
      9 = ISO 400 +
      10 = ISO 500 +
      12 = ISO 640 +
      13 = ISO 800 +
      14 = ISO 1000 +
      16 = ISO 1250 +
      17 = ISO 1600 +
      18 = ISO 2000 +
      20 = ISO 2500
        21 = ISO 3200 +
      22 = ISO 4000 +
      24 = ISO 5000 +
      25 = ISO 6400 +
      26 = ISO 8000 +
      28 = ISO 10000 +
      29 = ISO 12800 +
      30 = ISO 16000 +
      32 = ISO 20000 +
      33 = ISO 25600 +
      38 = ISO Hi 0.3 +
      39 = ISO Hi 0.5 +
      40 = ISO Hi 0.7 +
      41 = ISO Hi 1.0 +
      42 = ISO Hi 2.0
      +
      0x0002ISOAutoFlashLimitno(D6) +
      1 = Same As Without Flash +
      2 = ISO 200 +
      3 = ISO 250 +
      5 = ISO 320 +
      6 = ISO 400 +
      7 = ISO 500 +
      9 = ISO 640 +
      10 = ISO 800 +
      11 = ISO 1000 +
      13 = ISO 1250 +
      14 = ISO 1600 +
      15 = ISO 2000 +
      17 = ISO 2500 +
      18 = ISO 3200 +
      19 = ISO 4000 +
      21 = ISO 5000 +
      22 = ISO 6400 +
      23 = ISO 8000 +
      25 = ISO 10000 +
      26 = ISO 12800 +
      27 = ISO 16000 +
      29 = ISO 20000 +
      30 = ISO 25600 +
      31 = ISO 32000 +
      33 = ISO 40000 +
      34 = ISO 51200 +
      35 = ISO 64000 +
      36 = ISO 72000 +
      37 = ISO 81200 +
      38 = ISO 102400 +
      39 = ISO Hi 0.3 +
      40 = ISO Hi 0.5 +
      41 = ISO Hi 0.7 +
      42 = ISO Hi 1.0 +
      43 = ISO Hi 2.0 +
      44 = ISO Hi 3.0 +
      45 = ISO Hi 4.0 +
      46 = ISO Hi 5.0
      +(Z7 and Z7_2) +
      1 = Same As Without Flash +
      2 = ISO 100 +
      3 = ISO 125 +
      5 = ISO 160 +
      6 = ISO 200 +
      7 = ISO 250 +
      9 = ISO 320 +
      10 = ISO 400 +
      11 = ISO 500 +
      13 = ISO 640 +
      14 = ISO 800 +
      15 = ISO 1000 +
      17 = ISO 1250 +
      18 = ISO 1600 +
      19 = ISO 2000 +
      21 = ISO 2500 +
      22 = ISO 3200 +
      23 = ISO 4000 +
      25 = ISO 5000 +
      26 = ISO 6400 +
      27 = ISO 8000 +
      29 = ISO 10000 +
      30 = ISO 12800 +
      31 = ISO 16000 +
      33 = ISO 20000 +
      34 = ISO 25600 +
      39 = ISO Hi 0.3 +
      40 = ISO Hi 0.5 +
      41 = ISO Hi 0.7 +
      42 = ISO Hi 1.0 +
      43 = ISO Hi 2.0
      +
      0x0003ISOAutoShutterTimeno + +
      1 = Auto (Slowest) +
      2 = Auto (Slower) +
      3 = Auto +
      4 = Auto (Faster) +
      5 = Auto (Fastest) +
      6 = 1/4000 s +
      7 = 1/3200 s +
      8 = 1/2500 s +
      9 = 1/2000 s +
      10 = 1/1600 s +
      11 = 1/1250 s +
      12 = 1/1000 s +
      13 = 1/800 s +
      14 = 1/640 s +
      15 = 1/500 s +
      16 = 1/400 s +
      17 = 1/320 s +
      18 = 1/250 s +
      19 = 1/200 s +
      20 = 1/160 s +
      21 = 1/125 s +
      22 = 1/100 s +
      23 = 1/80 s +
      24 = 1/60 s +
      25 = 1/50 s +
      26 = 1/40 s +
      27 = 1/30 s +
      28 = 1/25 s +
      29 = 1/20 s
        30 = 1/15 s +
      31 = 1/13 s +
      32 = 1/10 s +
      33 = 1/8 s +
      34 = 1/6 s +
      35 = 1/5 s +
      36 = 1/4 s +
      37 = 1/3 s +
      38 = 1/2.5 s +
      39 = 1/2 s +
      40 = 1/1.6 s +
      41 = 1/1.3 s +
      42 = 1 s +
      43 = 1.3 s +
      44 = 1.6 s +
      45 = 2 s +
      46 = 2.5 s +
      47 = 3 s +
      48 = 4 s +
      49 = 5 s +
      50 = 6 s +
      51 = 8 s +
      52 = 10 s +
      53 = 13 s +
      54 = 15 s +
      55 = 20 s +
      56 = 25 s +
      57 = 30 s
      +
      0x000bFlickerReductionShootingno1 = Enable +
      2 = Disable
      0x000cFlickerReductionIndicatorno1 = Enable +
      2 = Disable
      0x000dMovieISOAutoHiLimitno(D6) + +
      1 = ISO 200 +
      2 = ISO 250 +
      3 = ISO 280 +
      4 = ISO 320 +
      5 = ISO 400 +
      6 = ISO 500 +
      7 = ISO 560 +
      8 = ISO 640 +
      9 = ISO 800 +
      10 = ISO 1000 +
      11 = ISO 1100 +
      12 = ISO 1250 +
      13 = ISO 1600 +
      14 = ISO 2000 +
      15 = ISO 2200 +
      16 = ISO 2500 +
      17 = ISO 3200 +
      18 = ISO 4000 +
      19 = ISO 4500 +
      20 = ISO 5000 +
      21 = ISO 6400 +
      22 = ISO 8000 +
      23 = ISO 9000
        24 = ISO 10000 +
      25 = ISO 12800 +
      26 = ISO 16000 +
      27 = ISO 18000 +
      28 = ISO 20000 +
      29 = ISO 25600 +
      30 = ISO 32000 +
      31 = ISO 36000 +
      32 = ISO 40000 +
      33 = ISO 51200 +
      34 = ISO 64000 +
      35 = ISO 72000 +
      36 = ISO 81200 +
      37 = ISO 102400 +
      38 = ISO Hi 0.3 +
      39 = ISO Hi 0.5 +
      40 = ISO Hi 0.7 +
      41 = ISO Hi 1.0 +
      42 = ISO Hi 2.0 +
      43 = ISO Hi 3.0 +
      44 = ISO Hi 4.0 +
      45 = ISO Hi 5.0
      +(Z7 and Z7_2) + +
      1 = ISO 200 +
      2 = ISO 250 +
      4 = ISO 320 +
      5 = ISO 400 +
      6 = ISO 500 +
      8 = ISO 640 +
      9 = ISO 800 +
      10 = ISO 1000 +
      12 = ISO 1250 +
      13 = ISO 1600 +
      14 = ISO 2000 +
      16 = ISO 2500 +
      17 = ISO 3200 +
      18 = ISO 4000
        20 = ISO 5000 +
      21 = ISO 6400 +
      22 = ISO 8000 +
      24 = ISO 10000 +
      25 = ISO 12800 +
      26 = ISO 16000 +
      28 = ISO 20000 +
      29 = ISO 25600 +
      34 = ISO Hi 0.3 +
      35 = ISO Hi 0.5 +
      36 = ISO Hi 0.7 +
      37 = ISO Hi 1.0 +
      38 = ISO Hi 2.0
      +
      0x000eMovieISOAutoControlManualModeno1 = On +
      2 = Off
      0x000fMovieWhiteBalanceSameAsPhotono1 = Yes +
      2 = No
      0x001dAF-CPrioritySelno(D6) +
      1 = Release +
      2 = Release + Focus +
      3 = Focus + Release +
      4 = Focus +
      (Z Series cameras thru November 2021) +
      1 = Release +
      2 = Focus
      0x001eAF-SPrioritySelno1 = Release +
      2 = Focus
      0x0020AFPointSelno(D6) +
      1 = 105 Points +
      2 = 27 Points +
      3 = 15 Points +
      (Z Series cameras thru November 2021) +
      1 = Use All +
      2 = Use Half
      0x0022AFActivationno1 = Shutter/AF-On +
      2 = AF-On Only
      0x0023FocusPointWrapno1 = Wrap +
      2 = No Wrap
      0x0025ManualFocusPointIlluminationno1 = On +
      2 = On During Focus Point Selection Only
      0x0026AF-AssistIlluminatorno1 = On +
      2 = Off
      0x0027ManualFocusRingInAFModeno1 = On +
      2 = Off
      0x0029ISOStepSizeno1 = 1/3 EV +
      2 = 1/2 EV +
      3 = 1 EV
      0x002aExposureControlStepSizeno1 = 1/3 EV +
      2 = 1/2 EV +
      3 = 1 EV
      0x002bEasyExposureCompensationno1 = On (auto reset) +
      2 = On +
      3 = Off
      0x002cMatrixMeteringno1 = Face Detection On +
      2 = Face Detection Off
      0x002dCenterWeightedAreaSizeno(D6) +
      1 = 8 mm +
      2 = 12 mm +
      3 = 15 mm +
      4 = 20 mm +
      5 = Average +
      (Z Series cameras thru November 2021) +
      1 = 12 mm +
      2 = Average
      0x002fFineTuneOptMatrixMeteringno 
      0x0030FineTuneOptCenterWeightedno 
      0x0031FineTuneOptSpotMeteringno 
      0x0032FineTuneOptHighlightWeightedno 
      0x0033ShutterReleaseButtonAE-Lno1 = On (Half Press) +
      2 = On (Burst Mode) +
      3 = Off
      0x0034StandbyMonitorOffTimeno(D6) + + +
      1 = 4 s +
      2 = 6 s +
      3 = 10 s
        4 = 30 s +
      5 = 1 min +
      6 = 5 min
        7 = 10 min +
      8 = 30 min +
      9 = No Limit
      +(Z Series cameras thru November 2021) + +
      1 = 10 s +
      2 = 20 s +
      3 = 30 s +
      4 = 1 min
        5 = 5 min +
      6 = 10 min +
      7 = 30 min +
      8 = No Limit
      +
      0x0035SelfTimerTimeno1 = 2 s +
      2 = 5 s +
      3 = 10 s +
      4 = 20 s
      0x0036SelfTimerShotCountno 
      0x0037SelfTimerShotIntervalno1 = 0.5 s +
      2 = 1 s +
      3 = 2 s +
      4 = 3 s
      0x0038PlaybackMonitorOffTimeno + +
      1 = 4 s +
      2 = 10 s +
      3 = 20 s
        4 = 1 min +
      5 = 5 min +
      6 = 10 min
      +
      0x0039MenuMonitorOffTimeno + +
      1 = 4 s +
      2 = 10 s +
      3 = 20 s
        4 = 1 min +
      5 = 5 min +
      6 = 10 min
      +
      0x003aShootingInfoMonitorOffTimeno + +
      1 = 4 s +
      2 = 10 s +
      3 = 20 s
        4 = 1 min +
      5 = 5 min +
      6 = 10 min
      +
      0x003bImageReviewMonitorOffTimeno + +
      1 = 2 s +
      2 = 4 s +
      3 = 10 s +
      4 = 20 s
        5 = 1 min +
      6 = 5 min +
      7 = 10 min
      +
      0x003cLiveViewMonitorOffTimeno + +
      1 = 5 min +
      2 = 10 min +
      3 = 15 min
        4 = 20 min +
      5 = 30 min +
      6 = No Limit
      +
      0x003eCLModeShootingSpeedno 
      0x003fMaxContinuousReleaseno 
      0x0040ExposureDelayModeno + +
      1 = 3 s +
      2 = 2 s +
      3 = 1 s
        4 = 0.5 s +
      5 = 0.2 s +
      6 = Off
      +
      0x0041ElectronicFront-CurtainShutterno1 = On +
      2 = Off
      0x0042FileNumberSequenceno1 = On +
      2 = Off
      0x0043FramingGridDisplayno1 = On +
      2 = Off
      0x0045LCDIlluminationno1 = On +
      2 = Off
      0x0046OpticalVRno1 = On +
      2 = Off
      0x0047FlashSyncSpeedno(D6) + +
      1 = 1/250 s (auto FP) +
      2 = 1/250 s +
      3 = 1/200 s +
      4 = 1/160 s
        5 = 1/125 s +
      6 = 1/100 s +
      7 = 1/80 s +
      8 = 1/60 s
      +(Z Series cameras thru November 2021) + +
      1 = 1/200 s (auto FP) +
      2 = 1/200 s +
      3 = 1/160 s +
      4 = 1/125 s
        5 = 1/100 s +
      6 = 1/80 s +
      7 = 1/60 s
      +
      0x0048FlashShutterSpeedno + +
      1 = 1/60 s +
      2 = 1/30 s +
      3 = 1/15 s +
      4 = 1/8 s
        5 = 1/4 s +
      6 = 1/2 s +
      7 = 1 s +
      8 = 2 s
      +
      0x0049FlashExposureCompAreano1 = Entire Frame +
      2 = Background Only
      0x004aAutoFlashISOSensitivityno1 = Subject and Background +
      2 = Subject Only
      0x0051AssignBktButtonno1 = Auto Bracketing +
      2 = Multiple Exposure +
      3 = HDR (high dynamic range) +
      4 = None
      0x0052AssignMovieRecordButtonno(D6) +
      1 = Voice Memo +
      2 = Photo Shooting Bank +
      3 = Exposure Mode +
      4 = AF Mode/AF Area Mode +
      5 = Image Area +
      6 = Shutter/Aperture Lock +
      7 = None
      +(Z Series cameras thru November 2021) +
      1 = AE Lock (hold) +
      2 = AE Lock (reset on release) +
      3 = Preview +
      4 = +NEF(RAW) +
      5 = LiveView Info Display On/Off +
      6 = Grid Display +
      7 = Zoom (Low) +
      8 = Zoom (1:1) +
      9 = Zoom (High) +
      10 = My Menu +
      11 = My Menu Top Item +
      12 = Image Area +
      13 = Image Quality +
      14 = White Balance +
      15 = Picture Control +
      16 = Active-D Lighting +
      17 = Metering +
      18 = Flash Mode +
      19 = Focus Mode +
      20 = Auto Bracketing +
      21 = Multiple Exposure +
      22 = HDR +
      23 = Exposure Delay Mode +
      24 = Shutter/Aperture Lock +
      25 = Non-CPU Lens +
      26 = None
      +
      0x0053MultiSelectorShootModeno(D6) +
      1 = Select Center Focus Point +
      2 = Preset Focus Point - Press To Recall +
      3 = Preset Focus Point - Hold To Recall +
      4 = None +
      (Z Series cameras thru November 2021) +
      1 = Select Center Focus Point +
      2 = Zoom (Low) +
      3 = Zoom (1:1) +
      4 = Zoom (High) +
      5 = None
      0x0054MultiSelectorPlaybackModeno(D6) + +
      1 = Filtered Playback +
      2 = View Histograms +
      3 = Zoom (Low)
        4 = Zoom (1:1) +
      5 = Zoom (High) +
      6 = Choose Folder
      +(Z Series cameras thru November 2021) + +
      1 = Thumbnail On/Off +
      2 = View Histograms +
      3 = Zoom (Low)
        4 = Zoom (1:1) +
      5 = Zoom (High) +
      6 = Choose Folder
      +
      0x0056MultiSelectorLiveViewno1 = Select Center Focus Point +
      2 = Zoom (Low) +
      3 = Zoom (1:1) +
      4 = Zoom (High) +
      5 = None
      0x0058CmdDialsReverseRotExposureComp?no 
      0x0059CmdDialsChangeMainSubExposure?no 
      0x005aCmdDialsChangeMainSubno1 = Autofocus On, Exposure On +
      2 = Autofocus Off, Exposure On +
      1 = Autofocus On, Exposure On (Mode A) +
      2 = Autofocus Off, Exposure On (Mode A) +
      1 = Autofocus On, Exposure Off +
      2 = Autofocus Off, Exposure Off
      0x005bCmdDialsMenuAndPlaybackno1 = On +
      2 = On (Image Review Excluded) +
      3 = Off
      0x005cSubDialFrameAdvanceno + +
      1 = 10 Frames +
      2 = 50 Frames +
      3 = Rating +
      4 = Protect
        5 = Stills Only +
      6 = Movies Only +
      7 = Folder
      +
      0x005dReleaseButtonToUseDialno1 = Yes +
      2 = No
      0x005eReverseIndicatorsno1 = + 0 - +
      2 = - 0 +
      0x0062MovieShutterButtonno1 = Take Photo +
      2 = Record Movie
      0x0063Languageno5 = English +
      6 = Spanish +
      8 = French +
      15 = Portuguese (Br)
      0x006cShootingInfoDisplayno(D6) +
      1 = Auto +
      2 = Manual (dark on light) +
      3 = Manual (light on dark) +
      (Z Series cameras thru November 2021) +
      1 = Manual (dark on light) +
      2 = Manual (light on dark)
      0x0074FlickAdvanceDirectionno1 = Right to Left +
      2 = Left to Right
      0x0075HDMIOutputResolutionno + +
      1 = Auto +
      2 = 2160p +
      3 = 1080p +
      4 = 1080i
        5 = 720p +
      6 = 576p +
      7 = 480p
      +
      0x0077HDMIOutputRangeno1 = Auto +
      2 = Limit +
      3 = Full
      0x0080RemoteFuncButtonno(D6) +
      1 = AF-On +
      2 = AF Lock Only +
      3 = AE Lock (reset on release) +
      4 = AE Lock Only +
      5 = AE/AF Lock +
      6 = FV Lock +
      7 = Flash Disable/Enable +
      8 = Preview +
      9 = +NEF(RAW) +
      10 = LiveView Info Display On/Off +
      11 = Recall Shooting Functions +
      12 = None
      +(Z Series cameras thru November 2021) +
      1 = AF-On +
      2 = AF Lock Only +
      3 = AE Lock (reset on release) +
      4 = AE Lock Only +
      5 = AE/AF Lock +
      6 = FV Lock +
      7 = Flash Disable/Enable +
      8 = Preview +
      9 = +NEF(RAW) +
      10 = None +
      11 = LiveView Info Display On/Off
      +
      0x008bCmdDialsReverseRotationno1 = No +
      2 = Shutter Speed & Aperture +
      1 = Exposure Compensation +
      2 = Exposure Compensation, Shutter Speed & Aperture
      0x008dFocusPeakingHighlightColorno1 = Red +
      2 = Yellow +
      3 = Blue +
      4 = White
      0x008eContinuousModeDisplayno1 = On +
      2 = Off
      0x008fShutterSpeedLockno1 = On +
      2 = Off
      0x0090ApertureLockno1 = On +
      2 = Off
      0x0091MovieHighlightDisplayThresholdno + +
      1 = 255 +
      2 = 248 +
      3 = 235 +
      4 = 224
        5 = 213 +
      6 = 202 +
      7 = 191 +
      8 = 180
      +
      0x0092HDMIExternalRecorderno1 = On +
      2 = Off
      0x0093BlockShotAFResponseno1 = 1 (Quick) +
      2 = 2 +
      3 = 3 (Normal) +
      4 = 4 +
      5 = 5 (Delay)
      0x0094SubjectMotionno1 = Erratic +
      2 = Steady
      0x0095Three-DTrackingFaceDetectionno1 = On +
      2 = Off
      0x0097StoreByOrientationno(D6) +
      1 = Focus Point +
      2 = Focus Point and AF-area mode +
      3 = Off +
      (Z Series cameras thru November 2021) +
      1 = Focus Point +
      2 = Off
      0x0099DynamicAreaAFAssistno1 = On +
      2 = Off
      0x009aExposureCompStepSizeno1 = 1/3 EV +
      2 = 1/2 EV +
      3 = 1 EV
      0x009bSyncReleaseModeno1 = Sync +
      2 = No Sync
      0x009cModelingFlashno1 = On +
      2 = Off
      0x009dAutoBracketModeMno1 = Flash/Speed +
      2 = Flash/Speed/Aperture +
      3 = Flash/Aperture +
      4 = Flash Only
      0x009ePreviewButtonno +
      1 = Preset Focus Point - Press To Recall +
      2 = Preset Focus Point - Hold To Recall +
      3 = AF-AreaMode S +
      4 = AF-AreaMode D9 +
      5 = AF-AreaMode D25 +
      6 = AF-AreaMode D49 +
      7 = AF-AreaMode D105 +
      8 = AF-AreaMode 3D +
      9 = AF-AreaMode Group +
      10 = AF-AreaMode Group C1 +
      11 = AF-AreaMode Group C2 +
      12 = AF-AreaMode Auto Area +
      13 = AF-AreaMode + AF-On S +
      14 = AF-AreaMode + AF-On D9 +
      15 = AF-AreaMode + AF-On D25 +
      16 = AF-AreaMode + AF-On D49 +
      17 = AF-AreaMode + AF-On D105 +
      18 = AF-AreaMode + AF-On 3D +
      19 = AF-AreaMode + AF-On Group +
      20 = AF-AreaMode + AF-On Group C1 +
      21 = AF-AreaMode + AF-On Group C2 +
      22 = AF-AreaMode + AF-On Auto Area +
      23 = AF-On +
      24 = AF Lock Only +
      25 = AE Lock (hold) +
      26 = AE/WB Lock (hold) +
      27 = AE Lock (reset on release) +
      28 = AE Lock Only +
      29 = AE/AF Lock +
      30 = FV Lock +
      31 = Flash Disable/Enable +
      32 = Preview +
      33 = Recall Shooting Functions +
      34 = Bracketing Burst +
      35 = Synchronized Release (Master) +
      36 = Synchronized Release (Remote) +
      39 = +NEF(RAW) +
      40 = Grid Display +
      41 = Virtual Horizon +
      42 = Voice Memo +
      43 = Wired LAN +
      44 = My Menu +
      45 = My Menu Top Item +
      46 = Playback +
      47 = Filtered Playback +
      48 = Photo Shooting Bank +
      49 = AF Mode/AF Area Mode +
      50 = Image Area +
      51 = Active-D Lighting +
      52 = Exposure Delay Mode +
      53 = Shutter/Aperture Lock +
      54 = 1 Stop Speed/Aperture +
      55 = Non-CPU Lens +
      56 = None
      +
      0x00a0Func1Buttonno(D6) +
      1 = Preset Focus Point - Press To Recall +
      2 = Preset Focus Point - Hold To Recall +
      3 = AF-AreaMode S +
      4 = AF-AreaMode D9 +
      5 = AF-AreaMode D25 +
      6 = AF-AreaMode D49 +
      7 = AF-AreaMode D105 +
      8 = AF-AreaMode 3D +
      9 = AF-AreaMode Group +
      10 = AF-AreaMode Group C1 +
      11 = AF-AreaMode Group C2 +
      12 = AF-AreaMode Auto Area +
      13 = AF-AreaMode + AF-On S +
      14 = AF-AreaMode + AF-On D9 +
      15 = AF-AreaMode + AF-On D25 +
      16 = AF-AreaMode + AF-On D49 +
      17 = AF-AreaMode + AF-On D105 +
      18 = AF-AreaMode + AF-On 3D +
      19 = AF-AreaMode + AF-On Group +
      20 = AF-AreaMode + AF-On Group C1 +
      21 = AF-AreaMode + AF-On Group C2 +
      22 = AF-AreaMode + AF-On Auto Area +
      23 = AF-On +
      24 = AF Lock Only +
      25 = AE Lock (hold) +
      26 = AE/WB Lock (hold) +
      27 = AE Lock (reset on release) +
      28 = AE Lock Only +
      29 = AE/AF Lock +
      30 = FV Lock +
      31 = Flash Disable/Enable +
      32 = Preview +
      33 = Recall Shooting Functions +
      34 = Bracketing Burst +
      35 = Synchronized Release (Master) +
      36 = Synchronized Release (Remote) +
      39 = +NEF(RAW) +
      40 = Grid Display +
      41 = Virtual Horizon +
      42 = Voice Memo +
      43 = Wired LAN +
      44 = My Menu +
      45 = My Menu Top Item +
      46 = Playback +
      47 = Filtered Playback +
      48 = Photo Shooting Bank +
      49 = AF Mode/AF Area Mode +
      50 = Image Area +
      51 = Active-D Lighting +
      52 = Exposure Delay Mode +
      53 = Shutter/Aperture Lock +
      54 = 1 Stop Speed/Aperture +
      55 = Non-CPU Lens +
      56 = None
      +(Z Series cameras thru November 2021) +
      1 = AF-On +
      2 = AF Lock Only +
      3 = AE Lock (hold) +
      4 = AE Lock (reset on release) +
      5 = AE Lock Only +
      6 = AE/AF Lock +
      7 = FV Lock +
      8 = Flash Disable/Enable +
      9 = Preview +
      10 = Matrix Metering +
      11 = Center-weighted Metering +
      12 = Spot Metering +
      13 = Highlight-weighted Metering +
      14 = Bracketing Burst +
      15 = Synchronized Release (Master) +
      16 = Synchronized Release (Remote) +
      19 = +NEF(RAW) +
      20 = Subject Tracking +
      21 = Silent Photography +
      22 = LiveView Info Display On/Off +
      23 = Grid Display +
      24 = Zoom (Low) +
      25 = Zoom (1:1) +
      26 = Zoom (High) +
      27 = My Menu +
      28 = My Menu Top Item +
      29 = Playback +
      30 = Protect +
      31 = Image Area +
      32 = Image Quality +
      33 = White Balance +
      34 = Picture Control +
      35 = Active-D Lighting +
      36 = Metering +
      37 = Flash Mode +
      38 = Focus Mode +
      39 = Auto Bracketing +
      40 = Multiple Exposure +
      41 = HDR +
      42 = Exposure Delay Mode +
      43 = Shutter/Aperture Lock +
      44 = Focus Peaking +
      45 = Rating 0 +
      46 = Rating 5 +
      47 = Rating 4 +
      48 = Rating 3 +
      49 = Rating 2 +
      50 = Rating 1 +
      52 = None
      +
      0x00a2Func2Buttonno(D6) +
      1 = Preset Focus Point - Press To Recall +
      2 = Preset Focus Point - Hold To Recall +
      3 = AF-AreaMode S +
      4 = AF-AreaMode D9 +
      5 = AF-AreaMode D25 +
      6 = AF-AreaMode D49 +
      7 = AF-AreaMode D105 +
      8 = AF-AreaMode 3D +
      9 = AF-AreaMode Group +
      10 = AF-AreaMode Group C1 +
      11 = AF-AreaMode Group C2 +
      12 = AF-AreaMode Auto Area +
      13 = AF-AreaMode + AF-On S +
      14 = AF-AreaMode + AF-On D9 +
      15 = AF-AreaMode + AF-On D25 +
      16 = AF-AreaMode + AF-On D49 +
      17 = AF-AreaMode + AF-On D105 +
      18 = AF-AreaMode + AF-On 3D +
      19 = AF-AreaMode + AF-On Group +
      20 = AF-AreaMode + AF-On Group C1 +
      21 = AF-AreaMode + AF-On Group C2 +
      22 = AF-AreaMode + AF-On Auto Area +
      23 = AF-On +
      24 = AF Lock Only +
      25 = AE Lock (hold) +
      26 = AE/WB Lock (hold) +
      27 = AE Lock (reset on release) +
      28 = AE Lock Only +
      29 = AE/AF Lock +
      30 = FV Lock +
      31 = Flash Disable/Enable +
      32 = Preview +
      33 = Recall Shooting Functions +
      34 = Bracketing Burst +
      35 = Synchronized Release (Master) +
      36 = Synchronized Release (Remote) +
      39 = +NEF(RAW) +
      40 = Grid Display +
      41 = Virtual Horizon +
      42 = Voice Memo +
      43 = Wired LAN +
      44 = My Menu +
      45 = My Menu Top Item +
      46 = Playback +
      47 = Filtered Playback +
      48 = Photo Shooting Bank +
      49 = AF Mode/AF Area Mode +
      50 = Image Area +
      51 = Active-D Lighting +
      52 = Exposure Delay Mode +
      53 = Shutter/Aperture Lock +
      54 = 1 Stop Speed/Aperture +
      55 = Non-CPU Lens +
      56 = None
      +(Z Series cameras thru November 2021) +
      1 = AF-On +
      2 = AF Lock Only +
      3 = AE Lock (hold) +
      4 = AE Lock (reset on release) +
      5 = AE Lock Only +
      6 = AE/AF Lock +
      7 = FV Lock +
      8 = Flash Disable/Enable +
      9 = Preview +
      10 = Matrix Metering +
      11 = Center-weighted Metering +
      12 = Spot Metering +
      13 = Highlight-weighted Metering +
      14 = Bracketing Burst +
      15 = Synchronized Release (Master) +
      16 = Synchronized Release (Remote) +
      19 = +NEF(RAW) +
      20 = Subject Tracking +
      21 = Silent Photography +
      22 = LiveView Info Display On/Off +
      23 = Grid Display +
      24 = Zoom (Low) +
      25 = Zoom (1:1) +
      26 = Zoom (High) +
      27 = My Menu +
      28 = My Menu Top Item +
      29 = Playback +
      30 = Protect +
      31 = Image Area +
      32 = Image Quality +
      33 = White Balance +
      34 = Picture Control +
      35 = Active-D Lighting +
      36 = Metering +
      37 = Flash Mode +
      38 = Focus Mode +
      39 = Auto Bracketing +
      40 = Multiple Exposure +
      41 = HDR +
      42 = Exposure Delay Mode +
      43 = Shutter/Aperture Lock +
      44 = Focus Peaking +
      45 = Rating 0 +
      46 = Rating 5 +
      47 = Rating 4 +
      48 = Rating 3 +
      49 = Rating 2 +
      50 = Rating 1 +
      52 = None
      +
      0x00a3AF-OnButtonno(D6) +
      1 = AF-AreaMode S +
      2 = AF-AreaMode D9 +
      3 = AF-AreaMode D25 +
      4 = AF-AreaMode D49 +
      5 = AF-AreaMode D105 +
      6 = AF-AreaMode 3D +
      7 = AF-AreaMode Group +
      8 = AF-AreaMode Group C1 +
      9 = AF-AreaMode Group C2 +
      10 = AF-AreaMode Auto Area +
      11 = AF-AreaMode + AF-On S +
      12 = AF-AreaMode + AF-On D9 +
      13 = AF-AreaMode + AF-On D25 +
      14 = AF-AreaMode + AF-On D49 +
      15 = AF-AreaMode + AF-On D105 +
      16 = AF-AreaMode + AF-On 3D +
      17 = AF-AreaMode + AF-On Group +
      18 = AF-AreaMode + AF-On Group C1 +
      19 = AF-AreaMode + AF-On Group C2 +
      20 = AF-AreaMode + AF-On Auto Area +
      21 = AF-On +
      22 = AF Lock Only +
      23 = AE Lock (hold) +
      24 = AE/WB Lock (hold) +
      25 = AE Lock (reset on release) +
      26 = AE Lock Only +
      27 = AE/AF Lock +
      28 = Recall Shooting Functions +
      29 = None
      +(Z Series cameras thru November 2021) +
      1 = Center Focus Point +
      2 = AF-On +
      3 = AF Lock Only +
      4 = AE Lock (hold) +
      5 = AE Lock (reset on release) +
      6 = AE Lock Only +
      7 = AE/AF Lock +
      8 = LiveView Info Display On/Off +
      9 = Zoom (Low) +
      10 = Zoom (1:1) +
      11 = Zoom (High) +
      12 = None
      +
      0x00a4SubSelectorno1 = Same as MultiSelector +
      2 = Focus Point Selection
      0x00a5SubSelectorCenterno(D6) +
      1 = Preset Focus Point - Press To Recall +
      2 = Preset Focus Point - Hold To Recall +
      3 = Center Focus Point +
      4 = AF-AreaMode S +
      5 = AF-AreaMode D9 +
      6 = AF-AreaMode D25 +
      7 = AF-AreaMode D49 +
      8 = AF-AreaMode D105 +
      9 = AF-AreaMode 3D +
      10 = AF-AreaMode Group +
      11 = AF-AreaMode Group C1 +
      12 = AF-AreaMode Group C2 +
      13 = AF-AreaMode Auto Area +
      14 = AF-AreaMode + AF-On S +
      15 = AF-AreaMode + AF-On D9 +
      16 = AF-AreaMode + AF-On D25 +
      17 = AF-AreaMode + AF-On D49 +
      18 = AF-AreaMode + AF-On D105 +
      19 = AF-AreaMode + AF-On 3D +
      20 = AF-AreaMode + AF-On Group +
      21 = AF-AreaMode + AF-On Group C1 +
      22 = AF-AreaMode + AF-On Group C2 +
      23 = AF-AreaMode + AF-On Auto Area +
      24 = AF-On +
      25 = AF Lock Only +
      26 = AE Lock (hold) +
      27 = AE/WB Lock (hold) +
      28 = AE Lock (reset on release) +
      29 = AE Lock Only +
      30 = AE/AF Lock +
      31 = FV Lock +
      32 = Flash Disable/Enable +
      33 = Preview +
      34 = Recall Shooting Functions +
      35 = Bracketing Burst +
      36 = Synchronized Release (Master) +
      37 = Synchronized Release (Remote) +
      38 = None
      +(Z Series cameras thru November 2021) +
      1 = Center Focus Point +
      2 = AF-On +
      3 = AF Lock Only +
      4 = AE Lock (hold) +
      5 = AE Lock (reset on release) +
      6 = AE Lock Only +
      7 = AE/AF Lock +
      8 = FV Lock +
      9 = Flash Disable/Enable +
      10 = Preview +
      11 = Matrix Metering +
      12 = Center-weighted Metering +
      13 = Spot Metering +
      14 = Highlight-weighted Metering +
      15 = Bracketing Burst +
      16 = Synchronized Release (Master) +
      17 = Synchronized Release (Remote) +
      20 = +NEF(RAW) +
      21 = LiveView Info Display On/Off +
      22 = Grid Display +
      23 = Image Area +
      24 = Non-CPU Lens +
      25 = None
      +
      0x00a7LensFunc1Buttonno(D6) +
      1 = Preset Focus Point - Press To Recall +
      2 = Preset Focus Point - Hold To Recall +
      3 = AF-AreaMode S +
      4 = AF-AreaMode D9 +
      5 = AF-AreaMode D25 +
      6 = AF-AreaMode D49 +
      7 = AF-AreaMode D105 +
      8 = AF-AreaMode 3D +
      9 = AF-AreaMode Group +
      10 = AF-AreaMode Group C1 +
      11 = AF-AreaMode Group C2 +
      12 = AF-AreaMode Auto Area +
      13 = AF-AreaMode + AF-On S +
      14 = AF-AreaMode + AF-On D9 +
      15 = AF-AreaMode + AF-On D25 +
      16 = AF-AreaMode + AF-On D49 +
      17 = AF-AreaMode + AF-On D105 +
      18 = AF-AreaMode + AF-On 3D +
      19 = AF-AreaMode + AF-On Group +
      20 = AF-AreaMode + AF-On Group C1 +
      21 = AF-AreaMode + AF-On Group C2 +
      22 = AF-AreaMode + AF-On Auto Area +
      23 = AF-On +
      24 = AF Lock Only +
      25 = AE Lock Only +
      26 = AE/AF Lock +
      27 = Flash Disable/Enable +
      28 = Recall Shooting Functions +
      29 = Synchronized Release (Master) +
      30 = Synchronized Release (Remote)
      +(Z Series cameras thru November 2021) +
      1 = AF-On +
      2 = AF Lock Only +
      3 = AE Lock (hold) +
      4 = AE Lock (reset on release) +
      5 = AE Lock Only +
      6 = AE/AF Lock +
      7 = FV Lock +
      8 = Flash Disable/Enable +
      9 = Preview +
      10 = Matrix Metering +
      11 = Center-weighted Metering +
      12 = Spot Metering +
      13 = Highlight-weighted Metering +
      14 = Bracketing Burst +
      15 = Synchronized Release (Master) +
      16 = Synchronized Release (Remote) +
      19 = +NEF(RAW) +
      20 = Subject Tracking +
      21 = Grid Display +
      22 = Zoom (Low) +
      23 = Zoom (1:1) +
      24 = Zoom (High) +
      25 = My Menu +
      26 = My Menu Top Item +
      27 = Playback +
      28 = None
      +
      0x00a8CmdDialsApertureSettingno1 = Sub-command Dial +
      2 = Aperture Ring
      0x00a9MultiSelectorno1 = Restart Standby Timer +
      2 = Do Nothing
      0x00aaLiveViewButtonOptionsno1 = Enable +
      2 = Enable (Standby Timer Active) +
      3 = Disable
      0x00abLightSwitchno1 = LCD Backlight +
      2 = LCD Backlight and Shooting Information
      0x00b1MoviePreviewButton +
      MovieFunc1Button
      no
      no
      (D6) +
      1 = Power Aperture (Open) +
      2 = Exposure Compensation +
      3 = Grid Display +
      4 = Zoom (Low) +
      5 = Zoom (1:1) +
      6 = Zoom (High) +
      7 = Image Area +
      8 = Microphone Sensitivity +
      9 = None
      +(Z Series cameras thru November 2021) +
      1 = Power Aperture (Open) +
      2 = Exposure Compensation +
      3 = Subject Tracking +
      4 = LiveView Info Display On/Off +
      5 = Grid Display +
      6 = Zoom (Low) +
      7 = Zoom (1:1) +
      8 = Zoom (High) +
      9 = Protect +
      10 = Image Area +
      11 = White Balance +
      12 = Picture Control +
      13 = Active-D Lighting +
      14 = Metering +
      15 = Focus Mode +
      16 = Microphone Sensitivity +
      17 = Focus Peaking +
      18 = Rating (None) +
      19 = Rating (5) +
      20 = Rating (4) +
      21 = Rating (3) +
      22 = Rating (2) +
      23 = Rating (1) +
      25 = None
      +
      0x00b3MovieFunc1Button +
      MovieFunc2Button
      no
      no
      (D6) +
      1 = Power Aperture (Close) +
      2 = Exposure Compensation +
      3 = Grid Display +
      4 = Zoom (Low) +
      5 = Zoom (1:1) +
      6 = Zoom (High) +
      7 = Image Area +
      8 = Microphone Sensitivity +
      9 = None
      +(Z Series cameras thru November 2021) +
      1 = Power Aperture (Close) +
      2 = Exposure Compensation +
      3 = Subject Tracking +
      4 = LiveView Info Display On/Off +
      5 = Grid Display +
      6 = Zoom (Low) +
      7 = Zoom (1:1) +
      8 = Zoom (High) +
      9 = Protect +
      10 = Image Area +
      11 = White Balance +
      12 = Picture Control +
      13 = Active-D Lighting +
      14 = Metering +
      15 = Focus Mode +
      16 = Microphone Sensitivity +
      17 = Focus Peaking +
      18 = Rating (None) +
      19 = Rating (5) +
      20 = Rating (4) +
      21 = Rating (3) +
      22 = Rating (2) +
      23 = Rating (1) +
      25 = None
      +
      0x00b5MovieFunc2Buttonno +
      1 = Grid Display +
      2 = Zoom (Low) +
      3 = Zoom (1:1) +
      4 = Zoom (High) +
      5 = Image Area +
      6 = Microphone Sensitivity +
      7 = None
      +
      0x00b6AssignMovieSubselectorno(D6) + +
      1 = Center Focus Point +
      2 = AF Lock Only +
      3 = AE Lock (hold) +
      4 = AE/WB Lock (hold) +
      5 = AE Lock Only +
      6 = AE/AF Lock
        7 = Zoom (Low) +
      8 = Zoom (1:1) +
      9 = Zoom (High) +
      10 = Record Movie +
      11 = None
      +(Z Series cameras thru November 2021) +
      1 = Center Focus Point +
      2 = AF Lock Only +
      3 = AE Lock (hold) +
      4 = AE Lock Only +
      5 = AE/AF Lock +
      6 = LiveView Info Display On/Off +
      7 = Grid Display +
      8 = Zoom (Low) +
      9 = Zoom (1:1) +
      10 = Zoom (High) +
      11 = Record Movie +
      12 = Image Area +
      13 = None
      +
      0x00b8LimitAFAreaModeSelD9?no1 = Limit +
      2 = No Limit
      0x00b9LimitAFAreaModeSelD25?no1 = Limit +
      2 = No Limit
      0x00bcLimitAFAreaModeSel3D?no1 = Limit +
      2 = No Limit
      0x00bdLimitAFAreaModeSelGroup?no1 = Limit +
      2 = No Limit
      0x00beLimitAFAreaModeSelAuto?no1 = Limit +
      2 = No Limit
      0x00c1LimitSelectableImageArea5To4?no1 = Limit +
      2 = No Limit
      0x00c2LimitSelectableImageArea1To1?no1 = Limit +
      2 = No Limit
      0x00d4PhotoShootingMenuBankno1 = A +
      2 = B +
      3 = C +
      4 = D
      0x00d5CustomSettingsBankno1 = A +
      2 = B +
      3 = C +
      4 = D
      0x00d6LimitAF-AreaModeSelPinpoint?no1 = Limit +
      2 = No Limit
      0x00d7LimitAF-AreaModeSelDynamic?no1 = Limit +
      2 = No Limit
      0x00d8LimitAF-AreaModeSelWideAF_S?no1 = Limit +
      2 = No Limit
      0x00d9LimitAF-AreaModeSelWideAF_L?no1 = Limit +
      2 = No Limit
      0x00daLowLightAFno1 = On +
      2 = Off
      0x00dbLimitSelectableImageAreaDX?no1 = Limit +
      2 = No Limit
      0x00dcLimitSelectableImageArea5To4?no1 = Limit +
      2 = No Limit
      0x00ddLimitSelectableImageArea1To1?no1 = Limit +
      2 = No Limit
      0x00deLimitSelectableImageArea16To9?no1 = Limit +
      2 = No Limit
      0x00dfApplySettingsToLiveViewno1 = On +
      2 = Off
      0x00e0FocusPeakingLevelno1 = High Sensitivity +
      2 = Standard Sensitivity +
      3 = Low Sensitivity +
      4 = Off
      0x00eaLensControlRingno1 = Aperture +
      2 = Exposure Compensation +
      3 = ISO Sensitivity +
      4 = None (Disabled)
      0x00edMovieMultiSelectorno(D6) + +
      1 = Center Focus Point +
      2 = Zoom (Low) +
      3 = Zoom (1:1)
        4 = Zoom (High) +
      5 = Record Movie +
      6 = None
      + + +
      1 = Center Focus Point +
      2 = Zoom (Low) +
      3 = Zoom (1:1)
        4 = Zoom (High) +
      5 = Record Movie +
      6 = None
      +
      0x00eeMovieAFSpeedno 
      0x00efMovieAFSpeedApplyno1 = Always +
      2 = Only During Recording
      0x00f0MovieAFTrackingSensitivityno + +
      1 = 1 (High) +
      2 = 2 +
      3 = 3 +
      4 = 4 (Normal)
        5 = 5 +
      6 = 6 +
      7 = 7 (Low)
      +
      0x00f1MovieHighlightDisplayPatternno1 = Pattern 1 +
      2 = Pattern 2 +
      3 = Off
      0x00f2SubDialFrameAdvanceRating5?no1 = No +
      2 = Yes
      0x00f3SubDialFrameAdvanceRating4?no1 = No +
      2 = Yes
      0x00f4SubDialFrameAdvanceRating3?no1 = No +
      2 = Yes
      0x00f5SubDialFrameAdvanceRating2?no1 = No +
      2 = Yes
      0x00f6SubDialFrameAdvanceRating1?no1 = No +
      2 = Yes
      0x00f7SubDialFrameAdvanceRating0?no1 = No +
      2 = Yes
      0x00f9MovieAF-OnButtonno +
      1 = Center Focus Point +
      2 = AF-On +
      3 = AF Lock Only +
      4 = AE Lock (hold) +
      5 = AE Lock Only +
      6 = AE/AF Lock +
      7 = LiveView Info Display On/Off +
      8 = Zoom (Low) +
      9 = Zoom (1:1) +
      10 = Zoom (High) +
      11 = Record Movie +
      12 = None
      +
      0x00fbSecondarySlotFunctionno1 = Overflow +
      2 = Backup +
      3 = NEF Primary + JPG Secondary +
      4 = JPG Primary + JPG Secondary
      0x00fcSilentPhotographyno1 = On +
      2 = Off
      0x00fdExtendedShutterSpeedsno1 = On +
      2 = Off
      0x0102HDMIBitDepthno1 = 8 Bit +
      2 = 10 Bit
      0x0103HDMIOutputHDRno2 = On +
      3 = Off
      0x0104HDMIViewAssistno1 = On +
      2 = Off
      0x0109BracketSetno1 = AE/Flash +
      2 = AE +
      3 = Flash +
      4 = White Balance +
      5 = Active-D Lighting
      0x010aBracketProgramno(AE and/or Flash Bracketing) + + +
      15 = +3F +
      16 = -3F +
      17 = +2F
        18 = -2F +
      19 = Disabled +
      20 = 3F
        21 = 5F +
      22 = 7F +
      23 = 9F
      +(White Balance Bracketing) + + +
      1 = B3F +
      2 = A3F +
      3 = B2F +
      4 = A2F
        5 = Disabled +
      6 = 3F +
      7 = 5F +
      8 = 7F
        9 = 9F +
      19 = N/A
      +(Active-D Bracketing) +
      [val & 0xf] +
      10 = Disabled +
      11 = 2 Exposures +
      12 = 3 Exposures +
      13 = 4 Exposures +
      14 = 5 Exposures
      0x010bBracketIncrementno(AE and/or Flash Bracketing enabled) +
      1 = 0.3 +
      3 = 0.5 +
      4 = 1.0 +
      5 = 2.0 +
      6 = 3.0 +
      (White Balance Bracketing enabled)
      0x010cBracketIncrementno(Active-D Bracketing enabled) +
      0 = Off +
      1 = Off, Low +
      2 = Off, Normal +
      3 = Off, High +
      4 = Off, Extra High +
      5 = Off, Auto +
      6 = Off, Low, Normal +
      7 = Off, Low, Normal, High +
      8 = Off, Low, Normal, High, Extra High
      +
      0x010eMonitorBrightnessno 
      0x0116GroupAreaC1no + + + +
      1 = 1x7 +
      2 = 1x5 +
      3 = 3x7 +
      4 = 3x5 +
      5 = 3x3
        6 = 5x7 +
      7 = 5x5 +
      8 = 5x3 +
      9 = 5x1 +
      10 = 7x7
        11 = 7x5 +
      12 = 7x3 +
      13 = 7x1 +
      14 = 11x3 +
      15 = 11x1
        16 = 15x3 +
      17 = 15x1
      +
      0x0117AutoAreaAFStartingPointno1 = Enable +
      2 = Disable
      0x0118FocusPointPersistenceno1 = Auto +
      2 = Off
      0x0119LimitAFAreaModeSelD49?no1 = Limit +
      2 = No Limit
      0x011aLimitAFAreaModeSelD105?no1 = Limit +
      2 = No Limit
      0x011bLimitAFAreaModeSelGroupC1?no1 = Limit +
      2 = No Limit
      0x011cLimitAFAreaModeSelGroupC2?no1 = Limit +
      2 = No Limit
      0x011dAutoFocusModeRestrictionsno1 = AF-S +
      2 = AF-C +
      3 = No Limit
      0x011eFocusPointBrightnessno1 = Extra High +
      2 = High +
      3 = Normal +
      4 = Low
      0x011fCHModeShootingSpeedno 
      0x0120CLModeShootingSpeedno 
      0x0121QuietShutterShootingSpeedno + +
      1 = Single +
      2 = 5 fps +
      3 = 4 fps
        4 = 3 fps +
      5 = 2 fps +
      6 = 1 fps
      +
      0x0122LimitReleaseModeSelCL?no0 = No Limit +
      1 = Limit +
      2 = No Limit
      0x0123LimitReleaseModeSelCH?no0 = No Limit +
      1 = Limit +
      2 = No Limit
      0x0124LimitReleaseModeSelQ?no0 = No Limit +
      1 = Limit +
      2 = No Limit
      0x0125LimitReleaseModeSelTimer?no0 = No Limit +
      1 = Limit +
      2 = No Limit
      0x0126LimitReleaseModeSelMirror-Up?no0 = No Limit +
      1 = Limit +
      2 = No Limit
      0x0127LimitSelectableImageArea16To9?no1 = Limit +
      2 = No Limit
      0x0128RearControPanelDisplayno1 = Release Mode +
      2 = Frame Count
      0x0129FlashBurstPriorityno1 = Frame Rate +
      2 = Exposure
      0x012aRecallShootFuncExposureModeno1 = Off +
      2 = On
      0x012bRecallShootFuncShutterSpeedno1 = Off +
      2 = On
      0x012cRecallShootFuncApertureno1 = Off +
      2 = On
      0x012dRecallShootFuncExposureCompno1 = Off +
      2 = On
      0x012eRecallShootFuncISOno1 = Off +
      2 = On
      0x012fRecallShootFuncMeteringModeno1 = Off +
      2 = On
      0x0130RecallShootFuncWhiteBalanceno1 = Off +
      2 = On
      0x0131RecallShootFuncAFAreaModeno1 = Off +
      2 = On
      0x0132RecallShootFuncFocusTrackingno1 = Off +
      2 = On
      0x0133RecallShootFuncAF-Onno1 = Off +
      2 = On
      0x0134VerticalFuncButtonno +
      1 = Preset Focus Point +
      2 = AE Lock (hold) +
      3 = AE/WB Lock (hold) +
      4 = AE Lock (reset on release) +
      5 = FV Lock +
      6 = Preview +
      7 = +NEF(RAW) +
      8 = Grid Display +
      9 = Virtual Horizon +
      10 = Voice Memo +
      11 = Playback +
      12 = Filtered Playback +
      13 = Photo Shooting Bank +
      14 = Exposure Mode +
      15 = Exposure Comp +
      16 = AF Mode/AF Area Mode +
      17 = Image Area +
      18 = ISO +
      19 = Active-D Lighting +
      20 = Metering +
      21 = Exposure Delay Mode +
      22 = Shutter/Aperture Lock +
      23 = 1 Stop Speed/Aperture +
      24 = Rating 0 +
      25 = Rating 5 +
      26 = Rating 4 +
      27 = Rating 3 +
      28 = Rating 2 +
      29 = Rating 1 +
      30 = Candidate For Deletion +
      31 = Non-CPU Lens +
      32 = None
      +
      0x0135Func3Buttonno +
      1 = Voice Memo +
      2 = Select To Send +
      3 = Wired LAN +
      4 = My Menu +
      5 = My Menu Top Item +
      6 = Filtered Playback +
      7 = Rating 0 +
      8 = Rating 5 +
      9 = Rating 4 +
      10 = Rating 3 +
      11 = Rating 2 +
      12 = Rating 1 +
      13 = Candidate For Deletion +
      14 = None
      +
      0x0136VerticalAF-OnButtonno +
      1 = AF-AreaMode S +
      2 = AF-AreaMode D9 +
      3 = AF-AreaMode D25 +
      4 = AF-AreaMode D49 +
      5 = AF-AreaMode D105 +
      6 = AF-AreaMode 3D +
      7 = AF-AreaMode Group +
      8 = AF-AreaMode Group C1 +
      9 = AF-AreaMode Group C2 +
      10 = AF-AreaMode Auto Area +
      11 = AF-AreaMode + AF-On S +
      12 = AF-AreaMode + AF-On D9 +
      13 = AF-AreaMode + AF-On D25 +
      14 = AF-AreaMode + AF-On D49 +
      15 = AF-AreaMode + AF-On D105 +
      16 = AF-AreaMode + AF-On 3D +
      17 = AF-AreaMode + AF-On Group +
      18 = AF-AreaMode + AF-On Group C1 +
      19 = AF-AreaMode + AF-On Group C2 +
      20 = AF-AreaMode + AF-On Auto Area +
      21 = Same as AF-On +
      22 = AF-On +
      23 = AF Lock Only +
      24 = AE Lock (hold) +
      25 = AE/WB Lock (hold) +
      26 = AE Lock (reset on release) +
      27 = AE Lock Only +
      28 = AE/AF Lock +
      29 = Recall Shooting Functions +
      30 = None
      +
      0x0137VerticalMultiSelectorno1 = Same as MultiSelector +
      2 = Focus Point Selection
      0x0138MeteringButtonno +
      1 = Photo Shooting Bank +
      2 = Image Area +
      3 = Active-D Lighting +
      4 = Metering +
      5 = Exposure Delay Mode +
      6 = Shutter/Aperture Lock +
      7 = 1 Stop Speed/Aperture +
      8 = Non-CPU Lens +
      9 = None
      +
      0x0139PlaybackFlickUpno1 = Rating +
      2 = Select To Send +
      3 = Protect +
      4 = Voice Memo +
      5 = None
      0x013aPlaybackFlickUpRatingno(Meaningful only when PlaybackFlickUp is Rating) +
      1 = Rating 5 +
      2 = Rating 4 +
      3 = Rating 3 +
      4 = Rating 2 +
      5 = Rating 1 +
      6 = Candidate for Deletion
      +
      0x013bPlaybackFlickDownno1 = Rating +
      2 = Select To Send +
      3 = Protect +
      4 = Voice Memo +
      5 = None
      0x013cPlaybackFlickDownRatingno(Meaningful only when PlaybackFlickDown is Rating) +
      1 = Rating 5 +
      2 = Rating 4 +
      3 = Rating 3 +
      4 = Rating 2 +
      5 = Rating 1 +
      6 = Candidate for Deletion
      +
      0x013dMovieFunc3Buttonno1 = Record Movie +
      2 = My Menu +
      3 = My Menu Top Item +
      4 = None
      0x0150ShutterTypeno1 = Auto +
      2 = Mechanical +
      3 = Electronic
      0x0151LensFunc2Buttonno +
      1 = AF-On +
      2 = AF Lock Only +
      3 = AE Lock (hold) +
      4 = AE Lock (reset on release) +
      5 = AE Lock Only +
      6 = AE/AF Lock +
      7 = FV Lock +
      8 = Flash Disable/Enable +
      9 = Preview +
      10 = Matrix Metering +
      11 = Center-weighted Metering +
      12 = Spot Metering +
      13 = Highlight-weighted Metering +
      14 = Bracketing Burst +
      15 = Synchronized Release (Master) +
      16 = Synchronized Release (Remote) +
      19 = +NEF(RAW) +
      20 = Subject Tracking +
      21 = Grid Display +
      22 = Zoom (Low) +
      23 = Zoom (1:1) +
      24 = Zoom (High) +
      25 = My Menu +
      26 = My Menu Top Item +
      27 = Playback +
      28 = None
      +
      0x0158USBPowerDeliveryno1 = Enable +
      2 = Disable
      0x0159EnergySavingModeno1 = On +
      2 = Off
      0x015cBracketingBurstOptionsno1 = Enable +
      2 = Disable
      0x015ePrimarySlotno1 = CFexpress/XQD Card +
      2 = SD Card
      0x015fReverseFocusRingno1 = Not Reversed +
      2 = Reversed
      0x0160VerticalFuncButtonno +
      1 = AE Lock (hold) +
      2 = AE Lock (reset on release) +
      3 = FV Lock +
      4 = Preview +
      5 = +NEF(RAW) +
      6 = Subject Tracking +
      7 = Silent Photography +
      8 = LiveView Info Display On/Off +
      9 = Playback +
      10 = Image Area +
      11 = Metering +
      12 = Flash Mode +
      13 = Focus Mode +
      14 = Exposure Delay Mode +
      15 = Shutter/Aperture Lock +
      16 = Exposure Compensation +
      17 = ISO Sensitivity +
      18 = None
      +
      0x0161VerticalAFOnButtonno +
      1 = Same as AF-On Button +
      2 = Select Center Focus Point +
      3 = AF-On +
      4 = AF Lock Only +
      5 = AE Lock (hold) +
      6 = AE Lock (reset on release) +
      7 = AE Lock Only +
      8 = AE/AF Lock +
      9 = LiveView Info Display On/Off +
      10 = Zoom (Low) +
      11 = Zoom (1:1) +
      12 = Zoom (High) +
      13 = None
      +
      0x0162VerticalMultiSelectorno1 = Same as MultiSelector +
      2 = Focus Point Selection
      0x0164VerticalMovieFuncButtonno1 = LiveView Info Display On/Off +
      2 = Record Movie +
      3 = Exposure Compensation +
      4 = ISO +
      5 = None
      0x0165VerticalMovieAFOnButtonno +
      1 = Same as AF-On +
      2 = Center Focus Point +
      3 = AF-On +
      4 = AF Lock Only +
      5 = AE Lock (hold) +
      6 = AE Lock Only +
      7 = AE/AF Lock +
      8 = LiveView Info Display On/Off +
      9 = Zoom (Low) +
      10 = Zoom (1:1) +
      11 = Zoom (High) +
      12 = Record Movie +
      13 = None
      +
      0x0169LimitAF-AreaModeSelAutoPeople?no1 = Limit +
      2 = No Limit
      0x016aLimitAF-AreaModeSelAutoAnimals?no1 = Limit +
      2 = No Limit
      0x016bLimitAF-AreaModeSelWideLPeople?no1 = Limit +
      2 = No Limit
      0x016cLimitAF-AreaModeSelWideLAnimals?no1 = Limit +
      2 = No Limit
      0x016dSaveFocusno1 = On +
      2 = Off
      0x016eAFAreaModeno + +
      2 = Single-point +
      3 = Dynamic-area +
      4 = Wide (S) +
      5 = Wide (L) +
      6 = Wide (L-people)
        7 = Wide (L-animals) +
      8 = Auto +
      9 = Auto (People) +
      10 = Auto (Animals)
      +
      0x016fMovieAFAreaModeno + +
      1 = Single-point +
      2 = Wide (S) +
      3 = Wide (L) +
      4 = Wide (L-people)
        5 = Wide (L-animals) +
      6 = Auto +
      7 = Auto (People) +
      8 = Auto (Animals)
      +
      0x0170PreferSubSelectorCenterno1 = Off +
      2 = On
      0x0171KeepExposureWithTeleconverterno1 = Off +
      2 = Shutter Speed +
      3 = ISO
      0x0174FocusPointSelectionSpeedno1 = Normal +
      2 = High +
      3 = Very High
      + +
      +(This document generated automatically by Image::ExifTool::BuildTagLookup) +
      Last revised Jan 12, 2022 +

      <-- ExifTool Tag Names

      + + diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Olympus.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Olympus.html --- libimage-exiftool-perl-11.88/html/TagNames/Olympus.html 2020-02-13 13:41:05.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Olympus.html 2021-10-16 16:44:45.000000000 +0000 @@ -842,196 +842,196 @@ 'S0092'= E-M1MarkIII 'D4310'= FE-130,X-720 'D4478'= VG145,VG140,D715 -'SR45'= D220 +'S0093'= E-P7 'D4311'= FE-140,X-725 'D4479'= VG130,D710 -'SR55'= D320L +'SR45'= D220 'D4312'= FE150,X730 'D4480'= VG120,D705 -'SR83'= D340L +'SR55'= D320L 'D4313'= FE160,X735 'D4482'= VR310,D720 -'SR85'= C830L,D340R +'SR83'= D340L 'D4314'= u740,S740 'D4484'= VR320,D725 -'SR852'= C860L,D360L +'SR85'= C830L,D340R 'D4315'= u750,S750 'D4486'= VR330,D730 -'SR872'= C900Z,D400Z +'SR852'= C860L,D360L 'D4316'= u730/S730 'D4488'= VG110,D700 -'SR874'= C960Z,D460Z +'SR872'= C900Z,D400Z 'D4317'= FE115,X715 'D4490'= SP-610UZ -'SR951'= C2000Z +'SR874'= C960Z,D460Z 'D4321'= SP550UZ 'D4492'= SZ-10 -'SR952'= C21 +'SR951'= C2000Z 'D4322'= SP510UZ 'D4494'= SZ-20 -'SR953'= C21T.commu +'SR952'= C21 'D4324'= FE170,X760 'D4496'= SZ-30MR -'SR954'= C2020Z +'SR953'= C21T.commu 'D4326'= FE200 'D4498'= SP-810UZ -'SR955'= C990Z,D490Z +'SR954'= C2020Z 'D4327'= FE190/X750 'D4500'= SZ-11 -'SR956'= C211Z +'SR955'= C990Z,D490Z 'D4328'= u760,S760 'D4504'= TG-615 -'SR959'= C990ZS,D490Z +'SR956'= C211Z 'D4330'= FE180/X745 'D4508'= TG-620 -'SR95A'= C2100UZ +'SR959'= C990ZS,D490Z 'D4331'= u1000/S1000 'D4510'= TG-820 -'SR971'= C100,D370 +'SR95A'= C2100UZ 'D4332'= u770SW,S770SW 'D4512'= TG-1 -'SR973'= C2,D230 +'SR971'= C100,D370 'D4333'= FE240/X795 'D4516'= SH-21 -'SX151'= E100RS +'SR973'= C2,D230 'D4334'= FE210,X775 'D4519'= SZ-14 -'SX351'= C3000Z / C3030Z +'SX151'= E100RS 'D4336'= FE230/X790 'D4520'= SZ-31MR -'SX354'= C3040Z +'SX351'= C3000Z / C3030Z 'D4337'= FE220,X785 'D4521'= SH-25MR -'SX355'= C2040Z +'SX354'= C3040Z 'D4338'= u725SW,S725SW 'D4523'= SP-720UZ -'SX357'= C700UZ +'SX355'= C2040Z 'D4339'= FE250/X800 'D4529'= VG170 -'SX358'= C200Z,D510Z +'SX357'= C700UZ 'D4341'= u780,S780 'D4531'= XZ-2 -'SX374'= C3100Z,C3020Z +'SX358'= C200Z,D510Z 'D4343'= u790SW,S790SW 'D4535'= SP-620UZ -'SX552'= C4040Z +'SX374'= C3100Z,C3020Z 'D4344'= u1020,S1020 'D4536'= TG-320 -'SX553'= C40Z,D40Z +'SX552'= C4040Z 'D4346'= FE15,X10 'D4537'= VR340,D750 -'SX556'= C730UZ +'SX553'= C40Z,D40Z 'D4348'= FE280,X820,C520 'D4538'= VG160,X990,D745 -'SX558'= C5050Z +'SX556'= C730UZ 'D4349'= FE300,X830 'D4541'= SZ-12 -'SX571'= C120,D380 +'SX558'= C5050Z 'D4350'= u820,S820 'D4545'= VH410 -'SX574'= C300Z,D550Z +'SX571'= C120,D380 'D4351'= u1200,S1200 'D4546'= XZ-10 -'SX575'= C4100Z,C4000Z +'SX574'= C300Z,D550Z 'D4352'= FE270,X815,C510 'D4547'= TG-2 -'SX751'= X200,D560Z,C350Z +'SX575'= C4100Z,C4000Z 'D4353'= u795SW,S795SW 'D4548'= TG-830 -'SX752'= X300,D565Z,C450Z +'SX751'= X200,D560Z,C350Z 'D4354'= u1030SW,S1030SW 'D4549'= TG-630 -'SX753'= C750UZ +'SX752'= X300,D565Z,C450Z 'D4355'= SP560UZ 'D4550'= SH-50 -'SX754'= C740UZ +'SX753'= C750UZ 'D4356'= u1010,S1010 'D4553'= SZ-16,DZ-105 -'SX755'= C755UZ +'SX754'= C740UZ 'D4357'= u830,S830 'D4562'= SP-820UZ -'SX756'= C5060WZ +'SX755'= C755UZ 'D4359'= u840,S840 'D4566'= SZ-15 -'SX757'= C8080WZ +'SX756'= C5060WZ 'D4360'= FE350WIDE,X865 'D4572'= STYLUS1 -'SX758'= X350,D575Z,C360Z +'SX757'= C8080WZ 'D4361'= u850SW,S850SW 'D4574'= TG-3 -'SX759'= X400,D580Z,C460Z +'SX758'= X350,D575Z,C360Z 'D4362'= FE340,X855,C560 'D4575'= TG-850 -'SX75A'= AZ-2ZOOM +'SX759'= X400,D580Z,C460Z 'D4363'= FE320,X835,C540 'D4579'= SP-100EE -'SX75B'= D595Z,C500Z +'SX75A'= AZ-2ZOOM 'D4364'= SP570UZ 'D4580'= SH-60 -'SX75C'= X550,D545Z,C480Z +'SX75B'= D595Z,C500Z 'D4366'= FE330,X845,C550 'D4581'= SH-1 -'SX75D'= IR-300 +'SX75C'= X550,D545Z,C480Z 'D4368'= FE310,X840,C530 'D4582'= TG-835 -'SX75F'= C55Z,C5500Z +'SX75D'= IR-300 'D4370'= u1050SW,S1050SW 'D4585'= SH-2 / SH-3 -'SX75G'= C170,D425 +'SX75F'= C55Z,C5500Z 'D4371'= u1060,S1060 'D4586'= TG-4 -'SX75J'= C180,D435 +'SX75G'= C170,D425 'D4372'= FE370,X880,C575 'D4587'= TG-860 -'SX771'= C760UZ +'SX75J'= C180,D435 'D4374'= SP565UZ 'D4591'= TG-870 -'SX772'= C770UZ +'SX771'= C760UZ 'D4377'= u1040,S1040 'D4593'= TG-5 -'SX773'= C745UZ +'SX772'= C770UZ 'D4378'= FE360,X875,C570 'D4603'= TG-6 -'SX774'= X250,D560Z,C350Z +'SX773'= C745UZ 'D4379'= FE20,X15,C25 'D4809'= C2500L -'SX775'= X100,D540Z,C310Z +'SX774'= X250,D560Z,C350Z 'D4380'= uT6000,ST6000 'D4842'= E-10 -'SX776'= C460ZdelSol +'SX775'= X100,D540Z,C310Z 'D4381'= uT8000,ST8000 'D4856'= C-1 -'SX777'= C765UZ +'SX776'= C460ZdelSol 'D4382'= u9000,S9000 'D4857'= C-1Z,D-150Z -'SX77A'= D555Z,C315Z +'SX777'= C765UZ 'D4384'= SP590UZ 'DCHC'= D500L -'SX851'= C7070WZ +'SX77A'= D555Z,C315Z 'D4385'= FE3010,X895 'DCHT'= D600L / D620L -'SX852'= C70Z,C7000Z +'SX851'= C7070WZ 'D4386'= FE3000,X890 'K0055'= AIR-A01 -'SX853'= SP500UZ +'SX852'= C70Z,C7000Z 'D4387'= FE35,X30 'S0003'= E-330 -'SX854'= SP310 +'SX853'= SP500UZ 'D4388'= u550WP,S550WP 'S0004'= E-500 -'SX855'= SP350 +'SX854'= SP310 'D4390'= FE5000,X905 'S0009'= E-400 -'SX873'= SP320 +'SX855'= SP350 'D4391'= u5000 'S0010'= E-510 -'SX875'= FE180/X745 +'SX873'= SP320 'D4392'= u7000,S7000 'S0011'= E-3 -'SX876'= FE190/X750 +'SX875'= FE180/X745 'D4396'= FE5010,X915 'S0013'= E-410 -   +'SX876'= FE190/X750 'D4397'= FE25,X20 'S0016'= E-420    @@ -1275,9 +1275,12 @@ '0 32 00'= Olympus Zuiko Digital ED 14-35mm F2.0 SWD '0 32 10'= Olympus M.Zuiko Digital ED 12-200mm F3.5-6.3 '0 33 00'= Olympus Zuiko Digital 25mm F2.8 +'0 33 10'= Olympus M.Zuiko Digital 150-400mm F4.5 TC1.25x IS Pro '0 34 00'= Olympus Zuiko Digital ED 9-18mm F4.0-5.6 '0 34 10'= Olympus M.Zuiko Digital ED 12-45mm F4.0 Pro '0 35 00'= Olympus Zuiko Digital 14-54mm F2.8-3.5 II +'0 35 10'= Olympus M.Zuiko 100-400mm F5.0-6.3 +'0 36 10'= Olympus M.Zuiko Digital ED 8-25mm F4 Pro '1 01 00'= Sigma 18-50mm F3.5-5.6 DC '1 01 10'= Sigma 30mm F2.8 EX DN '1 02 00'= Sigma 55-200mm F4.0-5.6 DC @@ -1337,14 +1340,19 @@ '2 28 10'= Lumix G Vario 12-60mm F3.5-5.6 Asph. Power OIS '2 29 10'= Leica DG Summilux 12mm F1.4 Asph. '2 30 10'= Leica DG Vario-Elmarit 12-60mm F2.8-4 Asph. Power OIS +'2 31 10'= Lumix G Vario 45-200mm F4.0-5.6 II +'2 32 10'= Lumix G Vario 100-300mm F4.0-5.6 II '2 33 10'= Lumix G X Vario 12-35mm F2.8 II Asph. Power OIS +'2 34 10'= Lumix G Vario 35-100mm F2.8 II '2 35 10'= Leica DG Vario-Elmarit 8-18mm F2.8-4 Asph. '2 36 10'= Leica DG Elmarit 200mm F2.8 Power OIS '2 37 10'= Leica DG Vario-Elmarit 50-200mm F2.8-4 Asph. Power OIS '2 38 10'= Leica DG Vario-Summilux 10-25mm F1.7 Asph. +'2 40 10'= Leica DG Vario-Summilux 25-50mm F1.7 Asph. '3 01 00'= Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph. '3 02 00'= Leica D Summilux 25mm F1.4 Asph. '5 01 10'= Tamron 14-150mm F3.5-5.8 Di III +'24 01 10'= Venus Optics Laowa 50mm F2.8 2x Macro

      Olympus CameraSettings Tags

      @@ -1439,7 +1447,8 @@
      Bit 5 = Face detect
      Bit 6 = Imager AF
      Bit 7 = Live View Magnification Frame -
      Bit 8 = AF sensor +
      Bit 8 = AF sensor +
      Bit 9 = Starry Sky AF 0x0302 @@ -1477,6 +1486,11 @@ int16s[3]   +0x0308 +FocusBracketStepSize +int8u +  + 0x0400 FlashMode int16u @@ -1489,12 +1503,12 @@
      Bit 4 = Forced On
      Bit 5 = 2nd Curtain - + 0x0401 FlashExposureComp rational64s   - + 0x0403 FlashRemoteControl int16u @@ -1513,7 +1527,7 @@
      0x13 = Channel 3, High
      0x14 = Channel 4, High - + 0x0404 FlashControlMode int16u[n] @@ -1523,21 +1537,21 @@
      3 = TTL
      4 = Auto
      5 = Manual - + 0x0405 FlashIntensity rational64s[n] (3 or 4 values)
      'undef undef undef' = n/a
      'undef undef undef undef' = n/a (x4)
      - + 0x0406 ManualFlashStrength rational64s[n] (3 or 4 values)
      'undef undef undef' = n/a
      'undef undef undef undef' = n/a (x4)
      - + 0x0500 WhiteBalance2 int16u @@ -1566,22 +1580,22 @@
      514 = Custom WB 3
      515 = Custom WB 4 - + 0x0501 WhiteBalanceTemperature int16u   - + 0x0502 WhiteBalanceBracket int16s   - + 0x0503 CustomSaturation int16s[3]~ (3 numbers: 1. CS Value, 2. Min, 3. Max) - + 0x0504 ModifiedSaturation int16u @@ -1590,24 +1604,24 @@
      2 = CM2 (Green Enhance)
      3 = CM3 (Blue Enhance)
      4 = CM4 (Skin Tones) - + 0x0505 ContrastSetting int16s[3] (value, min, max) - + 0x0506 SharpnessSetting int16s[3] (value, min, max) - + 0x0507 ColorSpace int16u 0 = sRGB
      1 = Adobe RGB
      2 = Pro Photo RGB
      - + 0x0509 SceneMode int16u @@ -1640,10 +1654,10 @@
      30 = Candle
      31 = Available Light
      32 = Behind Glass -
      33 = My Mode   - 34 = Pet -
      35 = Underwater Wide1 -
      36 = Underwater Macro +
      33 = My Mode +
      34 = Pet +
      35 = Underwater Wide1   + 36 = Underwater Macro
      37 = Shoot & Select1
      38 = Shoot & Select2
      39 = High Key @@ -1668,9 +1682,14 @@
      66 = e-Portrait
      67 = Soft Background Shot
      142 = Hand-held Starlight -
      154 = HDR +
      154 = HDR +
      197 = Panning +
      203 = Light Trails +
      204 = Backlight HDR +
      205 = Silent +
      206 = Multi Focus Shot - + 0x050a NoiseReduction int16u @@ -1679,24 +1698,24 @@
      Bit 1 = Noise Filter
      Bit 2 = Noise Filter (ISO Boost)
      Bit 3 = Auto - + 0x050b DistortionCorrection int16u 0 = Off
      1 = On
      - + 0x050c ShadingCompensation int16u 0 = Off
      1 = On
      - + 0x050d CompressionFactor rational64u   - + 0x050f Gradation int16s[n] @@ -1709,7 +1728,7 @@
      [Value 3]
      0 = User-Selected
      1 = Auto-Override - + 0x0520 PictureMode int16u[n] @@ -1731,27 +1750,27 @@
      256 = Monotone
      512 = Sepia - + 0x0521 PictureModeSaturation int16s[3] (value, min, max) - + 0x0522 PictureModeHue? int16s   - + 0x0523 PictureModeContrast int16s[3] (value, min, max) - + 0x0524 PictureModeSharpness int16s[3] (value, min, max) - + 0x0525 PictureModeBWFilter int16s @@ -1763,7 +1782,7 @@
      4 = Red
      5 = Green - + 0x0526 PictureModeTone int16s @@ -1775,7 +1794,7 @@
      4 = Purple
      5 = Green - + 0x0527 NoiseFilter int16s[3] @@ -1784,7 +1803,7 @@
      '0 -2 1' = Standard
      '0 0 0' = n/a
      '1 -2 1' = High - + 0x0529 ArtFilter int16u[4] @@ -1828,7 +1847,7 @@
      40 = Partial Color II
      41 = Partial Color III - + 0x052c MagicFilter int16u[4] @@ -1872,7 +1891,7 @@
      40 = Partial Color II
      41 = Partial Color III - + 0x052d PictureModeEffect int16s[3] @@ -1880,7 +1899,7 @@
      '0 -1 1' = Standard
      '0 0 0' = n/a
      '1 -1 1' = High - + 0x052e ToneLevel yes @@ -1889,7 +1908,7 @@
      -31998 = Shadows
      -31997 = Midtones
      0 = 0 - + 0x052f ArtFilterEffect int16u[20] @@ -1949,12 +1968,12 @@ 0x3 = Red Color Filter
      0x4 = Green Color Filter - + 0x0532 ColorCreatorEffect int16s[6]   - + 0x0537 MonochromeProfileSettings int16s[6] @@ -1969,7 +1988,7 @@
      7 = Green Filter
      8 = Yellow-green Filter - + 0x0538 FilmGrainEffect int16s @@ -1977,17 +1996,17 @@
      1 = Low
      2 = Medium
      3 = High - + 0x0539 ColorProfileSettings int16s[14]   - + 0x053a MonochromeVignetting int16s (-5 to +5: positive is white vignetting, negative is black vignetting) - + 0x053b MonochromeColor int16s @@ -1999,17 +2018,17 @@
      4 = Purple
      5 = Green - + 0x0600 DriveMode int16u[n]~ (2, 3 or 5 numbers: 1. Mode, 2. Shot number, 3. Mode bits, 5. Shutter mode) - + 0x0601 PanoramaMode int16u~ (2 numbers: 1. Mode, 2. Shot number) - + 0x0603 ImageQuality2 int16u @@ -2018,7 +2037,7 @@
      3 = SHQ
      4 = RAW
      5 = SQ (5) - + 0x0604 ImageStabilization int32u @@ -2027,7 +2046,7 @@
      2 = On, Mode 2
      3 = On, Mode 3
      4 = On, Mode 4 - + 0x0804 StackedImage int32u[2] @@ -2041,49 +2060,38 @@
      '5 4' = HDR1
      '6 4' = HDR2
      '8 8' = Tripod high resolution -
      '9 2' = Focus-stacked (2 images) -
      '9 3' = Focus-stacked (3 images) -
      '9 4' = Focus-stacked (4 images) -
      '9 5' = Focus-stacked (5 images) -
      '9 6' = Focus-stacked (6 images) -
      '9 7' = Focus-stacked (7 images) -
      '9 8' = Focus-stacked (8 images) -
      '9 9' = Focus-stacked (9 images) -
      '9 10' = Focus-stacked (10 images) -
      '9 11' = Focus-stacked (11 images) -
      '9 12' = Focus-stacked (12 images) -
      '9 13' = Focus-stacked (13 images) -
      '9 14' = Focus-stacked (14 images) -
      '9 15' = Focus-stacked (15 images) -
      '11 16' = Hand-held high resolution +
      '11 16' = Hand-held high resolution +
      '1 *' = Live Composite (* images) +
      '4 *' = Live Time/Bulb (* images) +
      '9 *' = Focus-stacked (* images) - + 0x0900 ManometerPressure int16u   - + 0x0901 ManometerReading int32s[2]   - + 0x0902 ExtendedWBDetect int16u 0 = Off
      1 = On
      - + 0x0903 RollAngle int16s[2] (converted to degrees of clockwise camera rotation) - + 0x0904 PitchAngle int16s[2] (converted to degrees of upward camera tilt) - + 0x0908 DateTimeUTC string @@ -2638,6 +2646,7 @@ int16u[2] [Value 0]
      0 = Off +
      1 = Live Composite
      2 = On (2 frames)
      3 = On (3 frames)
      @@ -3417,6 +3426,11 @@ DateTime2 no   + +383 +LensModel +no + 

      Olympus scrn2 Tags

      @@ -3703,7 +3717,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 13, 2020 +
      Last revised Oct 16, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Other.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Other.html --- libimage-exiftool-perl-11.88/html/TagNames/Other.html 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Other.html 2021-08-12 12:24:16.000000000 +0000 @@ -0,0 +1,42 @@ + + + + +Other Tags + + + +

      Other PFM Tags

      +

      Tags extracted from Portable FloatMap images. See +http://www.pauldebevec.com/Research/HDR/PFM/ for the specification.

      +
      +
      + + + + + + + + + + + + + + + + + + + +
      Tag NameWritableValues / Notes
      ByteOrderno 
      ColorSpaceno'PF' = RGB +
      'Pf' = Monochrome
      ImageHeightno 
      ImageWidthno 
      + +
      +(This document generated automatically by Image::ExifTool::BuildTagLookup) +
      Last revised Aug 12, 2021 +

      <-- ExifTool Tag Names

      + + diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Panasonic.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Panasonic.html --- libimage-exiftool-perl-11.88/html/TagNames/Panasonic.html 2020-01-02 12:59:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Panasonic.html 2021-06-22 18:03:57.000000000 +0000 @@ -91,7 +91,9 @@
      '32 2' = 3-area (center)?
      '32 3' = 3-area (right)?
      '64 0' = Face Detect -
      '128 0' = Spot Focusing 2 +
      '64 1' = Face Detect (animal detect on) +
      '64 2' = Face Detect (animal detect off) +
      '128 0' = Pinpoint focus
      '240 0' = Tracking @@ -99,13 +101,16 @@ ImageStabilization int16u - -
      2 = On, Mode 1 + 2 = On, Optical
      3 = Off
      4 = On, Mode 2 -
      5 = Panning
        6 = On, Mode 3 +
      5 = On, Optical Panning +
      6 = On, Body-only +
      7 = On, Body-only Panning
      9 = Dual IS -
      11 = Dual2 IS
      +
      10 = Dual IS Panning +
      11 = Dual2 IS +
      12 = Dual2 IS Panning 0x001c @@ -198,7 +203,8 @@
      87 = Freeze Animal Motion
      88 = Clear Sports Shot
      89 = Monochrome -
      90 = Creative Control +
      90 = Creative Control +
      92 = Handheld Night Shot 0x0020 @@ -234,6 +240,12 @@ undef   +0x0027 +VideoFrameRate +int16u +(only valid for older models) +
      0 = n/a
      + 0x0028 ColorEffect int16u @@ -246,13 +258,13 @@
      6 = Happy
      8 = Vivid - + 0x0029 TimeSincePowerOn int32u (time in 1/100 s from when the camera was powered on to when the image is written to memory card) - + 0x002a BurstMode int16u @@ -260,16 +272,18 @@ 0 = Off
      1 = On
      2 = Auto Exposure Bracketing (AEB) +
      3 = Focus Bracketing
      4 = Unlimited
      8 = White Balance Bracketing -
      17 = On (with flash) +
      17 = On (with flash) +
      18 = Aperture Bracketing - + 0x002b SequenceNumber int32u   - + 0x002c ContrastMode int16u @@ -279,9 +293,13 @@ 0x0 = Normal
      0x1 = Low
      0x2 = High +
      0x5 = Normal 2
      0x6 = Medium Low -
      0x7 = Medium High   - 0xd = High Dynamic +
      0x7 = Medium High +
      0xd = High Dynamic +
      0x18 = Dynamic Range (film-like) +
      0x2e = Match Filter Effects Toy +
      0x37 = Match Photo Style L. Monochrome
      0x100 = Low
      0x110 = Normal
      0x120 = High @@ -335,7 +353,7 @@
      2 = +2
      5 = -1
      6 = +1 - + 0x002d NoiseReduction int16u @@ -353,15 +371,21 @@
      65534 = -2
      65535 = -1 - + 0x002e SelfTimer int16u -1 = Off + + - +
      4 = 10 s / 3 pictures +
      258 = 2 s after shutter pressed +
      266 = 10 s after shutter pressed +
      778 = 3 photos after 10 s
      0 = Off (0) +
      1 = Off
      2 = 10 s
      3 = 2 s -
      4 = 10 s / 3 pictures
      + + 0x0030 Rotation int16u @@ -369,7 +393,7 @@
      3 = Rotate 180
      6 = Rotate 90 CW
      8 = Rotate 270 CW
      - + 0x0031 AFAssistLamp int16u @@ -377,25 +401,25 @@
      2 = Enabled but Not Used
      3 = Disabled but Required
      4 = Disabled and Not Required - + 0x0032 ColorMode int16u 0 = Normal
      1 = Natural
      2 = Vivid
      - + 0x0033 BabyAge string (or pet age) - + 0x0034 OpticalZoomMode int16u 1 = Standard
      2 = Extended
      - + 0x0035 ConversionLens int16u @@ -403,11 +427,24 @@
      2 = Wide
      3 = Telephoto
      4 = Macro - + 0x0036 TravelDay int16u   + +0x0038 +BatteryLevel +int16u + + +
      1 = Full +
      2 = Medium +
      3 = Low +
      4 = Near Empty
        7 = Near Full +
      8 = Medium Low +
      256 = n/a
      + 0x0039 Contrast @@ -691,10 +728,14 @@ 0 = Auto
      1 = Standard or Custom
      2 = Vivid -
      3 = Natural   - 4 = Monochrome -
      5 = Scenery -
      6 = Portrait +
      3 = Natural +
      4 = Monochrome +
      5 = Scenery   + 6 = Portrait +
      8 = Cinelike D +
      9 = Cinelike V +
      11 = L. Monochrome +
      15 = L. Monochrome D 0x008a @@ -769,7 +810,8 @@ int8u 0 = Off
      1 = Time Lapse -
      2 = Stop-motion Animation
      +
      2 = Stop-motion Animation +
      3 = Focus Bracketing 0x009d InternalNDFilter @@ -796,23 +838,60 @@
      1 = Electronic
      2 = Hybrid +0x00a1 +FilterEffect +rational64u[0.5] + +
      '0 0' = Expressive +
      '0 2' = Retro +
      '0 4' = High Key +
      '0 8' = Sepia +
      '0 16' = High Dynamic +
      '0 32' = Miniature Effect +
      '0 1024' = Dynamic Monochrome +
      '0 1048576' = Sunshine +
      '0 134217728' = Silky Monochrome +
      '0 16384' = One Point Color +
      '0 2048' = Soft Focus +
      '0 2097152' = Bleach Bypass +
      '0 256' = Low Key +
      '0 32768' = Star Filter +
      '0 33554432' = Monochrome +
      '0 4096' = Impressive Art +
      '0 4194304' = Toy Pop +
      '0 512' = Toy Effect +
      '0 524288' = Old Days +
      '0 67108864' = Rough Monochrome +
      '0 8192' = Cross Process +
      '0 8388608' = Fantasy
      + + 0x00a3 ClearRetouchValue rational64u   - + 0x00a7 OutputLUT yes (2-column by 432-row binary lookup table of unsigned short values for converting to 16-bit output (1st column) from 14 bits (2nd column) with camera contrast) - + 0x00ab TouchAE int16u 0 = Off
      1 = On
      + +0x00ac +MonochromeFilterEffect +int16u +0 = Off +
      1 = Yellow +
      2 = Orange +
      3 = Red +
      4 = Green
      0x00ad HighlightShadow @@ -824,19 +903,25 @@ string   +0x00b3 +VideoBurstResolution +int16u +1 = Off or 4K +
      4 = 6K
      + 0x00b4 MultiExposure int16u 0 = n/a
      1 = Off
      2 = On
      - + 0x00b9 RedEyeRemoval int16u 0 = Off
      1 = On
      - + 0x00bb VideoBurstMode int32u @@ -846,24 +931,79 @@
      0x18 = 4K Burst
      0x28 = 4K Burst (Start/Stop)
      0x48 = 4K Pre-burst -
      0x108 = Loop Recording +
      0x108 = Loop Recording +
      0x408 = Focus Stacking +
      0x810 = 6K Burst +
      0x820 = 6K Burst (Start/Stop) +
      0x1001 = High Resolution Mode - + 0x00bc DiffractionCorrection int16u 0 = Off
      1 = Auto
      + +0x00bd +FocusBracket +int16u +(positive is further, negative is closer) + +0x00be +LongExposureNRUsed +int16u +0 = No +
      1 = Yes
      + +0x00bf +PostFocusMerging +int32u[2] +'0 0' = Post Focus Auto Merging or None + +0x00c1 +VideoPreburst +int16u +0 = No +
      1 = 4K or 6K
      + +0x00c4 +LensTypeMake +int16u +  + +0x00c5 +LensTypeModel +int16u +  + +0x00ca +SensorType +int16u +0 = Multi-aspect +
      1 = Standard
      0x00d1 ISO int32u   +0x00d2 +MonochromeGrainEffect +int16u +0 = Off +
      1 = Low +
      2 = Standard +
      3 = High
      + 0x00d6 NoiseReductionStrength rational64s   + +0x00e4 +LensTypeModel +int16u +  0x0e00 PrintIM @@ -923,9 +1063,9 @@
      36 = High Speed Continuous Shooting
      37 = Intelligent Auto
      39 = Multi-aspect -
      41 = Transform   - 42 = Flash Burst -
      43 = Pin Hole +
      41 = Transform +
      42 = Flash Burst   + 43 = Pin Hole
      44 = Film Grain
      45 = My Color
      46 = Photo Frame @@ -963,7 +1103,8 @@
      87 = Freeze Animal Motion
      88 = Clear Sports Shot
      89 = Monochrome -
      90 = Creative Control +
      90 = Creative Control +
      92 = Handheld Night Shot 0x8002 @@ -1702,7 +1843,7 @@

      Panasonic Leica9 Tags

      -

      This information is written by the Leica S (Typ 007).

      +

      This information is written by the Leica S (Typ 007) and M10 models.

      @@ -1723,6 +1864,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      MeasuredLV rational64s  
      0x034cUserProfilestring 
      0x0359ISOSelectedint32s0 = Auto
      0x035aFNumberint32s 
      0x035bCorrelatedColorTempint16u 
      0x035cColorTintint16s 
      0x035dWhitePointrational64u[2] 

      Panasonic Type2 Tags

      @@ -1868,68 +2039,78 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + +
      ValueAdvancedSceneModeValueAdvancedSceneMode
      '0 1'= Off'59 5'= High Dynamic'59 1'= Expressive
      '2 2'= Outdoor Portrait'59 6'= Miniature'59 2'= Retro
      '2 3'= Indoor Portrait'59 9'= Low Key'59 3'= High Key
      '2 4'= Creative Portrait'59 10'= Toy Effect'59 4'= Sepia
      '3 2'= Nature'59 11'= Dynamic Monochrome'59 5'= High Dynamic
      '3 3'= Architecture'59 12'= Soft'59 6'= Miniature
      '3 4'= Creative Scenery'66 1'= Impressive Art'59 9'= Low Key
      '4 2'= Outdoor Sports'66 2'= Cross Process'59 10'= Toy Effect
      '4 3'= Indoor Sports'66 3'= Color Select'59 11'= Dynamic Monochrome
      '4 4'= Creative Sports'66 4'= Star'59 12'= Soft
      '9 2'= Flower'90 3'= Old Days'66 1'= Impressive Art
      '9 3'= Objects'90 4'= Sunshine'66 2'= Cross Process
      '9 4'= Creative Macro'90 5'= Bleach Bypass'66 3'= Color Select
      '18 1'= High Sensitivity'66 4'= Star
      '20 1'= Fireworks'90 3'= Old Days
      '21 2'= Illuminations'90 6'= Toy Pop'90 4'= Sunshine
      '21 4'= Creative Night Scenery'90 5'= Bleach Bypass
      '26 1'= High-speed Burst (shot 1)'90 6'= Toy Pop
      '27 1'= High-speed Burst (shot 2) '90 7'= Fantasy
      '45 2'= Cinema
      '29 1'= Snow '90 8'= Monochrome
      '45 7'= Expressive
      '30 1'= Starry Sky '90 9'= Rough Monochrome
      '45 8'= Retro
      '31 1'= Beach '90 10'= Silky Monochrome
      '45 9'= Pure
      '36 1'= High-speed Burst (shot 3) '92 1'= Handheld Night Shot
      '45 10'= Elegant
      '39 1'= Aerial Photo / Underwater / Multi-aspect 'DMC-TZ40 90 1'= Expressive
      '45 12'= Monochrome
      '45 2'= Cinema 'DMC-TZ40 90 2'= Retro
      '45 13'= Dynamic Art
      '45 7'= Expressive 'DMC-TZ40 90 3'= High Key
      '45 14'= Silhouette
      '45 8'= Retro 'DMC-TZ40 90 4'= Sepia
      '51 2'= HDR Art
      '45 9'= Pure 'DMC-TZ40 90 5'= High Dynamic
      '51 3'= HDR B&W
      '45 10'= Elegant 'DMC-TZ40 90 6'= Miniature
      '59 1'= Expressive
      '45 12'= Monochrome 'DMC-TZ40 90 9'= Low Key
      '59 2'= Retro
      '45 13'= Dynamic Art 'DMC-TZ40 90 10'= Toy Effect
      '59 3'= High Key
      '45 14'= Silhouette 'DMC-TZ40 90 11'= Dynamic Monochrome
      '59 4'= Sepia
      '51 2'= HDR Art 'DMC-TZ40 90 12'= Soft
      '51 3'= HDR B&W  

      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Jan 2, 2020 +
      Last revised Jun 22, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/PanasonicRaw.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/PanasonicRaw.html --- libimage-exiftool-perl-11.88/html/TagNames/PanasonicRaw.html 2019-12-11 13:55:33.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/PanasonicRaw.html 2020-07-27 19:40:34.000000000 +0000 @@ -559,11 +559,32 @@ no   +0x1301 +ApertureValue +no +  + +0x1302 +ShutterSpeedValue +no +  + +0x1303 +SensitivityValue +no +  + 0x1305 HighISOMode no 1 = On
      2 = Off
      + +0x1412 +FacesDetected +no +0 = No +
      1 = Yes
      0x3200 WB_CFA0_LevelDaylight @@ -644,7 +665,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Dec 11, 2019 +
      Last revised Jul 27, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/PDF.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/PDF.html --- libimage-exiftool-perl-11.88/html/TagNames/PDF.html 2019-10-02 13:09:20.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/PDF.html 2021-10-27 16:04:45.000000000 +0000 @@ -457,35 +457,27 @@ Tag IDTag Name WritableValues / Notes +'CS0' +CS0 +- +--> PDF DefaultRGB Tags + 'Cs1' Cs1 - ---> PDF Cs1 Tags - +--> PDF DefaultRGB Tags + 'DefaultCMYK' DefaultCMYK - --> PDF DefaultRGB Tags - + 'DefaultRGB' DefaultRGB - --> PDF DefaultRGB Tags -

      PDF Cs1 Tags

      -
      -
      - - - - - - - - -
      Tag IDTag NameWritableValues / Notes
      '_stream'_stream---> ICC_Profile Tags
      -

      PDF DefaultRGB Tags

      @@ -748,7 +740,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Sep 26, 2019 +
      Last revised Oct 27, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Pentax.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Pentax.html --- libimage-exiftool-perl-11.88/html/TagNames/Pentax.html 2020-01-28 15:16:30.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Pentax.html 2022-01-12 22:57:15.000000000 +0000 @@ -1044,7 +1044,8 @@
      16 = 16 (K-1)
      17 = 17 (K-70)
      18 = 18 (KP) -
      19 = 19 (GR III)
      +
      19 = 19 (GR III) +
      20 = 20 (K-3III) 0x0067 @@ -1312,6 +1313,12 @@
      8 = 2 EV
      12 = 3 EV +0x0087 +ShutterType +int8u +0 = Normal +
      1 = Electronic
      + 0x0088 NeutralDensityFilter int8u[n] @@ -1319,57 +1326,59 @@
      1 = On
      '0 2' = Off (0 2)
      '1 2' = On (1 2) - + 0x008b ISO int32u   - + 0x0092 IntervalShooting int16u[2] (2 numbers: 1. Shot number 2. Total number of shots)
      '0 0' = Off
      - + 0x0095 -SkinToneCorrection -int8s[2] +SkinToneCorrection +
      SkinToneCorrection +int8s[2]
      int8s[3] '0 0' = Off
      '1 1' = On (type 1) -
      '1 2' = On (type 2)
      - +
      '1 2' = On (type 2) +
      '0 0 0' = Off + 0x0096 ClarityControl int8s[2] '0 0' = Off - + 0x0200 BlackPoint int16u[4]   - + 0x0201 WhitePoint int16u[4]   - + 0x0203 ColorMatrixA int16s[9]   - + 0x0204 ColorMatrixB int16s[9]   - + 0x0205 CameraSettings
      CameraSettingsUnknown -
      - --> Pentax CameraSettings Tags
      --> Pentax CameraSettingsUnknown Tags - + 0x0206 AEInfo
      AEInfo2 @@ -1380,7 +1389,7 @@
      --> Pentax AEInfo2 Tags
      --> Pentax AEInfo3 Tags
      --> Pentax AEInfoUnknown Tags - + 0x0207 LensInfo - @@ -1389,219 +1398,230 @@
      --> Pentax LensInfo3 Tags
      --> Pentax LensInfo4 Tags
      --> Pentax LensInfo5 Tags - + 0x0208 FlashInfo
      FlashInfoUnknown -
      - --> Pentax FlashInfo Tags
      --> Pentax FlashInfoUnknown Tags - + 0x0209 AEMeteringSegments int8u[n] (measurements from each of the 16 AE metering segments for models such as the K10D, 77 metering segments for models such as the K-5, and 4050 metering segments for the K-3, converted to LV) - + 0x020a FlashMeteringSegments int8u[n]   - + 0x020b SlaveFlashMeteringSegments int8u[n] (used in wireless control mode) - + 0x020d WB_RGGBLevelsDaylight int16u[4]   - + 0x020e WB_RGGBLevelsShade int16u[4]   - + 0x020f WB_RGGBLevelsCloudy int16u[4]   - + 0x0210 WB_RGGBLevelsTungsten int16u[4]   - + 0x0211 WB_RGGBLevelsFluorescentD int16u[4]   - + 0x0212 WB_RGGBLevelsFluorescentN int16u[4]   - + 0x0213 WB_RGGBLevelsFluorescentW int16u[4]   - + 0x0214 WB_RGGBLevelsFlash int16u[4]   - + 0x0215 CameraInfo - --> Pentax CameraInfo Tags - + 0x0216 BatteryInfo - --> Pentax BatteryInfo Tags - + 0x021b SaturationInfo? no (only in PEF and DNG images) + +0x021c +ColorMatrixA2 +undef[18] +  +0x021d +ColorMatrixB2 +undef[18] +  + 0x021f AFInfo - --> Pentax AFInfo Tags - + 0x0220 HuffmanTable? no (found in K10D, K20D and K2000 PEF images) - + 0x0221 KelvinWB - --> Pentax KelvinWB Tags - + 0x0222 ColorInfo - --> Pentax ColorInfo Tags - + 0x0224 EVStepInfo - --> Pentax EVStepInfo Tags - + 0x0226 ShotInfo - --> Pentax ShotInfo Tags - + 0x0227 FacePos - --> Pentax FacePos Tags - + 0x0228 FaceSize - --> Pentax FaceSize Tags - + 0x0229 SerialNumber string (left blank by some cameras) - + 0x022a FilterInfo - ---> Pentax FilterInfo Tags - +--> Pentax FilterInfo Tags +
      --> Pentax FilterInfo Tags + 0x022b LevelInfo - --> Pentax LevelInfo Tags - + 0x022d WBLevels - --> Pentax WBLevels Tags - + 0x022e Artist string   - + 0x022f Copyright string   - + 0x0230 FirmwareVersion string (only in videos) - + 0x0231 ContrastDetectAFArea int16u[4] (AF area of the most recent contrast-detect focus operation. Coordinates are left, top, width and height in a 720x480 frame, with Y downwards) - + 0x0235 CrossProcessParams undef[10]   - + 0x0239 LensInfoQ - --> Pentax LensInfoQ Tags - + 0x023f Model string   - + 0x0243 PixelShiftInfo - --> Pentax PixelShiftInfo Tags - + 0x0245 AFPointInfo - --> Pentax AFPointInfo Tags - + 0x03fe DataDump no   - + 0x03ff TempInfo
      UnknownInfo -
      - --> Pentax TempInfo Tags
      --> Pentax UnknownInfo Tags - + 0x0402 ToneCurve yes~   - + 0x0403 ToneCurves yes~   - + 0x0405 UnknownBlock? undef (large unknown data block in PEF/DNG images but not JPG images) - + 0x0e00 PrintIM - @@ -1750,10 +1770,10 @@ 0x13240= K-1 Mark II 0x12c1e= K10D 0x12e3a= Optio I-10 -   +0x13254= K-3 Mark III 0x12c20= Samsung GX10 0x12e44= Optio H90 -   +0x13290= WG-70

      Pentax City Values

      @@ -2096,6 +2116,7 @@ '8 21'= Sigma 17-50mm F2.8 EX DC OS HSM '8 22'= Sigma 85mm F1.4 EX DG HSM '8 23'= Sigma 70-200mm F2.8 APO EX DG OS HSM +'8 24'= Sigma 17-70mm F2.8-4 DC Macro OS HSM '8 25'= Sigma 17-50mm F2.8 EX DC HSM '8 27'= Sigma 18-200mm F3.5-6.3 II DC HSM '8 28'= Sigma 18-250mm F3.5-6.3 DC Macro HSM @@ -2112,6 +2133,9 @@ '8 63'= HD PENTAX-D FA 15-30mm F2.8 ED SDM WR '8 64'= HD PENTAX-D FA* 50mm F1.4 SDM AW '8 65'= HD PENTAX-D FA 70-210mm F4 ED SDM WR +'8 66'= HD PENTAX-D FA 85mm F1.4 ED SDM AW +'8 67'= HD PENTAX-D FA 21mm F2.4 ED Limited DC WR +'8 195'= HD PENTAX DA* 16-50mm F2.8 ED PLM AW '8 196'= HD PENTAX-DA* 11-18mm F2.8 ED DC AW '8 197'= HD PENTAX-DA 55-300mm F4.5-6.3 ED PLM WR RE '8 198'= smc PENTAX-DA L 18-50mm F4-5.6 DC WR RE @@ -4894,7 +4918,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Jan 28, 2020 +
      Last revised Jan 12, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/PhaseOne.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/PhaseOne.html --- libimage-exiftool-perl-11.88/html/TagNames/PhaseOne.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/PhaseOne.html 2021-04-13 14:31:47.000000000 +0000 @@ -76,11 +76,14 @@ 0x010e RawFormat int32s -1 = RAW 1 + + +
      3 = IIQ L +
      1 = RAW 1
      2 = RAW 2 -
      3 = IIQ L -
      5 = IIQ S -
      6 = IIQ Sv2
        5 = IIQ S +
      6 = IIQ Sv2 +
      8 = IIQ L16
      + 0x010f RawData @@ -258,7 +261,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Apr 9, 2019 +
      Last revised Apr 13, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/PNG.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/PNG.html --- libimage-exiftool-perl-11.88/html/TagNames/PNG.html 2020-02-14 13:02:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/PNG.html 2022-01-12 22:57:15.000000000 +0000 @@ -79,7 +79,7 @@ 'gAMA' Gamma -no +yes! (ExifTool reports the gamma for decoding the image, which is consistent with the EXIF convention, but is the inverse of the stored encoding gamma) @@ -107,92 +107,100 @@ ICC_Profile - --> ICC_Profile Tags -
      (this is where ExifTool will write a new ICC_Profile) +
      (this is where ExifTool will write a new ICC_Profile. When creating a new +ICC_Profile, the SRGBRendering tag should be deleted if it exists) 'iCCP-name' ProfileName -no -(not a real tag ID, this tag represents the iCCP profile name) +yes +(not a real tag ID, this tag represents the iCCP profile name, and may only +be written when the ICC_Profile is written) +'iDOT' +AppleDataOffsets +no +  + 'iTXt' InternationalText - --> PNG TextualData Tags - + 'oFFs' ImageOffset no   - + 'pCAL' PixelCalibration no   - + 'pHYs' PhysicalPixel - --> PNG PhysicalPixel Tags - + 'sBIT' SignificantBits no   - + 'sCAL' SubjectScale - --> PNG SubjectScale Tags - + 'sPLT' SuggestedPalette no   - + 'sRGB' SRGBRendering -no -0 = Perceptual +yes! +(this chunk should not be present if an iCCP chunk exists) +
      0 = Perceptual
      1 = Relative Colorimetric
      2 = Saturation
      3 = Absolute Colorimetric
      - + 'sTER' StereoImage - --> PNG StereoImage Tags - + 'tEXt' TextualData - --> PNG TextualData Tags - + 'tIME' ModifyDate yes   - + 'tRNS' Transparency no   - + 'tXMP' XMP - --> XMP Tags
      (obsolete location specified by a September 2001 XMP draft) - + 'vpAg' VirtualPage - --> PNG VirtualPage Tags - + 'zTXt' CompressedText - --> PNG TextualData Tags - + 'zxIf' zxIf - @@ -330,7 +338,9 @@ (unless the Latin character set is used) are written as iTXt, and compressed if the Compress option is used and Compress::Zlib is available. Raw profile information is always created as compressed zTXt if Compress::Zlib is -available, or tEXt otherwise. Standard XMP is written as uncompressed iTXt.

      +available, or tEXt otherwise. Standard XMP is written as uncompressed iTXt. +User-defined tags may set an 'iTXt' flag in the tag definition to be written +only as iTXt.

      Alternate languages are accessed by suffixing the tag name with a '-', followed by an RFC 3066 language code (eg. "PNG:Comment-fr", or @@ -590,7 +600,7 @@


      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 14, 2020 +
      Last revised Jan 12, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/QuickTime.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/QuickTime.html --- libimage-exiftool-perl-11.88/html/TagNames/QuickTime.html 2020-02-04 14:40:10.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/QuickTime.html 2021-12-08 13:06:37.000000000 +0000 @@ -10,7 +10,7 @@

      QuickTime Tags

      The QuickTime format is used for many different types of audio, video and -image files (most notably, MOV/MP4 videos and HEIC/CR3 images). Exiftool +image files (most notably, MOV/MP4 videos and HEIC/CR3 images). ExifTool extracts standard meta information and a variety of audio, video and image parameters, as well as proprietary information written by many camera models. Tags with a question mark after their name are not extracted unless @@ -25,11 +25,13 @@ finally in Keys, but this order may be changed by setting the PREFERRED level of the appropriate table in the config file (see -example.config in the full distribution for -an example). ExifTool currently writes only top-level metadata in -QuickTime-based files; it extracts other track-specific and timed -metadata, but can not yet edit tags in these locations (with the -exception of track-level date/time tags).

      +example.config in the full distribution for an +example). Note that some tags with the same name but different ID's may +exist in the same location, but the family 7 group names may be used to +differentiate these. ExifTool currently writes only top-level metadata in +QuickTime-based files; it extracts other track-specific and timed metadata, +but can not yet edit tags in these locations (with the exception of +track-level date/time tags).

      Alternate language tags may be accessed for ItemList and @@ -39,19 +41,29 @@ "ItemList::Artist-deu-DE"). Most UserData tags support a language code, but without a country code. If no language code is specified -when writing, alternate languages for the tag are deleted. Use the "und" -language code to write the default language without deleting alternate -languages. Note that "eng" is treated as a default language when reading, -but not when writing.

      +when writing, the default language is written and alternate languages for +the tag are deleted. Use the "und" language code to write the default +language without deleting alternate languages. Note that "eng" is treated +as a default language when reading, but not when writing.

      According to the specification, integer-format QuickTime date/time tags should be stored as UTC. Unfortunately, digital cameras often store local time values instead (presumably because they don't know the time zone). For this reason, by default ExifTool does not assume a time zone for these -values. However, if the QuickTimeUTC API option is set, then ExifTool will +values. However, if the API QuickTimeUTC option is set, then ExifTool will assume these values are properly stored as UTC, and will convert them to local time when extracting.

      +

      When writing string-based date/time tags, the system time zone is added if +the PrintConv option is enabled and no time zone is specified. This is +because Apple software may display crazy values if the time zone is missing +for some tags.

      + +

      By default ExifTool will remove null padding from some QuickTime containers +in Canon CR3 files when writing, but the +QuickTimePad option may be used to preserve +the original size by padding with nulls if necessary.

      +

      See https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/ for the official specification. @@ -62,110 +74,121 @@ Tag IDTag Name WritableValues / Notes +'GPS ' +GPSDataList2? +no +  + 'IDIT' DateTimeOriginal string   - + 'PICT' PreviewPICT no   - + '_htc' HTCInfo - --> QuickTime HTCInfo Tags - + 'ardt' ARDroneFile no   - + 'frea' Kodak_frea - --> Kodak frea Tags - + 'free' KodakFree
      Pittasoft +
      ThumbnailImage
      Free? --
      -
      no +-
      -
      no
      no --> Kodak Free Tags
      --> QuickTime Pittasoft Tags - + 'ftyp' FileType - --> QuickTime FileType Tags - + 'gps0' GPSTrack - --> QuickTime Stream Tags - + 'gsen' GSensor - --> QuickTime Stream Tags - + 'junk' Junk? no   - + 'mdat' MediaData? no   - + 'mdat-offset' MediaDataOffset no   - + 'mdat-size' MediaDataSize no (not a real tag ID, this tag represents the size of the 'mdat' data in bytes and is used in the AvgBitrate calculation) - + 'meco' OtherMeta - --> QuickTime OtherMeta Tags - + 'meta' Meta - --> QuickTime Meta Tags - + 'moof' MovieFragment - --> QuickTime MovieFragment Tags - + 'moov' Movie - --> QuickTime Movie Tags - + 'pict' PreviewPICT no   - + 'pnot' Preview - --> QuickTime Preview Tags - + 'prrt' ARDroneTelemetry no (telemetry information for each video frame: status1, status2, time, pitch, roll, yaw, speed, altitude) + +'sefd' +SamsungTrailer +- +--> Samsung Trailer Tags 'skip' CanonSkip @@ -174,34 +197,43 @@ -
      no
      no --> Canon Skip Tags -'thum' +'thm ' ThumbnailImage no   -'udat' -GPSLog +'thum' +ThumbnailImage no   +'udat' +GPSLog +no +(parsed to extract GPS separately when ExtractEmbedded is used) + 'udta' UserData - --> FLIR UserData Tags - + 'uuid' XMP
      UUID-PROF
      UUID-Flip
      UUID-Canon2 +
      SensorData +
      SensorData
      PreviewImage
      UUID-Unknown? --
      -
      -
      -
      no
      no +-
      -
      -
      -
      -
      no
      no
      no --> XMP Tags
      --> QuickTime Profile Tags
      --> QuickTime Flip Tags -
      --> Canon uuid2 Tags - +
      --> Canon uuid2 Tags +
      --> QuickTime Tags360Fly Tags +
      (raw 360Fly sensor data without ExtractEmbedded option) + 'wide' Wide? no @@ -267,10 +299,10 @@

      QuickTime Stream Tags

      -

      Timed metadata extracted from QuickTime media data and some AVI videos when -the ExtractEmbedded option is used. Although most of these tags are -combined into the single table below, ExifTool currently reads 37 different -formats of timed GPS metadata from video files.

      +

      The tags below are extracted from timed metadata in QuickTime and other +formats of video files when the ExtractEmbedded option is used. Although +most of these tags are combined into the single table below, ExifTool +currently reads 59 different formats of timed GPS metadata from video files.

      @@ -347,7 +379,7 @@ - + @@ -361,7 +393,7 @@ - + @@ -384,19 +416,27 @@ + + + + - + - + + + + + @@ -438,6 +478,10 @@ + + + + - + + + + + - + - + @@ -741,6 +795,16 @@
      GPSSpeed no 
      (in km/h unless GPSSpeedRef says otherwise)
      GPSSpeedRef no
      GPSTrack no 
      (relative to true north unless GPSTrackRef says otherwise)
      GPSTrackRef nono  
      KiloCaloriesno 
      PreviewInfo - --> QuickTime PreviewInfo Tags
      RVMI_gReV
      RVMI_sReV
      -
      -
      --> QuickTime RVMI_gReV Tags
      --> QuickTime RVMI_sReV Tags
      RawGSensor no  
      SampleDateTimeno 
      SampleDuration nono  
      VideoTimeStampno 
      camm0
      camm1
      camm2 @@ -455,14 +499,24 @@
      --> QuickTime camm5 Tags
      --> QuickTime camm6 Tags
      --> QuickTime camm7 Tags
      fdsc - --> GoPro fdsc Tags
      gpmd_Kingslim +
      gpmd_Rove +
      gpmd_FMAS +
      gpmd_GoPro
      -
      -
      -
      -
      --> QuickTime Stream Tags +
      --> QuickTime Stream Tags +
      --> QuickTime Stream Tags +
      --> GoPro GPMF Tags
      gpmdmarl ---> GoPro GPMF Tags
      --> QuickTime marl Tags
      mebx -(microtesla)
      +

      QuickTime marl Tags

      +

      Tags extracted from the marl ctbx timed metadata of GM cars.

      +
      +
      + + + + +
      Tag IDTag NameWritableValues / Notes
      [no tags known]
      +

      QuickTime Keys Tags

      This directory contains a list of key names which are used to decode tags written by the "mdta" handler. Also in this table are a few tags found in @@ -763,281 +827,316 @@ 'Encoded_With' EncodedWith -string +yes   'album' Album -string +yes   +'apple.photos.variation-identifier' +ApplePhotosVariationIdentifier +int64s +  + 'artist' Artist -string +yes   - + 'artwork' Artwork -string +yes   - + 'author' Author -string +yes   - + 'camera.framereadouttimeinmicroseconds' FrameReadoutTime -string +yes   - + 'camera.identifier' CameraIdentifier -string +yes   - + 'collection.user' UserCollection -string +yes   - + 'com.android.version' AndroidVersion -string +yes   - + 'com.apple.photos.captureMode' CaptureMode -string +yes   - + 'comment' Comment -string +yes   - + 'copyright' Copyright -string +yes   - + 'creationdate' CreationDate -string +yes   - + 'description' Description -string +yes   - + 'detected-face' FaceInfo - --> QuickTime FaceInfo Tags - + 'detected-face.bounds' DetectedFaceBounds no   - + 'detected-face.face-id' DetectedFaceID no   - + 'detected-face.roll-angle' DetectedFaceRollAngle no   - + 'detected-face.yaw-angle' DetectedFaceYawAngle no   - + 'direction.facing' CameraDirection -string +yes   - + 'direction.motion' CameraMotion -string +yes   - + 'director' Director -string +yes   - + 'displayname' DisplayName -string +yes   - + 'genre' Genre -string +yes   - + 'information' Information -string +yes   - + 'keywords' Keywords -string +yes   - + 'live-photo-info' LivePhotoInfo no   + +'live-photo.auto' +LivePhotoAuto +int8u +  + +'live-photo.vitality-score' +LivePhotoVitalityScore +float +  + +'live-photo.vitality-scoring-version' +LivePhotoVitalityScoringVersion +int64s +  'location.ISO6709' GPSCoordinates -string +yes +(Google Photos may ignore this if the coorinates have more than 5 digits +after the decimal) + +'location.accuracy.horizontal' +LocationAccuracyHorizontal +yes   - + 'location.body' LocationBody -string +yes   - + 'location.date' LocationDate -string +yes   - + 'location.name' LocationName -string +yes   - + 'location.note' LocationNote -string +yes   - + 'location.role' LocationRole -string +yes 0 = Shooting Location
      1 = Real Location
      2 = Fictional Location
      - + 'make' Make -string +yes   - + 'model' Model -string +yes   - + 'player.movie.audio.balance' Balance -string +yes   - + 'player.movie.audio.bass' Bass -string +yes   - + 'player.movie.audio.gain' AudioGain -string +yes   - + 'player.movie.audio.mute' Mute int8u 0 = Off
      1 = On
      - + 'player.movie.audio.pitchshift' PitchShift -string +yes   - + 'player.movie.audio.treble' -Trebel -string +Treble +yes   - + 'player.movie.visual.brightness' Brightness -string +yes   - + 'player.movie.visual.color' Color -string +yes   - + 'player.movie.visual.contrast' Contrast -string +yes   - + 'player.movie.visual.tint' Tint -string +yes   - + 'player.version' PlayerVersion -string +yes   - + 'producer' Producer -string +yes   - + 'publisher' Publisher -string +yes   - + 'rating.user' UserRating -string +yes   - + 'software' Software -string +yes   - + 'still-image-time' StillImageTime no (this tag always has a value of -1; the time of the still image is obtained from the associated SampleTime) - + 'title' Title -string +yes   - + 'version' Version -string +yes   - + 'video-orientation' VideoOrientation no -  - + +
      1 = Horizontal (normal) +
      2 = Mirror horizontal +
      3 = Rotate 180 +
      4 = Mirror vertical +
      5 = Mirror horizontal and rotate 270 CW +
      6 = Rotate 90 CW +
      7 = Mirror horizontal and rotate 90 CW +
      8 = Rotate 270 CW
      + + 'year' Year -string +yes   @@ -1068,7 +1167,8 @@

      QuickTime tx3g Tags

      -

      Tags extracted from the tx3g sbtl timed metadata of Yuneec drones.

      +

      Tags extracted from the tx3g sbtl timed metadata of Yuneec drones, and +subtitle text in some other videos.

      @@ -1080,40 +1180,50 @@ + + + + + - + - + - + - + - + - + + + + + + @@ -1199,10 +1309,18 @@
      'dvr1' = DVB (.DVB) over RTP
      'dvt1' = DVB (.DVB) over MPEG-2 Transport Stream
      'heic' = High Efficiency Image Format HEVC still image (.HEIC) +
      'heix' = High Efficiency Image Format still image (.HEIF)
      'hevc' = High Efficiency Image Format HEVC sequence (.HEICS)
      'isc2' = ISMACryp 2.0 Encrypted File
      'iso2' = MP4 Base Media v2 [ISO 14496-12:2005] -
      'isom' = MP4 Base Media v1 [IS0 14496-12:2003] +
      'iso3' = MP4 Base Media v3 +
      'iso4' = MP4 Base Media v4 +
      'iso5' = MP4 Base Media v5 +
      'iso6' = MP4 Base Media v6 +
      'iso7' = MP4 Base Media v7 +
      'iso8' = MP4 Base Media v8 +
      'iso9' = MP4 Base Media v9 +
      'isom' = MP4 Base Media v1 [IS0 14496-12:2003]
      'jpm ' = JPEG 2000 Compound Image (.JPM) [ISO 15444-6]
      'jpx ' = JPEG 2000 with extensions (.JPX) [ISO 15444-2]
      'mif1' = High Efficiency Image Format still image (.HEIF) @@ -1289,51 +1407,62 @@ + + + + + - + - + - + - + - + - + - + - + + + + + + @@ -1481,9 +1610,9 @@ 3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2 country code to the tag name (eg. "ItemList:Title-fra" or "ItemList::Title-fra-FR"). When creating a new Meta box to contain the -ItemList directory, by default ExifTool does not specify a -Handler, but the -API QuickTimeHandler option may be used to include an 'mdir' Handler box.

      +ItemList directory, by default ExifTool adds an 'mdir' (Metadata) Handler +box because Apple software may ignore ItemList tags otherwise, but the API +QuickTimeHandler option may be set to 0 to avoid this.

      no  
      'DateTime'DateTimeno 
      'GimPitch' GimbalPitch no  
      'GimRoll' GimbalRoll no  
      'GimYaw' GimbalYaw no  
      'Lat' GPSLatitude no  
      'Lon' GPSLongitude no  
      'Pitch' Pitch no  
      'Roll' Roll no  
      'Text'Textno 
      'Yaw' Yaw- --> QuickTime Handler Tags
      'idat'MetaImageSizeno 
      'iinf' ItemInformation - --> QuickTime ItemInfo Tags
      --> QuickTime ItemInfo Tags
      'iloc' ItemLocation no (parsed, but not extracted as a tag)
      'ilst' ItemList - --> QuickTime ItemList Tags
      'ipmc' IPMPControl? no  
      'ipro' ItemProtection? no  
      'iprp' ItemProperties - --> QuickTime ItemProp Tags
      'iref' ItemReference - --> QuickTime ItemRef Tags
      'keys' Keys - --> QuickTime Keys Tags
      'pitm' PrimaryItemReference no  
      'uuid'MetaVersion +
      UUID-Unknown?
      no
      no
       
      'xml ' XML
      + + + + + + + + + + + @@ -2148,8 +2374,8 @@ - - + + @@ -2174,7 +2400,7 @@ - + @@ -2233,18 +2459,18 @@ - + - - + + - - + + @@ -2261,8 +2487,8 @@ - - + + @@ -2331,6 +2557,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2423,10 +2733,10 @@ - + - - + + @@ -2434,8 +2744,8 @@ - - + + @@ -2453,8 +2763,8 @@ - - + + @@ -2627,9 +2937,9 @@ - - - + + + @@ -2697,12 +3007,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -2768,9 +3135,11 @@ + + - + @@ -3069,11 +3438,11 @@ - - - - - + + + + + @@ -3089,7 +3458,7 @@ - + @@ -3098,15 +3467,15 @@ - - - + + + - + @@ -3157,6 +3526,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3170,7 +3596,7 @@ - + @@ -3184,7 +3610,7 @@ - + @@ -3249,7 +3675,7 @@ - + @@ -3274,7 +3700,7 @@ - + @@ -3299,7 +3725,7 @@ - + @@ -3389,7 +3815,7 @@ - + @@ -3633,6 +4059,8 @@ + + @@ -3656,7 +4084,7 @@ - + @@ -4078,6 +4506,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4303,6 +4788,7 @@ +
      @@ -1547,7 +1676,7 @@ - + @@ -1563,7 +1692,7 @@ - + @@ -1578,7 +1707,7 @@ - + @@ -1588,7 +1717,7 @@ - + @@ -1619,12 +1748,12 @@ - + - + @@ -1664,7 +1793,7 @@ - + @@ -1686,7 +1815,7 @@ - + @@ -1697,13 +1826,13 @@ - + - + @@ -1733,16 +1862,27 @@ - + + + + + + - + + + + + + @@ -1776,7 +1916,7 @@ - +
      'akID' AppleStoreAccountTypeint8uint8s 0 = iTunes
      1 = AOL
      'atID' AlbumTitleIDint32uint32s  
      'auth'
      'cnID' AppleStoreCatalogIDint32uint32s  
      'covr'
      'cpil' Compilationint8uint8s 0 = No
      1 = Yes
      'geID' GenreIDint32uint32s --> QuickTime GenreID Values
      'gnre' Genrestring/undef/  
      'grup'
      'hdvd' HDVideoint8uint8s 0 = No
      1 = Yes
      'pcst' Podcastint8uint8s 0 = No
      1 = Yes
      'pgap' PlayGapint8uint8s 0 = Insert Gap
      1 = No Gap
      'plID' PlayListIDint8uint32s[0.25]  
      'prID'
      'rtng' Ratingint8uint8s 0 = none
      1 = Explicit
      2 = Clean
      4 = Explicit (old)
      'sdes'StoreDescriptionstring 
      'sfID' AppleStoreCountryint32uint32s --> QuickTime AppleStoreCountry Values
      'shwm'ShowMovementint8s0 = No +
      1 = Yes
      'soaa' SortAlbumArtist
      'stik' MediaTypeint8uint8s - + @@ -1813,7 +1953,7 @@ - + @@ -1846,6 +1986,16 @@ + + + + + + + + + + @@ -1861,20 +2011,30 @@ + + + + + - + - + + + + + + @@ -1896,20 +2056,60 @@ + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1921,10 +2121,25 @@ + + + + + + + + + + + + + + +
      0 = Movie (old)
      1 = Normal (Music) @@ -1798,7 +1938,7 @@
      'tmpo' BeatsPerMinuteint16uint16s  
      'trkn'
      'tves' TVEpisodeint32uint32s  
      'tvnn'string  
      "©ard"ArtDirectorstring 
      "©arg"Arrangerstring 
      "©aut" Author string/string/  
      "©con"Conductorstring 
      "©cpy" Copyright string/  
      "©day" ContentCreateDate string  
      "©des" Description string  
      "©dir"Directorstring 
      "©enc" EncodedBystring  
      "©mvc"MovementCountint16s 
      "©mvi"MovementNumberint16s 
      "©mvn"MovementNamestring 
      "©nam" Title string  
      "©nrt" Narrator string  
      "©ope"OriginalArtiststring 
      "©prd"Producerstring 
      "©pub" Publisher string  
      "©sne"SoundEngineerstring 
      "©sol"Soloiststring 
      "©st3"Subtitlestring 
      "©too" Encoderstring  
      "©wrk"Workstring 
      "©wrt" Composer string  
      "©xpd"ExecutiveProducerstring 
      "©xyz"GPSCoordinatesstring 

      QuickTime GenreID Values

      @@ -1977,6 +2192,17 @@
      53= Music|Instrumental
      74= Audiobooks|News
      75= Audiobooks|Programs & Performances
      500= Fitness Music
      501= Fitness Music|Pop
      502= Fitness Music|Dance
      503= Fitness Music|Hip-Hop
      504= Fitness Music|Rock
      505= Fitness Music|Alt/Indie
      506= Fitness Music|Latino
      507= Fitness Music|Country
      508= Fitness Music|World
      509= Fitness Music|New Age
      510= Fitness Music|Classical
      1001= Music|Alternative|College Rock
      1002= Music|Alternative|Goth Rock
      1003= Music|Alternative|Grunge
      1174= Music|Vocal|Traditional Pop
      1175= Music|Jazz|Vocal Jazz
      1176= Music|Vocal|Vocal Pop
      1177= Music|World|Afro-Beat
      1178= Music|World|Afro-Pop
      1177= Music|African|Afro-Beat
      1178= Music|African|Afro-Pop
      1179= Music|World|Cajun
      1180= Music|World|Celtic
      1181= Music|World|Celtic Folk
      1200= Music|World|Australia
      1201= Music|World|Japan
      1202= Music|World|France
      1203= Music|World|Africa
      1203= Music|African
      1204= Music|World|Asia
      1205= Music|World|Europe
      1206= Music|World|South Africa
      1267= Music|Indian|Devotional & Spiritual
      1268= Music|Indian|Sufi
      1269= Music|Indian|Indian Classical
      1270= Music|World|Russian Chanson
      1270= Music|Russian|Russian Chanson
      1271= Music|World|Dini
      1272= Music|World|Halk
      1273= Music|World|Sanat
      1272= Music|Turkish|Halk
      1273= Music|Turkish|Sanat
      1274= Music|World|Dangdut
      1275= Music|World|Indonesian Religious
      1276= Music|World|Calypso
      1277= Music|World|Soca
      1278= Music|Indian|Ghazals
      1279= Music|Indian|Indian Folk
      1280= Music|World|Arabesque
      1281= Music|World|Afrikaans
      1280= Music|Turkish|Arabesque
      1281= Music|African|Afrikaans
      1282= Music|World|Farsi
      1283= Music|World|Israeli
      1284= Music|Arabic|Khaleeji
      1296= Music|World|Tango
      1297= Music|World|Fado
      1298= Music|World|Iberia
      1299= Music|World|Russian
      1300= Music|World|Turkish
      1299= Music|Russian
      1300= Music|Turkish
      1301= Podcasts|Arts
      1302= Podcasts|Society & Culture|Personal Journals
      1303= Podcasts|Comedy
      1479= Podcasts|Science & Medicine|Social Sciences
      1480= Podcasts|Technology|Software How-To
      1481= Podcasts|Health|Alternative Health
      1482= Podcasts|Arts|Books
      1483= Podcasts|Fiction
      1484= Podcasts|Fiction|Drama
      1485= Podcasts|Fiction|Science Fiction
      1486= Podcasts|Fiction|Comedy Fiction
      1487= Podcasts|History
      1488= Podcasts|True Crime
      1489= Podcasts|News
      1490= Podcasts|News|Business News
      1491= Podcasts|Business|Management
      1492= Podcasts|Business|Marketing
      1493= Podcasts|Business|Entrepreneurship
      1494= Podcasts|Business|Non-Profit
      1495= Podcasts|Comedy|Improv
      1496= Podcasts|Comedy|Comedy Interviews
      1497= Podcasts|Comedy|Stand-Up
      1498= Podcasts|Education|Language Learning
      1499= Podcasts|Education|How To
      1500= Podcasts|Education|Self-Improvement
      1501= Podcasts|Education|Courses
      1502= Podcasts|Leisure
      1503= Podcasts|Leisure|Automotive
      1504= Podcasts|Leisure|Aviation
      1505= Podcasts|Leisure|Hobbies
      1506= Podcasts|Leisure|Crafts
      1507= Podcasts|Leisure|Games
      1508= Podcasts|Leisure|Home & Garden
      1509= Podcasts|Leisure|Video Games
      1510= Podcasts|Leisure|Animation & Manga
      1511= Podcasts|Government
      1512= Podcasts|Health & Fitness
      1513= Podcasts|Health & Fitness|Alternative Health
      1514= Podcasts|Health & Fitness|Fitness
      1515= Podcasts|Health & Fitness|Nutrition
      1516= Podcasts|Health & Fitness|Sexuality
      1517= Podcasts|Health & Fitness|Mental Health
      1518= Podcasts|Health & Fitness|Medicine
      1519= Podcasts|Kids & Family|Education for Kids
      1520= Podcasts|Kids & Family|Stories for Kids
      1521= Podcasts|Kids & Family|Parenting
      1522= Podcasts|Kids & Family|Pets & Animals
      1523= Podcasts|Music|Music Commentary
      1524= Podcasts|Music|Music History
      1525= Podcasts|Music|Music Interviews
      1526= Podcasts|News|Daily News
      1527= Podcasts|News|Politics
      1528= Podcasts|News|Tech News
      1529= Podcasts|News|Sports News
      1530= Podcasts|News|News Commentary
      1531= Podcasts|News|Entertainment News
      1532= Podcasts|Religion & Spirituality|Religion
      1533= Podcasts|Science
      1534= Podcasts|Science|Natural Sciences
      1535= Podcasts|Science|Social Sciences
      1536= Podcasts|Science|Mathematics
      1537= Podcasts|Science|Nature
      1538= Podcasts|Science|Astronomy
      1539= Podcasts|Science|Chemistry
      1540= Podcasts|Science|Earth Sciences
      1541= Podcasts|Science|Life Sciences
      1542= Podcasts|Science|Physics
      1543= Podcasts|Society & Culture|Documentary
      1544= Podcasts|Society & Culture|Relationships
      1545= Podcasts|Sports
      1546= Podcasts|Sports|Soccer
      1547= Podcasts|Sports|Football
      1548= Podcasts|Sports|Basketball
      1549= Podcasts|Sports|Baseball
      1550= Podcasts|Sports|Hockey
      1551= Podcasts|Sports|Running
      1552= Podcasts|Sports|Rugby
      1553= Podcasts|Sports|Golf
      1554= Podcasts|Sports|Cricket
      1555= Podcasts|Sports|Wrestling
      1556= Podcasts|Sports|Tennis
      1557= Podcasts|Sports|Volleyball
      1558= Podcasts|Sports|Swimming
      1559= Podcasts|Sports|Wilderness
      1560= Podcasts|Sports|Fantasy Sports
      1561= Podcasts|TV & Film|TV Reviews
      1562= Podcasts|TV & Film|After Shows
      1563= Podcasts|TV & Film|Film Reviews
      1564= Podcasts|TV & Film|Film History
      1565= Podcasts|TV & Film|Film Interviews
      1602= Music Videos|Blues
      1603= Music Videos|Comedy
      1604= Music Videos|Children's Music
      1695= Music Videos|Indian|Devotional & Spiritual
      1696= Music Videos|Indian|Sufi
      1697= Music Videos|Indian|Indian Classical
      1698= Music Videos|World|Russian Chanson
      1698= Music Videos|Russian|Russian Chanson
      1699= Music Videos|World|Dini
      1700= Music Videos|World|Halk
      1701= Music Videos|World|Sanat
      1700= Music Videos|Turkish|Halk
      1701= Music Videos|Turkish|Sanat
      1702= Music Videos|World|Dangdut
      1703= Music Videos|World|Indonesian Religious
      1704= Music Videos|Indian|Indian Pop
      1706= Music Videos|World|Soca
      1707= Music Videos|Indian|Ghazals
      1708= Music Videos|Indian|Indian Folk
      1709= Music Videos|World|Arabesque
      1710= Music Videos|World|Afrikaans
      1709= Music Videos|Turkish|Arabesque
      1710= Music Videos|African|Afrikaans
      1711= Music Videos|World|Farsi
      1712= Music Videos|World|Israeli
      1713= Music Videos|Arabic
      1726= Music Videos|World|Tango
      1727= Music Videos|World|Fado
      1728= Music Videos|World|Iberia
      1729= Music Videos|World|Russian
      1730= Music Videos|World|Turkish
      1729= Music Videos|Russian
      1730= Music Videos|Turkish
      1731= Music Videos|Alternative|College Rock
      1732= Music Videos|Alternative|Goth Rock
      1733= Music Videos|Alternative|Grunge
      1901= Music Videos|Vocal|Traditional Pop
      1902= Music Videos|Jazz|Vocal Jazz
      1903= Music Videos|Vocal|Vocal Pop
      1904= Music Videos|World|Africa
      1905= Music Videos|World|Afro-Beat
      1906= Music Videos|World|Afro-Pop
      1904= Music Videos|African
      1905= Music Videos|African|Afro-Beat
      1906= Music Videos|African|Afro-Pop
      1907= Music Videos|World|Asia
      1908= Music Videos|World|Australia
      1909= Music Videos|World|Cajun
      1973= Music Videos|Indian|Regional Indian|Bengali
      1974= Music Videos|Indian|Indian Classical|Carnatic Classical
      1975= Music Videos|Indian|Indian Classical|Hindustani Classical
      1976= Music Videos|African|Afro House
      1977= Music Videos|African|Afro Soul
      1978= Music Videos|African|Afrobeats
      1979= Music Videos|African|Benga
      1980= Music Videos|African|Bongo-Flava
      1981= Music Videos|African|Coupe-Decale
      1982= Music Videos|African|Gqom
      1983= Music Videos|African|Highlife
      1984= Music Videos|African|Kuduro
      1985= Music Videos|African|Kizomba
      1986= Music Videos|African|Kwaito
      1987= Music Videos|African|Mbalax
      1988= Music Videos|African|Ndombolo
      1989= Music Videos|African|Shangaan Electro
      1990= Music Videos|African|Soukous
      1991= Music Videos|African|Taarab
      1992= Music Videos|African|Zouglou
      1993= Music Videos|Turkish|Ozgun
      1994= Music Videos|Turkish|Fantezi
      1995= Music Videos|Turkish|Religious
      1996= Music Videos|Pop|Turkish Pop
      1997= Music Videos|Rock|Turkish Rock
      1998= Music Videos|Alternative|Turkish Alternative
      1999= Music Videos|Hip-Hop/Rap|Turkish Hip-Hop/Rap
      2000= Music Videos|African|Maskandi
      2001= Music Videos|Russian|Russian Romance
      2002= Music Videos|Russian|Russian Bard
      2003= Music Videos|Russian|Russian Pop
      2004= Music Videos|Russian|Russian Rock
      2005= Music Videos|Russian|Russian Hip-Hop
      2006= Music Videos|Arabic|Levant
      2007= Music Videos|Arabic|Levant|Dabke
      2008= Music Videos|Arabic|Maghreb Rai
      2009= Music Videos|Arabic|Khaleeji|Khaleeji Jalsat
      2010= Music Videos|Arabic|Khaleeji|Khaleeji Shailat
      2011= Music Videos|Tarab
      2012= Music Videos|Tarab|Iraqi Tarab
      2013= Music Videos|Tarab|Egyptian Tarab
      2014= Music Videos|Tarab|Khaleeji Tarab
      2015= Music Videos|Pop|Levant Pop
      2016= Music Videos|Pop|Iraqi Pop
      2017= Music Videos|Pop|Egyptian Pop
      2018= Music Videos|Pop|Maghreb Pop
      2019= Music Videos|Pop|Khaleeji Pop
      2020= Music Videos|Hip-Hop/Rap|Levant Hip-Hop
      2021= Music Videos|Hip-Hop/Rap|Egyptian Hip-Hop
      2022= Music Videos|Hip-Hop/Rap|Maghreb Hip-Hop
      2023= Music Videos|Hip-Hop/Rap|Khaleeji Hip-Hop
      2024= Music Videos|Alternative|Indie Levant
      2025= Music Videos|Alternative|Indie Egyptian
      2026= Music Videos|Alternative|Indie Maghreb
      2027= Music Videos|Electronic|Levant Electronic
      2028= Music Videos|Electronic|Electro-Cha'abi
      2029= Music Videos|Electronic|Maghreb Electronic
      2030= Music Videos|Folk|Iraqi Folk
      2031= Music Videos|Folk|Khaleeji Folk
      2032= Music Videos|Dance|Maghreb Dance
      4000= TV Shows|Comedy
      4001= TV Shows|Drama
      4002= TV Shows|Animation
      4003= TV Shows|Action & Adventure
      4004= TV Shows|Classic
      4005= TV Shows|Kids
      4004= TV Shows|Classics
      4005= TV Shows|Kids & Family
      4006= TV Shows|Nonfiction
      4007= TV Shows|Reality TV
      4008= TV Shows|Sci-Fi & Fantasy
      6023= App Store|Food & Drink
      6024= App Store|Shopping
      6025= App Store|Stickers
      6026= App Store|Developer Tools
      6027= App Store|Graphics & Design
      7001= App Store|Games|Action
      7002= App Store|Games|Adventure
      7003= App Store|Games|Arcade
      7003= App Store|Games|Casual
      7004= App Store|Games|Board
      7005= App Store|Games|Card
      7006= App Store|Games|Casino
      8301= Tones|Ringtones|Vocal|Trot
      8302= Tones|Ringtones|Jazz|Vocal Jazz
      8303= Tones|Ringtones|Vocal|Vocal Pop
      8304= Tones|Ringtones|World|Africa
      8305= Tones|Ringtones|World|Afrikaans
      8306= Tones|Ringtones|World|Afro-Beat
      8307= Tones|Ringtones|World|Afro-Pop
      8308= Tones|Ringtones|World|Arabesque
      8304= Tones|Ringtones|African
      8305= Tones|Ringtones|African|Afrikaans
      8306= Tones|Ringtones|African|Afro-Beat
      8307= Tones|Ringtones|African|Afro-Pop
      8308= Tones|Ringtones|Turkish|Arabesque
      8309= Tones|Ringtones|World|Asia
      8310= Tones|Ringtones|World|Australia
      8311= Tones|Ringtones|World|Cajun
      8321= Tones|Ringtones|World|Farsi
      8322= Tones|Ringtones|World|Flamenco
      8323= Tones|Ringtones|World|France
      8324= Tones|Ringtones|World|Halk
      8324= Tones|Ringtones|Turkish|Halk
      8325= Tones|Ringtones|World|Hawaii
      8326= Tones|Ringtones|World|Iberia
      8327= Tones|Ringtones|World|Indonesian Religious
      8330= Tones|Ringtones|World|Klezmer
      8331= Tones|Ringtones|World|North America
      8332= Tones|Ringtones|World|Polka
      8333= Tones|Ringtones|World|Russian
      8334= Tones|Ringtones|World|Russian Chanson
      8335= Tones|Ringtones|World|Sanat
      8333= Tones|Ringtones|Russian
      8334= Tones|Ringtones|Russian|Russian Chanson
      8335= Tones|Ringtones|Turkish|Sanat
      8336= Tones|Ringtones|World|Soca
      8337= Tones|Ringtones|World|South Africa
      8338= Tones|Ringtones|World|South America
      8339= Tones|Ringtones|World|Tango
      8340= Tones|Ringtones|World|Traditional Celtic
      8341= Tones|Ringtones|World|Turkish
      8341= Tones|Ringtones|Turkish
      8342= Tones|Ringtones|World|Worldbeat
      8343= Tones|Ringtones|World|Zydeco
      8345= Tones|Ringtones|Classical|Art Song
      8390= Tones|Ringtones|Indian|Regional Indian|Bengali
      8391= Tones|Ringtones|Indian|Indian Classical|Carnatic Classical
      8392= Tones|Ringtones|Indian|Indian Classical|Hindustani Classical
      8393= Tones|Ringtones|African|Afro House
      8394= Tones|Ringtones|African|Afro Soul
      8395= Tones|Ringtones|African|Afrobeats
      8396= Tones|Ringtones|African|Benga
      8397= Tones|Ringtones|African|Bongo-Flava
      8398= Tones|Ringtones|African|Coupe-Decale
      8399= Tones|Ringtones|African|Gqom
      8400= Tones|Ringtones|African|Highlife
      8401= Tones|Ringtones|African|Kuduro
      8402= Tones|Ringtones|African|Kizomba
      8403= Tones|Ringtones|African|Kwaito
      8404= Tones|Ringtones|African|Mbalax
      8405= Tones|Ringtones|African|Ndombolo
      8406= Tones|Ringtones|African|Shangaan Electro
      8407= Tones|Ringtones|African|Soukous
      8408= Tones|Ringtones|African|Taarab
      8409= Tones|Ringtones|African|Zouglou
      8410= Tones|Ringtones|Turkish|Ozgun
      8411= Tones|Ringtones|Turkish|Fantezi
      8412= Tones|Ringtones|Turkish|Religious
      8413= Tones|Ringtones|Pop|Turkish Pop
      8414= Tones|Ringtones|Rock|Turkish Rock
      8415= Tones|Ringtones|Alternative|Turkish Alternative
      8416= Tones|Ringtones|Hip-Hop/Rap|Turkish Hip-Hop/Rap
      8417= Tones|Ringtones|African|Maskandi
      8418= Tones|Ringtones|Russian|Russian Romance
      8419= Tones|Ringtones|Russian|Russian Bard
      8420= Tones|Ringtones|Russian|Russian Pop
      8421= Tones|Ringtones|Russian|Russian Rock
      8422= Tones|Ringtones|Russian|Russian Hip-Hop
      8423= Tones|Ringtones|Arabic|Levant
      8424= Tones|Ringtones|Arabic|Levant|Dabke
      8425= Tones|Ringtones|Arabic|Maghreb Rai
      8426= Tones|Ringtones|Arabic|Khaleeji|Khaleeji Jalsat
      8427= Tones|Ringtones|Arabic|Khaleeji|Khaleeji Shailat
      8428= Tones|Ringtones|Tarab
      8429= Tones|Ringtones|Tarab|Iraqi Tarab
      8430= Tones|Ringtones|Tarab|Egyptian Tarab
      8431= Tones|Ringtones|Tarab|Khaleeji Tarab
      8432= Tones|Ringtones|Pop|Levant Pop
      8433= Tones|Ringtones|Pop|Iraqi Pop
      8434= Tones|Ringtones|Pop|Egyptian Pop
      8435= Tones|Ringtones|Pop|Maghreb Pop
      8436= Tones|Ringtones|Pop|Khaleeji Pop
      8437= Tones|Ringtones|Hip-Hop/Rap|Levant Hip-Hop
      8438= Tones|Ringtones|Hip-Hop/Rap|Egyptian Hip-Hop
      8439= Tones|Ringtones|Hip-Hop/Rap|Maghreb Hip-Hop
      8440= Tones|Ringtones|Hip-Hop/Rap|Khaleeji Hip-Hop
      8441= Tones|Ringtones|Alternative|Indie Levant
      8442= Tones|Ringtones|Alternative|Indie Egyptian
      8443= Tones|Ringtones|Alternative|Indie Maghreb
      8444= Tones|Ringtones|Electronic|Levant Electronic
      8445= Tones|Ringtones|Electronic|Electro-Cha'abi
      8446= Tones|Ringtones|Electronic|Maghreb Electronic
      8447= Tones|Ringtones|Folk|Iraqi Folk
      8448= Tones|Ringtones|Folk|Khaleeji Folk
      8449= Tones|Ringtones|Dance|Maghreb Dance
      9002= Books|Nonfiction
      9003= Books|Romance
      9004= Books|Travel & Adventure
      9019= Books|Science & Nature
      9020= Books|Sci-Fi & Fantasy
      9024= Books|Lifestyle & Home
      9025= Books|Health, Mind & Body
      9025= Books|Self-Development
      9026= Books|Comics & Graphic Novels
      9027= Books|Computers & Internet
      9028= Books|Cookbooks, Food & Wine
      10001= Books|Lifestyle & Home|Antiques & Collectibles
      10002= Books|Arts & Entertainment|Art & Architecture
      10003= Books|Religion & Spirituality|Bibles
      10004= Books|Health, Mind & Body|Spirituality
      10004= Books|Self-Development|Spirituality
      10005= Books|Business & Personal Finance|Industries & Professions
      10006= Books|Business & Personal Finance|Marketing & Sales
      10007= Books|Business & Personal Finance|Small Business & Entrepreneurship
      10066= Books|Reference|Foreign Languages
      10067= Books|Arts & Entertainment|Games
      10068= Books|Lifestyle & Home|Gardening
      10069= Books|Health, Mind & Body|Health & Fitness
      10069= Books|Self-Development|Health & Fitness
      10070= Books|History|Africa
      10071= Books|History|Americas
      10072= Books|History|Ancient
      10091= Books|Nonfiction|Philosophy
      10092= Books|Arts & Entertainment|Photography
      10093= Books|Fiction & Literature|Poetry
      10094= Books|Health, Mind & Body|Psychology
      10094= Books|Self-Development|Psychology
      10095= Books|Reference|Almanacs & Yearbooks
      10096= Books|Reference|Atlases & Maps
      10097= Books|Reference|Catalogs & Directories
      10116= Books|Science & Nature|Life Sciences
      10117= Books|Science & Nature|Physics
      10118= Books|Science & Nature|Reference
      10119= Books|Health, Mind & Body|Self-Improvement
      10119= Books|Self-Development|Self-Improvement
      10120= Books|Nonfiction|Social Science
      10121= Books|Sports & Outdoors|Baseball
      10122= Books|Sports & Outdoors|Basketball
      11059= Books|Sports & Outdoors|Motor Sports
      11060= Books|Sports & Outdoors|Rugby
      11061= Books|Sports & Outdoors|Running
      11062= Books|Health, Mind & Body|Diet & Nutrition
      11062= Books|Self-Development|Diet & Nutrition
      11063= Books|Science & Nature|Agriculture
      11064= Books|Science & Nature|Atmosphere
      11065= Books|Science & Nature|Biology
      11339= Books|Comics & Graphic Novels|Manga|Girls
      11340= Books|Comics & Graphic Novels|Manga|Women
      11341= Books|Comics & Graphic Novels|Manga|Other
      11342= Books|Comics & Graphic Novels|Manga|Yaoi
      11343= Books|Comics & Graphic Novels|Manga|Comic Essays
      12001= Mac App Store|Business
      12002= Mac App Store|Developer Tools
      12003= Mac App Store|Education
      12022= Mac App Store|Graphics & Design
      12201= Mac App Store|Games|Action
      12202= Mac App Store|Games|Adventure
      12203= Mac App Store|Games|Arcade
      12203= Mac App Store|Games|Casual
      12204= Mac App Store|Games|Board
      12205= Mac App Store|Games|Card
      12206= Mac App Store|Games|Casino
      100046= Music|Indian|Regional Indian|Bengali
      100047= Music|Indian|Indian Classical|Carnatic Classical
      100048= Music|Indian|Indian Classical|Hindustani Classical
      100049= Music|African|Afro House
      100050= Music|African|Afro Soul
      100051= Music|African|Afrobeats
      100052= Music|African|Benga
      100053= Music|African|Bongo-Flava
      100054= Music|African|Coupe-Decale
      100055= Music|African|Gqom
      100056= Music|African|Highlife
      100057= Music|African|Kuduro
      100058= Music|African|Kizomba
      100059= Music|African|Kwaito
      100060= Music|African|Mbalax
      100061= Music|African|Ndombolo
      100062= Music|African|Shangaan Electro
      100063= Music|African|Soukous
      100064= Music|African|Taarab
      100065= Music|African|Zouglou
      100066= Music|Turkish|Ozgun
      100067= Music|Turkish|Fantezi
      100068= Music|Turkish|Religious
      100069= Music|Pop|Turkish Pop
      100070= Music|Rock|Turkish Rock
      100071= Music|Alternative|Turkish Alternative
      100072= Music|Hip-Hop/Rap|Turkish Hip-Hop/Rap
      100073= Music|African|Maskandi
      100074= Music|Russian|Russian Romance
      100075= Music|Russian|Russian Bard
      100076= Music|Russian|Russian Pop
      100077= Music|Russian|Russian Rock
      100078= Music|Russian|Russian Hip-Hop
      100079= Music|Arabic|Levant
      100080= Music|Arabic|Levant|Dabke
      100081= Music|Arabic|Maghreb Rai
      100082= Music|Arabic|Khaleeji|Khaleeji Jalsat
      100083= Music|Arabic|Khaleeji|Khaleeji Shailat
      100084= Music|Tarab
      100085= Music|Tarab|Iraqi Tarab
      100086= Music|Tarab|Egyptian Tarab
      100087= Music|Tarab|Khaleeji Tarab
      100088= Music|Pop|Levant Pop
      100089= Music|Pop|Iraqi Pop
      100090= Music|Pop|Egyptian Pop
      100091= Music|Pop|Maghreb Pop
      100092= Music|Pop|Khaleeji Pop
      100093= Music|Hip-Hop/Rap|Levant Hip-Hop
      100094= Music|Hip-Hop/Rap|Egyptian Hip-Hop
      100095= Music|Hip-Hop/Rap|Maghreb Hip-Hop
      100096= Music|Hip-Hop/Rap|Khaleeji Hip-Hop
      100097= Music|Alternative|Indie Levant
      100098= Music|Alternative|Indie Egyptian
      100099= Music|Alternative|Indie Maghreb
      100100= Music|Electronic|Levant Electronic
      100101= Music|Electronic|Electro-Cha'abi
      100102= Music|Electronic|Maghreb Electronic
      100103= Music|Folk|Iraqi Folk
      100104= Music|Folk|Khaleeji Folk
      100105= Music|Dance|Maghreb Dance
      40000000= iTunes U
      40000001= iTunes U|Business & Economics
      40000002= iTunes U|Business & Economics|Economics
      50000090= Books|Comics & Graphic Novels|Comics
      50000091= Books|Romance|Multicultural
      50000092= Audiobooks|Erotica
      50000093= Audiobooks|Light Novels

      QuickTime AppleStoreCountry Values

      @@ -4470,28 +4956,99 @@

      QuickTime iTunesInfo Tags

      ExifTool will extract any iTunesInfo tags that exist, even if they are not -defined in this table.

      +defined in this table. These tags belong to the family 1 "iTunes" group, +and are not currently writable.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4522,15 +5079,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Tag IDTag Name WritableValues / Notes
      'ARTISTS'Artistsno 
      'BARCODE'Barcodeno 
      'CATALOGNUMBER'CatalogNumberno 
      'DISCNUMBER' DiscNumber no  
      'Dynamic Range (DR)'DynamicRangeno 
      'Dynamic Range (R128)'DynamicRangeR128no 
      'Encoding Params' EncodingParams - --> QuickTime EncodingParams Tags
      'LABEL'Labelno 
      'MEDIA'Mediano 
      'MOOD'Moodno 
      'Peak Level (R128)'PeakLevelR128no 
      'Peak Level (Sample)'PeakLevelSampleno 
      'RATING'Ratingno 
      'SCRIPT'Scriptno 
      'TRACKNUMBER' TrackNumber no  
      'Volume Level (R128)'VolumeLevelR128no 
      'Volume Level (ReplayGain)'ReplayVolumeLevelno 
      'iTunEXTC' ContentRating nono  
      'initialkey'InitialKeyno 
      'originaldate'OriginalDateno 
      'originalyear'OriginalYearno 
      'popularimeter' Popularimeter no  
      'replaygain_track_gain'ReplayTrackGainno 
      'replaygain_track_peak'ReplayTrackPeakno 
      'tool' iTunTool no  
      '~length'Lengthno 

      QuickTime EncodingParams Tags

      @@ -4714,7 +5301,7 @@ 'irot' Rotation -int8u +int8u!   'ispe' @@ -4724,7 +5311,7 @@ 'pasp' PixelAspectRatio -int32u +int32u!   'pixi' @@ -4830,14 +5417,30 @@ no [val & 0x1f]
      0 = No Profile -
      1 = Main Profile -
      2 = Main 10 Profile -
      3 = Main Still Picture Profile
      +
      1 = Main +
      2 = Main 10 +
      3 = Main Still Picture +
      4 = Format Range Extensions +
      5 = High Throughput +
      6 = Multiview Main +
      7 = Scalable Main +
      8 = 3D Main +
      9 = Screen Content Coding Extensions +
      10 = Scalable Format Range Extensions +
      11 = High Throughput Screen Content Coding Extensions
      2 GenProfileCompatibilityFlags no -Bit 28 = Main Still Picture +Bit 20 = High Throughput Screen Content Coding Extensions +
      Bit 21 = Scalable Format Range Extensions +
      Bit 22 = Screen Content Coding Extensions +
      Bit 23 = 3D Main +
      Bit 24 = Scalable Main +
      Bit 25 = Multiview Main +
      Bit 26 = High Throughput +
      Bit 27 = Format Range Extensions +
      Bit 28 = Main Still Picture
      Bit 29 = Main 10
      Bit 30 = Main
      Bit 31 = No Profile
      @@ -4908,16 +5511,34 @@

      QuickTime ItemRef Tags

      +

      The Item reference entries listed in the table below contain information about +the associations between items in the file. This information is used by +ExifTool, but these entries are not extracted as tags.

      + + + + + - + + + + + + + + + + +
      Tag IDTag Name WritableValues / Notes
      'auxl'AuxiliaryImageRefno 
      'cdsc' ContentDescribes no(parsed, but not extracted as a tag)
       
      'dimg'DerivedImageRefno 
      'thmb'ThumbnailRefno 

      QuickTime MovieFragment Tags

      @@ -5944,16 +6565,22 @@ Tag IDTag Name WritableValues / Notes +'enda' +Endianness +no +0 = Big-endian (Motorola, MM) +
      1 = Little-endian (Intel, II)
      + 'frma' OriginalFormat no   - + 'schi' SchemeInfo - --> QuickTime SchemeInfo Tags - + 'schm' SchemeType - @@ -6076,6 +6703,12 @@ Tag IDTag Name WritableValues / Notes +'enda' +Endianness +no +0 = Big-endian (Motorola, MM) +
      1 = Little-endian (Intel, II)
      + 'frma' PurchaseFileFormat no @@ -6531,7 +7164,7 @@ 10 MatrixStructure -fixed32s[9] +fixed32s[9]! (writable for the video track via the Composite Rotation tag) 19 @@ -6590,132 +7223,158 @@ Tag IDTag Name WritableValues / Notes +'@day' +ContentCreateDate +string/ +(some stupid Ricoh programmer used the '@' symbol instead of the copyright +symbol in these tag ID's for the Ricoh Theta Z1 and maybe other models) + +'@mak' +Make +string/ +  + +'@mod' +Model +string/ +  + '@sec' SamsungSec - --> Samsung sec Tags + +'@swr' +SoftwareVersion +string/ +  +'@xyz' +GPSCoordinates +string/ +  + 'AllF' PlayAllFrames int8u   - + 'CAME' SerialNumberHash string   - + 'CNCV' CompressorVersion string   - + 'CNFV' FirmwareVersion string   - + 'CNMN' Model string/   - + 'CNOP' CanonCNOP - --> Canon CNOP Tags - + 'CNTH' CanonCNTH - --> Canon CNTH Tags - + 'DcMD' KodakDcMD - --> Kodak DcMD Tags - + 'FFMV' FujiFilmFFMV - --> FujiFilm FFMV Tags - + 'FIRM' FirmwareVersion string/   - + "FOV\0" FieldOfView string   - + 'GPMF' GoProGPMF - --> GoPro GPMF Tags - + 'GoPr' GoProType string   - + 'INFO' SamsungINFO - --> Samsung INFO Tags - + 'LEIC' LeicaLEIC - --> Panasonic PANA Tags - + 'LENS' LensSerialNumber string   - + 'LOOP' LoopStyle int32u 1 = Normal
      2 = Palindromic
      - + 'Lvlm' LevelMeter? rational64s   - + 'MMA0' MinoltaMMA0 - --> Minolta MMA Tags - + 'MMA1' MinoltaMMA1 - --> Minolta MMA Tags - + 'MVTG' FujiFilmMVTG - --> EXIF Tags - + 'NCDT' NikonNCDT - --> Nikon NCDT Tags - + 'PANA' PanasonicPANA - --> Panasonic PANA Tags - + 'PENT' PentaxPENT - --> Pentax PENT Tags - + 'PXMN' MakerNotePentax5b
      MakerNotePentax5c @@ -6723,42 +7382,42 @@ -
      -
      string --> Pentax Tags
      --> Pentax Tags - + 'PXTH' PentaxPreview - --> Pentax PXTH Tags - + 'QVMI' CasioQVMI - --> EXIF Tags - + 'RMKN' RicohRMKN - --> EXIF Tags - + 'RTHU' PreviewImage no   - + 'SDLN' PlayMode string   - + 'SNum' SerialNumber string/   - + 'SelO' PlaySelection int8u   - + 'TAGS' FujiFilmTags
      KodakTags @@ -6788,201 +7447,208 @@
      --> Samsung MP4 Tags
      --> Sanyo MOV Tags
      --> Sanyo MP4 Tags - + 'TTMD' TomTomMetaData - --> QuickTime TomTom Tags - + 'WLOC' WindowLocation int16u   - + 'XMP_' XMP - --> XMP Tags - + 'Xtra' MicrosoftXtra - --> Microsoft Xtra Tags - + '_cx_' CX? rational64s   - + '_cy_' CY? rational64s   - + '_yaw' Yaw rational64s/   - + 'albm' Album string/ (used in 3gp videos) - + 'albr' AlbumArtist string   - + 'angl' CameraAngle string   - + 'apmd' ApertureMode undef   - + 'auth' Author string/ (used in 3gp videos) - + 'ccid' ContentID string   - + 'cdis' ContentDistributorID string   - + 'chpl' ChapterList no   - + 'clfn' ClipFileName string   - + 'clid' ClipID string   - + 'clsf' Classification -no -  - +undef/ +(string in the form "Entity=XXXX Index=### XXXXX", used in 3gp videos) + 'cmid' CameraID string   - + 'cmnm' Model string/   - + 'coll' CollectionName string/ (used in 3gp videos) - + 'cprt' Copyright string/ (used in 3gp videos) - + 'cver' CodeVersion string   - + 'cvru' CoverURI string   - + 'date' DateTimeOriginal string -  - +(Apple Photos has been reported to show a crazy date/time for some MP4 files +containing this tag, but perhaps only if it is missing a time zone) + 'dscp' Description string/ (used in 3gp videos) - + 'gnre' Genre string/ (used in 3gp videos) - + 'hinf' HintTrackInfo - --> QuickTime HintTrackInfo Tags - + 'hinv' HintVersion string   - + 'hnti' HintInfo - --> QuickTime HintInfo Tags - + 'htcb' HTCBinary - --> QuickTime HTCBinary Tags - + 'icnu' IconURI string   - + 'infu' InfoURL string   - + 'kgtt' TrackType string   - + 'kywd' Keywords no -  - +(not writable because Apple doesn't follow the 3gp specification) + 'loci' LocationInformation -no -  - +undef/ +(string in the form "XXXXX Role=XXX Lat=XXX Lon=XXX Alt=XXX Body=XXX +Notes=XXX", used in 3gp videos) + 'lrcu' LyricsURI string   - + 'lvlm' LevelMeter? rational64s   - + 'manu' Make no   + +'mcvr' +PreviewImage +string +  'meta' Meta @@ -7004,71 +7670,76 @@ string/ (used in 3gp videos) +'pmcc' +GarminSettings +string +  + 'pose' pose - --> Kodak pose Tags - + 'ptch' Pitch rational64s/   - + 'ptv ' PrintToVideo - --> QuickTime Video Tags - + 'rads' Rads? rational64s   - + 'reel' ReelName string   - + 'roll' Roll rational64s/   - + 'rtng' Rating -no -  - +undef/ +(string in the form "Entity=XXXX Criteria=XXXX XXXXX", used in 3gp videos) + 'scen' Scene string   - + 'scrn' OlympusPreview - --> Olympus scrn Tags - + 'shot' ShotName string   - + 'slno' SerialNumber string   - + 'smta' SamsungSmta - --> Samsung smta Tags - + 'tags' Audible_tags - --> Audible tags Tags - + 'thmb' MakerNotePentax5a
      OlympusThumbnail @@ -7078,15 +7749,21 @@ -
      -
      string
      string
      string --> Pentax Tags
      --> Olympus thmb Tags - + 'titl' Title string/ (used in 3gp videos) - + 'urat' UserRating -no +undef/ +(used in 3gp videos) + +'uuid' +GarminSoftware +
      UUID-Unknown? +string
      no   'vndr' @@ -7094,316 +7771,322 @@ string   -'yrrc' -Year +'vrot' +AccelerometerData no -  +(accelerometer readings for each frame of the video, expressed as sets of +yaw, pitch and roll angles in degrees) +'yrrc' +Year +undef/ +(used in 3gp videos) + "©ART" Artist string   - + "©TIM" StartTimecode string   - + "©TSC" StartTimeScale string   - + "©TSZ" StartTimeSampleSize string   - + "©alb" Album string   - + "©arg" Arranger string   - + "©ark" ArrangerKeywords string   - + "©cmt" Comment string   - + "©cok" ComposerKeywords string   - + "©com" Composer string   - + "©cpy" Copyright string   - + "©day" ContentCreateDate string   - + "©dir" Director string   - + "©ed1" Edit1 string   - + "©ed2" Edit2 string   - + "©ed3" Edit3 string   - + "©ed4" Edit4 string   - + "©ed5" Edit5 string   - + "©ed6" Edit6 string   - + "©ed7" Edit7 string   - + "©ed8" Edit8 string   - + "©ed9" Edit9 string   - + "©enc" EncoderID string   - + "©fmt" Format string   - + "©fpt" Pitch string   - + "©frl" Roll string   - + "©fyw" Yaw string   - + "©gen" Genre string   - + "©gpt" CameraPitch string   - + "©grl" CameraRoll string   - + "©grp" Grouping string   - + "©gyw" CameraYaw string   - + "©inf" Information string   - + "©isr" ISRCCode string   - + "©lab" RecordLabelName string   - + "©lal" RecordLabelURL string   - + "©lyr" Lyrics string   - + "©mak" Make string   - + "©mal" MakerURL string   - + "©mdl" Model string/ (non-standard-format DJI tag) - + "©mod" Model string   - + "©nam" Title string   - + "©pdk" ProducerKeywords string   - + "©phg" RecordingCopyright string   - + "©prd" Producer string   - + "©prf" Performers string   - + "©prk" PerformerKeywords string   - + "©prl" PerformerURL string   - + "©req" Requirements string   - + "©snk" SubtitleKeywords string   - + "©snm" Subtitle string   - + "©src" SourceCredits string   - + "©swf" SongWriter string   - + "©swk" SongWriterKeywords string   - + "©swr" SoftwareVersion string   - + "©too" Encoder string   - + "©trk" Track string   - + "©wrt" Composer string/   - + "©xsp" SpeedX string   - + "©xyz" GPSCoordinates string   - + "©ysp" SpeedY string   - + "©zsp" SpeedZ string @@ -7962,6 +8645,208 @@   +

      QuickTime Tags360Fly Tags

      +

      Timed metadata found in MP4 videos from the 360Fly.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Tag IDTag NameWritableValues / Notes
      0x0001Accel360Fly---> QuickTime Accel360Fly Tags
      0x0002Gyro360Fly---> QuickTime Gyro360Fly Tags
      0x0003Mag360Fly---> QuickTime Mag360Fly Tags
      0x0005GPS360Fly---> QuickTime GPS360Fly Tags
      0x0006Rot360Fly---> QuickTime Rot360Fly Tags
      0x00faFusion360Fly---> QuickTime Fusion360Fly Tags
      + +

      QuickTime Accel360Fly Tags

      +
      +
      + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      1AccelMode?no 
      2SampleTimeno 
      10AccelYPRno 
      + +

      QuickTime Gyro360Fly Tags

      +
      +
      + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      1GyroMode?no 
      2SampleTimeno 
      10GyroYPRno 
      + +

      QuickTime Mag360Fly Tags

      +
      +
      + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      1MagMode?no 
      2SampleTimeno 
      10MagnetometerXYZno 
      + +

      QuickTime GPS360Fly Tags

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      1GPSMode?no 
      2SampleTimeno 
      10GPSLatitudeno 
      14GPSLongitudeno 
      18GPSAltitudeno 
      22GPSSpeedno(converted to km/hr)
      24GPSTrackno 
      26Accelerationno 
      + +

      QuickTime Rot360Fly Tags

      +
      +
      + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      1RotMode?no 
      2SampleTimeno 
      10RotationXYZno 
      + +

      QuickTime Fusion360Fly Tags

      +
      +
      + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      1FusionMode?no 
      2SampleTimeno 
      10FusionYPRno 
      +

      QuickTime ImageFile Tags

      Tags used in QTIF QuickTime Image Files.

      @@ -7988,7 +8873,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 4, 2020 +
      Last revised Dec 8, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Radiance.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Radiance.html --- libimage-exiftool-perl-11.88/html/TagNames/Radiance.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Radiance.html 2020-10-29 13:45:32.000000000 +0000 @@ -25,6 +25,11 @@ no   +'_comment' +Comment +no +  + '_orient' Orientation no @@ -38,42 +43,42 @@
      '-Y +X' = Horizontal (normal)
      '-Y -X' = Mirror horizontal - + 'colorcorr' ColorCorrection no   - + 'exposure' Exposure no (divide pixel values by this to get watts/steradian/meter^2) - + 'format' Format no   - + 'gamma' Gamma no   - + 'pixaspect' PixelAspectRatio no   - + 'primaries' ColorPrimaries no   - + 'software' Software no   - + 'view' View no @@ -82,7 +87,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Dec 14, 2011 +
      Last revised Oct 29, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Ricoh.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Ricoh.html --- libimage-exiftool-perl-11.88/html/TagNames/Ricoh.html 2019-12-11 13:55:34.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Ricoh.html 2020-07-27 19:40:33.000000000 +0000 @@ -753,6 +753,11 @@ SoundFile no (audio data recorded in JPEG images by the G700SE) + +'_barcode' +Barcodes +no+ + 

      Ricoh AVI Tags

      @@ -801,7 +806,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Dec 11, 2019 +
      Last revised Jul 27, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/RIFF.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/RIFF.html --- libimage-exiftool-perl-11.88/html/TagNames/RIFF.html 2020-02-14 13:02:52.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/RIFF.html 2021-08-12 12:24:19.000000000 +0000 @@ -45,10 +45,12 @@ --> RIFF CSET Tags 'EXIF' -EXIF -- ---> EXIF Tags -
      (WebP files) +EXIF +
      UnknownEXIF +-
      no +(WebP files) +
      --> EXIF Tags +
      --> EXIF Tags 'ICCP' ICC_Profile @@ -67,13 +69,15 @@
      RicohJunk
      PentaxJunk
      PentaxJunk2 +
      LucasJunk
      TextJunk --
      -
      -
      -
      -
      no +-
      -
      -
      -
      -
      -
      no --> Olympus AVI Tags
      --> EXIF Tags
      --> Ricoh AVI Tags
      --> Pentax Junk Tags -
      --> Pentax Junk2 Tags +
      --> Pentax Junk2 Tags +
      --> QuickTime Stream Tags 'JUNQ' OldXMP @@ -95,132 +99,178 @@ - --> RIFF Tdat Tags +'LIST_adtl' +AssociatedDataList +- +--> RIFF Tags + 'LIST_exif' Exif - --> RIFF Exif Tags - + 'LIST_hdrl' Hdrl - --> RIFF Hdrl Tags - + 'LIST_hydt' PentaxData - --> Pentax AVI Tags - + 'LIST_ncdt' NikonData - --> Nikon AVI Tags - + 'LIST_pntx' PentaxData2 - --> Pentax AVI Tags - + 'SGLT' BikeBroAccel - --> QuickTime Stream Tags - + 'SLLT' BikeBroGPS - --> QuickTime Stream Tags - + 'VP8 ' VP8Bitstream - --> RIFF VP8 Tags - + 'VP8L' VP8L - --> RIFF VP8L Tags - + 'VP8X' VP8X - --> RIFF VP8X Tags - + 'XMP ' XMP - --> XMP Tags
      (WebP files) - + '_PMX' XMP - --> XMP Tags
      (AVI and WAV files) - + 'aXML' AXML - --> XMP XML Tags - + 'afsp' Afsp no   - + 'bext' BroadcastExtension - --> RIFF BroadcastExt Tags - + 'cue ' CuePoints no -  - +(config_files/cutepointlist.config from full distribution will decode this +and generate a list of cue points with labels) + 'ds64' DataSize64 - --> RIFF DS64 Tags - + 'fact' NumberOfSamples no   - + 'fmt ' AudioFormat - --> RIFF AudioFormat Tags - + 'gps0' GPSTrack - --> QuickTime Stream Tags - + 'gsen' GSensor - --> QuickTime Stream Tags - + 'iXML' IXML - --> XMP XML Tags + +'id3 ' +ID3 +- +--> ID3 Tags -'labl' -Label +'inst' +Instrument - ---> RIFF Label Tags +--> RIFF Instrument Tags +'labl' +CuePointLabel +no +  + 'list' ListType no   + +'ltxt' +LabeledText +no +(CuePointID Length Purpose Country Language Dialect Codepage Text) +'note' +CuePointNote +no +  + 'olym' Olym - --> Olympus WAV Tags + +'plst' +Playlist +no +  + +'smpl' +Sampler +- +--> RIFF Sampler Tags + +'tx_USER' +UserText +- +--> RIFF UserText Tags + +'tx_Unknown' +Text +no +(streamed text, extracted when the ExtractEmbedded option is used)

      RIFF ALPH Tags

      @@ -652,108 +702,113 @@ no   +'ITRK' +TrackNumber +no +  + 'IWMU' WatermarkURL no   - + 'IWRI' WrittenBy no   - + 'LANG' Language no   - + 'LOCA' Location no   - + 'PRT1' Part no   - + 'PRT2' NumberOfParts no   - + 'RATE' Rate no   - + 'STAR' Starring no   - + 'STAT' Statistics no [Value 3]
      0 = Bad
      1 = OK
      - + 'TAPE' TapeName no   - + 'TCDO' EndTimecode no   - + 'TCOD' StartTimecode no   - + 'TITL' Title no   - + 'TLEN' Length no   - + 'TORG' Organization no   - + 'TRCK' TrackNumber no   - + 'TURL' URL no   - + 'TVER' Version no   - + 'VMAJ' VegasVersionMajor no   - + 'VMIN' VegasVersionMinor no   - + 'YEAR' Year no @@ -1455,7 +1510,50 @@   -

      RIFF Label Tags

      +

      RIFF Instrument Tags

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      0UnshiftedNoteno 
      1FineTuneno 
      2Gainno 
      3LowNoteno 
      4HighNoteno 
      5LowVelocityno 
      6HighVelocityno 
      + +

      RIFF Sampler Tags

      @@ -1463,19 +1561,103 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      WritableValues / Notes
      0LabelIDManufacturer no  
      1LabelTextProductno 
      2SamplePeriodno 
      3MIDIUnityNoteno 
      4MIDIPitchFractionno 
      5SMPTEFormatno0 = none +
      24 = 24 fps +
      25 = 25 fps +
      29 = 29 fps +
      30 = 30 fps
      6SMPTEOffsetno(HH:MM:SS:FF)
      7NumSampleLoopsno 
      8SamplerDataLenno 
      9SamplerDatano 
      + +

      RIFF UserText Tags

      +

      Tags decoded from the USER-format txts stream written by Momento M6 dashcam. +Extracted only if the ExtractEmbedded option is used.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      28GPSAltitudeno 
      40Accelerometerno 
      56GPSSpeedno 
      60GPSLatitudeno 
      64GPSLongitudeno 
      68GPSDateTime no  

      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 14, 2020 +
      Last revised Aug 12, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/RSRC.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/RSRC.html --- libimage-exiftool-perl-11.88/html/TagNames/RSRC.html 2019-06-06 12:41:53.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/RSRC.html 2020-10-15 14:55:18.000000000 +0000 @@ -8,13 +8,13 @@

      RSRC Tags

      -

      Tags extracted from Mac OS resource files and DFONT files. These tags may -also be extracted from the resource fork of any file in OS X, either by -adding "/..namedfork/rsrc" to the filename to process the resource fork -alone, or by using the ExtractEmbedded (-ee) option to process the resource -fork as a sub-document of the main file. When writing, ExifTool preserves -the Mac OS resource fork by default, but it may deleted with -rsrc:all= -on the command line.

      +

      Tags extracted from Mac OS resource files, DFONT files and "._" sidecar +files. These tags may also be extracted from the resource fork of any file +in OS X, either by adding "/..namedfork/rsrc" to the filename to process the +resource fork alone, or by using the ExtractEmbedded (-ee) option to process +the resource fork as a sub-document of the main file. When writing, +ExifTool preserves the Mac OS resource fork by default, but it may deleted +with -rsrc:all= on the command line.

      @@ -69,7 +69,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Mar 12, 2012 +
      Last revised Oct 15, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Samsung.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Samsung.html --- libimage-exiftool-perl-11.88/html/TagNames/Samsung.html 2019-12-16 13:55:16.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Samsung.html 2021-08-12 12:24:15.000000000 +0000 @@ -495,15 +495,17 @@

      Samsung Trailer Tags

      Tags extracted from the trailer of JPEG images written when using certain features (such as "Sound & Shot" or "Shot & More") from Samsung models such -as the Galaxy S4 and Tab S.

      +as the Galaxy S4 and Tab S, and from the 'sefd' atom in HEIC images from the +Samsung S10+.

      - - + + @@ -530,8 +532,9 @@ - - + + @@ -546,22 +549,26 @@ - + + + + + - + - + - + @@ -899,7 +906,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Dec 16, 2019 +
      Last revised Aug 12, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Shortcuts.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Shortcuts.html --- libimage-exiftool-perl-11.88/html/TagNames/Shortcuts.html 2019-10-22 11:27:44.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Shortcuts.html 2021-02-18 20:38:35.000000000 +0000 @@ -277,11 +277,24 @@ + + + + +
      Tag Name WritableValues / Notes
      DepthMapDatanoDepthMapData +
      DepthMapData2
      no
      no
       
      DepthMapNameno  
      EmbeddedImagenoEmbeddedImage +
      EmbeddedImage2
      no
      no
       
      EmbeddedImageNameno  
      SingleShotDepthMapMCCData no  
      SingleShotDepthMapno 
      SingleShotMeta - --> Samsung SingleShotMeta Tags
      SurroundShotVideo no  
      SurroundShotVideoName no  
      TimeStamp no  
      (Unsafe tags in JPEG images which are normally not copied. Defined here as a shortcut to use when rebuilding JPEG EXIF from scratch. See FAQ number 20 for more information)
      ls-lyesFilePermissions +
      FileHardLinks +
      FileUserID +
      FileGroupID +
      FileSize# +
      FileModifyDate +
      FileName
      (mimics columns shown by Unix "ls -l" command. Includes some tags which are +extracted only if the API SystemTags option +is enabled)

      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Oct 22, 2019 +
      Last revised Feb 18, 2021

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Sony.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Sony.html --- libimage-exiftool-perl-11.88/html/TagNames/Sony.html 2020-01-31 17:11:39.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Sony.html 2022-02-09 12:08:45.000000000 +0000 @@ -45,9 +45,10 @@
      3 = Standard
      4 = Economy
      5 = Extra Fine -
      6 = RAW + JPEG +
      6 = RAW + JPEG/HEIF
      7 = Compressed RAW
      8 = Compressed RAW + JPEG +
      9 = Light
      4294967295 = n/a
      @@ -740,13 +741,16 @@ '0 0' = n/a
      '1 0' = Off
      '1 1' = Standard -
      '1 2' = High
      +
      '1 2' = High +
      '65535 65535' = n/a 0x2029 RAWFileType int16u 0 = Compressed RAW -
      1 = Uncompressed RAW
      +
      1 = Uncompressed RAW +
      2 = Lossless Compressed RAW +
      65535 = n/a 0x202a Tag202a @@ -782,13 +786,15 @@ int16u[2]
      '0 0' = n/a -
      '0 1' = Standard JPEG -
      '0 2' = Fine JPEG -
      '0 3' = Extra Fine JPEG +
      '0 1' = Standard +
      '0 2' = Fine +
      '0 3' = Extra Fine +
      '0 4' = Light
      '1 0' = RAW -
      '1 1' = RAW + Standard JPEG -
      '1 2' = RAW + Fine JPEG -
      '1 3' = RAW + Extra Fine JPEG
      +
      '1 1' = RAW + Standard +
      '1 2' = RAW + Fine +
      '1 3' = RAW + Extra Fine +
      '1 4' = RAW + Light 0x202f @@ -801,23 +807,62 @@ string   +0x2032 +Shadows +int32s +  + +0x2033 +Highlights +int32s +  + +0x2034 +Fade +int32s +  + +0x2035 +SharpnessRange +int32s +  + +0x2036 +Clarity +int32s +  + +0x2037 +FocusFrameSize +no +(width and height of FocusFrame, centered on FocusLocation) + +0x2039 +JPEG-HEIFSwitch +int16u +0 = JPEG +
      1 = HEIF +
      65535 = n/a
      + 0x3000 ShotInfo - --> Sony ShotInfo Tags - + 0x900b Tag900b - --> Sony Tag900b Tags - + 0x9050 Tag9050a -
      Tag9050b --
      - +
      Tag9050b +
      Tag9050c +-
      -
      - --> Sony Tag9050a Tags -
      --> Sony Tag9050b Tags - +
      --> Sony Tag9050b Tags +
      --> Sony Tag9050c Tags + 0x9400 Tag9400a
      Tag9400b @@ -826,22 +871,22 @@ --> Sony Tag9400a Tags
      --> Sony Tag9400b Tags
      --> Sony Tag9400c Tags - + 0x9401 Tag9401 - --> Sony Tag9401 Tags - + 0x9402 Tag9402 - --> Sony Tag9402 Tags - + 0x9403 Tag9403 - --> Sony Tag9403 Tags - + 0x9404 Tag9404a
      Tag9404b @@ -850,35 +895,40 @@ --> Sony Tag9404a Tags
      --> Sony Tag9404b Tags
      --> Sony Tag9404c Tags - + 0x9405 Tag9405a
      Tag9405b -
      - --> Sony Tag9405a Tags
      --> Sony Tag9405b Tags - + 0x9406 Tag9406 - --> Sony Tag9406 Tags - + 0x940a Tag940a - --> Sony Tag940a Tags - + 0x940c Tag940c - --> Sony Tag940c Tags - + 0x940e AFInfo
      Tag940e -
      - --> Sony AFInfo Tags
      --> Sony Tag940e Tags + +0x9416 +Sony_0x9416 +- +--> Sony Tag9416 Tags 0xb000 FileFormat @@ -894,7 +944,8 @@
      '3 3 1 0' = ARW 2.3.1
      '3 3 2 0' = ARW 2.3.2
      '3 3 3 0' = ARW 2.3.3 -
      '3 3 5 0' = ARW 2.3.5 +
      '3 3 5 0' = ARW 2.3.5 +
      '4 0 0 0' = ARW 4.0 0xb001 @@ -942,12 +993,12 @@
      299 = NEX-VG900
      300 = NEX-VG30E
      302 = ILCE-3000 / ILCE-3500 -
      303 = SLT-A58   - 305 = NEX-3N +
      303 = SLT-A58 +
      305 = NEX-3N
      306 = ILCE-7
      307 = NEX-5T -
      308 = DSC-RX100M2 -
      309 = DSC-RX10 +
      308 = DSC-RX100M2   + 309 = DSC-RX10
      310 = DSC-RX1R
      311 = ILCE-7R
      312 = ILCE-6000 @@ -983,7 +1034,16 @@
      375 = ILCE-7RM4
      376 = ILCE-9M2
      378 = ILCE-6600 -
      379 = ILCE-6100 +
      379 = ILCE-6100 +
      380 = ZV-1 +
      381 = ILCE-7C +
      382 = ZV-E10 +
      383 = ILCE-7SM3 +
      384 = ILCE-1 +
      385 = ILME-FX3 +
      386 = ILCE-7RM3A +
      387 = ILCE-7RM4A +
      388 = ILCE-7M4 0xb020 @@ -995,6 +1055,8 @@
      'BW' = B&W
      'Clear' = Clear
      'Deep' = Deep +
      'FL' = FL +
      'IN' = IN
      'Landscape' = Landscape
      'Light' = Light
      'Neutral' = Neutral @@ -1002,9 +1064,11 @@
      'None' = None
      'Portrait' = Portrait
      'Real' = Real +
      'SH' = SH
      'Sepia' = Sepia
      'Standard' = Standard
      'Sunset' = Sunset +
      'VV2' = Vivid 2
      'Vivid' = Vivid @@ -1107,16 +1171,21 @@
      7 = Adobe RGB
      12 = Neutral
      13 = Clear -
      14 = Deep   - 15 = Light -
      16 = Autumn Leaves -
      17 = Sepia +
      14 = Deep +
      15 = Light +
      16 = Autumn Leaves   + 17 = Sepia +
      18 = FL +
      19 = Vivid 2 +
      20 = IN +
      21 = SH
      100 = Neutral
      101 = Clear
      102 = Deep
      103 = Light
      104 = Night View
      105 = Autumn Leaves +
      255 = Off
      4294967295 = n/a @@ -4735,11 +4804,13 @@ 2= Sony LA-EA2 Adapter 3= Sony LA-EA3 Adapter 6= Sony LA-EA4 Adapter +7= Sony LA-EA5 Adapter 44= Metabones Canon EF Smart Adapter 78= Metabones Canon EF Smart Adapter Mark III or Other Adapter 184= Metabones Canon EF Speed Booster Ultra 234= Metabones Canon EF Smart Adapter Mark IV 239= Metabones Canon EF Speed Booster +24593= LA-EA4r MonsterAdapter 32784= Sony E 16mm F2.8 32785= Sony E 18-55mm F3.5-5.6 OSS 32786= Sony E 55-210mm F4.5-6.3 OSS @@ -4797,7 +4868,18 @@ 32852= Sony FE 600mm F4 GM OSS 32853= Sony E 16-55mm F2.8 G 32854= Sony E 70-350mm F4.5-6.3 G OSS +32855= Sony FE C 16-35mm T3.1 G 32858= Sony FE 35mm F1.8 +32859= Sony FE 20mm F1.8 G +32860= Sony FE 12-24mm F2.8 GM +32862= Sony FE 50mm F1.2 GM +32863= Sony FE 14mm F1.8 GM +32864= Sony FE 28-60mm F4-5.6 +32865= Sony FE 35mm F1.4 GM +32866= Sony FE 24mm F2.8 G +32867= Sony FE 40mm F2.5 G +32868= Sony FE 50mm F2.5 G +32874= Sony FE 70-200mm F2.8 GM OSS II 33072= Sony FE 70-200mm F2.8 GM OSS + 1.4X Teleconverter 33073= Sony FE 70-200mm F2.8 GM OSS + 2X Teleconverter 33076= Sony FE 100mm F2.8 STF GM OSS (macro mode) @@ -4827,6 +4909,18 @@ 49459= Tamron 35mm F2.8 Di III OSD M1:2 49460= Tamron 24mm F2.8 Di III OSD M1:2 49461= Tamron 20mm F2.8 Di III OSD M1:2 +49462= Tamron 70-180mm F2.8 Di III VXD +49463= Tamron 28-200mm F2.8-5.6 Di III RXD +49464= Tamron 70-300mm F4.5-6.3 Di III RXD +49465= Tamron 17-70mm F2.8 Di III-A VC RXD +49466= Tamron 150-500mm F5-6.7 Di III VC VXD +49467= Tamron 11-20mm F2.8 Di III-A RXD +49468= Tamron 18-300mm F3.5-6.3 Di III-A VC VXD +49469= Tamron 35-150mm F2-F2.8 Di III VXD +49470= Tamron 28-75mm F2.8 Di III VXD G2 +49473= Tokina atx-m 85mm F1.8 FE or Viltrox lens +49473.1= Viltrox 23mm F1.4 E +49473.2= Viltrox 56mm F1.4 E 49712= Tokina FiRIN 20mm F2 FE AF 49713= Tokina FiRIN 100mm F2.8 FE MACRO 50480= Sigma 30mm F1.4 DC DN | C @@ -4854,6 +4948,18 @@ 50515= Sigma 35mm F1.2 DG DN | A 50516= Sigma 14-24mm F2.8 DG DN | A 50517= Sigma 24-70mm F2.8 DG DN | A +50518= Sigma 100-400mm F5-6.3 DG DN OS | C +50521= Sigma 85mm F1.4 DG DN | A +50522= Sigma 105mm F2.8 DG DN MACRO | A +50523= Sigma 65mm F2 DG DN | C +50524= Sigma 35mm F2 DG DN | C +50525= Sigma 24mm F3.5 DG DN | C +50526= Sigma 28-70mm F2.8 DG DN | C +50527= Sigma 150-600mm F5-6.3 DG DN OS | S +50528= Sigma 35mm F1.4 DG DN | A +50529= Sigma 90mm F2.8 DG DN | C +50530= Sigma 24mm F2 DG DN | C +50531= Sigma 18-50mm F2.8 DC DN | C 50992= Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III 50993= Voigtlander HELIAR-HYPER WIDE 10mm F5.6 50994= Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III @@ -4865,12 +4971,21 @@ 51000= Voigtlander NOKTON 50mm F1.2 Aspherical 51001= Voigtlander NOKTON 21mm F1.4 Aspherical 51002= Voigtlander APO-LANTHAR 50mm F2 Aspherical +51003= Voigtlander NOKTON 35mm F1.2 Aspherical SE +51006= Voigtlander APO-LANTHAR 35mm F2 Aspherical 51504= Samyang AF 50mm F1.4 51505= Samyang AF 14mm F2.8 or Samyang AF 35mm F2.8 51505.1= Samyang AF 35mm F2.8 51507= Samyang AF 35mm F1.4 51508= Samyang AF 45mm F1.8 -51510= Samyang AF 18mm F2.8 +51510= Samyang AF 18mm F2.8 or Samyang AF 35mm F1.8 +51510.1= Samyang AF 35mm F1.8 +51512= Samyang AF 75mm F1.8 +51513= Samyang AF 35mm F1.8 +51514= Samyang AF 24mm F1.8 +51515= Samyang AF 12mm F2.0 +51516= Samyang AF 24-70mm F2.8 +51517= Samyang AF 50mm F1.4 II

      Sony CameraSettingsUnknown Tags

      @@ -5223,7 +5338,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4447 @@ -5248,7 +5368,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4451 @@ -5615,7 +5740,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4451 @@ -5640,7 +5770,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4455 @@ -5839,7 +5974,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4415 @@ -5864,7 +6004,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4419 @@ -6049,7 +6194,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4539 @@ -6074,7 +6224,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4543 @@ -6263,7 +6418,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4503 @@ -6288,7 +6448,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4507 @@ -6528,7 +6693,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4175 @@ -6553,7 +6723,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 4179 @@ -6738,7 +6913,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 583 @@ -6763,7 +6943,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 587 @@ -6994,7 +7179,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 583 @@ -7019,7 +7209,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 587 @@ -7126,7 +7321,7 @@

      Sony Tag2010i Tags

      -

      Valid for ILCE-6100/6400/6600/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M6/ +

      Valid for ILCE-6100/6400/6600/7C/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M6/ RX100M5A/RX100M7/HX99.

      @@ -7255,7 +7450,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10)
      +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 568 @@ -7280,7 +7480,12 @@
      28 = Gamma S-Log2 (PP7)
      29 = Gamma ITU709 (800%)
      31 = Gamma S-Log3 (PP8 or PP9) -
      33 = Gamma HLG2 (PP10) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH 572 @@ -7891,7 +8096,7 @@

      Sony Tag9050b Tags

      -

      Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/ +

      Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/ 7SM2/9/9M2, ILCA-99M2.

      @@ -8085,6 +8290,83 @@  
      +

      Sony Tag9050c Tags

      +

      Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      38Shutterint16u[3]'0 0 0' = Silent / Electronic (0 0 0)
      57FlashStatusint8u +
      0 = No Flash present +
      2 = Flash Inhibited +
      64 = Built-in Flash present +
      65 = Built-in Flash Fired +
      66 = Built-in Flash Inhibited +
      128 = External Flash present +
      129 = External Flash Fired
      +
      58ShutterCountint32u~(total number of image exposures made by the camera)
      70SonyExposureTimeint16u 
      72SonyFNumberint16u 
      75ReleaseMode2int8u--> Sony ReleaseMode2 Values
      80ShutterCount2int32u 
      102SonyExposureTimeint16u 
      104SonyFNumberint16u 
      107ReleaseMode2int8u--> Sony ReleaseMode2 Values
      136InternalSerialNumberint8u[6]~ 
      138InternalSerialNumberint8u[6]~ 
      +

      Sony Tag9400a Tags

      Valid for many DSC, NEX and SLT models

      @@ -8243,8 +8525,8 @@

      Sony Tag9400c Tags

      Valid for DSC-HX60V/HX80/HX90V/HX99/HX350/HX400V/QX30/RX0/RX1RM2/RX10/ RX10M2/RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/WX220/ -WX350/WX500, ILCE-7/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2/5000/5100/6000/ -6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.

      +WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/ +5100/6000/6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.

      @@ -8257,10 +8539,9 @@ - - - + + + @@ -8320,7 +8601,12 @@ +
      3 = JPEG + MPO +
      1 = JPEG +
      2 = RAW +
      3 = RAW + JPEG +
      4 = HEIF +
      6 = RAW + HEIF @@ -8345,6 +8631,16 @@ + + + + + + + + + + @@ -8899,7 +9195,7 @@
      --> Sony ReleaseMode2 Values
      10ShotNumberSincePowerUp -
      ShotNumberSincePowerUp
      int8u
      int32u
       
      ShotNumberSincePowerUpint32u(valid only for some models)
      18 SequenceImageNumber0 = JPEG
      1 = RAW
      2 = RAW + JPEG -
      3 = JPEG + MPO
      71 SonyImageHeight- --> Sony ISOInfo Tags
      1181ISOInfo---> Sony ISOInfo Tags
      1185ISOInfo---> Sony ISOInfo Tags
      1186 ISOInfo -

      Sony Tag940c Tags

      -

      NEX and ILCE models only.

      +

      E-mount cameras only.

      @@ -10668,6 +10964,162 @@ 16-bit TIFF image)
      +

      Sony Tag9416 Tags

      +

      Valid for the ILCE-1/7M4/7SM3, ILME-FX3.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      0Tag9416_0000no 
      4SonyISOno 
      6StopsAboveBaseISOno 
      10SonyExposureTime2no 
      12ExposureTimeno 
      16SonyFNumber2no 
      18SonyMaxApertureValueno 
      29SequenceImageNumberno(number of images captured in burst sequence)
      53ExposureProgramno--> Sony ExposureProgram3 Values
      72LensMountno0 = Unknown +
      1 = A-mount +
      2 = E-mount +
      3 = A-mount (3)
      73LensFormatno0 = Unknown +
      1 = APS-C +
      2 = Full-frame
      74LensMountno0 = Unknown +
      1 = A-mount +
      2 = E-mount
      75LensType2no--> Sony LensType2 Values
      77LensTypeno--> Sony LensType Values
      79DistortionCorrParamsno 
      112PictureProfileno +
      0 = Gamma Still - Standard/Neutral (PP2) +
      1 = Gamma Still - Portrait +
      3 = Gamma Still - Night View/Portrait +
      4 = Gamma Still - B&W/Sepia +
      5 = Gamma Still - Clear +
      6 = Gamma Still - Deep +
      7 = Gamma Still - Light +
      8 = Gamma Still - Vivid +
      9 = Gamma Still - Real +
      10 = Gamma Movie (PP1) +
      22 = Gamma ITU709 (PP3 or PP4) +
      24 = Gamma Cine1 (PP5) +
      25 = Gamma Cine2 (PP6) +
      26 = Gamma Cine3 +
      27 = Gamma Cine4 +
      28 = Gamma S-Log2 (PP7) +
      29 = Gamma ITU709 (800%) +
      31 = Gamma S-Log3 (PP8 or PP9) +
      33 = Gamma HLG2 (PP10) +
      34 = Gamma HLG3 +
      37 = FL +
      38 = VV2 +
      39 = IN +
      40 = SH
      +
      113FocalLengthno 
      115MinFocalLengthno 
      117MaxFocalLengthno 
      2191VignettingCorrParamsno 
      2193VignettingCorrParamsno 
      2324ChromaticAberrationCorrParamsno 
      2326ChromaticAberrationCorrParamsno 
      +

      Sony PIC Tags

      The TextInfo data is extracted as a block to preserve the formatting, and some of the more interesting information is extracted as separate tags.

      @@ -11260,15 +11712,116 @@ Tag IDTag Name WritableValues / Notes +0x8000 +FNumber +no +  + +0x8109 +ExposureTime +no +  + +0x810a +MasterGainAdjustment +no +  + +0x810b +ISO +no +  + +0x810c +ElectricalExtenderMagnification +no +  + +0x8500 +GPSVersionID +no +  + +0x8501 +GPSLatitudeRef +no +'N' = North +
      'S' = South
      + +0x8502 +GPSLatitude +no +  + +0x8503 +GPSLongitudeRef +no +'E' = East +
      'W' = West
      + +0x8504 +GPSLongitude +no +  + +0x8507 +GPSTimeStamp +no +  + +0x8509 +GPSStatus +no +'A' = Measurement Active +
      'V' = Measurement Void
      + +0x850a +GPSMeasureMode +no +2 = 2-Dimensional Measurement +
      3 = 3-Dimensional Measurement
      + +0x8512 +GPSMapDatum +no +  + +0x851d +GPSDateStamp +no +  + +0xe303 +WhiteBalance +no + + +
      1 = Incandescent +
      2 = Fluorescent +
      4 = Daylight
        5 = Cloudy +
      6 = Custom +
      255 = Preset
      + + 0xe304 DateTime no   + +0xe43b +PitchRollYaw +no +  + +0xe44b +Accelerometer +no + 

      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Jan 31, 2020 +
      Last revised Feb 9, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/Stim.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/Stim.html --- libimage-exiftool-perl-11.88/html/TagNames/Stim.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/Stim.html 2020-11-27 16:35:40.000000000 +0000 @@ -10,8 +10,8 @@

      Stim Tags

      These tags are part of the CIPA Stereo Still Image specification, and are found in the APP3 "Stim" segment of JPEG images. See -http://www.cipa.jp/std/documents/e/DC-006_E.pdf for the -official specification.

      +https://web.archive.org/web/20190718152459/http://www.cipa.jp/std/documents/e/DC-006_E.pdf +for the official specification.

      @@ -195,7 +195,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Sep 17, 2014 +
      Last revised Nov 27, 2020

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/XMP.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/XMP.html --- libimage-exiftool-perl-11.88/html/TagNames/XMP.html 2020-02-20 13:21:27.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/XMP.html 2022-01-12 22:57:16.000000000 +0000 @@ -28,15 +28,16 @@ real is a floating point number, rational is entered as a floating point number but stored as two integer strings separated by a '/' character, date is a date/time string entered in the format "YYYY:mm:dd -HH:MM:SS[.ss][+/-HH:MM]", boolean is either "True" or "False", struct -indicates a structured tag, and lang-alt is a tag that supports alternate -languages.

      +HH:MM:SS[.ss][+/-HH:MM]", boolean is either "True" or "False" (but "true" +and "false" may be written as a ValueConv value for compatibility with +non-conforming applications), struct indicates a structured tag, and +lang-alt is a tag that supports alternate languages.

      When reading, struct tags are extracted only if the Struct (-struct) option is used. Otherwise the corresponding Flattened tags, indicated by an underline (_) after the Writable type, are extracted. When copying, by default both structured and flattened tags are available, but -the flattened tags are considered "unsafe" so they they aren't copied unless +the flattened tags are considered "unsafe" so they aren't copied unless specified explicitly. The Struct option may be disabled by setting Struct to 0 via the API or with --struct on the command line to copy only flattened tags, or enabled by setting Struct to 1 via the API or with -struct on the @@ -110,161 +111,169 @@

      + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + @@ -314,46 +323,50 @@ + + + + - + - + - + - + - + - + - + - + - + - + @@ -686,14 +699,18 @@ + + + + - + - + @@ -840,6 +857,14 @@ + + + + + + + + @@ -860,66 +885,172 @@ - + - + + + + + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + _ = Flattened'>integer/_ + - + - + _ = Flattened'>string/_ + - + - + _ = Flattened'>boolean/_ + - + - + _ = Flattened'>string/_ + - - - + + + - + - + - + - + - + - + - + - + - + - + _ = Flattened'>real/_ + - + - + _ = Flattened + + = List'>string/_+ + - + - + - + - + _ = Flattened'>boolean/_ + - + - + - + - + - + - + - + + + + + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + - + + + + + - + - + - + - + - + - + _ = Flattened'>string/_ + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + - + - + - + - + - + _ = Flattened'>string/_ + - + - + - + - + - + - + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>string/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>string/_+ + - + - + _ = Flattened + + = List'>integer/_+ + - + - + _ = Flattened + + = List'>string/_+ + - + - + _ = Flattened + + = List'>string/_+ + - + - + _ = Flattened + + = List'>string/_+ + - + - + - + - - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + - + + + + + - + - + - + - - + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + - + - + - + - + - - - - - - - - - + - + - + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - + + - - - + + + - + - + - - - + + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - - + + - - - + + + - - + + - + - - + + - - + + - + - + - + - + - + - + +
      (GradientBasedCorrectionsCorrectionMasks) - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + - + _ = Flattened + + = List'>string/_+ + - + - + _ = Flattened + + = List'>string/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>boolean/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>string/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + + + + + + + + + + + + + + + + + + + + + - + + + + + - + - + - + - + - + - + - + + + + + - + + + + + - + - + - + - + - + - + _ = Flattened'>boolean/_ + - + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + _ = Flattened + + = List'>string/_+ + - + - + - + - + _ = Flattened'>boolean/_ + - + - + - + - + - + - + - + + + + + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + - + + + + + - + - + - + - + - + - + _ = Flattened'>string/_ + - + - + - + - + - + - + - + - + - + - + _ = Flattened'>real/_ + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + _ = Flattened'>string/_ + - - - + + + - - - + + + - - - + + + - + - + - + + + + + - + + + + + - + - + _ = Flattened + + = List'>string/_+ + - + - + _ = Flattened + + = List'>string/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>boolean/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + - + _ = Flattened + + = List'>string/_+ + - + - + _ = Flattened + + = List'>real/_+ + - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + _ = Flattened'>real/_ + - + - + _ = Flattened'>real/_ + - + - + - + - + - + - + - + - + - + - + _ = Flattened'>real/_ + - + - + - + - + - + - + _ = Flattened'>real/_ + - + - + _ = Flattened'>real/_ + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - - + + - - + + - - - - - + - - - - - - - - - - - - - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - + - + - + - - - + + + - - + + - - + + - - + + - - + + - + - + - - - - - - - -
      - --> XMP apple_fi Tags
      ast---> Nikon ast Tags
      aux - --> XMP aux Tags
      cc - --> XMP cc Tags
      cell - --> XMP cell Tags
      crd - --> XMP crd Tags
      creatorAtom - --> XMP creatorAtom Tags
      crs - --> XMP crs Tags
      dc - --> XMP dc Tags
      Device - --> XMP Device Tags
      dex - --> XMP dex Tags
      DICOM - --> XMP DICOM Tags
      digiKam - --> XMP digiKam Tags
      drone-dji - --> DJI XMP Tags
      dwc - --> DarwinCore Tags
      exif - --> XMP exif Tags
      exifEX - --> XMP exifEX Tags
      expressionmedia - --> XMP ExpressionMedia Tags
      extensis - --> XMP extensis Tags
      fpv - --> XMP fpv Tags
      GAudio - --> XMP GAudio Tags
      GCamera - --> XMP GCamera Tags
      GCreations - --> XMP GCreations Tags
      GDepth - --> XMP GDepth Tags
      getty - --> XMP GettyImages Tags
      GFocus - --> XMP GFocus Tags
      GImage - --> XMP GImage Tags
      GPano - --> XMP GPano Tags
      GSpherical - --> XMP GSpherical Tags
      ics - --> XMP ics Tags
      iptcCore - --> XMP iptcCore Tags
      iptcExt - --> XMP iptcExt Tags
      LImage - --> XMP LImage Tags
      lr - --> XMP Lightroom Tags
      mediapro - --> XMP MediaPro Tags
      microsoft - --> Microsoft XMP Tags
      MP - --> Microsoft MP Tags
      MP1 - --> Microsoft MP1 Tags
      mwg-coll - --> MWG Collections Tags
      mwg-kw - --> MWG Keywords Tags
      mwg-rs - --> MWG Regions Tags
      nine---> Nikon nine Tags
      pdf -- --> XMP rdf Tags
      sdc---> Nikon sdc Tags
      swf - --> XMP swf Tags
      tiff - --> XMP tiff Tags
      x - --> XMP x Tags
      xmp - --> XMP xmp Tags
      xmpBJ - --> XMP xmpBJ Tags
      xmpDM - --> XMP xmpDM Tags
      xmpMM - --> XMP xmpMM Tags
      xmpNote - --> XMP xmpNote Tags
      xmpPLUS - --> XMP xmpPLUS Tags
      xmpRights - --> XMP xmpRights Tags
      xmpTPg - --> XMP xmpTPg Tags
      string/  
      NeutralDensityFactorstring 
      OwnerName string/  
      SerialNumber string/  
      VignetteCorrectionAlreadyApplied boolean  
      boolean/  
      AutoToneDigeststring/ 
      AutoToneDigestNoSatstring/ 
      AutoWhiteVersion integer/  
      integer/  
      CameraProfileCameraModelRestriction string/  
      CameraProfileDigestCameraProfile string/  
      CameraProfileDigeststring/ 
      ChromaticAberrationB integer/  
      ChromaticAberrationR integer/  
      CircularGradientBasedCorrections struct+ --> Correction Struct
      CircGradBasedCorrActive boolean/_ (CircularGradientBasedCorrectionsCorrectionActive)
      CircGradBasedCorrAmount real/_ (CircularGradientBasedCorrectionsCorrectionAmount)
      CircGradBasedCorrMasks struct_+ --> CorrectionMask Struct
      (CircularGradientBasedCorrectionsCorrectionMasks)
      CircGradBasedCorrMaskAlpha real/_ (CircularGradientBasedCorrectionsCorrectionMasksAlpha)
      CircGradBasedCorrMaskAngle real/_ (CircularGradientBasedCorrectionsCorrectionMasksAngle)
      CircGradBasedCorrMaskBottom real/_ (CircularGradientBasedCorrectionsCorrectionMasksBottom)
      CircGradBasedCorrMaskCenterValue real/_ (CircularGradientBasedCorrectionsCorrectionMasksCenterValue)
      CircGradBasedCorrMaskCenterWeight real/_ (CircularGradientBasedCorrectionsCorrectionMasksCenterWeight)
      CircGradBasedCorrMaskRangestruct_+--> CorrRangeMask Struct +
      (CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMask; called CorrectionRangeMask by the spec)
      CircGradBasedCorrMaskRangeAreaModelsstruct_+--> AreaModels Struct +
      (CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels)
      CircGradBasedCorrMaskRangeAreaModelsComponentsstring/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents)
      CircGradBasedCorrMaskRangeAreaModelsColorSampleInfostring/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      CircGradBasedCorrMaskRangeColorAmountreal/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount)
      CircGradBasedCorrMaskRangeDepthFeatherreal/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather)
      CircGradBasedCorrMaskRangeDepthMaxreal/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax)
      CircGradBasedCorrMaskRangeDepthMinreal/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin)
      CircGradBasedCorrMaskRangeInvertboolean/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert)
      CircGradBasedCorrMaskRangeLumFeatherreal/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather)
      CircGradBasedCorrMaskRangeLuminanceDepthSampleInfostring/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo)
      CircGradBasedCorrMaskRangeLumMaxreal/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax)
      CircGradBasedCorrMaskRangeLumMinreal/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin)
      CircGradBasedCorrMaskRangeLumRangestring/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange)
      CircGradBasedCorrMaskRangeSampleTypeinteger/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType)
      CircGradBasedCorrMaskRangeTypestring/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskType)
      CircGradBasedCorrMaskRangeVersionstring/_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion)
      CircGradBasedCorrMaskDabs real/_ (CircularGradientBasedCorrectionsCorrectionMasksFullY)
      CircGradBasedCorrMaskInputDigeststring/_(CircularGradientBasedCorrectionsCorrectionMasksInputDigest)
      CircGradBasedCorrMaskLeft real/_ (CircularGradientBasedCorrectionsCorrectionMasksLeft)
      CircGradBasedCorrMaskMaskActiveboolean/_(CircularGradientBasedCorrectionsCorrectionMasksMaskActive)
      CircGradBasedCorrMaskValueCircGradBasedCorrMaskMaskBlendMode real/_(CircularGradientBasedCorrectionsCorrectionMasksMaskValue)
      (CircularGradientBasedCorrectionsCorrectionMasksMaskBlendMode)
      CircGradBasedCorrMaskMidpointCircGradBasedCorrMaskMaskDigest real/_(CircularGradientBasedCorrectionsCorrectionMasksMidpoint)
      (CircularGradientBasedCorrectionsCorrectionMasksMaskDigest)
      CircGradBasedCorrMaskPerimeterValueCircGradBasedCorrMaskMaskInverted real/_(CircularGradientBasedCorrectionsCorrectionMasksPerimeterValue)
      (CircularGradientBasedCorrectionsCorrectionMasksMaskInverted)
      CircGradBasedCorrMaskRadiusCircGradBasedCorrMaskMaskName real/_(CircularGradientBasedCorrectionsCorrectionMasksRadius)
      (CircularGradientBasedCorrectionsCorrectionMasksMaskName)
      CircGradBasedCorrMaskRightreal/_(CircularGradientBasedCorrectionsCorrectionMasksRight)
      CircGradBasedCorrMaskMasksstruct_+--> CorrectionMask Struct +
      (CircularGradientBasedCorrectionsCorrectionMasksMasks)
      CircGradBasedCorrMaskRoundnessCircGradBasedCorrMaskMasksAlpha real/_(CircularGradientBasedCorrectionsCorrectionMasksRoundness)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksAlpha)
      CircGradBasedCorrMaskSizeXCircGradBasedCorrMaskMasksAngle real/_(CircularGradientBasedCorrectionsCorrectionMasksSizeX)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksAngle)
      CircGradBasedCorrMaskSizeYCircGradBasedCorrMaskMasksBottom real/_(CircularGradientBasedCorrectionsCorrectionMasksSizeY)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksBottom)
      CircGradBasedCorrMaskTopCircGradBasedCorrMaskMasksCenterValue real/_(CircularGradientBasedCorrectionsCorrectionMasksTop)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksCenterValue)
      CircGradBasedCorrMaskVersionCircGradBasedCorrMaskMasksCenterWeight integer/_(CircularGradientBasedCorrectionsCorrectionMasksVersion)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksCenterWeight)
      CircGradBasedCorrMaskWhatCircGradBasedCorrMaskMasksDabs string/_(CircularGradientBasedCorrectionsCorrectionMasksWhat)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksDabs)
      CircGradBasedCorrMaskXCircGradBasedCorrMaskMasksFeather real/_(CircularGradientBasedCorrectionsCorrectionMasksX)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksFeather)
      CircGradBasedCorrMaskYCircGradBasedCorrMaskMasksFlipped real/_(CircularGradientBasedCorrectionsCorrectionMasksY)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksFlipped)
      CircGradBasedCorrMaskZeroXCircGradBasedCorrMaskMasksFlow real/_(CircularGradientBasedCorrectionsCorrectionMasksZeroX)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksFlow)
      CircGradBasedCorrMaskZeroYCircGradBasedCorrMaskMasksFullX real/_(CircularGradientBasedCorrectionsCorrectionMasksZeroY)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksFullX)
      CircGradBasedCorrBrightnessCircGradBasedCorrMaskMasksFullY real/_(CircularGradientBasedCorrectionsLocalBrightness)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksFullY)
      CircGradBasedCorrClarityCircGradBasedCorrMaskMasksInputDigeststring/_(CircularGradientBasedCorrectionsCorrectionMasksMasksInputDigest)
      CircGradBasedCorrMaskMasksLeft real/_(CircularGradientBasedCorrectionsLocalClarity)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksLeft)
      CircGradBasedCorrMaskMasksMaskActiveboolean/_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskActive)
      CircGradBasedCorrClarity2012CircGradBasedCorrMaskMasksMaskBlendModeinteger/_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskBlendMode)
      CircGradBasedCorrMaskMasksMaskDigeststring/_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskDigest)
      CircGradBasedCorrMaskMasksMaskInvertedboolean/_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskInverted)
      CircGradBasedCorrMaskMasksMaskNamestring/_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskName)
      CircGradBasedCorrMaskMasksMaskSubTypestring/_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskSubType)
      CircGradBasedCorrMaskMasksMaskSyncIDstring/_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskSyncID)
      CircGradBasedCorrMaskMasksValue real/_(CircularGradientBasedCorrectionsLocalClarity2012)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksMaskValue)
      CircGradBasedCorrContrastCircGradBasedCorrMaskMasksMaskVersionstring/_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskVersion)
      CircGradBasedCorrMaskMasksMidpoint real/_(CircularGradientBasedCorrectionsLocalContrast)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksMidpoint)
      CircGradBasedCorrMaskMasksOriginstring/_(CircularGradientBasedCorrectionsCorrectionMasksMasksOrigin)
      CircGradBasedCorrContrast2012CircGradBasedCorrMaskMasksPerimeterValue real/_(CircularGradientBasedCorrectionsLocalContrast2012)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksPerimeterValue)
      CircGradBasedCorrDefringeCircGradBasedCorrMaskMasksRadius real/_(CircularGradientBasedCorrectionsLocalDefringe)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksRadius)
      CircGradBasedCorrExposureCircGradBasedCorrMaskMasksReferencePoint real/_(CircularGradientBasedCorrectionsLocalExposure)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksReferencePoint)
      CircGradBasedCorrExposure2012CircGradBasedCorrMaskMasksRight real/_(CircularGradientBasedCorrectionsLocalExposure2012)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksRight)
      CircGradBasedCorrHighlights2012CircGradBasedCorrMaskMasksRoundness real/_(CircularGradientBasedCorrectionsLocalHighlights2012)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksRoundness)
      CircGradBasedCorrLuminanceNoiseCircGradBasedCorrMaskMasksSizeX real/_(CircularGradientBasedCorrectionsLocalLuminanceNoise)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksSizeX)
      CircGradBasedCorrMoireCircGradBasedCorrMaskMasksSizeY real/_(CircularGradientBasedCorrectionsLocalMoire)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksSizeY)
      CircGradBasedCorrSaturationCircGradBasedCorrMaskMasksTop real/_(CircularGradientBasedCorrectionsLocalSaturation)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksTop)
      CircGradBasedCorrShadows2012CircGradBasedCorrMaskMaskSubTypestring/_(CircularGradientBasedCorrectionsCorrectionMasksMaskSubType)
      CircGradBasedCorrMaskMasksVersioninteger/_(CircularGradientBasedCorrectionsCorrectionMasksMasksVersion)
      CircGradBasedCorrMaskMasksWhatstring/_(CircularGradientBasedCorrectionsCorrectionMasksMasksWhat)
      CircGradBasedCorrMaskMasksWholeImageAreastring/_(CircularGradientBasedCorrectionsCorrectionMasksMasksWholeImageArea)
      CircGradBasedCorrMaskMasksX real/_(CircularGradientBasedCorrectionsLocalShadows2012)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksX)
      CircGradBasedCorrSharpnessCircGradBasedCorrMaskMasksY real/_(CircularGradientBasedCorrectionsLocalSharpness)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksY)
      CircGradBasedCorrTemperatureCircGradBasedCorrMaskMaskSyncID real/_(CircularGradientBasedCorrectionsLocalTemperature)
      (CircularGradientBasedCorrectionsCorrectionMasksMaskSyncID)
      CircGradBasedCorrTintCircGradBasedCorrMaskMasksZeroX real/_(CircularGradientBasedCorrectionsLocalTint)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksZeroX)
      CircGradBasedCorrHueCircGradBasedCorrMaskMasksZeroY real/_(CircularGradientBasedCorrectionsLocalToningHue)
      (CircularGradientBasedCorrectionsCorrectionMasksMasksZeroY)
      CircGradBasedCorrSaturationCircGradBasedCorrMaskValue real/_(CircularGradientBasedCorrectionsLocalToningSaturation)
      (CircularGradientBasedCorrectionsCorrectionMasksMaskValue)
      CircGradBasedCorrWhatCircGradBasedCorrMaskMaskVersion string/_(CircularGradientBasedCorrectionsWhat)
      (CircularGradientBasedCorrectionsCorrectionMasksMaskVersion)
      Clarityinteger/ 
      CircGradBasedCorrMaskMidpointreal/_(CircularGradientBasedCorrectionsCorrectionMasksMidpoint)
      Clarity2012integer/ 
      CircGradBasedCorrMaskOriginstring/_(CircularGradientBasedCorrectionsCorrectionMasksOrigin)
      ColorNoiseReductioninteger/ 
      CircGradBasedCorrMaskPerimeterValuereal/_(CircularGradientBasedCorrectionsCorrectionMasksPerimeterValue)
      ColorNoiseReductionDetailinteger/ 
      CircGradBasedCorrMaskRadiusreal/_(CircularGradientBasedCorrectionsCorrectionMasksRadius)
      ColorNoiseReductionSmoothnessinteger/ 
      CircGradBasedCorrMaskReferencePointstring/_(CircularGradientBasedCorrectionsCorrectionMasksReferencePoint)
      Contrastinteger/ 
      CircGradBasedCorrMaskRightreal/_(CircularGradientBasedCorrectionsCorrectionMasksRight)
      Contrast2012integer/ 
      CircGradBasedCorrMaskRoundnessreal/_(CircularGradientBasedCorrectionsCorrectionMasksRoundness)
      Converterstring/ 
      CircGradBasedCorrMaskSizeXreal/_(CircularGradientBasedCorrectionsCorrectionMasksSizeX)
      ConvertToGrayscaleboolean/ 
      CircGradBasedCorrMaskSizeYreal/_(CircularGradientBasedCorrectionsCorrectionMasksSizeY)
      CropAnglereal/ 
      CircGradBasedCorrMaskTopreal/_(CircularGradientBasedCorrectionsCorrectionMasksTop)
      CropBottomreal/ 
      CircGradBasedCorrMaskVersioninteger/_(CircularGradientBasedCorrectionsCorrectionMasksVersion)
      CropConstrainToWarpinteger/ 
      CircGradBasedCorrMaskWhatstring/_(CircularGradientBasedCorrectionsCorrectionMasksWhat)
      CropHeightreal/ 
      CircGradBasedCorrMaskWholeImageAreastring/_(CircularGradientBasedCorrectionsCorrectionMasksWholeImageArea)
      CropLeftreal/ 
      CircGradBasedCorrMaskXreal/_(CircularGradientBasedCorrectionsCorrectionMasksX)
      CropRightreal/ 
      CircGradBasedCorrMaskYreal/_(CircularGradientBasedCorrectionsCorrectionMasksY)
      CropTopreal/ 
      CircGradBasedCorrMaskZeroXreal/_(CircularGradientBasedCorrectionsCorrectionMasksZeroX)
      CropUnitinteger/0 = pixels -
      1 = inches -
      2 = cm
      CircGradBasedCorrMaskZeroYreal/_(CircularGradientBasedCorrectionsCorrectionMasksZeroY)
      CropUnitsinteger/0 = pixels -
      1 = inches -
      2 = cm
      CircGradBasedCorrCorrectionNamestring/_+(CircularGradientBasedCorrectionsCorrectionName)
      CropWidthreal/ 
      CircGradBasedCorrRangeMaskstruct_+--> CorrRangeMask Struct +
      (CircularGradientBasedCorrectionsCorrectionRangeMask; called CorrectionRangeMask by the spec)
      DefaultAutoGrayboolean/ 
      CircGradBasedCorrRangeMaskAreaModelsstruct_+--> AreaModels Struct +
      (CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModels)
      DefaultAutoToneboolean/ 
      CircGradBasedCorrRangeMaskAreaModelsComponentsstring/_+(CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents)
      DefaultsSpecificToISOboolean/ 
      CircGradBasedCorrRangeMaskAreaModelsColorSampleInfostring/_+(CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      DefaultsSpecificToSerialboolean/ 
      CircGradBasedCorrRangeMaskColorAmountreal/_+(CircularGradientBasedCorrectionsCorrectionRangeMaskColorAmount)
      Defringeinteger/ 
      CircGradBasedCorrRangeMaskDepthFeatherreal/_+(CircularGradientBasedCorrectionsCorrectionRangeMaskDepthFeather)
      DefringeGreenAmountinteger/ 
      CircGradBasedCorrRangeMaskDepthMaxreal/_+(CircularGradientBasedCorrectionsCorrectionRangeMaskDepthMax)
      DefringeGreenHueHiinteger/ 
      CircGradBasedCorrRangeMaskDepthMinreal/_+(CircularGradientBasedCorrectionsCorrectionRangeMaskDepthMin)
      DefringeGreenHueLointeger/ 
      CircGradBasedCorrRangeMaskInvertboolean/_+(CircularGradientBasedCorrectionsCorrectionRangeMaskInvert)
      DefringePurpleAmountinteger/ 
      DefringePurpleHueHiinteger/ 
      DefringePurpleHueLointeger/ 
      Dehazereal/ 
      DNGIgnoreSidecarsboolean/ 
      Exposurereal/ 
      Exposure2012real/ 
      FillLightinteger/ 
      GradientBasedCorrectionsstruct+--> Correction Struct
      GradientBasedCorrActiveboolean/_(GradientBasedCorrectionsCorrectionActive)
      GradientBasedCorrAmountreal/_(GradientBasedCorrectionsCorrectionAmount)
      GradientBasedCorrMasksstruct_+--> CorrectionMask Struct -
      (GradientBasedCorrectionsCorrectionMasks)
      GradientBasedCorrMaskAlphareal/_(GradientBasedCorrectionsCorrectionMasksAlpha)
      GradientBasedCorrMaskAnglereal/_(GradientBasedCorrectionsCorrectionMasksAngle)
      GradientBasedCorrMaskBottomreal/_(GradientBasedCorrectionsCorrectionMasksBottom)
      GradientBasedCorrMaskCenterValuereal/_(GradientBasedCorrectionsCorrectionMasksCenterValue)
      GradientBasedCorrMaskCenterWeightreal/_(GradientBasedCorrectionsCorrectionMasksCenterWeight)
      GradientBasedCorrMaskDabsstring/_(GradientBasedCorrectionsCorrectionMasksDabs)
      GradientBasedCorrMaskFeatherreal/_(GradientBasedCorrectionsCorrectionMasksFeather)
      GradientBasedCorrMaskFlippedboolean/_(GradientBasedCorrectionsCorrectionMasksFlipped)
      GradientBasedCorrMaskFlowreal/_(GradientBasedCorrectionsCorrectionMasksFlow)
      GradientBasedCorrMaskFullXreal/_(GradientBasedCorrectionsCorrectionMasksFullX)
      GradientBasedCorrMaskFullYCircGradBasedCorrRangeMaskLumFeather real/_(GradientBasedCorrectionsCorrectionMasksFullY)
      (CircularGradientBasedCorrectionsCorrectionRangeMaskLumFeather)
      GradientBasedCorrMaskLeftCircGradBasedCorrRangeMaskLuminanceDepthSampleInfo real/_(GradientBasedCorrectionsCorrectionMasksLeft)
      (CircularGradientBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo)
      GradientBasedCorrMaskValueCircGradBasedCorrRangeMaskLumMax real/_(GradientBasedCorrectionsCorrectionMasksMaskValue)
      (CircularGradientBasedCorrectionsCorrectionRangeMaskLumMax)
      GradientBasedCorrMaskMidpointCircGradBasedCorrRangeMaskLumMin real/_(GradientBasedCorrectionsCorrectionMasksMidpoint)
      (CircularGradientBasedCorrectionsCorrectionRangeMaskLumMin)
      GradientBasedCorrMaskPerimeterValueCircGradBasedCorrRangeMaskLumRange real/_(GradientBasedCorrectionsCorrectionMasksPerimeterValue)
      (CircularGradientBasedCorrectionsCorrectionRangeMaskLumRange)
      GradientBasedCorrMaskRadiusCircGradBasedCorrRangeMaskSampleType real/_(GradientBasedCorrectionsCorrectionMasksRadius)
      (CircularGradientBasedCorrectionsCorrectionRangeMaskSampleType)
      GradientBasedCorrMaskRightCircGradBasedCorrRangeMaskType real/_(GradientBasedCorrectionsCorrectionMasksRight)
      (CircularGradientBasedCorrectionsCorrectionRangeMaskType)
      GradientBasedCorrMaskRoundnessCircGradBasedCorrRangeMaskVersion real/_(GradientBasedCorrectionsCorrectionMasksRoundness)
      (CircularGradientBasedCorrectionsCorrectionRangeMaskVersion)
      GradientBasedCorrMaskSizeXCircGradBasedCorrCorrectionSyncID real/_(GradientBasedCorrectionsCorrectionMasksSizeX)
      (CircularGradientBasedCorrectionsCorrectionSyncID)
      GradientBasedCorrMaskSizeYCircGradBasedCorrBlacks2012 real/_(GradientBasedCorrectionsCorrectionMasksSizeY)
      (CircularGradientBasedCorrectionsLocalBlacks2012)
      GradientBasedCorrMaskTopCircGradBasedCorrBrightness real/_(GradientBasedCorrectionsCorrectionMasksTop)
      GradientBasedCorrMaskVersioninteger/_(GradientBasedCorrectionsCorrectionMasksVersion)
      GradientBasedCorrMaskWhatstring/_(GradientBasedCorrectionsCorrectionMasksWhat)
      (CircularGradientBasedCorrectionsLocalBrightness)
      GradientBasedCorrMaskXCircGradBasedCorrClarity real/_(GradientBasedCorrectionsCorrectionMasksX)
      (CircularGradientBasedCorrectionsLocalClarity)
      GradientBasedCorrMaskYCircGradBasedCorrClarity2012 real/_(GradientBasedCorrectionsCorrectionMasksY)
      (CircularGradientBasedCorrectionsLocalClarity2012)
      GradientBasedCorrMaskZeroXCircGradBasedCorrContrast real/_(GradientBasedCorrectionsCorrectionMasksZeroX)
      (CircularGradientBasedCorrectionsLocalContrast)
      GradientBasedCorrMaskZeroYCircGradBasedCorrContrast2012 real/_(GradientBasedCorrectionsCorrectionMasksZeroY)
      (CircularGradientBasedCorrectionsLocalContrast2012)
      GradientBasedCorrBrightnessCircGradBasedCorrDefringe real/_(GradientBasedCorrectionsLocalBrightness)
      (CircularGradientBasedCorrectionsLocalDefringe)
      GradientBasedCorrClarityCircGradBasedCorrDehaze real/_(GradientBasedCorrectionsLocalClarity)
      (CircularGradientBasedCorrectionsLocalDehaze)
      GradientBasedCorrClarity2012CircGradBasedCorrExposure real/_(GradientBasedCorrectionsLocalClarity2012)
      (CircularGradientBasedCorrectionsLocalExposure)
      GradientBasedCorrContrastCircGradBasedCorrExposure2012 real/_(GradientBasedCorrectionsLocalContrast)
      (CircularGradientBasedCorrectionsLocalExposure2012)
      GradientBasedCorrContrast2012CircGradBasedCorrHighlights2012 real/_(GradientBasedCorrectionsLocalContrast2012)
      (CircularGradientBasedCorrectionsLocalHighlights2012)
      GradientBasedCorrDefringeCircGradBasedCorrHue real/_(GradientBasedCorrectionsLocalDefringe)
      (CircularGradientBasedCorrectionsLocalHue)
      GradientBasedCorrExposureCircGradBasedCorrLuminanceNoise real/_(GradientBasedCorrectionsLocalExposure)
      (CircularGradientBasedCorrectionsLocalLuminanceNoise)
      GradientBasedCorrExposure2012CircGradBasedCorrMoire real/_(GradientBasedCorrectionsLocalExposure2012)
      (CircularGradientBasedCorrectionsLocalMoire)
      GradientBasedCorrHighlights2012CircGradBasedCorrSaturation real/_(GradientBasedCorrectionsLocalHighlights2012)
      (CircularGradientBasedCorrectionsLocalSaturation)
      GradientBasedCorrLuminanceNoiseCircGradBasedCorrShadows2012 real/_(GradientBasedCorrectionsLocalLuminanceNoise)
      (CircularGradientBasedCorrectionsLocalShadows2012)
      GradientBasedCorrMoireCircGradBasedCorrSharpness real/_(GradientBasedCorrectionsLocalMoire)
      (CircularGradientBasedCorrectionsLocalSharpness)
      GradientBasedCorrSaturationCircGradBasedCorrTemperature real/_(GradientBasedCorrectionsLocalSaturation)
      (CircularGradientBasedCorrectionsLocalTemperature)
      GradientBasedCorrShadows2012CircGradBasedCorrTexture real/_(GradientBasedCorrectionsLocalShadows2012)
      (CircularGradientBasedCorrectionsLocalTexture)
      GradientBasedCorrSharpnessCircGradBasedCorrTint real/_(GradientBasedCorrectionsLocalSharpness)
      (CircularGradientBasedCorrectionsLocalTint)
      GradientBasedCorrTemperatureCircGradBasedCorrToningHue real/_(GradientBasedCorrectionsLocalTemperature)
      (CircularGradientBasedCorrectionsLocalToningHue)
      GradientBasedCorrTintCircGradBasedCorrToningSaturation real/_(GradientBasedCorrectionsLocalTint)
      (CircularGradientBasedCorrectionsLocalToningSaturation)
      GradientBasedCorrHueCircGradBasedCorrWhites2012 real/_(GradientBasedCorrectionsLocalToningHue)
      (CircularGradientBasedCorrectionsLocalWhites2012)
      GradientBasedCorrSaturationreal/_(GradientBasedCorrectionsLocalToningSaturation)
      GradientBasedCorrWhatCircGradBasedCorrWhat string/_(GradientBasedCorrectionsWhat)
      (CircularGradientBasedCorrectionsWhat)
      Clarityinteger/ 
      GrainAmountClarity2012 integer/  
      GrainFrequencyClipboardAspectRatio integer/  
      GrainSizeClipboardOrientation integer/  
      GrayMixerAquainteger/Clusterstring/  
      GrayMixerBlueColorGradeBlending integer/  
      GrayMixerGreenColorGradeGlobalHue integer/  
      GrayMixerMagentaColorGradeGlobalLum integer/  
      GrayMixerOrangeinteger/ 
      GrayMixerPurpleinteger/ 
      GrayMixerRedinteger/ 
      GrayMixerYellowinteger/ 
      GreenHueinteger/ 
      GreenSaturationinteger/ 
      HasCropboolean/ 
      HasSettingsboolean/ 
      Highlight2012integer/ 
      HighlightRecoveryinteger/ 
      Highlights2012integer/ 
      HueAdjustmentAquainteger/ 
      HueAdjustmentBlueColorGradeGlobalSat integer/  
      HueAdjustmentGreenColorGradeHighlightLum integer/  
      HueAdjustmentMagentaColorGradeMidtoneHue integer/  
      HueAdjustmentOrangeColorGradeMidtoneLum integer/  
      HueAdjustmentPurpleColorGradeMidtoneSat integer/  
      HueAdjustmentRedColorGradeShadowLum integer/  
      HueAdjustmentYellowColorNoiseReduction integer/  
      IncrementalTemperatureColorNoiseReductionDetail integer/  
      IncrementalTintColorNoiseReductionSmoothness integer/  
      JPEGHandlingCompatibleVersion string/  
      LensManualDistortionAmountinteger/ 
      LensProfileChromaticAberrationScaleinteger/ 
      LensProfileDigestContactInfo string/  
      LensProfileDistortionScaleContrast integer/  
      LensProfileEnableContrast2012 integer/  
      LensProfileFilenameConverter string/  
      LensProfileMatchKeyCameraModelNamestring/ConvertToGrayscaleboolean/  
      LensProfileMatchKeyExifMakeCopyright string/  
      LensProfileMatchKeyExifModelstring/CropAnglereal/  
      LensProfileMatchKeyIsRawboolean/CropBottomreal/  
      LensProfileMatchKeyLensIDstring/CropConstrainToWarpinteger/  
      LensProfileMatchKeyLensInfostring/CropHeightreal/  
      LensProfileMatchKeyLensNamestring/CropLeftreal/  
      LensProfileMatchKeySensorFormatFactorCropRight real/  
      LensProfileNamestring/CropTopreal/  
      LensProfileSetupstring/ 
      CropUnitinteger/0 = pixels +
      1 = inches +
      2 = cm
      LensProfileVignettingScaleCropUnits integer/ 
      0 = pixels +
      1 = inches +
      2 = cm
      Lookstruct--> Look Struct
      CropWidthreal/ 
      LookNamestring/_DefaultAutoGrayboolean/  
      LuminanceAdjustmentAquainteger/DefaultAutoToneboolean/  
      LuminanceAdjustmentBlueinteger/DefaultsSpecificToISOboolean/  
      LuminanceAdjustmentGreeninteger/DefaultsSpecificToSerialboolean/  
      LuminanceAdjustmentMagentaDefringe integer/  
      LuminanceAdjustmentOrangeDefringeGreenAmount integer/  
      LuminanceAdjustmentPurpleDefringeGreenHueHi integer/  
      LuminanceAdjustmentRedDefringeGreenHueLo integer/  
      LuminanceAdjustmentYellowDefringePurpleAmount integer/  
      LuminanceNoiseReductionContrastDefringePurpleHueHi integer/  
      LuminanceNoiseReductionDetailDefringePurpleHueLo integer/  
      LuminanceSmoothinginteger/Dehazereal/  
      MoireFilterstring/'Off' = Off -
      'On' = On
      Descriptionlang-alt/ 
      NegativeCacheLargePreviewSizeinteger/DNGIgnoreSidecarsboolean/  
      NegativeCacheMaximumSizeExposure real/  
      NegativeCachePathstring/Exposure2012real/  
      OverrideLookVignetteboolean/FillLightinteger/  
      PaintBasedCorrectionsGradientBasedCorrections struct+ --> Correction Struct
      PaintCorrectionActiveGradientBasedCorrActive boolean/_(PaintBasedCorrectionsCorrectionActive)
      (GradientBasedCorrectionsCorrectionActive)
      PaintCorrectionAmountGradientBasedCorrAmount real/_(PaintBasedCorrectionsCorrectionAmount)
      (GradientBasedCorrectionsCorrectionAmount)
      PaintBasedCorrectionMasksGradientBasedCorrMasks struct_+ --> CorrectionMask Struct -
      (PaintBasedCorrectionsCorrectionMasks)
      PaintCorrectionMaskAlphaGradientBasedCorrMaskAlpha real/_(PaintBasedCorrectionsCorrectionMasksAlpha)
      (GradientBasedCorrectionsCorrectionMasksAlpha)
      PaintCorrectionMaskAngleGradientBasedCorrMaskAngle real/_(PaintBasedCorrectionsCorrectionMasksAngle)
      (GradientBasedCorrectionsCorrectionMasksAngle)
      PaintCorrectionMaskBottomGradientBasedCorrMaskBottom real/_(PaintBasedCorrectionsCorrectionMasksBottom)
      (GradientBasedCorrectionsCorrectionMasksBottom)
      PaintCorrectionMaskCenterValueGradientBasedCorrMaskCenterValue real/_(PaintBasedCorrectionsCorrectionMasksCenterValue)
      (GradientBasedCorrectionsCorrectionMasksCenterValue)
      PaintCorrectionMaskCenterWeightGradientBasedCorrMaskCenterWeight real/_(PaintBasedCorrectionsCorrectionMasksCenterWeight)
      (GradientBasedCorrectionsCorrectionMasksCenterWeight)
      PaintCorrectionMaskDabsGradientBasedCorrMaskRangestruct_+--> CorrRangeMask Struct +
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMask; called CorrectionRangeMask by the spec)
      GradientBasedCorrMaskRangeAreaModelsstruct_+--> AreaModels Struct +
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels)
      GradientBasedCorrMaskRangeAreaModelsComponents string/_(PaintBasedCorrectionsCorrectionMasksDabs)
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents)
      PaintCorrectionMaskFeatherGradientBasedCorrMaskRangeAreaModelsColorSampleInfo real/_(PaintBasedCorrectionsCorrectionMasksFeather)
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      PaintCorrectionMaskFlippedGradientBasedCorrMaskRangeColorAmount boolean/_(PaintBasedCorrectionsCorrectionMasksFlipped)
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount)
      PaintCorrectionMaskFlowGradientBasedCorrMaskRangeDepthFeather real/_(PaintBasedCorrectionsCorrectionMasksFlow)
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather)
      PaintCorrectionMaskFullXGradientBasedCorrMaskRangeDepthMax real/_(PaintBasedCorrectionsCorrectionMasksFullX)
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax)
      PaintCorrectionMaskFullYGradientBasedCorrMaskRangeDepthMin real/_(PaintBasedCorrectionsCorrectionMasksFullY)
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin)
      PaintCorrectionMaskLeftGradientBasedCorrMaskRangeInvert real/_(PaintBasedCorrectionsCorrectionMasksLeft)
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert)
      PaintCorrectionMaskValueGradientBasedCorrMaskRangeLumFeather real/_(PaintBasedCorrectionsCorrectionMasksMaskValue)
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather)
      PaintCorrectionMaskMidpointGradientBasedCorrMaskRangeLuminanceDepthSampleInfo real/_(PaintBasedCorrectionsCorrectionMasksMidpoint)
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo)
      PaintCorrectionMaskPerimeterValueGradientBasedCorrMaskRangeLumMax real/_(PaintBasedCorrectionsCorrectionMasksPerimeterValue)
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax)
      PaintCorrectionMaskRadiusGradientBasedCorrMaskRangeLumMin real/_(PaintBasedCorrectionsCorrectionMasksRadius)
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin)
      PaintCorrectionMaskRightGradientBasedCorrMaskRangeLumRangestring/_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange)
      GradientBasedCorrMaskRangeSampleTypeinteger/_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType)
      GradientBasedCorrMaskRangeTypestring/_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskType)
      GradientBasedCorrMaskRangeVersionstring/_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion)
      GradientBasedCorrMaskDabsstring/_(GradientBasedCorrectionsCorrectionMasksDabs)
      GradientBasedCorrMaskFeather real/_(PaintBasedCorrectionsCorrectionMasksRight)
      (GradientBasedCorrectionsCorrectionMasksFeather)
      GradientBasedCorrMaskFlippedboolean/_(GradientBasedCorrectionsCorrectionMasksFlipped)
      PaintCorrectionMaskRoundnessGradientBasedCorrMaskFlow real/_(PaintBasedCorrectionsCorrectionMasksRoundness)
      (GradientBasedCorrectionsCorrectionMasksFlow)
      PaintCorrectionMaskSizeXGradientBasedCorrMaskFullX real/_(PaintBasedCorrectionsCorrectionMasksSizeX)
      (GradientBasedCorrectionsCorrectionMasksFullX)
      PaintCorrectionMaskSizeYGradientBasedCorrMaskFullY real/_(PaintBasedCorrectionsCorrectionMasksSizeY)
      (GradientBasedCorrectionsCorrectionMasksFullY)
      PaintCorrectionMaskTopGradientBasedCorrMaskInputDigeststring/_(GradientBasedCorrectionsCorrectionMasksInputDigest)
      GradientBasedCorrMaskLeft real/_(PaintBasedCorrectionsCorrectionMasksTop)
      (GradientBasedCorrectionsCorrectionMasksLeft)
      GradientBasedCorrMaskMaskActiveboolean/_(GradientBasedCorrectionsCorrectionMasksMaskActive)
      PaintCorrectionMaskVersionGradientBasedCorrMaskMaskBlendMode integer/_(PaintBasedCorrectionsCorrectionMasksVersion)
      (GradientBasedCorrectionsCorrectionMasksMaskBlendMode)
      PaintCorrectionMaskWhatGradientBasedCorrMaskMaskDigest string/_(PaintBasedCorrectionsCorrectionMasksWhat)
      (GradientBasedCorrectionsCorrectionMasksMaskDigest)
      PaintCorrectionMaskXGradientBasedCorrMaskMaskInverted real/_(PaintBasedCorrectionsCorrectionMasksX)
      (GradientBasedCorrectionsCorrectionMasksMaskInverted)
      PaintCorrectionMaskYGradientBasedCorrMaskMaskNamestring/_(GradientBasedCorrectionsCorrectionMasksMaskName)
      GradientBasedCorrMaskMasksstruct_+--> CorrectionMask Struct +
      (GradientBasedCorrectionsCorrectionMasksMasks)
      GradientBasedCorrMaskMasksAlpha real/_(PaintBasedCorrectionsCorrectionMasksY)
      (GradientBasedCorrectionsCorrectionMasksMasksAlpha)
      PaintCorrectionMaskZeroXGradientBasedCorrMaskMasksAngle real/_(PaintBasedCorrectionsCorrectionMasksZeroX)
      (GradientBasedCorrectionsCorrectionMasksMasksAngle)
      PaintCorrectionMaskZeroYGradientBasedCorrMaskMasksBottom real/_(PaintBasedCorrectionsCorrectionMasksZeroY)
      (GradientBasedCorrectionsCorrectionMasksMasksBottom)
      PaintCorrectionBrightnessGradientBasedCorrMaskMasksCenterValue real/_(PaintBasedCorrectionsLocalBrightness)
      (GradientBasedCorrectionsCorrectionMasksMasksCenterValue)
      PaintCorrectionClarityGradientBasedCorrMaskMasksCenterWeight real/_(PaintBasedCorrectionsLocalClarity)
      (GradientBasedCorrectionsCorrectionMasksMasksCenterWeight)
      PaintCorrectionClarity2012GradientBasedCorrMaskMasksDabs real/_(PaintBasedCorrectionsLocalClarity2012)
      (GradientBasedCorrectionsCorrectionMasksMasksDabs)
      PaintCorrectionContrastGradientBasedCorrMaskMasksFeather real/_(PaintBasedCorrectionsLocalContrast)
      (GradientBasedCorrectionsCorrectionMasksMasksFeather)
      PaintCorrectionContrast2012GradientBasedCorrMaskMasksFlipped real/_(PaintBasedCorrectionsLocalContrast2012)
      (GradientBasedCorrectionsCorrectionMasksMasksFlipped)
      PaintCorrectionDefringeGradientBasedCorrMaskMasksFlow real/_(PaintBasedCorrectionsLocalDefringe)
      (GradientBasedCorrectionsCorrectionMasksMasksFlow)
      PaintCorrectionExposureGradientBasedCorrMaskMasksFullX real/_(PaintBasedCorrectionsLocalExposure)
      (GradientBasedCorrectionsCorrectionMasksMasksFullX)
      PaintCorrectionExposure2012GradientBasedCorrMaskMasksFullY real/_(PaintBasedCorrectionsLocalExposure2012)
      (GradientBasedCorrectionsCorrectionMasksMasksFullY)
      PaintCorrectionHighlights2012GradientBasedCorrMaskMasksInputDigeststring/_(GradientBasedCorrectionsCorrectionMasksMasksInputDigest)
      GradientBasedCorrMaskMasksLeft real/_(PaintBasedCorrectionsLocalHighlights2012)
      (GradientBasedCorrectionsCorrectionMasksMasksLeft)
      GradientBasedCorrMaskMasksMaskActiveboolean/_(GradientBasedCorrectionsCorrectionMasksMasksMaskActive)
      PaintCorrectionLuminanceNoiseGradientBasedCorrMaskMasksMaskBlendModeinteger/_(GradientBasedCorrectionsCorrectionMasksMasksMaskBlendMode)
      GradientBasedCorrMaskMasksMaskDigeststring/_(GradientBasedCorrectionsCorrectionMasksMasksMaskDigest)
      GradientBasedCorrMaskMasksMaskInvertedboolean/_(GradientBasedCorrectionsCorrectionMasksMasksMaskInverted)
      GradientBasedCorrMaskMasksMaskNamestring/_(GradientBasedCorrectionsCorrectionMasksMasksMaskName)
      GradientBasedCorrMaskMasksMaskSubTypestring/_(GradientBasedCorrectionsCorrectionMasksMasksMaskSubType)
      GradientBasedCorrMaskMasksMaskSyncIDstring/_(GradientBasedCorrectionsCorrectionMasksMasksMaskSyncID)
      GradientBasedCorrMaskMasksValue real/_(PaintBasedCorrectionsLocalLuminanceNoise)
      (GradientBasedCorrectionsCorrectionMasksMasksMaskValue)
      PaintCorrectionMoireGradientBasedCorrMaskMasksMaskVersionstring/_(GradientBasedCorrectionsCorrectionMasksMasksMaskVersion)
      GradientBasedCorrMaskMasksMidpoint real/_(PaintBasedCorrectionsLocalMoire)
      (GradientBasedCorrectionsCorrectionMasksMasksMidpoint)
      GradientBasedCorrMaskMasksOriginstring/_(GradientBasedCorrectionsCorrectionMasksMasksOrigin)
      PaintCorrectionSaturationGradientBasedCorrMaskMasksPerimeterValue real/_(PaintBasedCorrectionsLocalSaturation)
      (GradientBasedCorrectionsCorrectionMasksMasksPerimeterValue)
      PaintCorrectionShadows2012GradientBasedCorrMaskMasksRadius real/_(PaintBasedCorrectionsLocalShadows2012)
      (GradientBasedCorrectionsCorrectionMasksMasksRadius)
      PaintCorrectionSharpnessGradientBasedCorrMaskMasksReferencePoint real/_(PaintBasedCorrectionsLocalSharpness)
      (GradientBasedCorrectionsCorrectionMasksMasksReferencePoint)
      PaintCorrectionTemperatureGradientBasedCorrMaskMasksRight real/_(PaintBasedCorrectionsLocalTemperature)
      (GradientBasedCorrectionsCorrectionMasksMasksRight)
      PaintCorrectionTintGradientBasedCorrMaskMasksRoundness real/_(PaintBasedCorrectionsLocalTint)
      (GradientBasedCorrectionsCorrectionMasksMasksRoundness)
      PaintCorrectionHueGradientBasedCorrMaskMasksSizeX real/_(PaintBasedCorrectionsLocalToningHue)
      (GradientBasedCorrectionsCorrectionMasksMasksSizeX)
      PaintCorrectionSaturationGradientBasedCorrMaskMasksSizeY real/_(PaintBasedCorrectionsLocalToningSaturation)
      (GradientBasedCorrectionsCorrectionMasksMasksSizeY)
      PaintCorrectionWhatGradientBasedCorrMaskMasksTop string/_(PaintBasedCorrectionsWhat)
      (GradientBasedCorrectionsCorrectionMasksMasksTop)
      ParametricDarksinteger/ 
      GradientBasedCorrMaskMaskSubTypestring/_(GradientBasedCorrectionsCorrectionMasksMaskSubType)
      ParametricHighlightsinteger/ 
      GradientBasedCorrMaskMasksVersioninteger/_(GradientBasedCorrectionsCorrectionMasksMasksVersion)
      ParametricHighlightSplitinteger/ 
      GradientBasedCorrMaskMasksWhatstring/_(GradientBasedCorrectionsCorrectionMasksMasksWhat)
      ParametricLightsinteger/ 
      GradientBasedCorrMaskMasksWholeImageAreastring/_(GradientBasedCorrectionsCorrectionMasksMasksWholeImageArea)
      ParametricMidtoneSplitinteger/ 
      GradientBasedCorrMaskMasksXreal/_(GradientBasedCorrectionsCorrectionMasksMasksX)
      ParametricShadowsinteger/ 
      GradientBasedCorrMaskMasksYreal/_(GradientBasedCorrectionsCorrectionMasksMasksY)
      ParametricShadowSplitinteger/ 
      GradientBasedCorrMaskMaskSyncIDstring/_(GradientBasedCorrectionsCorrectionMasksMaskSyncID)
      PerspectiveAspectinteger/ 
      GradientBasedCorrMaskMasksZeroXreal/_(GradientBasedCorrectionsCorrectionMasksMasksZeroX)
      PerspectiveHorizontalinteger/ 
      GradientBasedCorrMaskMasksZeroYreal/_(GradientBasedCorrectionsCorrectionMasksMasksZeroY)
      PerspectiveRotatereal/ 
      GradientBasedCorrMaskValuereal/_(GradientBasedCorrectionsCorrectionMasksMaskValue)
      PerspectiveScaleinteger/ 
      GradientBasedCorrMaskMaskVersionstring/_(GradientBasedCorrectionsCorrectionMasksMaskVersion)
      PerspectiveUprightinteger/ 
      GradientBasedCorrMaskMidpointreal/_(GradientBasedCorrectionsCorrectionMasksMidpoint)
      PerspectiveVerticalinteger/ 
      GradientBasedCorrMaskOriginstring/_(GradientBasedCorrectionsCorrectionMasksOrigin)
      PerspectiveXreal/ 
      GradientBasedCorrMaskPerimeterValuereal/_(GradientBasedCorrectionsCorrectionMasksPerimeterValue)
      PerspectiveYreal/ 
      GradientBasedCorrMaskRadiusreal/_(GradientBasedCorrectionsCorrectionMasksRadius)
      PostCropVignetteAmountinteger/ 
      GradientBasedCorrMaskReferencePointstring/_(GradientBasedCorrectionsCorrectionMasksReferencePoint)
      PostCropVignetteFeatherinteger/ 
      GradientBasedCorrMaskRightreal/_(GradientBasedCorrectionsCorrectionMasksRight)
      PostCropVignetteHighlightContrastinteger/ 
      GradientBasedCorrMaskRoundnessreal/_(GradientBasedCorrectionsCorrectionMasksRoundness)
      PostCropVignetteMidpointinteger/ 
      GradientBasedCorrMaskSizeXreal/_(GradientBasedCorrectionsCorrectionMasksSizeX)
      PostCropVignetteRoundnessinteger/ 
      GradientBasedCorrMaskSizeYreal/_(GradientBasedCorrectionsCorrectionMasksSizeY)
      PostCropVignetteStyleinteger/ 
      GradientBasedCorrMaskTopreal/_(GradientBasedCorrectionsCorrectionMasksTop)
      ProcessVersionstring/ 
      GradientBasedCorrMaskVersioninteger/_(GradientBasedCorrectionsCorrectionMasksVersion)
      RawFileNamestring/ 
      GradientBasedCorrMaskWhatstring/_(GradientBasedCorrectionsCorrectionMasksWhat)
      RedEyeInfoGradientBasedCorrMaskWholeImageArea string/+ 
      (GradientBasedCorrectionsCorrectionMasksWholeImageArea)
      RedHueinteger/ 
      GradientBasedCorrMaskXreal/_(GradientBasedCorrectionsCorrectionMasksX)
      RedSaturationinteger/ 
      GradientBasedCorrMaskYreal/_(GradientBasedCorrectionsCorrectionMasksY)
      RetouchAreasstruct+--> RetouchArea Struct
      GradientBasedCorrMaskZeroXreal/_(GradientBasedCorrectionsCorrectionMasksZeroX)
      RetouchAreaFeatherGradientBasedCorrMaskZeroY real/_(RetouchAreasFeather)
      (GradientBasedCorrectionsCorrectionMasksZeroY)
      RetouchAreaMasksGradientBasedCorrCorrectionNamestring/_+(GradientBasedCorrectionsCorrectionName)
      GradientBasedCorrRangeMask struct_+--> CorrectionMask Struct -
      (RetouchAreasMasks)
      --> CorrRangeMask Struct +
      (GradientBasedCorrectionsCorrectionRangeMask; called CorrectionRangeMask by the spec)
      GradientBasedCorrRangeMaskAreaModelsstruct_+--> AreaModels Struct +
      (GradientBasedCorrectionsCorrectionRangeMaskAreaModels)
      RetouchAreaMaskAlphaGradientBasedCorrRangeMaskAreaModelsComponents real/_(RetouchAreasMasksAlpha)
      (GradientBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents)
      RetouchAreaMaskAngleGradientBasedCorrRangeMaskAreaModelsColorSampleInfo real/_(RetouchAreasMasksAngle)
      (GradientBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      RetouchAreaMaskBottomGradientBasedCorrRangeMaskColorAmount real/_(RetouchAreasMasksBottom)
      (GradientBasedCorrectionsCorrectionRangeMaskColorAmount)
      RetouchAreaMaskCenterValueGradientBasedCorrRangeMaskDepthFeather real/_(RetouchAreasMasksCenterValue)
      (GradientBasedCorrectionsCorrectionRangeMaskDepthFeather)
      RetouchAreaMaskCenterWeightGradientBasedCorrRangeMaskDepthMax real/_(RetouchAreasMasksCenterWeight)
      (GradientBasedCorrectionsCorrectionRangeMaskDepthMax)
      RetouchAreaMaskDabsGradientBasedCorrRangeMaskDepthMin string/_(RetouchAreasMasksDabs)
      (GradientBasedCorrectionsCorrectionRangeMaskDepthMin)
      RetouchAreaMaskFeatherGradientBasedCorrRangeMaskInvert real/_(RetouchAreasMasksFeather)
      (GradientBasedCorrectionsCorrectionRangeMaskInvert)
      RetouchAreaMaskFlippedGradientBasedCorrRangeMaskLumFeather boolean/_(RetouchAreasMasksFlipped)
      (GradientBasedCorrectionsCorrectionRangeMaskLumFeather)
      RetouchAreaMaskFlowGradientBasedCorrRangeMaskLuminanceDepthSampleInfo real/_(RetouchAreasMasksFlow)
      (GradientBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo)
      RetouchAreaMaskFullXGradientBasedCorrRangeMaskLumMax real/_(RetouchAreasMasksFullX)
      (GradientBasedCorrectionsCorrectionRangeMaskLumMax)
      RetouchAreaMaskFullYGradientBasedCorrRangeMaskLumMinreal/_+(GradientBasedCorrectionsCorrectionRangeMaskLumMin)
      GradientBasedCorrRangeMaskLumRangestring/_+(GradientBasedCorrectionsCorrectionRangeMaskLumRange)
      GradientBasedCorrRangeMaskSampleTypeinteger/_+(GradientBasedCorrectionsCorrectionRangeMaskSampleType)
      GradientBasedCorrRangeMaskTypestring/_+(GradientBasedCorrectionsCorrectionRangeMaskType)
      GradientBasedCorrRangeMaskVersionstring/_+(GradientBasedCorrectionsCorrectionRangeMaskVersion)
      GradientBasedCorrCorrectionSyncIDstring/_+(GradientBasedCorrectionsCorrectionSyncID)
      GradientBasedCorrBlacks2012 real/_(RetouchAreasMasksFullY)
      (GradientBasedCorrectionsLocalBlacks2012)
      RetouchAreaMaskLeftGradientBasedCorrBrightness real/_(RetouchAreasMasksLeft)
      (GradientBasedCorrectionsLocalBrightness)
      RetouchAreaMaskValueGradientBasedCorrClarity real/_(RetouchAreasMasksMaskValue)
      (GradientBasedCorrectionsLocalClarity)
      RetouchAreaMaskMidpointGradientBasedCorrClarity2012 real/_(RetouchAreasMasksMidpoint)
      (GradientBasedCorrectionsLocalClarity2012)
      RetouchAreaMaskPerimeterValueGradientBasedCorrContrast real/_(RetouchAreasMasksPerimeterValue)
      (GradientBasedCorrectionsLocalContrast)
      RetouchAreaMaskRadiusGradientBasedCorrContrast2012 real/_(RetouchAreasMasksRadius)
      (GradientBasedCorrectionsLocalContrast2012)
      RetouchAreaMaskRightGradientBasedCorrDefringe real/_(RetouchAreasMasksRight)
      (GradientBasedCorrectionsLocalDefringe)
      RetouchAreaMaskRoundnessGradientBasedCorrDehaze real/_(RetouchAreasMasksRoundness)
      (GradientBasedCorrectionsLocalDehaze)
      RetouchAreaMaskSizeXGradientBasedCorrExposure real/_(RetouchAreasMasksSizeX)
      (GradientBasedCorrectionsLocalExposure)
      RetouchAreaMaskSizeYGradientBasedCorrExposure2012 real/_(RetouchAreasMasksSizeY)
      (GradientBasedCorrectionsLocalExposure2012)
      RetouchAreaMaskTopGradientBasedCorrHighlights2012 real/_(RetouchAreasMasksTop)
      (GradientBasedCorrectionsLocalHighlights2012)
      RetouchAreaMaskVersionGradientBasedCorrHue integer/_(RetouchAreasMasksVersion)
      (GradientBasedCorrectionsLocalHue)
      RetouchAreaMaskWhatGradientBasedCorrLuminanceNoise string/_(RetouchAreasMasksWhat)
      (GradientBasedCorrectionsLocalLuminanceNoise)
      RetouchAreaMaskXGradientBasedCorrMoire real/_(RetouchAreasMasksX)
      (GradientBasedCorrectionsLocalMoire)
      RetouchAreaMaskYGradientBasedCorrSaturation real/_(RetouchAreasMasksY)
      (GradientBasedCorrectionsLocalSaturation)
      RetouchAreaMaskZeroXGradientBasedCorrShadows2012 real/_(RetouchAreasMasksZeroX)
      (GradientBasedCorrectionsLocalShadows2012)
      RetouchAreaMaskZeroYGradientBasedCorrSharpness real/_(RetouchAreasMasksZeroY)
      (GradientBasedCorrectionsLocalSharpness)
      RetouchAreaMethodGradientBasedCorrTemperature string/_(RetouchAreasMethod)
      (GradientBasedCorrectionsLocalTemperature)
      RetouchAreaOffsetYGradientBasedCorrTexture real/_(RetouchAreasOffsetY)
      (GradientBasedCorrectionsLocalTexture)
      RetouchAreaOpacityGradientBasedCorrTint real/_(RetouchAreasOpacity)
      (GradientBasedCorrectionsLocalTint)
      RetouchAreaSeedGradientBasedCorrToningHue integer/_(RetouchAreasSeed)
      (GradientBasedCorrectionsLocalToningHue)
      RetouchAreaSourceStateGradientBasedCorrToningSaturation string/_(RetouchAreasSourceState)
      (GradientBasedCorrectionsLocalToningSaturation)
      RetouchAreaSourceXGradientBasedCorrWhites2012 real/_(RetouchAreasSourceX)
      (GradientBasedCorrectionsLocalWhites2012)
      RetouchAreaSpotTypeGradientBasedCorrWhat string/_(RetouchAreasSpotType)
      (GradientBasedCorrectionsWhat)
      RetouchInfostring/+GrainAmountinteger/  
      SaturationGrainFrequency integer/  
      SaturationAdjustmentAquaGrainSeed integer/  
      SaturationAdjustmentBlueGrainSize integer/  
      SaturationAdjustmentGreenGrayMixerAqua integer/  
      SaturationAdjustmentMagentaGrayMixerBlue integer/  
      SaturationAdjustmentOrangeGrayMixerGreen integer/  
      SaturationAdjustmentPurpleGrayMixerMagenta integer/  
      SaturationAdjustmentRedGrayMixerOrange integer/  
      SaturationAdjustmentYellowGrayMixerPurple integer/  
      ShadowsGrayMixerRed integer/  
      Shadows2012GrayMixerYellow integer/  
      ShadowTintGreenHue integer/  
      SharpenDetailGreenSaturation integer/  
      SharpenEdgeMaskinginteger/Grouplang-alt/  
      SharpenRadiusreal/HasCropboolean/  
      Sharpnessinteger/HasSettingsboolean/  
      SmoothnessHighlight2012 integer/  
      SplitToningBalanceHighlightRecovery integer/  
      SplitToningHighlightHueHighlights2012 integer/  
      SplitToningHighlightSaturationHueAdjustmentAqua integer/  
      SplitToningShadowHueHueAdjustmentBlue integer/  
      SplitToningShadowSaturationHueAdjustmentGreen integer/  
      ColorTemperatureHueAdjustmentMagenta integer/(called Temperature by the spec)
       
      TextureHueAdjustmentOrange integer/  
      TIFFHandlingstring/HueAdjustmentPurpleinteger/  
      TintHueAdjustmentRed integer/  
      ToneCurvestring/+HueAdjustmentYellowinteger/  
      ToneCurveBluestring/+IncrementalTemperatureinteger/  
      ToneCurveGreenstring/+IncrementalTintinteger/  
      ToneCurveNamestring/'Custom' = Custom -
      'Linear' = Linear -
      'Medium Contrast' = Medium Contrast -
      'Strong Contrast' = Strong Contrast
      ToneCurveName2012JPEGHandling string/  
      ToneCurvePV2012string/+ 
      ToneCurvePV2012Bluestring/+ 
      ToneCurvePV2012Greenstring/+ 
      ToneCurvePV2012Redstring/+LensManualDistortionAmountinteger/  
      ToneCurveRedstring/+LensProfileChromaticAberrationScaleinteger/  
      ToneMapStrengthreal/LensProfileDigeststring/  
      UprightCenterModeLensProfileDistortionScale integer/  
      UprightCenterNormXreal/LensProfileEnableinteger/  
      UprightCenterNormYreal/LensProfileFilenamestring/  
      UprightDependentDigeststring/LensProfileIsEmbeddedboolean/  
      UprightFocalLength35mmreal/LensProfileMatchKeyCameraModelNamestring/  
      UprightFocalModeinteger/LensProfileMatchKeyExifMakestring/  
      UprightFourSegmentsCountinteger/LensProfileMatchKeyExifModelstring/  
      UprightPreviewLensProfileMatchKeyIsRaw boolean/  
      UprightTransform_0LensProfileMatchKeyLensID string/  
      UprightTransform_1LensProfileMatchKeyLensInfo string/  
      UprightTransform_2LensProfileMatchKeyLensName string/  
      UprightTransform_3string/LensProfileMatchKeySensorFormatFactorreal/  
      UprightTransform_4LensProfileName string/  
      UprightTransform_5LensProfileSetup string/  
      UprightTransformCountLensProfileVignettingScale integer/  
      UprightVersioninteger/ 
      Lookstruct--> Look Struct
      Versionstring/LookAmountstring/_  
      Vibranceinteger/LookClusterstring/_  
      VignetteAmountinteger/LookCopyrightstring/_  
      VignetteMidpointinteger/LookGrouplang-alt/_  
      WhatLookName string/ 
      (NOT a flattened tag!)
      WhiteBalancestring/ -
      'As Shot' = As Shot -
      'Auto' = Auto -
      'Cloudy' = Cloudy -
      'Custom' = Custom -
      'Daylight' = Daylight -
      'Flash' = Flash -
      'Fluorescent' = Fluorescent -
      'Shade' = Shade -
      'Tungsten' = Tungsten
      -
      Whites2012integer/ 
      - -

      XMP Correction Struct

      -
      -
      - - - + + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + -
      Field NameWritableValues / Notes
      LookParametersstruct_--> LookParms Struct
      CorrectionActivebooleanLookParametersCameraProfilestring/_  
      CorrectionAmountrealLookParametersClarity2012string/_  
      CorrectionMasksCorrectionMask+--> CorrectionMask Struct
      LookParametersConvertToGrayscalestring/_ 
      LocalBrightnessrealLookParametersLookTablestring/_  
      LocalClarityrealLookParametersProcessVersionstring/_  
      LocalClarity2012realLookParametersToneCurvePV2012string/_+  
      LocalContrastrealLookParametersToneCurvePV2012Bluestring/_+  
      LocalContrast2012realLookParametersToneCurvePV2012Greenstring/_+  
      LocalDefringerealLookParametersToneCurvePV2012Redstring/_+  
      LocalExposurerealLookParametersVersionstring/_  
      LocalExposure2012realLookSupportsAmountstring/_  
      LocalHighlights2012realLookSupportsMonochromestring/_  
      LocalLuminanceNoiserealLookSupportsOutputReferredstring/_  
      LocalMoirerealLookUUIDstring/_  
      LocalSaturationrealLuminanceAdjustmentAquainteger/  
      LocalShadows2012realLuminanceAdjustmentBlueinteger/  
      LocalSharpnessrealLuminanceAdjustmentGreeninteger/  
      LocalTemperaturerealLuminanceAdjustmentMagentainteger/  
      LocalTintrealLuminanceAdjustmentOrangeinteger/  
      LocalToningHuerealLuminanceAdjustmentPurpleinteger/  
      LocalToningSaturationrealLuminanceAdjustmentRedinteger/  
      WhatstringLuminanceAdjustmentYellowinteger/  
      - -

      XMP CorrectionMask Struct

      -
      -
      - - - - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - -
      Field NameWritableValues / Notes
      AlpharealLuminanceNoiseReductionContrastinteger/  
      AnglerealLuminanceNoiseReductionDetailinteger/  
      BottomrealLuminanceSmoothinginteger/  
      CenterValuereal 
      MaskGroupBasedCorrectionsstruct+--> Correction Struct
      CenterWeightreal 
      MaskGroupBasedCorrActiveboolean/_(MaskGroupBasedCorrectionsCorrectionActive)
      Dabsstring+ 
      MaskGroupBasedCorrAmountreal/_(MaskGroupBasedCorrectionsCorrectionAmount)
      Featherreal 
      MaskGroupBasedCorrMaskstruct_+--> CorrectionMask Struct +
      (MaskGroupBasedCorrectionsCorrectionMasks)
      Flippedboolean 
      MaskGroupBasedCorrMaskAlphareal/_(MaskGroupBasedCorrectionsCorrectionMasksAlpha)
      Flowreal 
      MaskGroupBasedCorrMaskAnglereal/_(MaskGroupBasedCorrectionsCorrectionMasksAngle)
      FullXreal 
      MaskGroupBasedCorrMaskBottomreal/_(MaskGroupBasedCorrectionsCorrectionMasksBottom)
      FullYreal 
      MaskGroupBasedCorrMaskCenterValuereal/_(MaskGroupBasedCorrectionsCorrectionMasksCenterValue)
      Leftreal 
      MaskGroupBasedCorrMaskCenterWeightreal/_(MaskGroupBasedCorrectionsCorrectionMasksCenterWeight)
      MaskValuereal 
      MaskGroupBasedCorrMaskRangestruct_+--> CorrRangeMask Struct +
      (MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMask; called CorrectionRangeMask by the spec)
      Midpointreal 
      MaskGroupBasedCorrMaskRangeAreaModelsstruct_+--> AreaModels Struct +
      (MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels)
      PerimeterValuereal 
      MaskGroupBasedCorrMaskRangeAreaModelsComponentsstring/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents)
      Radiusreal 
      MaskGroupBasedCorrMaskRangeAreaModelsColorSampleInfostring/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      Rightreal 
      MaskGroupBasedCorrMaskRangeColorAmountreal/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount)
      Roundnessreal 
      MaskGroupBasedCorrMaskRangeDepthFeatherreal/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather)
      SizeXreal 
      MaskGroupBasedCorrMaskRangeDepthMaxreal/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax)
      SizeYreal 
      MaskGroupBasedCorrMaskRangeDepthMinreal/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin)
      Topreal 
      MaskGroupBasedCorrMaskRangeInvertboolean/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert)
      Versioninteger 
      MaskGroupBasedCorrMaskRangeLumFeatherreal/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather)
      Whatstring 
      MaskGroupBasedCorrMaskRangeLuminanceDepthSampleInfostring/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo)
      Xreal 
      MaskGroupBasedCorrMaskRangeLumMaxreal/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax)
      Yreal 
      MaskGroupBasedCorrMaskRangeLumMinreal/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin)
      ZeroXreal 
      MaskGroupBasedCorrMaskRangeLumRangestring/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange)
      ZeroYreal 
      - -

      XMP Look Struct

      -
      -
      - - - + + + + + + + - - - -
      Field NameWritableValues / Notes
      MaskGroupBasedCorrMaskRangeSampleTypeinteger/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType)
      MaskGroupBasedCorrMaskRangeTypestring/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskType)
      Namestring 
      - -

      XMP RetouchArea Struct

      -
      -
      - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      MaskGroupBasedCorrMaskRangeVersionstring/_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion)
      MaskGroupBasedCorrMaskDabsstring/_+(MaskGroupBasedCorrectionsCorrectionMasksDabs)
      Featherreal 
      MaskGroupBasedCorrMaskFeatherreal/_(MaskGroupBasedCorrectionsCorrectionMasksFeather)
      MasksCorrectionMask+--> CorrectionMask Struct
      MaskGroupBasedCorrMaskFlippedboolean/_(MaskGroupBasedCorrectionsCorrectionMasksFlipped)
      Methodstring 
      MaskGroupBasedCorrMaskFlowreal/_(MaskGroupBasedCorrectionsCorrectionMasksFlow)
      OffsetYreal 
      MaskGroupBasedCorrMaskFullXreal/_(MaskGroupBasedCorrectionsCorrectionMasksFullX)
      Opacityreal 
      MaskGroupBasedCorrMaskFullYreal/_(MaskGroupBasedCorrectionsCorrectionMasksFullY)
      Seedinteger 
      MaskGroupBasedCorrMaskInputDigeststring/_(MaskGroupBasedCorrectionsCorrectionMasksInputDigest)
      SourceStatestring 
      MaskGroupBasedCorrMaskLeftreal/_(MaskGroupBasedCorrectionsCorrectionMasksLeft)
      SourceXreal 
      MaskGroupBasedCorrMaskMaskActiveboolean/_(MaskGroupBasedCorrectionsCorrectionMasksMaskActive)
      SpotTypestring 
      MaskGroupBasedCorrMaskMaskBlendModeinteger/_(MaskGroupBasedCorrectionsCorrectionMasksMaskBlendMode)
      MaskGroupBasedCorrMaskMaskDigeststring/_(MaskGroupBasedCorrectionsCorrectionMasksMaskDigest)
      MaskGroupBasedCorrMaskMaskInvertedboolean/_(MaskGroupBasedCorrectionsCorrectionMasksMaskInverted)
      MaskGroupBasedCorrMaskMaskNamestring/_(MaskGroupBasedCorrectionsCorrectionMasksMaskName)
      MaskGroupBasedCorrMaskMasksstruct_+--> CorrectionMask Struct +
      (MaskGroupBasedCorrectionsCorrectionMasksMasks)
      MaskGroupBasedCorrMaskMasksAlphareal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksAlpha)
      MaskGroupBasedCorrMaskMasksAnglereal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksAngle)
      MaskGroupBasedCorrMaskMasksBottomreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksBottom)
      MaskGroupBasedCorrMaskMasksCenterValuereal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksCenterValue)
      MaskGroupBasedCorrMaskMasksCenterWeightreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksCenterWeight)
      MaskGroupBasedCorrMaskMasksDabsstring/_+(MaskGroupBasedCorrectionsCorrectionMasksMasksDabs)
      MaskGroupBasedCorrMaskMasksFeatherreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksFeather)
      MaskGroupBasedCorrMaskMasksFlippedboolean/_(MaskGroupBasedCorrectionsCorrectionMasksMasksFlipped)
      MaskGroupBasedCorrMaskMasksFlowreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksFlow)
      MaskGroupBasedCorrMaskMasksFullXreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksFullX)
      MaskGroupBasedCorrMaskMasksFullYreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksFullY)
      MaskGroupBasedCorrMaskMasksInputDigeststring/_(MaskGroupBasedCorrectionsCorrectionMasksMasksInputDigest)
      MaskGroupBasedCorrMaskMasksLeftreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksLeft)
      MaskGroupBasedCorrMaskMasksMaskActiveboolean/_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskActive)
      MaskGroupBasedCorrMaskMasksMaskBlendModeinteger/_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskBlendMode)
      MaskGroupBasedCorrMaskMasksMaskDigeststring/_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskDigest)
      MaskGroupBasedCorrMaskMasksMaskInvertedboolean/_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskInverted)
      MaskGroupBasedCorrMaskMasksMaskNamestring/_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskName)
      MaskGroupBasedCorrMaskMasksMaskSubTypestring/_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskSubType)
      MaskGroupBasedCorrMaskMasksMaskSyncIDstring/_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskSyncID)
      MaskGroupBasedCorrMaskMasksValuereal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskValue)
      MaskGroupBasedCorrMaskMasksMaskVersionstring/_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskVersion)
      MaskGroupBasedCorrMaskMasksMidpointreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksMidpoint)
      MaskGroupBasedCorrMaskMasksOriginstring/_(MaskGroupBasedCorrectionsCorrectionMasksMasksOrigin)
      MaskGroupBasedCorrMaskMasksPerimeterValuereal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksPerimeterValue)
      MaskGroupBasedCorrMaskMasksRadiusreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksRadius)
      MaskGroupBasedCorrMaskMasksReferencePointstring/_(MaskGroupBasedCorrectionsCorrectionMasksMasksReferencePoint)
      MaskGroupBasedCorrMaskMasksRightreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksRight)
      MaskGroupBasedCorrMaskMasksRoundnessreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksRoundness)
      MaskGroupBasedCorrMaskMasksSizeXreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksSizeX)
      MaskGroupBasedCorrMaskMasksSizeYreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksSizeY)
      MaskGroupBasedCorrMaskMasksTopreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksTop)
      MaskGroupBasedCorrMaskMaskSubTypestring/_(MaskGroupBasedCorrectionsCorrectionMasksMaskSubType)
      MaskGroupBasedCorrMaskMasksVersioninteger/_(MaskGroupBasedCorrectionsCorrectionMasksMasksVersion)
      MaskGroupBasedCorrMaskMasksWhatstring/_(MaskGroupBasedCorrectionsCorrectionMasksMasksWhat)
      MaskGroupBasedCorrMaskMasksWholeImageAreastring/_(MaskGroupBasedCorrectionsCorrectionMasksMasksWholeImageArea)
      MaskGroupBasedCorrMaskMasksXreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksX)
      MaskGroupBasedCorrMaskMasksYreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksY)
      MaskGroupBasedCorrMaskMaskSyncIDstring/_(MaskGroupBasedCorrectionsCorrectionMasksMaskSyncID)
      MaskGroupBasedCorrMaskMasksZeroXreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksZeroX)
      MaskGroupBasedCorrMaskMasksZeroYreal/_(MaskGroupBasedCorrectionsCorrectionMasksMasksZeroY)
      MaskGroupBasedCorrMaskValuereal/_(MaskGroupBasedCorrectionsCorrectionMasksMaskValue)
      MaskGroupBasedCorrMaskMaskVersionstring/_(MaskGroupBasedCorrectionsCorrectionMasksMaskVersion)
      MaskGroupBasedCorrMaskMidpointreal/_(MaskGroupBasedCorrectionsCorrectionMasksMidpoint)
      MaskGroupBasedCorrMaskOriginstring/_(MaskGroupBasedCorrectionsCorrectionMasksOrigin)
      MaskGroupBasedCorrMaskPerimeterValuereal/_(MaskGroupBasedCorrectionsCorrectionMasksPerimeterValue)
      MaskGroupBasedCorrMaskRadiusreal/_(MaskGroupBasedCorrectionsCorrectionMasksRadius)
      MaskGroupBasedCorrMaskReferencePointstring/_(MaskGroupBasedCorrectionsCorrectionMasksReferencePoint)
      MaskGroupBasedCorrMaskRightreal/_(MaskGroupBasedCorrectionsCorrectionMasksRight)
      MaskGroupBasedCorrMaskRoundnessreal/_(MaskGroupBasedCorrectionsCorrectionMasksRoundness)
      MaskGroupBasedCorrMaskSizeXreal/_(MaskGroupBasedCorrectionsCorrectionMasksSizeX)
      MaskGroupBasedCorrMaskSizeYreal/_(MaskGroupBasedCorrectionsCorrectionMasksSizeY)
      MaskGroupBasedCorrMaskTopreal/_(MaskGroupBasedCorrectionsCorrectionMasksTop)
      MaskGroupBasedCorrMaskVersioninteger/_(MaskGroupBasedCorrectionsCorrectionMasksVersion)
      MaskGroupBasedCorrMaskWhatstring/_(MaskGroupBasedCorrectionsCorrectionMasksWhat)
      MaskGroupBasedCorrMaskWholeImageAreastring/_(MaskGroupBasedCorrectionsCorrectionMasksWholeImageArea)
      MaskGroupBasedCorrMaskXreal/_(MaskGroupBasedCorrectionsCorrectionMasksX)
      MaskGroupBasedCorrMaskYreal/_(MaskGroupBasedCorrectionsCorrectionMasksY)
      MaskGroupBasedCorrMaskZeroXreal/_(MaskGroupBasedCorrectionsCorrectionMasksZeroX)
      MaskGroupBasedCorrMaskZeroYreal/_(MaskGroupBasedCorrectionsCorrectionMasksZeroY)
      MaskGroupBasedCorrCorrectionNamestring/_+(MaskGroupBasedCorrectionsCorrectionName)
      MaskGroupBasedCorrRangeMaskstruct_+--> CorrRangeMask Struct +
      (MaskGroupBasedCorrectionsCorrectionRangeMask; called CorrectionRangeMask by the spec)
      MaskGroupBasedCorrRangeMaskAreaModelsstruct_+--> AreaModels Struct +
      (MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModels)
      MaskGroupBasedCorrRangeMaskAreaModelsComponentsstring/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents)
      MaskGroupBasedCorrRangeMaskAreaModelsColorSampleInfostring/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      MaskGroupBasedCorrRangeMaskColorAmountreal/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskColorAmount)
      MaskGroupBasedCorrRangeMaskDepthFeatherreal/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskDepthFeather)
      MaskGroupBasedCorrRangeMaskDepthMaxreal/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskDepthMax)
      MaskGroupBasedCorrRangeMaskDepthMinreal/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskDepthMin)
      MaskGroupBasedCorrRangeMaskInvertboolean/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskInvert)
      MaskGroupBasedCorrRangeMaskLumFeatherreal/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskLumFeather)
      MaskGroupBasedCorrRangeMaskLuminanceDepthSampleInfostring/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo)
      MaskGroupBasedCorrRangeMaskLumMaxreal/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskLumMax)
      MaskGroupBasedCorrRangeMaskLumMinreal/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskLumMin)
      MaskGroupBasedCorrRangeMaskLumRangestring/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskLumRange)
      MaskGroupBasedCorrRangeMaskSampleTypeinteger/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskSampleType)
      MaskGroupBasedCorrRangeMaskTypestring/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskType)
      MaskGroupBasedCorrRangeMaskVersionstring/_+(MaskGroupBasedCorrectionsCorrectionRangeMaskVersion)
      MaskGroupBasedCorrCorrectionSyncIDstring/_+(MaskGroupBasedCorrectionsCorrectionSyncID)
      MaskGroupBasedCorrBlacks2012real/_(MaskGroupBasedCorrectionsLocalBlacks2012)
      MaskGroupBasedCorrBrightnessreal/_(MaskGroupBasedCorrectionsLocalBrightness)
      MaskGroupBasedCorrClarityreal/_(MaskGroupBasedCorrectionsLocalClarity)
      MaskGroupBasedCorrClarity2012real/_(MaskGroupBasedCorrectionsLocalClarity2012)
      MaskGroupBasedCorrContrastreal/_(MaskGroupBasedCorrectionsLocalContrast)
      MaskGroupBasedCorrContrast2012real/_(MaskGroupBasedCorrectionsLocalContrast2012)
      MaskGroupBasedCorrDefringereal/_(MaskGroupBasedCorrectionsLocalDefringe)
      MaskGroupBasedCorrDehazereal/_(MaskGroupBasedCorrectionsLocalDehaze)
      MaskGroupBasedCorrExposurereal/_(MaskGroupBasedCorrectionsLocalExposure)
      MaskGroupBasedCorrExposure2012real/_(MaskGroupBasedCorrectionsLocalExposure2012)
      MaskGroupBasedCorrHighlights2012real/_(MaskGroupBasedCorrectionsLocalHighlights2012)
      MaskGroupBasedCorrHuereal/_(MaskGroupBasedCorrectionsLocalHue)
      MaskGroupBasedCorrLuminanceNoisereal/_(MaskGroupBasedCorrectionsLocalLuminanceNoise)
      MaskGroupBasedCorrMoirereal/_(MaskGroupBasedCorrectionsLocalMoire)
      MaskGroupBasedCorrSaturationreal/_(MaskGroupBasedCorrectionsLocalSaturation)
      MaskGroupBasedCorrShadows2012real/_(MaskGroupBasedCorrectionsLocalShadows2012)
      MaskGroupBasedCorrSharpnessreal/_(MaskGroupBasedCorrectionsLocalSharpness)
      MaskGroupBasedCorrTemperaturereal/_(MaskGroupBasedCorrectionsLocalTemperature)
      MaskGroupBasedCorrTexturereal/_(MaskGroupBasedCorrectionsLocalTexture)
      MaskGroupBasedCorrTintreal/_(MaskGroupBasedCorrectionsLocalTint)
      MaskGroupBasedCorrToningHuereal/_(MaskGroupBasedCorrectionsLocalToningHue)
      MaskGroupBasedCorrToningSaturationreal/_(MaskGroupBasedCorrectionsLocalToningSaturation)
      MaskGroupBasedCorrWhites2012real/_(MaskGroupBasedCorrectionsLocalWhites2012)
      MaskGroupBasedCorrWhatstring/_(MaskGroupBasedCorrectionsWhat)
      MoireFilterstring/'Off' = Off +
      'On' = On
      Namelang-alt/ 
      NegativeCacheLargePreviewSizeinteger/ 
      NegativeCacheMaximumSizereal/ 
      NegativeCachePathstring/ 
      OverrideLookVignetteboolean/ 
      PaintBasedCorrectionsstruct+--> Correction Struct
      PaintCorrectionActiveboolean/_(PaintBasedCorrectionsCorrectionActive)
      PaintCorrectionAmountreal/_(PaintBasedCorrectionsCorrectionAmount)
      PaintBasedCorrectionMasksstruct_+--> CorrectionMask Struct +
      (PaintBasedCorrectionsCorrectionMasks)
      PaintCorrectionMaskAlphareal/_(PaintBasedCorrectionsCorrectionMasksAlpha)
      PaintCorrectionMaskAnglereal/_(PaintBasedCorrectionsCorrectionMasksAngle)
      PaintCorrectionMaskBottomreal/_(PaintBasedCorrectionsCorrectionMasksBottom)
      PaintCorrectionMaskCenterValuereal/_(PaintBasedCorrectionsCorrectionMasksCenterValue)
      PaintCorrectionMaskCenterWeightreal/_(PaintBasedCorrectionsCorrectionMasksCenterWeight)
      PaintCorrectionMaskRangestruct_+--> CorrRangeMask Struct +
      (PaintBasedCorrectionsCorrectionMasksCorrectionRangeMask; called CorrectionRangeMask by the spec)
      PaintCorrectionMaskRangeAreaModelsstruct_+--> AreaModels Struct +
      (PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels)
      PaintCorrectionMaskRangeAreaModelsComponentsstring/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents)
      PaintCorrectionMaskRangeAreaModelsColorSampleInfostring/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      PaintCorrectionMaskRangeColorAmountreal/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount)
      PaintCorrectionMaskRangeDepthFeatherreal/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather)
      PaintCorrectionMaskRangeDepthMaxreal/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax)
      PaintCorrectionMaskRangeDepthMinreal/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin)
      PaintCorrectionMaskRangeInvertboolean/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert)
      PaintCorrectionMaskRangeLumFeatherreal/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather)
      PaintCorrectionMaskRangeLuminanceDepthSampleInfostring/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo)
      PaintCorrectionMaskRangeLumMaxreal/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax)
      PaintCorrectionMaskRangeLumMinreal/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin)
      PaintCorrectionMaskRangeLumRangestring/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange)
      PaintCorrectionMaskRangeSampleTypeinteger/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType)
      PaintCorrectionMaskRangeTypestring/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskType)
      PaintCorrectionMaskRangeVersionstring/_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion)
      PaintCorrectionMaskDabsstring/_(PaintBasedCorrectionsCorrectionMasksDabs)
      PaintCorrectionMaskFeatherreal/_(PaintBasedCorrectionsCorrectionMasksFeather)
      PaintCorrectionMaskFlippedboolean/_(PaintBasedCorrectionsCorrectionMasksFlipped)
      PaintCorrectionMaskFlowreal/_(PaintBasedCorrectionsCorrectionMasksFlow)
      PaintCorrectionMaskFullXreal/_(PaintBasedCorrectionsCorrectionMasksFullX)
      PaintCorrectionMaskFullYreal/_(PaintBasedCorrectionsCorrectionMasksFullY)
      PaintCorrectionMaskInputDigeststring/_(PaintBasedCorrectionsCorrectionMasksInputDigest)
      PaintCorrectionMaskLeftreal/_(PaintBasedCorrectionsCorrectionMasksLeft)
      PaintCorrectionMaskMaskActiveboolean/_(PaintBasedCorrectionsCorrectionMasksMaskActive)
      PaintCorrectionMaskMaskBlendModeinteger/_(PaintBasedCorrectionsCorrectionMasksMaskBlendMode)
      PaintCorrectionMaskMaskDigeststring/_(PaintBasedCorrectionsCorrectionMasksMaskDigest)
      PaintCorrectionMaskMaskInvertedboolean/_(PaintBasedCorrectionsCorrectionMasksMaskInverted)
      PaintCorrectionMaskMaskNamestring/_(PaintBasedCorrectionsCorrectionMasksMaskName)
      PaintCorrectionMaskMasksstruct_+--> CorrectionMask Struct +
      (PaintBasedCorrectionsCorrectionMasksMasks)
      PaintCorrectionMaskMasksAlphareal/_(PaintBasedCorrectionsCorrectionMasksMasksAlpha)
      PaintCorrectionMaskMasksAnglereal/_(PaintBasedCorrectionsCorrectionMasksMasksAngle)
      PaintCorrectionMaskMasksBottomreal/_(PaintBasedCorrectionsCorrectionMasksMasksBottom)
      PaintCorrectionMaskMasksCenterValuereal/_(PaintBasedCorrectionsCorrectionMasksMasksCenterValue)
      PaintCorrectionMaskMasksCenterWeightreal/_(PaintBasedCorrectionsCorrectionMasksMasksCenterWeight)
      PaintCorrectionMaskMasksDabsstring/_+(PaintBasedCorrectionsCorrectionMasksMasksDabs)
      PaintCorrectionMaskMasksFeatherreal/_(PaintBasedCorrectionsCorrectionMasksMasksFeather)
      PaintCorrectionMaskMasksFlippedboolean/_(PaintBasedCorrectionsCorrectionMasksMasksFlipped)
      PaintCorrectionMaskMasksFlowreal/_(PaintBasedCorrectionsCorrectionMasksMasksFlow)
      PaintCorrectionMaskMasksFullXreal/_(PaintBasedCorrectionsCorrectionMasksMasksFullX)
      PaintCorrectionMaskMasksFullYreal/_(PaintBasedCorrectionsCorrectionMasksMasksFullY)
      PaintCorrectionMaskMasksInputDigeststring/_(PaintBasedCorrectionsCorrectionMasksMasksInputDigest)
      PaintCorrectionMaskMasksLeftreal/_(PaintBasedCorrectionsCorrectionMasksMasksLeft)
      PaintCorrectionMaskMasksMaskActiveboolean/_(PaintBasedCorrectionsCorrectionMasksMasksMaskActive)
      PaintCorrectionMaskMasksMaskBlendModeinteger/_(PaintBasedCorrectionsCorrectionMasksMasksMaskBlendMode)
      PaintCorrectionMaskMasksMaskDigeststring/_(PaintBasedCorrectionsCorrectionMasksMasksMaskDigest)
      PaintCorrectionMaskMasksMaskInvertedboolean/_(PaintBasedCorrectionsCorrectionMasksMasksMaskInverted)
      PaintCorrectionMaskMasksMaskNamestring/_(PaintBasedCorrectionsCorrectionMasksMasksMaskName)
      PaintCorrectionMaskMasksMaskSubTypestring/_(PaintBasedCorrectionsCorrectionMasksMasksMaskSubType)
      PaintCorrectionMaskMasksMaskSyncIDstring/_(PaintBasedCorrectionsCorrectionMasksMasksMaskSyncID)
      PaintCorrectionMaskMasksValuereal/_(PaintBasedCorrectionsCorrectionMasksMasksMaskValue)
      PaintCorrectionMaskMasksMaskVersionstring/_(PaintBasedCorrectionsCorrectionMasksMasksMaskVersion)
      PaintCorrectionMaskMasksMidpointreal/_(PaintBasedCorrectionsCorrectionMasksMasksMidpoint)
      PaintCorrectionMaskMasksOriginstring/_(PaintBasedCorrectionsCorrectionMasksMasksOrigin)
      PaintCorrectionMaskMasksPerimeterValuereal/_(PaintBasedCorrectionsCorrectionMasksMasksPerimeterValue)
      PaintCorrectionMaskMasksRadiusreal/_(PaintBasedCorrectionsCorrectionMasksMasksRadius)
      PaintCorrectionMaskMasksReferencePointstring/_(PaintBasedCorrectionsCorrectionMasksMasksReferencePoint)
      PaintCorrectionMaskMasksRightreal/_(PaintBasedCorrectionsCorrectionMasksMasksRight)
      PaintCorrectionMaskMasksRoundnessreal/_(PaintBasedCorrectionsCorrectionMasksMasksRoundness)
      PaintCorrectionMaskMasksSizeXreal/_(PaintBasedCorrectionsCorrectionMasksMasksSizeX)
      PaintCorrectionMaskMasksSizeYreal/_(PaintBasedCorrectionsCorrectionMasksMasksSizeY)
      PaintCorrectionMaskMasksTopreal/_(PaintBasedCorrectionsCorrectionMasksMasksTop)
      PaintCorrectionMaskMaskSubTypestring/_(PaintBasedCorrectionsCorrectionMasksMaskSubType)
      PaintCorrectionMaskMasksVersioninteger/_(PaintBasedCorrectionsCorrectionMasksMasksVersion)
      PaintCorrectionMaskMasksWhatstring/_(PaintBasedCorrectionsCorrectionMasksMasksWhat)
      PaintCorrectionMaskMasksWholeImageAreastring/_(PaintBasedCorrectionsCorrectionMasksMasksWholeImageArea)
      PaintCorrectionMaskMasksXreal/_(PaintBasedCorrectionsCorrectionMasksMasksX)
      PaintCorrectionMaskMasksYreal/_(PaintBasedCorrectionsCorrectionMasksMasksY)
      PaintCorrectionMaskMaskSyncIDstring/_(PaintBasedCorrectionsCorrectionMasksMaskSyncID)
      PaintCorrectionMaskMasksZeroXreal/_(PaintBasedCorrectionsCorrectionMasksMasksZeroX)
      PaintCorrectionMaskMasksZeroYreal/_(PaintBasedCorrectionsCorrectionMasksMasksZeroY)
      PaintCorrectionMaskValuereal/_(PaintBasedCorrectionsCorrectionMasksMaskValue)
      PaintCorrectionMaskMaskVersionstring/_(PaintBasedCorrectionsCorrectionMasksMaskVersion)
      PaintCorrectionMaskMidpointreal/_(PaintBasedCorrectionsCorrectionMasksMidpoint)
      PaintCorrectionMaskOriginstring/_(PaintBasedCorrectionsCorrectionMasksOrigin)
      PaintCorrectionMaskPerimeterValuereal/_(PaintBasedCorrectionsCorrectionMasksPerimeterValue)
      PaintCorrectionMaskRadiusreal/_(PaintBasedCorrectionsCorrectionMasksRadius)
      PaintCorrectionMaskReferencePointstring/_(PaintBasedCorrectionsCorrectionMasksReferencePoint)
      PaintCorrectionMaskRightreal/_(PaintBasedCorrectionsCorrectionMasksRight)
      PaintCorrectionMaskRoundnessreal/_(PaintBasedCorrectionsCorrectionMasksRoundness)
      PaintCorrectionMaskSizeXreal/_(PaintBasedCorrectionsCorrectionMasksSizeX)
      PaintCorrectionMaskSizeYreal/_(PaintBasedCorrectionsCorrectionMasksSizeY)
      PaintCorrectionMaskTopreal/_(PaintBasedCorrectionsCorrectionMasksTop)
      PaintCorrectionMaskVersioninteger/_(PaintBasedCorrectionsCorrectionMasksVersion)
      PaintCorrectionMaskWhatstring/_(PaintBasedCorrectionsCorrectionMasksWhat)
      PaintCorrectionMaskWholeImageAreastring/_(PaintBasedCorrectionsCorrectionMasksWholeImageArea)
      PaintCorrectionMaskXreal/_(PaintBasedCorrectionsCorrectionMasksX)
      PaintCorrectionMaskYreal/_(PaintBasedCorrectionsCorrectionMasksY)
      PaintCorrectionMaskZeroXreal/_(PaintBasedCorrectionsCorrectionMasksZeroX)
      PaintCorrectionMaskZeroYreal/_(PaintBasedCorrectionsCorrectionMasksZeroY)
      PaintCorrectionCorrectionNamestring/_+(PaintBasedCorrectionsCorrectionName)
      PaintCorrectionRangeMaskstruct_+--> CorrRangeMask Struct +
      (PaintBasedCorrectionsCorrectionRangeMask; called CorrectionRangeMask by the spec)
      PaintCorrectionRangeMaskAreaModelsstruct_+--> AreaModels Struct +
      (PaintBasedCorrectionsCorrectionRangeMaskAreaModels)
      PaintCorrectionRangeMaskAreaModelsComponentsstring/_+(PaintBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents)
      PaintCorrectionRangeMaskAreaModelsColorSampleInfostring/_+(PaintBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      PaintCorrectionRangeMaskColorAmountreal/_+(PaintBasedCorrectionsCorrectionRangeMaskColorAmount)
      PaintCorrectionRangeMaskDepthFeatherreal/_+(PaintBasedCorrectionsCorrectionRangeMaskDepthFeather)
      PaintCorrectionRangeMaskDepthMaxreal/_+(PaintBasedCorrectionsCorrectionRangeMaskDepthMax)
      PaintCorrectionRangeMaskDepthMinreal/_+(PaintBasedCorrectionsCorrectionRangeMaskDepthMin)
      PaintCorrectionRangeMaskInvertboolean/_+(PaintBasedCorrectionsCorrectionRangeMaskInvert)
      PaintCorrectionRangeMaskLumFeatherreal/_+(PaintBasedCorrectionsCorrectionRangeMaskLumFeather)
      PaintCorrectionRangeMaskLuminanceDepthSampleInfostring/_+(PaintBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo)
      PaintCorrectionRangeMaskLumMaxreal/_+(PaintBasedCorrectionsCorrectionRangeMaskLumMax)
      PaintCorrectionRangeMaskLumMinreal/_+(PaintBasedCorrectionsCorrectionRangeMaskLumMin)
      PaintCorrectionRangeMaskLumRangestring/_+(PaintBasedCorrectionsCorrectionRangeMaskLumRange)
      PaintCorrectionRangeMaskSampleTypeinteger/_+(PaintBasedCorrectionsCorrectionRangeMaskSampleType)
      PaintCorrectionRangeMaskTypestring/_+(PaintBasedCorrectionsCorrectionRangeMaskType)
      PaintCorrectionRangeMaskVersionstring/_+(PaintBasedCorrectionsCorrectionRangeMaskVersion)
      PaintCorrectionCorrectionSyncIDstring/_+(PaintBasedCorrectionsCorrectionSyncID)
      PaintCorrectionBlacks2012real/_(PaintBasedCorrectionsLocalBlacks2012)
      PaintCorrectionBrightnessreal/_(PaintBasedCorrectionsLocalBrightness)
      PaintCorrectionClarityreal/_(PaintBasedCorrectionsLocalClarity)
      PaintCorrectionClarity2012real/_(PaintBasedCorrectionsLocalClarity2012)
      PaintCorrectionContrastreal/_(PaintBasedCorrectionsLocalContrast)
      PaintCorrectionContrast2012real/_(PaintBasedCorrectionsLocalContrast2012)
      PaintCorrectionDefringereal/_(PaintBasedCorrectionsLocalDefringe)
      PaintCorrectionDehazereal/_(PaintBasedCorrectionsLocalDehaze)
      PaintCorrectionExposurereal/_(PaintBasedCorrectionsLocalExposure)
      PaintCorrectionExposure2012real/_(PaintBasedCorrectionsLocalExposure2012)
      PaintCorrectionHighlights2012real/_(PaintBasedCorrectionsLocalHighlights2012)
      PaintCorrectionHuereal/_(PaintBasedCorrectionsLocalHue)
      PaintCorrectionLuminanceNoisereal/_(PaintBasedCorrectionsLocalLuminanceNoise)
      PaintCorrectionMoirereal/_(PaintBasedCorrectionsLocalMoire)
      PaintCorrectionSaturationreal/_(PaintBasedCorrectionsLocalSaturation)
      PaintCorrectionShadows2012real/_(PaintBasedCorrectionsLocalShadows2012)
      PaintCorrectionSharpnessreal/_(PaintBasedCorrectionsLocalSharpness)
      PaintCorrectionTemperaturereal/_(PaintBasedCorrectionsLocalTemperature)
      PaintCorrectionTexturereal/_(PaintBasedCorrectionsLocalTexture)
      PaintCorrectionTintreal/_(PaintBasedCorrectionsLocalTint)
      PaintCorrectionToningHuereal/_(PaintBasedCorrectionsLocalToningHue)
      PaintCorrectionToningSaturationreal/_(PaintBasedCorrectionsLocalToningSaturation)
      PaintCorrectionWhites2012real/_(PaintBasedCorrectionsLocalWhites2012)
      PaintCorrectionWhatstring/_(PaintBasedCorrectionsWhat)
      ParametricDarksinteger/ 
      ParametricHighlightsinteger/ 
      ParametricHighlightSplitinteger/ 
      ParametricLightsinteger/ 
      ParametricMidtoneSplitinteger/ 
      ParametricShadowsinteger/ 
      ParametricShadowSplitinteger/ 
      PerspectiveAspectinteger/ 
      PerspectiveHorizontalinteger/ 
      PerspectiveRotatereal/ 
      PerspectiveScaleinteger/ 
      PerspectiveUprightinteger/ 
      PerspectiveVerticalinteger/ 
      PerspectiveXreal/ 
      PerspectiveYreal/ 
      PostCropVignetteAmountinteger/ 
      PostCropVignetteFeatherinteger/ 
      PostCropVignetteHighlightContrastinteger/ 
      PostCropVignetteMidpointinteger/ 
      PostCropVignetteRoundnessinteger/ 
      PostCropVignetteStyleinteger/ 
      PresetTypestring/ 
      ProcessVersionstring/ 
      RangeMaskstruct--> RangeMask Struct +
      (called RangeMaskMapInfo by the spec)
      RangeMaskMapInfostruct_--> MapInfo Struct +
      (RangeMaskMapInfoRangeMaskMapInfo)
      RangeMaskMapInfoLabMaxstring/_(RangeMaskMapInfoRangeMaskMapInfoLabMax)
      RangeMaskMapInfoLabMinstring/_(RangeMaskMapInfoRangeMaskMapInfoLabMin)
      RangeMaskMapInfoLumEqstring/_+(RangeMaskMapInfoRangeMaskMapInfoLumEq)
      RangeMaskMapInfoRGBMaxstring/_(RangeMaskMapInfoRangeMaskMapInfoRGBMax)
      RangeMaskMapInfoRGBMinstring/_(RangeMaskMapInfoRangeMaskMapInfoRGBMin)
      RawFileNamestring/ 
      RedEyeInfostring/+ 
      RedHueinteger/ 
      RedSaturationinteger/ 
      RetouchAreasstruct+--> RetouchArea Struct
      RetouchAreaFeatherreal/_(RetouchAreasFeather)
      RetouchAreaMasksstruct_+--> CorrectionMask Struct +
      (RetouchAreasMasks)
      RetouchAreaMaskAlphareal/_(RetouchAreasMasksAlpha)
      RetouchAreaMaskAnglereal/_(RetouchAreasMasksAngle)
      RetouchAreaMaskBottomreal/_(RetouchAreasMasksBottom)
      RetouchAreaMaskCenterValuereal/_(RetouchAreasMasksCenterValue)
      RetouchAreaMaskCenterWeightreal/_(RetouchAreasMasksCenterWeight)
      RetouchAreaMaskRangestruct_+--> CorrRangeMask Struct +
      (RetouchAreasMasksCorrectionRangeMask; called CorrectionRangeMask by the spec)
      RetouchAreaMaskRangeAreaModelsstruct_+--> AreaModels Struct +
      (RetouchAreasMasksCorrectionRangeMaskAreaModels)
      RetouchAreaMaskRangeAreaModelsComponentsstring/_+(RetouchAreasMasksCorrectionRangeMaskAreaModelsAreaComponents)
      RetouchAreaMaskRangeAreaModelsColorSampleInfostring/_+(RetouchAreasMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      RetouchAreaMaskRangeColorAmountreal/_+(RetouchAreasMasksCorrectionRangeMaskColorAmount)
      RetouchAreaMaskRangeDepthFeatherreal/_+(RetouchAreasMasksCorrectionRangeMaskDepthFeather)
      RetouchAreaMaskRangeDepthMaxreal/_+(RetouchAreasMasksCorrectionRangeMaskDepthMax)
      RetouchAreaMaskRangeDepthMinreal/_+(RetouchAreasMasksCorrectionRangeMaskDepthMin)
      RetouchAreaMaskRangeInvertboolean/_+(RetouchAreasMasksCorrectionRangeMaskInvert)
      RetouchAreaMaskRangeLumFeatherreal/_+(RetouchAreasMasksCorrectionRangeMaskLumFeather)
      RetouchAreaMaskRangeLuminanceDepthSampleInfostring/_+(RetouchAreasMasksCorrectionRangeMaskLuminanceDepthSampleInfo)
      RetouchAreaMaskRangeLumMaxreal/_+(RetouchAreasMasksCorrectionRangeMaskLumMax)
      RetouchAreaMaskRangeLumMinreal/_+(RetouchAreasMasksCorrectionRangeMaskLumMin)
      RetouchAreaMaskRangeLumRangestring/_+(RetouchAreasMasksCorrectionRangeMaskLumRange)
      RetouchAreaMaskRangeSampleTypeinteger/_+(RetouchAreasMasksCorrectionRangeMaskSampleType)
      RetouchAreaMaskRangeTypestring/_+(RetouchAreasMasksCorrectionRangeMaskType)
      RetouchAreaMaskRangeVersionstring/_+(RetouchAreasMasksCorrectionRangeMaskVersion)
      RetouchAreaMaskDabsstring/_(RetouchAreasMasksDabs)
      RetouchAreaMaskFeatherreal/_(RetouchAreasMasksFeather)
      RetouchAreaMaskFlippedboolean/_(RetouchAreasMasksFlipped)
      RetouchAreaMaskFlowreal/_(RetouchAreasMasksFlow)
      RetouchAreaMaskFullXreal/_(RetouchAreasMasksFullX)
      RetouchAreaMaskFullYreal/_(RetouchAreasMasksFullY)
      RetouchAreaMaskInputDigeststring/_(RetouchAreasMasksInputDigest)
      RetouchAreaMaskLeftreal/_(RetouchAreasMasksLeft)
      RetouchAreaMaskMaskActiveboolean/_(RetouchAreasMasksMaskActive)
      RetouchAreaMaskMaskBlendModeinteger/_(RetouchAreasMasksMaskBlendMode)
      RetouchAreaMaskMaskDigeststring/_(RetouchAreasMasksMaskDigest)
      RetouchAreaMaskMaskInvertedboolean/_(RetouchAreasMasksMaskInverted)
      RetouchAreaMaskMaskNamestring/_(RetouchAreasMasksMaskName)
      RetouchAreaMaskMasksstruct_+--> CorrectionMask Struct +
      (RetouchAreasMasksMasks)
      RetouchAreaMaskMasksAlphareal/_(RetouchAreasMasksMasksAlpha)
      RetouchAreaMaskMasksAnglereal/_(RetouchAreasMasksMasksAngle)
      RetouchAreaMaskMasksBottomreal/_(RetouchAreasMasksMasksBottom)
      RetouchAreaMaskMasksCenterValuereal/_(RetouchAreasMasksMasksCenterValue)
      RetouchAreaMaskMasksCenterWeightreal/_(RetouchAreasMasksMasksCenterWeight)
      RetouchAreaMaskMasksDabsstring/_+(RetouchAreasMasksMasksDabs)
      RetouchAreaMaskMasksFeatherreal/_(RetouchAreasMasksMasksFeather)
      RetouchAreaMaskMasksFlippedboolean/_(RetouchAreasMasksMasksFlipped)
      RetouchAreaMaskMasksFlowreal/_(RetouchAreasMasksMasksFlow)
      RetouchAreaMaskMasksFullXreal/_(RetouchAreasMasksMasksFullX)
      RetouchAreaMaskMasksFullYreal/_(RetouchAreasMasksMasksFullY)
      RetouchAreaMaskMasksInputDigeststring/_(RetouchAreasMasksMasksInputDigest)
      RetouchAreaMaskMasksLeftreal/_(RetouchAreasMasksMasksLeft)
      RetouchAreaMaskMasksMaskActiveboolean/_(RetouchAreasMasksMasksMaskActive)
      RetouchAreaMaskMasksMaskBlendModeinteger/_(RetouchAreasMasksMasksMaskBlendMode)
      RetouchAreaMaskMasksMaskDigeststring/_(RetouchAreasMasksMasksMaskDigest)
      RetouchAreaMaskMasksMaskInvertedboolean/_(RetouchAreasMasksMasksMaskInverted)
      RetouchAreaMaskMasksMaskNamestring/_(RetouchAreasMasksMasksMaskName)
      RetouchAreaMaskMasksMaskSubTypestring/_(RetouchAreasMasksMasksMaskSubType)
      RetouchAreaMaskMasksMaskSyncIDstring/_(RetouchAreasMasksMasksMaskSyncID)
      RetouchAreaMaskMasksValuereal/_(RetouchAreasMasksMasksMaskValue)
      RetouchAreaMaskMasksMaskVersionstring/_(RetouchAreasMasksMasksMaskVersion)
      RetouchAreaMaskMasksMidpointreal/_(RetouchAreasMasksMasksMidpoint)
      RetouchAreaMaskMasksOriginstring/_(RetouchAreasMasksMasksOrigin)
      RetouchAreaMaskMasksPerimeterValuereal/_(RetouchAreasMasksMasksPerimeterValue)
      RetouchAreaMaskMasksRadiusreal/_(RetouchAreasMasksMasksRadius)
      RetouchAreaMaskMasksReferencePointstring/_(RetouchAreasMasksMasksReferencePoint)
      RetouchAreaMaskMasksRightreal/_(RetouchAreasMasksMasksRight)
      RetouchAreaMaskMasksRoundnessreal/_(RetouchAreasMasksMasksRoundness)
      RetouchAreaMaskMasksSizeXreal/_(RetouchAreasMasksMasksSizeX)
      RetouchAreaMaskMasksSizeYreal/_(RetouchAreasMasksMasksSizeY)
      RetouchAreaMaskMasksTopreal/_(RetouchAreasMasksMasksTop)
      RetouchAreaMaskMaskSubTypestring/_(RetouchAreasMasksMaskSubType)
      RetouchAreaMaskMasksVersioninteger/_(RetouchAreasMasksMasksVersion)
      RetouchAreaMaskMasksWhatstring/_(RetouchAreasMasksMasksWhat)
      RetouchAreaMaskMasksWholeImageAreastring/_(RetouchAreasMasksMasksWholeImageArea)
      RetouchAreaMaskMasksXreal/_(RetouchAreasMasksMasksX)
      RetouchAreaMaskMasksYreal/_(RetouchAreasMasksMasksY)
      RetouchAreaMaskMaskSyncIDstring/_(RetouchAreasMasksMaskSyncID)
      RetouchAreaMaskMasksZeroXreal/_(RetouchAreasMasksMasksZeroX)
      RetouchAreaMaskMasksZeroYreal/_(RetouchAreasMasksMasksZeroY)
      RetouchAreaMaskValuereal/_(RetouchAreasMasksMaskValue)
      RetouchAreaMaskMaskVersionstring/_(RetouchAreasMasksMaskVersion)
      RetouchAreaMaskMidpointreal/_(RetouchAreasMasksMidpoint)
      RetouchAreaMaskOriginstring/_(RetouchAreasMasksOrigin)
      RetouchAreaMaskPerimeterValuereal/_(RetouchAreasMasksPerimeterValue)
      RetouchAreaMaskRadiusreal/_(RetouchAreasMasksRadius)
      RetouchAreaMaskReferencePointstring/_(RetouchAreasMasksReferencePoint)
      RetouchAreaMaskRightreal/_(RetouchAreasMasksRight)
      RetouchAreaMaskRoundnessreal/_(RetouchAreasMasksRoundness)
      RetouchAreaMaskSizeXreal/_(RetouchAreasMasksSizeX)
      RetouchAreaMaskSizeYreal/_(RetouchAreasMasksSizeY)
      RetouchAreaMaskTopreal/_(RetouchAreasMasksTop)
      RetouchAreaMaskVersioninteger/_(RetouchAreasMasksVersion)
      RetouchAreaMaskWhatstring/_(RetouchAreasMasksWhat)
      RetouchAreaMaskWholeImageAreastring/_(RetouchAreasMasksWholeImageArea)
      RetouchAreaMaskXreal/_(RetouchAreasMasksX)
      RetouchAreaMaskYreal/_(RetouchAreasMasksY)
      RetouchAreaMaskZeroXreal/_(RetouchAreasMasksZeroX)
      RetouchAreaMaskZeroYreal/_(RetouchAreasMasksZeroY)
      RetouchAreaMethodstring/_(RetouchAreasMethod)
      RetouchAreaOffsetYreal/_(RetouchAreasOffsetY)
      RetouchAreaOpacityreal/_(RetouchAreasOpacity)
      RetouchAreaSeedinteger/_(RetouchAreasSeed)
      RetouchAreaSourceStatestring/_(RetouchAreasSourceState)
      RetouchAreaSourceXreal/_(RetouchAreasSourceX)
      RetouchAreaSpotTypestring/_(RetouchAreasSpotType)
      RetouchInfostring/+ 
      Saturationinteger/ 
      SaturationAdjustmentAquainteger/ 
      SaturationAdjustmentBlueinteger/ 
      SaturationAdjustmentGreeninteger/ 
      SaturationAdjustmentMagentainteger/ 
      SaturationAdjustmentOrangeinteger/ 
      SaturationAdjustmentPurpleinteger/ 
      SaturationAdjustmentRedinteger/ 
      SaturationAdjustmentYellowinteger/ 
      Shadowsinteger/ 
      Shadows2012integer/ 
      ShadowTintinteger/ 
      SharpenDetailinteger/ 
      SharpenEdgeMaskinginteger/ 
      SharpenRadiusreal/ 
      Sharpnessinteger/ 
      ShortNamelang-alt/ 
      Smoothnessinteger/ 
      SortNamelang-alt/ 
      SplitToningBalanceinteger/(also used for newer ColorGrade settings)
      SplitToningHighlightHueinteger/(also used for newer ColorGrade settings)
      SplitToningHighlightSaturationinteger/(also used for newer ColorGrade settings)
      SplitToningShadowHueinteger/(also used for newer ColorGrade settings)
      SplitToningShadowSaturationinteger/(also used for newer ColorGrade settings)
      SupportsAmountboolean/ 
      SupportsColorboolean/ 
      SupportsHighDynamicRangeboolean/ 
      SupportsMonochromeboolean/ 
      SupportsNormalDynamicRangeboolean/ 
      SupportsOutputReferredboolean/ 
      SupportsSceneReferredboolean/ 
      ColorTemperatureinteger/(called Temperature by the spec)
      Textureinteger/ 
      TIFFHandlingstring/ 
      Tintinteger/ 
      ToggleStyleAmountinteger/ 
      ToggleStyleDigeststring/ 
      ToneCurvestring/+ 
      ToneCurveBluestring/+ 
      ToneCurveGreenstring/+ 
      ToneCurveNamestring/'Custom' = Custom +
      'Linear' = Linear +
      'Medium Contrast' = Medium Contrast +
      'Strong Contrast' = Strong Contrast
      ToneCurveName2012string/ 
      ToneCurvePV2012string/+ 
      ToneCurvePV2012Bluestring/+ 
      ToneCurvePV2012Greenstring/+ 
      ToneCurvePV2012Redstring/+ 
      ToneCurveRedstring/+ 
      ToneMapStrengthreal/ 
      UprightCenterModeinteger/ 
      UprightCenterNormXreal/ 
      UprightCenterNormYreal/ 
      UprightDependentDigeststring/ 
      UprightFocalLength35mmreal/ 
      UprightFocalModeinteger/ 
      UprightFourSegmentsCountinteger/ 
      UprightPreviewboolean/ 
      UprightTransform_0string/ 
      UprightTransform_1string/ 
      UprightTransform_2string/ 
      UprightTransform_3string/ 
      UprightTransform_4string/ 
      UprightTransform_5string/ 
      UprightTransformCountinteger/ 
      UprightVersioninteger/ 
      UUIDstring/ 
      Versionstring/ 
      Vibranceinteger/ 
      VignetteAmountinteger/ 
      VignetteMidpointinteger/ 
      Whatstring/ 
      WhiteBalancestring/ +
      'As Shot' = As Shot +
      'Auto' = Auto +
      'Cloudy' = Cloudy +
      'Custom' = Custom +
      'Daylight' = Daylight +
      'Flash' = Flash +
      'Fluorescent' = Fluorescent +
      'Shade' = Shade +
      'Tungsten' = Tungsten
      +
      Whites2012integer/ 
      + +

      XMP Correction Struct

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      CorrectionActiveboolean 
      CorrectionAmountreal 
      CorrectionMasksCorrectionMask+--> CorrectionMask Struct
      CorrectionNamestring 
      CorrRangeMaskCorrRangeMask(called CorrectionRangeMask by the spec) +
      --> CorrRangeMask Struct
      CorrectionSyncIDstring 
      LocalBlacks2012real 
      LocalBrightnessreal 
      LocalClarityreal 
      LocalClarity2012real 
      LocalContrastreal 
      LocalContrast2012real 
      LocalDefringereal 
      LocalDehazereal 
      LocalExposurereal 
      LocalExposure2012real 
      LocalHighlights2012real 
      LocalHuereal 
      LocalLuminanceNoisereal 
      LocalMoirereal 
      LocalSaturationreal 
      LocalShadows2012real 
      LocalSharpnessreal 
      LocalTemperaturereal 
      LocalTexturereal 
      LocalTintreal 
      LocalToningHuereal 
      LocalToningSaturationreal 
      LocalWhites2012real 
      Whatstring 
      + +

      XMP CorrectionMask Struct

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      Alphareal 
      Anglereal 
      Bottomreal 
      CenterValuereal 
      CenterWeightreal 
      CorrRangeMaskCorrRangeMask(called CorrectionRangeMask by the spec) +
      --> CorrRangeMask Struct
      Dabsstring+ 
      Featherreal 
      Flippedboolean 
      Flowreal 
      FullXreal 
      FullYreal 
      InputDigeststring 
      Leftreal 
      MaskActiveboolean 
      MaskBlendModeinteger 
      MaskDigeststring 
      MaskInvertedboolean 
      MaskNamestring 
      MaskSubTypestring 
      MaskSyncIDstring 
      MaskValuereal 
      MaskVersionstring 
      MasksCorrectionMask--> CorrectionMask Struct
      Midpointreal 
      Originstring 
      PerimeterValuereal 
      Radiusreal 
      ReferencePointstring 
      Rightreal 
      Roundnessreal 
      SizeXreal 
      SizeYreal 
      Topreal 
      Versioninteger 
      Whatstring 
      WholeImageAreastring 
      Xreal 
      Yreal 
      ZeroXreal 
      ZeroYreal 
      + +

      XMP CorrRangeMask Struct

      +

      Called CorrectionRangeMask by the spec.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      AreaModelsAreaModels+--> AreaModels Struct
      ColorAmountreal 
      DepthFeatherreal 
      DepthMaxreal 
      DepthMinreal 
      Invertboolean 
      LumFeatherreal 
      LumMaxreal 
      LumMinreal 
      LumRangestring 
      LuminanceDepthSampleInfostring 
      SampleTypeinteger 
      Typestring 
      Versionstring 
      + +

      XMP AreaModels Struct

      +
      +
      + + + + + + + + + + + +
      Field NameWritableValues / Notes
      AreaComponentsstring+ 
      ColorRangeMaskAreaSampleInfostring 
      + +

      XMP Look Struct

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      Amountstring 
      Clusterstring 
      Copyrightstring 
      Grouplang-alt 
      Namestring 
      ParametersLookParms--> LookParms Struct
      SupportsAmountstring 
      SupportsMonochromestring 
      SupportsOutputReferredstring 
      UUIDstring 
      + +

      XMP LookParms Struct

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      CameraProfilestring 
      Clarity2012string 
      ConvertToGrayscalestring 
      LookTablestring 
      ProcessVersionstring 
      ToneCurvePV2012string+ 
      ToneCurvePV2012Bluestring+ 
      ToneCurvePV2012Greenstring+ 
      ToneCurvePV2012Redstring+ 
      Versionstring 
      + +

      XMP RangeMask Struct

      +

      This structure is actually called RangeMaskMapInfo, but it only contains one +element which is a RangeMaskMapInfo structure (Yes, really!). So these are +renamed to RangeMask and MapInfo respectively to avoid confusion and +redundancy in the tag names.

      +
      +
      + + + + + + + +
      Field NameWritableValues / Notes
      RangeMaskMapInfoMapInfo--> MapInfo Struct
      + +

      XMP MapInfo Struct

      +

      Called RangeMaskMapInfo by the specification, the same as the containing +structure.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      LabMaxstring 
      LabMinstring 
      LumEqstring+ 
      RGBMaxstring 
      RGBMinstring 
      + +

      XMP RetouchArea Struct

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      Featherreal 
      MasksCorrectionMask+--> CorrectionMask Struct
      Methodstring 
      OffsetYreal 
      Opacityreal 
      Seedinteger 
      SourceStatestring 
      SourceXreal 
      SpotTypestring 
      + +

      XMP creatorAtom Tags

      +

      Adobe creatorAtom tags, written by After Effects.

      + +

      These tags belong to the ExifTool XMP-creatorAtom family 1 group.

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Tag NameWritableValues / Notes
      AeProjectLinkstruct--> AEProjectLink Struct
      AeProjectLinkCompositionIDstring_ 
      AeProjectLinkFullPathstring_ 
      AeProjectLinkRenderOutputModuleIndexstring_ 
      AeProjectLinkRenderQueueItemIDstring_ 
      AeProjectLinkRenderTimeStampinteger_ 
      MacAtomstruct--> MacAtom Struct
      MacAtomApplicationCodestring_ 
      MacAtomInvocationAppleEventstring_ 
      MacAtomPosixProjectPathstring_ 
      WindowsAtomstruct--> WindowsAtom Struct
      WindowsAtomExtensionstring_ 
      WindowsAtomInvocationFlagsstring_ 
      WindowsAtomUncProjectPathstring_ 
      + +

      XMP AEProjectLink Struct

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      CompositionIDstring 
      FullPathstring 
      RenderOutputModuleIndexstring 
      RenderQueueItemIDstring 
      RenderTimeStampinteger 
      + +

      XMP MacAtom Struct

      +
      +
      + + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      ApplicationCodestring 
      InvocationAppleEventstring 
      PosixProjectPathstring 
      + +

      XMP WindowsAtom Struct

      +
      +
      + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      Extensionstring 
      InvocationFlagsstring 
      UncProjectPathstring 
      -

      XMP creatorAtom Tags

      -

      Adobe creatorAtom tags, written by After Effects.

      +

      XMP crs Tags

      +

      Photoshop Camera Raw namespace tags. It is a shame that Adobe pollutes the +metadata space with these incredibly bulky image editing parameters.

      -

      These tags belong to the ExifTool XMP-creatorAtom family 1 group.

      +

      These tags belong to the ExifTool XMP-crs family 1 group.

      - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + - + - + + + + + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - + + + + + - + + + + + - + - + - + + + + + - + + + + + - - - + + + - + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + - + + + + + - + - -
      Tag Name WritableValues / Notes
      AeProjectLinkstruct--> AEProjectLink Struct
      AlreadyAppliedboolean 
      AutoBrightnessboolean 
      AutoContrastboolean 
      AutoExposureboolean 
      AutoLateralCAinteger 
      AutoShadowsboolean 
      AutoToneboolean 
      AutoToneDigeststring 
      AutoToneDigestNoSatstring 
      AutoWhiteVersioninteger 
      Blacks2012integer 
      BlueHueinteger 
      BlueSaturationinteger 
      Brightnessinteger 
      CameraModelRestrictionstring 
      CameraProfilestring 
      CameraProfileDigeststring 
      ChromaticAberrationBinteger 
      ChromaticAberrationRinteger 
      CircularGradientBasedCorrectionsstruct+--> Correction Struct
      CircGradBasedCorrActiveboolean_(CircularGradientBasedCorrectionsCorrectionActive)
      CircGradBasedCorrAmountreal_(CircularGradientBasedCorrectionsCorrectionAmount)
      CircGradBasedCorrMasksstruct_+--> CorrectionMask Struct +
      (CircularGradientBasedCorrectionsCorrectionMasks)
      CircGradBasedCorrMaskAlphareal_(CircularGradientBasedCorrectionsCorrectionMasksAlpha)
      CircGradBasedCorrMaskAnglereal_(CircularGradientBasedCorrectionsCorrectionMasksAngle)
      CircGradBasedCorrMaskBottomreal_(CircularGradientBasedCorrectionsCorrectionMasksBottom)
      CircGradBasedCorrMaskCenterValuereal_(CircularGradientBasedCorrectionsCorrectionMasksCenterValue)
      CircGradBasedCorrMaskCenterWeightreal_(CircularGradientBasedCorrectionsCorrectionMasksCenterWeight)
      CircGradBasedCorrMaskRangestruct_+--> CorrRangeMask Struct +
      (CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMask; called CorrectionRangeMask by the spec)
      CircGradBasedCorrMaskRangeAreaModelsstruct_+--> AreaModels Struct +
      (CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels)
      CircGradBasedCorrMaskRangeAreaModelsComponentsstring_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents)
      CircGradBasedCorrMaskRangeAreaModelsColorSampleInfostring_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      CircGradBasedCorrMaskRangeColorAmountreal_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount)
      CircGradBasedCorrMaskRangeDepthFeatherreal_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather)
      CircGradBasedCorrMaskRangeDepthMaxreal_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax)
      CircGradBasedCorrMaskRangeDepthMinreal_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin)
      CircGradBasedCorrMaskRangeInvertboolean_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert)
      CircGradBasedCorrMaskRangeLumFeatherreal_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather)
      CircGradBasedCorrMaskRangeLuminanceDepthSampleInfostring_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo)
      CircGradBasedCorrMaskRangeLumMaxreal_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax)
      CircGradBasedCorrMaskRangeLumMinreal_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin)
      CircGradBasedCorrMaskRangeLumRangestring_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange)
      CircGradBasedCorrMaskRangeSampleTypeinteger_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType)
      CircGradBasedCorrMaskRangeTypestring_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskType)
      CircGradBasedCorrMaskRangeVersionstring_+(CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion)
      CircGradBasedCorrMaskDabsstring_(CircularGradientBasedCorrectionsCorrectionMasksDabs)
      CircGradBasedCorrMaskFeatherreal_(CircularGradientBasedCorrectionsCorrectionMasksFeather)
      CircGradBasedCorrMaskFlippedboolean_(CircularGradientBasedCorrectionsCorrectionMasksFlipped)
      CircGradBasedCorrMaskFlowreal_(CircularGradientBasedCorrectionsCorrectionMasksFlow)
      CircGradBasedCorrMaskFullXreal_(CircularGradientBasedCorrectionsCorrectionMasksFullX)
      CircGradBasedCorrMaskFullYreal_(CircularGradientBasedCorrectionsCorrectionMasksFullY)
      CircGradBasedCorrMaskInputDigeststring_(CircularGradientBasedCorrectionsCorrectionMasksInputDigest)
      CircGradBasedCorrMaskLeftreal_(CircularGradientBasedCorrectionsCorrectionMasksLeft)
      CircGradBasedCorrMaskMaskActiveboolean_(CircularGradientBasedCorrectionsCorrectionMasksMaskActive)
      CircGradBasedCorrMaskMaskBlendModeinteger_(CircularGradientBasedCorrectionsCorrectionMasksMaskBlendMode)
      CircGradBasedCorrMaskMaskDigeststring_(CircularGradientBasedCorrectionsCorrectionMasksMaskDigest)
      CircGradBasedCorrMaskMaskInvertedboolean_(CircularGradientBasedCorrectionsCorrectionMasksMaskInverted)
      CircGradBasedCorrMaskMaskNamestring_(CircularGradientBasedCorrectionsCorrectionMasksMaskName)
      CircGradBasedCorrMaskMasksstruct_+--> CorrectionMask Struct +
      (CircularGradientBasedCorrectionsCorrectionMasksMasks)
      CircGradBasedCorrMaskMasksAlphareal_(CircularGradientBasedCorrectionsCorrectionMasksMasksAlpha)
      CircGradBasedCorrMaskMasksAnglereal_(CircularGradientBasedCorrectionsCorrectionMasksMasksAngle)
      CircGradBasedCorrMaskMasksBottomreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksBottom)
      CircGradBasedCorrMaskMasksCenterValuereal_(CircularGradientBasedCorrectionsCorrectionMasksMasksCenterValue)
      CircGradBasedCorrMaskMasksCenterWeightreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksCenterWeight)
      CircGradBasedCorrMaskMasksDabsstring_+(CircularGradientBasedCorrectionsCorrectionMasksMasksDabs)
      CircGradBasedCorrMaskMasksFeatherreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksFeather)
      CircGradBasedCorrMaskMasksFlippedboolean_(CircularGradientBasedCorrectionsCorrectionMasksMasksFlipped)
      CircGradBasedCorrMaskMasksFlowreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksFlow)
      CircGradBasedCorrMaskMasksFullXreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksFullX)
      CircGradBasedCorrMaskMasksFullYreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksFullY)
      CircGradBasedCorrMaskMasksInputDigeststring_(CircularGradientBasedCorrectionsCorrectionMasksMasksInputDigest)
      CircGradBasedCorrMaskMasksLeftreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksLeft)
      CircGradBasedCorrMaskMasksMaskActiveboolean_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskActive)
      CircGradBasedCorrMaskMasksMaskBlendModeinteger_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskBlendMode)
      CircGradBasedCorrMaskMasksMaskDigeststring_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskDigest)
      CircGradBasedCorrMaskMasksMaskInvertedboolean_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskInverted)
      CircGradBasedCorrMaskMasksMaskNamestring_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskName)
      CircGradBasedCorrMaskMasksMaskSubTypestring_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskSubType)
      CircGradBasedCorrMaskMasksMaskSyncIDstring_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskSyncID)
      CircGradBasedCorrMaskMasksValuereal_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskValue)
      CircGradBasedCorrMaskMasksMaskVersionstring_(CircularGradientBasedCorrectionsCorrectionMasksMasksMaskVersion)
      CircGradBasedCorrMaskMasksMidpointreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksMidpoint)
      CircGradBasedCorrMaskMasksOriginstring_(CircularGradientBasedCorrectionsCorrectionMasksMasksOrigin)
      CircGradBasedCorrMaskMasksPerimeterValuereal_(CircularGradientBasedCorrectionsCorrectionMasksMasksPerimeterValue)
      CircGradBasedCorrMaskMasksRadiusreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksRadius)
      CircGradBasedCorrMaskMasksReferencePointstring_(CircularGradientBasedCorrectionsCorrectionMasksMasksReferencePoint)
      CircGradBasedCorrMaskMasksRightreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksRight)
      CircGradBasedCorrMaskMasksRoundnessreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksRoundness)
      CircGradBasedCorrMaskMasksSizeXreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksSizeX)
      CircGradBasedCorrMaskMasksSizeYreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksSizeY)
      CircGradBasedCorrMaskMasksTopreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksTop)
      CircGradBasedCorrMaskMaskSubTypestring_(CircularGradientBasedCorrectionsCorrectionMasksMaskSubType)
      CircGradBasedCorrMaskMasksVersioninteger_(CircularGradientBasedCorrectionsCorrectionMasksMasksVersion)
      CircGradBasedCorrMaskMasksWhatstring_(CircularGradientBasedCorrectionsCorrectionMasksMasksWhat)
      CircGradBasedCorrMaskMasksWholeImageAreastring_(CircularGradientBasedCorrectionsCorrectionMasksMasksWholeImageArea)
      CircGradBasedCorrMaskMasksXreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksX)
      CircGradBasedCorrMaskMasksYreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksY)
      CircGradBasedCorrMaskMaskSyncIDstring_(CircularGradientBasedCorrectionsCorrectionMasksMaskSyncID)
      CircGradBasedCorrMaskMasksZeroXreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksZeroX)
      CircGradBasedCorrMaskMasksZeroYreal_(CircularGradientBasedCorrectionsCorrectionMasksMasksZeroY)
      CircGradBasedCorrMaskValuereal_(CircularGradientBasedCorrectionsCorrectionMasksMaskValue)
      CircGradBasedCorrMaskMaskVersionstring_(CircularGradientBasedCorrectionsCorrectionMasksMaskVersion)
      CircGradBasedCorrMaskMidpointreal_(CircularGradientBasedCorrectionsCorrectionMasksMidpoint)
      CircGradBasedCorrMaskOriginstring_(CircularGradientBasedCorrectionsCorrectionMasksOrigin)
      CircGradBasedCorrMaskPerimeterValuereal_(CircularGradientBasedCorrectionsCorrectionMasksPerimeterValue)
      CircGradBasedCorrMaskRadiusreal_(CircularGradientBasedCorrectionsCorrectionMasksRadius)
      CircGradBasedCorrMaskReferencePointstring_(CircularGradientBasedCorrectionsCorrectionMasksReferencePoint)
      CircGradBasedCorrMaskRightreal_(CircularGradientBasedCorrectionsCorrectionMasksRight)
      CircGradBasedCorrMaskRoundnessreal_(CircularGradientBasedCorrectionsCorrectionMasksRoundness)
      CircGradBasedCorrMaskSizeXreal_(CircularGradientBasedCorrectionsCorrectionMasksSizeX)
      CircGradBasedCorrMaskSizeYreal_(CircularGradientBasedCorrectionsCorrectionMasksSizeY)
      CircGradBasedCorrMaskTopreal_(CircularGradientBasedCorrectionsCorrectionMasksTop)
      CircGradBasedCorrMaskVersioninteger_(CircularGradientBasedCorrectionsCorrectionMasksVersion)
      CircGradBasedCorrMaskWhatstring_(CircularGradientBasedCorrectionsCorrectionMasksWhat)
      CircGradBasedCorrMaskWholeImageAreastring_(CircularGradientBasedCorrectionsCorrectionMasksWholeImageArea)
      CircGradBasedCorrMaskXreal_(CircularGradientBasedCorrectionsCorrectionMasksX)
      CircGradBasedCorrMaskYreal_(CircularGradientBasedCorrectionsCorrectionMasksY)
      CircGradBasedCorrMaskZeroXreal_(CircularGradientBasedCorrectionsCorrectionMasksZeroX)
      CircGradBasedCorrMaskZeroYreal_(CircularGradientBasedCorrectionsCorrectionMasksZeroY)
      CircGradBasedCorrCorrectionNamestring_+(CircularGradientBasedCorrectionsCorrectionName)
      CircGradBasedCorrRangeMaskstruct_+--> CorrRangeMask Struct +
      (CircularGradientBasedCorrectionsCorrectionRangeMask; called CorrectionRangeMask by the spec)
      CircGradBasedCorrRangeMaskAreaModelsstruct_+--> AreaModels Struct +
      (CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModels)
      CircGradBasedCorrRangeMaskAreaModelsComponentsstring_+(CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents)
      CircGradBasedCorrRangeMaskAreaModelsColorSampleInfostring_+(CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      CircGradBasedCorrRangeMaskColorAmountreal_+(CircularGradientBasedCorrectionsCorrectionRangeMaskColorAmount)
      CircGradBasedCorrRangeMaskDepthFeatherreal_+(CircularGradientBasedCorrectionsCorrectionRangeMaskDepthFeather)
      CircGradBasedCorrRangeMaskDepthMaxreal_+(CircularGradientBasedCorrectionsCorrectionRangeMaskDepthMax)
      CircGradBasedCorrRangeMaskDepthMinreal_+(CircularGradientBasedCorrectionsCorrectionRangeMaskDepthMin)
      CircGradBasedCorrRangeMaskInvertboolean_+(CircularGradientBasedCorrectionsCorrectionRangeMaskInvert)
      CircGradBasedCorrRangeMaskLumFeatherreal_+(CircularGradientBasedCorrectionsCorrectionRangeMaskLumFeather)
      CircGradBasedCorrRangeMaskLuminanceDepthSampleInfostring_+(CircularGradientBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo)
      CircGradBasedCorrRangeMaskLumMaxreal_+(CircularGradientBasedCorrectionsCorrectionRangeMaskLumMax)
      CircGradBasedCorrRangeMaskLumMinreal_+(CircularGradientBasedCorrectionsCorrectionRangeMaskLumMin)
      CircGradBasedCorrRangeMaskLumRangestring_+(CircularGradientBasedCorrectionsCorrectionRangeMaskLumRange)
      CircGradBasedCorrRangeMaskSampleTypeinteger_+(CircularGradientBasedCorrectionsCorrectionRangeMaskSampleType)
      CircGradBasedCorrRangeMaskTypestring_+(CircularGradientBasedCorrectionsCorrectionRangeMaskType)
      CircGradBasedCorrRangeMaskVersionstring_+(CircularGradientBasedCorrectionsCorrectionRangeMaskVersion)
      CircGradBasedCorrCorrectionSyncIDstring_+(CircularGradientBasedCorrectionsCorrectionSyncID)
      CircGradBasedCorrBlacks2012real_(CircularGradientBasedCorrectionsLocalBlacks2012)
      CircGradBasedCorrBrightnessreal_(CircularGradientBasedCorrectionsLocalBrightness)
      CircGradBasedCorrClarityreal_(CircularGradientBasedCorrectionsLocalClarity)
      CircGradBasedCorrClarity2012real_(CircularGradientBasedCorrectionsLocalClarity2012)
      CircGradBasedCorrContrastreal_(CircularGradientBasedCorrectionsLocalContrast)
      CircGradBasedCorrContrast2012real_(CircularGradientBasedCorrectionsLocalContrast2012)
      CircGradBasedCorrDefringereal_(CircularGradientBasedCorrectionsLocalDefringe)
      CircGradBasedCorrDehazereal_(CircularGradientBasedCorrectionsLocalDehaze)
      CircGradBasedCorrExposurereal_(CircularGradientBasedCorrectionsLocalExposure)
      CircGradBasedCorrExposure2012real_(CircularGradientBasedCorrectionsLocalExposure2012)
      CircGradBasedCorrHighlights2012real_(CircularGradientBasedCorrectionsLocalHighlights2012)
      CircGradBasedCorrHuereal_(CircularGradientBasedCorrectionsLocalHue)
      CircGradBasedCorrLuminanceNoisereal_(CircularGradientBasedCorrectionsLocalLuminanceNoise)
      CircGradBasedCorrMoirereal_(CircularGradientBasedCorrectionsLocalMoire)
      CircGradBasedCorrSaturationreal_(CircularGradientBasedCorrectionsLocalSaturation)
      CircGradBasedCorrShadows2012real_(CircularGradientBasedCorrectionsLocalShadows2012)
      CircGradBasedCorrSharpnessreal_(CircularGradientBasedCorrectionsLocalSharpness)
      CircGradBasedCorrTemperaturereal_(CircularGradientBasedCorrectionsLocalTemperature)
      CircGradBasedCorrTexturereal_(CircularGradientBasedCorrectionsLocalTexture)
      CircGradBasedCorrTintreal_(CircularGradientBasedCorrectionsLocalTint)
      CircGradBasedCorrToningHuereal_(CircularGradientBasedCorrectionsLocalToningHue)
      CircGradBasedCorrToningSaturationreal_(CircularGradientBasedCorrectionsLocalToningSaturation)
      CircGradBasedCorrWhites2012real_(CircularGradientBasedCorrectionsLocalWhites2012)
      CircGradBasedCorrWhatstring_(CircularGradientBasedCorrectionsWhat)
      Clarityinteger 
      Clarity2012integer 
      ClipboardAspectRatiointeger 
      ClipboardOrientationinteger 
      Clusterstring 
      ColorGradeBlendinginteger 
      ColorGradeGlobalHueinteger 
      ColorGradeGlobalLuminteger 
      ColorGradeGlobalSatinteger 
      ColorGradeHighlightLuminteger 
      ColorGradeMidtoneHueinteger 
      ColorGradeMidtoneLuminteger 
      ColorGradeMidtoneSatinteger 
      ColorGradeShadowLuminteger 
      ColorNoiseReductioninteger 
      ColorNoiseReductionDetailinteger 
      ColorNoiseReductionSmoothnessinteger 
      CompatibleVersionstring 
      ContactInfostring 
      Contrastinteger/ 
      Contrast2012integer 
      Converterstring 
      ConvertToGrayscaleboolean 
      Copyrightstring/ 
      CropAnglereal 
      CropBottomreal 
      CropConstrainToWarpinteger 
      CropHeightreal 
      CropLeftreal 
      CropRightreal 
      CropTopreal 
      CropUnitinteger0 = pixels +
      1 = inches +
      2 = cm
      CropUnitsinteger0 = pixels +
      1 = inches +
      2 = cm
      CropWidthreal 
      DefaultAutoGrayboolean 
      DefaultAutoToneboolean 
      DefaultsSpecificToISOboolean 
      DefaultsSpecificToSerialboolean 
      Defringeinteger 
      DefringeGreenAmountinteger 
      DefringeGreenHueHiinteger 
      DefringeGreenHueLointeger 
      DefringePurpleAmountinteger 
      DefringePurpleHueHiinteger 
      DefringePurpleHueLointeger 
      Dehazereal 
      Descriptionlang-alt/ 
      DNGIgnoreSidecarsboolean 
      Exposurereal 
      Exposure2012real 
      FillLightinteger 
      GradientBasedCorrectionsstruct+--> Correction Struct
      GradientBasedCorrActiveboolean_(GradientBasedCorrectionsCorrectionActive)
      GradientBasedCorrAmountreal_(GradientBasedCorrectionsCorrectionAmount)
      GradientBasedCorrMasksstruct_+--> CorrectionMask Struct +
      (GradientBasedCorrectionsCorrectionMasks)
      GradientBasedCorrMaskAlphareal_(GradientBasedCorrectionsCorrectionMasksAlpha)
      GradientBasedCorrMaskAnglereal_(GradientBasedCorrectionsCorrectionMasksAngle)
      GradientBasedCorrMaskBottomreal_(GradientBasedCorrectionsCorrectionMasksBottom)
      GradientBasedCorrMaskCenterValuereal_(GradientBasedCorrectionsCorrectionMasksCenterValue)
      GradientBasedCorrMaskCenterWeightreal_(GradientBasedCorrectionsCorrectionMasksCenterWeight)
      GradientBasedCorrMaskRangestruct_+--> CorrRangeMask Struct +
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMask; called CorrectionRangeMask by the spec)
      GradientBasedCorrMaskRangeAreaModelsstruct_+--> AreaModels Struct +
      (GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels)
      GradientBasedCorrMaskRangeAreaModelsComponentsstring_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents)
      GradientBasedCorrMaskRangeAreaModelsColorSampleInfostring_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      GradientBasedCorrMaskRangeColorAmountreal_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount)
      GradientBasedCorrMaskRangeDepthFeatherreal_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather)
      GradientBasedCorrMaskRangeDepthMaxreal_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax)
      AeProjectLinkCompositionIDGradientBasedCorrMaskRangeDepthMinreal_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin)
      GradientBasedCorrMaskRangeInvertboolean_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert)
      GradientBasedCorrMaskRangeLumFeatherreal_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather)
      GradientBasedCorrMaskRangeLuminanceDepthSampleInfostring_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo)
      GradientBasedCorrMaskRangeLumMaxreal_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax)
      GradientBasedCorrMaskRangeLumMinreal_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin)
      GradientBasedCorrMaskRangeLumRangestring_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange)
      GradientBasedCorrMaskRangeSampleTypeinteger_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType)
      GradientBasedCorrMaskRangeTypestring_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskType)
      GradientBasedCorrMaskRangeVersionstring_+(GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion)
      GradientBasedCorrMaskDabs string_ 
      (GradientBasedCorrectionsCorrectionMasksDabs)
      AeProjectLinkFullPathGradientBasedCorrMaskFeatherreal_(GradientBasedCorrectionsCorrectionMasksFeather)
      GradientBasedCorrMaskFlippedboolean_(GradientBasedCorrectionsCorrectionMasksFlipped)
      GradientBasedCorrMaskFlowreal_(GradientBasedCorrectionsCorrectionMasksFlow)
      GradientBasedCorrMaskFullXreal_(GradientBasedCorrectionsCorrectionMasksFullX)
      GradientBasedCorrMaskFullYreal_(GradientBasedCorrectionsCorrectionMasksFullY)
      GradientBasedCorrMaskInputDigest string_ 
      (GradientBasedCorrectionsCorrectionMasksInputDigest)
      GradientBasedCorrMaskLeftreal_(GradientBasedCorrectionsCorrectionMasksLeft)
      AeProjectLinkRenderOutputModuleIndexGradientBasedCorrMaskMaskActiveboolean_(GradientBasedCorrectionsCorrectionMasksMaskActive)
      GradientBasedCorrMaskMaskBlendModeinteger_(GradientBasedCorrectionsCorrectionMasksMaskBlendMode)
      GradientBasedCorrMaskMaskDigest string_ 
      (GradientBasedCorrectionsCorrectionMasksMaskDigest)
      AeProjectLinkRenderQueueItemIDGradientBasedCorrMaskMaskInvertedboolean_(GradientBasedCorrectionsCorrectionMasksMaskInverted)
      GradientBasedCorrMaskMaskName string_ 
      (GradientBasedCorrectionsCorrectionMasksMaskName)
      GradientBasedCorrMaskMasksstruct_+--> CorrectionMask Struct +
      (GradientBasedCorrectionsCorrectionMasksMasks)
      AeProjectLinkRenderTimeStampGradientBasedCorrMaskMasksAlphareal_(GradientBasedCorrectionsCorrectionMasksMasksAlpha)
      GradientBasedCorrMaskMasksAnglereal_(GradientBasedCorrectionsCorrectionMasksMasksAngle)
      GradientBasedCorrMaskMasksBottomreal_(GradientBasedCorrectionsCorrectionMasksMasksBottom)
      GradientBasedCorrMaskMasksCenterValuereal_(GradientBasedCorrectionsCorrectionMasksMasksCenterValue)
      GradientBasedCorrMaskMasksCenterWeightreal_(GradientBasedCorrectionsCorrectionMasksMasksCenterWeight)
      GradientBasedCorrMaskMasksDabsstring_+(GradientBasedCorrectionsCorrectionMasksMasksDabs)
      GradientBasedCorrMaskMasksFeatherreal_(GradientBasedCorrectionsCorrectionMasksMasksFeather)
      GradientBasedCorrMaskMasksFlippedboolean_(GradientBasedCorrectionsCorrectionMasksMasksFlipped)
      GradientBasedCorrMaskMasksFlowreal_(GradientBasedCorrectionsCorrectionMasksMasksFlow)
      GradientBasedCorrMaskMasksFullXreal_(GradientBasedCorrectionsCorrectionMasksMasksFullX)
      GradientBasedCorrMaskMasksFullYreal_(GradientBasedCorrectionsCorrectionMasksMasksFullY)
      GradientBasedCorrMaskMasksInputDigeststring_(GradientBasedCorrectionsCorrectionMasksMasksInputDigest)
      GradientBasedCorrMaskMasksLeftreal_(GradientBasedCorrectionsCorrectionMasksMasksLeft)
      GradientBasedCorrMaskMasksMaskActiveboolean_(GradientBasedCorrectionsCorrectionMasksMasksMaskActive)
      GradientBasedCorrMaskMasksMaskBlendMode integer_ 
      (GradientBasedCorrectionsCorrectionMasksMasksMaskBlendMode)
      MacAtomstruct--> MacAtom Struct
      GradientBasedCorrMaskMasksMaskDigeststring_(GradientBasedCorrectionsCorrectionMasksMasksMaskDigest)
      MacAtomApplicationCodeGradientBasedCorrMaskMasksMaskInvertedboolean_(GradientBasedCorrectionsCorrectionMasksMasksMaskInverted)
      GradientBasedCorrMaskMasksMaskName string_ 
      (GradientBasedCorrectionsCorrectionMasksMasksMaskName)
      GradientBasedCorrMaskMasksMaskSubTypestring_(GradientBasedCorrectionsCorrectionMasksMasksMaskSubType)
      MacAtomInvocationAppleEventGradientBasedCorrMaskMasksMaskSyncID string_ 
      (GradientBasedCorrectionsCorrectionMasksMasksMaskSyncID)
      MacAtomPosixProjectPathGradientBasedCorrMaskMasksValuereal_(GradientBasedCorrectionsCorrectionMasksMasksMaskValue)
      GradientBasedCorrMaskMasksMaskVersion string_ 
      (GradientBasedCorrectionsCorrectionMasksMasksMaskVersion)
      GradientBasedCorrMaskMasksMidpointreal_(GradientBasedCorrectionsCorrectionMasksMasksMidpoint)
      WindowsAtomstruct--> WindowsAtom Struct
      GradientBasedCorrMaskMasksOriginstring_(GradientBasedCorrectionsCorrectionMasksMasksOrigin)
      WindowsAtomExtensionGradientBasedCorrMaskMasksPerimeterValuereal_(GradientBasedCorrectionsCorrectionMasksMasksPerimeterValue)
      GradientBasedCorrMaskMasksRadiusreal_(GradientBasedCorrectionsCorrectionMasksMasksRadius)
      GradientBasedCorrMaskMasksReferencePoint string_ 
      (GradientBasedCorrectionsCorrectionMasksMasksReferencePoint)
      WindowsAtomInvocationFlagsGradientBasedCorrMaskMasksRightreal_(GradientBasedCorrectionsCorrectionMasksMasksRight)
      GradientBasedCorrMaskMasksRoundnessreal_(GradientBasedCorrectionsCorrectionMasksMasksRoundness)
      GradientBasedCorrMaskMasksSizeXreal_(GradientBasedCorrectionsCorrectionMasksMasksSizeX)
      GradientBasedCorrMaskMasksSizeYreal_(GradientBasedCorrectionsCorrectionMasksMasksSizeY)
      GradientBasedCorrMaskMasksTopreal_(GradientBasedCorrectionsCorrectionMasksMasksTop)
      GradientBasedCorrMaskMaskSubType string_ 
      (GradientBasedCorrectionsCorrectionMasksMaskSubType)
      GradientBasedCorrMaskMasksVersioninteger_(GradientBasedCorrectionsCorrectionMasksMasksVersion)
      WindowsAtomUncProjectPathGradientBasedCorrMaskMasksWhat string_ 
      - -

      XMP AEProjectLink Struct

      -
      -
      - - - + - - - + + + - - - + + + - - - + + + - - - + + + - - - -
      Field NameWritableValues / Notes
      (GradientBasedCorrectionsCorrectionMasksMasksWhat)
      CompositionIDstring 
      GradientBasedCorrMaskMasksWholeImageAreastring_(GradientBasedCorrectionsCorrectionMasksMasksWholeImageArea)
      FullPathstring 
      GradientBasedCorrMaskMasksXreal_(GradientBasedCorrectionsCorrectionMasksMasksX)
      RenderOutputModuleIndexstring 
      GradientBasedCorrMaskMasksYreal_(GradientBasedCorrectionsCorrectionMasksMasksY)
      RenderQueueItemIDstring 
      GradientBasedCorrMaskMaskSyncIDstring_(GradientBasedCorrectionsCorrectionMasksMaskSyncID)
      RenderTimeStampinteger 
      - -

      XMP MacAtom Struct

      -
      -
      - - - + + + + + + + - - - + + + - - - + + + - - - -
      Field NameWritableValues / Notes
      GradientBasedCorrMaskMasksZeroXreal_(GradientBasedCorrectionsCorrectionMasksMasksZeroX)
      GradientBasedCorrMaskMasksZeroYreal_(GradientBasedCorrectionsCorrectionMasksMasksZeroY)
      ApplicationCodestring 
      GradientBasedCorrMaskValuereal_(GradientBasedCorrectionsCorrectionMasksMaskValue)
      InvocationAppleEventstring 
      GradientBasedCorrMaskMaskVersionstring_(GradientBasedCorrectionsCorrectionMasksMaskVersion)
      PosixProjectPathstring 
      - -

      XMP WindowsAtom Struct

      -
      -
      - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - -
      Field NameWritableValues / Notes
      GradientBasedCorrMaskMidpointreal_(GradientBasedCorrectionsCorrectionMasksMidpoint)
      GradientBasedCorrMaskOriginstring_(GradientBasedCorrectionsCorrectionMasksOrigin)
      GradientBasedCorrMaskPerimeterValuereal_(GradientBasedCorrectionsCorrectionMasksPerimeterValue)
      GradientBasedCorrMaskRadiusreal_(GradientBasedCorrectionsCorrectionMasksRadius)
      GradientBasedCorrMaskReferencePointstring_(GradientBasedCorrectionsCorrectionMasksReferencePoint)
      GradientBasedCorrMaskRightreal_(GradientBasedCorrectionsCorrectionMasksRight)
      GradientBasedCorrMaskRoundnessreal_(GradientBasedCorrectionsCorrectionMasksRoundness)
      GradientBasedCorrMaskSizeXreal_(GradientBasedCorrectionsCorrectionMasksSizeX)
      GradientBasedCorrMaskSizeYreal_(GradientBasedCorrectionsCorrectionMasksSizeY)
      GradientBasedCorrMaskTopreal_(GradientBasedCorrectionsCorrectionMasksTop)
      GradientBasedCorrMaskVersioninteger_(GradientBasedCorrectionsCorrectionMasksVersion)
      GradientBasedCorrMaskWhatstring_(GradientBasedCorrectionsCorrectionMasksWhat)
      Extensionstring 
      GradientBasedCorrMaskWholeImageAreastring_(GradientBasedCorrectionsCorrectionMasksWholeImageArea)
      InvocationFlagsstring 
      GradientBasedCorrMaskXreal_(GradientBasedCorrectionsCorrectionMasksX)
      UncProjectPathstring 
      - -

      XMP crs Tags

      -

      Photoshop Camera Raw namespace tags. It is a shame that Adobe pollutes the -metadata space with these incredibly bulky image editing parameters.

      - -

      These tags belong to the ExifTool XMP-crs family 1 group.

      -
      -
      - - - + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + + = List'>string_+ + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + + + + + - + + + + + - - - + + + - - - + + + - - - + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - + - + + + + + + + + + - - + + - + - + + + + + + + + + - + + + + + + + + + + + + + + + + + - - + + - + + + + + + + + + - + + + + + + + + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - + - + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + +
      (MaskGroupBasedCorrectionsCorrectionMasks) - + - + - + - + - + - + - + - + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + - + - + - + - + - + - + + + + + - + + + + + - + - + - + - + - - - + + + - + + + + + + + + + - + - + - + - + - + - + - + - + - + - + + + + + - + + + + + - + - + - + - + - + - + - + + + + + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + - + + + + + - + - + - + - + - + + + + + - + + + + + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + - + - + - + - + + + + + - + + + + + - + + + + + - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3930,17 +8859,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3950,49 +9082,158 @@ + + + + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + @@ -4018,17 +9259,25 @@ + + + + - + - + + + + + @@ -4054,17 +9303,25 @@ + + + + - - + + - - + + + + + + @@ -4122,135 +9379,464 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - - - + + + - + - + - + - + - + + + + + - + + + + + - + - + - + - + - + + + + + - + + + + + - - - + + + - - - + + + - + - + - + - + - - - + + + - + - + + + + + + + + + + + + + - + + + + + @@ -4280,140 +9866,180 @@ + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + - - + + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4432,6 +10058,14 @@ + + + + + + + + @@ -4543,26 +10177,30 @@ + + + + - + - + - + - + - + - + @@ -6096,8 +11734,8 @@ - + @@ -6409,8 +12047,8 @@
      Tag NameWritableValues / Notes
      GradientBasedCorrMaskYreal_(GradientBasedCorrectionsCorrectionMasksY)
      GradientBasedCorrMaskZeroXreal_(GradientBasedCorrectionsCorrectionMasksZeroX)
      AlreadyAppliedboolean 
      GradientBasedCorrMaskZeroYreal_(GradientBasedCorrectionsCorrectionMasksZeroY)
      AutoBrightnessboolean 
      GradientBasedCorrCorrectionNamestring_+(GradientBasedCorrectionsCorrectionName)
      AutoContrastboolean 
      GradientBasedCorrRangeMaskstruct_+--> CorrRangeMask Struct +
      (GradientBasedCorrectionsCorrectionRangeMask; called CorrectionRangeMask by the spec)
      AutoExposureboolean 
      GradientBasedCorrRangeMaskAreaModelsstruct_+--> AreaModels Struct +
      (GradientBasedCorrectionsCorrectionRangeMaskAreaModels)
      AutoLateralCAinteger 
      GradientBasedCorrRangeMaskAreaModelsComponentsstring_+(GradientBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents)
      AutoShadowsboolean 
      GradientBasedCorrRangeMaskAreaModelsColorSampleInfostring_+(GradientBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      AutoToneboolean 
      GradientBasedCorrRangeMaskColorAmountreal_+(GradientBasedCorrectionsCorrectionRangeMaskColorAmount)
      AutoWhiteVersioninteger 
      GradientBasedCorrRangeMaskDepthFeatherreal_+(GradientBasedCorrectionsCorrectionRangeMaskDepthFeather)
      Blacks2012integer 
      GradientBasedCorrRangeMaskDepthMaxreal_+(GradientBasedCorrectionsCorrectionRangeMaskDepthMax)
      BlueHueinteger 
      GradientBasedCorrRangeMaskDepthMinreal_+(GradientBasedCorrectionsCorrectionRangeMaskDepthMin)
      BlueSaturationinteger 
      GradientBasedCorrRangeMaskInvertboolean_+(GradientBasedCorrectionsCorrectionRangeMaskInvert)
      Brightnessinteger 
      GradientBasedCorrRangeMaskLumFeatherreal_+(GradientBasedCorrectionsCorrectionRangeMaskLumFeather)
      CameraProfilestring 
      GradientBasedCorrRangeMaskLuminanceDepthSampleInfostring_+(GradientBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo)
      CameraProfileDigeststring 
      GradientBasedCorrRangeMaskLumMaxreal_+(GradientBasedCorrectionsCorrectionRangeMaskLumMax)
      ChromaticAberrationBinteger 
      GradientBasedCorrRangeMaskLumMinreal_+(GradientBasedCorrectionsCorrectionRangeMaskLumMin)
      ChromaticAberrationRinteger 
      GradientBasedCorrRangeMaskLumRangestring_+(GradientBasedCorrectionsCorrectionRangeMaskLumRange)
      CircularGradientBasedCorrectionsstruct+--> Correction Struct
      GradientBasedCorrRangeMaskSampleTypeinteger_+(GradientBasedCorrectionsCorrectionRangeMaskSampleType)
      CircGradBasedCorrActiveboolean_(CircularGradientBasedCorrectionsCorrectionActive)
      GradientBasedCorrRangeMaskTypestring_+(GradientBasedCorrectionsCorrectionRangeMaskType)
      CircGradBasedCorrAmountreal_(CircularGradientBasedCorrectionsCorrectionAmount)
      GradientBasedCorrRangeMaskVersionstring_+(GradientBasedCorrectionsCorrectionRangeMaskVersion)
      CircGradBasedCorrMasksGradientBasedCorrCorrectionSyncID struct_+--> CorrectionMask Struct -
      (CircularGradientBasedCorrectionsCorrectionMasks)
      (GradientBasedCorrectionsCorrectionSyncID)
      CircGradBasedCorrMaskAlphaGradientBasedCorrBlacks2012 real_(CircularGradientBasedCorrectionsCorrectionMasksAlpha)
      (GradientBasedCorrectionsLocalBlacks2012)
      CircGradBasedCorrMaskAngleGradientBasedCorrBrightness real_(CircularGradientBasedCorrectionsCorrectionMasksAngle)
      (GradientBasedCorrectionsLocalBrightness)
      CircGradBasedCorrMaskBottomGradientBasedCorrClarity real_(CircularGradientBasedCorrectionsCorrectionMasksBottom)
      (GradientBasedCorrectionsLocalClarity)
      CircGradBasedCorrMaskCenterValueGradientBasedCorrClarity2012 real_(CircularGradientBasedCorrectionsCorrectionMasksCenterValue)
      (GradientBasedCorrectionsLocalClarity2012)
      CircGradBasedCorrMaskCenterWeightGradientBasedCorrContrast real_(CircularGradientBasedCorrectionsCorrectionMasksCenterWeight)
      (GradientBasedCorrectionsLocalContrast)
      CircGradBasedCorrMaskDabsstring_(CircularGradientBasedCorrectionsCorrectionMasksDabs)
      GradientBasedCorrContrast2012real_(GradientBasedCorrectionsLocalContrast2012)
      CircGradBasedCorrMaskFeatherGradientBasedCorrDefringe real_(CircularGradientBasedCorrectionsCorrectionMasksFeather)
      (GradientBasedCorrectionsLocalDefringe)
      CircGradBasedCorrMaskFlippedboolean_(CircularGradientBasedCorrectionsCorrectionMasksFlipped)
      GradientBasedCorrDehazereal_(GradientBasedCorrectionsLocalDehaze)
      CircGradBasedCorrMaskFlowGradientBasedCorrExposure real_(CircularGradientBasedCorrectionsCorrectionMasksFlow)
      (GradientBasedCorrectionsLocalExposure)
      CircGradBasedCorrMaskFullXGradientBasedCorrExposure2012 real_(CircularGradientBasedCorrectionsCorrectionMasksFullX)
      (GradientBasedCorrectionsLocalExposure2012)
      CircGradBasedCorrMaskFullYGradientBasedCorrHighlights2012 real_(CircularGradientBasedCorrectionsCorrectionMasksFullY)
      (GradientBasedCorrectionsLocalHighlights2012)
      CircGradBasedCorrMaskLeftGradientBasedCorrHue real_(CircularGradientBasedCorrectionsCorrectionMasksLeft)
      (GradientBasedCorrectionsLocalHue)
      CircGradBasedCorrMaskValueGradientBasedCorrLuminanceNoise real_(CircularGradientBasedCorrectionsCorrectionMasksMaskValue)
      (GradientBasedCorrectionsLocalLuminanceNoise)
      CircGradBasedCorrMaskMidpointGradientBasedCorrMoire real_(CircularGradientBasedCorrectionsCorrectionMasksMidpoint)
      (GradientBasedCorrectionsLocalMoire)
      CircGradBasedCorrMaskPerimeterValueGradientBasedCorrSaturation real_(CircularGradientBasedCorrectionsCorrectionMasksPerimeterValue)
      (GradientBasedCorrectionsLocalSaturation)
      CircGradBasedCorrMaskRadiusGradientBasedCorrShadows2012 real_(CircularGradientBasedCorrectionsCorrectionMasksRadius)
      (GradientBasedCorrectionsLocalShadows2012)
      CircGradBasedCorrMaskRightGradientBasedCorrSharpness real_(CircularGradientBasedCorrectionsCorrectionMasksRight)
      (GradientBasedCorrectionsLocalSharpness)
      CircGradBasedCorrMaskRoundnessGradientBasedCorrTemperature real_(CircularGradientBasedCorrectionsCorrectionMasksRoundness)
      (GradientBasedCorrectionsLocalTemperature)
      CircGradBasedCorrMaskSizeXGradientBasedCorrTexture real_(CircularGradientBasedCorrectionsCorrectionMasksSizeX)
      (GradientBasedCorrectionsLocalTexture)
      CircGradBasedCorrMaskSizeYGradientBasedCorrTint real_(CircularGradientBasedCorrectionsCorrectionMasksSizeY)
      (GradientBasedCorrectionsLocalTint)
      CircGradBasedCorrMaskTopGradientBasedCorrToningHue real_(CircularGradientBasedCorrectionsCorrectionMasksTop)
      (GradientBasedCorrectionsLocalToningHue)
      CircGradBasedCorrMaskVersioninteger_(CircularGradientBasedCorrectionsCorrectionMasksVersion)
      GradientBasedCorrToningSaturationreal_(GradientBasedCorrectionsLocalToningSaturation)
      CircGradBasedCorrMaskWhatGradientBasedCorrWhites2012real_(GradientBasedCorrectionsLocalWhites2012)
      GradientBasedCorrWhat string_(CircularGradientBasedCorrectionsCorrectionMasksWhat)
      (GradientBasedCorrectionsWhat)
      GrainAmountinteger 
      CircGradBasedCorrMaskXreal_(CircularGradientBasedCorrectionsCorrectionMasksX)
      GrainFrequencyinteger 
      CircGradBasedCorrMaskYreal_(CircularGradientBasedCorrectionsCorrectionMasksY)
      GrainSeedinteger 
      CircGradBasedCorrMaskZeroXreal_(CircularGradientBasedCorrectionsCorrectionMasksZeroX)
      GrainSizeinteger 
      GrayMixerAquainteger 
      GrayMixerBlueinteger 
      CircGradBasedCorrMaskZeroYreal_(CircularGradientBasedCorrectionsCorrectionMasksZeroY)
      GrayMixerGreeninteger 
      CircGradBasedCorrBrightnessreal_(CircularGradientBasedCorrectionsLocalBrightness)
      GrayMixerMagentainteger 
      CircGradBasedCorrClarityreal_(CircularGradientBasedCorrectionsLocalClarity)
      GrayMixerOrangeinteger 
      CircGradBasedCorrClarity2012real_(CircularGradientBasedCorrectionsLocalClarity2012)
      GrayMixerPurpleinteger 
      CircGradBasedCorrContrastreal_(CircularGradientBasedCorrectionsLocalContrast)
      GrayMixerRedinteger 
      CircGradBasedCorrContrast2012real_(CircularGradientBasedCorrectionsLocalContrast2012)
      GrayMixerYellowinteger 
      CircGradBasedCorrDefringereal_(CircularGradientBasedCorrectionsLocalDefringe)
      GreenHueinteger 
      CircGradBasedCorrExposurereal_(CircularGradientBasedCorrectionsLocalExposure)
      GreenSaturationinteger 
      CircGradBasedCorrExposure2012real_(CircularGradientBasedCorrectionsLocalExposure2012)
      Grouplang-alt/ 
      CircGradBasedCorrHighlights2012real_(CircularGradientBasedCorrectionsLocalHighlights2012)
      HasCropboolean 
      CircGradBasedCorrLuminanceNoisereal_(CircularGradientBasedCorrectionsLocalLuminanceNoise)
      HasSettingsboolean 
      CircGradBasedCorrMoirereal_(CircularGradientBasedCorrectionsLocalMoire)
      Highlight2012integer 
      CircGradBasedCorrSaturationreal_(CircularGradientBasedCorrectionsLocalSaturation)
      HighlightRecoveryinteger 
      CircGradBasedCorrShadows2012real_(CircularGradientBasedCorrectionsLocalShadows2012)
      Highlights2012integer 
      CircGradBasedCorrSharpnessreal_(CircularGradientBasedCorrectionsLocalSharpness)
      HueAdjustmentAquainteger 
      CircGradBasedCorrTemperaturereal_(CircularGradientBasedCorrectionsLocalTemperature)
      HueAdjustmentBlueinteger 
      CircGradBasedCorrTintreal_(CircularGradientBasedCorrectionsLocalTint)
      HueAdjustmentGreeninteger 
      CircGradBasedCorrHuereal_(CircularGradientBasedCorrectionsLocalToningHue)
      HueAdjustmentMagentainteger 
      CircGradBasedCorrSaturationreal_(CircularGradientBasedCorrectionsLocalToningSaturation)
      HueAdjustmentOrangeinteger 
      CircGradBasedCorrWhatstring_(CircularGradientBasedCorrectionsWhat)
      HueAdjustmentPurpleinteger 
      ClarityHueAdjustmentRed integer  
      Clarity2012HueAdjustmentYellow integer  
      ColorNoiseReductionIncrementalTemperature integer  
      ColorNoiseReductionDetailIncrementalTint integer  
      ColorNoiseReductionSmoothnessJPEGHandlingstring 
      LensManualDistortionAmountinteger 
      LensProfileChromaticAberrationScale integer  
      Contrastinteger/LensProfileDigeststring  
      Contrast2012LensProfileDistortionScale integer  
      ConverterLensProfileEnableinteger 
      LensProfileFilename string  
      LensProfileIsEmbeddedboolean 
      ConvertToGrayscaleLensProfileMatchKeyCameraModelNamestring 
      LensProfileMatchKeyExifMakestring 
      LensProfileMatchKeyExifModelstring 
      LensProfileMatchKeyIsRaw boolean  
      LensProfileMatchKeyLensIDstring 
      CropAnglerealLensProfileMatchKeyLensInfostring  
      CropBottomLensProfileMatchKeyLensNamestring 
      LensProfileMatchKeySensorFormatFactor real  
      LensProfileNamestring 
      CropConstrainToWarpLensProfileSetupstring 
      LensProfileVignettingScale integer  
      Lookstruct--> Look Struct
      CropHeightrealLookAmountstring_  
      CropLeftrealLookClusterstring_  
      CropRightrealLookCopyrightstring_  
      CropToprealLookGrouplang-alt_  
      CropUnitinteger0 = pixels -
      1 = inches -
      2 = cm
      LookNamestring(NOT a flattened tag!)
      CropUnitsinteger0 = pixels -
      1 = inches -
      2 = cm
      LookParametersstruct_--> LookParms Struct
      CropWidthrealLookParametersCameraProfilestring_  
      DefaultAutoGraybooleanLookParametersClarity2012string_  
      DefaultAutoTonebooleanLookParametersConvertToGrayscalestring_ 
      LookParametersLookTablestring_ 
      LookParametersProcessVersionstring_ 
      LookParametersToneCurvePV2012string_+ 
      LookParametersToneCurvePV2012Bluestring_+ 
      LookParametersToneCurvePV2012Greenstring_+ 
      LookParametersToneCurvePV2012Redstring_+ 
      LookParametersVersionstring_ 
      LookSupportsAmountstring_  
      DefaultsSpecificToISObooleanLookSupportsMonochromestring_  
      DefaultsSpecificToSerialbooleanLookSupportsOutputReferredstring_  
      DefringeintegerLookUUIDstring_  
      DefringeGreenAmountLuminanceAdjustmentAqua integer  
      DefringeGreenHueHiLuminanceAdjustmentBlue integer  
      DefringeGreenHueLoLuminanceAdjustmentGreen integer  
      DefringePurpleAmountLuminanceAdjustmentMagenta integer  
      DefringePurpleHueHiLuminanceAdjustmentOrange integer  
      DefringePurpleHueLoLuminanceAdjustmentPurple integer  
      DehazerealLuminanceAdjustmentRedinteger  
      DNGIgnoreSidecarsbooleanLuminanceAdjustmentYellowinteger  
      ExposurerealLuminanceNoiseReductionContrastinteger  
      Exposure2012realLuminanceNoiseReductionDetailinteger  
      FillLightLuminanceSmoothing integer  
      GradientBasedCorrectionsMaskGroupBasedCorrections struct+ --> Correction Struct
      GradientBasedCorrActiveMaskGroupBasedCorrActive boolean_(GradientBasedCorrectionsCorrectionActive)
      (MaskGroupBasedCorrectionsCorrectionActive)
      GradientBasedCorrAmountMaskGroupBasedCorrAmount real_(GradientBasedCorrectionsCorrectionAmount)
      (MaskGroupBasedCorrectionsCorrectionAmount)
      GradientBasedCorrMasksMaskGroupBasedCorrMask struct_+ --> CorrectionMask Struct -
      (GradientBasedCorrectionsCorrectionMasks)
      GradientBasedCorrMaskAlphaMaskGroupBasedCorrMaskAlpha real_(GradientBasedCorrectionsCorrectionMasksAlpha)
      (MaskGroupBasedCorrectionsCorrectionMasksAlpha)
      GradientBasedCorrMaskAngleMaskGroupBasedCorrMaskAngle real_(GradientBasedCorrectionsCorrectionMasksAngle)
      (MaskGroupBasedCorrectionsCorrectionMasksAngle)
      GradientBasedCorrMaskBottomMaskGroupBasedCorrMaskBottom real_(GradientBasedCorrectionsCorrectionMasksBottom)
      (MaskGroupBasedCorrectionsCorrectionMasksBottom)
      GradientBasedCorrMaskCenterValueMaskGroupBasedCorrMaskCenterValue real_(GradientBasedCorrectionsCorrectionMasksCenterValue)
      (MaskGroupBasedCorrectionsCorrectionMasksCenterValue)
      GradientBasedCorrMaskCenterWeightMaskGroupBasedCorrMaskCenterWeight real_(GradientBasedCorrectionsCorrectionMasksCenterWeight)
      (MaskGroupBasedCorrectionsCorrectionMasksCenterWeight)
      GradientBasedCorrMaskDabsstring_(GradientBasedCorrectionsCorrectionMasksDabs)
      MaskGroupBasedCorrMaskRangestruct_+--> CorrRangeMask Struct +
      (MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMask; called CorrectionRangeMask by the spec)
      GradientBasedCorrMaskFeatherreal_(GradientBasedCorrectionsCorrectionMasksFeather)
      MaskGroupBasedCorrMaskRangeAreaModelsstruct_+--> AreaModels Struct +
      (MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels)
      GradientBasedCorrMaskFlippedboolean_(GradientBasedCorrectionsCorrectionMasksFlipped)
      MaskGroupBasedCorrMaskRangeAreaModelsComponentsstring_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents)
      GradientBasedCorrMaskFlowreal_(GradientBasedCorrectionsCorrectionMasksFlow)
      MaskGroupBasedCorrMaskRangeAreaModelsColorSampleInfostring_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      GradientBasedCorrMaskFullXreal_(GradientBasedCorrectionsCorrectionMasksFullX)
      MaskGroupBasedCorrMaskRangeColorAmountreal_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount)
      GradientBasedCorrMaskFullYreal_(GradientBasedCorrectionsCorrectionMasksFullY)
      MaskGroupBasedCorrMaskRangeDepthFeatherreal_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather)
      GradientBasedCorrMaskLeftreal_(GradientBasedCorrectionsCorrectionMasksLeft)
      MaskGroupBasedCorrMaskRangeDepthMaxreal_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax)
      GradientBasedCorrMaskValuereal_(GradientBasedCorrectionsCorrectionMasksMaskValue)
      MaskGroupBasedCorrMaskRangeDepthMinreal_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin)
      GradientBasedCorrMaskMidpointreal_(GradientBasedCorrectionsCorrectionMasksMidpoint)
      MaskGroupBasedCorrMaskRangeInvertboolean_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert)
      GradientBasedCorrMaskPerimeterValuereal_(GradientBasedCorrectionsCorrectionMasksPerimeterValue)
      MaskGroupBasedCorrMaskRangeLumFeatherreal_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather)
      GradientBasedCorrMaskRadiusreal_(GradientBasedCorrectionsCorrectionMasksRadius)
      MaskGroupBasedCorrMaskRangeLuminanceDepthSampleInfostring_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo)
      GradientBasedCorrMaskRightMaskGroupBasedCorrMaskRangeLumMaxreal_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax)
      MaskGroupBasedCorrMaskRangeLumMinreal_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin)
      MaskGroupBasedCorrMaskRangeLumRangestring_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange)
      MaskGroupBasedCorrMaskRangeSampleTypeinteger_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType)
      MaskGroupBasedCorrMaskRangeTypestring_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskType)
      MaskGroupBasedCorrMaskRangeVersionstring_+(MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion)
      MaskGroupBasedCorrMaskDabsstring_+(MaskGroupBasedCorrectionsCorrectionMasksDabs)
      MaskGroupBasedCorrMaskFeather real_(GradientBasedCorrectionsCorrectionMasksRight)
      (MaskGroupBasedCorrectionsCorrectionMasksFeather)
      MaskGroupBasedCorrMaskFlippedboolean_(MaskGroupBasedCorrectionsCorrectionMasksFlipped)
      GradientBasedCorrMaskRoundnessMaskGroupBasedCorrMaskFlow real_(GradientBasedCorrectionsCorrectionMasksRoundness)
      (MaskGroupBasedCorrectionsCorrectionMasksFlow)
      GradientBasedCorrMaskSizeXMaskGroupBasedCorrMaskFullX real_(GradientBasedCorrectionsCorrectionMasksSizeX)
      (MaskGroupBasedCorrectionsCorrectionMasksFullX)
      GradientBasedCorrMaskSizeYMaskGroupBasedCorrMaskFullY real_(GradientBasedCorrectionsCorrectionMasksSizeY)
      (MaskGroupBasedCorrectionsCorrectionMasksFullY)
      GradientBasedCorrMaskTopMaskGroupBasedCorrMaskInputDigeststring_(MaskGroupBasedCorrectionsCorrectionMasksInputDigest)
      MaskGroupBasedCorrMaskLeft real_(GradientBasedCorrectionsCorrectionMasksTop)
      (MaskGroupBasedCorrectionsCorrectionMasksLeft)
      MaskGroupBasedCorrMaskMaskActiveboolean_(MaskGroupBasedCorrectionsCorrectionMasksMaskActive)
      GradientBasedCorrMaskVersionMaskGroupBasedCorrMaskMaskBlendMode integer_(GradientBasedCorrectionsCorrectionMasksVersion)
      (MaskGroupBasedCorrectionsCorrectionMasksMaskBlendMode)
      GradientBasedCorrMaskWhatMaskGroupBasedCorrMaskMaskDigest string_(GradientBasedCorrectionsCorrectionMasksWhat)
      (MaskGroupBasedCorrectionsCorrectionMasksMaskDigest)
      GradientBasedCorrMaskXreal_(GradientBasedCorrectionsCorrectionMasksX)
      MaskGroupBasedCorrMaskMaskInvertedboolean_(MaskGroupBasedCorrectionsCorrectionMasksMaskInverted)
      GradientBasedCorrMaskYMaskGroupBasedCorrMaskMaskNamestring_(MaskGroupBasedCorrectionsCorrectionMasksMaskName)
      MaskGroupBasedCorrMaskMasksstruct_+--> CorrectionMask Struct +
      (MaskGroupBasedCorrectionsCorrectionMasksMasks)
      MaskGroupBasedCorrMaskMasksAlpha real_(GradientBasedCorrectionsCorrectionMasksY)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksAlpha)
      GradientBasedCorrMaskZeroXMaskGroupBasedCorrMaskMasksAngle real_(GradientBasedCorrectionsCorrectionMasksZeroX)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksAngle)
      GradientBasedCorrMaskZeroYMaskGroupBasedCorrMaskMasksBottom real_(GradientBasedCorrectionsCorrectionMasksZeroY)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksBottom)
      GradientBasedCorrBrightnessMaskGroupBasedCorrMaskMasksCenterValue real_(GradientBasedCorrectionsLocalBrightness)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksCenterValue)
      GradientBasedCorrClarityMaskGroupBasedCorrMaskMasksCenterWeight real_(GradientBasedCorrectionsLocalClarity)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksCenterWeight)
      GradientBasedCorrClarity2012MaskGroupBasedCorrMaskMasksDabsstring_+(MaskGroupBasedCorrectionsCorrectionMasksMasksDabs)
      MaskGroupBasedCorrMaskMasksFeather real_(GradientBasedCorrectionsLocalClarity2012)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksFeather)
      MaskGroupBasedCorrMaskMasksFlippedboolean_(MaskGroupBasedCorrectionsCorrectionMasksMasksFlipped)
      GradientBasedCorrContrastMaskGroupBasedCorrMaskMasksFlow real_(GradientBasedCorrectionsLocalContrast)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksFlow)
      GradientBasedCorrContrast2012MaskGroupBasedCorrMaskMasksFullX real_(GradientBasedCorrectionsLocalContrast2012)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksFullX)
      GradientBasedCorrDefringeMaskGroupBasedCorrMaskMasksFullY real_(GradientBasedCorrectionsLocalDefringe)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksFullY)
      GradientBasedCorrExposureMaskGroupBasedCorrMaskMasksInputDigeststring_(MaskGroupBasedCorrectionsCorrectionMasksMasksInputDigest)
      MaskGroupBasedCorrMaskMasksLeft real_(GradientBasedCorrectionsLocalExposure)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksLeft)
      MaskGroupBasedCorrMaskMasksMaskActiveboolean_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskActive)
      GradientBasedCorrExposure2012MaskGroupBasedCorrMaskMasksMaskBlendModeinteger_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskBlendMode)
      MaskGroupBasedCorrMaskMasksMaskDigeststring_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskDigest)
      MaskGroupBasedCorrMaskMasksMaskInvertedboolean_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskInverted)
      MaskGroupBasedCorrMaskMasksMaskNamestring_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskName)
      MaskGroupBasedCorrMaskMasksMaskSubTypestring_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskSubType)
      MaskGroupBasedCorrMaskMasksMaskSyncIDstring_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskSyncID)
      MaskGroupBasedCorrMaskMasksValue real_(GradientBasedCorrectionsLocalExposure2012)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksMaskValue)
      GradientBasedCorrHighlights2012MaskGroupBasedCorrMaskMasksMaskVersionstring_(MaskGroupBasedCorrectionsCorrectionMasksMasksMaskVersion)
      MaskGroupBasedCorrMaskMasksMidpoint real_(GradientBasedCorrectionsLocalHighlights2012)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksMidpoint)
      MaskGroupBasedCorrMaskMasksOriginstring_(MaskGroupBasedCorrectionsCorrectionMasksMasksOrigin)
      GradientBasedCorrLuminanceNoiseMaskGroupBasedCorrMaskMasksPerimeterValue real_(GradientBasedCorrectionsLocalLuminanceNoise)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksPerimeterValue)
      GradientBasedCorrMoireMaskGroupBasedCorrMaskMasksRadius real_(GradientBasedCorrectionsLocalMoire)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksRadius)
      GradientBasedCorrSaturationMaskGroupBasedCorrMaskMasksReferencePointstring_(MaskGroupBasedCorrectionsCorrectionMasksMasksReferencePoint)
      MaskGroupBasedCorrMaskMasksRight real_(GradientBasedCorrectionsLocalSaturation)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksRight)
      MaskGroupBasedCorrMaskMasksRoundnessreal_(MaskGroupBasedCorrectionsCorrectionMasksMasksRoundness)
      GradientBasedCorrShadows2012MaskGroupBasedCorrMaskMasksSizeX real_(GradientBasedCorrectionsLocalShadows2012)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksSizeX)
      GradientBasedCorrSharpnessMaskGroupBasedCorrMaskMasksSizeY real_(GradientBasedCorrectionsLocalSharpness)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksSizeY)
      GradientBasedCorrTemperatureMaskGroupBasedCorrMaskMasksTop real_(GradientBasedCorrectionsLocalTemperature)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksTop)
      GradientBasedCorrTintMaskGroupBasedCorrMaskMaskSubTypestring_(MaskGroupBasedCorrectionsCorrectionMasksMaskSubType)
      MaskGroupBasedCorrMaskMasksVersioninteger_(MaskGroupBasedCorrectionsCorrectionMasksMasksVersion)
      MaskGroupBasedCorrMaskMasksWhatstring_(MaskGroupBasedCorrectionsCorrectionMasksMasksWhat)
      MaskGroupBasedCorrMaskMasksWholeImageAreastring_(MaskGroupBasedCorrectionsCorrectionMasksMasksWholeImageArea)
      MaskGroupBasedCorrMaskMasksX real_(GradientBasedCorrectionsLocalTint)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksX)
      GradientBasedCorrHueMaskGroupBasedCorrMaskMasksY real_(GradientBasedCorrectionsLocalToningHue)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksY)
      GradientBasedCorrSaturationMaskGroupBasedCorrMaskMaskSyncIDstring_(MaskGroupBasedCorrectionsCorrectionMasksMaskSyncID)
      MaskGroupBasedCorrMaskMasksZeroX real_(GradientBasedCorrectionsLocalToningSaturation)
      (MaskGroupBasedCorrectionsCorrectionMasksMasksZeroX)
      MaskGroupBasedCorrMaskMasksZeroYreal_(MaskGroupBasedCorrectionsCorrectionMasksMasksZeroY)
      GradientBasedCorrWhatMaskGroupBasedCorrMaskValuereal_(MaskGroupBasedCorrectionsCorrectionMasksMaskValue)
      MaskGroupBasedCorrMaskMaskVersion string_(GradientBasedCorrectionsWhat)
      (MaskGroupBasedCorrectionsCorrectionMasksMaskVersion)
      MaskGroupBasedCorrMaskMidpointreal_(MaskGroupBasedCorrectionsCorrectionMasksMidpoint)
      GrainAmountinteger 
      MaskGroupBasedCorrMaskOriginstring_(MaskGroupBasedCorrectionsCorrectionMasksOrigin)
      GrainFrequencyinteger 
      MaskGroupBasedCorrMaskPerimeterValuereal_(MaskGroupBasedCorrectionsCorrectionMasksPerimeterValue)
      GrainSizeinteger 
      MaskGroupBasedCorrMaskRadiusreal_(MaskGroupBasedCorrectionsCorrectionMasksRadius)
      GrayMixerAquainteger 
      MaskGroupBasedCorrMaskReferencePointstring_(MaskGroupBasedCorrectionsCorrectionMasksReferencePoint)
      GrayMixerBlueinteger 
      MaskGroupBasedCorrMaskRightreal_(MaskGroupBasedCorrectionsCorrectionMasksRight)
      GrayMixerGreeninteger 
      MaskGroupBasedCorrMaskRoundnessreal_(MaskGroupBasedCorrectionsCorrectionMasksRoundness)
      GrayMixerMagentainteger 
      MaskGroupBasedCorrMaskSizeXreal_(MaskGroupBasedCorrectionsCorrectionMasksSizeX)
      GrayMixerOrangeinteger 
      MaskGroupBasedCorrMaskSizeYreal_(MaskGroupBasedCorrectionsCorrectionMasksSizeY)
      GrayMixerPurpleinteger 
      MaskGroupBasedCorrMaskTopreal_(MaskGroupBasedCorrectionsCorrectionMasksTop)
      GrayMixerRedinteger 
      MaskGroupBasedCorrMaskVersioninteger_(MaskGroupBasedCorrectionsCorrectionMasksVersion)
      GrayMixerYellowinteger 
      MaskGroupBasedCorrMaskWhatstring_(MaskGroupBasedCorrectionsCorrectionMasksWhat)
      GreenHueinteger 
      MaskGroupBasedCorrMaskWholeImageAreastring_(MaskGroupBasedCorrectionsCorrectionMasksWholeImageArea)
      GreenSaturationinteger 
      MaskGroupBasedCorrMaskXreal_(MaskGroupBasedCorrectionsCorrectionMasksX)
      HasCropboolean 
      MaskGroupBasedCorrMaskYreal_(MaskGroupBasedCorrectionsCorrectionMasksY)
      HasSettingsboolean 
      MaskGroupBasedCorrMaskZeroXreal_(MaskGroupBasedCorrectionsCorrectionMasksZeroX)
      Highlight2012integer 
      MaskGroupBasedCorrMaskZeroYreal_(MaskGroupBasedCorrectionsCorrectionMasksZeroY)
      HighlightRecoveryinteger 
      MaskGroupBasedCorrCorrectionNamestring_+(MaskGroupBasedCorrectionsCorrectionName)
      Highlights2012integer 
      MaskGroupBasedCorrRangeMaskstruct_+--> CorrRangeMask Struct +
      (MaskGroupBasedCorrectionsCorrectionRangeMask; called CorrectionRangeMask by the spec)
      HueAdjustmentAquainteger 
      MaskGroupBasedCorrRangeMaskAreaModelsstruct_+--> AreaModels Struct +
      (MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModels)
      HueAdjustmentBlueinteger 
      MaskGroupBasedCorrRangeMaskAreaModelsComponentsstring_+(MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents)
      HueAdjustmentGreeninteger 
      MaskGroupBasedCorrRangeMaskAreaModelsColorSampleInfostring_+(MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      HueAdjustmentMagentainteger 
      MaskGroupBasedCorrRangeMaskColorAmountreal_+(MaskGroupBasedCorrectionsCorrectionRangeMaskColorAmount)
      HueAdjustmentOrangeinteger 
      MaskGroupBasedCorrRangeMaskDepthFeatherreal_+(MaskGroupBasedCorrectionsCorrectionRangeMaskDepthFeather)
      HueAdjustmentPurpleinteger 
      MaskGroupBasedCorrRangeMaskDepthMaxreal_+(MaskGroupBasedCorrectionsCorrectionRangeMaskDepthMax)
      HueAdjustmentRedinteger 
      MaskGroupBasedCorrRangeMaskDepthMinreal_+(MaskGroupBasedCorrectionsCorrectionRangeMaskDepthMin)
      HueAdjustmentYellowinteger 
      MaskGroupBasedCorrRangeMaskInvertboolean_+(MaskGroupBasedCorrectionsCorrectionRangeMaskInvert)
      IncrementalTemperatureinteger 
      MaskGroupBasedCorrRangeMaskLumFeatherreal_+(MaskGroupBasedCorrectionsCorrectionRangeMaskLumFeather)
      IncrementalTintinteger 
      MaskGroupBasedCorrRangeMaskLuminanceDepthSampleInfostring_+(MaskGroupBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo)
      JPEGHandlingstring 
      MaskGroupBasedCorrRangeMaskLumMaxreal_+(MaskGroupBasedCorrectionsCorrectionRangeMaskLumMax)
      LensManualDistortionAmountinteger 
      MaskGroupBasedCorrRangeMaskLumMinreal_+(MaskGroupBasedCorrectionsCorrectionRangeMaskLumMin)
      LensProfileChromaticAberrationScaleinteger 
      MaskGroupBasedCorrRangeMaskLumRangestring_+(MaskGroupBasedCorrectionsCorrectionRangeMaskLumRange)
      LensProfileDigeststring 
      MaskGroupBasedCorrRangeMaskSampleTypeinteger_+(MaskGroupBasedCorrectionsCorrectionRangeMaskSampleType)
      LensProfileDistortionScaleinteger 
      MaskGroupBasedCorrRangeMaskTypestring_+(MaskGroupBasedCorrectionsCorrectionRangeMaskType)
      LensProfileEnableinteger 
      MaskGroupBasedCorrRangeMaskVersionstring_+(MaskGroupBasedCorrectionsCorrectionRangeMaskVersion)
      LensProfileFilenamestring 
      MaskGroupBasedCorrCorrectionSyncIDstring_+(MaskGroupBasedCorrectionsCorrectionSyncID)
      LensProfileMatchKeyCameraModelNamestring 
      MaskGroupBasedCorrBlacks2012real_(MaskGroupBasedCorrectionsLocalBlacks2012)
      LensProfileMatchKeyExifMakestring 
      MaskGroupBasedCorrBrightnessreal_(MaskGroupBasedCorrectionsLocalBrightness)
      LensProfileMatchKeyExifModelstring 
      MaskGroupBasedCorrClarityreal_(MaskGroupBasedCorrectionsLocalClarity)
      LensProfileMatchKeyIsRawboolean 
      MaskGroupBasedCorrClarity2012real_(MaskGroupBasedCorrectionsLocalClarity2012)
      LensProfileMatchKeyLensIDstring 
      MaskGroupBasedCorrContrastreal_(MaskGroupBasedCorrectionsLocalContrast)
      LensProfileMatchKeyLensInfostring 
      MaskGroupBasedCorrContrast2012real_(MaskGroupBasedCorrectionsLocalContrast2012)
      LensProfileMatchKeyLensNamestring 
      MaskGroupBasedCorrDefringereal_(MaskGroupBasedCorrectionsLocalDefringe)
      LensProfileMatchKeySensorFormatFactorreal 
      MaskGroupBasedCorrDehazereal_(MaskGroupBasedCorrectionsLocalDehaze)
      LensProfileNamestring 
      MaskGroupBasedCorrExposurereal_(MaskGroupBasedCorrectionsLocalExposure)
      LensProfileSetupstring 
      MaskGroupBasedCorrExposure2012real_(MaskGroupBasedCorrectionsLocalExposure2012)
      LensProfileVignettingScaleinteger 
      MaskGroupBasedCorrHighlights2012real_(MaskGroupBasedCorrectionsLocalHighlights2012)
      Lookstruct--> Look Struct
      MaskGroupBasedCorrHuereal_(MaskGroupBasedCorrectionsLocalHue)
      LookNamestring_ 
      MaskGroupBasedCorrLuminanceNoisereal_(MaskGroupBasedCorrectionsLocalLuminanceNoise)
      LuminanceAdjustmentAquainteger 
      MaskGroupBasedCorrMoirereal_(MaskGroupBasedCorrectionsLocalMoire)
      LuminanceAdjustmentBlueinteger 
      MaskGroupBasedCorrSaturationreal_(MaskGroupBasedCorrectionsLocalSaturation)
      LuminanceAdjustmentGreeninteger 
      MaskGroupBasedCorrShadows2012real_(MaskGroupBasedCorrectionsLocalShadows2012)
      LuminanceAdjustmentMagentainteger 
      MaskGroupBasedCorrSharpnessreal_(MaskGroupBasedCorrectionsLocalSharpness)
      LuminanceAdjustmentOrangeinteger 
      MaskGroupBasedCorrTemperaturereal_(MaskGroupBasedCorrectionsLocalTemperature)
      LuminanceAdjustmentPurpleinteger 
      MaskGroupBasedCorrTexturereal_(MaskGroupBasedCorrectionsLocalTexture)
      LuminanceAdjustmentRedinteger 
      MaskGroupBasedCorrTintreal_(MaskGroupBasedCorrectionsLocalTint)
      LuminanceAdjustmentYellowinteger 
      MaskGroupBasedCorrToningHuereal_(MaskGroupBasedCorrectionsLocalToningHue)
      LuminanceNoiseReductionContrastinteger 
      MaskGroupBasedCorrToningSaturationreal_(MaskGroupBasedCorrectionsLocalToningSaturation)
      LuminanceNoiseReductionDetailinteger 
      MaskGroupBasedCorrWhites2012real_(MaskGroupBasedCorrectionsLocalWhites2012)
      LuminanceSmoothinginteger 
      MaskGroupBasedCorrWhatstring_(MaskGroupBasedCorrectionsWhat)
      MoireFilter string 'Off' = Off
      'On' = On
      Namelang-alt/ 
      NegativeCacheLargePreviewSize integer  
      NegativeCacheMaximumSize real  
      NegativeCachePath string  
      OverrideLookVignette boolean  
      PaintBasedCorrections struct+ --> Correction Struct
      PaintCorrectionActive boolean_ (PaintBasedCorrectionsCorrectionActive)
      PaintCorrectionAmount real_ (PaintBasedCorrectionsCorrectionAmount)
      PaintBasedCorrectionMasks struct_+ --> CorrectionMask Struct
      (PaintBasedCorrectionsCorrectionMasks)
      PaintCorrectionMaskAlpha real_ (PaintBasedCorrectionsCorrectionMasksAlpha)
      PaintCorrectionMaskAngle real_ (PaintBasedCorrectionsCorrectionMasksAngle)
      PaintCorrectionMaskBottom real_ (PaintBasedCorrectionsCorrectionMasksBottom)
      PaintCorrectionMaskCenterValue real_ (PaintBasedCorrectionsCorrectionMasksCenterValue)
      PaintCorrectionMaskCenterWeight real_ (PaintBasedCorrectionsCorrectionMasksCenterWeight)
      PaintCorrectionMaskRangestruct_+--> CorrRangeMask Struct +
      (PaintBasedCorrectionsCorrectionMasksCorrectionRangeMask; called CorrectionRangeMask by the spec)
      PaintCorrectionMaskRangeAreaModelsstruct_+--> AreaModels Struct +
      (PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels)
      PaintCorrectionMaskRangeAreaModelsComponentsstring_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents)
      PaintCorrectionMaskRangeAreaModelsColorSampleInfostring_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      PaintCorrectionMaskRangeColorAmountreal_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount)
      PaintCorrectionMaskRangeDepthFeatherreal_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather)
      PaintCorrectionMaskRangeDepthMaxreal_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax)
      PaintCorrectionMaskRangeDepthMinreal_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin)
      PaintCorrectionMaskRangeInvertboolean_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert)
      PaintCorrectionMaskRangeLumFeatherreal_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather)
      PaintCorrectionMaskRangeLuminanceDepthSampleInfostring_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo)
      PaintCorrectionMaskRangeLumMaxreal_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax)
      PaintCorrectionMaskRangeLumMinreal_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin)
      PaintCorrectionMaskRangeLumRangestring_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange)
      PaintCorrectionMaskRangeSampleTypeinteger_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType)
      PaintCorrectionMaskRangeTypestring_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskType)
      PaintCorrectionMaskRangeVersionstring_+(PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion)
      PaintCorrectionMaskDabs string_real_ (PaintBasedCorrectionsCorrectionMasksFullY)
      PaintCorrectionMaskInputDigeststring_(PaintBasedCorrectionsCorrectionMasksInputDigest)
      PaintCorrectionMaskLeft real_ (PaintBasedCorrectionsCorrectionMasksLeft)
      PaintCorrectionMaskMaskActiveboolean_(PaintBasedCorrectionsCorrectionMasksMaskActive)
      PaintCorrectionMaskMaskBlendModeinteger_(PaintBasedCorrectionsCorrectionMasksMaskBlendMode)
      PaintCorrectionMaskMaskDigeststring_(PaintBasedCorrectionsCorrectionMasksMaskDigest)
      PaintCorrectionMaskMaskInvertedboolean_(PaintBasedCorrectionsCorrectionMasksMaskInverted)
      PaintCorrectionMaskMaskNamestring_(PaintBasedCorrectionsCorrectionMasksMaskName)
      PaintCorrectionMaskMasksstruct_+--> CorrectionMask Struct +
      (PaintBasedCorrectionsCorrectionMasksMasks)
      PaintCorrectionMaskMasksAlphareal_(PaintBasedCorrectionsCorrectionMasksMasksAlpha)
      PaintCorrectionMaskMasksAnglereal_(PaintBasedCorrectionsCorrectionMasksMasksAngle)
      PaintCorrectionMaskMasksBottomreal_(PaintBasedCorrectionsCorrectionMasksMasksBottom)
      PaintCorrectionMaskMasksCenterValuereal_(PaintBasedCorrectionsCorrectionMasksMasksCenterValue)
      PaintCorrectionMaskMasksCenterWeightreal_(PaintBasedCorrectionsCorrectionMasksMasksCenterWeight)
      PaintCorrectionMaskMasksDabsstring_+(PaintBasedCorrectionsCorrectionMasksMasksDabs)
      PaintCorrectionMaskMasksFeatherreal_(PaintBasedCorrectionsCorrectionMasksMasksFeather)
      PaintCorrectionMaskMasksFlippedboolean_(PaintBasedCorrectionsCorrectionMasksMasksFlipped)
      PaintCorrectionMaskMasksFlowreal_(PaintBasedCorrectionsCorrectionMasksMasksFlow)
      PaintCorrectionMaskMasksFullXreal_(PaintBasedCorrectionsCorrectionMasksMasksFullX)
      PaintCorrectionMaskMasksFullYreal_(PaintBasedCorrectionsCorrectionMasksMasksFullY)
      PaintCorrectionMaskMasksInputDigeststring_(PaintBasedCorrectionsCorrectionMasksMasksInputDigest)
      PaintCorrectionMaskMasksLeftreal_(PaintBasedCorrectionsCorrectionMasksMasksLeft)
      PaintCorrectionMaskMasksMaskActiveboolean_(PaintBasedCorrectionsCorrectionMasksMasksMaskActive)
      PaintCorrectionMaskMasksMaskBlendModeinteger_(PaintBasedCorrectionsCorrectionMasksMasksMaskBlendMode)
      PaintCorrectionMaskMasksMaskDigeststring_(PaintBasedCorrectionsCorrectionMasksMasksMaskDigest)
      PaintCorrectionMaskMasksMaskInvertedboolean_(PaintBasedCorrectionsCorrectionMasksMasksMaskInverted)
      PaintCorrectionMaskMasksMaskNamestring_(PaintBasedCorrectionsCorrectionMasksMasksMaskName)
      PaintCorrectionMaskMasksMaskSubTypestring_(PaintBasedCorrectionsCorrectionMasksMasksMaskSubType)
      PaintCorrectionMaskMasksMaskSyncIDstring_(PaintBasedCorrectionsCorrectionMasksMasksMaskSyncID)
      PaintCorrectionMaskMasksValuereal_(PaintBasedCorrectionsCorrectionMasksMasksMaskValue)
      PaintCorrectionMaskMasksMaskVersionstring_(PaintBasedCorrectionsCorrectionMasksMasksMaskVersion)
      PaintCorrectionMaskMasksMidpointreal_(PaintBasedCorrectionsCorrectionMasksMasksMidpoint)
      PaintCorrectionMaskMasksOriginstring_(PaintBasedCorrectionsCorrectionMasksMasksOrigin)
      PaintCorrectionMaskMasksPerimeterValuereal_(PaintBasedCorrectionsCorrectionMasksMasksPerimeterValue)
      PaintCorrectionMaskMasksRadiusreal_(PaintBasedCorrectionsCorrectionMasksMasksRadius)
      PaintCorrectionMaskMasksReferencePointstring_(PaintBasedCorrectionsCorrectionMasksMasksReferencePoint)
      PaintCorrectionMaskMasksRightreal_(PaintBasedCorrectionsCorrectionMasksMasksRight)
      PaintCorrectionMaskMasksRoundnessreal_(PaintBasedCorrectionsCorrectionMasksMasksRoundness)
      PaintCorrectionMaskMasksSizeXreal_(PaintBasedCorrectionsCorrectionMasksMasksSizeX)
      PaintCorrectionMaskMasksSizeYreal_(PaintBasedCorrectionsCorrectionMasksMasksSizeY)
      PaintCorrectionMaskMasksTopreal_(PaintBasedCorrectionsCorrectionMasksMasksTop)
      PaintCorrectionMaskMaskSubTypestring_(PaintBasedCorrectionsCorrectionMasksMaskSubType)
      PaintCorrectionMaskMasksVersioninteger_(PaintBasedCorrectionsCorrectionMasksMasksVersion)
      PaintCorrectionMaskMasksWhatstring_(PaintBasedCorrectionsCorrectionMasksMasksWhat)
      PaintCorrectionMaskMasksWholeImageAreastring_(PaintBasedCorrectionsCorrectionMasksMasksWholeImageArea)
      PaintCorrectionMaskMasksXreal_(PaintBasedCorrectionsCorrectionMasksMasksX)
      PaintCorrectionMaskMasksYreal_(PaintBasedCorrectionsCorrectionMasksMasksY)
      PaintCorrectionMaskMaskSyncIDstring_(PaintBasedCorrectionsCorrectionMasksMaskSyncID)
      PaintCorrectionMaskMasksZeroXreal_(PaintBasedCorrectionsCorrectionMasksMasksZeroX)
      PaintCorrectionMaskMasksZeroYreal_(PaintBasedCorrectionsCorrectionMasksMasksZeroY)
      PaintCorrectionMaskValue real_ (PaintBasedCorrectionsCorrectionMasksMaskValue)
      PaintCorrectionMaskMaskVersionstring_(PaintBasedCorrectionsCorrectionMasksMaskVersion)
      PaintCorrectionMaskMidpoint real_ (PaintBasedCorrectionsCorrectionMasksMidpoint)
      PaintCorrectionMaskOriginstring_(PaintBasedCorrectionsCorrectionMasksOrigin)
      PaintCorrectionMaskPerimeterValue real_real_ (PaintBasedCorrectionsCorrectionMasksRadius)
      PaintCorrectionMaskReferencePointstring_(PaintBasedCorrectionsCorrectionMasksReferencePoint)
      PaintCorrectionMaskRight real_ (PaintBasedCorrectionsCorrectionMasksRight)
      PaintCorrectionMaskRoundness real_ (PaintBasedCorrectionsCorrectionMasksRoundness)
      PaintCorrectionMaskSizeX real_ (PaintBasedCorrectionsCorrectionMasksSizeX)
      PaintCorrectionMaskSizeY real_ (PaintBasedCorrectionsCorrectionMasksSizeY)
      PaintCorrectionMaskTop real_ (PaintBasedCorrectionsCorrectionMasksTop)
      PaintCorrectionMaskVersion integer_ (PaintBasedCorrectionsCorrectionMasksVersion)
      PaintCorrectionMaskWhatstring_(PaintBasedCorrectionsCorrectionMasksWhat)
      PaintCorrectionMaskWholeImageAreastring_(PaintBasedCorrectionsCorrectionMasksWholeImageArea)
      PaintCorrectionMaskXreal_(PaintBasedCorrectionsCorrectionMasksX)
      PaintCorrectionMaskYreal_(PaintBasedCorrectionsCorrectionMasksY)
      PaintCorrectionMaskZeroXreal_(PaintBasedCorrectionsCorrectionMasksZeroX)
      PaintCorrectionMaskZeroYreal_(PaintBasedCorrectionsCorrectionMasksZeroY)
      PaintCorrectionCorrectionNamestring_+(PaintBasedCorrectionsCorrectionName)
      PaintCorrectionRangeMaskstruct_+--> CorrRangeMask Struct +
      (PaintBasedCorrectionsCorrectionRangeMask; called CorrectionRangeMask by the spec)
      PaintCorrectionRangeMaskAreaModelsstruct_+--> AreaModels Struct +
      (PaintBasedCorrectionsCorrectionRangeMaskAreaModels)
      PaintCorrectionRangeMaskAreaModelsComponentsstring_+(PaintBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents)
      PaintCorrectionRangeMaskAreaModelsColorSampleInfostring_+(PaintBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      PaintCorrectionRangeMaskColorAmountreal_+(PaintBasedCorrectionsCorrectionRangeMaskColorAmount)
      PaintCorrectionRangeMaskDepthFeatherreal_+(PaintBasedCorrectionsCorrectionRangeMaskDepthFeather)
      PaintCorrectionRangeMaskDepthMaxreal_+(PaintBasedCorrectionsCorrectionRangeMaskDepthMax)
      PaintCorrectionRangeMaskDepthMinreal_+(PaintBasedCorrectionsCorrectionRangeMaskDepthMin)
      PaintCorrectionRangeMaskInvertboolean_+(PaintBasedCorrectionsCorrectionRangeMaskInvert)
      PaintCorrectionRangeMaskLumFeatherreal_+(PaintBasedCorrectionsCorrectionRangeMaskLumFeather)
      PaintCorrectionRangeMaskLuminanceDepthSampleInfostring_+(PaintBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo)
      PaintCorrectionRangeMaskLumMaxreal_+(PaintBasedCorrectionsCorrectionRangeMaskLumMax)
      PaintCorrectionRangeMaskLumMinreal_+(PaintBasedCorrectionsCorrectionRangeMaskLumMin)
      PaintCorrectionRangeMaskLumRangestring_+(PaintBasedCorrectionsCorrectionRangeMaskLumRange)
      PaintCorrectionMaskWhatstring_(PaintBasedCorrectionsCorrectionMasksWhat)
      PaintCorrectionRangeMaskSampleTypeinteger_+(PaintBasedCorrectionsCorrectionRangeMaskSampleType)
      PaintCorrectionMaskXreal_(PaintBasedCorrectionsCorrectionMasksX)
      PaintCorrectionRangeMaskTypestring_+(PaintBasedCorrectionsCorrectionRangeMaskType)
      PaintCorrectionMaskYreal_(PaintBasedCorrectionsCorrectionMasksY)
      PaintCorrectionRangeMaskVersionstring_+(PaintBasedCorrectionsCorrectionRangeMaskVersion)
      PaintCorrectionMaskZeroXreal_(PaintBasedCorrectionsCorrectionMasksZeroX)
      PaintCorrectionCorrectionSyncIDstring_+(PaintBasedCorrectionsCorrectionSyncID)
      PaintCorrectionMaskZeroYPaintCorrectionBlacks2012 real_(PaintBasedCorrectionsCorrectionMasksZeroY)
      (PaintBasedCorrectionsLocalBlacks2012)
      PaintCorrectionBrightness real_real_ (PaintBasedCorrectionsLocalDefringe)
      PaintCorrectionDehazereal_(PaintBasedCorrectionsLocalDehaze)
      PaintCorrectionExposure real_ (PaintBasedCorrectionsLocalExposure)
      PaintCorrectionExposure2012 real_ (PaintBasedCorrectionsLocalExposure2012)
      PaintCorrectionHighlights2012 real_ (PaintBasedCorrectionsLocalHighlights2012)
      PaintCorrectionHuereal_(PaintBasedCorrectionsLocalHue)
      PaintCorrectionLuminanceNoise real_real_ (PaintBasedCorrectionsLocalTemperature)
      PaintCorrectionTexturereal_(PaintBasedCorrectionsLocalTexture)
      PaintCorrectionTint real_ (PaintBasedCorrectionsLocalTint)
      PaintCorrectionHue
      PaintCorrectionToningHue real_ (PaintBasedCorrectionsLocalToningHue)
      PaintCorrectionSaturation
      PaintCorrectionToningSaturation real_ (PaintBasedCorrectionsLocalToningSaturation)
      PaintCorrectionWhites2012real_(PaintBasedCorrectionsLocalWhites2012)
      PaintCorrectionWhat string_integer  
      PerspectiveXreal 
      PerspectiveXreal 
      PerspectiveYreal 
      PostCropVignetteAmountinteger 
      PostCropVignetteFeatherinteger 
      PostCropVignetteHighlightContrastinteger 
      PostCropVignetteMidpointinteger 
      PostCropVignetteRoundnessinteger 
      PostCropVignetteStyleinteger 
      PresetTypestring 
      ProcessVersionstring 
      RangeMaskstruct--> RangeMask Struct +
      (called RangeMaskMapInfo by the spec)
      RangeMaskMapInfostruct_--> MapInfo Struct +
      (RangeMaskMapInfoRangeMaskMapInfo)
      RangeMaskMapInfoLabMaxstring_(RangeMaskMapInfoRangeMaskMapInfoLabMax)
      RangeMaskMapInfoLabMinstring_(RangeMaskMapInfoRangeMaskMapInfoLabMin)
      RangeMaskMapInfoLumEqstring_+(RangeMaskMapInfoRangeMaskMapInfoLumEq)
      RangeMaskMapInfoRGBMaxstring_(RangeMaskMapInfoRangeMaskMapInfoRGBMax)
      RangeMaskMapInfoRGBMinstring_(RangeMaskMapInfoRangeMaskMapInfoRGBMin)
      RawFileNamestring 
      RedEyeInfostring+ 
      RedHueinteger 
      RedSaturationinteger 
      RetouchAreasstruct+--> RetouchArea Struct
      RetouchAreaFeatherreal_(RetouchAreasFeather)
      RetouchAreaMasksstruct_+--> CorrectionMask Struct +
      (RetouchAreasMasks)
      RetouchAreaMaskAlphareal_(RetouchAreasMasksAlpha)
      RetouchAreaMaskAnglereal_(RetouchAreasMasksAngle)
      RetouchAreaMaskBottomreal_(RetouchAreasMasksBottom)
      RetouchAreaMaskCenterValuereal_(RetouchAreasMasksCenterValue)
      RetouchAreaMaskCenterWeightreal_(RetouchAreasMasksCenterWeight)
      RetouchAreaMaskRangestruct_+--> CorrRangeMask Struct +
      (RetouchAreasMasksCorrectionRangeMask; called CorrectionRangeMask by the spec)
      RetouchAreaMaskRangeAreaModelsstruct_+--> AreaModels Struct +
      (RetouchAreasMasksCorrectionRangeMaskAreaModels)
      RetouchAreaMaskRangeAreaModelsComponentsstring_+(RetouchAreasMasksCorrectionRangeMaskAreaModelsAreaComponents)
      RetouchAreaMaskRangeAreaModelsColorSampleInfostring_+(RetouchAreasMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo)
      RetouchAreaMaskRangeColorAmountreal_+(RetouchAreasMasksCorrectionRangeMaskColorAmount)
      RetouchAreaMaskRangeDepthFeatherreal_+(RetouchAreasMasksCorrectionRangeMaskDepthFeather)
      RetouchAreaMaskRangeDepthMaxreal_+(RetouchAreasMasksCorrectionRangeMaskDepthMax)
      RetouchAreaMaskRangeDepthMinreal_+(RetouchAreasMasksCorrectionRangeMaskDepthMin)
      RetouchAreaMaskRangeInvertboolean_+(RetouchAreasMasksCorrectionRangeMaskInvert)
      RetouchAreaMaskRangeLumFeatherreal_+(RetouchAreasMasksCorrectionRangeMaskLumFeather)
      RetouchAreaMaskRangeLuminanceDepthSampleInfostring_+(RetouchAreasMasksCorrectionRangeMaskLuminanceDepthSampleInfo)
      RetouchAreaMaskRangeLumMaxreal_+(RetouchAreasMasksCorrectionRangeMaskLumMax)
      RetouchAreaMaskRangeLumMinreal_+(RetouchAreasMasksCorrectionRangeMaskLumMin)
      RetouchAreaMaskRangeLumRangestring_+(RetouchAreasMasksCorrectionRangeMaskLumRange)
      RetouchAreaMaskRangeSampleTypeinteger_+(RetouchAreasMasksCorrectionRangeMaskSampleType)
      RetouchAreaMaskRangeTypestring_+(RetouchAreasMasksCorrectionRangeMaskType)
      RetouchAreaMaskRangeVersionstring_+(RetouchAreasMasksCorrectionRangeMaskVersion)
      RetouchAreaMaskDabsstring_(RetouchAreasMasksDabs)
      RetouchAreaMaskFeatherreal_(RetouchAreasMasksFeather)
      RetouchAreaMaskFlippedboolean_(RetouchAreasMasksFlipped)
      RetouchAreaMaskFlowreal_(RetouchAreasMasksFlow)
      RetouchAreaMaskFullXreal_(RetouchAreasMasksFullX)
      RetouchAreaMaskFullYreal_(RetouchAreasMasksFullY)
      RetouchAreaMaskInputDigeststring_(RetouchAreasMasksInputDigest)
      RetouchAreaMaskLeftreal_(RetouchAreasMasksLeft)
      RetouchAreaMaskMaskActiveboolean_(RetouchAreasMasksMaskActive)
      RetouchAreaMaskMaskBlendModeinteger_(RetouchAreasMasksMaskBlendMode)
      RetouchAreaMaskMaskDigeststring_(RetouchAreasMasksMaskDigest)
      RetouchAreaMaskMaskInvertedboolean_(RetouchAreasMasksMaskInverted)
      RetouchAreaMaskMaskNamestring_(RetouchAreasMasksMaskName)
      RetouchAreaMaskMasksstruct_+--> CorrectionMask Struct +
      (RetouchAreasMasksMasks)
      RetouchAreaMaskMasksAlphareal_(RetouchAreasMasksMasksAlpha)
      RetouchAreaMaskMasksAnglereal_(RetouchAreasMasksMasksAngle)
      RetouchAreaMaskMasksBottomreal_(RetouchAreasMasksMasksBottom)
      RetouchAreaMaskMasksCenterValuereal_(RetouchAreasMasksMasksCenterValue)
      RetouchAreaMaskMasksCenterWeightreal_(RetouchAreasMasksMasksCenterWeight)
      RetouchAreaMaskMasksDabsstring_+(RetouchAreasMasksMasksDabs)
      RetouchAreaMaskMasksFeatherreal_(RetouchAreasMasksMasksFeather)
      RetouchAreaMaskMasksFlippedboolean_(RetouchAreasMasksMasksFlipped)
      RetouchAreaMaskMasksFlowreal_(RetouchAreasMasksMasksFlow)
      PerspectiveYreal 
      RetouchAreaMaskMasksFullXreal_(RetouchAreasMasksMasksFullX)
      PostCropVignetteAmountinteger 
      RetouchAreaMaskMasksFullYreal_(RetouchAreasMasksMasksFullY)
      PostCropVignetteFeatherinteger 
      RetouchAreaMaskMasksInputDigeststring_(RetouchAreasMasksMasksInputDigest)
      PostCropVignetteHighlightContrastinteger 
      RetouchAreaMaskMasksLeftreal_(RetouchAreasMasksMasksLeft)
      PostCropVignetteMidpointinteger 
      RetouchAreaMaskMasksMaskActiveboolean_(RetouchAreasMasksMasksMaskActive)
      PostCropVignetteRoundnessinteger 
      RetouchAreaMaskMasksMaskBlendModeinteger_(RetouchAreasMasksMasksMaskBlendMode)
      PostCropVignetteStyleinteger 
      RetouchAreaMaskMasksMaskDigeststring_(RetouchAreasMasksMasksMaskDigest)
      ProcessVersionstring 
      RetouchAreaMaskMasksMaskInvertedboolean_(RetouchAreasMasksMasksMaskInverted)
      RawFileNamestring 
      RetouchAreaMaskMasksMaskNamestring_(RetouchAreasMasksMasksMaskName)
      RedEyeInfostring+ 
      RetouchAreaMaskMasksMaskSubTypestring_(RetouchAreasMasksMasksMaskSubType)
      RedHueinteger 
      RetouchAreaMaskMasksMaskSyncIDstring_(RetouchAreasMasksMasksMaskSyncID)
      RedSaturationinteger 
      RetouchAreaMaskMasksValuereal_(RetouchAreasMasksMasksMaskValue)
      RetouchAreasstruct+--> RetouchArea Struct
      RetouchAreaMaskMasksMaskVersionstring_(RetouchAreasMasksMasksMaskVersion)
      RetouchAreaFeatherRetouchAreaMaskMasksMidpoint real_(RetouchAreasFeather)
      (RetouchAreasMasksMasksMidpoint)
      RetouchAreaMasksstruct_+--> CorrectionMask Struct -
      (RetouchAreasMasks)
      RetouchAreaMaskMasksOriginstring_(RetouchAreasMasksMasksOrigin)
      RetouchAreaMaskAlphaRetouchAreaMaskMasksPerimeterValue real_(RetouchAreasMasksAlpha)
      (RetouchAreasMasksMasksPerimeterValue)
      RetouchAreaMaskAngleRetouchAreaMaskMasksRadius real_(RetouchAreasMasksAngle)
      (RetouchAreasMasksMasksRadius)
      RetouchAreaMaskBottomRetouchAreaMaskMasksReferencePointstring_(RetouchAreasMasksMasksReferencePoint)
      RetouchAreaMaskMasksRight real_(RetouchAreasMasksBottom)
      (RetouchAreasMasksMasksRight)
      RetouchAreaMaskMasksRoundnessreal_(RetouchAreasMasksMasksRoundness)
      RetouchAreaMaskCenterValueRetouchAreaMaskMasksSizeX real_(RetouchAreasMasksCenterValue)
      (RetouchAreasMasksMasksSizeX)
      RetouchAreaMaskCenterWeightRetouchAreaMaskMasksSizeY real_(RetouchAreasMasksCenterWeight)
      (RetouchAreasMasksMasksSizeY)
      RetouchAreaMaskDabsRetouchAreaMaskMasksTopreal_(RetouchAreasMasksMasksTop)
      RetouchAreaMaskMaskSubType string_(RetouchAreasMasksDabs)
      (RetouchAreasMasksMaskSubType)
      RetouchAreaMaskMasksVersioninteger_(RetouchAreasMasksMasksVersion)
      RetouchAreaMaskFeatherreal_(RetouchAreasMasksFeather)
      RetouchAreaMaskMasksWhatstring_(RetouchAreasMasksMasksWhat)
      RetouchAreaMaskFlippedboolean_(RetouchAreasMasksFlipped)
      RetouchAreaMaskMasksWholeImageAreastring_(RetouchAreasMasksMasksWholeImageArea)
      RetouchAreaMaskFlowRetouchAreaMaskMasksX real_(RetouchAreasMasksFlow)
      (RetouchAreasMasksMasksX)
      RetouchAreaMaskFullXRetouchAreaMaskMasksY real_(RetouchAreasMasksFullX)
      (RetouchAreasMasksMasksY)
      RetouchAreaMaskFullYreal_(RetouchAreasMasksFullY)
      RetouchAreaMaskMaskSyncIDstring_(RetouchAreasMasksMaskSyncID)
      RetouchAreaMaskLeftRetouchAreaMaskMasksZeroX real_(RetouchAreasMasksLeft)
      (RetouchAreasMasksMasksZeroX)
      RetouchAreaMaskMasksZeroYreal_(RetouchAreasMasksMasksZeroY)
      RetouchAreaMaskValue real_ (RetouchAreasMasksMaskValue)
      RetouchAreaMaskMaskVersionstring_(RetouchAreasMasksMaskVersion)
      RetouchAreaMaskMidpoint real_ (RetouchAreasMasksMidpoint)
      RetouchAreaMaskOriginstring_(RetouchAreasMasksOrigin)
      RetouchAreaMaskPerimeterValue real_ (RetouchAreasMasksPerimeterValue)
      RetouchAreaMaskRadius real_ (RetouchAreasMasksRadius)
      RetouchAreaMaskReferencePointstring_(RetouchAreasMasksReferencePoint)
      RetouchAreaMaskRight real_string_ (RetouchAreasMasksWhat)
      RetouchAreaMaskWholeImageAreastring_(RetouchAreasMasksWholeImageArea)
      RetouchAreaMaskX real_ (RetouchAreasMasksX)
      RetouchAreaMaskY real_ (RetouchAreasMasksY)
      RetouchAreaMaskZeroX real_ (RetouchAreasMasksZeroX)
      RetouchAreaMaskZeroY real_ (RetouchAreasMasksZeroY)
      RetouchAreaMethod string_ (RetouchAreasMethod)
      RetouchAreaOffsetY real_ (RetouchAreasOffsetY)
      RetouchAreaOpacity real_ (RetouchAreasOpacity)
      RetouchAreaSeed integer_ (RetouchAreasSeed)
      RetouchAreaSourceState string_ (RetouchAreasSourceState)
      RetouchAreaSourceX real_ (RetouchAreasSourceX)
      RetouchAreaSpotType string_ (RetouchAreasSpotType)
      RetouchInfo string+  
      Saturation integer/  
      SaturationAdjustmentAqua integer  
      SaturationAdjustmentBlue integer  
      SaturationAdjustmentGreen integer  
      SaturationAdjustmentMagenta integer  
      SaturationAdjustmentOrange integer  
      SaturationAdjustmentPurple integer  
      SaturationAdjustmentRed integer  
      SaturationAdjustmentYellow integer  
      Shadows integer  
      Shadows2012 integer  
      ShadowTint integer  
      SharpenDetail integer  
      SharpenEdgeMasking integer  
      SharpenRadius real  
      Sharpness integer/  
      ShortNamelang-alt 
      Smoothness integer  
      SplitToningBalanceintegerSortNamelang-alt  
      SplitToningHighlightHueSplitToningBalance integer 
      (also used for newer ColorGrade settings)
      SplitToningHighlightSaturationSplitToningHighlightHue integer 
      (also used for newer ColorGrade settings)
      SplitToningShadowHueSplitToningHighlightSaturation integer 
      (also used for newer ColorGrade settings)
      SplitToningShadowHueinteger(also used for newer ColorGrade settings)
      SplitToningShadowSaturation integer(also used for newer ColorGrade settings)
      SupportsAmountboolean 
      SupportsColorboolean 
      SupportsHighDynamicRangeboolean 
      SupportsMonochromeboolean 
      SupportsNormalDynamicRangeboolean 
      SupportsOutputReferredboolean 
      SupportsSceneReferredboolean  
      ColorTemperatureinteger  
      ToggleStyleAmountinteger 
      ToggleStyleDigeststring 
      ToneCurve string+  
      integer  
      UUIDstring/ 
      Version string  
      Vibrance integer  
      VignetteAmount integer  
      VignetteMidpoint integer  
      What string  
      WhiteBalance string/ @@ -4576,7 +10214,7 @@
      'Shade' = Shade
      'Tungsten' = Tungsten
      Whites2012 integer  
      GPSMeasureMode integer2 = 2-Dimensional -
      3 = 3-Dimensional
      2 = 2-Dimensional Measurement +
      3 = 3-Dimensional Measurement
      GPSProcessingMethod string

      XMP exifEX Tags

      -

      EXIF tags added by the EXIF 2.31 for XMP specification (see -http://www.cipa.jp/std/documents/e/DC-010-2017_E.pdf).

      +

      EXIF tags added by the EXIF 2.32 for XMP specification (see +https://cipa.jp/std/documents/download_e.html?DC-010-2020_E).

      These tags belong to the ExifTool XMP-exifEX family 1 group.

      @@ -6427,70 +12065,126 @@ string (called BodySerialNumber by the spec) -CameraElevationAngle -rational -  +CameraElevationAngle +rational +  + +OwnerName +string +(called CameraOwnerName by the spec) + +CompositeImage +integer +0 = Unknown +
      1 = Not a Composite Image +
      2 = General Composite Image +
      3 = Composite Image Captured While Shooting
      + +CompositeImageCount +integer+ +  + +CompositeImageExposureTimes +struct +--> CompImageExp Struct + +CompImageMaxExposureAll +rational_ +(CompositeImageExposureTimesMaxExposureTimesOfAll) + +CompImageMaxExposureUsed +rational_ +(CompositeImageExposureTimesMaxExposureTimesOfUsed) + +CompImageMinExposureAll +rational_ +(CompositeImageExposureTimesMinExposureTimesOfAll) + +CompImageMinExposureUsed +rational_ +(CompositeImageExposureTimesMinExposureTimesOfUsed) + +CompImageImagesPerSequence +integer_ +(CompositeImageExposureTimesNumberOfImagesInSequences) + +CompImageNumSequences +integer_ +(CompositeImageExposureTimesNumberOfSequences) + +CompImageSumExposureAll +rational_ +(CompositeImageExposureTimesSumOfExposureTimesOfAll) + +CompImageSumExposureUsed +rational_ +(CompositeImageExposureTimesSumOfExposureTimesOfUsed) -OwnerName -string -(called CameraOwnerName by the spec) +CompImageTotalExposurePeriod +rational_ +(CompositeImageExposureTimesTotalExposurePeriod) +CompImageValues +rational_+ +(CompositeImageExposureTimesValues) + Gamma rational   - + Humidity rational   - + InteropIndex string (called InteroperabilityIndex by the spec)
      'R03' = R03 - DCF option file (Adobe RGB)
      'R98' = R98 - DCF basic file (sRGB)
      'THM' = THM - DCF thumbnail file
      - + ISOSpeed integer   - + ISOSpeedLatitudeyyy integer   - + ISOSpeedLatitudezzz integer   - + LensMake string   - + LensModel string   - + LensSerialNumber string   - + LensInfo rational+ (called LensSpecification by the spec; unfortunately the EXIF 2.3 for XMP specification defined this new tag instead of using the existing XMP-aux:LensInfo) - + PhotographicSensitivity integer   - + Pressure rational   - + RecommendedExposureIndex integer   - + SensitivityType integer 0 = Unknown @@ -6501,20 +12195,68 @@
      5 = Standard Output Sensitivity and ISO Speed
      6 = Recommended Exposure Index and ISO Speed
      7 = Standard Output Sensitivity, Recommended Exposure Index and ISO Speed
      - + StandardOutputSensitivity integer   - + AmbientTemperature rational (called Temperature by the spec) - + WaterDepth rational  
      +

      XMP CompImageExp Struct

      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Field NameWritableValues / Notes
      MaxExposureTimesOfAllrational 
      MaxExposureTimesOfUsedrational 
      MinExposureTimesOfAllrational 
      MinExposureTimesOfUsedrational 
      NumberOfImagesInSequencesinteger 
      NumberOfSequencesinteger 
      SumOfExposureTimesOfAllrational 
      SumOfExposureTimesOfUsedrational 
      TotalExposurePeriodrational 
      Valuesrational+ 
      +

      XMP ExpressionMedia Tags

      Microsoft Expression Media namespace tags. These tags are avoided when writing due to name conflicts with tags in other schemas.

      @@ -6647,6 +12389,22 @@ string (called hdrp_makernote by the spec) +MicroVideo +integer +  + +MicroVideoOffset +integer +  + +MicroVideoPresentationTimestampUs +integer +  + +MicroVideoVersion +integer +  + PortraitNote string   @@ -6941,62 +12699,66 @@ real   -InitialViewHeadingDegrees +InitialVerticalFOVDegrees real   -InitialViewPitchDegrees +InitialViewHeadingDegrees real   -InitialViewRollDegrees +InitialViewPitchDegrees real   -LargestValidInteriorRectHeight +InitialViewRollDegrees real   -LargestValidInteriorRectLeft +LargestValidInteriorRectHeight real   -LargestValidInteriorRectTop +LargestValidInteriorRectLeft real   -LargestValidInteriorRectWidth +LargestValidInteriorRectTop real   +LargestValidInteriorRectWidth +real +  + LastPhotoDate date   - + PoseHeadingDegrees real   - + PosePitchDegrees real   - + PoseRollDegrees real   - + ProjectionType string   - + SourcePhotosCount integer   - + StitchingSoftware string   - + UsePanoramaViewer boolean   @@ -7296,45 +13058,53 @@ Tag Name WritableValues / Notes +AltTextAccessibility +lang-alt +  + CountryCode string   - + CreatorContactInfo struct --> ContactInfo Struct - + CreatorCity string_ (CreatorContactInfoCiAdrCity) - + CreatorCountry string_ (CreatorContactInfoCiAdrCtry) - + CreatorAddress string_ (CreatorContactInfoCiAdrExtadr) - + CreatorPostalCode string_ (CreatorContactInfoCiAdrPcode) - + CreatorRegion string_ (CreatorContactInfoCiAdrRegion) - + CreatorWorkEmail string_ (CreatorContactInfoCiEmailWork) - + CreatorWorkTelephone string_ (CreatorContactInfoCiTelWork) - + CreatorWorkURL string_ (CreatorContactInfoCiUrlWork) + +ExtDescrAccessibility +lang-alt +  IntellectualGenre string @@ -7394,9 +13164,10 @@

      XMP iptcExt Tags

      -

      This table contains tags defined by the IPTC Extension schema version 1.5. +

      This table contains tags defined by the IPTC Extension schema version 1.6. The actual namespace prefix is "Iptc4xmpExt", but ExifTool shortens this for -the family 1 group name. (see http://www.iptc.org/IPTC4XMP/)

      +the family 1 group name. (see +http://www.iptc.org/standards/photo-metadata/iptc-standard/)

      These tags belong to the ExifTool XMP-iptcExt family 1 group.

      @@ -7731,83 +13502,87 @@ + = List'>lang-alt_+ (EventExtName) -ExternalMetadataLink +EventID string+   +ExternalMetadataLink +string+ +  + FeedIdentifier string   - + Genre struct+ --> CVTermDetails Struct - + GenreCvId string_+   - + GenreCvTermId string_+   - + GenreCvTermName lang-alt_+   - + GenreCvTermRefinedAbout string_+   - + Headline lang-alt/   - + ImageRegion struct+ --> ImageRegion Struct - + ImageRegionName lang-alt_+   - + ImageRegionCtype struct_+ --> Entity Struct
      (ImageRegionRCtype) - + ImageRegionCtypeIdentifier string_+ (ImageRegionRCtypeIdentifier) - + ImageRegionCtypeName lang-alt_+ (ImageRegionRCtypeName) - + ImageRegionBoundary struct_+ --> RegionBoundary Struct
      (ImageRegionRegionBoundary) - + ImageRegionBoundaryH real_+ (ImageRegionRegionBoundaryRbH) - + ImageRegionBoundaryRx real_+ (ImageRegionRegionBoundaryRbRx) - + ImageRegionBoundaryShape string_+ @@ -7815,563 +13590,563 @@
      'circle' = Circle
      'polygon' = Polygon
      'rectangle' = Rectangle - + ImageRegionBoundaryUnit string_+ (ImageRegionRegionBoundaryRbUnit)
      'pixel' = Pixel
      'relative' = Relative
      - + ImageRegionBoundaryVertices struct_+ --> BoundaryPoint Struct
      (ImageRegionRegionBoundaryRbVertices) - + ImageRegionBoundaryVerticesX real_+ (ImageRegionRegionBoundaryRbVerticesRbX) - + ImageRegionBoundaryVerticesY real_+ (ImageRegionRegionBoundaryRbVerticesRbY) - + ImageRegionBoundaryW real_+ (ImageRegionRegionBoundaryRbW) - + ImageRegionBoundaryX real_+ (ImageRegionRegionBoundaryRbX) - + ImageRegionBoundaryY real_+ (ImageRegionRegionBoundaryRbY) - + ImageRegionID string_+ (ImageRegionRId) - + ImageRegionRole struct_+ --> Entity Struct
      (ImageRegionRRole) - + ImageRegionRoleIdentifier string_+ (ImageRegionRRoleIdentifier) - + ImageRegionRoleName lang-alt_+ (ImageRegionRRoleName) - + IPTCLastEdited date   - + LinkedEncRightsExpr struct+ --> LEREDetails Struct - + LinkedEncodedRightsExpr string_+ (LinkedEncRightsExprLinkedRightsExpr) - + LinkedEncodedRightsExprType string_+ (LinkedEncRightsExprRightsExprEncType) - + LinkedEncodedRightsExprLangID string_+ (LinkedEncRightsExprRightsExprLangId) - + LocationCreated struct+ --> LocationDetails Struct - + LocationCreatedCity string_+   - + LocationCreatedCountryCode string_+   - + LocationCreatedCountryName string_+   - + LocationCreatedGPSAltitude rational_+   - + LocationCreatedGPSLatitude string_+   - + LocationCreatedGPSLongitude string_+   - + LocationCreatedIdentifier string_+   - + LocationCreatedLocationId string_+   - + LocationCreatedLocationName lang-alt_+   - + LocationCreatedProvinceState string_+   - + LocationCreatedSublocation string_+   - + LocationCreatedWorldRegion string_+   - + LocationShown struct+ --> LocationDetails Struct - + LocationShownCity string_+   - + LocationShownCountryCode string_+   - + LocationShownCountryName string_+   - + LocationShownGPSAltitude rational_+   - + LocationShownGPSLatitude string_+   - + LocationShownGPSLongitude string_+   - + LocationShownIdentifier string_+   - + LocationShownLocationId string_+   - + LocationShownLocationName lang-alt_+   - + LocationShownProvinceState string_+   - + LocationShownSublocation string_+   - + LocationShownWorldRegion string_+   - + MaxAvailHeight integer   - + MaxAvailWidth integer   - + ModelAge integer+   - + OrganisationInImageCode string+   - + OrganisationInImageName string+   - + PersonHeard struct+ --> Entity Struct - + PersonHeardIdentifier string_+   - + PersonHeardName lang-alt_+   - + PersonInImage string+   - + PersonInImageWDetails struct+ --> PersonDetails Struct - + PersonInImageCharacteristic struct_+ --> CVTermDetails Struct
      (PersonInImageWDetailsPersonCharacteristic) - + PersonInImageCvTermCvId string_+ (PersonInImageWDetailsPersonCharacteristicCvId) - + PersonInImageCvTermId string_+ (PersonInImageWDetailsPersonCharacteristicCvTermId) - + PersonInImageCvTermName lang-alt_+ (PersonInImageWDetailsPersonCharacteristicCvTermName) - + PersonInImageCvTermRefinedAbout string_+ (PersonInImageWDetailsPersonCharacteristicCvTermRefinedAbout) - + PersonInImageDescription lang-alt_+ (PersonInImageWDetailsPersonDescription) - + PersonInImageId string_+ (PersonInImageWDetailsPersonId) - + PersonInImageName lang-alt_+ (PersonInImageWDetailsPersonName) - + PlanningRef struct+ --> EntityWithRole Struct - + PlanningRefIdentifier string_+   - + PlanningRefName lang-alt_+   - + PlanningRefRole string_+   - + ProductInImage struct+ --> ProductDetails Struct - + ProductInImageDescription lang-alt_+ (ProductInImageProductDescription) - + ProductInImageGTIN string_+ (ProductInImageProductGTIN) - + ProductInImageName lang-alt_+ (ProductInImageProductName) - + PublicationEvent struct+ --> PublicationEvent Struct - + PublicationEventDate date_+   - + PublicationEventIdentifier string_+   - + PublicationEventName string_+   - + Rating struct+ --> Rating Struct - + RatingRegion struct_+ --> LocationDetails Struct
      (RatingRatingRegion) - + RatingRegionCity string_+ (RatingRatingRegionCity) - + RatingRegionCountryCode string_+ (RatingRatingRegionCountryCode) - + RatingRegionCountryName string_+ (RatingRatingRegionCountryName) - + RatingRegionGPSAltitude rational_+ (RatingRatingRegionGPSAltitude) - + RatingRegionGPSLatitude string_+ (RatingRatingRegionGPSLatitude) - + RatingRegionGPSLongitude string_+ (RatingRatingRegionGPSLongitude) - + RatingRegionIdentifier string_+ (RatingRatingRegionIdentifier) - + RatingRegionLocationId string_+ (RatingRatingRegionLocationId) - + RatingRegionLocationName lang-alt_+ (RatingRatingRegionLocationName) - + RatingRegionProvinceState string_+ (RatingRatingRegionProvinceState) - + RatingRegionSublocation string_+ (RatingRatingRegionSublocation) - + RatingRegionWorldRegion string_+ (RatingRatingRegionWorldRegion) - + RatingScaleMaxValue string_+ (RatingRatingScaleMaxValue) - + RatingScaleMinValue string_+ (RatingRatingScaleMinValue) - + RatingSourceLink string_+ (RatingRatingSourceLink) - + RatingValue string_+ (RatingRatingValue) - + RatingValueLogoLink string_+ (RatingRatingValueLogoLink) - + RecDevice struct --> Device Struct - + RecDeviceAttLensDescription string_   - + RecDeviceManufacturer string_   - + RecDeviceModelName string_   - + RecDeviceOwnersDeviceId string_   - + RecDeviceSerialNumber string_   - + RegistryID struct+ --> RegistryEntryDetails Struct - + RegistryEntryRole string_+ (RegistryIdRegEntryRole) - + RegistryItemID string_+ (RegistryIdRegItemId) - + RegistryOrganisationID string_+ (RegistryIdRegOrgId) - + ReleaseReady boolean   - + Season struct --> EpisodeOrSeason Struct - + SeasonIdentifier string_   - + SeasonName string_   - + SeasonNumber string_   - + Series struct --> Series Struct - + SeriesIdentifier string_   - + SeriesName string_   - + Snapshot struct+ --> LinkedImage Struct
      (called SnapshotLink by the spec) - + SnapshotFormat string_+ (SnapshotLinkFormat) - + SnapshotHeightPixels integer_+ (SnapshotLinkHeightPixels) - + SnapshotImageRole string_+ (SnapshotLinkImageRole) - + SnapshotLink string_+ (SnapshotLinkLink) - + SnapshotLinkQualifier string_+ (SnapshotLinkLinkQualifier) - + SnapshotUsedVideoFrame struct_+ --> Timecode Struct
      (SnapshotLinkUsedVideoFrame) - + SnapshotUsedVideoFrameTimeFormat string_+ @@ -8387,137 +14162,137 @@
      '5994NonDropTimecode' = 59.94 fps (non-drop)
      '60Timecode' = 60 fps - + SnapshotUsedVideoFrameTimeValue string_+ (SnapshotLinkUsedVideoFrameTimeValue) - + SnapshotUsedVideoFrameValue integer_+ (SnapshotLinkUsedVideoFrameValue; only in XMP 2008 spec; an error?) - + SnapshotWidthPixels integer_+ (SnapshotLinkWidthPixels) - + StorylineIdentifier string+   - + StreamReady string 'false' = False
      'true' = True
      'unknown' = Unknown
      - + StylePeriod string   - + SupplyChainSource struct+ --> Entity Struct - + SupplyChainSourceIdentifier string_+   - + SupplyChainSourceName lang-alt_+   - + TemporalCoverage struct --> TemporalCoverage Struct - + TemporalCoverageFrom date_ (TemporalCoverageTempCoverageFrom) - + TemporalCoverageTo date_ (TemporalCoverageTempCoverageTo) - + Transcript lang-alt   - + TranscriptLink struct+ --> QualifiedLink Struct - + TranscriptLinkLink string_+   - + TranscriptLinkLinkQualifier string_+   - + VideoBitrate integer   - + VideoBitrateMode string 'fixed' = Fixed
      'variable' = Variable
      - + VideoDisplayAspectRatio rational   - + VideoEncodingProfile string   - + VideoShotType struct+ --> Entity Struct - + VideoShotTypeIdentifier string_+   - + VideoShotTypeName lang-alt_+   - + VideoStreamsCount integer   - + VisualColor string (called VisualColour by the spec)
      'bw-monochrome' = Monochrome
      'colour' = Color
      - + WorkflowTag struct --> CVTermDetails Struct - + WorkflowTagCvId string_   - + WorkflowTagCvTermId string_   - + WorkflowTagCvTermName lang-alt_   - + WorkflowTagCvTermRefinedAbout string_   @@ -8905,30 +14680,26 @@ string   -GROUPS -string -  - Identifier string+   - + LocationId string+   - + LocationName lang-alt   - + ProvinceState string   - + Sublocation string   - + WorldRegion string   @@ -9215,6 +14986,10 @@ PrivateRTKInfo string   + +WeightedFlatSubject +string+ + 

      XMP MediaPro Tags

      @@ -9441,7 +15216,7 @@ TransmissionReference string -  +(Now used as a job identifier) Urgency integer @@ -10663,7 +16438,7 @@   NativeDigest -string +string/   Orientation @@ -10697,7 +16472,8 @@
      32845 = Pixar LogLuv
      32892 = Sequential Color Filter
      34892 = Linear Raw -
      51177 = Depth Map +
      51177 = Depth Map +
      52527 = Semantic Mask PlanarConfiguration @@ -10884,31 +16660,35 @@ real (a value from 0 to 5, or -1 for "rejected") +RatingPercent +real/ +(non-standard) + Thumbnails struct+ --> Thumbnail Struct - + ThumbnailFormat string_+ (ThumbnailsFormat) - + ThumbnailHeight integer_+ (ThumbnailsHeight) - + ThumbnailImage string/_+ (ThumbnailsImage) - + ThumbnailWidth integer_+ (ThumbnailsWidth) - + Title lang-alt/ (non-standard) @@ -13651,7 +19431,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Feb 20, 2020 +
      Last revised Jan 12, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/ZIP.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/ZIP.html --- libimage-exiftool-perl-11.88/html/TagNames/ZIP.html 2019-05-09 14:59:02.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/ZIP.html 2022-01-12 22:57:16.000000000 +0000 @@ -80,6 +80,11 @@ ZipFileName no   + +'_com' +ZipFileComment +no + 

      ZIP GZIP Tags

      @@ -200,7 +205,7 @@
      (This document generated automatically by Image::ExifTool::BuildTagLookup) -
      Last revised Mar 7, 2018 +
      Last revised Jan 12, 2022

      <-- ExifTool Tag Names

      diff -Nru libimage-exiftool-perl-11.88/html/TagNames/ZISRAW.html libimage-exiftool-perl-12.40+dfsg/html/TagNames/ZISRAW.html --- libimage-exiftool-perl-11.88/html/TagNames/ZISRAW.html 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/TagNames/ZISRAW.html 2020-08-10 13:44:12.000000000 +0000 @@ -0,0 +1,41 @@ + + + + +ZISRAW Tags + + + +

      ZISRAW Tags

      +

      As well as the header information listed below, ExifTool also extracts the +top-level XML-based metadata from Zeiss Integrated Software RAW (ZISRAW) CZI +files.

      +
      +
      + + + + + + + + + + + + + + + + + + +
      Index1Tag NameWritableValues / Notes
      32ZISRAWVersionno 
      48PrimaryFileGUIDno 
      64FileGUIDno 
      + +
      +(This document generated automatically by Image::ExifTool::BuildTagLookup) +
      Last revised Aug 10, 2020 +

      <-- ExifTool Tag Names

      + + diff -Nru libimage-exiftool-perl-11.88/html/under.html libimage-exiftool-perl-12.40+dfsg/html/under.html --- libimage-exiftool-perl-11.88/html/under.html 2019-03-01 16:46:24.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/under.html 2021-11-11 17:36:17.000000000 +0000 @@ -71,7 +71,8 @@
      1. The "Raw" value is the value after initial formatting is applied to the binary data from the file. Most tags have no separate "ValueConv" conversion, so for these tags the "Raw" value is the same as the "ValueConv" -value. This value may be seen by using the -v option.
      +value. Values stored in rational form also have a "Rational" value. Both +Raw and Rational values may be seen by using the -v option.
    1. The "Binary" value is the actual binary data stored in the file. This data is displayed in hexadecimal form with the -v3 @@ -85,7 +86,7 @@

      Below are some examples of these different values for a few tags:

      - + @@ -158,7 +159,7 @@
      Created Jun. 24, 2009
      -Last revised Mar. 1, 2019 +Last revised Nov. 1, 2021

      <-- Back to ExifTool home page

      diff -Nru libimage-exiftool-perl-11.88/html/writing.html libimage-exiftool-perl-12.40+dfsg/html/writing.html --- libimage-exiftool-perl-11.88/html/writing.html 2017-10-30 11:10:03.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/html/writing.html 2020-03-31 19:42:32.000000000 +0000 @@ -201,7 +201,7 @@ technique in general is not ideal.

      2009-06-12: -CIPA +CIPA has recently released a "Multi-Picture Format" standard for storing large images in JPEG files. Again, there is a big problem with this standard: It uses offsets that are relative to the start of the MPF header (in the new MPF diff -Nru libimage-exiftool-perl-11.88/lib/File/RandomAccess.pm libimage-exiftool-perl-12.40+dfsg/lib/File/RandomAccess.pm --- libimage-exiftool-perl-11.88/lib/File/RandomAccess.pm 2020-01-02 12:08:49.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/File/RandomAccess.pm 2022-01-12 22:51:53.000000000 +0000 @@ -25,7 +25,7 @@ # # May also be used for string i/o (just pass a scalar reference) # -# Legal: Copyright (c) 2003-2020 Phil Harvey (philharvey66 at gmail.com) +# Legal: Copyright (c) 2003-2022 Phil Harvey (philharvey66 at gmail.com) # This library is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. #------------------------------------------------------------------------------ diff -Nru libimage-exiftool-perl-11.88/lib/File/RandomAccess.pod libimage-exiftool-perl-12.40+dfsg/lib/File/RandomAccess.pod --- libimage-exiftool-perl-11.88/lib/File/RandomAccess.pod 2020-01-02 12:08:49.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/File/RandomAccess.pod 2022-01-12 22:51:53.000000000 +0000 @@ -3,7 +3,7 @@ # # Description: Buffer to support random access reading of sequential file # -# Legal: Copyright (c) 2003-2020 Phil Harvey (philharvey66 at gmail.com) +# Legal: Copyright (c) 2003-2022 Phil Harvey (philharvey66 at gmail.com) # This library is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. #------------------------------------------------------------------------------ @@ -236,7 +236,7 @@ =head1 AUTHOR -Copyright 2003-2020 Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022 Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/AES.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/AES.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/AES.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/AES.pm 2022-01-12 22:51:53.000000000 +0000 @@ -477,7 +477,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/AFCP.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/AFCP.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/AFCP.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/AFCP.pm 2022-01-12 22:51:53.000000000 +0000 @@ -259,7 +259,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/AIFF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/AIFF.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/AIFF.pm 2020-02-14 12:32:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/AIFF.pm 2022-01-12 22:51:53.000000000 +0000 @@ -18,7 +18,7 @@ use Image::ExifTool qw(:DataAccess :Utils); use Image::ExifTool::ID3; -$VERSION = '1.10'; +$VERSION = '1.11'; # information for time/date-based tags (time zero is Jan 1, 1904) my %timeInfo = ( @@ -73,12 +73,12 @@ ProcessProc => \&Image::ExifTool::ID3::ProcessID3, }, }, + APPL => 'ApplicationData', # (first 4 bytes are the application signature) # SSND => 'SoundData', # MARK => 'Marker', # INST => 'Instrument', # MIDI => 'MidiData', # AESD => 'AudioRecording', -# APPL => 'ApplicationSpecific', ); %Image::ExifTool::AIFF::Common = ( @@ -287,7 +287,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/APE.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/APE.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/APE.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/APE.pm 2022-01-12 22:51:53.000000000 +0000 @@ -15,7 +15,7 @@ use vars qw($VERSION); use Image::ExifTool qw(:DataAccess :Utils); -$VERSION = '1.05'; +$VERSION = '1.06'; # APE metadata blocks %Image::ExifTool::APE::Main = ( @@ -166,7 +166,7 @@ # look for the APE trailer footer... my $footPos = -32; # (...but before the ID3v1 trailer if it exists) - $footPos -= 128 if $$et{DoneID3} == 2; + $footPos -= $$et{DoneID3} if $$et{DoneID3} > 1; $raf->Seek($footPos, 2) or return 1; $raf->Read($buff, 32) == 32 or return 1; $buff =~ /^APETAGEX/ or return 1; @@ -263,7 +263,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/APP12.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/APP12.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/APP12.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/APP12.pm 2022-01-12 22:51:53.000000000 +0000 @@ -305,7 +305,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Apple.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Apple.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Apple.pm 2020-02-14 12:32:36.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Apple.pm 2022-01-12 22:51:53.000000000 +0000 @@ -15,7 +15,7 @@ use Image::ExifTool::Exif; use Image::ExifTool::PLIST; -$VERSION = '1.04'; +$VERSION = '1.05'; # Apple iPhone metadata (ref PH) %Image::ExifTool::Apple::Main = ( @@ -72,7 +72,8 @@ # 0x000f - int32s: 2,3 # 0x0010 - int32s: 1 0x0011 => { - Name => 'ContentIdentifier', #forum8750 + Name => 'MediaGroupUUID', #NealKrawetz private communication + # (changed in 12.19 from Name => 'ContentIdentifier', #forum8750) Writable => 'string', }, # 0x0014 - int32s: 1,2,3,4,5 (iPhone 6s, iOS 6.1) @@ -148,7 +149,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/ASF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ASF.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/ASF.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ASF.pm 2022-01-12 22:51:53.000000000 +0000 @@ -876,7 +876,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Audible.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Audible.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Audible.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Audible.pm 2022-01-12 22:51:53.000000000 +0000 @@ -291,7 +291,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/BigTIFF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/BigTIFF.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/BigTIFF.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/BigTIFF.pm 2022-01-12 22:51:53.000000000 +0000 @@ -275,7 +275,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/BMP.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/BMP.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/BMP.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/BMP.pm 2022-01-12 22:51:53.000000000 +0000 @@ -335,7 +335,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/BPG.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/BPG.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/BPG.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/BPG.pm 2022-01-12 22:51:53.000000000 +0000 @@ -231,7 +231,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/BuildTagLookup.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/BuildTagLookup.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/BuildTagLookup.pm 2020-02-19 17:45:10.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/BuildTagLookup.pm 2022-01-12 22:51:54.000000000 +0000 @@ -35,7 +35,7 @@ use Image::ExifTool::Validate; use Image::ExifTool::MacOS; -$VERSION = '3.34'; +$VERSION = '3.47'; @ISA = qw(Exporter); sub NumbersFirst($$); @@ -68,6 +68,7 @@ IPTC => 'Exif', # put IPTC after EXIF, GPS => 'XMP', # etc... Composite => 'Extra', + CBOR => 'JSON', GeoTiff => 'GPS', CanonVRD=> 'CanonCustom', DJI => 'Casio', @@ -141,6 +142,9 @@ signed => 1, unsigned => 1, utf8 => 1, + Unicode => 1, # (Microsoft Xtra) + GUID => 1, # (Microsoft Xtra) + vt_filetime => 1, # (Microsoft Xtra) ); # Descriptions for the TagNames documentation @@ -310,15 +314,16 @@ C is a floating point number, C is entered as a floating point number but stored as two C strings separated by a '/' character, C is a date/time string entered in the format "YYYY:mm:dd -HH:MM:SS[.ss][+/-HH:MM]", C is either "True" or "False", C -indicates a structured tag, and C is a tag that supports alternate -languages. +HH:MM:SS[.ss][+/-HH:MM]", C is either "True" or "False" (but "true" +and "false" may be written as a ValueConv value for compatibility with +non-conforming applications), C indicates a structured tag, and +C is a tag that supports alternate languages. When reading, C tags are extracted only if the L (-struct) option is used. Otherwise the corresponding I tags, indicated by an underline (C<_>) after the B type, are extracted. When copying, by default both structured and flattened tags are available, but -the flattened tags are considered "unsafe" so they they aren't copied unless +the flattened tags are considered "unsafe" so they aren't copied unless specified explicitly. The L option may be disabled by setting Struct to 0 via the API or with --struct on the command line to copy only flattened tags, or enabled by setting Struct to 1 via the API or with -struct on the @@ -415,7 +420,7 @@ }, QuickTime => q{ The QuickTime format is used for many different types of audio, video and -image files (most notably, MOV/MP4 videos and HEIC/CR3 images). Exiftool +image files (most notably, MOV/MP4 videos and HEIC/CR3 images). ExifTool extracts standard meta information and a variety of audio, video and image parameters, as well as proprietary information written by many camera models. Tags with a question mark after their name are not extracted unless @@ -430,11 +435,13 @@ finally in L, but this order may be changed by setting the PREFERRED level of the appropriate table in the config file (see -L in the full distribution for -an example). ExifTool currently writes only top-level metadata in -QuickTime-based files; it extracts other track-specific and timed -metadata, but can not yet edit tags in these locations (with the -exception of track-level date/time tags). +L in the full distribution for an +example). Note that some tags with the same name but different ID's may +exist in the same location, but the family 7 group names may be used to +differentiate these. ExifTool currently writes only top-level metadata in +QuickTime-based files; it extracts other track-specific and timed metadata, +but can not yet edit tags in these locations (with the exception of +track-level date/time tags). Alternate language tags may be accessed for L and @@ -444,19 +451,29 @@ "ItemList::Artist-deu-DE"). Most L tags support a language code, but without a country code. If no language code is specified -when writing, alternate languages for the tag are deleted. Use the "und" -language code to write the default language without deleting alternate -languages. Note that "eng" is treated as a default language when reading, -but not when writing. +when writing, the default language is written and alternate languages for +the tag are deleted. Use the "und" language code to write the default +language without deleting alternate languages. Note that "eng" is treated +as a default language when reading, but not when writing. According to the specification, integer-format QuickTime date/time tags should be stored as UTC. Unfortunately, digital cameras often store local time values instead (presumably because they don't know the time zone). For this reason, by default ExifTool does not assume a time zone for these -values. However, if the L API option is set, then ExifTool will +values. However, if the API L option is set, then ExifTool will assume these values are properly stored as UTC, and will convert them to local time when extracting. +When writing string-based date/time tags, the system time zone is added if +the PrintConv option is enabled and no time zone is specified. This is +because Apple software may display crazy values if the time zone is missing +for some tags. + +By default ExifTool will remove null padding from some QuickTime containers +in Canon CR3 files when writing, but the +L option may be used to preserve +the original size by padding with nulls if necessary. + See L for the official specification. @@ -628,12 +645,14 @@ synchronized when writing. The MWG Composite tags below are designed to aid in the implementation of these recommendations. As well, the MWG defines new XMP tags which are listed in the subsequent tables below. See -L for the official MWG specification. +L +for the official MWG specification. }, MacOS => q{ On MacOS systems, the there are additional MDItem and XAttr Finder tags that may be extracted. These tags are not extracted by default -- they must be -specifically requested or enabled via an API option. +specifically requested or enabled via an API option. (Except when reading +MacOS "._" files directly, see below.) The tables below list some of the tags that may be extracted, but ExifTool will extract all available information even for tags not listed. @@ -650,7 +669,7 @@ ~head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. @@ -691,10 +710,14 @@ large binary data tags which may be excluded to reduce memory usage if memory limitations are a problem }, + 'ls-l' => q{ + mimics columns shown by Unix "ls -l" command. Includes some tags which are + extracted only if the API L option + is enabled + }, ); - -# same thing for RIFF INFO tags found in the EXIF spec +# lookup for RIFF INFO tags which are found in the EXIF spec my %riffSpec = ( IARL => 1, ICRD => 1, IGNR => 1, IPLT => 1, ISRC => 1, IART => 1, ICRP => 1, IKEY => 1, IPRD => 1, ISRF => 1, @@ -734,7 +757,7 @@ my (%tagNameInfo, %id, %longID, %longName, %shortName, %tableNum, %tagLookup, %tagExists, %noLookup, %tableWritable, %sepTable, %case, %structs, %compositeModules, %isPlugin, %flattened, %structLookup, - @writePseudo); + @writePseudo, %dupXmpTag); $self->{TAG_NAME_INFO} = \%tagNameInfo; $self->{ID_LOOKUP} = \%id; $self->{LONG_ID} = \%longID; @@ -877,6 +900,17 @@ $case{$lc} = $name; } my $format = $$tagInfo{Format}; + # check TagID's to make sure they don't start with 'ID-' + my @grps = $et->GetGroup($tagInfo); + foreach (@grps) { + warn "Group name starts with 'ID-' for $short $name\n" if /^ID-/i; + } + if ($isXMP and not $$tagInfo{Avoid} and not $$tagInfo{Struct} and + ($$tagInfo{Writable} or $$table{WRITABLE})) + { + $dupXmpTag{$name} and warn "Duplicate writable XMP tag $name\n"; + $dupXmpTag{$name} = 1; + } # validate Name (must not start with a digit or else XML output will not be valid; # must not start with a dash or exiftool command line may get confused) if ($name !~ /^[_A-Za-z][-\w]+$/ and @@ -1023,9 +1057,14 @@ $note =~ s/(^[ \t]+|[ \t]+$)//mg; push @values, "($note)"; } - if ($isXMP and lc $tagID ne lc $name) { - # add note about different XMP Tag ID - my $note = $$tagInfo{RootTagInfo} ? $tagID : "called $tagID by the spec"; + if ($isXMP and (lc $tagID ne lc $name or $$tagInfo{NotFlat})) { + my $note; + if ($$tagInfo{NotFlat}) { + $note = 'NOT a flattened tag!'; + } else { + # add note about different XMP Tag ID + $note = $$tagInfo{RootTagInfo} ? $tagID : "called $tagID by the spec"; + } if ($$tagInfo{Notes}) { $values[-1] =~ s/^\(/($note; /; } else { @@ -1302,6 +1341,7 @@ my $count = $$tagInfo{Count} || 1; # adjust count to Writable size if different than Format if ($writable and $format and $writable ne $format and + $writable ne 'string' and $format ne 'string' and $Image::ExifTool::Exif::formatNumber{$writable} and $Image::ExifTool::Exif::formatNumber{$format}) { @@ -1474,7 +1514,8 @@ my $tag; foreach $tag (sort keys %$struct) { my $tagInfo = $$struct{$tag}; - next unless ref $tagInfo eq 'HASH' and $tag ne 'NAMESPACE'; + next unless ref $tagInfo eq 'HASH' and $tag ne 'NAMESPACE' and $tag ne 'GROUPS'; + warn "WARNING: $strName Struct containes $tag\n" if $Image::ExifTool::specialTags{$tag}; my $writable = $$tagInfo{Writable}; my @vals; unless ($writable) { @@ -2088,7 +2129,7 @@ $short = $$shortName{$tableName}; my @names = split ' ', $short; my $class = shift @names; - if (@names) { + if (@names and $class ne 'Other') { # add heading for tables without a Main unless ($heading eq $class) { $heading = $class; @@ -2116,6 +2157,13 @@ $short = $$shortName{$tableName}; $short = $tableName unless $short; $url = "$short.html"; + # handle various tables in "Other.pm" + if ($short =~ /^Other (.*)/) { + $short = $1; + $url = 'Other.html#' . $1; + } else { + $url = "$short.html"; + } print HTMLFILE "$short"; ++$count; } @@ -2714,7 +2762,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/BZZ.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/BZZ.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/BZZ.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/BZZ.pm 2022-01-12 22:51:53.000000000 +0000 @@ -445,7 +445,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) Copyright 2002, Leon Bottou and Yann Le Cun Copyright 2001, AT&T Copyright 1999-2001, LizardTech Inc. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/CanonCustom.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/CanonCustom.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/CanonCustom.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/CanonCustom.pm 2022-01-12 22:51:54.000000000 +0000 @@ -19,7 +19,7 @@ use Image::ExifTool::Canon; use Image::ExifTool::Exif; -$VERSION = '1.56'; +$VERSION = '1.58'; sub ProcessCanonCustom($$$); sub ProcessCanonCustom2($$$); @@ -1291,8 +1291,18 @@ }, 0x0106 => [{ Name => 'AEBShotCount', + Condition => '$$self{Model} =~ /\b90D\b/', + Notes => 'EOS 90D', # (and who knows what others?) + PrintConv => { + 2 => '2 shots', + 3 => '3 shots', + 5 => '5 shots', + 7 => '7 shots', + }, + },{ + Name => 'AEBShotCount', Condition => '$count == 1', - Notes => 'one value for some models...', + Notes => 'other models storing a single value', PrintConv => { 0 => '3 shots', 1 => '2 shots', @@ -1302,7 +1312,7 @@ },{ Name => 'AEBShotCount', Count => 2, - Notes => 'two values for others', + Notes => 'models storing two values', PrintConv => { '3 0' => '3 shots', '2 1' => '2 shots', @@ -1326,7 +1336,13 @@ 2 => 'Enable (ISO speed)', }, }, - 0x0109 => { + 0x0109 => [{ # (1DXmkIII) + Name => 'UsableShootingModes', + Condition => '$count == 1', + Count => 1, + PrintConv => 'sprintf("Flags 0x%x",$val)', + PrintConvInv => '$val=~/0x([\dA-F]+)/i ? hex($1) : undef', + },{ Name => 'UsableShootingModes', Count => 2, PrintConv => [ @@ -1337,10 +1353,16 @@ undef, '$val=~/0x([\dA-F]+)/i ? hex($1) : undef', ], - }, - 0x010a => { + }], + 0x010a => [{ # (1DXmkIII) Name => 'UsableMeteringModes', - Count => 2, + Condition => '$count == 1', + Count => 1, + PrintConv => 'sprintf("Flags 0x%x",$val)', + PrintConvInv => '$val=~/0x([\dA-F]+)/i ? hex($1) : undef', + },{ + Name => 'UsableMeteringModes', + Count => 2, PrintConv => [ \%disableEnable, 'sprintf("Flags 0x%x",$val)', # (evaluative,partial,spot,center-weighted average) @@ -1349,7 +1371,7 @@ undef, '$val=~/0x([\dA-F]+)/i ? hex($1) : undef', ], - }, + }], 0x010b => { Name => 'ExposureModeInManual', PrintConv => { @@ -2066,7 +2088,45 @@ 2 => 'Enable: Down with Set', }, }, - 0x0610 => { + 0x0610 => [{ # (1DXmkIII) + Name => 'ContinuousShootingSpeed', + Condition => '$count == 6', + Count => 6, + PrintConv => [ + \%disableEnable, + '"Hi $val"', + '"Cont $val"', + '"Lo $val"', + '"Soft $val"', + '"Soft LS $val"', + ], + PrintConvInv => [ + undef, + '$val=~/(\d+)/ ? $1 : 0', + '$val=~/(\d+)/ ? $1 : 0', + '$val=~/(\d+)/ ? $1 : 0', + '$val=~/(\d+)/ ? $1 : 0', + '$val=~/(\d+)/ ? $1 : 0', + ], + },{ # (1DXmkIII firmware 1.3) + Name => 'ContinuousShootingSpeed', + Condition => '$count == 5', + Count => 5, + PrintConv => [ + '"Hi $val"', + '"Cont $val"', + '"Lo $val"', + '"Soft $val"', + '"Soft LS $val"', + ], + PrintConvInv => [ + '$val=~/(\d+)/ ? $1 : 0', + '$val=~/(\d+)/ ? $1 : 0', + '$val=~/(\d+)/ ? $1 : 0', + '$val=~/(\d+)/ ? $1 : 0', + '$val=~/(\d+)/ ? $1 : 0', + ], + },{ # others Name => 'ContinuousShootingSpeed', Count => 3, PrintConv => [ @@ -2079,7 +2139,7 @@ '$val=~/(\d+)/ ? $1 : 0', '$val=~/(\d+)/ ? $1 : 0', ], - }, + }], 0x0611 => { Name => 'ContinuousShotLimit', Count => 2, @@ -2092,7 +2152,13 @@ '$val=~/(\d+)/ ? $1 : 0', ], }, - 0x0612 => { # (1DX) + 0x0612 => [{ # (1DXmkIII) + Name => 'RestrictDriveModes', + Condition => '$count == 1', + Count => 1, + PrintConv => 'sprintf("Flags 0x%x",$val)', + PrintConvInv => '$val=~/0x([\dA-F]+)/i ? hex($1) : undef', + },{ # (1DX) Name => 'RestrictDriveModes', Count => 2, PrintConv => [ @@ -2103,7 +2169,7 @@ undef, '$val=~/0x([\dA-F]+)/i ? hex($1) : undef', ], - }, + }], #### 4a) Operation 0x0701 => [ { @@ -2458,7 +2524,21 @@ }, }, ], - 0x080c => { + 0x080c => [{ # (1DXmkIII) + Name => 'TimerLength', + Condition => '$count == 3', + Count => 3, + PrintConv => [ + '"6 s: $val"', + '"16 s: $val"', + '"After release: $val"', + ], + PrintConvInv => [ + '$val=~/(\d+)$/ ? $1 : 0', + '$val=~/(\d+)$/ ? $1 : 0', + '$val=~/(\d+)$/ ? $1 : 0', + ], + },{ Name => 'TimerLength', Count => 4, PrintConv => [ @@ -2473,7 +2553,7 @@ '$val=~/(\d+)$/ ? $1 : 0', '$val=~/(\d+)$/ ? $1 : 0', ], - }, + }], 0x080d => { Name => 'ShortReleaseTimeLag', PrintConv => \%disableEnable, @@ -2520,6 +2600,8 @@ PrintConv => { 0 => 'Cancel selected', 1 => 'Erase selected', + 2 => 'Erase RAW selected', # (1DXmkIII) + 3 => 'Erase non-RAW selected', # (1DXmkIII) }, }, 0x0814 => { # (5DS) @@ -2595,7 +2677,7 @@ my $recPos = $pos; my $recEnd = $pos + $recLen - 8; if ($recEnd > $end) { - $et->Warn('Corrupted CanonCustom2 group'); + $et->Warn("Corrupted CanonCustom2 group $recNum"); return 0; } if ($verbose and not $write) { @@ -2605,8 +2687,17 @@ for ($i=0; $recPos + 8 < $recEnd; ++$i, $recPos+=4*$num) { $tag = Get32u($dataPt, $recPos); $num = Get32u($dataPt, $recPos + 4); + my $nextRec = $recPos + 8 + $num * 4; + last if $nextRec > $recEnd; + # patch for EOS-1DXmkIII firmware 1.0.0 bug: + if ($tag == 0x70c and $num == 0x66 and $nextRec + 8 < $recEnd) { + my $tmp = Get32u($dataPt, $nextRec + 4); + if ($tmp == 0x70f) { + $et->Warn('Fixed incorrect CanonCustom tag 0x70c size', 1); + ++$num; # (count should be one greater) + } + } $recPos += 8; - last if $recPos + $num * 4 > $recEnd; my $val = ReadValue($dataPt, $recPos, 'int32s', $num, $num * 4); if ($write) { # write new value @@ -2638,6 +2729,9 @@ } } } + if ($i != $recCount) { + $et->Warn('Missing '.($recCount-$i)." entries in CanonCustom2 group $recNum directory", 1); + } $pos = $recEnd; } if ($pos != $end) { @@ -2779,7 +2873,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Canon.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Canon.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Canon.pm 2020-01-31 12:22:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Canon.pm 2022-02-09 12:08:06.000000000 +0000 @@ -88,7 +88,7 @@ sub ProcessExifInfo($$$); sub SwapWords($); -$VERSION = '4.34'; +$VERSION = '4.56'; # Note: Removed 'USM' from 'L' lenses since it is redundant - PH # (or is it? Ref 32 shows 5 non-USM L-type lenses) @@ -187,7 +187,7 @@ 37.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro (A20)', #38 37.3 => 'Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF]', #34 37.4 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro', #forum2937 - 38 => 'Canon EF 80-200mm f/4.5-5.6', #32 + 38 => 'Canon EF 80-200mm f/4.5-5.6 II', #32 (II added ref https://github.com/Exiv2/exiv2/issues/1906) 39 => 'Canon EF 75-300mm f/4-5.6', 40 => 'Canon EF 28-80mm f/3.5-5.6', 41 => 'Canon EF 28-90mm f/4-5.6', #32 @@ -473,9 +473,11 @@ 253 => 'Canon EF 70-200mm f/2.8L IS II USM + 2x', #PH (NC) 253.1 => 'Canon EF 70-200mm f/2.8L IS III USM + 2x', #PH (NC) # 253.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025) + 2x', #forum9367 - 254 => 'Canon EF 100mm f/2.8L Macro IS USM', #42 - 255 => 'Sigma 24-105mm f/4 DG OS HSM | A or Other Sigma Lens', #50 + 254 => 'Canon EF 100mm f/2.8L Macro IS USM or Tamron Lens', #42 + 254.1 => 'Tamron SP 90mm f/2.8 Di VC USD 1:1 Macro (F017)', #PH + 255 => 'Sigma 24-105mm f/4 DG OS HSM | A or Other Lens', #50 255.1 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #50 + 255.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD', #exiv issue 1202 (A009) 368 => 'Sigma 14-24mm f/2.8 DG HSM | A or other Sigma Lens', #IB (A018) 368.1 => 'Sigma 20mm f/1.4 DG HSM | A', #50 (newer firmware) 368.2 => 'Sigma 50mm f/1.4 DG HSM | A', #50 @@ -486,7 +488,9 @@ 368.7 => 'Sigma 85mm f/1.4 DG HSM | A', #IB (016) 368.8 => 'Sigma 105mm f/1.4 DG HSM', #IB (A018) 368.9 => 'Sigma 14-24mm f/2.8 DG HSM', #IB (A018) - '368.10' => 'Sigma 70mm f/2.8 DG Macro', #IB (A018) + '368.10' => 'Sigma 35mm f/1.4 DG HSM | A', #PH (012) + '368.11' => 'Sigma 70mm f/2.8 DG Macro', #IB (A018) + '368.12' => 'Sigma 18-35mm f/1.8 DC HSM | A', #50 # Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings 488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH 489 => 'Canon EF 70-300mm f/4-5.6L IS USM', #Gerald Kapounek @@ -515,7 +519,8 @@ 507 => 'Canon EF 16-35mm f/4L IS USM', #42 508 => 'Canon EF 11-24mm f/4L USM or Tamron Lens', #PH 508.1 => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023)', #PH - 624 => 'Sigma 70-200mm f/2.8 DG OS HSM | S', #IB (018) + 624 => 'Sigma 70-200mm f/2.8 DG OS HSM | S or other Sigma Lens', #IB (018) + 624.1 => 'Sigma 150-600mm f/5-6.3 | C', #ChrisSkopec 747 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM or Tamron Lens', #JR 747.1 => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2', #50 748 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x or Tamron Lens', #JR (1.4x Mk III) @@ -524,6 +529,7 @@ 749 => 'Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 2x', #IB 750 => 'Canon EF 35mm f/1.4L II USM or Tamron Lens', #42 750.1 => 'Tamron SP 85mm f/1.8 Di VC USD (F016)', #Exiv2#1072 + 750.2 => 'Tamron SP 45mm f/1.8 Di VC USD (F013)', #PH 751 => 'Canon EF 16-35mm f/2.8L III USM', #42 752 => 'Canon EF 24-105mm f/4L IS II USM', #42 753 => 'Canon EF 85mm f/1.4L IS USM', #42 @@ -531,7 +537,7 @@ 757 => 'Canon EF 400mm f/2.8L IS III USM', #IB 758 => 'Canon EF 600mm f/4L IS III USM', #IB - 1136 => 'Sigma 24-70mm f/2.8 DG OS HSM | Art 017', #IB + 1136 => 'Sigma 24-70mm f/2.8 DG OS HSM | A', #IB (017) # (STM lenses - 0x10xx) 4142 => 'Canon EF-S 18-135mm f/3.5-5.6 IS STM', 4143 => 'Canon EF-M 18-55mm f/3.5-5.6 IS STM or Tamron Lens', @@ -552,7 +558,8 @@ 4158 => 'Canon EF-S 18-55mm f/4-5.6 IS STM', #PH 4159 => 'Canon EF-M 32mm f/1.4 STM', #42 4160 => 'Canon EF-S 35mm f/2.8 Macro IS STM', #42 - 4208 => 'Sigma 56mm f/1.4 DC DN | C', #forum10603 + 4208 => 'Sigma 56mm f/1.4 DC DN | C or other Sigma Lens', #forum10603 + 4208.1 => 'Sigma 30mm F1.4 DC DN | C', #git issue#83 (016) # (Nano USM lenses - 0x90xx) 36910 => 'Canon EF 70-300mm f/4-5.6 IS II USM', #42 36912 => 'Canon EF-S 18-135mm f/3.5-5.6 IS USM', #42 @@ -563,14 +570,36 @@ 61494 => 'Canon CN-E 85mm T1.3 L F', #PH 61495 => 'Canon CN-E 135mm T2.2 L F', #PH 61496 => 'Canon CN-E 35mm T1.5 L F', #PH - 61182 => 'Canon RF 35mm F1.8 Macro IS STM or other Canon RF Lens', #IB - 61182.1 => 'Canon RF 50mm F1.2 L USM', #IB - 61182.2 => 'Canon RF 24-105mm F4 L IS USM', #IB - 61182.3 => 'Canon RF 28-70mm F2 L USM', #IB - 61182.4 => 'Canon RF 85mm F1.2L USM', #IB - 61182.5 => 'Canon RF 24-240mm F4-6.3 IS USM', #IB - 61182.6 => 'Canon RF 24-70mm F2.8 L IS USM', #PH - 61182.7 => 'Canon RF 15-35mm F2.8 L IS USM', #PH + # see RFLensType tag for master list of 61182 RF lenses + 61182 => 'Canon RF 50mm F1.2L USM or other Canon RF Lens', + 61182.1 => 'Canon RF 24-105mm F4L IS USM', + 61182.2 => 'Canon RF 28-70mm F2L USM', + 61182.3 => 'Canon RF 35mm F1.8 MACRO IS STM', + 61182.4 => 'Canon RF 85mm F1.2L USM', + 61182.5 => 'Canon RF 85mm F1.2L USM DS', + 61182.6 => 'Canon RF 24-70mm F2.8L IS USM', + 61182.7 => 'Canon RF 15-35mm F2.8L IS USM', + 61182.8 => 'Canon RF 24-240mm F4-6.3 IS USM', + 61182.9 => 'Canon RF 70-200mm F2.8L IS USM', + '61182.10' => 'Canon RF 85mm F2 MACRO IS STM', + '61182.11' => 'Canon RF 600mm F11 IS STM', + '61182.12' => 'Canon RF 600mm F11 IS STM + RF1.4x', + '61182.13' => 'Canon RF 600mm F11 IS STM + RF2x', + '61182.14' => 'Canon RF 800mm F11 IS STM', + '61182.15' => 'Canon RF 800mm F11 IS STM + RF1.4x', + '61182.16' => 'Canon RF 800mm F11 IS STM + RF2x', + '61182.17' => 'Canon RF 24-105mm F4-7.1 IS STM', + '61182.18' => 'Canon RF 100-500mm F4.5-7.1L IS USM', + '61182.19' => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x', + '61182.20' => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF2x', + '61182.21' => 'Canon RF 70-200mm F4L IS USM', #42 + '61182.22' => 'Canon RF 50mm F1.8 STM', #42 + '61182.23' => 'Canon RF 14-35mm F4L IS USM', #IB + '61182.24' => 'Canon RF 100-400mm F5.6-8 IS USM', #42 + '61182.25' => 'Canon RF 100-400mm F5.6-8 IS USM + RF1.4x', #42 (NC) + '61182.26' => 'Canon RF 100-400mm F5.6-8 IS USM + RF2x', #42 (NC) + '61182.27' => 'Canon RF 16mm F2.8 STM', #42 + #'61182.xx' => 'Canon RF 100mm F2.8L MACRO IS USM', 65535 => 'n/a', ); @@ -916,13 +945,19 @@ 0x80000406 => 'EOS 6D Mark II', #IB/42 0x80000408 => 'EOS 77D / 9000D', 0x80000417 => 'EOS Rebel SL2 / 200D / Kiss X9', #IB/42 + 0x80000421 => 'EOS R5', #PH 0x80000422 => 'EOS Rebel T100 / 4000D / 3000D', #IB (3000D in China; Kiss? - PH) 0x80000424 => 'EOS R', #IB 0x80000428 => 'EOS-1D X Mark III', #IB 0x80000432 => 'EOS Rebel T7 / 2000D / 1500D / Kiss X90', #IB 0x80000433 => 'EOS RP', + 0x80000435 => 'EOS Rebel T8i / 850D / X10i', #JR/PH 0x80000436 => 'EOS SL3 / 250D / Kiss X10', #25 0x80000437 => 'EOS 90D', #IB + 0x80000450 => 'EOS R3', #42 + 0x80000453 => 'EOS R6', #PH + 0x80000467 => 'PowerShot ZOOM', + 0x80000468 => 'EOS M50 Mark II / Kiss M2', #IB 0x80000520 => 'EOS D2000C', #IB 0x80000560 => 'EOS D6000C', #PH (guess) ); @@ -935,8 +970,8 @@ 4 => 'RAW', 5 => 'Superfine', 7 => 'CRAW', #42 - 130 => 'Normal Movie', #22 - 131 => 'Movie (2)', #PH (7DmkII 1920x1080) + 130 => 'Light (RAW)', #github#119 + 131 => 'Standard (RAW)', #github#119 ); my %canonImageSize = ( -1 => 'n/a', @@ -1796,6 +1831,7 @@ PrintConv => { 1 => 'sRGB', 2 => 'Adobe RGB', + 65535 => 'n/a', }, }, 0xb6 => { @@ -1878,6 +1914,16 @@ Name => 'ColorData9', SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData9' }, }, + { # (int16u[2024|3656]) - 1DXmkIII (2024) ref IB, R5/R6 (3656) ref PH + Condition => '$count == 2024 or $count == 3656', + Name => 'ColorData10', + SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData10' }, + }, + { # (int16u[3973]) - R3 ref IB + Condition => '$count == 3973', + Name => 'ColorData11', + SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData11' }, + }, { Name => 'ColorDataUnknown', SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorDataUnknown' }, @@ -2007,6 +2053,13 @@ TagTable => 'Image::ExifTool::Canon::HDRInfo', } }, + 0x4026 => { #github#119 + Name => 'LogInfo', + SubDirectory => { + Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)', + TagTable => 'Image::ExifTool::Canon::LogInfo', + } + }, 0x4028 => { #PH Name => 'AFConfig', # (AFTabInfo) SubDirectory => { @@ -2059,7 +2112,7 @@ 4 => { Name => 'CanonFlashMode', PrintConv => { - -1 => "n/a", # (PH, EOS M MOV video) + -1 => 'n/a', # (PH, EOS M MOV video) 0 => 'Off', 1 => 'Auto', 2 => 'On', @@ -2100,6 +2153,7 @@ 16 => 'Pan Focus', #PH # 137 - Single? 256 => 'AF + MF', #PH (NC, EOS M) + 257 => 'Live View', #forum12082 512 => 'Movie Snap Focus', #48 519 => 'Movie Servo AF', #PH (NC, EOS M) }, @@ -2120,6 +2174,8 @@ 11 => 'CRM', #PH (C200 CRM) 12 => 'CR3', #PH (EOS R) 13 => 'CR3+JPEG', #PH (EOS R) + 14 => 'HIF', #PH (NC) + 15 => 'CR3+HIF', #PH (1DXmkIII) }, }, 10 => { @@ -4508,6 +4564,16 @@ 2 => 'Rotate 270 CW', }, }, + 0x3a => { #IB + Name => 'CameraOrientation', + Condition => '$$self{Model} =~ /\b(1200D|REBEL T5|Kiss X70)\b/', + Notes => '1200D only', + PrintConv => { + 0 => 'Horizontal (normal)', + 1 => 'Rotate 90 CW', + 2 => 'Rotate 270 CW', + }, + }, 0x55 => { Name => 'FocusDistanceUpper', Condition => '$$self{Model} =~ /EOS 60D$/', @@ -4648,7 +4714,7 @@ FIRST_ENTRY => 0, PRIORITY => 0, GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' }, - NOTES => 'CameraInfo tags for the EOS 70D.', + NOTES => 'CameraInfo tags for the EOS 80D.', 0x03 => { %ciFNumber }, 0x04 => { %ciExposureTime }, 0x06 => { %ciISO }, @@ -5224,6 +5290,14 @@ 0x06 => { %ciISO }, 0x1b => { %ciCameraTemperature }, # (700D + 0) 0x23 => { %ciFocalLength }, # (700D + 0) + 0x96 => { #IB (700D + 0x19) + Name => 'CameraOrientation', + PrintConv => { + 0 => 'Horizontal (normal)', + 1 => 'Rotate 90 CW', + 2 => 'Rotate 270 CW', + }, + }, 0xa5 => { # (700D + 0x19) Name => 'FocusDistanceUpper', %focusDistanceByteSwap, @@ -5655,6 +5729,13 @@ ValueConv => 'unpack("H*",$val)', ValueConvInv => 'length($val) < 10 and $val = 0 x (10-length($val)) . $val; pack("H*",$val)', }, + 0x5c1 => { + Name => 'FirmwareVersion', + Format => 'string[6]', + Writable => 0, + Condition => '$$valPt =~ /^\d\.\d\.\d\0/', + Notes => 'M50', # (firmware 1.0.0) + }, ); # Picture Style information for various cameras (ref 48) @@ -6667,11 +6748,58 @@ PrintConvInv => '$val =~ s/ ?m$//; IsFloat($val) ? $val : 655.35', }, # 22 - values: 0, 1 - # 23 - values: 0, 21, 22 + 23 => { #JohnMoyer (forum12925) + Name => 'ShutterMode', + PrintConv => { + 0 => 'Mechanical', + 1 => 'Electronic First Curtain', + 2 => 'Electronic', + # 3 => ? + # 21 => ? + # 22 => ? + }, + }, 25 => { #PH Name => 'FlashExposureLock', PrintConv => \%offOn, }, + 0x3d => { #IB + Name => 'RFLensType', + Format => 'int16u', + PrintConv => { + 0 => 'n/a', + 257 => 'Canon RF 50mm F1.2L USM', + 258 => 'Canon RF 24-105mm F4L IS USM', + 259 => 'Canon RF 28-70mm F2L USM', + 260 => 'Canon RF 35mm F1.8 MACRO IS STM', + 261 => 'Canon RF 85mm F1.2L USM', + 262 => 'Canon RF 85mm F1.2L USM DS', + 263 => 'Canon RF 24-70mm F2.8L IS USM', + 264 => 'Canon RF 15-35mm F2.8L IS USM', + 265 => 'Canon RF 24-240mm F4-6.3 IS USM', + 266 => 'Canon RF 70-200mm F2.8L IS USM', + 267 => 'Canon RF 85mm F2 MACRO IS STM', + 268 => 'Canon RF 600mm F11 IS STM', + 269 => 'Canon RF 600mm F11 IS STM + RF1.4x', + 270 => 'Canon RF 600mm F11 IS STM + RF2x', + 271 => 'Canon RF 800mm F11 IS STM', + 272 => 'Canon RF 800mm F11 IS STM + RF1.4x', + 273 => 'Canon RF 800mm F11 IS STM + RF2x', + 274 => 'Canon RF 24-105mm F4-7.1 IS STM', + 275 => 'Canon RF 100-500mm F4.5-7.1L IS USM', + 276 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x', + 277 => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF2x', + 278 => 'Canon RF 70-200mm F4L IS USM', #42 + 280 => 'Canon RF 50mm F1.8 STM', #42 + 281 => 'Canon RF 14-35mm F4L IS USM', #42/IB + 283 => 'Canon RF 100-400mm F5.6-8 IS USM', #42 + 284 => 'Canon RF 100-400mm F5.6-8 IS USM + RF1.4x', #42 (NC) + 285 => 'Canon RF 100-400mm F5.6-8 IS USM + RF2x', #42 (NC) + 288 => 'Canon RF 16mm F2.8 STM', #42 + #xxx => 'Canon RF 100mm F2.8L MACRO IS USM', + # Note: add new RF lenses to %canonLensTypes with ID 61182 + }, + }, ); # Internal serial number information (MakerNotes tag 0x96) (ref PH) @@ -7604,7 +7732,10 @@ # Color data (MakerNotes tag 0x4001, count=1312,1313,1316) (ref PH) %Image::ExifTool::Canon::ColorData7 = ( %binaryDataAttrs, - NOTES => 'These tags are used by the EOS 1DX, 5DmkIII, 6D, 100D, 650D, 700D, M and 7DmkII.', + NOTES => q{ + These tags are used by the EOS 1DX, 5DmkIII, 6D, 7DmkII, 100D, 650D, 700D, + 8000D, M and M2. + }, FORMAT => 'int16s', FIRST_ENTRY => 0, GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' }, @@ -7615,8 +7746,8 @@ DataMember => 'ColorDataVersion', RawConv => '$$self{ColorDataVersion} = $val', PrintConv => { - 10 => '10 (1DX/5DmkIII/6D/70D/100D/650D/700D/M)', - 11 => '11 (7DmkII/750D/760D)', + 10 => '10 (1DX/5DmkIII/6D/70D/100D/650D/700D/M/M2)', + 11 => '11 (7DmkII/750D/760D/8000D)', }, }, # not really sure about the AsShot, Auto and Measured values any more - PH @@ -7751,6 +7882,10 @@ # Color data (MakerNotes tag 0x4001, count=1560,etc) (ref IB) %Image::ExifTool::Canon::ColorData8 = ( %binaryDataAttrs, + NOTES => q{ + These tags are used by the EOS 1DXmkII, 5DS, 5DSR, 5DmkIV, 6DmkII, 77D, 80D, + 200D, 800D, 1300D, 2000D, 4000D and 9000D. + }, FORMAT => 'int16s', FIRST_ENTRY => 0, GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' }, @@ -7761,10 +7896,10 @@ DataMember => 'ColorDataVersion', RawConv => '$$self{ColorDataVersion} = $val', PrintConv => { - 12 => '12 (5DS/5DSR)', - 13 => '13 (80D)', #PH + 12 => '12 (1DXmkII/5DS/5DSR)', + 13 => '13 (80D/5DmkIV)', #PH 14 => '14 (1300D/2000D/4000D)', #IB - 15 => '15 (6DmkII/77D/200D/800D)', #IB + 15 => '15 (6DmkII/77D/200D/800D,9000D)', #IB }, }, 0x3f => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' }, @@ -7911,6 +8046,7 @@ # Color data (MakerNotes tag 0x4001, count=1820,etc) (ref PH) %Image::ExifTool::Canon::ColorData9 = ( %binaryDataAttrs, + NOTES => 'These tags are used by the M6mkII, M50, M200, EOS R, RP, 90D, 250D and 850D', FORMAT => 'int16s', FIRST_ENTRY => 0, GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' }, @@ -7923,8 +8059,8 @@ PrintConv => { 16 => '16 (M50)', 17 => '17 (EOS R)', # (and PowerShot SX740HS) - 18 => '18 (EOS RP)', # (and PowerShot SX70HS) - 19 => '19 (90D/M6mkII/M200)',# (and PowerShot G7XmkIII) + 18 => '18 (EOS RP/250D)', # (and PowerShot SX70HS) + 19 => '19 (90D/850D/M6mkII/M200)',# (and PowerShot G7XmkIII) }, }, 0x47 => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' }, @@ -8014,7 +8150,6 @@ 0x149 => { #IB Name => 'PerChannelBlackLevel', Format => 'int16u[4]', - Notes => '1300D', }, # 0x318 - PerChannelBlackLevel again (ref IB) 0x31c => { #IB @@ -8032,6 +8167,248 @@ }, ); +# Color data (MakerNotes tag 0x4001, count=2024,3656) +# (same as ColorData9 but shifted up by 0x0e, ref PH) +%Image::ExifTool::Canon::ColorData10 = ( + %binaryDataAttrs, + NOTES => 'These tags are used by the R5, R5 and EOS 1DXmkIII.', + FORMAT => 'int16s', + FIRST_ENTRY => 0, + GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' }, + DATAMEMBER => [ 0 ], + IS_SUBDIR => [ 0x118 ], + 0x00 => { + Name => 'ColorDataVersion', + DataMember => 'ColorDataVersion', + RawConv => '$$self{ColorDataVersion} = $val', + PrintConv => { + 32 => '32 (1DXmkIII)', #IB + 33 => '33 (R5/R6)', + }, + }, + 0x55 => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' }, + 0x59 => 'ColorTempAsShot', + 0x5a => { Name => 'WB_RGGBLevelsAuto', Format => 'int16s[4]' }, + 0x5e => 'ColorTempAuto', + 0x5f => { Name => 'WB_RGGBLevelsMeasured', Format => 'int16s[4]' }, + 0x63 => 'ColorTempMeasured', + 0x64 => { Name => 'WB_RGGBLevelsUnknown', Format => 'int16s[4]', Unknown => 1 }, + 0x68 => { Name => 'ColorTempUnknown', Unknown => 1 }, + 0x69 => { Name => 'WB_RGGBLevelsUnknown2', Format => 'int16s[4]', Unknown => 1 }, + 0x6d => { Name => 'ColorTempUnknown2', Unknown => 1 }, + 0x6e => { Name => 'WB_RGGBLevelsUnknown3', Format => 'int16s[4]', Unknown => 1 }, + 0x72 => { Name => 'ColorTempUnknown3', Unknown => 1 }, + 0x73 => { Name => 'WB_RGGBLevelsUnknown4', Format => 'int16s[4]', Unknown => 1 }, + 0x77 => { Name => 'ColorTempUnknown4', Unknown => 1 }, + 0x78 => { Name => 'WB_RGGBLevelsUnknown5', Format => 'int16s[4]', Unknown => 1 }, + 0x7c => { Name => 'ColorTempUnknown5', Unknown => 1 }, + 0x7d => { Name => 'WB_RGGBLevelsUnknown6', Format => 'int16s[4]', Unknown => 1 }, + 0x81 => { Name => 'ColorTempUnknown6', Unknown => 1 }, + 0x82 => { Name => 'WB_RGGBLevelsUnknown7', Format => 'int16s[4]', Unknown => 1 }, + 0x86 => { Name => 'ColorTempUnknown7', Unknown => 1 }, + 0x87 => { Name => 'WB_RGGBLevelsUnknown8', Format => 'int16s[4]', Unknown => 1 }, + 0x8b => { Name => 'ColorTempUnknown8', Unknown => 1 }, + 0x8c => { Name => 'WB_RGGBLevelsUnknown9', Format => 'int16s[4]', Unknown => 1 }, + 0x90 => { Name => 'ColorTempUnknown9', Unknown => 1 }, + 0x91 => { Name => 'WB_RGGBLevelsUnknown10', Format => 'int16s[4]', Unknown => 1 }, + 0x95 => { Name => 'ColorTempUnknown10', Unknown => 1 }, + 0x96 => { Name => 'WB_RGGBLevelsDaylight', Format => 'int16s[4]' }, + 0x9a => 'ColorTempDaylight', + 0x9b => { Name => 'WB_RGGBLevelsShade', Format => 'int16s[4]' }, + 0x9f => 'ColorTempShade', + 0xa0 => { Name => 'WB_RGGBLevelsCloudy', Format => 'int16s[4]' }, + 0xa4 => 'ColorTempCloudy', + 0xa5 => { Name => 'WB_RGGBLevelsTungsten', Format => 'int16s[4]' }, + 0xa9 => 'ColorTempTungsten', + 0xaa => { Name => 'WB_RGGBLevelsFluorescent',Format => 'int16s[4]' }, + 0xae => 'ColorTempFluorescent', + 0xaf => { Name => 'WB_RGGBLevelsKelvin', Format => 'int16s[4]' }, + 0xb3 => 'ColorTempKelvin', + 0xb4 => { Name => 'WB_RGGBLevelsFlash', Format => 'int16s[4]' }, + 0xb8 => 'ColorTempFlash', + 0xb9 => { Name => 'WB_RGGBLevelsUnknown11', Format => 'int16s[4]', Unknown => 1 }, + 0xbd => { Name => 'ColorTempUnknown11', Unknown => 1 }, + 0xbe => { Name => 'WB_RGGBLevelsUnknown12', Format => 'int16s[4]', Unknown => 1 }, + 0xc2 => { Name => 'ColorTempUnknown12', Unknown => 1 }, + 0xc3 => { Name => 'WB_RGGBLevelsUnknown13', Format => 'int16s[4]', Unknown => 1 }, + 0xc7 => { Name => 'ColorTempUnknown13', Unknown => 1 }, + 0xc8 => { Name => 'WB_RGGBLevelsUnknown14', Format => 'int16s[4]', Unknown => 1 }, + 0xcc => { Name => 'ColorTempUnknown14', Unknown => 1 }, + 0xcd => { Name => 'WB_RGGBLevelsUnknown15', Format => 'int16s[4]', Unknown => 1 }, + 0xd1 => { Name => 'ColorTempUnknown15', Unknown => 1 }, + 0xd2 => { Name => 'WB_RGGBLevelsUnknown16', Format => 'int16s[4]', Unknown => 1 }, + 0xd6 => { Name => 'ColorTempUnknown16', Unknown => 1 }, + 0xd7 => { Name => 'WB_RGGBLevelsUnknown17', Format => 'int16s[4]', Unknown => 1 }, + 0xdb => { Name => 'ColorTempUnknown17', Unknown => 1 }, + 0xdc => { Name => 'WB_RGGBLevelsUnknown18', Format => 'int16s[4]', Unknown => 1 }, + 0xe0 => { Name => 'ColorTempUnknown18', Unknown => 1 }, + 0xe1 => { Name => 'WB_RGGBLevelsUnknown19', Format => 'int16s[4]', Unknown => 1 }, + 0xe5 => { Name => 'ColorTempUnknown19', Unknown => 1 }, + 0xe6 => { Name => 'WB_RGGBLevelsUnknown20', Format => 'int16s[4]', Unknown => 1 }, + 0xea => { Name => 'ColorTempUnknown20', Unknown => 1 }, + 0xeb => { Name => 'WB_RGGBLevelsUnknown21', Format => 'int16s[4]', Unknown => 1 }, + 0xef => { Name => 'ColorTempUnknown21', Unknown => 1 }, + 0xf0 => { Name => 'WB_RGGBLevelsUnknown22', Format => 'int16s[4]', Unknown => 1 }, + 0xf4 => { Name => 'ColorTempUnknown22', Unknown => 1 }, + 0xf5 => { Name => 'WB_RGGBLevelsUnknown23', Format => 'int16s[4]', Unknown => 1 }, + 0xf9 => { Name => 'ColorTempUnknown23', Unknown => 1 }, + 0xfa => { Name => 'WB_RGGBLevelsUnknown24', Format => 'int16s[4]', Unknown => 1 }, + 0xfe => { Name => 'ColorTempUnknown24', Unknown => 1 }, + 0xff => { Name => 'WB_RGGBLevelsUnknown25', Format => 'int16s[4]', Unknown => 1 }, + 0x103=> { Name => 'ColorTempUnknown25', Unknown => 1 }, + 0x104=> { Name => 'WB_RGGBLevelsUnknown26', Format => 'int16s[4]', Unknown => 1 }, + 0x108=> { Name => 'ColorTempUnknown26', Unknown => 1 }, + 0x109=> { Name => 'WB_RGGBLevelsUnknown27', Format => 'int16s[4]', Unknown => 1 }, + 0x10d=> { Name => 'ColorTempUnknown27', Unknown => 1 }, + 0x10e=> { Name => 'WB_RGGBLevelsUnknown28', Format => 'int16s[4]', Unknown => 1 }, + 0x112=> { Name => 'ColorTempUnknown28', Unknown => 1 }, + 0x113=> { Name => 'WB_RGGBLevelsUnknown29', Format => 'int16s[4]', Unknown => 1 }, + 0x117=> { Name => 'ColorTempUnknown29', Unknown => 1 }, + 0x118 => { + Name => 'ColorCalib', + Format => 'undef[120]', + Unknown => 1, + SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorCalib' } + }, + 0x157 => { + Name => 'PerChannelBlackLevel', + Format => 'int16u[4]', + }, + # 0x326 - PerChannelBlackLevel again + 0x32a => { + Name => 'NormalWhiteLevel', + Format => 'int16u', + RawConv => '$val || undef', + }, + 0x32b => { + Name => 'SpecularWhiteLevel', + Format => 'int16u', + }, + 0x32c => { + Name => 'LinearityUpperMargin', + Format => 'int16u', + }, +); + +# Color data (MakerNotes tag 0x4001, count=3973, ref IB) +%Image::ExifTool::Canon::ColorData11 = ( + %binaryDataAttrs, + NOTES => 'These tags are used by the EOS R3', + FORMAT => 'int16s', + FIRST_ENTRY => 0, + GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' }, + DATAMEMBER => [ 0 ], + IS_SUBDIR => [ 0x12c ], + 0x00 => { + Name => 'ColorDataVersion', + DataMember => 'ColorDataVersion', + RawConv => '$$self{ColorDataVersion} = $val', + PrintConv => { + 34 => '34 (R3)', #IB + }, + }, + 0x69 => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' }, + 0x6d => 'ColorTempAsShot', + 0x6e => { Name => 'WB_RGGBLevelsAuto', Format => 'int16s[4]' }, + 0x72 => 'ColorTempAuto', + 0x73 => { Name => 'WB_RGGBLevelsMeasured', Format => 'int16s[4]' }, + 0x77 => 'ColorTempMeasured', + 0x78 => { Name => 'WB_RGGBLevelsUnknown', Format => 'int16s[4]', Unknown => 1 }, + 0x7c => { Name => 'ColorTempUnknown', Unknown => 1 }, + 0x7d => { Name => 'WB_RGGBLevelsUnknown2', Format => 'int16s[4]', Unknown => 1 }, + 0x81 => { Name => 'ColorTempUnknown2', Unknown => 1 }, + 0x82 => { Name => 'WB_RGGBLevelsUnknown3', Format => 'int16s[4]', Unknown => 1 }, + 0x86 => { Name => 'ColorTempUnknown3', Unknown => 1 }, + 0x87 => { Name => 'WB_RGGBLevelsUnknown4', Format => 'int16s[4]', Unknown => 1 }, + 0x8b => { Name => 'ColorTempUnknown4', Unknown => 1 }, + 0x8c => { Name => 'WB_RGGBLevelsUnknown5', Format => 'int16s[4]', Unknown => 1 }, + 0x90 => { Name => 'ColorTempUnknown5', Unknown => 1 }, + 0x91 => { Name => 'WB_RGGBLevelsUnknown6', Format => 'int16s[4]', Unknown => 1 }, + 0x95 => { Name => 'ColorTempUnknown6', Unknown => 1 }, + 0x96 => { Name => 'WB_RGGBLevelsUnknown7', Format => 'int16s[4]', Unknown => 1 }, + 0x9a => { Name => 'ColorTempUnknown7', Unknown => 1 }, + 0x9b => { Name => 'WB_RGGBLevelsUnknown8', Format => 'int16s[4]', Unknown => 1 }, + 0x9f => { Name => 'ColorTempUnknown8', Unknown => 1 }, + 0xa0 => { Name => 'WB_RGGBLevelsUnknown9', Format => 'int16s[4]', Unknown => 1 }, + 0xa4 => { Name => 'ColorTempUnknown9', Unknown => 1 }, + 0xa5 => { Name => 'WB_RGGBLevelsUnknown10', Format => 'int16s[4]', Unknown => 1 }, + 0xa9 => { Name => 'ColorTempUnknown10', Unknown => 1 }, + 0xaa => { Name => 'WB_RGGBLevelsUnknown11', Format => 'int16s[4]', Unknown => 1 }, + 0xae => { Name => 'ColorTempUnknown11', Unknown => 1 }, + 0xaf => { Name => 'WB_RGGBLevelsUnknown11', Format => 'int16s[4]', Unknown => 1 }, + 0xb3 => { Name => 'ColorTempUnknown11', Unknown => 1 }, + 0xb4 => { Name => 'WB_RGGBLevelsUnknown12', Format => 'int16s[4]', Unknown => 1 }, + 0xb8 => { Name => 'ColorTempUnknown12', Unknown => 1 }, + 0xb9 => { Name => 'WB_RGGBLevelsUnknown13', Format => 'int16s[4]', Unknown => 1 }, + 0xbd => { Name => 'ColorTempUnknown13', Unknown => 1 }, + 0xbe => { Name => 'WB_RGGBLevelsUnknown14', Format => 'int16s[4]', Unknown => 1 }, + 0xc2 => { Name => 'ColorTempUnknown14', Unknown => 1 }, + 0xc3 => { Name => 'WB_RGGBLevelsUnknown15', Format => 'int16s[4]', Unknown => 1 }, + 0xc7 => { Name => 'ColorTempUnknown15', Unknown => 1 }, + 0xc8 => { Name => 'WB_RGGBLevelsUnknown16', Format => 'int16s[4]', Unknown => 1 }, + 0xcc => { Name => 'ColorTempUnknown16', Unknown => 1 }, + 0xcd => { Name => 'WB_RGGBLevelsDaylight', Format => 'int16s[4]' }, + 0xd1 => 'ColorTempDaylight', + 0xd2 => { Name => 'WB_RGGBLevelsShade', Format => 'int16s[4]' }, + 0xd6 => 'ColorTempShade', + 0xd7 => { Name => 'WB_RGGBLevelsCloudy', Format => 'int16s[4]' }, + 0xdb => 'ColorTempCloudy', + 0xdc => { Name => 'WB_RGGBLevelsTungsten', Format => 'int16s[4]' }, + 0xe0 => 'ColorTempTungsten', + 0xe1 => { Name => 'WB_RGGBLevelsFluorescent',Format => 'int16s[4]' }, + 0xe5 => 'ColorTempFluorescent', + 0xe6 => { Name => 'WB_RGGBLevelsKelvin', Format => 'int16s[4]' }, + 0xea => 'ColorTempKelvin', + 0xeb => { Name => 'WB_RGGBLevelsFlash', Format => 'int16s[4]' }, + 0xef => 'ColorTempFlash', + 0xf0 => { Name => 'WB_RGGBLevelsUnknown17', Format => 'int16s[4]', Unknown => 1 }, + 0xf4 => { Name => 'ColorTempUnknown17', Unknown => 1 }, + 0xf5 => { Name => 'WB_RGGBLevelsUnknown18', Format => 'int16s[4]', Unknown => 1 }, + 0xf9 => { Name => 'ColorTempUnknown18', Unknown => 1 }, + 0xfa => { Name => 'WB_RGGBLevelsUnknown19', Format => 'int16s[4]', Unknown => 1 }, + 0xfe => { Name => 'ColorTempUnknown19', Unknown => 1 }, + 0xff => { Name => 'WB_RGGBLevelsUnknown20', Format => 'int16s[4]', Unknown => 1 }, + 0x103 => { Name => 'ColorTempUnknown20', Unknown => 1 }, + 0x104 => { Name => 'WB_RGGBLevelsUnknown21', Format => 'int16s[4]', Unknown => 1 }, + 0x108 => { Name => 'ColorTempUnknown21', Unknown => 1 }, + 0x109 => { Name => 'WB_RGGBLevelsUnknown22', Format => 'int16s[4]', Unknown => 1 }, + 0x10d => { Name => 'ColorTempUnknown22', Unknown => 1 }, + 0x10e => { Name => 'WB_RGGBLevelsUnknown23', Format => 'int16s[4]', Unknown => 1 }, + 0x112 => { Name => 'ColorTempUnknown23', Unknown => 1 }, + 0x113 => { Name => 'WB_RGGBLevelsUnknown24', Format => 'int16s[4]', Unknown => 1 }, + 0x117 => { Name => 'ColorTempUnknown24', Unknown => 1 }, + 0x118 => { Name => 'WB_RGGBLevelsUnknown25', Format => 'int16s[4]', Unknown => 1 }, + 0x11c => { Name => 'ColorTempUnknown25', Unknown => 1 }, + 0x11d => { Name => 'WB_RGGBLevelsUnknown26', Format => 'int16s[4]', Unknown => 1 }, + 0x121 => { Name => 'ColorTempUnknown26', Unknown => 1 }, + 0x122 => { Name => 'WB_RGGBLevelsUnknown27', Format => 'int16s[4]', Unknown => 1 }, + 0x126 => { Name => 'ColorTempUnknown27', Unknown => 1 }, + 0x12c => { + Name => 'ColorCalib', + Format => 'undef[120]', + Unknown => 1, + SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorCalib' } + }, + 0x16b => { + Name => 'PerChannelBlackLevel', + Format => 'int16u[4]', + }, + # 0x27c - PerChannelBlackLevel again + 0x280 => { + Name => 'NormalWhiteLevel', + Format => 'int16u', + RawConv => '$val || undef', + }, + 0x281 => { + Name => 'SpecularWhiteLevel', + Format => 'int16u', + }, + 0x282 => { + Name => 'LinearityUpperMargin', + Format => 'int16u', + }, +); + # Unknown color data (MakerNotes tag 0x4001) %Image::ExifTool::Canon::ColorDataUnknown = ( PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData, @@ -8331,6 +8708,65 @@ # 3 - maybe related to AutoImageAlign? ); +# More color information (MakerNotes tag 0x4026) (ref github issue #119) +%Image::ExifTool::Canon::LogInfo = ( + %binaryDataAttrs, + FORMAT => 'int32s', + FIRST_ENTRY => 1, + PRIORITY => 0, + 4 => { + Name => 'CompressionFormat', + PrintConv => { + 0 => 'Editing (ALL-I)', + 1 => 'Standard (IPB)', + 2 => 'Light (IPB)', + 3 => 'Motion JPEG', + 4 => 'RAW', # either Standard or Light, depending on Quality + }, + }, + 6 => { # 0 to 7 + Name => 'Sharpness', + RawConv => '$val == 0x7fffffff ? undef : $val', + }, + 7 => { # -4 to 4 + Name => 'Saturation', + RawConv => '$val == 0x7fffffff ? undef : $val', + %Image::ExifTool::Exif::printParameter, + }, + 8 => { # -4 to 4 + Name => 'ColorTone', + RawConv => '$val == 0x7fffffff ? undef : $val', + %Image::ExifTool::Exif::printParameter, + }, + 9 => { + Name => 'ColorSpace2', + RawConv => '$val == 0x7fffffff ? undef : $val', + PrintConv => { + 0 => 'BT.709', + 1 => 'BT.2020', + 2 => 'CinemaGamut', + }, + }, + 10 => { + Name => 'ColorMatrix', + RawConv => '$val == 0x7fffffff ? undef : $val', + PrintConv => { + 0 => 'EOS Original', + 1 => 'Neutral', + }, + }, + 11 => { + Name => 'CanonLogVersion', # (increases dynamic range of sensor data) + RawConv => '$val == 0x7fffffff ? undef : $val', + PrintConv => { + 0 => 'OFF', + 1 => 'CLogV1', + 2 => 'CLogV2', # (NC) + 3 => 'CLogV3', + }, + }, +); + # AF configuration info (MakerNotes tag 0x4028) (ref PH) %Image::ExifTool::Canon::AFConfig = ( %binaryDataAttrs, @@ -8522,6 +8958,7 @@ # --> ignored when reading, but offsets are updated when writing CMT1 => { # (CR3 files) Name => 'IFD0', + PreservePadding => 1, SubDirectory => { TagTable => 'Image::ExifTool::Exif::Main', ProcessProc => \&Image::ExifTool::ProcessTIFF, @@ -8530,6 +8967,7 @@ }, CMT2 => { # (CR3 files) Name => 'ExifIFD', + PreservePadding => 1, SubDirectory => { TagTable => 'Image::ExifTool::Exif::Main', ProcessProc => \&Image::ExifTool::ProcessTIFF, @@ -8538,14 +8976,16 @@ }, CMT3 => { # (CR3 files) Name => 'MakerNoteCanon', + PreservePadding => 1, SubDirectory => { TagTable => 'Image::ExifTool::Canon::Main', - ProcessProc => \&Image::ExifTool::ProcessTIFF, + ProcessProc => \&ProcessCMT3, WriteProc => \&Image::ExifTool::WriteTIFF, }, }, CMT4 => { # (CR3 files) Name => 'GPSInfo', + PreservePadding => 1, SubDirectory => { TagTable => 'Image::ExifTool::GPS::Main', ProcessProc => \&Image::ExifTool::ProcessTIFF, @@ -8556,6 +8996,7 @@ THMB => { Name => 'ThumbnailImage', Groups => { 2 => 'Preview' }, + PreservePadding => 1, RawConv => 'substr($val, 16)', Binary => 1, }, @@ -8570,6 +9011,7 @@ WRITE_PROC => 'Image::ExifTool::QuickTime::WriteQuickTime', CNOP => { Name => 'CanonVRD', + PreservePadding => 1, SubDirectory => { TagTable => 'Image::ExifTool::CanonVRD::Main', WriteProc => 'Image::ExifTool::CanonVRD::WriteCanonDR4', @@ -9041,8 +9483,9 @@ push @likely, $tclens; if ($maxAperture) { # (not 100% sure that TC affects MaxAperture, but it should!) - next if $maxAperture < $sa * $tc - 0.15; - next if $maxAperture > $la * $tc + 0.15; + # (RF 24-105mm F4L IS USM shows a MaxAperture of 4.177) + next if $maxAperture < $sa * $tc - 0.18; + next if $maxAperture > $la * $tc + 0.18; } push @matches, $tclens; } @@ -9487,6 +9930,33 @@ } #------------------------------------------------------------------------------ +# Read CMT3 maker notes from CR3 file +# Inputs: 0) ExifTool object reference, 1) dirInfo ref, 2) tag table ref +# Returns: data block (may be empty if no Exif data) or undef on error +sub ProcessCMT3($$$) +{ + my ($et, $dirInfo, $tagTablePtr) = @_; + + # extract the static maker notes to copying to other file types if requested + # Note: this won't copy makernotes in the timed metadata since these are stored + # separately, but the only records they have that aren't in the static maker notes + # (for the M50) are: ColorData9, Flavor, CanonCameraInfoUnknown, + # VignettingCorrUnknown1, Canon_0x4033 and Canon_0x402e + if (($et->Options('MakerNotes') or $$et{REQ_TAG_LOOKUP}{makernotecanon}) and + $$dirInfo{DirLen} > 8) + { + my $dataPt = $$dirInfo{DataPt}; + # remove old (unused) trailer + $$dataPt =~ s/(II\x2a\0|MM\0\x2a)\0{4,10}$//; + # remove TIFF header and append as the Canon makernote trailer + # (so offsets will be interpreted correctly) + my $val = substr($$dataPt,8) . substr($$dataPt,0,8); + $et->FoundTag($Image::ExifTool::Canon::uuid{CMT3}, \$val); + } + return $et->ProcessTIFF($dirInfo, $tagTablePtr); +} + +#------------------------------------------------------------------------------ # Process CTMD EXIF information # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref # Returns: 1 on success @@ -9660,7 +10130,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/CanonRaw.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/CanonRaw.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/CanonRaw.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/CanonRaw.pm 2022-01-12 22:51:54.000000000 +0000 @@ -877,7 +877,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/CanonVRD.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/CanonVRD.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/CanonVRD.pm 2020-02-14 12:32:24.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/CanonVRD.pm 2022-01-12 22:51:54.000000000 +0000 @@ -2264,7 +2264,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/CaptureOne.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/CaptureOne.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/CaptureOne.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/CaptureOne.pm 2022-01-12 22:51:54.000000000 +0000 @@ -221,7 +221,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Casio.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Casio.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Casio.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Casio.pm 2022-01-12 22:51:54.000000000 +0000 @@ -2034,7 +2034,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/CBOR.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/CBOR.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/CBOR.pm 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/CBOR.pm 2022-01-12 22:51:54.000000000 +0000 @@ -0,0 +1,331 @@ +#------------------------------------------------------------------------------ +# File: CBOR.pm +# +# Description: Read CBOR format metadata +# +# Revisions: 2021-09-30 - P. Harvey Created +# +# References: 1) https://c2pa.org/public-draft/ +# 2) https://datatracker.ietf.org/doc/html/rfc7049 +#------------------------------------------------------------------------------ + +package Image::ExifTool::CBOR; +use strict; +use vars qw($VERSION); +use Image::ExifTool qw(:DataAccess :Utils); +use Image::ExifTool::JSON; + +$VERSION = '1.01'; + +sub ProcessCBOR($$$); +sub ReadCBORValue($$$$); + +# optional CBOR type code +my %cborType6 = ( + 0 => 'date/time string', + 1 => 'epoch-based date/time', + 2 => 'positive bignum', + 3 => 'negative bignum', + 4 => 'decimal fraction', + 5 => 'bigfloat', + 21 => 'expected base64url encoding', + 22 => 'expected base64 encoding', + 23 => 'expected base16 encoding', + 24 => 'encoded CBOR data', + 32 => 'URI', + 33 => 'base64url', + 34 => 'base64', + 35 => 'regular expression', + 36 => 'MIME message', + 55799 => 'CBOR magic number', +); + +my %cborType7 = ( + 20 => 'False', + 21 => 'True', + 22 => 'null', + 23 => 'undef', +); + +%Image::ExifTool::CBOR::Main = ( + GROUPS => { 0 => 'JUMBF', 1 => 'CBOR', 2 => 'Other' }, + VARS => { NO_ID => 1 }, + PROCESS_PROC => \&ProcessCBOR, + NOTES => q{ + The tags below are extracted from CBOR (Concise Binary Object + Representation) metadata. The C2PA specification uses this format for some + metadata. As well as these tags, ExifTool will read any existing tags. + }, + 'dc:title' => 'Title', + 'dc:format' => 'Format', + # my sample file has the following 2 tags in CBOR, but they should be JSON + authorName => { Name => 'AuthorName', Groups => { 2 => 'Author' } }, + authorIdentifier=> { Name => 'AuthorIdentifier', Groups => { 2 => 'Author' } }, + documentID => { }, + instanceID => { }, + thumbnailHash => { List => 1 }, + thumbnailUrl => { Name => 'ThumbnailURL' }, + relationship => { } +); + +#------------------------------------------------------------------------------ +# Read CBOR value +# Inputs: 0) ExifTool ref, 1) data ref, 2) position in data, 3) data end +# Returns: 0) value, 1) error string, 2) new data position +sub ReadCBORValue($$$$) +{ + my ($et, $dataPt, $pos, $end) = @_; + return(undef, 'Truncated CBOR data', $pos) if $pos >= $end; + my $verbose = $$et{OPTIONS}{Verbose}; + my $indent = $$et{INDENT}; + my $dumpStart = $pos; + my $fmt = Get8u($dataPt, $pos++); + my $dat = $fmt & 0x1f; + my ($num, $val, $err, $size); + $fmt >>= 5; + if ($dat < 24) { + $num = $dat; + } elsif ($dat == 31) { # indefinite count (not used in C2PA) + $num = -1; # (flag for indefinite count) + $et->VPrint(1, "$$et{INDENT} (indefinite count):\n"); + } else { + my $format = { 24 => 'int8u', 25 => 'int16u', 26 => 'int32u', 27 => 'int64u' }->{$dat}; + return(undef, "Invalid CBOR integer type $dat", $pos) unless $format; + $size = Image::ExifTool::FormatSize($format); + return(undef, 'Truncated CBOR integer value', $pos) if $pos + $size > $end; + $num = ReadValue($dataPt, $pos, $format, 1, $size); + $pos += $size; + } + my $pre = ''; + if (defined $$et{cbor_pre} and $fmt != 6) { + $pre = $$et{cbor_pre}; + delete $$et{cbor_pre}; + } + if ($fmt == 0) { # positive integer + $val = $num; + $et->VPrint(1, "$$et{INDENT} ${pre}int+: $val\n"); + } elsif ($fmt == 1) { # negative integer + $val = -1 * $num; + $et->VPrint(1, "$$et{INDENT} ${pre}int-: $val\n"); + } elsif ($fmt == 2 or $fmt == 3) { # byte/UTF8 string + return(undef, 'Truncated CBOR string value', $pos) if $pos + $num > $end; + if ($num < 0) { # (should not happen in C2PA) + my $string = ''; + $$et{INDENT} .= ' '; + for (;;) { + ($val, $err, $pos) = ReadCBORValue($et, $dataPt, $pos, $end); + return(undef, $err, $pos) if $err; + last if not defined $val; # hit the break? + # (note: strictly we should be checking that this was a string we read) + $string .= $val; + } + $$et{INDENT} = $indent; + return($string, undef, $pos); # return concatenated byte/text string + } else { + $val = substr($$dataPt, $pos, $num); + } + $pos += $num; + if ($fmt == 2) { # (byte string) + $et->VPrint(1, "$$et{INDENT} ${pre}byte: \n"); + my $dat = $val; + $val = \$dat; # use scalar reference for binary data + } else { # (text string) + $val = $et->Decode($val, 'UTF8'); + $et->VPrint(1, "$$et{INDENT} ${pre}text: '${val}'\n"); + } + } elsif ($fmt == 4 or $fmt == 5) { # list/hash + if ($fmt == 4) { + $et->VPrint(1, "$$et{INDENT} ${pre}list: <$num elements>\n"); + } else { + $et->VPrint(1, "$$et{INDENT} ${pre}hash: <$num pairs>\n"); + $num *= 2; + } + $$et{INDENT} .= ' '; + my $i = 0; + my @list; + Image::ExifTool::HexDump($dataPt, $pos - $dumpStart, + Start => $dumpStart, + DataPos => $$et{cbor_datapos}, + Prefix => $$et{INDENT}, + ) if $verbose > 2; + while ($num) { + $$et{cbor_pre} = "$i) "; + if ($fmt == 4) { + ++$i; + } elsif ($num & 0x01) { + $$et{cbor_pre} = ' ' x length($$et{cbor_pre}); + ++$i; + } + ($val, $err, $pos) = ReadCBORValue($et, $dataPt, $pos, $end); + return(undef, $err, $pos) if $err; + if (not defined $val) { + return(undef, 'Unexpected list terminator', $pos) unless $num < 0; + last; + } + push @list, $val; + --$num; + } + $dumpStart = $pos; + $$et{INDENT} = $indent; + if ($fmt == 5) { + my ($i, @keys); + my %hash = ( _ordered_keys_ => \@keys ); + for ($i=0; $i<@list-1; $i+=2) { + $hash{$list[$i]} = $list[$i+1]; + push @keys, $list[$i]; # save ordered list of keys + } + $val = \%hash; + } else { + $val = \@list; + } + } elsif ($fmt == 6) { # optional tag + if ($verbose) { + my $str = "$num (" . ($cborType6{$num} || 'unknown') . ')'; + my $spc = $$et{cbor_pre} ? (' ' x length $$et{cbor_pre}) : ''; + $et->VPrint(1, "$$et{INDENT} $spc\n"); + Image::ExifTool::HexDump($dataPt, $pos - $dumpStart, + Start => $dumpStart, + DataPos => $$et{cbor_datapos}, + Prefix => $$et{INDENT} . ' ', + ) if $verbose > 2; + } + # read next value (note: in the case of multiple tags, + # this nesting will apply the tags in the correct order) + ($val, $err, $pos) = ReadCBORValue($et, $dataPt, $pos, $end); + $dumpStart = $pos; + # convert some values according to the optional tag number (untested) + if ($num == 0 and not ref $val) { # date/time string + require Image::ExifTool::XMP; + $val = Image::ExifTool::XMP::ConvertXMPDate($val); + } elsif ($num == 1 and not ref $val) { # epoch-based date/time + if (Image::ExifTool::IsFloat($val)) { + my $dec = ($val == int($val)) ? undef : 6; + $val = Image::ExifTool::ConvertUnixTime($val, 1, $dec); + } + } elsif (($num == 2 or $num == 3) and ref($val) eq 'SCALAR') { # pos/neg bignum + my $big = 0; + $big = 256 * $big + Get8u($val,$_) foreach 0..(length($$val) - 1); + $val = $num==2 ? $big : -$big; + } elsif (($num == 4 or $num == 5) and # decimal fraction or bigfloat + ref($val) eq 'ARRAY' and @$val == 2 and + Image::ExifTool::IsInt($$val[0]) and Image::ExifTool::IsInt($$val[1])) + { + $val = $$val[1] * ($num == 4 ? 10 : 2) ** $$val[0]; + } + } elsif ($fmt == 7) { + if ($dat == 31) { + undef $val; # "break" = end of indefinite array/hash (not used in C2PA) + } elsif ($dat < 24) { + $val = $cborType7{$num}; + $val = "Unknown ($val)" unless defined $val; + } elsif ($dat == 25) { # half-precision float + my $exp = ($num >> 10) & 0x1f; + my $mant = $num & 0x3ff; + if ($exp == 0) { + $val = $mant ** -24; + $val *= -1 if $num & 0x8000; + } elsif (exp != 31) { + $val = ($mant + 1024) ** ($exp - 25); + $val *= -1 if $num & 0x8000; + } else { + $val = $mant == 0 ? '' : ''; + } + } elsif ($dat == 26) { # float + $val = GetFloat($dataPt, $pos - $size); + } elsif ($dat == 27) { # double + $val = GetDouble($dataPt, $pos - $size); + } else { + return(undef, "Invalid CBOR type 7 variant $num", $pos); + } + $et->VPrint(1, "$$et{INDENT} ${pre}typ7: ".(defined $val ? $val : '')."\n"); + } else { + return(undef, "Unknown CBOR format $fmt", $pos); + } + Image::ExifTool::HexDump($dataPt, $pos - $dumpStart, + Start => $dumpStart, + DataPos => $$et{cbor_datapos}, + Prefix => $$et{INDENT} . ' ', + MaxLen => $verbose < 5 ? ($verbose == 3 ? 96 : 2048) : undef, + ) if $verbose > 2; + return($val, $err, $pos); +} + +#------------------------------------------------------------------------------ +# Read CBOR box +# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref +# Returns: 1 on success +sub ProcessCBOR($$$) +{ + my ($et, $dirInfo, $tagTablePtr) = @_; + my $dataPt = $$dirInfo{DataPt}; + my $pos = $$dirInfo{DirStart}; + my $end = $pos + $$dirInfo{DirLen}; + my ($val, $err, $tag, $i); + + $et->VerboseDir('CBOR', undef, $$dirInfo{DirLen}); + + $$et{cbor_datapos} = $$dirInfo{DataPos} + $$dirInfo{Base}; + + while ($pos < $end) { + ($val, $err, $pos) = ReadCBORValue($et, $dataPt, $pos, $end); + $err and $et->Warn($err), last; + if (ref $val eq 'HASH') { + foreach $tag (@{$$val{_ordered_keys_}}) { + Image::ExifTool::JSON::ProcessTag($et, $tagTablePtr, $tag, $$val{$tag}); + } + } elsif (ref $val eq 'ARRAY') { + for ($i=0; $i<@$val; ++$i) { + Image::ExifTool::JSON::ProcessTag($et, $tagTablePtr, "Item$i", $$val[$i]); + } + } elsif ($val eq '0') { + $et->VPrint(1, "$$et{INDENT} \n"); + last; # (treat as padding) + } else { + $et->VPrint(1, "$$et{INDENT} Unknown value: $val\n"); + } + } + return 1; +} + +1; # end + +__END__ + +=head1 NAME + +Image::ExifTool::CBOR - Read CBOR format metadata + +=head1 SYNOPSIS + +This module is used by Image::ExifTool + +=head1 DESCRIPTION + +This module contains definitions required by Image::ExifTool read Concise +Binary Object Representation (CBOR) formatted metadata, used by the C2PA +specification. + +=head1 AUTHOR + +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) + +This library is free software; you can redistribute it and/or modify it +under the same terms as Perl itself. + +=head1 REFERENCES + +=over 4 + +=item L + +=item L + +=back + +=head1 SEE ALSO + +L, +L + +=cut + diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Charset/DOSCyrillic.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Charset/DOSCyrillic.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Charset/DOSCyrillic.pm 1970-01-01 00:00:00.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Charset/DOSCyrillic.pm 2020-03-23 14:40:12.000000000 +0000 @@ -0,0 +1,49 @@ +#------------------------------------------------------------------------------ +# File: DOSCyrillic.pm +# +# Description: cp866 to Unicode +# +# Revisions: 2020/03/23 - P. Harvey created +# +# References: 1) https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP866.TXT +# +# Notes: The table omits 1-byte characters with the same values as Unicode +#------------------------------------------------------------------------------ +use strict; + +%Image::ExifTool::Charset::DOSCyrillic = ( + 0x80 => 0x0410, 0x81 => 0x0411, 0x82 => 0x0412, 0x83 => 0x0413, + 0x84 => 0x0414, 0x85 => 0x0415, 0x86 => 0x0416, 0x87 => 0x0417, + 0x88 => 0x0418, 0x89 => 0x0419, 0x8a => 0x041a, 0x8b => 0x041b, + 0x8c => 0x041c, 0x8d => 0x041d, 0x8e => 0x041e, 0x8f => 0x041f, + 0x90 => 0x0420, 0x91 => 0x0421, 0x92 => 0x0422, 0x93 => 0x0423, + 0x94 => 0x0424, 0x95 => 0x0425, 0x96 => 0x0426, 0x97 => 0x0427, + 0x98 => 0x0428, 0x99 => 0x0429, 0x9a => 0x042a, 0x9b => 0x042b, + 0x9c => 0x042c, 0x9d => 0x042d, 0x9e => 0x042e, 0x9f => 0x042f, + 0xa0 => 0x0430, 0xa1 => 0x0431, 0xa2 => 0x0432, 0xa3 => 0x0433, + 0xa4 => 0x0434, 0xa5 => 0x0435, 0xa6 => 0x0436, 0xa7 => 0x0437, + 0xa8 => 0x0438, 0xa9 => 0x0439, 0xaa => 0x043a, 0xab => 0x043b, + 0xac => 0x043c, 0xad => 0x043d, 0xae => 0x043e, 0xaf => 0x043f, + 0xb0 => 0x2591, 0xb1 => 0x2592, 0xb2 => 0x2593, 0xb3 => 0x2502, + 0xb4 => 0x2524, 0xb5 => 0x2561, 0xb6 => 0x2562, 0xb7 => 0x2556, + 0xb8 => 0x2555, 0xb9 => 0x2563, 0xba => 0x2551, 0xbb => 0x2557, + 0xbc => 0x255d, 0xbd => 0x255c, 0xbe => 0x255b, 0xbf => 0x2510, + 0xc0 => 0x2514, 0xc1 => 0x2534, 0xc2 => 0x252c, 0xc3 => 0x251c, + 0xc4 => 0x2500, 0xc5 => 0x253c, 0xc6 => 0x255e, 0xc7 => 0x255f, + 0xc8 => 0x255a, 0xc9 => 0x2554, 0xca => 0x2569, 0xcb => 0x2566, + 0xcc => 0x2560, 0xcd => 0x2550, 0xce => 0x256c, 0xcf => 0x2567, + 0xd0 => 0x2568, 0xd1 => 0x2564, 0xd2 => 0x2565, 0xd3 => 0x2559, + 0xd4 => 0x2558, 0xd5 => 0x2552, 0xd6 => 0x2553, 0xd7 => 0x256b, + 0xd8 => 0x256a, 0xd9 => 0x2518, 0xda => 0x250c, 0xdb => 0x2588, + 0xdc => 0x2584, 0xdd => 0x258c, 0xde => 0x2590, 0xdf => 0x2580, + 0xe0 => 0x0440, 0xe1 => 0x0441, 0xe2 => 0x0442, 0xe3 => 0x0443, + 0xe4 => 0x0444, 0xe5 => 0x0445, 0xe6 => 0x0446, 0xe7 => 0x0447, + 0xe8 => 0x0448, 0xe9 => 0x0449, 0xea => 0x044a, 0xeb => 0x044b, + 0xec => 0x044c, 0xed => 0x044d, 0xee => 0x044e, 0xef => 0x044f, + 0xf0 => 0x0401, 0xf1 => 0x0451, 0xf2 => 0x0404, 0xf3 => 0x0454, + 0xf4 => 0x0407, 0xf5 => 0x0457, 0xf6 => 0x040e, 0xf7 => 0x045e, + 0xf8 => 0x00b0, 0xf9 => 0x2219, 0xfa => 0x00b7, 0xfb => 0x221a, + 0xfc => 0x2116, 0xfd => 0x00a4, 0xfe => 0x25a0, 0xff => 0x00a0, +); + +1; # end diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Charset.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Charset.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Charset.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Charset.pm 2022-01-12 22:51:54.000000000 +0000 @@ -6,6 +6,8 @@ # Revisions: 2009/08/28 - P. Harvey created # 2010/01/20 - P. Harvey complete re-write # 2010/07/16 - P. Harvey added UTF-16 support +# +# Notes: Charset lookups are generated using my convertCharset script #------------------------------------------------------------------------------ package Image::ExifTool::Charset; @@ -59,6 +61,7 @@ Latin2 => 0x101, DOSLatinUS => 0x101, DOSLatin1 => 0x101, + DOSCyrillic => 0x101, MacCroatian => 0x101, MacCyrillic => 0x101, MacGreek => 0x101, @@ -407,11 +410,11 @@ character sets. Currently, the following character sets are supported: UTF8, UTF16, UCS2, UCS4, Arabic, Baltic, Cyrillic, Greek, Hebrew, JIS, - Latin, Latin2, DOSLatinUS, DOSLatin1, MacArabic, MacChineseCN, - MacChineseTW, MacCroatian, MacCyrillic, MacGreek, MacHebrew, MacIceland, - MacJapanese, MacKorean, MacLatin2, MacRSymbol, MacRoman, MacRomanian, - MacThai, MacTurkish, PDFDoc, RSymbol, ShiftJIS, Symbol, Thai, Turkish, - Vietnam + Latin, Latin2, DOSLatinUS, DOSLatin1, DOSCyrillic, MacArabic, + MacChineseCN, MacChineseTW, MacCroatian, MacCyrillic, MacGreek, MacHebrew, + MacIceland, MacJapanese, MacKorean, MacLatin2, MacRSymbol, MacRoman, + MacRomanian, MacThai, MacTurkish, PDFDoc, RSymbol, ShiftJIS, Symbol, Thai, + Turkish, Vietnam However, only some of these character sets are available to the user via ExifTool options -- the multi-byte character sets are used only internally @@ -419,7 +422,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/DarwinCore.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DarwinCore.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/DarwinCore.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DarwinCore.pm 2022-01-12 22:51:54.000000000 +0000 @@ -15,7 +15,7 @@ use vars qw($VERSION); use Image::ExifTool::XMP; -$VERSION = '1.02'; +$VERSION = '1.06'; my %dateTimeInfo = ( # NOTE: Do NOT put "Groups" here because Groups hash must not be common! @@ -28,7 +28,7 @@ my %materialSample = ( STRUCT_NAME => 'DarwinCore MaterialSample', NAMESPACE => 'dwc', - materialSampleID => { }, + materialSampleID => { }, ); my %event = ( @@ -38,9 +38,28 @@ earliestDate => { %dateTimeInfo, Groups => { 2 => 'Time' } }, endDayOfYear => { Writable => 'integer', Groups => { 2 => 'Time' } }, eventDate => { %dateTimeInfo, Groups => { 2 => 'Time' } }, - eventID => { }, + eventID => { Avoid => 1, Notes => 'avoided in favor of XMP-iptcExt:EventID' }, eventRemarks => { Writable => 'lang-alt' }, - eventTime => { %dateTimeInfo, Groups => { 2 => 'Time' } }, + eventTime => { + Groups => { 2 => 'Time' }, + Writable => 'string', # (so we can format this ourself) + Shift => 'Time', + # (allow date/time or just time value) + ValueConv => 'Image::ExifTool::XMP::ConvertXMPDate($val)', + PrintConv => '$self->ConvertDateTime($val)', + ValueConvInv => 'Image::ExifTool::XMP::FormatXMPDate($val) or $val', + PrintConvInv => q{ + my $v = $self->InverseDateTime($val,undef,1); + undef $Image::ExifTool::evalWarning; + return $v if $v; + # allow time-only values by adding dummy date (thanks Herb) + my $v = $self->InverseDateTime("2000:01:01 $val",undef,1); + undef $Image::ExifTool::evalWarning; + return $v if $v and $v =~ s/.* //; # strip off dummy date + $Image::ExifTool::evalWarning = 'Invalid date/time or time-only value (use HH:MM:SS[.ss][+/-HH:MM|Z])'; + return undef; + }, + }, fieldNotes => { }, fieldNumber => { }, habitat => { }, @@ -341,7 +360,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/DICOM.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DICOM.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/DICOM.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DICOM.pm 2022-01-12 22:51:54.000000000 +0000 @@ -3853,7 +3853,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/DJI.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DJI.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/DJI.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DJI.pm 2022-01-12 22:51:54.000000000 +0000 @@ -15,7 +15,7 @@ use Image::ExifTool::XMP; use Image::ExifTool::GPS; -$VERSION = '1.02'; +$VERSION = '1.04'; my %convFloat2 = ( PrintConv => 'sprintf("%+.2f", $val)', @@ -44,6 +44,32 @@ 0x0b => { Name => 'CameraRoll', Writable => 'float', %convFloat2 }, ); +# thermal parameters in APP4 of DJI ZH20T images (ref forum11401) +%Image::ExifTool::DJI::ThermalParams = ( + PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData, + GROUPS => { 0 => 'APP4', 2 => 'Image' }, + NOTES => 'Thermal parameters extracted from APP4 of DJI RJPEG files from the ZH20T.', + # 0x00 - 0xaa551206 - temperature header magic number + 0x24 => { Name => 'K1', Format => 'float' }, + 0x28 => { Name => 'K2', Format => 'float' }, + 0x2c => { Name => 'K3', Format => 'float' }, + 0x30 => { Name => 'K4', Format => 'float' }, + 0x34 => { Name => 'KF', Format => 'float' }, + 0x38 => { Name => 'B1', Format => 'float' }, + 0x3c => { Name => 'B2', Format => 'float' }, + 0x44 => { Name => 'ObjectDistance', Format => 'int16u' }, + 0x46 => { Name => 'RelativeHumidity', Format => 'int16u' }, + 0x48 => { Name => 'Emissivity', Format => 'int16u' }, + 0x4a => { Name => 'Reflection', Format => 'int16u', }, + 0x4c => { Name => 'AmbientTemperature', Format => 'int16u' }, # (aka D1) + 0x50 => { Name => 'D2', Format => 'int32s' }, + 0x54 => { Name => 'KJ', Format => 'int16u' }, + 0x56 => { Name => 'DB', Format => 'int16u' }, + 0x58 => { Name => 'KK', Format => 'int16u' }, + # 0x500 - 0x55aa1206 - device header magic number + # (nothing yet decoded from device header) +); + %Image::ExifTool::DJI::XMP = ( %Image::ExifTool::XMP::xmpTableDefaults, GROUPS => { 0 => 'XMP', 1 => 'XMP-drone-dji', 2 => 'Location' }, @@ -64,20 +90,20 @@ Writable => 'real', Avoid => 1, PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")', - PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)', + PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lat")', }, GpsLongtitude => { # (sic) Name => 'GPSLongtitude', Writable => 'real', PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")', - PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)', + PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lon")', }, GpsLongitude => { #PH (NC) Name => 'GPSLongitude', Writable => 'real', Avoid => 1, PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")', - PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)', + PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lon")', }, FlightXSpeed => { Writable => 'real' }, FlightYSpeed => { Writable => 'real' }, @@ -98,13 +124,13 @@ Name => 'Latitude', Writable => 'real', PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")', - PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)', + PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lat")', }, Longitude => { Name => 'Longitude', Writable => 'real', PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")', - PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)', + PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lon")', }, ); @@ -125,7 +151,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/DjVu.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DjVu.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/DjVu.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DjVu.pm 2022-01-12 22:51:54.000000000 +0000 @@ -18,7 +18,7 @@ use vars qw($VERSION); use Image::ExifTool qw(:DataAccess :Utils); -$VERSION = '1.06'; +$VERSION = '1.07'; sub ParseAnt($); sub ProcessAnt($$$); @@ -227,10 +227,11 @@ last unless $tok =~ /(\\+)$/ and length($1) & 0x01; $tok .= '"'; # quote is part of the string } - # must protect unescaped "$" and "@" symbols, and "\" at end of string - $tok =~ s{\\(.)|([\$\@]|\\$)}{'\\'.($2 || $1)}sge; - # convert C escape sequences (allowed in quoted text) - $tok = eval qq{"$tok"}; + # convert C escape sequences, allowed in quoted text + # (note: this only converts a few of them!) + my %esc = ( a => "\a", b => "\b", f => "\f", n => "\n", + r => "\r", t => "\t", '"' => '"', '\\' => '\\' ); + $tok =~ s/\\(.)/$esc{$1}||'\\'.$1/egs; } else { # key name pos($$dataPt) = pos($$dataPt) - 1; # allow anything in key but whitespace, braces and double quotes @@ -352,7 +353,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/DNG.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DNG.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/DNG.pm 2020-02-14 12:32:12.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DNG.pm 2022-01-12 22:51:54.000000000 +0000 @@ -820,7 +820,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/DPX.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DPX.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/DPX.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DPX.pm 2022-01-12 22:51:54.000000000 +0000 @@ -6,6 +6,7 @@ # Revisions: 2013-09-19 - P. Harvey created # # References: 1) http://www.cineon.com/ff_draft.php +# 2) Harry Mallon private communication #------------------------------------------------------------------------------ package Image::ExifTool::DPX; @@ -14,7 +15,7 @@ use vars qw($VERSION); use Image::ExifTool qw(:DataAccess :Utils); -$VERSION = '1.03'; +$VERSION = '1.06'; # DPX tags %Image::ExifTool::DPX::Main = ( @@ -86,6 +87,56 @@ 156 => 'User-defined 8 component element', }, }, + 801 => { #2 + Name => 'TransferCharacteristic', + Format => 'int8u', + PrintConv => { + 0 => 'User-defined', + 1 => 'Printing density', + 2 => 'Linear', + 3 => 'Logarithmic', + 4 => 'Unspecified video', + 5 => 'SMPTE 274M', + 6 => 'ITU-R 704-4', + 7 => 'ITU-R 601-5 system B or G (625)', + 8 => 'ITU-R 601-5 system M (525)', + 9 => 'Composite video (NTSC)', + 10 => 'Composite video (PAL)', + 11 => 'Z (depth) - linear', + 12 => 'Z (depth) - homogeneous', + 13 => 'SMPTE ADX', + 14 => 'ITU-R 2020 NCL', + 15 => 'ITU-R 2020 CL', + 16 => 'IEC 61966-2-4 xvYCC', + 17 => 'ITU-R 2100 NCL/PQ', + 18 => 'ITU-R 2100 ICtCp/PQ', + 19 => 'ITU-R 2100 NCL/HLG', + 20 => 'ITU-R 2100 ICtCp/HLG', + 21 => 'RP 431-2:2011 Gama 2.6', + 22 => 'IEC 61966-2-1 sRGB', + }, + }, + 802 => { #2 + Name => 'ColorimetricSpecification', + Format => 'int8u', + PrintConv => { + 0 => 'User-defined', + 1 => 'Printing density', + 4 => 'Unspecified video', + 5 => 'SMPTE 274M', + 6 => 'ITU-R 704-4', + 7 => 'ITU-R 601-5 system B or G (625)', + 8 => 'ITU-R 601-5 system M (525)', + 9 => 'Composite video (NTSC)', + 10 => 'Composite video (PAL)', + 13 => 'SMPTE ADX', + 14 => 'ITU-R 2020', + 15 => 'P3D65', + 16 => 'P3DCI', + 17 => 'P3D60', + 18 => 'ACES', + }, + }, 803 => { Name => 'BitDepth', Format => 'int8u' }, 820 => { Name => 'ImageDescription', Format => 'string[32]' }, 892 => { Name => 'Image2Description', Format => 'string[32]', RawConv => '$val=~/[^\xff]/ ? $val : undef' }, @@ -105,10 +156,24 @@ 1532=> { Name => 'SourceCreateDate', Format => 'string[24]' }, 1556=> { Name => 'InputDeviceName', Format => 'string[32]' }, 1588=> { Name => 'InputDeviceSerialNumber', Format => 'string[32]' }, - # 1620=> { Name => 'AspectRatio', Format => 'int32u' }, - 1724 => { Name => 'FrameRate', Format => 'float' }, + # 1620 => { Name => 'Border', Format => 'int16u[4]' }, + 1628 => { + Name => 'AspectRatio', + Format => 'int32u[2]', + RawConv => '$val =~ /4294967295/ ? undef : $val', # ignore undefined values + PrintConv => q{ + return 'undef' if $val eq '0 0'; + return 'inf' if $val=~/ 0$/; + my @a=split(' ',$val); + return join(':', Rationalize($a[0]/$a[1])); + }, + }, + 1724 => { Name => 'OriginalFrameRate',Format => 'float' }, + 1728 => { Name => 'ShutterAngle', Format => 'float', RawConv => '($val =~ /\d/ and $val !~ /nan/i) ? $val : undef' }, #2 1732 => { Name => 'FrameID', Format => 'string[32]' }, 1764 => { Name => 'SlateInformation', Format => 'string[100]' }, + 1920 => { Name => 'TimeCode', Format => 'int32u' }, #2 + 1940 => { Name => 'FrameRate', Format => 'float', RawConv => '($val =~ /\d/ and $val !~ /nan/i) ? $val : undef' }, #2 1972 => { Name => 'Reserved5', Format => 'string[76]', Unknown => 1 }, 2048 => { Name => 'UserID', Format => 'string[32]' }, ); @@ -160,7 +225,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/DV.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DV.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/DV.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/DV.pm 2022-01-12 22:51:54.000000000 +0000 @@ -291,7 +291,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/EXE.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/EXE.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/EXE.pm 2020-01-02 12:08:50.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/EXE.pm 2022-01-12 22:51:54.000000000 +0000 @@ -21,7 +21,7 @@ use vars qw($VERSION); use Image::ExifTool qw(:DataAccess :Utils); -$VERSION = '1.15'; +$VERSION = '1.17'; sub ProcessPEResources($$); sub ProcessPEVersion($$); @@ -52,6 +52,10 @@ ); my %languageCode = ( + Notes => q{ + See L + for the full list of Microsoft language codes. + }, '0000' => 'Neutral', '007F' => 'Invariant', '0400' => 'Process default', @@ -397,7 +401,7 @@ existing StringFileInfo tags even if not listed in this table. }, LanguageCode => { - Notes => 'extracted from the StringFileInfo value', + Notes => 'Windows code page; extracted from the StringFileInfo value', # ref http://techsupt.winbatch.com/TS/T000001050F49.html # (also see http://support.bigfix.com/fixlet/documents/WinInspectors-2006-08-10.pdf) # (also see ftp://ftp.dyu.edu.tw/pub/cpatch/faq/tech/tech_nlsnt.txt) @@ -1005,7 +1009,7 @@ my $raf = $$dirInfo{RAF}; my $dataPt = $$dirInfo{DataPt}; my $dirLen = length($$dataPt); - my ($pos, @sections, %dirInfo); + my ($pos, @sections, %dirInfo, $rsrcFound); # loop through all sections for ($pos=0; $pos+40<=$dirLen; $pos+=40) { @@ -1015,14 +1019,16 @@ my $offset = Get32u($dataPt, $pos + 20); # remember the section offsets for the VirtualAddress lookup later push @sections, { Base => $offset, Size => $size, VirtualAddress => $va }; - # save details of the first resource section + # save details of the first resource section (or .text if .rsrc not found, ref forum11465) + next unless ($name eq ".rsrc\0\0\0" and not $rsrcFound and defined($rsrcFound = 1)) or + ($name eq ".text\0\0\0" and not %dirInfo); %dirInfo = ( RAF => $raf, Base => $offset, DirStart => 0, # (relative to Base) DirLen => $size, Sections => \@sections, - ) if $name eq ".rsrc\0\0\0" and not %dirInfo; + ); } # process the first resource section ProcessPEResources($et, \%dirInfo) or return 0 if %dirInfo; @@ -1140,7 +1146,8 @@ my $fileSize = ($cp - ($cblp ? 1 : 0)) * 512 + $cblp; #(patch to accommodate observed 64-bit files) #return 0 if $fileSize < 0x40 or $fileSize < $lfarlc; - return 0 if $fileSize < 0x40; + #return 0 if $fileSize < 0x40; (changed to warning in ExifTool 12.08) + $et->Warn('Invalid file size in DOS header') if $fileSize < 0x40; # read the Windows NE, PE or LE (virtual device driver) header #if ($lfarlc == 0x40 and $fileSize > $lfanew + 2 and ... if ($raf->Seek($lfanew, 0) and $raf->Read($buff, 0x40) and $buff =~ /^(NE|PE|LE)/) { @@ -1391,7 +1398,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Exif.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Exif.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Exif.pm 2020-02-14 12:31:57.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Exif.pm 2022-02-09 12:08:06.000000000 +0000 @@ -56,7 +56,7 @@ use Image::ExifTool qw(:DataAccess :Utils); use Image::ExifTool::MakerNotes; -$VERSION = '4.28'; +$VERSION = '4.39'; sub ProcessExif($$$); sub WriteExif($$$); @@ -265,6 +265,7 @@ 32892 => 'Sequential Color Filter', #JR (Sony ARQ) 34892 => 'Linear Raw', #2 51177 => 'Depth Map', # (DNG 1.5) + 52527 => 'Semantic Mask', # (DNG 1.6) ); %orientation = ( @@ -291,6 +292,7 @@ 9 => 'Depth map of reduced-resolution image', # (DNG 1.5) 16 => 'Enhanced image data', # (DNG 1.5) 0x10001 => 'Alternate reduced-resolution image', # (DNG 1.2) + 0x10004 => 'Semantic Mask', # (DNG 1.6) 0xffffffff => 'invalid', #(found in E5700 NEF's) BITMASK => { 0 => 'Reduced resolution', @@ -321,6 +323,7 @@ my %longBin = ( ValueConv => 'length($val) > 64 ? \$val : $val', ValueConvInv => '$val', + LongBinary => 1, # flag to avoid decoding values of a large array ); # PrintConv for SampleFormat (0x153) @@ -365,6 +368,7 @@ 11 => 'DeltaPerColumn', 12 => 'ScalePerRow', 13 => 'ScalePerColumn', + 14 => 'WarpRectilinear2', # (DNG 1.6) }, PrintConvInv => undef, # (so the inverse conversion is not performed) ); @@ -411,7 +415,14 @@ WriteGroup => 'IFD0', # set priority directory if this is the full resolution image DataMember => 'SubfileType', - RawConv => '$self->SetPriorityDir() if $val eq "0"; $$self{SubfileType} = $val', + RawConv => q{ + if ($val == ($val & 0x02)) { + $self->SetPriorityDir() if $val == 0; + $$self{PageCount} = ($$self{PageCount} || 0) + 1; + $$self{MultiPage} = 1 if $val == 2 or $$self{PageCount} > 1; + } + $$self{SubfileType} = $val; + }, PrintConv => \%subfileType, }, 0xff => { @@ -421,7 +432,14 @@ Writable => 'int16u', WriteGroup => 'IFD0', # set priority directory if this is the full resolution image - RawConv => '$self->SetPriorityDir() if $val eq "1"; $val', + RawConv => q{ + if ($val == 1 or $val == 3) { + $self->SetPriorityDir() if $val == 1; + $$self{PageCount} = ($$self{PageCount} || 0) + 1; + $$self{MultiPage} = 1 if $val == 3 or $$self{PageCount} > 1; + } + $val; + }, PrintConv => { 1 => 'Full-resolution image', 2 => 'Reduced-resolution image', @@ -1377,6 +1395,12 @@ Count => 6, Priority => 0, }, + # 0x220 - int32u: 0 (IFD0, Xaiomi Redmi models) + # 0x221 - int32u: 0 (IFD0, Xaiomi Redmi models) + # 0x222 - int32u: 0 (IFD0, Xaiomi Redmi models) + # 0x223 - int32u: 0 (IFD0, Xaiomi Redmi models) + # 0x224 - int32u: 0,1 (IFD0, Xaiomi Redmi models) + # 0x225 - string: "" (IFD0, Xaiomi Redmi models) 0x22f => 'StripRowCounts', 0x2bc => { Name => 'ApplicationNotes', # (writable directory!) @@ -1446,6 +1470,7 @@ 1 => 'Sony Uncompressed 12-bit RAW', #IB 2 => 'Sony Compressed RAW', # (lossy, ref IB) 3 => 'Sony Lossless Compressed RAW', #IB + 4 => 'Sony Lossless Compressed RAW 2', #JR (ILCE-1) }, }, # 0x7001 - int16u[1] (in SubIFD of Sony ARW images) - values: 0,1 @@ -1466,6 +1491,7 @@ PrintConv => { 256 => 'Off', 257 => 'Auto', + 272 => 'Auto (ILCE-1)', #JR 511 => 'No correction params available', }, }, @@ -1655,7 +1681,7 @@ 0x82aa => 'MDPrepDate', #3 0x82ab => 'MDPrepTime', #3 0x82ac => 'MDFileUnits', #3 - 0x830e => { #30 + 0x830e => { #30 (GeoTiff) Name => 'PixelScale', Writable => 'double', WriteGroup => 'IFD0', @@ -1687,14 +1713,14 @@ }, 0x847e => 'IntergraphPacketData', #3 0x847f => 'IntergraphFlagRegisters', #3 - 0x8480 => { #30 (obsolete) + 0x8480 => { #30 (GeoTiff, obsolete) Name => 'IntergraphMatrix', Writable => 'double', WriteGroup => 'IFD0', Count => -1, }, 0x8481 => 'INGRReserved', #20 - 0x8482 => { #30 + 0x8482 => { #30 (GeoTiff) Name => 'ModelTiePoint', Groups => { 2 => 'Location' }, Writable => 'double', @@ -1762,7 +1788,7 @@ }, 0x85b8 => 'PixelMagicJBIGOptions', #20 0x85d7 => 'JPLCartoIFD', #exifprobe (NC) - 0x85d8 => { #30 + 0x85d8 => { #30 (GeoTiff) Name => 'ModelTransform', Groups => { 2 => 'Location' }, Writable => 'double', @@ -1998,6 +2024,7 @@ 0x885d => 'FaxSubAddress', #9 0x885e => 'FaxRecvTime', #9 0x8871 => 'FedexEDR', #exifprobe (NC) + # 0x8889 - string: "portrait" (ExifIFD, Xiaomi POCO F1) 0x888a => { #PH Name => 'LeafSubIFD', Format => 'int32u', # Leaf incorrectly uses 'undef' format! @@ -2008,6 +2035,10 @@ Start => '$val', }, }, + # 0x8891 - int16u: 35 (ExifIFD, Xiaomi POCO F1) + # 0x8894 - int16u: 0 (ExifIFD, Xiaomi POCO F1) + # 0x8895 - int16u: 0 (ExifIFD, Xiaomi POCO F1) + # 0x889a - int16u: 0 (ExifIFD, Xiaomi POCO F1) # 0x89ab - seen "11 100 130 16 0 0 0 0" in IFD0 of TIFF image from IR scanner (forum8470) 0x9000 => { Name => 'ExifVersion', @@ -2127,7 +2158,7 @@ Notes => 'displayed in seconds, but stored as an APEX value', Format => 'rational64s', # Leica M8 patch (incorrectly written as rational64u) Writable => 'rational64s', - ValueConv => 'abs($val)<100 ? 2**(-$val) : 0', + ValueConv => 'IsFloat($val) && abs($val)<100 ? 2**(-$val) : 0', ValueConvInv => '$val>0 ? -log($val)/log(2) : -100', PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)', PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)', @@ -2368,6 +2399,8 @@ Name => 'CameraElevationAngle', Writable => 'rational64s', }, + # 0x9999 - string: camera settings (ExifIFD, Xiaomi POCO F1) + # 0x9aaa - int8u[2176]: ? (ExifIFD, Xiaomi POCO F1) 0x9c9b => { Name => 'XPTitle', Format => 'undef', @@ -2547,6 +2580,7 @@ 5 => 'Color sequential area', 7 => 'Trilinear', 8 => 'Color sequential linear', + # 15 - used by DJI XT2 }, }, 0xa300 => { @@ -2564,7 +2598,7 @@ 0xa301 => { Name => 'SceneType', Writable => 'undef', - ValueConvInv => 'chr($val)', + ValueConvInv => 'chr($val & 0xff)', PrintConv => { 1 => 'Directly photographed', }, @@ -3021,12 +3055,12 @@ }, }, # -# DNG tags 0xc6XX and 0xc7XX (ref 2 unless otherwise stated) +# DNG tags 0xc6XX, 0xc7XX and 0xcdXX (ref 2 unless otherwise stated) # 0xc612 => { Name => 'DNGVersion', Notes => q{ - tags 0xc612-0xc7b5 are defined by the DNG specification unless otherwise + tags 0xc612-0xcd3b are defined by the DNG specification unless otherwise noted. See L for the specification }, @@ -3602,11 +3636,11 @@ }, 0xc6fc => { Name => 'ProfileToneCurve', + %longBin, Writable => 'float', WriteGroup => 'IFD0', Count => -1, Protected => 1, - Binary => 1, }, 0xc6fd => { Name => 'ProfileEmbedPolicy', @@ -3731,11 +3765,11 @@ }, 0xc726 => { Name => 'ProfileLookTableData', + %longBin, Writable => 'float', WriteGroup => 'IFD0', Count => -1, Protected => 1, - Binary => 1, }, 0xc740 => { Name => 'OpcodeList1', %opcodeInfo }, # DNG 1.3 0xc741 => { Name => 'OpcodeList2', %opcodeInfo }, # DNG 1.3 @@ -4024,6 +4058,97 @@ Protected => 1, WriteGroup => 'IFD0', }, + 0xcd2d => { # DNG 1.6 + Name => 'ProfileGainTableMap', + Writable => 'undef', + WriteGroup => 'SubIFD', + Protected => 1, + Binary => 1, + }, + 0xcd2e => { # DNG 1.6 + Name => 'SemanticName', + # Writable => 'string', + WriteGroup => 'SubIFD' #? (NC) Semantic Mask IFD (only for Validate) + }, + 0xcd30 => { # DNG 1.6 + Name => 'SemanticInstanceIFD', + # Writable => 'string', + WriteGroup => 'SubIFD' #? (NC) Semantic Mask IFD (only for Validate) + }, + 0xcd31 => { # DNG 1.6 + Name => 'CalibrationIlluminant3', + Writable => 'int16u', + WriteGroup => 'IFD0', + Protected => 1, + SeparateTable => 'LightSource', + PrintConv => \%lightSource, + }, + 0xcd32 => { # DNG 1.6 + Name => 'CameraCalibration3', + Writable => 'rational64s', + WriteGroup => 'IFD0', + Count => -1, + Protected => 1, + }, + 0xcd33 => { # DNG 1.6 + Name => 'ColorMatrix3', + Writable => 'rational64s', + WriteGroup => 'IFD0', + Count => -1, + Protected => 1, + }, + 0xcd34 => { # DNG 1.6 + Name => 'ForwardMatrix3', + Writable => 'rational64s', + WriteGroup => 'IFD0', + Count => -1, + Protected => 1, + }, + 0xcd35 => { # DNG 1.6 + Name => 'IlluminantData1', + Writable => 'undef', + WriteGroup => 'IFD0', + Protected => 1, + }, + 0xcd36 => { # DNG 1.6 + Name => 'IlluminantData2', + Writable => 'undef', + WriteGroup => 'IFD0', + Protected => 1, + }, + 0xcd37 => { # DNG 1.6 + Name => 'IlluminantData3', + Writable => 'undef', + WriteGroup => 'IFD0', + Protected => 1, + }, + 0xcd38 => { # DNG 1.6 + Name => 'MaskSubArea', + # Writable => 'int32u', + WriteGroup => 'SubIFD', #? (NC) Semantic Mask IFD (only for Validate) + Count => 4, + }, + 0xcd39 => { # DNG 1.6 + Name => 'ProfileHueSatMapData3', + %longBin, + Writable => 'float', + WriteGroup => 'IFD0', + Count => -1, + Protected => 1, + }, + 0xcd3a => { # DNG 1.6 + Name => 'ReductionMatrix3', + Writable => 'rational64s', + WriteGroup => 'IFD0', + Count => -1, + Protected => 1, + }, + 0xcd3b => { # DNG 1.6 + Name => 'RGBTables', + Writable => 'undef', + WriteGroup => 'IFD0', + Protected => 1, + }, 0xea1c => { #13 Name => 'Padding', Binary => 1, @@ -4705,11 +4830,32 @@ }, GPSPosition => { Groups => { 2 => 'Location' }, + Writable => 1, + Protected => 1, + WriteAlso => { + GPSLatitude => '$val =~ /(.*?)( ?[NS])?,/ ? $1 : undef', + GPSLatitudeRef => '$val =~ /(-?)(.*?) ?([NS]?),/ ? ($3 || ($1 ? "S" : "N")) : undef', + GPSLongitude => '$val =~ /, ?(.*?)( ?[EW]?)$/ ? $1 : undef', + GPSLongitudeRef => '$val =~ /, ?(-?)(.*?) ?([EW]?)$/ ? ($3 || ($1 ? "W" : "E")) : undef', + }, + PrintConvInv => q{ + return undef unless $val =~ /(.*? ?[NS]?), ?(.*? ?[EW]?)$/; + my ($lat, $lon) = ($1, $2); + require Image::ExifTool::GPS; + $lat = Image::ExifTool::GPS::ToDegrees($lat, 1, "lat"); + $lon = Image::ExifTool::GPS::ToDegrees($lon, 1, "lon"); + return "$lat, $lon"; + }, Require => { 0 => 'GPSLatitude', 1 => 'GPSLongitude', }, Priority => 0, + Notes => q{ + when written, writes GPSLatitude, GPSLatitudeRef, GPSLongitude and + GPSLongitudeRef. This tag may be written using the same coordinate + format as provided by Google Maps when right-clicking on a location + }, ValueConv => '(length($val[0]) or length($val[1])) ? "$val[0] $val[1]" : undef', PrintConv => '"$prt[0], $prt[1]"', }, @@ -4728,6 +4874,7 @@ 9 => 'LensType2', 10 => 'LensType3', 11 => 'LensFocalLength', # (for Pentax to check for converter) + 12 => 'RFLensType', }, Notes => q{ attempt to identify the actual lens from all lenses with a given LensType. @@ -4756,6 +4903,12 @@ } $pcv = $$self{TAG_INFO}{LensType2}{PrintConv}; } + # use Canon RFLensType if available + if ($val[12]) { + $val[0] = $val[12]; + $prt[0] = $prt[12]; + $pcv = $$self{TAG_INFO}{RFLensType}{PrintConv}; + } my $lens = Image::ExifTool::Exif::PrintLensID($self, $prt[0], $pcv, $prt[8], @val); # check for use of lens converter (Pentax K-3) if ($val[11] and $val[1] and $lens) { @@ -4765,6 +4918,30 @@ return $lens; }, }, + 'LensID-2' => { + Name => 'LensID', + Groups => { 2 => 'Camera' }, + Desire => { + 0 => 'LensModel', + 1 => 'Lens', + 2 => 'XMP-aux:LensID', + 3 => 'Make', + }, + Inhibit => { + 4 => 'Composite:LensID', + }, + RawConv => q{ + return undef if defined $val[2] and defined $val[3]; + return $val if defined $val[0] and $val[0] =~ /(mm|\d\/F)/; + return $val if defined $val[1] and $val[1] =~ /(mm|\d\/F)/; + return undef; + }, + ValueConv => q{ + return $val[0] if defined $val[0] and $val[0] =~ /(mm|\d\/F)/; + return $val[1]; + }, + PrintConv => '$_=$val; s/(\d)\/F/$1mm F/; s/mmF/mm F/; s/(\d) mm/${1}mm/; s/ - /-/; $_', + }, ); # table for unknown IFD entries @@ -5086,6 +5263,7 @@ sub PrintExposureTime($) { my $secs = shift; + return $secs unless Image::ExifTool::IsFloat($secs); if ($secs < 0.25001 and $secs > 0) { return sprintf("1/%d",int(0.5 + 1/$secs)); } @@ -5691,7 +5869,7 @@ unless ($path =~ /^(JPEG-APP1-IFD0|TIFF-IFD0|PSD-EXIFInfo-IFD0)$/) { if ($Image::ExifTool::MWG::strict) { $et->Warn("Ignored non-standard EXIF at $path"); - return 1; + return 0; } else { $et->Warn("Non-standard EXIF at $path", 1); } @@ -5734,10 +5912,6 @@ # also read next IFD pointer if available if ($raf->Read($buf2, $len+4) >= $len) { $buff .= $buf2; - # make copy of dirInfo since we're going to modify it - my %newDirInfo = %$dirInfo; - $dirInfo = \%newDirInfo; - # update directory parameters for the newly loaded IFD $dataPt = $$dirInfo{DataPt} = \$buff; $dataPos = $$dirInfo{DataPos} = $offset; $dataLen = $$dirInfo{DataLen} = length $buff; @@ -5751,7 +5925,8 @@ $numEntries = Get16u($dataPt, $dirStart); } else { $et->Warn("Bad $dir directory", $inMakerNotes); - return 0 unless $inMakerNotes and $dirLen >= 14; + return 0 unless $inMakerNotes and $dirLen >= 14 and $dirStart >= 0 and + $dirStart + $dirLen <= length($$dataPt); $dirSize = $dirLen; $numEntries = int(($dirSize - 2) / 12); # read what we can Set16u($numEntries, $dataPt, $dirStart); @@ -5816,7 +5991,7 @@ $$et{Compression} = $$et{SubfileType} = ''; # loop through all entries in an EXIF directory (IFD) - my ($index, $valEnd, $offList, $offHash, $mapFmt); + my ($index, $valEnd, $offList, $offHash, $mapFmt, @valPos); $mapFmt = $$tagTablePtr{VARS}{MAP_FORMAT} if $$tagTablePtr{VARS}; my ($warnCount, $lastID) = (0, -1); @@ -5869,24 +6044,30 @@ my $size = $count * $formatSize[$format]; my $readSize = $size; if ($size > 4) { - if ($size > 0x7fffffff) { + if ($size > 0x7fffffff and (not $tagInfo or not $$tagInfo{ReadFromRAF})) { $et->Warn(sprintf("Invalid size (%u) for %s %s",$size,$dir,TagName($tagID,$tagInfo)), $inMakerNotes); ++$warnCount; next; } $valuePtr = Get32u($dataPt, $valuePtr); if ($validate and not $inMakerNotes) { - $et->Warn(sprintf('Odd offset for %s %s',$dir,TagName($tagID,$tagInfo)), 1) if $valuePtr & 0x01; + my $tagName = TagName($tagID, $tagInfo); + $et->Warn("Odd offset for $dir $tagName", 1) if $valuePtr & 0x01; if ($valuePtr < 8 || ($valuePtr + $size > length($$dataPt) and $valuePtr + $size > $$et{VALUE}{FileSize})) { - $et->Warn(sprintf('Invalid offset for %s %s',$dir,TagName($tagID,$tagInfo))); + $et->Warn("Invalid offset for $dir $tagName"); ++$warnCount; next; } if ($valuePtr + $size > $dirStart + $dataPos and $valuePtr < $dirEnd + $dataPos + 4) { - $et->Warn(sprintf('Value for %s %s overlaps IFD', $dir, TagName($tagID,$tagInfo))); + $et->Warn("Value for $dir $tagName overlaps IFD"); + } + foreach (@valPos) { + next if $$_[0] >= $valuePtr + $size or $$_[0] + $$_[1] <= $valuePtr; + $et->Warn("Value for $dir $tagName overlaps $$_[2]"); } + push @valPos, [ $valuePtr, $size, $tagName ]; } # fix valuePtr if necessary if ($$dirInfo{FixOffsets}) { @@ -6116,17 +6297,30 @@ unless ($bad) { # limit maximum length of data to reformat # (avoids long delays when processing some corrupted files) + my $warned; if ($count > 100000 and $formatStr !~ /^(undef|string|binary)$/) { my $tagName = $tagInfo ? $$tagInfo{Name} : sprintf('tag 0x%.4x', $tagID); + # (count of 196608 is typical for ColorMap) if ($tagName ne 'TransferFunction' or $count != 196608) { my $minor = $count > 2000000 ? 0 : 2; - next if $et->Warn("Ignoring $dirName $tagName with excessive count", $minor); + if ($et->Warn("Ignoring $dirName $tagName with excessive count", $minor)) { + next unless $$et{OPTIONS}{HtmlDump}; + $warned = 1; + } } } - # convert according to specified format - $val = ReadValue($valueDataPt,$valuePtr,$formatStr,$count,$readSize,\$rational); - # re-code if necessary - $val = $et->Decode($val, $strEnc) if $strEnc and $formatStr eq 'string' and defined $val; + if ($count > 500 and $formatStr !~ /^(undef|string|binary)$/ and + (not $tagInfo or $$tagInfo{LongBinary} or $warned) and not $$et{OPTIONS}{IgnoreMinorErrors}) + { + $et->WarnOnce('Not decoding some large array(s). Ignore minor errors to decode', 2) unless $warned; + next if $$et{TAGS_FROM_FILE}; # don't generate bogus value when copying tags + $val = "(large array of $count $formatStr values)"; + } else { + # convert according to specified format + $val = ReadValue($valueDataPt,$valuePtr,$formatStr,$count,$readSize,\$rational); + # re-code if necessary + $val = $et->Decode($val, $strEnc) if $strEnc and $formatStr eq 'string' and defined $val; + } } if ($verbose) { @@ -6152,7 +6346,8 @@ "Format: $fstr\nSize: $size bytes\n"; if ($size > 4) { my $offPt = Get32u($dataPt,$entry+8); - my $actPt = $valuePtr + $valueDataPos + $base - ($$et{EXIF_POS} || 0); + # (test this with ../pics/{CanonEOS-1D_XMarkIII.hif,PanasonicDC-G9.rw2}) + my $actPt = $valuePtr + $valueDataPos + $base - ($$et{EXIF_POS} || 0) + ($$et{BASE_FUDGE} || 0); $tip .= sprintf("Value offset: 0x%.4x\n", $offPt); # highlight tag name (red for bad size) my $style = ($bad or not defined $tval) ? 'V' : 'H'; @@ -6162,6 +6357,9 @@ $tip .= sprintf("Offset base: ${sign}0x%.4x\n", abs($actPt - $offPt)); $style = 'F' if $style eq 'H'; # purple for different offsets } + if ($$et{EXIF_POS} and not $$et{BASE_FUDGE}) { + $tip .= sprintf("File offset: 0x%.4x\n", $actPt + $$et{EXIF_POS}) + } $colName = "$tagName"; $colName .= ' (odd)' if $offPt & 0x01; } else { @@ -6180,7 +6378,7 @@ } elsif ($tagInfo and Image::ExifTool::IsInt($tval)) { if ($$tagInfo{IsOffset} or $$tagInfo{SubIFD}) { $tval = sprintf('0x%.4x', $tval); - my $actPt = $val + $base - ($$et{EXIF_POS} || 0); + my $actPt = $val + $base - ($$et{EXIF_POS} || 0) + ($$et{BASE_FUDGE} || 0); if ($actPt != $val) { $tval .= sprintf("\nActual offset: 0x%.4x", $actPt); my $sign = $actPt < $val ? '-' : ''; @@ -6520,28 +6718,40 @@ # scan for subsequent IFD's if specified if ($$dirInfo{Multi} and $bytesFromEnd >= 4) { - my $offset = Get32u($dataPt, $dirEnd); - if ($offset) { - my $subdirStart = $offset - $dataPos; - # use same directory information for trailing directory, - # but change the start location (ProcessDirectory will - # test to make sure we don't reprocess the same dir twice) - my %newDirInfo = %$dirInfo; - $newDirInfo{DirStart} = $subdirStart; + # use same directory information for trailing directory, + # but change the start location (ProcessDirectory will + # test to make sure we don't reprocess the same dir twice) + my %newDirInfo = %$dirInfo; + $newDirInfo{Multi} = 0; # prevent recursion + $newDirInfo{OffsetName} = $nextOffName; + $$et{INDENT} =~ s/..$//; # keep indent the same + for (;;) { + my $offset = Get32u($dataPt, $dirEnd) or last; + $newDirInfo{DirStart} = $offset - $dataPos; # increment IFD number my $ifdNum = $newDirInfo{DirName} =~ s/(\d+)$// ? $1 : 0; $newDirInfo{DirName} .= $ifdNum + 1; - $newDirInfo{OffsetName} = $nextOffName; # must validate SubIFD1 because the nextIFD pointer is invalid for some RAW formats if ($newDirInfo{DirName} ne 'SubIFD1' or ValidateIFD(\%newDirInfo)) { - $$et{INDENT} =~ s/..$//; # keep indent the same my $cur = pop @{$$et{PATH}}; $et->ProcessDirectory(\%newDirInfo, $tagTablePtr) or $success = 0; push @{$$et{PATH}}, $cur; + if ($success and $newDirInfo{BytesFromEnd} >= 4) { + $dataPt = $newDirInfo{DataPt}; + $dataPos = $newDirInfo{DataPos}; + $dirEnd = $newDirInfo{DirEnd}; + next; + } } elsif ($verbose or $$et{TIFF_TYPE} eq 'TIFF') { $et->Warn('Ignored bad IFD linked from SubIFD'); } + last; } + } elsif (defined $$dirInfo{Multi}) { + # return necessary parameters for parsing next IFD + $$dirInfo{DirEnd} = $dirEnd; + $$dirInfo{OffsetName} = $nextOffName; + $$dirInfo{BytesFromEnd} = $bytesFromEnd; } return $success; } @@ -6565,7 +6775,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/FITS.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FITS.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/FITS.pm 2020-02-14 12:31:26.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FITS.pm 2022-01-12 22:51:54.000000000 +0000 @@ -14,7 +14,7 @@ use vars qw($VERSION); use Image::ExifTool qw(:DataAccess :Utils); -$VERSION = '1.00'; +$VERSION = '1.02'; # FITS tags (ref 1) %Image::ExifTool::FITS::Main = ( @@ -36,6 +36,10 @@ 'TIME-OBS'=> { Name => 'ObservationTime', Groups => { 2 => 'Time' } }, 'DATE-END'=> { Name => 'ObservationDateEnd', Groups => { 2 => 'Time' } }, 'TIME-END'=> { Name => 'ObservationTimeEnd', Groups => { 2 => 'Time' } }, + COMMENT => { Name => 'Comment', PrintConv => '$val =~ s/^ +//; $val', + Notes => 'leading spaces are removed if L is enabled' }, + HISTORY => { Name => 'History', PrintConv => '$val =~ s/^ +//; $val', + Notes => 'leading spaces are removed if L is enabled' }, ); #------------------------------------------------------------------------------ @@ -67,7 +71,14 @@ last if $key eq 'END'; # make sure the key is valid $key =~ /^[-_A-Z0-9]*$/ or $et->Warn('Format error in FITS header'), last; - next unless substr($buff,8,2) eq '= '; # ignore comment lines + if ($key eq 'COMMENT' or $key eq 'HISTORY') { + my $val = substr($buff, 8); # comments start in column 9 + $val =~ s/ +$//; # remove trailing spaces + $et->HandleTag($tagTablePtr, $key, $val); + next; + } + # ignore other lines that aren't tags + next unless substr($buff,8,2) eq '= '; # save tag name (avoiding potential conflict with ExifTool variables) $tag = $Image::ExifTool::specialTags{$key} ? "_$key" : $key; # add to tag table if necessary @@ -126,7 +137,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Fixup.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Fixup.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Fixup.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Fixup.pm 2022-01-12 22:51:54.000000000 +0000 @@ -354,7 +354,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/FLAC.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FLAC.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/FLAC.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FLAC.pm 2022-01-12 22:51:54.000000000 +0000 @@ -284,7 +284,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/FlashPix.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FlashPix.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/FlashPix.pm 2020-02-14 12:30:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FlashPix.pm 2022-01-12 22:51:55.000000000 +0000 @@ -21,7 +21,7 @@ use Image::ExifTool::Exif; use Image::ExifTool::ASF; # for GetGUID() -$VERSION = '1.38'; +$VERSION = '1.39'; sub ProcessFPX($$); sub ProcessFPXR($$$); @@ -1369,29 +1369,48 @@ my $flags = $type & 0xf000; if ($flags) { if ($flags == VT_VECTOR) { - $noPad = 1; # values don't seem to be padded inside vectors + $noPad = 1; # values sometimes aren't padded inside vectors!! my $size = $oleFormatSize{VT_VECTOR}; - last if $valPos + $size > $dirEnd; + if ($valPos + $size > $dirEnd) { + $et->WarnOnce('Incorrect FPX VT_VECTOR size'); + last; + } $count = Get32u($dataPt, $valPos); push @vals, '' if $count == 0; # allow zero-element vector $valPos += 4; } else { # can't yet handle this property flag + $et->WarnOnce('Unknown FPX property'); last; } } unless ($format =~ /^VT_/) { my $size = Image::ExifTool::FormatSize($format) * $count; - last if $valPos + $size > $dirEnd; + if ($valPos + $size > $dirEnd) { + $et->WarnOnce("Incorrect FPX $format size"); + last; + } @vals = ReadValue($dataPt, $valPos, $format, $count, $size); # update position to end of value plus padding $valPos += ($count * $size + 3) & 0xfffffffc; last; } my $size = $oleFormatSize{$format}; - my ($item, $val); + my ($item, $val, $len); for ($item=0; $item<$count; ++$item) { - last if $valPos + $size > $dirEnd; + if ($valPos + $size > $dirEnd) { + $et->WarnOnce("Truncated FPX $format value"); + last; + } + # sometimes VT_VECTOR items are padded to even 4-byte boundaries, and sometimes they aren't + if ($noPad and defined $len and $len & 0x03) { + my $pad = 4 - ($len & 0x03); + if ($valPos + $pad + $size <= $dirEnd) { + # skip padding if all zeros + $valPos += $pad if substr($$dataPt, $valPos, $pad) eq "\0" x $pad; + } + } + undef $len; if ($format eq 'VT_VARIANT') { my $subType = Get32u($dataPt, $valPos); $valPos += $size; @@ -1429,9 +1448,12 @@ $val = ($val - 25569) * 24 * 3600 if $val != 0; $val = Image::ExifTool::ConvertUnixTime($val); } elsif ($format =~ /STR$/) { - my $len = Get32u($dataPt, $valPos); + $len = Get32u($dataPt, $valPos); $len *= 2 if $format eq 'VT_LPWSTR'; # convert to byte count - last if $valPos + $len + 4 > $dirEnd; + if ($valPos + $len + 4 > $dirEnd) { + $et->WarnOnce("Truncated $format value"); + last; + } $val = substr($$dataPt, $valPos + 4, $len); if ($format eq 'VT_LPWSTR') { # convert wide string from Unicode @@ -1450,8 +1472,11 @@ # on even 32-bit boundaries, but this isn't always the case) $valPos += $noPad ? $len : ($len + 3) & 0xfffffffc; } elsif ($format eq 'VT_BLOB' or $format eq 'VT_CF') { - my $len = Get32u($dataPt, $valPos); - last if $valPos + $len + 4 > $dirEnd; + my $len = Get32u($dataPt, $valPos); # (use local $len because we always expect padding) + if ($valPos + $len + 4 > $dirEnd) { + $et->WarnOnce("Truncated $format value"); + last; + } $val = substr($$dataPt, $valPos + 4, $len); # update position for data length plus padding # (does this padding disappear in arrays too?) @@ -2370,7 +2395,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Flash.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Flash.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Flash.pm 2020-02-14 12:31:08.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Flash.pm 2022-01-12 22:51:54.000000000 +0000 @@ -721,7 +721,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/FLIF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FLIF.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/FLIF.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FLIF.pm 2022-01-12 22:51:54.000000000 +0000 @@ -329,7 +329,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/FLIR.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FLIR.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/FLIR.pm 2020-02-14 12:30:16.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FLIR.pm 2022-01-12 22:51:54.000000000 +0000 @@ -24,7 +24,7 @@ use Image::ExifTool::Exif; use Image::ExifTool::GPS; -$VERSION = '1.18'; +$VERSION = '1.20'; sub ProcessFLIR($$;$); sub ProcessFLIRText($$$); @@ -99,7 +99,7 @@ NOTES => q{ Information extracted from FLIR FFF images and the APP1 FLIR segment of JPEG images. These tags may also be extracted from the first frame of an FLIR - SEQ file. + SEQ file, or all frames if the ExtractEmbedded option is used. }, "_header" => { Name => 'FFFHeader', @@ -691,7 +691,15 @@ T => 'True North', }, }, - # 0x48 - int32u: seen 0,77 + 0x48 => { #PH (NC) + Name => 'GPSImgDirectionRef', + Format => 'string[2]', + RawConv => 'length($val) ? $val : undef', + PrintConv => { + M => 'Magnetic North', + T => 'True North', + }, + }, 0x4c => { Name => 'GPSSpeed', %float2f, @@ -702,7 +710,11 @@ %float2f, RawConv => '$val < 0 ? undef : $val', }, - # 0x54 - float: seen 0,-1 + 0x54 => { + Name => 'GPSImgDirection', + %float2f, + RawConv => '$val < 0 ? undef : $val', + }, 0x58 => { Name => 'GPSMapDatum', Format => 'string[16]', @@ -1457,6 +1469,7 @@ my $raf = $$dirInfo{RAF} || new File::RandomAccess($$dirInfo{DataPt}); my $verbose = $et->Options('Verbose'); my $out = $et->Options('TextOut'); + my $base = $raf->Tell(); my ($i, $hdr, $buff, $rec); # read and verify FFF header @@ -1485,15 +1498,18 @@ my $ver = Get32u(\$hdr, 0x14); last if $ver >= 100 and $ver < 200; # (have seen 100 and 101 - PH) ToggleByteOrder(); - $i and $et->Warn("Unsupported FLIR $type version"), return 1; + next unless $i; + return 0 if $$et{DOC_NUM}; + $et->Warn("Unsupported FLIR $type version"); + return 1; } # read the FLIR record directory my $pos = Get32u(\$hdr, 0x18); my $num = Get32u(\$hdr, 0x1c); - unless ($raf->Seek($pos) and $raf->Read($buff, $num * 0x20) == $num * 0x20) { + unless ($raf->Seek($base+$pos) and $raf->Read($buff, $num * 0x20) == $num * 0x20) { $et->Warn('Truncated FLIR FFF directory'); - return 1; + return $$et{DOC_NUM} ? 0 : 1; } unless ($tagTablePtr) { @@ -1504,6 +1520,7 @@ # process the header data $et->HandleTag($tagTablePtr, '_header', $hdr); + my $success = 1; my $oldIndent = $$et{INDENT}; $$et{INDENT} .= '| '; $et->VerboseDir($type, $num); @@ -1533,12 +1550,22 @@ $verbose and printf $out "%s%d) FLIR Record 0x%.2x, offset 0x%.4x, length 0x%.4x\n", $$et{INDENT}, $i, $recType, $recPos, $recLen; - unless ($raf->Seek($recPos) and $raf->Read($rec, $recLen) == $recLen) { - $et->Warn('Invalid FLIR record'); + # skip RawData records for embedded documents + if ($recType == 1 and $$et{DOC_NUM}) { + $raf->Seek($base+$recPos+$recLen) or $success = 0, last; + next; + } + unless ($raf->Seek($base+$recPos) and $raf->Read($rec, $recLen) == $recLen) { + if ($$et{DOC_NUM}) { + $success = 0; # abort processing more documents + } else { + $et->Warn('Invalid FLIR record'); + } last; } if ($$tagTablePtr{$recType}) { $et->HandleTag($tagTablePtr, $recType, undef, + Base => $base, DataPt => \$rec, DataPos => $recPos, Start => 0, @@ -1550,7 +1577,17 @@ } delete $$et{SET_GROUP0}; $$et{INDENT} = $oldIndent; - return 1; + + # extract information from subsequent frames in SEQ file if ExtractEmbedded is used + if ($$dirInfo{RAF} and $et->Options('ExtractEmbedded') and not $$et{DOC_NUM}) { + for (;;) { + $$et{DOC_NUM} = $$et{DOC_COUNT} + 1; + last unless ProcessFLIR($et, $dirInfo, $tagTablePtr); + # (DOC_COUNT will be incremented automatically if we extracted any tags) + } + delete $$et{DOC_NUM}; + } + return $success; } #------------------------------------------------------------------------------ @@ -1594,7 +1631,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Font.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Font.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Font.pm 2020-02-14 12:29:26.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Font.pm 2022-01-12 22:51:55.000000000 +0000 @@ -19,7 +19,7 @@ use vars qw($VERSION %ttLang); use Image::ExifTool qw(:DataAccess :Utils); -$VERSION = '1.09'; +$VERSION = '1.10'; sub ProcessOTF($$); @@ -117,7 +117,7 @@ # 0x048c - no ISO equivalent # 0x081a/0x83c - sr-SP # 0x0c0a - modern? - # 0x2409 - Carribbean country code not found in ISO 3166-1 + # 0x2409 - Caribbean country code not found in ISO 3166-1 Windows => { 0x0401 => 'ar-SA', 0x0438 => 'fo', 0x0481 => 'mi', 0x1409 => 'en-NZ', 0x0402 => 'bg', 0x0439 => 'hi', 0x0482 => 'oc', 0x140a => 'es-CR', @@ -589,6 +589,11 @@ $et->HandleTag($tagTablePtr, 'postfont', $2); } $rtnVal = 1; + } elsif ($buff =~ /^(wOF[F2])/) { + my $type = $1 eq 'wOFF' ? 'woff' : 'woff2'; + $et->SetFileType(uc($type), "font/$type"); + # (don't yet extract metadata from these files) + $rtnVal = 1; } else { $rtnVal = 0; } @@ -611,11 +616,13 @@ This module contains the routines required by Image::ExifTool to read meta information from various format font files. Currently recognized font file -types are OTF, TTF, TTC, DFONT, PFA, PFB, PFM, AFM, ACFM and AMFM. +types are OTF, TTF, TTC, DFONT, PFA, PFB, PFM, AFM, ACFM and AMFM. As well, +WOFF and WOFF2 font files are identified, but metadata is not currently +extracted from these formats. =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/FotoStation.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FotoStation.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/FotoStation.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FotoStation.pm 2022-01-12 22:51:55.000000000 +0000 @@ -243,7 +243,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/FujiFilm.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FujiFilm.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/FujiFilm.pm 2020-02-14 12:29:04.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/FujiFilm.pm 2022-01-12 22:51:55.000000000 +0000 @@ -31,7 +31,7 @@ use Image::ExifTool qw(:DataAccess :Utils); use Image::ExifTool::Exif; -$VERSION = '1.77'; +$VERSION = '1.80'; sub ProcessFujiDir($$$); sub ProcessFaceRec($$$); @@ -145,6 +145,8 @@ Writable => 'int16u', PrintConv => { 0x0 => 'Auto', + 0x1 => 'Auto (white priority)', #forum10890 + 0x2 => 'Auto (ambiance priority)', #forum10890 0x100 => 'Daylight', 0x200 => 'Cloudy', 0x300 => 'Daylight Fluorescent', @@ -487,6 +489,7 @@ 3 => 'Electronic Front Curtain', #10 }, }, + # 0x1100 - This may not work well for newer cameras (ref forum12682) 0x1100 => [{ Name => 'AutoBracketing', Condition => '$$self{Model} eq "X-T3"', @@ -505,6 +508,7 @@ 0 => 'Off', 1 => 'On', 2 => 'No flash & flash', #3 + 6 => 'Pixel Shift', #IB (GFX100S) }, }], 0x1101 => { @@ -515,6 +519,8 @@ Name => 'DriveSettings', SubDirectory => { TagTable => 'Image::ExifTool::FujiFilm::DriveSettings' }, }, + 0x1105 => { Name => 'PixelShiftShots', Writable => 'int16u' }, #IB + 0x1106 => { Name => 'PixelShiftOffset', Writable => 'rational64s', Count => 2 }, #IB # (0x1150-0x1152 exist only for Pro Low-light and Pro Focus PictureModes) # 0x1150 - Pro Low-light - val=1; Pro Focus - val=2 (ref 7); HDR - val=128 (forum10799) # 0x1151 - Pro Low-light - val=4 (number of pictures taken?); Pro Focus - val=2,3 (ref 7); HDR - val=3 (forum10799) @@ -620,6 +626,8 @@ 0x600 => 'Classic Chrome', #forum6109 0x700 => 'Eterna', #12 0x800 => 'Classic Negative', #forum10536 + 0x900 => 'Bleach Bypass', #forum10890 + 0xa00 => 'Nostalgic Neg', #forum12085 }, }, 0x1402 => { #2 @@ -911,15 +919,22 @@ WRITABLE => 1, 0.1 => { Name => 'FocusMode2', - Mask => 0x000000ff, + Mask => 0x0000000f, PrintConv => { - 0x00 => 'AF-M', - 0x01 => 'AF-S', - 0x02 => 'AF-C', - 0x11 => 'AF-S (Auto)', + 0x0 => 'AF-M', + 0x1 => 'AF-S', + 0x2 => 'AF-C', }, }, 0.2 => { + Name => 'PreAF', + Mask => 0x00f0, + PrintConv => { + 0 => 'Off', + 1 => 'On', + }, + }, + 0.3 => { Name => 'AFAreaMode', Mask => 0x0f00, PrintConv => { @@ -928,7 +943,7 @@ 2 => 'Wide/Tracking', }, }, - 0.3 => { + 0.4 => { Name => 'AFAreaPointSize', Mask => 0xf000, PrintConv => { @@ -936,7 +951,7 @@ OTHER => sub { return $_[0] }, }, }, - 0.4 => { + 0.5 => { Name => 'AFAreaZoneSize', Mask => 0xf0000, PrintConv => { @@ -1655,7 +1670,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Geotag.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Geotag.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Geotag.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Geotag.pm 2022-02-09 12:08:06.000000000 +0000 @@ -13,6 +13,7 @@ # 2016/07/13 - PH Added ability to geotag date/time only # 2019/07/02 - PH Added ability to read IMU CSV files # 2019/11/10 - PH Also write pitch to CameraElevationAngle +# 2020/12/01 - PH Added ability to read DJI CSV log files # # References: 1) http://www.topografix.com/GPX/1/1/ # 2) http://www.gpsinformation.org/dale/nmea.htm#GSA @@ -25,8 +26,9 @@ use strict; use vars qw($VERSION); use Image::ExifTool qw(:Public); +use Image::ExifTool::GPS; -$VERSION = '1.61'; +$VERSION = '1.66'; sub JITTER() { return 2 } # maximum time jitter @@ -132,7 +134,7 @@ my ($et, $val) = @_; my ($raf, $from, $time, $isDate, $noDate, $noDateChanged, $lastDate, $dateFlarm); my ($nmeaStart, $fixSecs, @fixTimes, $lastFix, %nmea, @csvHeadings); - my ($canCut, $cutPDOP, $cutHDOP, $cutSats, $e0, $e1, @tmp); + my ($canCut, $cutPDOP, $cutHDOP, $cutSats, $e0, $e1, @tmp, $trackFile, $trackTime); unless (eval { require Time::Local }) { return 'Geotag feature requires Time::Local installed'; @@ -158,6 +160,7 @@ } else { # $val is track file name if ($et->Open(\*EXIFTOOL_TRKFILE, $val)) { + $trackFile = $val; $raf = new File::RandomAccess(\*EXIFTOOL_TRKFILE); unless ($raf->Read($_, 256)) { close EXIFTOOL_TRKFILE; @@ -200,23 +203,26 @@ my $skipped = 0; my $lastSecs = 0; my $fix = { }; + my $csvDelim = $et->Options('CSVDelim'); + $csvDelim = ',' unless defined $csvDelim; my (@saveFix, $timeSpan); for (;;) { $raf->ReadLine($_) or last; # determine file format if (not $format) { + s/^\xef\xbb\xbf//; # remove leading BOM if it exists if (/^<(\?xml|gpx)[\s>]/) { # look for XML or GPX header $format = 'XML'; # check for NMEA sentence # (must ONLY start with ones that have timestamps! eg. not GSA or PTNTHPR!) } elsif (/^.*\$([A-Z]{2}(RMC|GGA|GLL|ZDA)|PMGNTRK),/) { $format = 'NMEA'; - $nmeaStart = $2 || $1; # save type of first sentence + $nmeaStart = $2 || $1; # save type of first sentence } elsif (/^A(FLA|XSY|FIL)/) { # (don't set format yet because we want to read HFDTE first) $nmeaStart = 'B' ; next; - } elsif (/^HFDTE(\d{2})(\d{2})(\d{2})/) { + } elsif (/^HFDTE(?:DATE:)?(\d{2})(\d{2})(\d{2})/) { my $year = $3 + ($3 >= 70 ? 1900 : 2000); $dateFlarm = Time::Local::timegm(0,0,0,$1,$2-1,$year); $nmeaStart = 'B' ; @@ -229,9 +235,55 @@ $format = 'Winplus'; } elsif (/^\s*\d+\s+.*\sypr\s*$/ and (@tmp=split) == 12) { $format = 'Bramor'; - } elsif (/\bDate\b/i and /\bTime\b/ and ',') { - @csvHeadings = split ','; + } elsif (((/\b(GPS)?Date/i and /\b(GPS)?(Date)?Time/i) or /\bTime\(seconds\)/i) and /\Q$csvDelim/) { + chomp; + @csvHeadings = split /\Q$csvDelim/; $format = 'CSV'; + # convert recognized headings to our parameter names + foreach (@csvHeadings) { + my $param; + s/^GPS ?//; # remove leading "GPS" to simplify regex patterns + if (/^Time ?\(seconds\)$/i) { # DJI + # DJI CSV log files have a column "Time(seconds)" which is seconds since + # the start of the flight. The date/time is obtained from the file name. + $param = 'runtime'; + if ($trackFile and $trackFile =~ /(\d{4})-(\d{2})-(\d{2})[^\/]+(\d{2})-(\d{2})-(\d{2})[^\/]*$/) { + $trackTime = Image::ExifTool::TimeLocal($6,$5,$4,$3,$2-1,$1); + my $utc = PrintFixTime($trackTime); + my $tzs = Image::ExifTool::TimeZoneString([$6,$5,$4,$3,$2-1,$1-1900],$trackTime); + $et->VPrint(2, " DJI start time: $utc (local timezone is $tzs)\n"); + } else { + return 'Error getting start time from file name for DJI CSV track file'; + } + } elsif (/^Date ?Time/i) { # ExifTool addition + $param = 'datetime'; + } elsif (/^Date/i) { + $param = 'date'; + } elsif (/^Time(?! ?\(text\))/i) { # (ignore DJI "Time(text)" column) + $param = 'time'; + } elsif (/^(Pos)?Lat/i) { + $param = 'lat'; + /ref$/i and $param .= 'ref'; + } elsif (/^(Pos)?Lon/i) { + $param = 'lon'; + /ref$/i and $param .= 'ref'; + } elsif (/^(Pos)?Alt/i) { + $param = 'alt'; + } elsif (/^(Angle)?(Heading|Track)/i) { + $param = 'track'; + } elsif (/^(Angle)?Pitch/i or /^Camera ?Elevation ?Angle/i) { + $param = 'pitch'; + } elsif (/^(Angle)?Roll/i) { + $param = 'roll'; + } + if ($param) { + $et->VPrint(2, "CSV column '${_}' is $param\n"); + $_ = $param; + } else { + $et->VPrint(2, "CSV column '${_}' ignored\n"); + $_ = ''; # ignore this column + } + } next; } else { # search only first 50 lines of file for a valid fix @@ -388,37 +440,64 @@ # set necessary flags for extra available information @$has{qw(alt track orient)} = (1,1,1); goto DoneFix; # save this fix + } elsif ($format eq 'CSV') { + chomp; + my @vals = split /\Q$csvDelim/; # # CSV format output of GPS/IMU POS system +# Date* - date in DD/MM/YYYY format +# Time* - time in HH:MM:SS.SSS format +# [Pos]Lat* - latitude in decimal degrees +# [Pos]Lon* - longitude in decimal degrees +# [Pos]Alt* - altitude in m relative to sea level +# [Angle]Heading* - GPSTrack in degrees true +# [Angle]Pitch* - pitch angle in degrees +# [Angle]Roll* - roll angle in degrees +# (ExifTool enhancements allow for standard tag names or descriptions as the column headings, +# add support for time zones and flexible coordinates, and allow new DateTime and Shift columns) # - } elsif ($format eq 'CSV') { - my @vals = split ','; - my ($label, $date, $secs); - foreach $label (@csvHeadings) { + my ($param, $date, $secs, %neg); + foreach $param (@csvHeadings) { my $val = shift @vals; last unless defined $val; - if ($label =~ /^Date/i) { + next unless $param; + if ($param eq 'datetime') { + local $SIG{'__WARN__'} = sub { }; + my $dateTime = $et->InverseDateTime($val); + if ($dateTime) { + $date = Image::ExifTool::GetUnixTime($val, 2); + $secs = 0; + } + } elsif ($param eq 'date') { if ($val =~ m{^(\d{2})/(\d{2})/(\d{4})$}) { $date = Time::Local::timegm(0,0,0,$1,$2-1,$3); + } elsif ($val =~ /(\d{4}).*?(\d{2}).*?(\d{2})/) { + $date = Time::Local::timegm(0,0,0,$3,$2-1,$1); } - } elsif ($label =~ /^Time/i) { - if ($val =~ /^(\d{1,2}):(\d{2}):(\d{2}(\.\d+)?)/) { + } elsif ($param eq 'time') { + if ($val =~ /^(\d{1,2}):(\d{2}):(\d{2}(\.\d+)?).*?(([-+])(\d{1,2}):?(\d{2}))?/) { $secs = (($1 * 60) + $2) * 60 + $3; + # adjust for time zone if specified + $secs += ($7 * 60 + $8) * ($6 eq '-' ? 60 : -60) if $5; } - } elsif ($label =~ /^(Pos)?Lat/) { - $$fix{lat} = $val; - } elsif ($label =~ /^(Pos)?Lon/) { - $$fix{lon} = $val; - } elsif ($label =~ /^(Pos)?Alt/) { - $$fix{alt} = $val; - } elsif ($label =~ /^(Angle)?Heading/) { - $$fix{track} = $val; - } elsif ($label =~ /^(Angle)?Pitch/) { - $$fix{pitch} = $val; - } elsif ($label =~ /^(Angle)?Roll/) { - $$fix{roll} = $val; + } elsif ($param eq 'lat' or $param eq 'lon') { + $$fix{$param} = Image::ExifTool::GPS::ToDegrees($val, 1); + } elsif ($param eq 'latref') { + $neg{lat} = 1 if $val =~ /^S/i; + } elsif ($param eq 'lonref') { + $neg{lon} = 1 if $val =~ /^W/i; + } elsif ($param eq 'runtime') { + $date = $trackTime; + $secs = $val; + } else { + $$fix{$param} = $val; } } + # make coordinate negative according to reference direction if necessary + foreach $param (keys %neg) { + next unless defined $$fix{$param}; + $$fix{$param} = -abs($$fix{$param}); + } if ($date and defined $secs and defined $$fix{lat} and defined $$fix{lon}) { $time = $date + $secs; $$has{alt} = 1 if defined $$fix{alt}; @@ -1330,8 +1409,8 @@ This module loads GPS track logs, interpolates to determine position based on time, and sets new GPS values for geotagging images. Currently supported formats are GPX, NMEA RMC/GGA/GLL, KML, IGC, Garmin XML and TCX, Magellan -PMGNTRK, Honeywell PTNTHPR, Winplus Beacon text, IMU CSV, and Bramor gEO log -files. +PMGNTRK, Honeywell PTNTHPR, Winplus Beacon text, IMU CSV, DJI CSV, and +Bramor gEO log files. Methods in this module should not be called directly. Instead, the Geotag feature is accessed by writing the values of the ExifTool Geotag, Geosync @@ -1345,7 +1424,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/GeoTiff.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GeoTiff.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/GeoTiff.pm 2020-02-14 12:28:52.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GeoTiff.pm 2022-01-12 22:51:55.000000000 +0000 @@ -573,6 +573,8 @@ 3053 => 'Hjorsey 1955 Lambert', 3057 => 'ISN93 Lambert 1993', 3300 => 'Estonian Coordinate System of 1992', + 3786 => 'Popular Visualisation CRS / Mercator', #PH (NC) + 3857 => 'WGS 84 / Pseudo-Mercator', #PH (NC) 20137 => 'Adindan UTM zone 37N', 20138 => 'Adindan UTM zone 38N', 20248 => 'AGD66 AMG zone 48', @@ -2240,7 +2242,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/GE.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GE.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/GE.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GE.pm 2022-01-12 22:51:55.000000000 +0000 @@ -68,7 +68,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/GIF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GIF.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/GIF.pm 2020-02-14 12:28:33.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GIF.pm 2022-01-12 22:51:55.000000000 +0000 @@ -20,7 +20,7 @@ use vars qw($VERSION); use Image::ExifTool qw(:DataAccess :Utils); -$VERSION = '1.17'; +$VERSION = '1.19'; # road map of directory locations in GIF images my %gifMap = ( @@ -54,6 +54,7 @@ Extensions => { # (for documentation only) SubDirectory => { TagTable => 'Image::ExifTool::GIF::Extensions' }, }, + TransparentColor => { }, ); # GIF89a application extensions: @@ -115,6 +116,11 @@ ValueConv => '$val + 1', }, 5 => 'BackgroundColor', + 6 => { + Name => 'PixelAspectRatio', + RawConv => '$val ? $val : undef', + ValueConv => '($val + 15) / 64', + }, ); # GIF Netscape 2.0 animation extension (ref 3) @@ -470,6 +476,9 @@ my $delay = Get16u(\$buff, 1); $delayTime += $delay; $verbose and printf $out "Graphic Control: delay=%.2f\n", $delay / 100; + # get transparent colour + my $bits = Get8u(\$buff, 0); + $et->HandleTag($tagTablePtr, 'TransparentColor', Get8u(\$buff,3)) if $bits & 0x01; $raf->Seek(-$length, 1) or last; } elsif ($a == 0x01 and $length == 12) { # plain text extension @@ -532,7 +541,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/GIMP.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GIMP.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/GIMP.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GIMP.pm 2022-01-12 22:51:55.000000000 +0000 @@ -228,7 +228,7 @@ # skip over precision for XCV version 4 or later $raf->Seek(4, 1) if $$et{XCFVersion} =~ /^v0*(\d+)/ and $1 >= 4; - + # loop through image properties for (;;) { $raf->Read($buff, 8) == 8 or last; @@ -270,7 +270,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/GoPro.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GoPro.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/GoPro.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GoPro.pm 2022-01-12 22:51:55.000000000 +0000 @@ -16,7 +16,7 @@ use Image::ExifTool qw(:DataAccess :Utils); use Image::ExifTool::QuickTime; -$VERSION = '1.03'; +$VERSION = '1.07'; sub ProcessGoPro($$$); sub ProcessString($$$); @@ -77,6 +77,9 @@ Notes => 'accelerator readings in m/s2', Binary => 1, }, + # ANGX (GPMF-GEOC) - seen -0.05 (fmt d, Max) + # ANGY (GPMF-GEOC) - seen 179.9 (fmt d, Max) + # ANGZ (GPMF-GEOC) - seen 0.152 (fmt d, Max) ALLD => 'AutoLowLightDuration', #1 (gpmd) (untested) # APTO (GPMF) - seen: 'RAW', 'DYNM' (fmt c) ATTD => { #PH (Karma) @@ -105,16 +108,14 @@ }, # BRID (GPMF) - seen: 0 (fmt B) # BROD (GPMF) - seen: 'ASK','' (fmt c) + # CALH (GPMF-GEOC) - seen 3040 (fmt L, Max) + # CALW (GPMF-GEOC) - seen 4056 (fmt L, Max) CASN => 'CameraSerialNumber', #PH (GPMF - seen: 'C3221324545448', fmt c) - # CINF (GPMF) - seen: 0x67376be7709bc8876a8baf3940908618 (fmt B) (Camera INFormation?) - # CMOD (GPMF) - seen: 12,13,17 [13 time-laps video, 17 JPEG] (fmt B) - CYTS => { #PH (Karma) - Name => 'CoyoteStatus', - # UNIT=s,,,,,rad,rad,rad,, - # TYPE=LLLLLfffBB - # SCAL=1000 1 1 1 1 1 1 1 1 1 - Binary => 1, - }, + # CINF (GPMF) - seen: 0x67376be7709bc8876a8baf3940908618, 0xe230988539b30cf5f016627ae8fc5395, + # 0x8bcbe424acc5b37d7d77001635198b3b (fmt B) (Camera INFormation?) + # CMOD (GPMF) - seen: 12,13,17 [12 360 video, 13 time-laps video, 17 JPEG] (fmt B) + # CRTX (GPMF-BACK/FRNT) - double[1] + # CRTY (GPMF-BACK/FRNT) - double[1] CSEN => { #PH (Karma) Name => 'CoyoteSense', # UNIT=s,rad/s,rad/s,rad/s,g,g,g,,,, @@ -122,13 +123,27 @@ # SCAL=1000 1 1 1 1 1 1 1 1 1 1 Binary => 1, }, + CYTS => { #PH (Karma) + Name => 'CoyoteStatus', + # UNIT=s,,,,,rad,rad,rad,, + # TYPE=LLLLLfffBB + # SCAL=1000 1 1 1 1 1 1 1 1 1 + Binary => 1, + }, DEVC => { #PH (gpmd,GPMF, fmt \0) Name => 'DeviceContainer', SubDirectory => { TagTable => 'Image::ExifTool::GoPro::GPMF' }, + # (Max) DVID=1,DVNM='Global Settings',VERS,FMWR,LINF,CINF,CASN,MINF,MUID,CMOD,MTYP,OREN, + # DZOM,DZST,SMTR,PRTN,PTWB,PTSH,PTCL,EXPT,PIMX,PIMN,PTEV,RATE,SROT,ZFOV,VLTE,VLTA, + # EISE,EISA,AUPT,AUDO,BROD,BRID,PVUL,PRJT,SOFF + # (Max) DVID='GEOC',DVNM='Geometry Calibrations',SHFX,SHFY,SHFZ,ANGX,ANGY,ANGZ,CALW,CALH + # (Max) DVID='BACK',DVNM='Back Lens',KLNS,CTRX,CTRY,MFOV,SFTR + # (Max) DVID='FRNT',DVNM='Front Lens',KLNS,CTRX,CTRY,MFOV,SFTR + # (Max) DVID='HLMT',DVNM='Highlights' }, - # DVID (GPMF) - DeviceID; seen: 1 (fmt L), HLMT (fmt F) + # DVID (GPMF) - DeviceID; seen: 1 (fmt L), HLMT (fmt F), GEOC (fmt F), 'BACK' (fmt F, Max) DVID => { Name => 'DeviceID', Unknown => 1 }, #2 (gpmd) - # DVNM (GPMF) seen: 'Video Global Settings' (fmt c), 'Highlights' (fmt c) + # DVNM (GPMF) seen: 'Video Global Settings' (fmt c), 'Highlights' (fmt c), 'Geometry Calibrations' (Max) # DVNM (gpmd) seen: 'Camera' (Hero5), 'Hero6 Black' (Hero6), 'GoPro Karma v1.0' (Karma) DVNM => 'DeviceName', #PH (n/c) DZOM => { #PH (GPMF - seen: 'Y', fmt c) @@ -136,10 +151,10 @@ PrintConv => { N => 'No', Y => 'Yes' }, }, # DZST (GPMF) - seen: 0 (fmt L) (something to do with digital zoom maybe?) - EISA => { #PH (GPMF) - seen: 'Y','N', 'HS EIS' (fmt c) [N was for a time-lapse video] + EISA => { #PH (GPMF) - seen: 'Y','N','HS EIS','N/A' (fmt c) [N was for a time-lapse video] Name => 'ElectronicImageStabilization', }, - # EISE (GPMF) - seen: 'Y' (fmt c) + # EISE (GPMF) - seen: 'Y','N' (fmt c) EMPT => { Name => 'Empty', Unknown => 1 }, #2 (gpmd) ESCS => { #PH (Karma) Name => 'EscapeStatus', @@ -215,7 +230,8 @@ RawConv => '$val', # necessary to use scaled value instead of raw data as subdir data SubDirectory => { TagTable => 'Image::ExifTool::GoPro::KBAT' }, }, - # LINF (GPMF) - seen: LAJ7061916601668 (fmt c) (Lens INFormation?) + # KLNS (GPMF-BACK/FRNT) - double[5] (fmt d, Max) + # LINF (GPMF) - seen: LAJ7061916601668,C3341326002180,C33632245450981 (fmt c) (Lens INFormation?) LNED => { #PH (Karma) Name => 'LocalPositionNED', # UNIT=s,m,m,m,m/s,m/s,m/s @@ -224,12 +240,13 @@ Binary => 1, }, MAGN => 'Magnetometer', #1 (gpmd) (units of uT) + # MFOV (GPMF-BACK/FRNT) - seen: 100 (fmt d, Max) MINF => { #PH (GPMF - seen: HERO6 Black, fmt c) Name => 'Model', Groups => { 2 => 'Camera' }, Description => 'Camera Model Name', }, - # MTYP (GPMF) - seen: 0,1,11 [1 for time-lapse video, 11 for JPEG] (fmt B) + # MTYP (GPMF) - seen: 0,1,5,11 [1 for time-lapse video, 5 for 360 video, 11 for JPEG] (fmt B) # MUID (GPMF) - seen: 3882563431 2278071152 967805802 411471936 0 0 0 0 (fmt L) OREN => { #PH (GPMF - seen: 'U', fmt c) Name => 'AutoRotation', @@ -243,8 +260,9 @@ PHDR => 'HDRSetting', #PH (APP6 - seen: 0) PIMN => 'AutoISOMin', #PH (GPMF - seen: 100, fmt L) PIMX => 'AutoISOMax', #PH (GPMF - seen: 1600, fmt L) - # PRAW (APP6) - seen: 0, 'N' (fmt c) + # PRAW (APP6) - seen: 0, 'N', 'Y' (fmt c) PRES => 'PhotoResolution', #PH (APP6 - seen: '12MP_W') + # PRJT (APP6) - seen: 'GPRO','EACO' (fmt F, Hero8, Max) PRTN => { #PH (GPMF - seen: 'N', fmt c) Name => 'ProTune', PrintConv => { @@ -256,6 +274,7 @@ PTEV => 'ExposureCompensation', #PH (GPMF - seen: '0.0', fmt c) PTSH => 'Sharpness', #PH (GPMF - seen: 'HIGH', fmt c) PTWB => 'WhiteBalance', #PH (GPMF - seen: 'AUTO', fmt c) + # PVUL (APP6) - seen: 'F' (fmt c, Hero8, Max) RATE => 'Rate', #PH (GPMF - seen: '0_5SEC', fmt c; APP6 - seen: '4_1SEC') RMRK => { #2 (gpmd) Name => 'Comments', @@ -272,6 +291,10 @@ # SCAL=1000 0.00999999977648258 0.00999999977648258 100 %addUnits, }, + # SFTR (GPMF-BACK/FRNT) - seen 0.999,1.00004 (fmt d, Max) + # SHFX (GPMF-GEOC) - seen 22.92 (fmt d, Max) + # SHFY (GPMF-GEOC) - seen 0.123 (fmt d, Max) + # SHFZ (GPMF-GEOC) - seen 36.06 (fmt d, Max) SHUT => { #2 (gpmd) Name => 'ExposureTimes', PrintConv => q{ @@ -293,6 +316,8 @@ ValueConv => '$self->Decode($val, "Latin")', }, # SMTR (GPMF) - seen: 'N' (fmt c) + # SOFF (APP6) - seen: 0 (fmt L, Hero8, Max) + # SROT (GPMF) - seen 20.60 (fmt f, Max) STMP => { #1 (gpmd) Name => 'TimeStamp', ValueConv => '$val / 1e6', @@ -335,6 +360,10 @@ Unknown => 1, ValueConv => '$self->Decode($val, "Latin")', }, + VERS => { + Name => 'MetadataVersion', + PrintConv => '$val =~ tr/ /./; $val', + }, VFOV => { #PH (GPMF - seen: 'W', fmt c) Name => 'FieldOfView', PrintConv => { @@ -356,6 +385,22 @@ Name => 'WhiteBalanceRGB', Binary => 1, }, + # ZFOV (APP6,GPMF) - seen: 148.34, 0 (fmt f, Hero8, Max) + # the following ref forum12825 + MUID => { + Name => 'MediaUniqueID', + PrintConv => q{ + my @a = split ' ', $val; + $_ = sprintf('%.8x',$_) foreach @a; + return join('', @a); + }, + }, + EXPT => 'MaximumShutterAngle', + MTRX => 'AccelerometerMatrix', + ORIN => 'InputOrientation', + ORIO => 'OutputOrientation', + UNIF => 'InputUniformity', + SROT => 'SensorReadoutTime', ); # GoPro GPS5 tags (ref 2) (Hero5,Hero6) @@ -585,6 +630,7 @@ # Process GoPro metadata (gpmd samples, GPMF box, or APP6) (ref PH/1/2) # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref # Returns: 1 on success +# - with hack to check for encrypted text in gpmd data (Rove Stealth 4K) sub ProcessGoPro($$$) { my ($et, $dirInfo, $tagTablePtr) = @_; @@ -687,7 +733,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/GPS.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GPS.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/GPS.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/GPS.pm 2022-01-12 22:51:55.000000000 +0000 @@ -12,13 +12,12 @@ use vars qw($VERSION); use Image::ExifTool::Exif; -$VERSION = '1.51'; +$VERSION = '1.53'; my %coordConv = ( ValueConv => 'Image::ExifTool::GPS::ToDegrees($val)', ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val)', PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1)', - PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val)', ); %Image::ExifTool::GPS::Main = ( @@ -41,7 +40,7 @@ Notes => q{ tags 0x0001-0x0006 used for camera location according to MWG 2.0. ExifTool will also accept a number when writing GPSLatitudeRef, positive for north - latitudes or negative for south, or a string ending in N or S + latitudes or negative for south, or a string containing N, North, S or South }, Count => 2, PrintConv => { @@ -50,8 +49,8 @@ OTHER => sub { my ($val, $inv) = @_; return undef unless $inv; - return uc $1 if $val =~ /\b([NS])$/i; - return $1 eq '-' ? 'S' : 'N' if $val =~ /^([-+]?)\d+(\.\d*)?$/; + return uc $2 if $val =~ /(^|[^A-Z])([NS])(orth|outh)?\b/i; + return $1 eq '-' ? 'S' : 'N' if $val =~ /([-+]?)\d+/; return undef; }, N => 'North', @@ -63,6 +62,7 @@ Writable => 'rational64u', Count => 3, %coordConv, + PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val,undef,"lat")', }, 0x0003 => { Name => 'GPSLongitudeRef', @@ -70,7 +70,7 @@ Count => 2, Notes => q{ ExifTool will also accept a number when writing this tag, positive for east - longitudes or negative for west, or a string ending in E or W + longitudes or negative for west, or a string containing E, East, W or West }, PrintConv => { # extract E/W if written from Composite:GPSLongitude @@ -78,8 +78,8 @@ OTHER => sub { my ($val, $inv) = @_; return undef unless $inv; - return uc $1 if $val =~ /\b([EW])$/i; - return $1 eq '-' ? 'W' : 'E' if $val =~ /^([-+]?)\d+(\.\d*)?$/; + return uc $2 if $val =~ /(^|[^A-Z])([EW])(ast|est)?\b/i; + return $1 eq '-' ? 'W' : 'E' if $val =~ /([-+]?)\d+/; return undef; }, E => 'East', @@ -91,6 +91,7 @@ Writable => 'rational64u', Count => 3, %coordConv, + PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val,undef,"lon")', }, 0x0005 => { Name => 'GPSAltitudeRef', @@ -136,22 +137,26 @@ my ($v, $et) = @_; $v = $et->TimeNow() if lc($v) eq 'now'; my @tz; - if ($v =~ s/([-+])(.*)//s) { # remove timezone + if ($v =~ s/([-+])(\d{1,2}):?(\d{2})\s*(DST)?$//i) { # remove timezone my $s = $1 eq '-' ? 1 : -1; # opposite sign to convert back to UTC my $t = $2; - @tz = ($s*$1, $s*$2) if $t =~ /^(\d{2}):?(\d{2})\s*$/; + @tz = ($s*$2, $s*$3); } - my @a = ($v =~ /((?=\d|\.\d)\d*(?:\.\d*)?)/g); - push @a, '00' while @a < 3; + # (note: we must allow '.' as a time separator, eg. '10.30.00', with is tricky due to decimal seconds) + # YYYYmmddHHMMSS[.ss] format + my @a = ($v =~ /^[^\d]*\d{4}[^\d]*\d{1,2}[^\d]*\d{1,2}[^\d]*(\d{1,2})[^\d]*(\d{2})[^\d]*(\d{2}(?:\.\d+)?)[^\d]*$/); + # HHMMSS[.ss] format + @a or @a = ($v =~ /^[^\d]*(\d{1,2})[^\d]*(\d{2})[^\d]*(\d{2}(?:\.\d+)?)[^\d]*$/); + @a or warn('Invalid time (use HH:MM:SS[.ss][+/-HH:MM|Z])'), return undef; if (@tz) { # adjust to UTC - $a[-2] += $tz[1]; - $a[-3] += $tz[0]; - while ($a[-2] >= 60) { $a[-2] -= 60; ++$a[-3] } - while ($a[-2] < 0) { $a[-2] += 60; --$a[-3] } - $a[-3] = ($a[-3] + 24) % 24; + $a[1] += $tz[1]; + $a[0] += $tz[0]; + while ($a[1] >= 60) { $a[1] -= 60; ++$a[0] } + while ($a[1] < 0) { $a[1] += 60; --$a[0] } + $a[0] = ($a[0] + 24) % 24; } - return "$a[-3]:$a[-2]:$a[-1]"; + return join(':', @a); }, }, 0x0008 => { @@ -238,6 +243,7 @@ Writable => 'rational64u', Count => 3, %coordConv, + PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val,undef,"lat")', }, 0x0015 => { Name => 'GPSDestLongitudeRef', @@ -250,6 +256,7 @@ Writable => 'rational64u', Count => 3, %coordConv, + PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val,undef,"lon")', }, 0x0017 => { Name => 'GPSDestBearingRef', @@ -529,18 +536,26 @@ #------------------------------------------------------------------------------ # Convert to decimal degrees # Inputs: 0) a string containing 1-3 decimal numbers and any amount of other garbage -# 1) true if value should be negative if coordinate ends in 'S' or 'W' -# Returns: Coordinate in degrees -sub ToDegrees($;$) +# 1) true if value should be negative if coordinate ends in 'S' or 'W', +# 2) 'lat' or 'lon' to extract lat or lon from GPSCoordinates string +# Returns: Coordinate in degrees, or '' on error +sub ToDegrees($;$$) { - my ($val, $doSign) = @_; + my ($val, $doSign, $coord) = @_; return '' if $val =~ /\b(inf|undef)\b/; # ignore invalid values + # use only lat or lon part of combined GPSCoordinates inputs + if ($coord and ($coord eq 'lat' or $coord eq 'lon') and + # (two formatted coordinate values with cardinal directions, separated by a comma) + $val =~ /^(.*(?:N(?:orth)?|S(?:outh)?)),\s*(.*(?:E(?:ast)?|W(?:est)?))$/i) + { + $val = $coord eq 'lat' ? $1 : $2; + } # extract decimal or floating point values out of any other garbage my ($d, $m, $s) = ($val =~ /((?:[+-]?)(?=\d|\.\d)\d*(?:\.\d*)?(?:[Ee][+-]\d+)?)/g); return '' unless defined $d; my $deg = $d + (($m || 0) + ($s || 0)/60) / 60; # make negative if S or W coordinate - $deg = -$deg if $doSign ? $val =~ /[^A-Z](S|W)$/i : $deg < 0; + $deg = -$deg if $doSign ? $val =~ /[^A-Z](S(outh)?|W(est)?)\s*$/i : $deg < 0; return $deg; } @@ -564,7 +579,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/H264.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/H264.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/H264.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/H264.pm 2022-01-12 22:51:55.000000000 +0000 @@ -89,7 +89,7 @@ Notes => 'hours:minutes:seconds:frames', ValueConv => 'sprintf("%.2x:%.2x:%.2x:%.2x",reverse unpack("C*",$val))', }, - # 0x14 - TitleBinaryGroup + # 0x14 - TitleBinaryGroup - val: 0x00000000,0x14200130 # 0x15 - TitleCassetteNo (ref 7) # 0x16-0x17 - TitleSoftID (ref 7) # (0x18,0x19 listed as TitleTextHeader/TitleText by ref 7) @@ -134,8 +134,8 @@ Name => 'Camera2', SubDirectory => { TagTable => 'Image::ExifTool::H264::Camera2' }, }, - # 0x73 Lens - val: 0x75ffffd3,0x0effffd3,0x59ffffd3,0x79ffffd3,0xffffffd3... - # 0x74 Gain + # 0x73 Lens - val: 0x04ffffd3,0x0effffd3,0x15ffffd3,0x41ffffd3,0x52ffffd3,0x59ffffd3,0x65ffffd3,0x71ffffd3,0x75ffffd3,0x79ffffd3,0x7fffffd3,0xffffffd3... + # 0x74 Gain - val: 0xb8ffff0f # 0x75 Pedestal # 0x76 Gamma # 0x77 Detail @@ -376,34 +376,49 @@ Notes => 'combined with tag 0xc8', }, # 0xc9-0xcf - GPSOption + # 0xc9 - val: 0x001d0203 + 0xca => { #PH (Sony DSC-HX7V) + Name => 'GPSDateStamp', + Format => 'string', + Groups => { 1 => 'GPS', 2 => 'Time' }, + Combine => 2, # the next 2 tags contain the rest of the string + Notes => 'combined with tags 0xcb and 0xcc', + ValueConv => 'Image::ExifTool::Exif::ExifDate($val)', + }, 0xe0 => { Name => 'MakeModel', SubDirectory => { TagTable => 'Image::ExifTool::H264::MakeModel' }, }, # 0xe1-0xef - MakerOption # 0xe1 - val: 0x01000670,0x01000678,0x06ffffff,0x01ffffff,0x01000020,0x01000400... - # 0xe2-0xe8 - val: 0x00000000 in many samples 0xe1 => { #6 Name => 'RecInfo', Condition => '$$self{Make} eq "Canon"', Notes => 'Canon only', SubDirectory => { TagTable => 'Image::ExifTool::H264::RecInfo' }, }, + # 0xe2-0xe8 - val: 0x00000000 in many samples + # 0xe2 - val: 0x00000000,0x01000000,0x01010000,0x8080900c,0x8080a074 + # 0xe3 - val: 0x00801f89,0x00801f8b,0x00c01f89,0xc9c01f80 0xe4 => { #PH Name => 'Model', Condition => '$$self{Make} eq "Sony"', # (possibly also Canon models?) Description => 'Camera Model Name', - Notes => 'Sony cameras only, combined with tags 0xe5 and 0xe6', + Notes => 'Sony only, combined with tags 0xe5 and 0xe6', Format => 'string', Combine => 2, # (not sure about 0xe6, but include it just in case) RawConv => '$val eq "" ? undef : $val', }, + # 0xeb - val: 0x008a0a00,0x0a300000,0x508a0a00,0x52880a00,0x528a0a00 + # 0xec - val: 0x0b700000 + # 0xed - val: 0x0ce0f819 0xee => { #6 (HFS200) Name => 'FrameInfo', Condition => '$$self{Make} eq "Canon"', Notes => 'Canon only', SubDirectory => { TagTable => 'Image::ExifTool::H264::FrameInfo' }, }, + # 0xef - val: 0x01c00000,0x0e00000c ); # ConsumerCamera1 information (ref PH) @@ -890,7 +905,7 @@ #------------------------------------------------------------------------------ # Process H.264 Supplementary Enhancement Information (ref 1/PH) -# Inputs: 0) Exiftool ref, 1) dirInfo ref, 2) tag table ref +# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref # Returns: 1 if we processed payload type 5 # Payload types: # 0 - buffer period @@ -1108,7 +1123,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/HP.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/HP.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/HP.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/HP.pm 2022-01-12 22:51:55.000000000 +0000 @@ -250,7 +250,7 @@ =head1 AUTHOR -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com) +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/HtmlDump.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/HtmlDump.pm --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/HtmlDump.pm 2020-01-02 12:08:51.000000000 +0000 +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/HtmlDump.pm 2022-01-12 22:51:55.000000000 +0000 @@ -13,7 +13,7 @@ use Image::ExifTool; # only for FinishTiffDump() use Image::ExifTool::HTML qw(EscapeHTML); -$VERSION = '1.37'; +$VERSION = '1.39'; sub DumpTable($$$;$$$$$$); sub Open($$$;@); @@ -97,7 +97,8 @@ var safari1 = navigator.userAgent.indexOf("Safari/312.6") >= 0; var ie6 = navigator.userAgent.toLowerCase().indexOf('msie 6') >= 0; var mspan = new Array; -var hlist, tt, tb; +var clicked = 0; +var hlist, tt, tb, firstOutEvt, lastInEvt; function GetElementsByClass(classname, tagname) { var found = new Array(); @@ -115,6 +116,20 @@ return found; } +// click mouse +function doClick(e) +{ + if (!clicked) { + firstOutEvt = lastInEvt = undefined; + high(e, 2); + if (hlist) clicked = 1; + } else { + clicked = 0; + if (firstOutEvt) high(firstOutEvt, 0); + if (lastInEvt) high(lastInEvt, 1); + } +} + // move tooltip function move(e) { @@ -162,6 +177,12 @@ // highlight/unhighlight text function high(e,on) { + if (on) { + lastInEvt = e; + } else { + if (!firstOutEvt) firstOutEvt = e; + } + if (clicked) return; var targ; if (e.target) targ = e.target; else if (e.srcElement) targ = e.srcElement; @@ -209,7 +230,7 @@ } for (var i=0; i

      Tag3. PrintConv2. ValueConv1. Raw0. Binary
      Tag3. PrintConv2. ValueConv1. Raw (Rational)0. Binary
      EXIF:OrientationHorizontal (normal)11
      00 01
      EXIF:GPSLatitude45 deg 20' 11.00"45.336388888888945 20 11
      (45/1 20/1 11/1)
      00 00 00 2d 00 00 00 01
      00 00 00 14 00 00 00 01
      00 00 00 0b 00 00 00 01
      ];
       
      -my $preMouse = q(
      );
      +my $preMouse = q(
      );
       
       #------------------------------------------------------------------------------
       # New - create new HtmlDump object
      @@ -896,7 +917,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/HTML.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/HTML.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/HTML.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/HTML.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -555,7 +555,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/ICC_Profile.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ICC_Profile.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/ICC_Profile.pm	2020-02-14 12:28:14.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ICC_Profile.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -11,6 +11,7 @@
       #               4) http://www.color.org/privatetag2007-01.pdf
       #               5) http://www.color.org/icc_specs2.xalter (approved revisions, 2010-07-16)
       #               6) Eef Vreeland private communication
      +#               7) https://color.org/specification/ICC.2-2019.pdf
       #
       # Notes:        The ICC profile information is different: the format of each
       #               tag is embedded in the information instead of in the directory
      @@ -24,7 +25,7 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.35';
      +$VERSION = '1.38';
       
       sub ProcessICC($$);
       sub ProcessICC_Profile($$$);
      @@ -52,6 +53,11 @@
           abst => 'Abstract Profile',
           nmcl => 'NamedColor Profile',
           nkpf => 'Nikon Input Device Profile (NON-STANDARD!)', # (written by Nikon utilities)
      +    # additions in v5 (ref 7)
      +    cenc => 'ColorEncodingSpace Profile',
      +   'mid '=> 'MultiplexIdentification Profile',
      +    mlnk => 'MultiplexLink Profile',
      +    mvis => 'MultiplexVisualization Profile',
       );
       my %manuSig = ( #6
           'NONE' => 'none',
      @@ -539,6 +545,90 @@
               Binary => 1, # (NC)
           },
       
      +    # new tags in v5 (ref 7)
      +    A2B3 => 'AToB3',
      +    A2M0 => 'AToM0',
      +    B2A3 => 'BToA3',
      +    bcp0 => 'BRDFColorimetricParam0',
      +    bcp1 => 'BRDFColorimetricParam1',
      +    bcp2 => 'BRDFColorimetricParam2',
      +    bcp3 => 'BRDFColorimetricParam3',
      +    bsp0 => 'BRDFSpectralParam0',
      +    bsp1 => 'BRDFSpectralParam1',
      +    bsp2 => 'BRDFSpectralParam2',
      +    bsp3 => 'BRDFSpectralParam3',
      +    bAB0 => 'BRDFAToB0',
      +    bAB1 => 'BRDFAToB1',
      +    bAB2 => 'BRDFAToB2',
      +    bAB3 => 'BRDFAToB3',
      +    bBA0 => 'BRDFBToA0',
      +    bBA1 => 'BRDFBToA1',
      +    bBA2 => 'BRDFBToA2',
      +    bBA3 => 'BRDFBToA3',
      +    bBD0 => 'BRDFBToD0',
      +    bBD1 => 'BRDFBToD1',
      +    bBD2 => 'BRDFBToD2',
      +    bBD3 => 'BRDFBToD3',
      +    bDB0 => 'BRDFDToB0',
      +    bDB1 => 'BRDFDToB1',
      +    bDB2 => 'BRDFDToB2',
      +    bDB3 => 'BRDFDToB3',
      +    bMB0 => 'BRDFMToB0',
      +    bMB1 => 'BRDFMToB1',
      +    bMB2 => 'BRDFMToB2',
      +    bMB3 => 'BRDFMToB3',
      +    bMS0 => 'BRDFMToS0',
      +    bMS1 => 'BRDFMToS1',
      +    bMS2 => 'BRDFMToS2',
      +    bMS3 => 'BRDFMToS3',
      +    dAB0 => 'DirectionalAToB0',
      +    dAB1 => 'DirectionalAToB1',
      +    dAB2 => 'DirectionalAToB2',
      +    dAB3 => 'DirectionalAToB3',
      +    dBA0 => 'DirectionalBToA0',
      +    dBA1 => 'DirectionalBToA1',
      +    dBA2 => 'DirectionalBToA2',
      +    dBA3 => 'DirectionalBToA3',
      +    dBD0 => 'DirectionalBToD0',
      +    dBD1 => 'DirectionalBToD1',
      +    dBD2 => 'DirectionalBToD2',
      +    dBD3 => 'DirectionalBToD3',
      +    dDB0 => 'DirectionalDToB0',
      +    dDB1 => 'DirectionalDToB1',
      +    dDB2 => 'DirectionalDToB2',
      +    dDB3 => 'DirectionalDToB3',
      +    gdb0 => 'GamutBoundaryDescription0',
      +    gdb1 => 'GamutBoundaryDescription1',
      +    gdb2 => 'GamutBoundaryDescription2',
      +    gdb3 => 'GamutBoundaryDescription3',
      +   'mdv '=> 'MultiplexDefaultValues',
      +    mcta => 'MultiplexTypeArray',
      +    minf => 'MeasurementInfo',
      +    miin => 'MeasurementInputInfo',
      +    M2A0 => 'MToA0',
      +    M2B0 => 'MToB0',
      +    M2B1 => 'MToB1',
      +    M2B2 => 'MToB2',
      +    M2B3 => 'MToB3',
      +    M2S0 => 'MToS0',
      +    M2S1 => 'MToS1',
      +    M2S2 => 'MToS2',
      +    M2S3 => 'MToS3',
      +    cept => 'ColorEncodingParams',
      +    csnm => 'ColorSpaceName',
      +    cloo => 'ColorantOrderOut',
      +    clio => 'ColorantInfoOut',
      +    c2sp => 'CustomToStandardPcc',
      +   'CxF '=> 'CXF',
      +    nmcl => 'NamedColor',
      +    psin => 'ProfileSequenceInfo',
      +    rfnm => 'ReferenceName',
      +    svcn => 'SpectralViewingConditions',
      +    swpt => 'SpectralWhitePoint',
      +    s2cp => 'StandardToCustomPcc',
      +    smap => 'SurfaceMap',
      +    # smwp ? (seen in some v5 samples)
      +
           # the following entry represents the ICC profile header, and doesn't
           # exist as a tag in the directory.  It is only in this table to provide
           # a link so ExifTool can locate the header tags
      @@ -850,7 +940,7 @@
           # dataType
           if ($type eq 'data' and $size >= 12) {
               my $form = Get32u($dataPt, $offset+8);
      -        # format 0 is ASCII data
      +        # format 0 is UTF-8 data
               $form == 0 and return substr($$dataPt, $offset+12, $size-12);
               # binary data and other data types treat as binary (ie. don't format)
           }
      @@ -1022,7 +1112,7 @@
           $profileClass{substr($$valPtr, 12, 4)} or $err = 'profile class';
           my $col = substr($$valPtr, 16, 4); # ColorSpaceData
           my $con = substr($$valPtr, 20, 4); # ConnectionSpace
      -    my $match = '(XYZ |Lab |Luv |YCbr|Yxy |RGB |GRAY|HSV |HLS |CMYK|CMY |[2-9A-F]CLR)';
      +    my $match = '(XYZ |Lab |Luv |YCbr|Yxy |RGB |GRAY|HSV |HLS |CMYK|CMY |[2-9A-F]CLR|nc..|\0{4})';
           $col =~ /$match/ or $err = 'color space';
           $con =~ /$match/ or $err = 'connection space';
           return $err ? "Invalid ICC profile (bad $err)" : undef;
      @@ -1134,7 +1224,7 @@
               my $tagInfo = $et->GetTagInfo($tagTablePtr, $tagID);
               # unknown tags aren't generated automatically by GetTagInfo()
               # if the tagID's aren't numeric, so we must do this manually:
      -        if (not $tagInfo and $$et{OPTIONS}{Unknown}) {
      +        if (not $tagInfo and ($$et{OPTIONS}{Unknown} or $verbose)) {
                   $tagInfo = { Unknown => 1 };
                   AddTagToTable($tagTablePtr, $tagID, $tagInfo);
               }
      @@ -1225,7 +1315,7 @@
                   my $type = substr($$dataPt, $valuePtr, 4);
                   #### eval Validate ($type)
                   if (defined $$subdir{Validate} and not eval $$subdir{Validate}) {
      -                $et->Warn("Invalid $name data");
      +                $et->Warn("Invalid ICC $name data");
                   } else {
                       $et->ProcessDirectory(\%subdirInfo, $newTagTable, $$subdir{ProcessProc});
                   }
      @@ -1264,7 +1354,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      @@ -1277,6 +1367,8 @@
       
       =item L
       
      +=item L
      +
       =back
       
       =head1 SEE ALSO
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/ID3.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ID3.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/ID3.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ID3.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -1,13 +1,15 @@
       #------------------------------------------------------------------------------
       # File:         ID3.pm
       #
      -# Description:  Read ID3 meta information
      +# Description:  Read ID3 and Lyrics3 meta information
       #
       # Revisions:    09/12/2005 - P. Harvey Created
      +#               09/08/2020 - PH Added Lyrics3 support
       #
       # References:   1) http://www.id3.org/
       #               2) http://www.mp3-tech.org/
       #               3) http://www.fortunecity.com/underworld/sonic/3/id3tag.html
      +#               4) https://id3.org/Lyrics3
       #------------------------------------------------------------------------------
       
       package Image::ExifTool::ID3;
      @@ -16,11 +18,12 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.53';
      +$VERSION = '1.57';
       
       sub ProcessID3v2($$$);
       sub ProcessPrivate($$$);
       sub ProcessSynText($$$);
      +sub ProcessID3Dir($$$);
       sub ConvertID3v1Text($$);
       sub ConvertTimeStamp($);
       
      @@ -67,14 +70,15 @@
       # This table is just for documentation purposes
       %Image::ExifTool::ID3::Main = (
           VARS => { NO_ID => 1 },
      +    PROCESS_PROC => \&ProcessID3Dir, # (used to process 'id3 ' chunk in WAV files)
           NOTES => q{
      -        ExifTool extracts ID3 information from MP3, MPEG, AIFF, OGG, FLAC, APE, MPC
      -        and RealAudio files.  ID3v2 tags which support multiple languages (eg.
      -        Comment and Lyrics) are extracted by specifying the tag name, followed by a
      -        dash ('-'), then a 3-character ISO 639-2 language code (eg. "Comment-spa").
      -        See L for the official ID3 specification and
      -        L for a list of ISO
      -        639-2 language codes.
      +        ExifTool extracts ID3 and Lyrics3 information from MP3, MPEG, WAV, AIFF,
      +        OGG, FLAC, APE, MPC and RealAudio files.  ID3v2 tags which support multiple
      +        languages (eg. Comment and Lyrics) are extracted by specifying the tag name,
      +        followed by a dash ('-'), then a 3-character ISO 639-2 language code (eg.
      +        "Comment-spa"). See L for the official ID3
      +        specification and L
      +        for a list of ISO 639-2 language codes.
           },
           ID3v1 => {
               Name => 'ID3v1',
      @@ -98,6 +102,24 @@
           },
       );
       
      +# Lyrics3 tags (ref 4)
      +%Image::ExifTool::ID3::Lyrics3 = (
      +    GROUPS => { 1 => 'Lyrics3', 2 => 'Audio' },
      +    NOTES => q{
      +        ExifTool extracts Lyrics3 version 1.00 and 2.00 tags from any file that
      +        supports ID3.  See L for the specification.
      +    },
      +    IND => 'Indications',
      +    LYR => 'Lyrics',
      +    INF => 'AdditionalInfo',
      +    AUT => { Name => 'Author', Groups => { 2 => 'Author' } },
      +    EAL => 'ExtendedAlbumName',
      +    EAR => 'ExtendedArtistName',
      +    ETT => 'ExtendedTrackTitle',
      +    IMG => 'AssociatedImageFile',
      +    CRC => 'CRC', #PH
      +);
      +
       # Mapping for ID3v1 Genre numbers
       my %genre = (
             0 => 'Blues',
      @@ -613,6 +635,9 @@
               Name => 'OlympusDSS',
               SubDirectory => { TagTable => 'Image::ExifTool::Olympus::DSS' },
           },
      +    GRP1 => 'Grouping',
      +    MVNM => 'MovementName', # (NC)
      +    MVIN => 'MovementNumber', # (NC)
       );
       
       # Tags for ID3v2.3 (http://www.id3.org/id3v2.3.0)
      @@ -1318,6 +1343,8 @@
               } elsif ($$tagInfo{Format} or $$tagInfo{SubDirectory}) {
                   $et->HandleTag($tagTablePtr, $id, undef, DataPt => \$val);
                   next;
      +        } elsif ($id eq 'GRP1' or $id eq 'MVNM' or $id eq 'MVIN') {
      +            $val =~ s/(^\0+|\0+$)//g;   # (PH guess)
               } elsif (not $$tagInfo{Binary}) {
                   $et->Warn("Don't know how to handle $id frame");
                   next;
      @@ -1342,7 +1369,7 @@
       # Inputs: 0) ExifTool object reference, 1) dirInfo reference
       # Returns: 1 on success, 0 if this file didn't contain ID3 information
       # - also processes audio data if any ID3 information was found
      -# - sets ExifTool DoneID3 to 1 when called, or to 2 if an ID3v1 trailer exists
      +# - sets ExifTool DoneID3 to 1 when called, or to trailer size if an ID3v1 trailer exists
       sub ProcessID3($$)
       {
           my ($et, $dirInfo) = @_;
      @@ -1421,8 +1448,9 @@
       #
       # read ID3v1 trailer if it exists
       #
      +    my $trailSize = 0;
           if ($raf->Seek(-128, 2) and $raf->Read($tBuff, 128) == 128 and $tBuff =~ /^TAG/) {
      -        $$et{DoneID3} = 2;  # set to 2 as flag that trailer exists
      +        $trailSize = 128;
               %id3Trailer = (
                   DataPt   => \$tBuff,
                   DataPos  => $raf->Tell() - 128,
      @@ -1432,8 +1460,59 @@
               $id3Len += length($tBuff);
               $rtnVal = 1;
               # load 'Enhanced TAG' information if available
      -        if ($raf->Seek(-355, 2) and $raf->Read($eBuff, 227) == 227 and $eBuff =~ /^TAG+/) {
      +        my $eSize = 227;    # size of ID3 Enhanced TAG info
      +        if ($raf->Seek(-$trailSize - $eSize, 2) and $raf->Read($eBuff, $eSize) == $eSize and $eBuff =~ /^TAG+/) {
                   $id3Trailer{EnhancedTAG} = \$eBuff;
      +            $trailSize += $eSize;
      +        }
      +        $$et{DoneID3} = $trailSize; # save trailer size
      +    }
      +#
      +# read Lyrics3 trailer if it exists
      +#
      +    if ($raf->Seek(-$trailSize-15, 2) and $raf->Read($buff, 15) == 15 and $buff =~ /^(.{6})LYRICS(END|200)$/) {
      +        my $ver = $2;   # Lyrics3 version ('END' for version 1)
      +        my $len = ($ver eq 'END') ? 5100 : $1 + 15; # max Lyrics3 length
      +        my $tbl = GetTagTable('Image::ExifTool::ID3::Lyrics3');
      +        $len = $raf->Tell() if $len > $raf->Tell();
      +        if ($raf->Seek(-$len, 1) and $raf->Read($buff, $len) == $len and $buff =~ /LYRICSBEGIN/g) {
      +            my $pos = pos($buff);
      +            $$et{DoneID3} = $trailSize + $len - $pos + 11;  # update trailer length
      +            my $oldIndent = $$et{INDENT};
      +            $$et{INDENT} .= '| ';
      +            if ($et->Options('Verbose')) {
      +                $et->VPrint(0, "Lyrics3:\n");
      +                $et->VerboseDir('Lyrics3', undef, $len);
      +                if ($pos > 11) {
      +                    $buff = substr($buff, $pos - 11);
      +                    $pos = 11;
      +                }
      +                $et->VerboseDump(\$buff);
      +            }
      +            if ($ver eq 'END') {
      +                # Lyrics3 v1.00
      +                my $val = substr($buff, $pos, $len - $pos - 9);
      +                $et->HandleTag($tbl, 'LYR', $et->Decode($val, 'Latin'));
      +            } else {
      +                # Lyrics3 v2.00
      +                for (;;) {
      +                    # (note: the size field is 5 digits,, not 6 as per the documentation)
      +                    last unless $buff =~ /\G(.{3})(\d{5})/g;
      +                    my ($tag, $size) = ($1, $2);
      +                    $pos += 8;
      +                    last if $pos + $size > length($buff);
      +                    unless ($$tbl{$tag}) {
      +                        AddTagToTable($tbl, $tag, { Name => Image::ExifTool::MakeTagName("Lyrics3_$tag") });
      +                    }
      +                    $et->HandleTag($tbl, $tag, $et->Decode(substr($buff, $pos, $size), 'Latin'));
      +                    $pos += $size;
      +                    pos($buff) = $pos;
      +                }
      +                $pos == length($buff) - 15 or $et->Warn('Malformed Lyrics3 v2.00 block');
      +            }
      +            $$et{INDENT} = $oldIndent;
      +        } else {
      +            $et->Warn('Error reading Lyrics3 trailer');
               }
           }
       #
      @@ -1494,6 +1573,16 @@
       }
       
       #------------------------------------------------------------------------------
      +# Process ID3 directory
      +# Inputs: 0) ExifTool object reference, 1) dirInfo reference, 2) dummy tag table ref
      +sub ProcessID3Dir($$$)
      +{
      +    my ($et, $dirInfo, $tagTablePtr) = @_;
      +    $et->VerboseDir('ID3', undef, length ${$$dirInfo{DataPt}});
      +    return ProcessID3($et, $dirInfo);
      +}
      +
      +#------------------------------------------------------------------------------
       # Extract ID3 information from an MP3 audio file
       # Inputs: 0) ExifTool object reference, 1) dirInfo reference
       # Returns: 1 on success, 0 if this wasn't a valid MP3 file
      @@ -1563,7 +1652,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      @@ -1578,6 +1667,8 @@
       
       =item L
       
      +=item L
      +
       =back
       
       =head1 SEE ALSO
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Import.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Import.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Import.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Import.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -12,25 +12,26 @@
       
       use vars qw($VERSION @ISA @EXPORT_OK);
       
      -$VERSION = '1.09';
      +$VERSION = '1.10';
       @ISA = qw(Exporter);
       @EXPORT_OK = qw(ReadCSV ReadJSON);
       
       sub ReadJSONObject($;$);
       
      -my %unescapeJSON = ( 't'=>"\t", 'n'=>"\n", 'r'=>"\r" );
      +my %unescapeJSON = ( 't'=>"\t", 'n'=>"\n", 'r'=>"\r", 'b' => "\b", 'f' => "\f" );
       my $charset;
       
       #------------------------------------------------------------------------------
       # Read CSV file
      -# Inputs: 0) CSV file name, file ref or RAF ref, 1) database hash ref, 2) missing tag value
      +# Inputs: 0) CSV file name, file ref or RAF ref, 1) database hash ref,
      +#         2) missing tag value, 3) delimiter if other than ','
       # Returns: undef on success, or error string
       # Notes: There are various flavours of CSV, but here we assume that only
       #        double quotes are escaped, and they are escaped by doubling them
      -sub ReadCSV($$;$)
      +sub ReadCSV($$;$$)
       {
           local ($_, $/);
      -    my ($file, $database, $missingValue) = @_;
      +    my ($file, $database, $missingValue, $delim) = @_;
           my ($buff, @tags, $found, $err, $raf, $openedFile);
       
           if (UNIVERSAL::isa($file, 'File::RandomAccess')) {
      @@ -45,6 +46,7 @@
               $openedFile = 1;
               $raf = new File::RandomAccess(\*CSVFILE);
           }
      +    $delim = ',' unless defined $delim;
           # set input record separator by first newline found in the file
           # (safe because first line should contain only tag names)
           while ($raf->Read($buff, 65536)) {
      @@ -53,18 +55,18 @@
           $raf->Seek(0,0);
           while ($raf->ReadLine($buff)) {
               my (@vals, $v, $i, %fileInfo);
      -        my @toks = split ',', $buff;
      +        my @toks = split /\Q$delim/, $buff;
               while (@toks) {
                   ($v = shift @toks) =~ s/^ +//;  # remove leading spaces
                   if ($v =~ s/^"//) {
                       # quoted value must end in an odd number of quotes
                       while ($v !~ /("+)\s*$/ or not length($1) & 1) {
                           if (@toks) {
      -                        $v .= ',' . shift @toks;
      +                        $v .= $delim . shift @toks;
                           } else {
                               # read another line from the file
                               $raf->ReadLine($buff) or last;
      -                        @toks = split ',', $buff;
      +                        @toks = split /\Q$delim/, $buff;
                               last unless @toks;
                               $v .= shift @toks;
                           }
      @@ -330,9 +332,10 @@
       2) Optional string used to represent an undefined (missing) tag value. 
       (Used for deleting tags.)
       
      -3) [ReadJSON only] Optional character set for converting Unicode escape
      -sequences in strings.  Defaults to "UTF8".  See the ExifTool Charset option
      -for a list of valid settings.
      +3) For ReadCSV this gives the delimiter for CSV entries, with a default of
      +",".  For ReadJSON this is the character set for converting Unicode escape
      +sequences in strings, with a default of "UTF8".  See the ExifTool Charset
      +option for a list of valid character sets.
       
       =item Return Value:
       
      @@ -345,7 +348,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/InDesign.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/InDesign.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/InDesign.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/InDesign.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -258,7 +258,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/IPTC.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/IPTC.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/IPTC.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/IPTC.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -497,6 +497,7 @@
           103 => {
               Name => 'OriginalTransmissionReference',
               Format => 'string[0,32]',
      +        Notes => 'now used as a job identifier',
           },
           105 => {
               Name => 'Headline',
      @@ -1279,7 +1280,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/ISO.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ISO.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/ISO.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ISO.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -184,7 +184,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/ITC.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ITC.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/ITC.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ITC.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -191,7 +191,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/iWork.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/iWork.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/iWork.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/iWork.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -215,7 +215,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Jpeg2000.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Jpeg2000.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Jpeg2000.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Jpeg2000.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -16,9 +16,10 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.26';
      +$VERSION = '1.32';
       
       sub ProcessJpeg2000Box($$$);
      +sub ProcessJUMD($$$);
       
       my %resolutionUnit = (
           -3 => 'km',
      @@ -41,8 +42,25 @@
          'UUID-IPTC'   => 'JP2',
          'UUID-EXIF'   => 'JP2',
          'UUID-XMP'    => 'JP2',
      -  # jp2h         => 'JP2',  (not yet functional)
      -  # ICC_Profile  => 'jp2h', (not yet functional)
      +    jp2h         => 'JP2',
      +    colr         => 'jp2h',
      +    ICC_Profile  => 'colr',
      +    IFD1         => 'IFD0',
      +    EXIF         => 'IFD0', # to write EXIF as a block
      +    ExifIFD      => 'IFD0',
      +    GPS          => 'IFD0',
      +    SubIFD       => 'IFD0',
      +    GlobParamIFD => 'IFD0',
      +    PrintIM      => 'IFD0',
      +    InteropIFD   => 'ExifIFD',
      +    MakerNotes   => 'ExifIFD',
      +);
      +
      +# map of where information is written in a JXL image
      +my %jxlMap = (
      +    IFD0         => 'Exif',
      +    XMP          => 'XML',
      +   'Exif'        => 'JP2',
           IFD1         => 'IFD0',
           EXIF         => 'IFD0', # to write EXIF as a block
           ExifIFD      => 'IFD0',
      @@ -107,9 +125,13 @@
           WRITE_PROC => \&ProcessJpeg2000Box,
           PREFERRED => 1, # always add these tags when writing
           NOTES => q{
      -        The tags below are extracted from JPEG 2000 images, however ExifTool
      -        currently writes only EXIF, IPTC and XMP tags in these images.
      -    },
      +        The tags below are found in JPEG 2000 images and the JUMBF metadata in JPEG
      +        images, but not all of these are extracted.  Note that ExifTool currently
      +        writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
      +    },
      +#
      +# NOTE: ONLY TAGS WITH "Format" DEFINED ARE EXTRACTED!
      +#
          'jP  ' => 'JP2Signature', # (ref 1)
          "jP\x1a\x1a" => 'JP2Signature', # (ref 2)
           prfl => 'Profile',
      @@ -186,7 +208,11 @@
           comp => 'Composition',
           copt => 'CompositionOptions',
           inst => 'InstructionSet',
      -    asoc => 'Association',
      +    asoc => {
      +        Name => 'Association',
      +        SubDirectory => { },
      +    },
      +        # (Association box may contain any other sub-box)
           nlst => 'NumberList',
           bfil => 'BinaryFilter',
           drep => 'DesiredReproductions',
      @@ -195,13 +221,22 @@
           chck => 'DigitalSignature',
           mp7b => 'MPEG7Binary',
           free => 'Free',
      -    jp2c => 'ContiguousCodestream',
      +    jp2c => [{
      +        Name => 'ContiguousCodestream',
      +        Condition => 'not $$self{jumd_level}',
      +    },{
      +        Name => 'PreviewImage',
      +        Groups => { 2 => 'Preview' },
      +        Format => 'undef',
      +        Binary => 1,
      +    }],
           jp2i => {
               Name => 'IntellectualProperty',
               SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' },
           },
      -   'xml '=> {
      +   'xml '=> [{
               Name => 'XML',
      +        Condition => 'not $$self{IsJXL}',
               Writable => 'undef',
               Flags => [ 'Binary', 'Protected', 'BlockExtract' ],
               List => 1,
      @@ -209,11 +244,18 @@
                   by default, the XML data in this tag is parsed using the ExifTool XMP module
                   to to allow individual tags to be accessed when reading, but it may also be
                   extracted as a block via the "XML" tag, which is also how this tag is
      -            written and copied.  This is a List-type tag because multiple XML blocks may
      -            exist
      -        },
      +            written and copied.  It may also be extracted as a block by setting the API
      +            BlockExtract option.  This is a List-type tag because multiple XML blocks
      +            may exist
      +        },
      +        # (note: extracting as a block was broken in 11.04, and finally fixed in 12.14)
      +        SubDirectory => { TagTable => 'Image::ExifTool::XMP::XML' },
      +    },{
      +        Name => 'XMP',
      +        Notes => 'used for XMP in JPEG XL files',
      +        # NOTE: the hacked code relies on this being at index 1 of the tagInfo list!
               SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' },
      -    },
      +    }],
           uuid => [
               {
                   Name => 'UUID-EXIF',
      @@ -298,6 +340,22 @@
                   },
               },
               {
      +            Name => 'UUID-Signature',  # (seen in JUMB data of JPEG images)
      +            # (may be able to remove this when JUMBF specification is finalized)
      +            Condition => '$$valPt=~/^casg\x00\x11\x00\x10\x80\x00\x00\xaa\x00\x38\x9b\x71/',
      +            Format => 'undef',
      +            ValueConv => 'substr($val,16)',
      +        },
      +        {
      +            Name => 'UUID-C2PAClaimSignature',  # (seen in incorrectly-formatted JUMB data of JPEG images)
      +            # (may be able to remove this when JUMBF specification is finalized)
      +            Condition => '$$valPt=~/^c2cs\x00\x11\x00\x10\x80\x00\x00\xaa\x00\x38\x9b\x71/',
      +            SubDirectory => {
      +                TagTable => 'Image::ExifTool::CBOR::Main',
      +                Start => '$valuePtr + 16',
      +            },
      +        },
      +        {
                   Name => 'UUID-Unknown',
               },
               # also written by Adobe JPEG2000 plugin v1.5:
      @@ -316,6 +374,73 @@
                   Name => 'URL',
                   Format => 'string',
               },
      +    # JUMBF boxes (ref https://github.com/thorfdbg/codestream-parser)
      +    jumd => {
      +        Name => 'JUMBFDescr',
      +        SubDirectory => { TagTable => 'Image::ExifTool::Jpeg2000::JUMD' },
      +    },
      +    jumb => {
      +        Name => 'JUMBFBox',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::Jpeg2000::Main',
      +            ProcessProc => \&ProcessJUMB,
      +        },
      +    },
      +    json => {
      +        Name => 'JSONData',
      +        Flags => [ 'Binary', 'Protected', 'BlockExtract' ],
      +        Notes => q{
      +            by default, data in this tag is parsed using the ExifTool JSON module to to
      +            allow individual tags to be accessed when reading, but it may also be
      +            extracted as a block via the "JSONData" tag or by setting the API
      +            BlockExtract option
      +        },
      +        SubDirectory => { TagTable => 'Image::ExifTool::JSON::Main' },
      +    },
      +    cbor => {
      +        Name => 'CBORData',
      +        Flags => [ 'Binary', 'Protected' ],
      +        SubDirectory => { TagTable => 'Image::ExifTool::CBOR::Main' },
      +    },
      +    bfdb => { # used in JUMBF (see  # (used when tag is renamed according to JUMDLabel)
      +        Name => 'BinaryDataType',
      +        Notes => 'JUMBF, MIME type and optional file name',
      +        Format => 'undef',
      +        # (ignore "toggles" byte and just extract MIME type and file name)
      +        ValueConv => '$_=substr($val,1); s/\0+$//; s/\0/, /; $_',
      +        JUMBF_Suffix => 'Type', # (used when tag is renamed according to JUMDLabel)
      +    },
      +    bidb => { # used in JUMBF
      +        Name => 'BinaryData',
      +        Notes => 'JUMBF',
      +        Groups => { 2 => 'Preview' },
      +        Format => 'undef',
      +        Binary => 1,
      +        JUMBF_Suffix => 'Data', # (used when tag is renamed according to JUMDLabel)
      +    },
      +#
      +# stuff seen in JPEG XL images:
      +#
      +  # jbrd - JPEG Bitstream Reconstruction Data (allows lossless conversion back to original JPG)
      +    jxlc => {
      +        Name => 'JXLCodestream',
      +        Format => 'undef',
      +        Notes => q{
      +            Codestream in JPEG XL image.  Currently processed only to determine
      +            ImageSize
      +        },
      +        RawConv => 'Image::ExifTool::Jpeg2000::ProcessJXLCodestream($self,\$val); undef',
      +    },
      +    Exif => {
      +        Name => 'EXIF',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::Exif::Main',
      +            ProcessProc => \&Image::ExifTool::ProcessTIFF,
      +            WriteProc => \&Image::ExifTool::WriteTIFF,
      +            DirName => 'EXIF',
      +            Start => '$valuePtr + 4',
      +        },
      +    },
       );
       
       %Image::ExifTool::Jpeg2000::ImageHeader = (
      @@ -370,6 +495,7 @@
                   'jp2 ' => 'JPEG 2000 Image (.JP2)',           # image/jp2
                   'jpm ' => 'JPEG 2000 Compound Image (.JPM)',  # image/jpm
                   'jpx ' => 'JPEG 2000 with extensions (.JPX)', # image/jpx
      +            'jxl ' => 'JPEG XL Image (.JXL)',             # image/jxl
               },
           },
           1 => {
      @@ -435,11 +561,34 @@
       
       %Image::ExifTool::Jpeg2000::ColorSpec = (
           PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    WRITE_PROC => \&Image::ExifTool::WriteBinaryData, # (we don't actually call this)
           GROUPS => { 2 => 'Image' },
           FORMAT => 'int8s',
      +    WRITABLE => 1,
      +    # (Note: 'colr' is not a real group, but is used as a hack to write the
      +    #  necessary colr box.  This hack necessitated another hack in TagInfoXML.pm
      +    #  to avoid reporting this fake group in the XML output)
      +    WRITE_GROUP => 'colr',
      +    DATAMEMBER => [ 0 ],
      +    IS_SUBDIR => [ 3 ],
      +    NOTES => q{
      +        The table below contains tags in the color specification (colr) box.  This
      +        box may be rewritten by writing either ICC_Profile, ColorSpace or
      +        ColorSpecData.  When writing, any existing colr boxes are replaced with the
      +        newly created colr box.
      +
      +        B: Care must be taken when writing this color specification because
      +        writing a specification that is incompatible with the image data may make
      +        the image undisplayable.
      +    },
           0 => {
               Name => 'ColorSpecMethod',
               RawConv => '$$self{ColorSpecMethod} = $val',
      +        Protected => 1,
      +        Notes => q{
      +            default for writing is 2 when writing ICC_Profile, 1 when writing
      +            ColorSpace, or 4 when writing ColorSpecData
      +        },
               PrintConv => {
                   1 => 'Enumerated',
                   2 => 'Restricted ICC',
      @@ -447,9 +596,15 @@
                   4 => 'Vendor Color',
               },
           },
      -    1 => 'ColorSpecPrecedence',
      +    1 => {
      +        Name => 'ColorSpecPrecedence',
      +        Notes => 'default for writing is 0',
      +        Protected => 1,
      +    },
           2 => {
               Name => 'ColorSpecApproximation',
      +        Notes => 'default for writing is 0',
      +        Protected => 1,
               PrintConv => {
                   0 => 'Not Specified',
                   1 => 'Accurate',
      @@ -474,6 +629,7 @@
                   Name => 'ColorSpace',
                   Condition => '$$self{ColorSpecMethod} == 1',
                   Format => 'int32u',
      +            Protected => 1,
                   PrintConv => { # ref 15444-2 2002-05-15
                       0 => 'Bi-level',
                       1 => 'YCbCr(1)',
      @@ -503,11 +659,121 @@
               {
                   Name => 'ColorSpecData',
                   Format => 'undef[$size-3]',
      +            Writable => 'undef',
      +            Protected => 1,
                   Binary => 1,
               },
           ],
       );
       
      +# JUMBF description box
      +%Image::ExifTool::Jpeg2000::JUMD = (
      +    PROCESS_PROC => \&ProcessJUMD,
      +    GROUPS => { 0 => 'JUMBF', 1 => 'JUMBF', 2 => 'Image' },
      +    NOTES => 'Information extracted from the JUMBF description box.',
      +    'type' => {
      +        Name => 'JUMDType',
      +        ValueConv => 'unpack "H*", $val',
      +        PrintConv => q{
      +            my @a = $val =~ /^(\w{8})(\w{4})(\w{4})(\w{16})$/;
      +            return $val unless @a;
      +            my $ascii = pack 'H*', $a[0];
      +            $a[0] = "($ascii)" if $ascii =~ /^[a-zA-Z0-9]{4}$/;
      +            return join '-', @a;
      +        },
      +        # seen:
      +        # cacb/cast/caas/cacl/casg/json-00110010800000aa00389b71
      +        # 6579d6fbdba2446bb2ac1b82feeb89d1 - JPEG image
      +    },
      +    'label' => { Name => 'JUMDLabel' },
      +    'toggles' => {
      +        Name => 'JUMDToggles',
      +        Unknown => 1,
      +        PrintConv => { BITMASK => {
      +            0 => 'Requestable',
      +            1 => 'Label',
      +            2 => 'ID',
      +            3 => 'Signature',
      +        }},
      +    },
      +    'id'    => { Name => 'JUMDID', Description => 'JUMD ID' },
      +    'sig'   => { Name => 'JUMDSignature', PrintConv => 'unpack "H*", $val' },
      +);
      +
      +#------------------------------------------------------------------------------
      +# Read JUMBF box to keep track of sub-document numbers
      +# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
      +# Returns: 1 on success
      +sub ProcessJUMB($$$)
      +{
      +    my ($et, $dirInfo, $tagTablePtr) = @_;
      +    if ($$et{jumd_level}) {
      +        ++$$et{jumd_level}[-1]; # increment current sub-document number
      +    } else {
      +        $$et{jumd_level} = [ ++$$et{DOC_COUNT} ]; # new top-level sub-document
      +        $$et{SET_GROUP0} = 'JUMBF';
      +    }
      +    $$et{DOC_NUM} = join '-', @{$$et{jumd_level}};
      +    push @{$$et{jumd_level}}, 0;
      +    ProcessJpeg2000Box($et, $dirInfo, $tagTablePtr);
      +    delete $$et{DOC_NUM};
      +    delete $$et{JUMBFLabel};
      +    pop @{$$et{jumd_level}};
      +    if (@{$$et{jumd_level}} < 2) {
      +        delete $$et{jumd_level};
      +        delete $$et{SET_GROUP0};
      +    }
      +    return 1;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Read JUMBF description box (ref https://github.com/thorfdbg/codestream-parser)
      +# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
      +# Returns: 1 on success
      +sub ProcessJUMD($$$)
      +{
      +    my ($et, $dirInfo, $tagTablePtr) = @_;
      +    my $dataPt = $$dirInfo{DataPt};
      +    my $pos    = $$dirInfo{DirStart};
      +    my $end    = $pos + $$dirInfo{DirLen};
      +    $et->VerboseDir('JUMD', 0, $end-$pos);
      +    delete $$et{JUMBFLabel};
      +    $$dirInfo{DirLen} < 17 and $et->Warn('Truncated JUMD directory'), return 0;
      +    my $type = substr($$dataPt, $pos, 4);
      +    $et->HandleTag($tagTablePtr, 'type', substr($$dataPt, $pos, 16));
      +    $pos += 16;
      +    my $flags = Get8u($dataPt, $pos++);
      +    $et->HandleTag($tagTablePtr, 'toggles', $flags);
      +    if ($flags & 0x02) {    # label exists?
      +        pos($$dataPt) = $pos;
      +        $$dataPt =~ /\0/g or $et->Warn('Missing JUMD label terminator'), return 0;
      +        my $len = pos($$dataPt) - $pos;
      +        my $name = substr($$dataPt, $pos, $len);
      +        $et->HandleTag($tagTablePtr, 'label', $name);
      +        $pos += $len;
      +        if ($len) {
      +            $name =~ s/[^-_a-zA-Z0-9]([a-z])/\U$1/g; # capitalize characters after illegal characters
      +            $name =~ tr/-_a-zA-Z0-9//dc;    # remove other illegal characters
      +            $name =~ s/__/_/;               # collapse double underlines
      +            $name = ucfirst $name;          # capitalize first letter
      +            $name = "Tag$name" if length($name) < 2; # must at least 2 characters long
      +            $$et{JUMBFLabel} = $name;
      +        }
      +    }
      +    if ($flags & 0x04) {    # ID exists?
      +        $pos + 4 > $end and $et->Warn('Missing JUMD ID'), return 0;
      +        $et->HandleTag($tagTablePtr, 'id', Get32u($dataPt, $pos));
      +        $pos += 4;
      +    }
      +    if ($flags & 0x08) {    # signature exists?
      +        $pos + 32 > $end and $et->Warn('Missing JUMD signature'), return 0;
      +        $et->HandleTag($tagTablePtr, 'sig', substr($$dataPt, $pos, 32));
      +        $pos += 32;
      +    }
      +    $pos == $end or $et->Warn('Extra data in JUMD box'." $pos $end", 1);
      +    return 1;
      +}
      +
       #------------------------------------------------------------------------------
       # Create new JPEG 2000 boxes when writing
       # (Currently only supports adding top-level Writable JPEG2000 tags and certain UUID boxes)
      @@ -537,8 +803,29 @@
                   $et->VerboseValue("+ Jpeg2000:$$tagInfo{Name}", $val);
               }
           }
      -    # add UUID boxes
      +    # add UUID boxes (and/or JXL Exif/XML boxes)
           foreach $dirName (sort keys %$addDirs) {
      +        # handle JPEG XL XMP and EXIF
      +        if ($dirName eq 'XML' or $dirName eq 'Exif') {
      +            my ($tag, $dir) = $dirName eq 'XML' ? ('xml ', 'XMP') : ('Exif', 'EXIF');
      +            my $tagInfo = $Image::ExifTool::Jpeg2000::Main{$tag};
      +            $tagInfo = $$tagInfo[1] if ref $tagInfo eq 'ARRAY'; # (hack for stupid JXL XMP)
      +            my $subdir = $$tagInfo{SubDirectory};
      +            my $tagTable = GetTagTable($$subdir{TagTable});
      +            $tagTable = GetTagTable('Image::ExifTool::XMP::Main') if $dir eq 'XMP';
      +            my %dirInfo = (
      +                DirName => $dir,
      +                Parent => 'JP2',
      +            );
      +            my $newdir = $et->WriteDirectory(\%dirInfo, $tagTable, $$subdir{WriteProc});
      +            if (defined $newdir and length $newdir) {
      +                # not sure why, but EXIF box is padded with leading 0's in my sample
      +                my $pad = $dirName eq 'Exif' ? "\0\0\0\0" : '';
      +                my $boxhdr = pack('N', length($newdir) + length($pad) + 8) . $tag;
      +                Write($outfile, $boxhdr, $pad, $newdir) or return 0;
      +                next;
      +            }
      +        }
               next unless $uuid{$dirName};
               my $tagInfo;
               foreach $tagInfo (@{$Image::ExifTool::Jpeg2000::Main{uuid}}) {
      @@ -564,6 +851,48 @@
       }
       
       #------------------------------------------------------------------------------
      +# Create Color Specification Box
      +# Inputs: 0) ExifTool object ref, 1) Output file or scalar ref
      +# Returns: 1 on success
      +sub CreateColorSpec($$)
      +{
      +    my ($et, $outfile) = @_;
      +    my $meth   = $et->GetNewValue('Jpeg2000:ColorSpecMethod');
      +    my $prec   = $et->GetNewValue('Jpeg2000:ColorSpecPrecedence') || 0;
      +    my $approx = $et->GetNewValue('Jpeg2000:ColorSpecApproximation') || 0;
      +    my $icc    = $et->GetNewValue('ICC_Profile');
      +    my $space  = $et->GetNewValue('Jpeg2000:ColorSpace');
      +    my $cdata  = $et->GetNewValue('Jpeg2000:ColorSpecData');
      +    unless ($meth) {
      +        if ($icc) {
      +            $meth = 2;
      +        } elsif (defined $space) {
      +            $meth = 1;
      +        } elsif (defined $cdata) {
      +            $meth = 4;
      +        } else {
      +            $et->Warn('Color space not defined'), return 0;
      +        }
      +    }
      +    if ($meth eq '1') {
      +        defined $space or $et->Warn('Must specify ColorSpace'), return 0;
      +        $cdata = pack('N', $space);
      +    } elsif ($meth eq '2' or $meth eq '3') {
      +        defined $icc or $et->Warn('Must specify ICC_Profile'), return 0;
      +        $cdata = $icc;
      +    } elsif ($meth eq '4') {
      +        defined $cdata or $et->Warn('Must specify ColorSpecData'), return 0;
      +    } else {
      +        $et->Warn('Unknown ColorSpecMethod'), return 0;
      +    }
      +    my $boxhdr = pack('N', length($cdata) + 11) . 'colr';
      +    Write($outfile, $boxhdr, pack('CCC',$meth,$prec,$approx), $cdata) or return 0;
      +    ++$$et{CHANGED};
      +    $et->VPrint(1, "    + Jpeg2000:ColorSpec\n");
      +    return 1;
      +}
      +
      +#------------------------------------------------------------------------------
       # Process JPEG 2000 box
       # Inputs: 0) ExifTool object reference, 1) dirInfo reference, 2) Pointer to tag table
       # Returns: 1 on success when reading, or -1 on write error
      @@ -580,7 +909,7 @@
           my $raf = $$dirInfo{RAF};
           my $outfile = $$dirInfo{OutFile};
           my $dirEnd = $dirStart + $dirLen;
      -    my ($err, $outBuff, $verbose);
      +    my ($err, $outBuff, $verbose, $doColour);
       
           if ($outfile) {
               unless ($raf) {
      @@ -588,13 +917,19 @@
                   $outBuff = '';
                   $outfile = \$outBuff;
               }
      +        # determine if we will be writing colr box
      +        if ($$dirInfo{DirName} and $$dirInfo{DirName} eq 'JP2Header') {
      +            $doColour = 2 if defined $et->GetNewValue('ColorSpecMethod') or $et->GetNewValue('ICC_Profile') or
      +                             defined $et->GetNewValue('ColorSpecPrecedence') or defined $et->GetNewValue('ColorSpace') or
      +                             defined $et->GetNewValue('ColorSpecApproximation') or defined $et->GetNewValue('ColorSpecData');
      +        }
           } else {
               # (must not set verbose flag when writing!)
               $verbose = $$et{OPTIONS}{Verbose};
               $et->VerboseDir($$dirInfo{DirName}) if $verbose;
           }
           # loop through all contained boxes
      -    my ($pos, $boxLen);
      +    my ($pos, $boxLen, $lastBox);
           for ($pos=$dirStart; ; $pos+=$boxLen) {
               my ($boxID, $buff, $valuePtr);
               my $hdrLen = 8;     # the box header length
      @@ -603,9 +938,7 @@
                   my $n = $raf->Read($buff,$hdrLen);
                   unless ($n == $hdrLen) {
                       $n and $err = '', last;
      -                if ($outfile) {
      -                    CreateNewBoxes($et, $outfile) or $err = 1;
      -                }
      +                CreateNewBoxes($et, $outfile) or $err = 1 if $outfile;
                       last;
                   }
                   $dataPt = \$buff;
      @@ -617,6 +950,17 @@
               }
               $boxLen = unpack("x$pos N",$$dataPt);   # (length includes header and data)
               $boxID = substr($$dataPt, $pos+4, 4);
      +        # remove old colr boxes if necessary
      +        if ($doColour and $boxID eq 'colr') {
      +            if ($doColour == 1) { # did we successfully write the new colr box?
      +                $et->VPrint(1,"    - Jpeg2000:ColorSpec\n");
      +                ++$$et{CHANGED};
      +                next;
      +            }
      +            $et->Warn('Out-of-order colr box encountered');
      +            undef $doColour;
      +        }
      +        $lastBox = $boxID;
               $pos += $hdrLen;                # move to end of box header
               if ($boxLen == 1) {
                   # box header contains an additional 8-byte integer for length
      @@ -710,6 +1054,14 @@
                       }
                   }
               }
      +        # create new tag for JUMBF data values with name corresponding to JUMBFLabel
      +        if ($tagInfo and $$et{JUMBFLabel} and (not $$tagInfo{SubDirectory} or $$tagInfo{BlockExtract})) {
      +            $tagInfo = { %$tagInfo, Name => $$et{JUMBFLabel} . ($$tagInfo{JUMBF_Suffix} || '') };
      +            delete $$tagInfo{Description};
      +            AddTagToTable($tagTablePtr, '_JUMBF_' . $$et{JUMBFLabel}, $tagInfo);
      +            delete $$tagInfo{Protected}; # (must do this so -j -b returns JUMBF binary data)
      +            $$tagInfo{TagID} = $boxID;
      +        }
               if ($verbose) {
                   $et->VerboseInfo($boxID, $tagInfo,
                       Table  => $tagTablePtr,
      @@ -747,8 +1099,10 @@
                       # remove this directory from our create list
                       delete $$et{AddJp2Dirs}{$$tagInfo{Name}};
                       my $newdir;
      -                # only edit writable UUID boxes
      -                if ($uuid) {
      +                # only edit writable UUID, Exif and jp2h boxes
      +                if ($uuid or $boxID eq 'Exif' or ($boxID eq 'xml ' and $$et{IsJXL}) or
      +                    ($boxID eq 'jp2h' and $$et{EDIT_DIRS}{jp2h}))
      +                {
                           $newdir = $et->WriteDirectory(\%subdirInfo, $subTable, $$subdir{WriteProc});
                           next if defined $newdir and not length $newdir; # next if deleting the box
                       } elsif (defined $uuid) {
      @@ -760,6 +1114,11 @@
                       my $boxhdr = pack('N', length($newdir) + 8 + $prefixLen) . $boxID;
                       $boxhdr .= substr($$dataPt, $valuePtr, $prefixLen) if $prefixLen;
                       Write($outfile, $boxhdr, $newdir) or $err = 1;
      +                # write new colr box immediately after ihdr
      +                if ($doColour and $boxID eq 'ihdr') {
      +                    # (shouldn't be multiple ihdr boxes, but just in case, write only 1)
      +                    $doColour = $doColour==2 ? CreateColorSpec($et, $outfile) : 0;
      +                }
                   } else {
                       # extract as a block if specified
                       $subdirInfo{BlockInfo} = $tagInfo if $$tagInfo{BlockExtract};
      @@ -799,6 +1158,68 @@
       }
       
       #------------------------------------------------------------------------------
      +# Return bits from a bitstream object
      +# Inputs: 0) array ref, 1) number of bits
      +# Returns: specified number of bits as an integer, and shifts input bitstream
      +sub GetBits($$)
      +{
      +    my ($a, $n) = @_;
      +    my $v = 0;
      +    my $bit = 1;
      +    my $i;
      +    while ($n--) {
      +        for ($i=0; $i<@$a; ++$i) {
      +            # consume bits LSB first
      +            my $set = $$a[$i] & 1;
      +            $$a[$i] >>= 1;
      +            if ($i) {
      +                $$a[$i-1] |= 0x80 if $set;
      +            } else {
      +                $v |= $bit if $set;
      +                $bit <<= 1;
      +            }
      +        }
      +    }
      +    return $v;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Extract parameters from JPEG XL codestream [unverified!]
      +# Inputs: 0) ExifTool ref, 1) codestream ref
      +# Returns: 1
      +sub ProcessJXLCodestream($$)
      +{
      +    my ($et, $dataPt) = @_;
      +    # add padding if necessary to avoid unpacking past end of data
      +    if (length $$dataPt < 14) {
      +        my $tmp = $$dataPt . ("\0" x 14);
      +        $dataPt = \$tmp;
      +    }
      +    my @a = unpack 'x2C12', $$dataPt;
      +    my ($x, $y);
      +    my $small = GetBits(\@a, 1);
      +    if ($small) {
      +        $y = (GetBits(\@a, 5) + 1) * 8;
      +    } else {
      +        $y = GetBits(\@a, [9, 13, 18, 30]->[GetBits(\@a, 2)]) + 1;
      +    }
      +    my $ratio = GetBits(\@a, 3);
      +    if ($ratio == 0) {
      +        if ($small) {
      +            $x = (GetBits(\@a, 5) + 1) * 8;;
      +        } else {
      +            $x = GetBits(\@a, [9, 13, 18, 30]->[GetBits(\@a, 2)]) + 1;
      +        }
      +    } else {
      +        my $r = [[1,1],[12,10],[4,3],[3,2],[16,9],[5,4],[2,1]]->[$ratio-1];
      +        $x = int($y * $$r[0] / $$r[1]);
      +    }
      +    $et->FoundTag(ImageWidth => $x);
      +    $et->FoundTag(ImageHeight => $y);
      +    return 1;
      +}
      +
      +#------------------------------------------------------------------------------
       # Read/write meta information from a JPEG 2000 image
       # Inputs: 0) ExifTool object reference, 1) dirInfo reference
       # Returns: 1 on success, 0 if this wasn't a valid JPEG 2000 file, or -1 on write error
      @@ -812,8 +1233,9 @@
       
           # check to be sure this is a valid JPG2000 file
           return 0 unless $raf->Read($hdr,12) == 12;
      -    unless ($hdr eq "\x00\x00\x00\x0cjP  \x0d\x0a\x87\x0a" or     # (ref 1)
      -            $hdr eq "\x00\x00\x00\x0cjP\x1a\x1a\x0d\x0a\x87\x0a") # (ref 2)
      +    unless ($hdr eq "\0\0\0\x0cjP  \x0d\x0a\x87\x0a" or     # (ref 1)
      +            $hdr eq "\0\0\0\x0cjP\x1a\x1a\x0d\x0a\x87\x0a" or # (ref 2)
      +            $$et{IsJXL})
           {
               return 0 unless $hdr =~ /^\xff\x4f\xff\x51\0/;  # check for JP2 codestream format
               if ($outfile) {
      @@ -830,17 +1252,23 @@
           }
           if ($outfile) {
               Write($outfile, $hdr) or return -1;
      -        $et->InitWriteDirs(\%jp2Map);
      +        if ($$et{IsJXL}) {
      +            $et->InitWriteDirs(\%jxlMap);
      +            $$et{AddJp2Tags} = { }; # (don't add JP2 tags in JXL files)
      +        } else {
      +            $et->InitWriteDirs(\%jp2Map);
      +            $$et{AddJp2Tags} = $et->GetNewTagInfoHash(\%Image::ExifTool::Jpeg2000::Main);
      +        }
               # save list of directories to create
      -        my %addDirs = %{$$et{ADD_DIRS}};
      +        my %addDirs = %{$$et{ADD_DIRS}}; # (make a copy)
               $$et{AddJp2Dirs} = \%addDirs;
      -        $$et{AddJp2Tags} = $et->GetNewTagInfoHash(\%Image::ExifTool::Jpeg2000::Main);
           } else {
               my ($buff, $fileType);
               # recognize JPX and JPM as unique types of JP2
               if ($raf->Read($buff, 12) == 12 and $buff =~ /^.{4}ftyp(.{4})/s) {
                   $fileType = 'JPX' if $1 eq 'jpx ';
                   $fileType = 'JPM' if $1 eq 'jpm ';
      +            $fileType = 'JXL' if $1 eq 'jxl ';
               }
               $raf->Seek(-length($buff), 1) if defined $buff;
               $et->SetFileType($fileType);
      @@ -855,6 +1283,59 @@
           return $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
       }
       
      +#------------------------------------------------------------------------------
      +# Read meta information from a JPEG XL image
      +# Inputs: 0) ExifTool object reference, 1) dirInfo reference
      +# Returns: 1 on success, 0 if this wasn't a valid JPEG XL file, -1 on write error
      +sub ProcessJXL($$)
      +{
      +    my ($et, $dirInfo) = @_;
      +    my $raf = $$dirInfo{RAF};
      +    my $outfile = $$dirInfo{OutFile};
      +    my ($hdr, $buff);
      +
      +    return 0 unless $raf->Read($hdr,12) == 12;
      +    if ($hdr eq "\0\0\0\x0cJXL \x0d\x0a\x87\x0a") {
      +        # JPEG XL in ISO BMFF container
      +        $$et{IsJXL} = 1;
      +    } elsif ($hdr =~ /^\xff\x0a/) {
      +        # JPEG XL codestream
      +        if ($outfile) {
      +            if ($$et{OPTIONS}{IgnoreMinorErrors}) {
      +                $et->Warn('Wrapped JXL codestream in ISO BMFF container');
      +            } else {
      +                $et->Error('Will wrap JXL codestream in ISO BMFF container for writing',1);
      +                return 0;
      +            }
      +            $$et{IsJXL} = 2;
      +            my $buff = "\0\0\0\x0cJXL \x0d\x0a\x87\x0a\0\0\0\x14ftypjxl \0\0\0\0jxl ";
      +            # add metadata to empty ISO BMFF container
      +            $$dirInfo{RAF} = new File::RandomAccess(\$buff);
      +        } else {
      +            $et->SetFileType('JXL Codestream','image/jxl', 'jxl');
      +            return ProcessJXLCodestream($et, \$hdr);
      +        }
      +    } else {
      +        return 0;
      +    }
      +    $raf->Seek(0,0) or $et->Error('Seek error'), return 0;
      +
      +    my $success = ProcessJP2($et, $dirInfo);
      +
      +    if ($outfile and $success > 0 and $$et{IsJXL} == 2) {
      +        # attach the JXL codestream box to the ISO BMFF file
      +        $raf->Seek(0,2) or return -1;
      +        my $size = $raf->Tell();
      +        $raf->Seek(0,0) or return -1;
      +        SetByteOrder('MM');
      +        Write($outfile, Set32u($size + 8), 'jxlc') or return -1;
      +        while ($raf->Read($buff, 65536)) {
      +            Write($outfile, $buff) or return -1;
      +        }
      +    }
      +    return $success;
      +}
      +
       1;  # end
       
       __END__
      @@ -874,7 +1355,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/JPEGDigest.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/JPEGDigest.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/JPEGDigest.pm	2020-02-14 12:27:41.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/JPEGDigest.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -2590,7 +2590,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/JPEG.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/JPEG.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/JPEG.pm	2020-01-10 18:52:01.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/JPEG.pm	2022-01-13 13:02:51.000000000 +0000
      @@ -11,12 +11,12 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.30';
      +$VERSION = '1.33';
       
       sub ProcessOcad($$$);
       sub ProcessJPEG_HDR($$$);
       
      -# (this main JPEG table is for documentation purposes only)
      +# (most of the tags in this table are for documentation purposes only)
       %Image::ExifTool::JPEG::Main = (
           NOTES => q{
               This table lists information extracted by ExifTool from JPEG images. See
      @@ -97,6 +97,16 @@
               Condition => '$$valPt =~ /^Stim\0/',
               SubDirectory => { TagTable => 'Image::ExifTool::Stim::Main' },
             }, {
      +        Name => 'JPS',
      +        Condition => '$$valPt =~ /^_JPSJPS_/',
      +        SubDirectory => { TagTable => 'Image::ExifTool::JPEG::JPS' },
      +      }, {
      +        Name => 'ThermalData', # (written by DJI FLIR models)
      +        Condition => '$$self{Make} eq "DJI"',
      +        Notes => 'DJI raw thermal data',
      +        Groups => { 0 => 'APP3', 1 => 'DJI', 2 => 'Image' },
      +        Binary => 1,
      +      }, {
               Name => 'PreviewImage', # (written by HP R837 and Samsung S1060)
               Condition => '$$valPt =~ /^\xff\xd8\xff\xdb/',
               Notes => 'Samsung/HP preview image', # (Samsung, HP, BenQ)
      @@ -110,6 +120,10 @@
               Condition => '$$valPt =~ /^FPXR\0/',
               SubDirectory => { TagTable => 'Image::ExifTool::FlashPix::Main' },
             }, {
      +        Name => 'ThermalParams', # (written by DJI FLIR models)
      +        Condition => '$$self{Make} eq "DJI" and $$valPt =~ /^\xaa\x55\x12\x06/',
      +        SubDirectory => { TagTable => 'Image::ExifTool::DJI::ThermalParams' },
      +      }, {
               Name => 'PreviewImage', # (eg. Samsung S1060)
               Notes => 'continued from APP3',
           }],
      @@ -122,6 +136,12 @@
               Condition => '$$valPt =~ /ssuniqueid\0/',
               SubDirectory => { TagTable => 'Image::ExifTool::Samsung::APP5' },
             }, {
      +        Name => 'ThermalCalibration', # (written by DJI FLIR models)
      +        Condition => '$$self{Make} eq "DJI"',
      +        Notes => 'DJI thermal calibration data',
      +        Groups => { 0 => 'APP5', 1 => 'DJI', 2 => 'Image' },
      +        Binary => 1,
      +      }, {
               Name => 'PreviewImage', # (eg. BenQ DC E1050)
               Notes => 'continued from APP4',
           }],
      @@ -142,6 +162,12 @@
               Condition => '$$valPt =~ /^GoPro\0/',
               SubDirectory => { TagTable => 'Image::ExifTool::GoPro::GPMF' },
             # also seen Motorola APP6 "MMIMETA\0", with sub-types: AL3A,ALED,MMI0,MOTD,QC3A
      +      }, {
      +        Name => 'DJI_DTAT', # (written by ZH20T)
      +        Condition => '$$valPt =~ /^DTAT\0\0.\{/s',
      +        Groups => { 0 => 'APP6', 1 => 'DJI' },
      +        Notes => 'DJI Thermal Analysis Tool record',
      +        ValueConv => 'substr($val,7)',
           }],
           APP7 => [{
               Name => 'Pentax',
      @@ -171,11 +197,15 @@
               Condition => '$$valPt =~ /^UNICODE\0/',
               Notes => 'PhotoStudio Unicode comment',
           },
      -    APP11 => {
      +    APP11 => [{
               Name => 'JPEG-HDR',
               Condition => '$$valPt =~ /^HDR_RI /',
               SubDirectory => { TagTable => 'Image::ExifTool::JPEG::HDR' },
      -    },
      +    },{
      +        Name => 'JUMBF',
      +        Condition => '$$valPt =~ /^JP/',
      +        SubDirectory => { TagTable => 'Image::ExifTool::Jpeg2000::Main' },
      +    }],
           APP12 => [{
               Name => 'PictureInfo',
               Condition => '$$valPt =~ /(\[picture info\]|Type=)/',
      @@ -255,12 +285,78 @@
               Name => 'Insta360',
               Condition => '$$valPt =~ /8db42d694ccc418790edff439fe026bf$/',
             }, {
      +        Name => 'NikonApp',
      +        Condition => '$$valPt =~ m(\0{6}/NIKON APP$)',
      +        Notes => 'contains editing information in XMP format',
      +      }, {
               Name => 'PreviewImage',
               Condition => '$$valPt =~ /^\xff\xd8\xff/',
               Writable => 2,  # (for docs only)
           }],
       );
       
      +# JPS APP3 segment (ref http://paulbourke.net/stereographics/stereoimage/)
      +%Image::ExifTool::JPEG::JPS = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 0 => 'APP3', 1 => 'JPS', 2 => 'Image' },
      +    NOTES => 'Tags found in JPEG Stereo (JPS) images.',
      +    0x0a => {
      +        Name => 'JPSSeparation',
      +        Format => 'int32u', # (just so we can look ahead to MediaType);
      +        Notes => 'stereo only',
      +        RawConv => q{
      +            $$self{MediaType} = $val & 0xff;
      +            return undef unless $$self{MediaType} == 1;
      +            return(($val >> 24) & 0xff);
      +        },
      +    },
      +    0x08 => {
      +        Name => 'HdrLength',
      +        Format => 'int16u',
      +        Hidden => 1,
      +        RawConv => '$$self{HdrLength} = $val; undef',
      +    },
      +    0x0b => {
      +        Name => 'JPSFlags',
      +        PrintConv => { BITMASK => {
      +            0 => 'Half height',
      +            1 => 'Half width',
      +            2 => 'Left field first',
      +        }},
      +    },
      +    0x0c => [{
      +        Name => 'JPSLayout',
      +        Condition => '$$self{MediaType} == 0',
      +        Notes => 'mono',
      +        PrintConv => {
      +            0 => 'Both Eyes',
      +            1 => 'Left Eye',
      +            2 => 'Right Eye',
      +        },
      +    },{
      +        Name => 'JPSLayout',
      +        Condition => '$$self{MediaType} == 1',
      +        Notes => 'stereo',
      +        PrintConv => {
      +            1 => 'Interleaved',
      +            2 => 'Side By Side',
      +            3 => 'Over Under',
      +            4 => 'Anaglyph',
      +        },
      +    }],
      +    0x0d => {
      +        Name => 'JPSType',
      +        Hook => '$varSize += $$self{HdrLength} - 4', # comment starts after header block
      +        PrintConv => { 0 => 'Mono', 1 => 'Stereo' },
      +    },
      +    # 0x0e - in16u comment length (ignored -- assume the remainder is all comment)
      +    #        (this is offset if we had a 4-byte JPS header block)
      +    0x10 => {
      +        Name => 'JPSComment',
      +        Format => 'string',
      +    },
      +);
      +
       # EPPIM APP6 (Toshiba PrintIM) segment (ref PH, from PDR-M700 samples)
       %Image::ExifTool::JPEG::EPPIM = (
           GROUPS => { 0 => 'APP6', 1 => 'EPPIM', 2 => 'Image' },
      @@ -519,7 +615,7 @@
           },
           2 => {
               Name => 'ImageFormat',
      -        ValueConv => 'chr($val)',
      +        ValueConv => 'chr($val & 0xff)',
               PrintConv => { B => 'IMode B' },
           },
           3 => {
      @@ -622,7 +718,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/JSON.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/JSON.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/JSON.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/JSON.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -14,16 +14,35 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::Import;
       
      -$VERSION = '1.01';
      +$VERSION = '1.05';
       
      +sub ProcessJSON($$);
       sub ProcessTag($$$$%);
       
       %Image::ExifTool::JSON::Main = (
           GROUPS => { 0 => 'JSON', 1 => 'JSON', 2 => 'Other' },
      +    VARS => { NO_ID => 1 },
      +    PROCESS_PROC => \&ProcessJSON,
           NOTES => q{
      -        No JSON tags have been pre-defined, but ExifTool will read any existing
      -        tags from basic JSON-formatted files.
      +        Other than a few tags in the table below, JSON tags have not been
      +        pre-defined.  However, ExifTool will read any existing tags from basic
      +        JSON-formatted files.
           },
      +    # ON1 settings tags
      +    ON1_SettingsData => {
      +        RawConv => q{
      +            require Image::ExifTool::XMP;
      +            $val = Image::ExifTool::XMP::DecodeBase64($val);
      +        },
      +        SubDirectory => { TagTable => 'Image::ExifTool::PLIST::Main' },
      +    },
      +    ON1_SettingsMetadataCreated     => { Groups => { 2 => 'Time' } },
      +    ON1_SettingsMetadataModified    => { Groups => { 2 => 'Time' } },
      +    ON1_SettingsMetadataName        => { },
      +    ON1_SettingsMetadataPluginID    => { },
      +    ON1_SettingsMetadataTimestamp   => { Groups => { 2 => 'Time' } },
      +    ON1_SettingsMetadataUsage       => { },
      +    ON1_SettingsMetadataVisibleToUser=>{ },
       );
       
       #------------------------------------------------------------------------------
      @@ -33,12 +52,18 @@
       {
           my ($et, $tagTablePtr, $tag, $val, %flags) = @_;
       
      +    # special case to reformat ON1 tag names
      +    if ($tag =~ s/^settings\w{8}-\w{4}-\w{4}-\w{4}-\w{12}(Data|Metadata.+)$/ON1_Settings$1/) {
      +        $et->OverrideFileType('ONP','application/on1') if $$et{FILE_TYPE} eq 'JSON';
      +    }
      +
           # avoid conflict with special table entries
           $tag .= '!' if $Image::ExifTool::specialTags{$tag};
       
           AddTagToTable($tagTablePtr, $tag, {
               Name => Image::ExifTool::MakeTagName($tag),
               %flags,
      +        Temporary => 1,
           }) unless $$tagTablePtr{$tag};
       
           $et->HandleTag($tagTablePtr, $tag, $val);
      @@ -58,8 +83,12 @@
                   FoundTag($et, $tagTablePtr, $tag, $val, %flags, Struct => 1);
                   return unless $et->Options('Struct') > 1;
               }
      -        foreach (sort keys %$val) {
      -            ProcessTag($et, $tagTablePtr, $tag . ucfirst, $$val{$_}, %flags, Flat => 1);
      +        # support hashes with ordered keys
      +        my @keys = $$val{_ordered_keys_} ? @{$$val{_ordered_keys_}} : sort keys %$val;
      +        foreach (@keys) {
      +            my $tg = $tag . ((/^\d/ and $tag =~ /\d$/) ? '_' : '') . ucfirst;
      +            $tg =~ s/([^a-zA-Z])([a-z])/$1\U$2/g;
      +            ProcessTag($et, $tagTablePtr, $tg, $$val{$_}, %flags, Flat => 1);
               }
           } elsif (ref $val eq 'ARRAY') {
               foreach (@$val) {
      @@ -80,7 +109,26 @@
           my ($et, $dirInfo) = @_;
           my $raf = $$dirInfo{RAF};
           my $structOpt = $et->Options('Struct');
      -    my (%database, $key, $tag);
      +    my (%database, $key, $tag, $dataPt);
      +
      +    unless ($raf) {
      +        $dataPt = $$dirInfo{DataPt};
      +        if ($$dirInfo{DirStart} or ($$dirInfo{DirLen} and $$dirInfo{DirLen} ne length($$dataPt))) {
      +            my $buff = substr(${$$dirInfo{DataPt}}, $$dirInfo{DirStart}, $$dirInfo{DirLen});
      +            $dataPt = \$buff;
      +        }
      +        $raf = new File::RandomAccess($dataPt);
      +        # extract as a block if requested
      +        my $blockName = $$dirInfo{BlockInfo} ? $$dirInfo{BlockInfo}{Name} : '';
      +        my $blockExtract = $et->Options('BlockExtract');
      +        if ($blockName and ($blockExtract or $$et{REQ_TAG_LOOKUP}{lc $blockName} or
      +            ($$et{TAGS_FROM_FILE} and not $$et{EXCL_TAG_LOOKUP}{lc $blockName})))
      +        {
      +            $et->FoundTag($$dirInfo{BlockInfo}, $$dataPt);
      +            return 1 if $blockExtract and $blockExtract > 1;
      +        }
      +        $et->VerboseDir('JSON');
      +    }
       
           # read information from JSON file into database structure
           my $err = Image::ExifTool::Import::ReadJSON($raf, \%database,
      @@ -88,13 +136,13 @@
       
           return 0 if $err or not %database;
       
      -    $et->SetFileType();
      +    $et->SetFileType() unless $dataPt;
       
           my $tagTablePtr = GetTagTable('Image::ExifTool::JSON::Main');
       
           # remove any old tag definitions in case they change flags
           foreach $key (TagTableKeys($tagTablePtr)) {
      -        delete $$tagTablePtr{$key};
      +        delete $$tagTablePtr{$key} if $$tagTablePtr{$key}{Temporary};
           }
       
           # extract tags from JSON database
      @@ -128,7 +176,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/JVC.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/JVC.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/JVC.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/JVC.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -117,7 +117,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Kodak.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Kodak.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Kodak.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Kodak.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -3252,7 +3252,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/KyoceraRaw.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/KyoceraRaw.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/KyoceraRaw.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/KyoceraRaw.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -152,7 +152,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/cs.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/cs.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/cs.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/cs.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -1570,7 +1570,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/de.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/de.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/de.pm	2020-02-03 13:51:41.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/de.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -11,7 +11,7 @@
       use strict;
       use vars qw($VERSION);
       
      -$VERSION = '1.35';
      +$VERSION = '1.36';
       
       %Image::ExifTool::Lang::de::Translate = (
          'AEAperture' => 'AE-Blende',
      @@ -993,7 +993,9 @@
             },
           },
          'AdvancedSceneMode' => {
      +      Description => 'Erweiteter Szenenmodus',
             PrintConv => {
      +        'Off' => 'Aus',
               'Creative Macro' => 'Makro kreativ',
               'Flower' => 'Blumen',
               'HDR B&W' => 'HDR Schwarz-Weiß',
      @@ -8700,7 +8702,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/en_ca.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/en_ca.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/en_ca.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/en_ca.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -989,7 +989,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/en_gb.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/en_gb.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/en_gb.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/en_gb.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -1032,7 +1032,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/es.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/es.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/es.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/es.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -1302,7 +1302,7 @@
          'ExifImageHeight' => 'Alto Imagen',
          'ExifImageWidth' => 'Ancho Imagen',
          'ExifOffset' => 'Puntero Exif IFD',
      -   'ExifToolVersion' => 'Versión Exiftool',
      +   'ExifToolVersion' => 'Versión ExifTool',
          'ExifVersion' => 'Versión Exif',
          'ExpandFilm' => 'Película Expandida',
          'ExpandFilterLens' => 'Filtro Objetivo Expandida',
      @@ -4005,7 +4005,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/fi.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/fi.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/fi.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/fi.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -2878,7 +2878,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/fr.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/fr.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/fr.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/fr.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -4751,7 +4751,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/it.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/it.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/it.pm	2020-02-03 13:51:37.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/it.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -7903,7 +7903,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/ja.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/ja.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/ja.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/ja.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -5841,7 +5841,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/ko.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/ko.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/ko.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/ko.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -2316,7 +2316,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/nl.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/nl.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/nl.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/nl.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -11,7 +11,7 @@
       use strict;
       use vars qw($VERSION);
       
      -$VERSION = '1.12';
      +$VERSION = '1.13';
       
       %Image::ExifTool::Lang::nl::Translate = (
          'AEBAutoCancel' => {
      @@ -1502,97 +1502,98 @@
          'GIFVersion' => 'GIF versie',
          'GPSAltitude' => 'Hoogte',
          'GPSAltitudeRef' => {
      -      Description => 'Hoogte referentie',
      +      Description => 'GPS hoogte - referentie',
             PrintConv => {
      -        'Above Sea Level' => 'Zee spiegel',
      -        'Below Sea Level' => 'Zee spiegel referentie (negatieve waarde)',
      +        'Above Sea Level' => 'Boven zeeniveau',
      +        'Below Sea Level' => 'Onder zeeniveau',
             },
           },
      -   'GPSAreaInformation' => 'Naam van het GPS gebied',
      -   'GPSDOP' => 'Meet nauwkeurigheid',
      -   'GPSDateStamp' => 'GPS datum',
      -   'GPSDateTime' => 'GPS tijd (atoomklok)',
      -   'GPSDestBearing' => 'Motiefrichting',
      +   'GPSAreaInformation' => 'GPS naam van het gebied',
      +   'GPSDOP' => 'GPS meetnauwkeurigheid',
      +   'GPSDateStamp' => 'GPS UTC datum',
      +   'GPSDateTime' => 'GPS UTC datum en tijd',
      +   'GPSDestBearing' => 'GPS peiling van bestemming',
          'GPSDestBearingRef' => {
      -      Description => 'Referentie voor de motiefrichting',
      +      Description => 'GPS peiling van bestemming - referentie',
             PrintConv => {
      -        'Magnetic North' => 'Magnetische uitrichting',
      -        'True North' => 'Geografische uitrichting',
      +        'Magnetic North' => 'Magnetische noorden',
      +        'True North' => 'Geografische noorden',
             },
           },
      -   'GPSDestDistance' => 'Afstand tot bestemming',
      +   'GPSDestDistance' => 'GPS afstand tot bestemming',
          'GPSDestDistanceRef' => {
      -      Description => 'Referentie voor de afstand tot de bestemming',
      +      Description => 'GPS afstand tot bestemming - referentie',
             PrintConv => {
      -        'Miles' => 'Mijlen',
      -        'Nautical Miles' => 'Knopen',
      +        'Miles' => 'Engelse mijlen',
      +        'Nautical Miles' => 'Zeemijlen',
             },
           },
      -   'GPSDestLatitude' => 'Breedte van het doel',
      +   'GPSDestLatitude' => 'GPS breedtegraad van bestemming',
          'GPSDestLatitudeRef' => {
      -      Description => 'Referentie voor de breedte van het doel',
      +      Description => 'GPS breedtegraad van bestemming - referentie',
             PrintConv => {
      -        'North' => 'Noordelijke breedte',
      -        'South' => 'Zuidelijke breedte',
      +        'North' => 'Noorderbreedte',
      +        'South' => 'Zuiderbreedte',
             },
           },
      -   'GPSDestLongitude' => 'Lengtegraad van het doel',
      +   'GPSDestLongitude' => 'GPS lengtegraad van bestemming',
          'GPSDestLongitudeRef' => {
      -      Description => 'Referentie voor de lengte van het doel',
      +      Description => 'GPS lengtegraad van bestemming - referentie',
             PrintConv => {
      -        'East' => 'Oostelijke lengte',
      -        'West' => 'Westlijke lengte',
      +        'East' => 'Oosterlengte',
      +        'West' => 'Westerlengte',
             },
           },
          'GPSDifferential' => {
             Description => 'GPS differentiaal correctie',
             PrintConv => {
      -        'Differential Corrected' => 'Differentiaal correctie toegepast',
      -        'No Correction' => 'Meting zonder differentiaal correctie',
      +        'Differential Corrected' => 'Met differentiaal correctie',
      +        'No Correction' => 'Zonder differentiaal correctie',
             },
           },
      -   'GPSImgDirection' => 'Richting van de afbeelding',
      +   'GPSImgDirection' => 'GPS peiling van de afbeelding',
          'GPSImgDirectionRef' => {
      -      Description => 'Referentie voor de uitrichting van de afbeelding',
      +      Description => 'GPS peiling van de afbeelding - referentie',
             PrintConv => {
      -        'Magnetic North' => 'Magnetische uitrichting',
      -        'True North' => 'Geografische uitrichting',
      +        'Magnetic North' => 'Magnetische noorden',
      +        'True North' => 'Geografische noorden',
             },
           },
      -   'GPSInfo' => 'GPS Info IFD-wijzer',
      -   'GPSLatitude' => 'Breedte graad',
      +   'GPSInfo' => 'GPS Info',
      +   'GPSLatitude' => 'GPS breedtegraad',
          'GPSLatitudeRef' => {
      -      Description => 'Noord. of zuid. breedte',
      +      Description => 'GPS breedtegraad - referentie',
             PrintConv => {
      -        'North' => 'Noordelijke breedte',
      -        'South' => 'Zuidlijke breedte',
      +        'North' => 'Noorderbreedte',
      +        'South' => 'Zuiderbreedte',
             },
           },
      -   'GPSLongitude' => 'Geografische lengte',
      +   'GPSLongitude' => 'GPS lengtegraad',
          'GPSLongitudeRef' => {
      -      Description => 'Oost. of west. lengte',
      +      Description => 'GPS lengtegraad - referentie',
             PrintConv => {
      -        'East' => 'Oostlijke lengte',
      -        'West' => 'Westlijke lengte',
      +        'East' => 'Oosterlengte',
      +        'West' => 'Westerlengte',
             },
           },
      -   'GPSMapDatum' => 'Geodatische datum',
      +   'GPSMapDatum' => 'GPS geodetisch datum',
          'GPSMeasureMode' => {
      -      Description => 'GPS meet methode',
      +      Description => 'GPS meetmethode',
             PrintConv => {
      -        '2-D' => '2 dimensionale meting',
      -        '2-Dimensional' => '2 dimensionale meting',
      -        '2-Dimensional Measurement' => '2 dimensionale meting',
      -        '3-D' => '3 dimensionale meting',
      -        '3-Dimensional' => '3 dimensionale meting',
      -        '3-Dimensional Measurement' => '3 dimensionale meting',
      +        '2-D' => 'Tweedimensionale meting',
      +        '2-Dimensional' => 'Tweedimensionale meting',
      +        '2-Dimensional Measurement' => 'Tweedimensionale meting',
      +        '3-D' => 'Driedimensionale meting',
      +        '3-Dimensional' => 'Driedimensionale meting',
      +        '3-Dimensional Measurement' => 'Driedimensionale meting',
             },
           },
      -   'GPSProcessingMethod' => 'Naam van de GPS verwerk methode',
      -   'GPSSatellites' => 'Voor de meting gebruikte satellieten',
      -   'GPSSpeed' => 'Snelheid van de GPS ontvanger',
      +   'GPSPosition' => 'GPS positie',
      +   'GPSProcessingMethod' => 'GPS verwerkingsmethode',
      +   'GPSSatellites' => 'GPS satellieten gebruikt voor de meting',
      +   'GPSSpeed' => 'GPS ontvanger bewegingssnelheid',
          'GPSSpeedRef' => {
      -      Description => 'Snelheids eenheid',
      +      Description => 'GPS ontvanger bewegingssnelheid - referentie',
             PrintConv => {
               'km/h' => 'Kilometer per uur',
               'knots' => 'Knopen',
      @@ -1602,20 +1603,20 @@
          'GPSStatus' => {
             Description => 'GPS ontvanger status',
             PrintConv => {
      -        'Measurement Active' => 'Meting loopt',
      -        'Measurement Void' => 'Interoperabiliteit voor metingen',
      +        'Measurement Active' => 'Actuele meting beschikbaar',
      +        'Measurement Void' => 'Actuele meting niet beschikbaar',
             },
           },
      -   'GPSTimeStamp' => 'GPS tijd (atoomklok)',
      -   'GPSTrack' => 'Bewegingsrichting',
      +   'GPSTimeStamp' => 'GPS UTC tijd',
      +   'GPSTrack' => 'GPS ontvanger bewegingsrichting',
          'GPSTrackRef' => {
      -      Description => 'Referentie voor de bewegingsrichting',
      +      Description => 'GPS ontvanger bewegingsrichting - referentie',
             PrintConv => {
      -        'Magnetic North' => 'Magnetische uitrichting',
      -        'True North' => 'Geographische uitrichting',
      +        'Magnetic North' => 'Magnetische noorden',
      +        'True North' => 'Geografische noorden',
             },
           },
      -   'GPSVersionID' => 'GPS tag versie',
      +   'GPSVersionID' => 'GPS versie ID',
          'GainControl' => {
             Description => 'Belichtingsversterking',
             PrintConv => {
      @@ -3207,7 +3208,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/pl.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/pl.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/pl.pm	2020-02-03 13:51:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/pl.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -1258,7 +1258,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/ru.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/ru.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/ru.pm	2020-02-03 13:51:29.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/ru.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -5718,7 +5718,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/sv.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/sv.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/sv.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/sv.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -620,7 +620,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/tr.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/tr.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/tr.pm	2020-01-02 12:08:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/tr.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -528,7 +528,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/zh_cn.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/zh_cn.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/zh_cn.pm	2020-01-02 12:08:58.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/zh_cn.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -1313,7 +1313,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/zh_tw.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/zh_tw.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lang/zh_tw.pm	2020-01-02 12:08:58.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lang/zh_tw.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -784,7 +784,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Leaf.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Leaf.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Leaf.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Leaf.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -504,7 +504,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/LIF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/LIF.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/LIF.pm	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/LIF.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -0,0 +1,153 @@
      +#------------------------------------------------------------------------------
      +# File:         LIF.pm
      +#
      +# Description:  Read LIF (Leica Image File) files
      +#
      +# Revisions:    2021-06-21 - P. Harvey Created
      +#------------------------------------------------------------------------------
      +
      +package Image::ExifTool::LIF;
      +
      +use strict;
      +use vars qw($VERSION);
      +use Image::ExifTool qw(:DataAccess :Utils);
      +use Image::ExifTool::XMP;
      +
      +$VERSION = '1.00';
      +
      +%Image::ExifTool::LIF::Main = (
      +    GROUPS => { 0 => 'XML', 1 => 'XML', 2 => 'Image' },
      +    PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
      +    VARS => { NO_ID => 1 },
      +    NOTES => q{
      +        Tags extracted from Leica Image Format (LIF) imaging files.  As well as the
      +        tags listed below, all available information is extracted from the
      +        XML-format metadata in the LIF header.
      +    },
      +    TimeStampList => {
      +        Groups => { 2 => 'Time' },
      +        ValueConv => q{
      +            my $unixTimeZero = 134774 * 24 * 3600;
      +            my @vals = split ' ', $val;
      +            foreach (@vals) {
      +                $_ = 1e-7 * hex($_);
      +                # shift from Jan 1, 1601 to Jan 1, 1970
      +                $_ = Image::ExifTool::ConvertUnixTime($_ - $unixTimeZero);
      +            }
      +            return \@vals;
      +        },
      +    },
      +);
      +
      +#------------------------------------------------------------------------------
      +# Shorten obscenely long LIF tag names
      +# Inputs: Tag name
      +# Returns: Shortened tag name
      +sub ShortenTagNames($)
      +{
      +    local $_;
      +    $_ = shift;
      +    s/DescriptionDimensionsDimensionDescription/Dimensions/;
      +    s/DescriptionChannelsChannelDescription/Channel/;
      +    s/ShutterListShutter/Shutter/;
      +    s/SettingDefinition/Setting/;
      +    s/AdditionalZPositionListAdditionalZPosition/AdditionalZPosition/;
      +    s/LMSDataContainerHeader//g;
      +    s/FilterWheelWheel/FilterWheel/;
      +    s/FilterWheelFilter/FilterWheel/;
      +    s/DetectorListDetector/Detector/;
      +    s/OnlineDyeSeparationOnlineDyeSeparation/OnlineDyeSeparation/;
      +    s/AotfListAotf/Aotf/;
      +    s/SettingAotfLaserLineSetting/SettingAotfLaser/;
      +    s/DataROISetROISet/DataROISet/;
      +    s/AdditionalZPosition/AddZPos/;
      +    s/FRAPplusBlock_FRAPBlock_FRAP_PrePost_Info/FRAP_/;
      +    s/FRAPplusBlock_FRAPBlock_FRAP_(Master)?/FRAP_/;
      +    s/LDM_Block_SequentialLDM_Block_Sequential_/LDM_/;
      +    s/ATLConfocalSetting/ATLConfocal/;
      +    s/LaserArrayLaser/Laser/;
      +    s/LDM_Master/LDM_/;
      +    s/(List)?ATLConfocal/ATL_/;
      +    s/Separation/Sep/;
      +    s/BleachPointsElement/BleachPoint/;
      +    s/BeamPositionBeamPosition/BeamPosition/;
      +    s/DataROISetPossible(ROI)?/DataROISet/;
      +    s/RoiElementChildrenElementDataROISingle(Roi)?/Roi/;
      +    s/InfoLaserLineSettingArrayLaserLineSetting/LastLineSetting/;
      +    s/FilterWheelWheelNameFilterName/FilterWheelFilterName/;
      +    s/LUT_ListLut/Lut/;
      +    s/ROI_ListRoiRoidata/ROI_/;
      +    s/LaserLineSettingArrayLaserLineSetting/LaserLineSetting/;
      +    return $_;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Extract metadata from a LIF image
      +# Inputs: 0) ExifTool object reference, 1) dirInfo reference
      +# Returns: 1 on success, 0 if this wasn't a valid LIF file
      +sub ProcessLIF($$)
      +{
      +    my ($et, $dirInfo) = @_;
      +    my $raf = $$dirInfo{RAF};
      +    my $buff;
      +
      +    # verify this is a valid LIF file
      +    return 0 unless $raf->Read($buff, 15) == 15 and $buff =~ /^\x70\0{3}.{4}\x2a.{4}<\0/s;
      +
      +    $et->SetFileType();
      +    SetByteOrder('II');
      +
      +    my $size = Get32u(\$buff, 4);       # XML chunk size
      +    my $len = Get32u(\$buff, 9) * 2;    # XML data length
      +
      +    $size < $len and $et->Error('Corrupted LIF XML block'), return 1;
      +    $size > 100000000 and $et->Error('LIF XML block too large'), return 1;
      +
      +    $raf->Seek(-2, 1) and $raf->Read($buff, $len) == $len or $et->Error('Truncated LIF XML block'), return 1;
      +
      +    my $tagTablePtr = GetTagTable('Image::ExifTool::LIF::Main');
      +
      +    # convert from UCS2 to UTF8
      +    my $xml = Image::ExifTool::Decode($et, $buff, 'UCS2', 'II', 'UTF8');
      +
      +    my %dirInfo = ( DataPt => \$xml );
      +
      +    $$et{XmpIgnoreProps} = [ 'LMSDataContainerHeader', 'Element', 'Children', 'Data', 'Image', 'Attachment' ];
      +    $$et{ShortenXmpTags} = \&ShortenTagNames;
      +
      +    $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
      +
      +    return 1;
      +}
      +
      +1;  # end
      +
      +__END__
      +
      +=head1 NAME
      +
      +Image::ExifTool::LIF - Read LIF meta information
      +
      +=head1 SYNOPSIS
      +
      +This module is used by Image::ExifTool
      +
      +=head1 DESCRIPTION
      +
      +This module contains definitions required by Image::ExifTool to read
      +metadata from Leica Image File (LIF) images.
      +
      +=head1 AUTHOR
      +
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
      +
      +This library is free software; you can redistribute it and/or modify it
      +under the same terms as Perl itself.
      +
      +=head1 SEE ALSO
      +
      +L,
      +L
      +
      +=cut
      +
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/LNK.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/LNK.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/LNK.pm	2020-01-02 12:08:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/LNK.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -699,7 +699,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lytro.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lytro.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Lytro.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Lytro.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -192,7 +192,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/M2TS.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/M2TS.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/M2TS.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/M2TS.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -31,7 +31,7 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.16';
      +$VERSION = '1.21';
       
       # program map table "stream_type" lookup (ref 6/1)
       my %streamType = (
      @@ -57,7 +57,8 @@
           0x13 => 'ISO 14496-1 SL-packetized',
           0x14 => 'ISO 13818-6 Synchronized Download Protocol',
         # 0x15-0x7F => 'ISO 13818-1 Reserved',
      -    0x1b => 'H.264 Video',
      +    0x1b => 'H.264 (AVC) Video',
      +    0x24 => 'H.265 (HEVC) Video', #PH
           0x80 => 'DigiCipher II Video',
           0x81 => 'A52/AC-3 Audio',
           0x82 => 'HDMV DTS Audio',
      @@ -67,6 +68,7 @@
           0x86 => 'DTS-HD Audio',
           0x87 => 'E-AC-3 Audio',
           0x8a => 'DTS Audio',
      +    0x90 => 'PGS Audio', #https://www.avsforum.com/threads/bass-eq-for-filtered-movies.2995212/page-399
           0x91 => 'A52b/AC-3 Audio',
           0x92 => 'DVD_SPU vls Subtitle',
           0x94 => 'SDDS Audio',
      @@ -111,6 +113,8 @@
           0xff => 1, # program_stream_directory
       );
       
      +my $knotsToKph = 1.852;     # knots --> km/h
      +
       # information extracted from the MPEG-2 transport stream
       %Image::ExifTool::M2TS::Main = (
           GROUPS => { 2 => 'Video' },
      @@ -262,7 +266,7 @@
       
       #------------------------------------------------------------------------------
       # Parse PID stream data
      -# Inputs: 0) Exiftool ref, 1) PID number, 2) PID type, 3) PID name, 4) data ref
      +# Inputs: 0) ExifTool ref, 1) PID number, 2) PID type, 3) PID name, 4) data ref
       # Returns: 0=stream parsed OK,
       #          1=stream parsed but we want to parse more of these,
       #          -1=can't parse yet because we don't know the type
      @@ -299,6 +303,116 @@
           } elsif ($type == 0x81 or $type == 0x87 or $type == 0x91) {
               # AC-3 audio
               ParseAC3Audio($et, $dataPt);
      +    } elsif ($type < 0) {
      +        if ($$dataPt =~ /^(.{164})?(.{24})A[NS][EW]/s) {
      +            # (Blueskysea B4K, Novatek NT96670)
      +            # 0000: 01 00 ff 00 30 31 32 33 34 35 37 38 61 62 63 64 [....01234578abcd]
      +            # 0010: 65 66 67 0a 00 00 00 00 00 00 00 00 00 00 00 00 [efg.............]
      +            # 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +            # 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +            # 0040: 00 00 00 00 30 31 32 33 34 35 37 38 71 77 65 72 [....01234578qwer]
      +            # 0050: 74 79 75 69 6f 70 0a 00 00 00 00 00 00 00 00 00 [tyuiop..........]
      +            # 0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +            # 0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +            # 0080: 00 00 00 00 63 38 61 61 32 35 63 66 34 35 65 65 [....c8aa25cf45ee]
      +            # 0090: 61 39 65 32 34 34 32 66 61 65 62 35 65 30 39 39 [a9e2442faeb5e099]
      +            # 00a0: 30 37 64 34 15 00 00 00 10 00 00 00 1b 00 00 00 [07d4............]
      +            # 00b0: 15 00 00 00 01 00 00 00 09 00 00 00 41 4e 57 00 [............ANW.]
      +            # 00c0: 82 9a 57 45 98 b2 00 46 66 66 e4 41 d7 e3 14 43 [..WE...Fff.A...C]
      +            # 00d0: 01 00 02 00 03 00 04 00 05 00 06 00             [............]
      +            # (Viofo A119V3)
      +            # 0000: 08 00 00 00 07 00 00 00 18 00 00 00 15 00 00 00 [................]
      +            # 0010: 03 00 00 00 0b 00 00 00 41 4e 45 00 01 f2 ac 45 [........ANE....E]
      +            # 0020: 2d 7f 6e 45 b8 1e 97 41 d7 23 46 43 00 00 00 00 [-.nE...A.#FC....]
      +            # pad with dummy header and parse with existing FreeGPS code (minimum 92 bytes)
      +            my $dat = ("\0" x 16) . substr($$dataPt, length($1 || '')) . ("\0" x 20);
      +            my $tbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
      +            Image::ExifTool::QuickTime::ProcessFreeGPS($et, { DataPt => \$dat }, $tbl);
      +            $more = 1;
      +        } elsif ($$dataPt =~ /^A([NS])([EW])\0/s) {
      +            # INNOVV TS video (same format is INNOVV MP4)
      +            SetByteOrder('II');
      +            my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
      +            while ($$dataPt =~ /(A[NS][EW]\0.{28})/g) {
      +                my $dat = $1;
      +                my $lat = abs(GetFloat(\$dat, 4)); # (abs just to be safe)
      +                my $lon = abs(GetFloat(\$dat, 8)); # (abs just to be safe)
      +                my $spd = GetFloat(\$dat, 12) * $knotsToKph;
      +                my $trk = GetFloat(\$dat, 16);
      +                my @acc = unpack('x20V3', $dat);
      +                map { $_ = $_ - 4294967296 if $_ >= 0x80000000 } @acc;
      +                Image::ExifTool::QuickTime::ConvertLatLon($lat, $lon);
      +                $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +                $et->HandleTag($tagTbl, GPSLatitude  => abs($lat) * (substr($dat,1,1) eq 'S' ? -1 : 1));
      +                $et->HandleTag($tagTbl, GPSLongitude => abs($lon) * (substr($dat,2,1) eq 'W' ? -1 : 1));
      +                $et->HandleTag($tagTbl, GPSSpeed     => $spd);
      +                $et->HandleTag($tagTbl, GPSSpeedRef  => 'K');
      +                $et->HandleTag($tagTbl, GPSTrack     => $trk);
      +                $et->HandleTag($tagTbl, GPSTrackRef  => 'T');
      +                $et->HandleTag($tagTbl, Accelerometer => "@acc");
      +            }
      +            SetByteOrder('MM');
      +            $more = 1;
      +        } elsif ($$dataPt =~ /^\$(GPSINFO|GSNRINFO),/) {
      +            # $GPSINFO,0x0004,2021.08.09 13:27:36,2341.54561,12031.70135,8.0,51,153,0,0,\x0d
      +            # $GSNRINFO,0.01,0.04,0.25\0
      +            $$dataPt =~ tr/\x0d/\x0a/;
      +            $$dataPt =~ tr/\0//d;
      +            my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
      +            my @lines = split /\x0a/, $$dataPt;
      +            my ($line, $lastTime);
      +            foreach $line (@lines) {
      +                if ($line =~ /^\$GPSINFO/) {
      +                    my @a = split /,/, $lines[0];
      +                    next unless @a > 7;
      +                    # ignore duplicate fixes
      +                    next if $lastTime and $a[2] eq $lastTime;
      +                    $lastTime = $a[2];
      +                    $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +                    $a[2] =~ tr/./:/;
      +                    # (untested, and probably doesn't work for S/W hemispheres)
      +                    my ($lat, $lon) = @a[3,4];
      +                    Image::ExifTool::QuickTime::ConvertLatLon($lat, $lon);
      +                    # $a[0] - flags? values: '0x0001','0x0004','0x0008','0x0010'
      +                    $et->HandleTag($tagTbl, GPSDateTime  => $a[2]);
      +                    $et->HandleTag($tagTbl, GPSLatitude  => $lat);
      +                    $et->HandleTag($tagTbl, GPSLongitude => $lon);
      +                    $et->HandleTag($tagTbl, GPSSpeed     => $a[5]);
      +                    $et->HandleTag($tagTbl, GPSSpeedRef  => 'K');
      +                    # $a[6] - values: 48-60
      +                    $et->HandleTag($tagTbl, GPSTrack     => $a[7]);
      +                    $et->HandleTag($tagTbl, GPSTrackRef  => 'T');
      +                    # #a[8,9] - always 0
      +                } elsif ($line =~ /^\$GSNRINFO/) {
      +                    my @a = split /,/, $line;
      +                    shift @a;
      +                    $et->HandleTag($tagTbl, Accelerometer => "@a");
      +                }
      +            }
      +            $more = 1;
      +        } elsif ($$dataPt =~ /^.{44}A\0{3}.{4}([NS])\0{3}.{4}([EW])\0{3}/s and length($$dataPt) >= 84) {
      +            #forum11320
      +            SetByteOrder('II');
      +            my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
      +            my $lat = abs(GetFloat($dataPt, 48)); # (abs just to be safe)
      +            my $lon = abs(GetFloat($dataPt, 56)); # (abs just to be safe)
      +            my $spd = GetFloat($dataPt, 64);
      +            my $trk = GetFloat($dataPt, 68);
      +            $et->WarnOnce('GPSLatitude/Longitude encryption is not yet known, so these will be wrong');
      +            $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +            my @date = unpack('x32V3x28V3', $$dataPt);
      +            $date[3] += 2000;
      +            $et->HandleTag($tagTbl, GPSDateTime  => sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%.2d', @date[3..5,0..2]));
      +            $et->HandleTag($tagTbl, GPSLatitude  => abs($lat) * ($1 eq 'S' ? -1 : 1));
      +            $et->HandleTag($tagTbl, GPSLongitude => abs($lon) * ($2 eq 'W' ? -1 : 1));
      +            $et->HandleTag($tagTbl, GPSSpeed     => $spd);
      +            $et->HandleTag($tagTbl, GPSSpeedRef  => 'K');
      +            $et->HandleTag($tagTbl, GPSTrack     => $trk);
      +            $et->HandleTag($tagTbl, GPSTrackRef  => 'T');
      +            SetByteOrder('MM');
      +            $more = 1;
      +        }
      +        delete $$et{DOC_NUM};
           }
           return $more;
       }
      @@ -313,7 +427,7 @@
           my $raf = $$dirInfo{RAF};
           my ($buff, $pLen, $upkPrefix, $j, $fileType, $eof);
           my (%pmt, %pidType, %data, %sectLen);
      -    my ($startTime, $endTime, $backScan, $maxBack);
      +    my ($startTime, $endTime, $fwdTime, $backScan, $maxBack);
           my $verbose = $et->Options('Verbose');
           my $out = $et->Options('TextOut');
       
      @@ -330,7 +444,7 @@
               $upkPrefix = 'x4N';
           }
           my $prePos = $pLen - 188;       # byte position of packet prefix
      -    my $readSize = 64 * $pLen;      # read 64 packets at once
      +    my $readSize = 64 * $pLen;      # size of our read buffer
           $raf->Seek(0,0);                # rewind to start
           $raf->Read($buff, $readSize) >= $pLen * 4 or return 0;  # require at least 4 packets
           # validate the sync byte in the next 3 packets
      @@ -350,40 +464,74 @@
           );
           my %didPID = ( 1 => 0, 2 => 0, 0x1fff => 0 );
           my %needPID = ( 0 => 1 );       # lookup for stream PID's that we still need to parse
      +    # PID's that may contain GPS info
      +    my %gpsPID = (
      +        0x0300 => 1,    # Novatek INNOVV
      +        0x01e4 => 1,    # vsys a6l dashcam
      +    );
           my $pEnd = 0;
      -    my $i = 0;
      +
      +    # scan entire file for GPS programs if ExtractEmbedded option is 3 or higher
      +    # (some dashcams write these programs but don't include it in the PMT)
      +    if (($et->Options('ExtractEmbedded') || 0) > 2) {
      +        foreach (keys %gpsPID) {
      +            $needPID{$_} = 1;
      +            $pidType{$_} = -1;
      +            $pidName{$_} ='unregistered dashcam GPS';
      +        }
      +    }
       
           # parse packets from MPEG-2 Transport Stream
           for (;;) {
       
               unless (%needPID) {
                   last unless defined $startTime;
      -            # seek backwards to find last PCR
      -            if (defined $backScan) {
      -                last if defined $endTime;
      -                $backScan -= $pLen;
      -                last if $backScan < $maxBack;
      -            } else {
      +            # reconfigure to seek backwards for last PCR
      +            unless (defined $backScan) {
      +                my $saveTime = $endTime;
                       undef $endTime;
                       last if $et->Options('FastScan');
      -                $verbose and print "[Starting backscan for last PCR]\n";
      -                # calculate position of last complete packet
      -                my $fwdPos = $raf->Tell();
      +                $verbose and print $out "[Starting backscan for last PCR]\n";
      +                # remember how far we got when reading forward through the file
      +                my $fwdPos = $raf->Tell() - length($buff) + $pEnd;
      +                # determine the position of the last packet relative to the EOF
                       $raf->Seek(0, 2) or last;
                       my $fsize = $raf->Tell();
      -                my $nPack = int($fsize / $pLen);
      -                $backScan = ($nPack - 1) * $pLen - $fsize;
      +                $backScan = int($fsize / $pLen) * $pLen - $fsize;
                       # set limit on how far back we will go
                       $maxBack = $fwdPos - $fsize;
      -                $maxBack = -256000 if $maxBack < -256000;
      +                # scan back a maximum of 512k (have seen last PCR at -276k)
      +                my $nMax = int(512000 / $pLen);     # max packets to backscan
      +                if ($nMax < int(-$maxBack / $pLen)) {
      +                    $maxBack = $backScan - $nMax * $pLen;
      +                } else {
      +                    # use this time if none found in all remaining packets
      +                    $fwdTime = $saveTime;
      +                }
      +                $pEnd = 0;
                   }
      -            $raf->Seek($backScan, 2) or last;
               }
      -        my $pos = $pEnd;
      +        my $pos;
               # read more if necessary
      -        if ($pos + $pLen > length $buff) {
      -            $raf->Read($buff, $readSize) >= $pLen or $eof = 1, last;
      -            $pos = $pEnd = 0;
      +        if (defined $backScan) {
      +            last if defined $endTime;
      +            $pos = $pEnd = $pEnd - 2 * $pLen;   # step back to previous packet
      +            if ($pos < 0) {
      +                # read another buffer from end of file
      +                last if $backScan <= $maxBack;
      +                my $buffLen = $backScan - $maxBack;
      +                $buffLen = $readSize if $buffLen > $readSize;
      +                $backScan -= $buffLen;
      +                $raf->Seek($backScan, 2) or last;
      +                $raf->Read($buff, $buffLen) == $buffLen or last;
      +                $pos = $pEnd = $buffLen - $pLen;
      +            }
      +        } else {
      +            $pos = $pEnd;
      +            if ($pos + $pLen > length $buff) {
      +                $raf->Read($buff, $readSize) >= $pLen or $eof = 1, last;
      +                $pos = $pEnd = 0;
      +            }
               }
               $pEnd += $pLen;
               # decode the packet prefix
      @@ -402,12 +550,11 @@
               my $adaptation_field_exists      = $prefix & 0x00000020;
               my $payload_data_exists          = $prefix & 0x00000010;
             # my $continuity_counter           = $prefix & 0x0000000f;
      -
               if ($verbose > 1) {
      +            my $i = ($raf->Tell() - length($buff) + $pEnd) / $pLen - 1;
                   print  $out "Transport packet $i:\n";
      -            ++$i;
                   $et->VerboseDump(\$buff, Len => $pLen, Addr => $i * $pLen, Start => $pos - $prePos);
      -            my $str = $pidName{$pid} ? " ($pidName{$pid})" : '';
      +            my $str = $pidName{$pid} ? " ($pidName{$pid})" : ' ';
                   printf $out "  Timecode:   0x%.4x\n", Get32u(\$buff, $pos - $prePos) if $pLen == 192;
                   printf $out "  Packet ID:  0x%.4x$str\n", $pid;
                   printf $out "  Start Flag: %s\n", $payload_unit_start_indicator ? 'Yes' : 'No';
      @@ -620,7 +767,11 @@
                       }
                       $data{$pid} = substr($buff, $pos, $pEnd-$pos);
                   } else {
      -                next unless defined $data{$pid};
      +                unless (defined $data{$pid}) {
      +                    # (vsys a6l dashcam GPS record doesn't have a start indicator)
      +                    next unless $gpsPID{$pid};
      +                    $data{$pid} = '';
      +                }
                       # accumulate data for each elementary stream
                       $data{$pid} .= substr($buff, $pos, $pEnd-$pos);
                   }
      @@ -646,7 +797,8 @@
           }
       
           # calculate Duration if available
      -    if (defined $startTime and defined $endTime and $startTime != $endTime) {
      +    $endTime = $fwdTime unless defined $endTime;
      +    if (defined $startTime and defined $endTime) {
               $endTime += 0x80000000 * 1200 if $startTime > $endTime; # handle 33-bit wrap
               $et->HandleTag($tagTablePtr, 'Duration', $endTime - $startTime);
           }
      @@ -694,7 +846,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MacOS.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MacOS.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MacOS.pm	2020-01-10 13:15:14.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MacOS.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -4,6 +4,7 @@
       # Description:  Read/write MacOS system tags
       #
       # Revisions:    2017/03/01 - P. Harvey Created
      +#               2020/10/13 - PH Added ability to read MacOS "._" files
       #------------------------------------------------------------------------------
       
       package Image::ExifTool::MacOS;
      @@ -11,15 +12,38 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.09';
      +$VERSION = '1.11';
       
       sub MDItemLocalTime($);
      +sub ProcessATTR($$$);
       
       my %mdDateInfo = (
           ValueConv => \&MDItemLocalTime,
           PrintConv => '$self->ConvertDateTime($val)',
       );
       
      +# Information decoded from Mac OS sidecar files
      +%Image::ExifTool::MacOS::Main = (
      +    GROUPS => { 0 => 'File', 1 => 'MacOS' },
      +    NOTES => q{
      +        Note that on some filesystems, MacOS creates sidecar files with names that
      +        begin with "._".  ExifTool will read these files if specified, and extract
      +        the information listed in the following table without the need for extra
      +        options, but these files are not writable directly.
      +    },
      +    2 => {
      +        Name => 'RSRC',
      +        SubDirectory => { TagTable => 'Image::ExifTool::RSRC::Main' },
      +    },
      +    9 => {
      +        Name => 'ATTR',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::MacOS::XAttr',
      +            ProcessProc => \&ProcessATTR,
      +        },
      +    },
      +);
      +
       # "mdls" tags (ref PH)
       %Image::ExifTool::MacOS::MDItem = (
           WRITE_PROC => \&Image::ExifTool::DummyWriteProc,
      @@ -28,7 +52,7 @@
           NOTES => q{
               MDItem tags are extracted using the "mdls" utility.  They are extracted if
               any "MDItem*" tag or the MacOS group is specifically requested, or by
      -        setting the L API option to 1 or the L API option to 2 or
      +        setting the API L option to 1 or the API L option to 2 or
               higher.  Note that these tags do not necessarily reflect the current
               metadata of a file -- it may take some time for the MacOS mdworker daemon to
               index the file after a metadata change.
      @@ -220,7 +244,9 @@
           NOTES => q{
               XAttr tags are extracted using the "xattr" utility.  They are extracted if
               any "XAttr*" tag or the MacOS group is specifically requested, or by setting
      -        the L API option to 1 or the L API option to 2 or higher.
      +        the API L option to 1 or the API L option to 2 or higher.
      +        And they are extracted by default from MacOS "._" files when reading
      +        these files directly.
           },
           'com.apple.FinderInfo' => {
               Name => 'XAttrFinderInfo',
      @@ -325,7 +351,7 @@
       
       #------------------------------------------------------------------------------
       # Set MacOS MDItem and XAttr tags from new tag values
      -# Inputs: 0) Exiftool ref, 1) file name, 2) list of tags to set
      +# Inputs: 0) ExifTool ref, 1) file name, 2) list of tags to set
       # Returns: 1=something was set OK, 0=didn't try, -1=error (and warning set)
       # Notes: There may be errors even if 1 is returned
       sub SetMacOSTags($$$)
      @@ -486,8 +512,50 @@
           $$et{INDENT} =~ s/\| $//;
       }
       
      +        
      +#------------------------------------------------------------------------------
      +# Read MacOS XAttr value
      +# Inputs: 0) ExifTool object ref, 1) file name
      +sub ReadXAttrValue($$$$)
      +{
      +    my ($et, $tagTablePtr, $tag, $val) = @_;
      +    # add to our table if necessary
      +    unless ($$tagTablePtr{$tag}) {
      +        my $name;
      +        # generate tag name from attribute name
      +        if ($tag =~ /^com\.apple\.(.*)$/) {
      +            ($name = $1) =~ s/^metadata:_?k//;
      +            $name =~ s/^metadata:(com_)?//;
      +        } else {
      +            $name = $tag;
      +        }
      +        $name =~ s/[.:_]([a-z])/\U$1/g;
      +        $name = 'XAttr' . ucfirst $name;
      +        my %tagInfo = ( Name => $name );
      +        $tagInfo{Groups} = { 2 => 'Time' } if $tag=~/Date$/;
      +        $et->VPrint(0, "  [adding $tag]\n");
      +        AddTagToTable($tagTablePtr, $tag, \%tagInfo);
      +    }
      +    if ($val =~ /^bplist0/) {
      +        my %dirInfo = ( DataPt => \$val );
      +        require Image::ExifTool::PLIST;
      +        if (Image::ExifTool::PLIST::ProcessBinaryPLIST($et, \%dirInfo, $tagTablePtr)) {
      +            return undef if ref $dirInfo{Value} eq 'HASH';
      +            $val = $dirInfo{Value}
      +        } else {
      +            $et->Warn("Error decoding $$tagTablePtr{$tag}{Name}");
      +            return undef;
      +        }
      +    }
      +    if (not ref $val and ($val =~ /\0/ or length($val) > 200) or $tag eq 'XAttrMDLabel') {
      +        my $buff = $val;
      +        $val = \$buff;
      +    }
      +    return $val;
      +}
      +
       #------------------------------------------------------------------------------
      -# Extract MacOS extended attribute tags
      +# Read MacOS extended attribute tags using 'xattr' utility
       # Inputs: 0) ExifTool object ref, 1) file name
       sub ExtractXAttrTags($$)
       {
      @@ -517,39 +585,8 @@
                   $val .= pack('H*', $_);
                   next;
               } elsif ($tag and defined $val) {
      -            # add to our table if necessary
      -            unless ($$tagTablePtr{$tag}) {
      -                my $name;
      -                # generate tag name from attribute name
      -                if ($tag =~ /^com\.apple\.(.*)$/) {
      -                    ($name = $1) =~ s/^metadata:_?k//;
      -                    $name =~ s/^metadata:(com_)?//;
      -                } else {
      -                    $name = $tag;
      -                }
      -                $name =~ s/[.:_]([a-z])/\U$1/g;
      -                $name = 'XAttr' . ucfirst $name;
      -                my %tagInfo = ( Name => $name );
      -                $tagInfo{Groups} = { 2 => 'Time' } if $tag=~/Date$/;
      -                $et->VPrint(0, "  [adding $tag]\n");
      -                AddTagToTable($tagTablePtr, $tag, \%tagInfo);
      -            }
      -            if ($val =~ /^bplist0/) {
      -                my %dirInfo = ( DataPt => \$val );
      -                require Image::ExifTool::PLIST;
      -                if (Image::ExifTool::PLIST::ProcessBinaryPLIST($et, \%dirInfo, $tagTablePtr)) {
      -                    next if ref $dirInfo{Value} eq 'HASH';
      -                    $val = $dirInfo{Value}
      -                } else {
      -                    $et->Warn("Error decoding $$tagTablePtr{$tag}{Name}");
      -                    next;
      -                }
      -            }
      -            if (not ref $val and ($val =~ /\0/ or length($val) > 200) or $tag eq 'XAttrMDLabel') {
      -                my $buff = $val;
      -                $val = \$buff;
      -            }
      -            $et->HandleTag($tagTablePtr, $tag, $val);
      +            $val = ReadXAttrValue($et, $tagTablePtr, $tag, $val);
      +            $et->HandleTag($tagTablePtr, $tag, $val) if defined $val;
                   undef $tag;
                   undef $val;
               }
      @@ -584,6 +621,84 @@
           delete $$et{SET_GROUP1};
       }
       
      +#------------------------------------------------------------------------------
      +# Read ATTR metadata from "._" file
      +# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
      +# Return: 1 on success
      +# (ref https://www.swiftforensics.com/2018/11/the-dot-underscore-file-format.html)
      +sub ProcessATTR($$$)
      +{
      +    my ($et, $dirInfo, $tagTablePtr) = @_;
      +    my $dataPt = $$dirInfo{DataPt};
      +    my $dataPos = $$dirInfo{DataPos};
      +    my $dataLen = length $$dataPt;
      +
      +    $dataLen >= 58 and $$dataPt =~ /^.{34}ATTR/s or $et->Warn('Invalid ATTR header'), return 0;
      +    my $entries = Get32u($dataPt, 66);
      +    $et->VerboseDir('ATTR', $entries);
      +    # (Note: The RAF is not in $dirInfo because it would break RSRC reading --
      +    # the RSCR block uses relative offsets, while the ATTR block uses absolute! grrr!)
      +    my $raf = $$et{RAF};
      +    my $pos = 70;       # first entry is after ATTR header
      +    my $i;
      +    for ($i=0; $i<$entries; ++$i) {
      +        $pos + 12 > $dataLen and $et->Warn('Truncated ATTR entry'), last;
      +        my $off = Get32u($dataPt, $pos);
      +        my $len = Get32u($dataPt, $pos + 4);
      +        my $n = Get8u($dataPt, $pos + 10);  # number of characters in tag name
      +        $pos + 11 + $n > $dataLen and $et->Warn('Truncated ATTR name'), last;
      +        $off -= $dataPos;       # convert to relative offset (grrr!)
      +        $off < 0 or $off > $dataLen and $et->Warn('Invalid ATTR offset'), last;
      +        my $tag = substr($$dataPt, $pos + 11, $n);
      +        $tag =~ s/\0+$//;       # remove null terminator
      +        # remove random ID after kMDLabel in tag ID
      +        $tag =~ s/^com.apple.metadata:kMDLabel_.*/com.apple.metadata:kMDLabel/s;
      +        $off + $len > $dataLen and $et->Warn('Truncated ATTR value'), last;
      +        my $val = ReadXAttrValue($et, $tagTablePtr, $tag, substr($$dataPt, $off, $len));
      +        $et->HandleTag($tagTablePtr, $tag, $val,
      +            DataPt  => $dataPt,
      +            DataPos => $dataPos,
      +            Start   => $off,
      +            Size    => $len,
      +        ) if defined $val;
      +        $pos += (11 + $n + 3) & -4; # step to next entry (on even 4-byte boundary)
      +    }
      +    return 1;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Read information from a MacOS "._" sidecar file
      +# Inputs: 0) ExifTool ref, 1) dirInfo ref
      +# Returns: 1 on success, 0 if this wasn't a valid "._" file
      +# (ref https://www.swiftforensics.com/2018/11/the-dot-underscore-file-format.html)
      +sub ProcessMacOS($$)
      +{
      +    my ($et, $dirInfo) = @_;
      +    my $raf = $$dirInfo{RAF};
      +    my ($hdr, $buff, $i);
      +
      +    return 0 unless $raf->Read($hdr, 26) == 26 and $hdr =~ /^\0\x05\x16\x07\0(.)\0\0Mac OS X        /s;
      +    my $ver = ord $1;
      +    # (extension may be anything, so just echo back the incoming file extension if it exists)
      +    $et->SetFileType(undef, undef, $$et{FILE_EXT});
      +    $ver == 2 or $et->Warn("Unsupported file version $ver"), return 1;
      +    SetByteOrder('MM');
      +    my $tagTablePtr = GetTagTable('Image::ExifTool::MacOS::Main');
      +    my $entries = Get16u(\$hdr, 0x18);
      +    $et->VerboseDir('MacOS', $entries);
      +    $raf->Read($hdr, $entries * 12) == $entries * 12 or $et->Warn('Truncated header'), return 1;
      +    for ($i=0; $i<$entries; ++$i) {
      +        my $pos = $i * 12;
      +        my $tag = Get32u(\$hdr, $pos);
      +        my $off = Get32u(\$hdr, $pos + 4);
      +        my $len = Get32u(\$hdr, $pos + 8);
      +        $len > 100000000 and $et->Warn('Record size too large'), last;
      +        $raf->Seek($off,0) and $raf->Read($buff,$len) == $len or $et->Warn('Truncated record'), last;
      +        $et->HandleTag($tagTablePtr, $tag, undef, DataPt => \$buff, DataPos => $off, Index => $i);
      +    }
      +    return 1;
      +}
      +
       1;  # end
       
       __END__
      @@ -600,12 +715,13 @@
       
       This module contains definitions required by Image::ExifTool to extract
       MDItem* and XAttr* tags on MacOS systems using the "mdls" and "xattr"
      -utilities respectively.  Writable tags use "xattr", "setfile" or "osascript"
      -for writing.
      +utilities respectively.  It also reads metadata directly from the MacOS "_."
      +sidecar files that are used on some filesystems to store file attributes. 
      +Writable tags use "xattr", "setfile" or "osascript" for writing.
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MakerNotes.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MakerNotes.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MakerNotes.pm	2020-01-28 14:50:28.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MakerNotes.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -1812,7 +1812,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Matroska.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Matroska.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Matroska.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Matroska.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -14,7 +14,7 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.09';
      +$VERSION = '1.11';
       
       my %noYes = ( 0 => 'No', 1 => 'Yes' );
       
      @@ -221,6 +221,8 @@
           },
           0x2e => {
               Name => 'TrackEntry',
      +        # reset TrackType member at the start of each track
      +        Condition => 'delete $$self{TrackType}; 1',
               SubDirectory => { TagTable => 'Image::ExifTool::Matroska::Main' },
           },
           0x57   => { Name => 'TrackNumber',      Format => 'unsigned' },
      @@ -662,6 +664,7 @@
                   3 => 'Mesh',
               },
           },
      +    # ProjectionPrivate in the spec
           0x7672 => [{
               Name => 'EquirectangularProj',
               Condition => '$$self{ProjectionType} == 1',
      @@ -670,10 +673,13 @@
               Name => 'CubemapProj',
               Condition => '$$self{ProjectionType} == 2',
               SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::cbmp' },
      +    },{ # (don't decode 3 because it is a PITA)
      +        Name => 'ProjectionPrivate',
      +        Binary => 1,
           }],
      -    0x7673 => { Name => 'ProjectionPosYaw',   Format => 'float' },
      -    0x7674 => { Name => 'ProjectionPosPitch', Format => 'float' },
      -    0x7675 => { Name => 'ProjectionPosRoll',  Format => 'float' },
      +    0x7673 => { Name => 'ProjectionPoseYaw',   Format => 'float' },
      +    0x7674 => { Name => 'ProjectionPosePitch', Format => 'float' },
      +    0x7675 => { Name => 'ProjectionPoseRoll',  Format => 'float' },
       );
       
       #------------------------------------------------------------------------------
      @@ -912,7 +918,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Microsoft.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Microsoft.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Microsoft.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Microsoft.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -5,6 +5,7 @@
       #
       # Revisions:    2010/10/01 - P. Harvey Created
       #               2011/10/05 - PH Added ProcessXtra()
      +#               2021/02/23 - PH Added abiltity to write Xtra tags
       #
       # References:   1) http://research.microsoft.com/en-us/um/redmond/groups/ivm/hdview/hdmetadataspec.htm
       #------------------------------------------------------------------------------
      @@ -16,9 +17,11 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::XMP;
       
      -$VERSION = '1.20';
      +$VERSION = '1.23';
       
       sub ProcessXtra($$$);
      +sub WriteXtra($$$);
      +sub CheckXtra($$$);
       
       # tags written by Microsoft HDView (ref 1)
       %Image::ExifTool::Microsoft::Stitch = (
      @@ -196,11 +199,20 @@
       #       and Image::ExifTool::WTV::Metadata
       %Image::ExifTool::Microsoft::Xtra = (
           PROCESS_PROC => \&ProcessXtra,
      +    WRITE_PROC => \&WriteXtra,
      +    CHECK_PROC => \&CheckXtra,
      +    WRITE_GROUP => 'Microsoft',
      +    AVOID => 1,
           GROUPS => { 0 => 'QuickTime', 2 => 'Video' },
           VARS => { NO_ID => 1 },
           NOTES => q{
      -        Tags extracted from the Microsoft "Xtra" atom of QuickTime videos.  Tag ID's
      -        are not shown because some are unruly GUID's.
      +        Tags found in the Microsoft "Xtra" atom of QuickTime videos.  Tag ID's are
      +        not shown because some are unruly GUID's.  Currently most of these tags are
      +        not writable because the Microsoft documentation is poor and samples were
      +        not available, but more tags may be made writable in the future if samples
      +        are provided.  Note that writable tags in this table are are flagged to
      +        "Avoid", which means that other more common tags will be written instead if
      +        possible unless the Microsoft group is specified explicitly.
           },
           Abstract                    => { },
           AcquisitionTime             => { Groups => { 2 => 'Time' } },
      @@ -327,30 +339,34 @@
           UserServiceRating           => { },
           VideoBitrate                => { },
           VideoFormat                 => { },
      -    'WM/AlbumArtist'            => 'AlbumArtist',
      -    'WM/AlbumCoverURL'          => 'AlbumCoverURL',
      -    'WM/AlbumTitle'             => 'AlbumTitle',
      +    'WM/AlbumArtist'            => { Name => 'AlbumArtist', Writable => 'Unicode' }, # (NC)
      +    'WM/AlbumCoverURL'          => { Name => 'AlbumCoverURL', Writable => 'Unicode' }, # (NC)
      +    'WM/AlbumTitle'             => { Name => 'AlbumTitle',  Writable => 'Unicode' }, # (NC)
           'WM/BeatsPerMinute'         => 'BeatsPerMinute',
      -    'WM/Category'               => 'Category',
      -    'WM/Composer'               => 'Composer',
      -    'WM/Conductor'              => 'Conductor',
      -    'WM/ContentDistributor'     => 'ContentDistributor',
      +    'WM/Category'               => { Name => 'Category',    Writable => 'Unicode', List => 1 },
      +    'WM/Composer'               => { Name => 'Composer',    Writable => 'Unicode' }, # (NC)
      +    'WM/Conductor'              => { Name => 'Conductor',   Writable => 'Unicode', List => 1 },
      +    'WM/ContentDistributor'     => { Name => 'ContentDistributor', Writable => 'Unicode' },
           'WM/ContentDistributorType' => 'ContentDistributorType',
           'WM/ContentGroupDescription'=> 'ContentGroupDescription',
      -    'WM/Director'               => 'Director',
      +    'WM/Director'               => { Name => 'Director',    Writable => 'Unicode', List => 1 },
           'WM/EncodingTime'           => {
               Name => 'EncodingTime',
               Groups => { 2 => 'Time' },
      +        Shift => 'Time',
      +        Writable => 'date',
               PrintConv => '$self->ConvertDateTime($val)',
      +        PrintConvInv => '$self->InverseDateTime($val)',
           },
           'WM/Genre'                  => 'Genre',
           'WM/GenreID'                => 'GenreID',
      -    'WM/InitialKey'             => 'InitialKey',
      +    'WM/InitialKey'             => { Name => 'InitialKey',  Writable => 'Unicode' },
           'WM/Language'               => 'Language',
           'WM/Lyrics'                 => 'Lyrics',
           'WM/MCDI'                   => 'MCDI',
           'WM/MediaClassPrimaryID'    => {
               Name => 'MediaClassPrimaryID',
      +        Writable => 'GUID',
               PrintConv => { #http://msdn.microsoft.com/en-us/library/windows/desktop/dd757960(v=vs.85).aspx
                   'D1607DBC-E323-4BE2-86A1-48A42A28441E' => 'Music',
                   'DB9830BD-3AB3-4FAB-8A37-1A995F7FF74B' => 'Video',
      @@ -360,6 +376,7 @@
           },
           'WM/MediaClassSecondaryID' => {
               Name => 'MediaClassSecondaryID',
      +        Writable => 'GUID',
               PrintConv => { #http://msdn.microsoft.com/en-us/library/windows/desktop/dd757960(v=vs.85).aspx
                   'E0236BEB-C281-4EDE-A36D-7AF76A3D45B5' => 'Audio Book',
                   '3A172A13-2BD9-4831-835B-114F6A95943F' => 'Spoken Word',
      @@ -385,22 +402,22 @@
           },
           'WM/MediaOriginalChannel'   => 'MediaOriginalChannel',
           'WM/MediaStationName'       => 'MediaStationName',
      -    'WM/Mood'                   => 'Mood',
      -    'WM/OriginalAlbumTitle'     => 'OriginalAlbumTitle',
      -    'WM/OriginalArtist'         => 'OriginalArtist',
      -    'WM/OriginalLyricist'       => 'OriginalLyricist',
      -    'WM/ParentalRating'         => 'ParentalRating',
      +    'WM/Mood'                   => { Name => 'Mood',        Writable => 'Unicode' },
      +    'WM/OriginalAlbumTitle'     => { Name => 'OriginalAlbumTitle',  Writable => 'Unicode' }, # (NC)
      +    'WM/OriginalArtist'         => { Name => 'OriginalArtist',      Writable => 'Unicode' }, # (NC)
      +    'WM/OriginalLyricist'       => { Name => 'OriginalLyricist',    Writable => 'Unicode' }, # (NC)
      +    'WM/ParentalRating'         => { Name => 'ParentalRating',      Writable => 'Unicode' },
           'WM/PartOfSet'              => 'PartOfSet',
      -    'WM/Period'                 => 'Period',
      -    'WM/Producer'               => 'Producer',
      +    'WM/Period'                 => { Name => 'Period',      Writable => 'Unicode' },
      +    'WM/Producer'               => { Name => 'Producer',    Writable => 'Unicode', List => 1 },
           'WM/ProtectionType'         => 'ProtectionType',
      -    'WM/Provider'               => 'Provider',
      +    'WM/Provider'               => { Name => 'Provider',    Writable => 'Unicode' }, # (NC)
           'WM/ProviderRating'         => 'ProviderRating',
           'WM/ProviderStyle'          => 'ProviderStyle',
      -    'WM/Publisher'              => 'Publisher',
      -    'WM/SharedUserRating'       => 'SharedUserRating',
      +    'WM/Publisher'              => { Name => 'Publisher',   Writable => 'Unicode' }, # (multiple entries separated by semicolon)
      +    'WM/SharedUserRating'       => { Name => 'SharedUserRating', Writable => 'int64u' },
           'WM/SubscriptionContentID'  => 'SubscriptionContentID',
      -    'WM/SubTitle'               => 'Subtitle',
      +    'WM/SubTitle'               => { Name => 'Subtitle',    Writable => 'Unicode' },
           'WM/SubTitleDescription'    => 'SubtitleDescription',
           'WM/TrackNumber'            => 'TrackNumber',
           'WM/UniqueFileIdentifier'   => 'UniqueFileIdentifier',
      @@ -412,8 +429,11 @@
           'WM/WMContentID'            => 'WMContentID',
           'WM/WMShadowFileSourceDRMType' => 'WMShadowFileSourceDRMType',
           'WM/WMShadowFileSourceFileType' => 'WMShadowFileSourceFileType',
      -    'WM/Writer'                 => 'Writer',
      -    'WM/Year'                   => { Name => 'Year', Groups => { 2 => 'Time' } },
      +    'WM/Writer'                 => { Name => 'Writer',  Groups => { 2 => 'Author' }, Writable => 'Unicode' }, # (NC)
      +    'WM/Year'                   => { Name => 'Year',    Groups => { 2 => 'Time' } },
      +    'WM/PromotionURL'           => { Name => 'PromotionURL',Writable => 'Unicode' },
      +    'WM/AuthorURL'              => { Name => 'AuthorURL', Groups => { 2 => 'Author' }, Writable => 'Unicode' },
      +    'WM/EncodedBy',             => { Name => 'EncodedBy',   Writable => 'Unicode' },
       
           # I can't find documentation for the following tags in videos,
           # but the tag ID's correspond to Microsoft property GUID+ID's
      @@ -422,9 +442,12 @@
           #  http://multi-rename-script.googlecode.com/svn-history/r4/trunk/plugins/ShellDetails/ShellDetails.ini
           # I have observed only 1 so far:
           '{2CBAA8F5-D81F-47CA-B17A-F8D822300131} 100' => {
      -        Name => 'DateAcquired',
      +        Name => 'DateAcquired', # (seems to be when videos are downloaded from the camera)
               Groups => { 2 => 'Time' },
      +        Shift => 'Time',
      +        Writable => 'vt_filetime',
               PrintConv => '$self->ConvertDateTime($val)',
      +        PrintConvInv => '$self->InverseDateTime($val,undef)',
           },
           # the following have not yet been observed...
           '{B725F130-47EF-101A-A5F1-02608C9EEBAC} 10'    => 'Name',
      @@ -765,6 +788,245 @@
       );
       
       #------------------------------------------------------------------------------
      +# check new value for Xtra tag
      +# Inputs: 0) ExifTool object ref, 1) tagInfo hash ref, 2) raw value ref
      +# Returns: error string, or undef on success
      +sub CheckXtra($$$)
      +{
      +    my ($et, $tagInfo, $valPt) = @_;
      +    my $format = $$tagInfo{Writable};
      +    return 'Unknown format' unless $format;
      +    if ($format =~ /^int/) {
      +        return 'Not an integer' unless Image::ExifTool::IsInt($$valPt);
      +    } elsif ($format ne 'Unicode') {
      +        my @vals = ($$valPt);
      +        return 'Invalid format' unless WriteXtraValue($et, $tagInfo, \@vals);
      +    }
      +    return undef;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Decode value(s) in Microsoft Xtra tag
      +# Inputs: 0) ExifTool object ref, 1) value data
      +# Returns: Scalar context: decoded value, List context: 0) decoded value, 1) format string
      +sub ReadXtraValue($$)
      +{
      +    my ($et, $data) = @_;
      +    my ($format, $i, @vals);
      +    
      +    return undef if length($data) < 10;
      +
      +    # (version flags according to the reference, but looks more like a count - PH)
      +    my $count = Get32u(\$data, 0);
      +    # point to start of first value (after 4-byte count, 4-byte length and 2-byte type)
      +    my $valPos = 10;
      +    for ($i=0; ;) {
      +        # (stored value includes size of $valLen and $valType, so subtract 6)
      +        my $valLen = Get32u(\$data, $valPos - 6) - 6;
      +        last if $valPos + $valLen > length($data);
      +        my $valType = Get16u(\$data, $valPos - 2);
      +        my $val = substr($data, $valPos, $valLen);
      +        # Note: all dumb Microsoft values are little-endian inside a big-endian-format file
      +        SetByteOrder('II');
      +        if ($valType == 8) {
      +            $format = 'Unicode';
      +            $val = $et->Decode($val, 'UCS2');
      +        } elsif ($valType == 19 and $valLen == 8) {
      +            $format = 'int64u';
      +            $val = Get64u(\$val, 0);
      +        } elsif ($valType == 21 and $valLen == 8) {
      +            $format = 'date';
      +            $val = Get64u(\$val, 0);
      +            # convert time from 100 ns intervals since Jan 1, 1601
      +            $val = $val * 1e-7 - 11644473600 if $val;
      +            # (the Nikon S100 uses UTC timezone, same as ASF - PH)
      +            $val = Image::ExifTool::ConvertUnixTime($val, 1);
      +        } elsif ($valType == 72 and $valLen == 16) {
      +            $format = 'GUID';
      +            $val = uc unpack('H*',pack('NnnNN',unpack('VvvNN',$val)));
      +            $val =~ s/(.{8})(.{4})(.{4})(.{4})/$1-$2-$3-$4-/;
      +        } elsif ($valType == 65 and $valLen > 4) { #PH (empirical)
      +            $format = 'variant';
      +            require Image::ExifTool::FlashPix;
      +            my $vPos = 0; # (necessary because ReadFPXValue updates this)
      +            # read entry as a VT_VARIANT (use FlashPix module for this)
      +            $val = Image::ExifTool::FlashPix::ReadFPXValue($et, \$val, $vPos,
      +                   Image::ExifTool::FlashPix::VT_VARIANT(), $valLen, 1);
      +        } else {
      +            $format = "Unknown($valType)";
      +        }
      +        SetByteOrder('MM'); # back to native QuickTime byte ordering
      +        push @vals, $val;
      +        last if ++$i >= $count;
      +        $valPos += $valLen + 6; # step to next value
      +        last if $valPos > length($data);
      +    }
      +    return wantarray ? (\@vals, $format) : \@vals;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Write a Microsoft Xtra value
      +# Inputs: 0) ExifTool object ref, 1) tagInfo ref, 2) reference to list of values
      +# Returns: new value binary data (or empty string)
      +sub WriteXtraValue($$$)
      +{
      +    my ($et, $tagInfo, $vals) = @_;
      +    my $format = $$tagInfo{Writable};
      +    my $buff = '';
      +    my $count = 0;
      +    my $val;
      +    foreach $val (@$vals) {
      +        SetByteOrder('II');
      +        my ($type, $dat);
      +        if ($format eq 'Unicode') {
      +            $dat = $et->Encode($val,'UCS2','II') . "\0\0";  # (must be null terminated)
      +            $type = 8;
      +        } elsif ($format eq 'int64u') {
      +            if (Image::ExifTool::IsInt($val)) {
      +                $dat = Set64u($val);
      +                $type = 19;
      +            }
      +        } elsif ($format eq 'date') {
      +            $dat = Image::ExifTool::GetUnixTime($val, 1);   # (convert to UTC, NC)
      +            if ($dat) {
      +                # 100ns intervals since Jan 1, 1601
      +                $dat = Set64u(($dat + 11644473600) * 1e7);
      +                $type = 21;
      +            }
      +        } elsif ($format eq 'vt_filetime') { # 'date' value inside a VT_VARIANT
      +            $dat = Image::ExifTool::GetUnixTime($val);  # (leave as local time, NC)
      +            if ($dat) {
      +                # 100ns intervals since Jan 1, 1601
      +                $dat = Set32u(64) . Set64u(($dat + 11644473600) * 1e7);
      +                $type = 65;
      +            }
      +        } elsif ($format eq 'GUID') {
      +            ($dat = $val) =~ tr/-//d;
      +            if (length($dat) == 32) {
      +                $dat = pack('VvvNN',unpack('NnnNN',pack('H*', $dat)));
      +                $type = 72;
      +            }
      +        } else {
      +            $et->WarnOnce("Error converting value for Microsoft:$$tagInfo{Name}");
      +        }
      +        SetByteOrder('MM');
      +        if (defined $type) {
      +            ++$count;
      +            $buff .= Set32u(length($dat)+6) . Set16u($type) . $dat;
      +        }
      +    }
      +    return $count ? Set32u($count) . $buff : '';
      +}
      +
      +#------------------------------------------------------------------------------
      +# Add new values to list
      +# Inputs: 0) ExifTool ref, 1) new value list ref, 2) nvHash ref
      +# Returns: true if something was added
      +sub AddNewValues($$$)
      +{
      +    my ($et, $vals, $nvHash) = @_;
      +    my @newVals = $et->GetNewValue($nvHash) or return undef;
      +    if ($$et{OPTIONS}{Verbose} > 1) {
      +        $et->VPrint(1, "  + Microsoft:$$nvHash{TagInfo}{Name} = $_\n") foreach @newVals;
      +    }
      +    push @$vals, @newVals;
      +    return 1;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Write tags to a Microsoft Xtra MP4 atom
      +# Inputs: 0) ExifTool object ref, 1) source dirInfo ref, 2) tag table ref
      +# Returns: Microsoft Xtra data block (may be empty if no Xtra data) or undef on error
      +sub WriteXtra($$$)
      +{
      +    my ($et, $dirInfo, $tagTablePtr) = @_;
      +    $et or return 1;      # allow dummy access
      +
      +    my $delGroup = ($$et{DEL_GROUP} and $$et{DEL_GROUP}{Microsoft});
      +    my $newTags = $et->GetNewTagInfoHash($tagTablePtr);
      +
      +    return undef unless $delGroup or %$newTags;  # don't rewrite if nothing to do
      +
      +    my $dataPt = $$dirInfo{DataPt};
      +    my $dataLen = length $$dataPt;
      +    my $newData = '';
      +    my $pos = 0;
      +    my ($err, %done, $changed, $tag);
      +
      +    if ($delGroup) {
      +        $changed = 1 if $dataLen;
      +        my $empty = '';
      +        $dataPt = $empty;
      +        $dataLen = 0;
      +    }
      +    for (;;) {
      +        last if $pos + 4 > $dataLen;
      +        my $size = Get32u($dataPt, $pos); # (includes $size word)
      +        ($size < 8 or $pos + $size > $dataLen) and $err=1, last;
      +        my $tagLen = Get32u($dataPt, $pos + 4);
      +        $tagLen + 18 > $size and $err=1, last;
      +        $tag = substr($$dataPt, $pos + 8, $tagLen);
      +        my @newVals;
      +        while ($$newTags{$tag}) {
      +            my $nvHash = $et->GetNewValueHash($$newTags{$tag});
      +            $$nvHash{CreateOnly} and delete($$newTags{$tag}), last; # don't edit this tag
      +            my $valPos = $pos + 8 + $tagLen;
      +            my $valLen = $size - 8 - $tagLen;
      +            my $val = ReadXtraValue($et, substr($$dataPt, $valPos, $valLen));
      +            foreach $val (@$val) {
      +                my $overwrite = $et->IsOverwriting($nvHash, $val);
      +                $overwrite or push(@newVals, $val), next;
      +                $et->VPrint(1, "  - Microsoft:$$newTags{$tag}{Name} = $val\n");
      +                next if $done{$tag};
      +                $done{$tag} = 1;
      +                AddNewValues($et, \@newVals, $nvHash);
      +            }
      +            # add to the end of the list if this was a List-type tag and we didn't delete anything
      +            if (not $done{$tag} and $$newTags{$tag}{List}) {
      +                AddNewValues($et, \@newVals, $nvHash) or last;
      +                $done{$tag} = 1;
      +            }
      +            last;   # (it was a cheap goto)
      +        }
      +        if ($done{$tag}) {
      +            $changed = 1;
      +            # write changed values
      +            my $buff = WriteXtraValue($et, $$newTags{$tag}, \@newVals);
      +            if (length $buff) {
      +                $newData .= Set32u(8+length($tag)+length($buff)) . Set32u(length($tag)) . $tag . $buff;
      +            }
      +        } else {
      +            # nothing changed; just copy over
      +            $newData .= substr($$dataPt, $pos, $size);
      +        }
      +        $pos += $size;  # step to next entry
      +    }
      +    if ($err) {
      +        $et->Warn('Microsoft Xtra format error');
      +        return undef;
      +    }
      +    # add any new tags
      +    foreach $tag (sort keys %$newTags) {
      +        next if $done{$tag};
      +        my $nvHash = $et->GetNewValueHash($$newTags{$tag});
      +        next unless $$nvHash{IsCreating} and not $$nvHash{EditOnly};
      +        my @newVals;
      +        AddNewValues($et, \@newVals, $nvHash) or next;
      +        my $buff = WriteXtraValue($et, $$newTags{$tag}, \@newVals);
      +        if (length $buff) {
      +            $newData .= Set32u(8+length($tag)+length($buff)) . Set32u(length($tag)) . $tag . $buff;
      +            $changed = 1;
      +        }
      +    }
      +    if ($changed) {
      +        ++$$et{CHANGED};
      +    } else {
      +        undef $newData;
      +    }
      +    return $newData;
      +}
      +
      +#------------------------------------------------------------------------------
       # Extract information from Xtra MP4 atom
       # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
       # Returns: 1 on success
      @@ -783,61 +1045,13 @@
               last if $size < 8 or $pos + $size > $dataLen;
               my $tagLen = Get32u($dataPt, $pos + 4);
               last if $tagLen + 18 > $size;
      -        my $tag = substr($$dataPt, $pos + 8, $tagLen);
      -        # (version flags according to the reference, but looks more like a count - PH)
      -        my $count = Get32u($dataPt, $pos + $tagLen + 8);
      -        my ($i, $valPos, $valLen, $valType, $val, $format, @vals);
      -        # point to start of first value (after 4-byte length and 2-byte type)
      -        $valPos = $pos + $tagLen + 18;
      -        for ($i=0; ;) {
      -            # (stored value includes size of $valLen and $valType, so subtract 6)
      -            $valLen  = Get32u($dataPt, $valPos - 6) - 6;
      -            my $more = $pos + $size - $valPos - $valLen;
      -            last if $more < 0;
      -            $valType = Get16u($dataPt, $valPos - 2);
      -            $val = substr($$dataPt, $valPos, $valLen);
      -            # Note: all dumb Microsoft values are little-endian inside a big-endian-format file
      -            SetByteOrder('II');
      -            if ($valType == 8) {
      -                $format = 'Unicode';
      -                $val = $et->Decode($val, 'UCS2');
      -            } elsif ($valType == 19 and $valLen == 8) {
      -                $format = 'int64u';
      -                $val = Get64u(\$val, 0);
      -            } elsif ($valType == 21 and $valLen == 8) {
      -                $format = 'date';
      -                $val = Get64u(\$val, 0);
      -                # convert time from 100 ns intervals since Jan 1, 1601
      -                $val = $val * 1e-7 - 11644473600 if $val;
      -                # (the Nikon S100 uses UTC timezone, same as ASF - PH)
      -                $val = Image::ExifTool::ConvertUnixTime($val) . 'Z';
      -            } elsif ($valType == 72 and $valLen == 16) {
      -                $format = 'GUID';
      -                $val = uc unpack('H*',pack('NnnNN',unpack('VvvNN',$val)));
      -                $val =~ s/(.{8})(.{4})(.{4})(.{4})/$1-$2-$3-$4-/;
      -            } elsif ($valType == 65 && $valLen > 4) { #PH (empirical)
      -                $format = 'variant';
      -                require Image::ExifTool::FlashPix;
      -                my $vPos = $valPos; # (necessary because ReadFPXValue updates this)
      -                # read entry as a VT_VARIANT (use FlashPix module for this)
      -                $val = Image::ExifTool::FlashPix::ReadFPXValue($et, $dataPt, $vPos,
      -                       Image::ExifTool::FlashPix::VT_VARIANT(), $valPos+$valLen, 1);
      -            } else {
      -                $format = "Unknown($valType)";
      -            }
      -            SetByteOrder('MM'); # back to native QuickTime byte ordering
      -            last if ++$i >= $count or $more < 6;
      -            push @vals, $val;
      -            undef $val;
      -            $valPos += $valLen + 6; # step to next value
      -        }
      -        if (@vals) {
      -            push @vals, $val if defined $val;
      -            $val = \@vals;
      -            $valPos = $pos + $tagLen + 18;
      -            $valLen = $size - 18 - $tagLen;
      -        }
      +        my $valLen = $size - 8 - $tagLen;
               if ($tagLen > 0 and $valLen > 0) {
      +            my $tag = substr($$dataPt, $pos + 8, $tagLen);
      +            my $valPos = $pos + 8 + $tagLen;
      +            my ($val, $format) = ReadXtraValue($et, substr($$dataPt, $valPos, $valLen));
      +            last unless defined $val;
      +            $val = $$val[0] if @$val == 1;
                   my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
                   unless ($tagInfo) {
                       # generate tag information for unrecognized tags
      @@ -850,6 +1064,7 @@
                           $et->VPrint(0, $$et{INDENT}, "[adding Microsoft:$tag]\n");
                       }
                   }
      +            my $count = ref $val ? scalar @$val : 1;
                   $et->HandleTag($tagTablePtr, $tag, $val,
                       TagInfo => $tagInfo,
                       DataPt  => $dataPt,
      @@ -857,7 +1072,7 @@
                       Start   => $valPos,
                       Size    => $valLen,
                       Format  => $format,
      -                Extra   => " count=$count type=$valType",
      +                Extra   => " count=$count",
                   );
               }
               $pos += $size;  # step to next entry
      @@ -880,11 +1095,12 @@
       =head1 DESCRIPTION
       
       This module contains definitions required by Image::ExifTool to interpret
      -Microsoft-specific EXIF and XMP tags.
      +Microsoft-specific EXIF and XMP tags, and routines to read/write Microsoft
      +Xtra tags in videos.
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MIE.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MIE.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MIE.pm	2020-02-14 12:27:04.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MIE.pm	2022-01-12 22:51:55.000000000 +0000
      @@ -14,7 +14,7 @@
       use Image::ExifTool::Exif;
       use Image::ExifTool::GPS;
       
      -$VERSION = '1.48';
      +$VERSION = '1.49';
       
       sub ProcessMIE($$);
       sub ProcessMIEGroup($$$);
      @@ -393,7 +393,7 @@
               ValueConv    => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
               ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 0)',
               PrintConv    => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
      -        PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
      +        PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lat")',
           },
           Longitude => {
               Name => 'GPSLongitude',
      @@ -406,7 +406,7 @@
               ValueConv    => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
               ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 0)',
               PrintConv    => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
      -        PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
      +        PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lon")',
           },
           MeasureMode => {
               Name => 'GPSMeasureMode',
      @@ -1023,6 +1023,7 @@
                   # we are writing the new tag now
                   my ($newVal, $writable, $oldVal, $newFormat, $compress);
                   my $newTag = shift @editTags;
      +            length($newTag) > 255 and $et->Warn('Tag name too long'), next; # (just to be safe)
                   my $newInfo = $$editDirs{$newTag};
                   if ($newInfo) {
                       # create the new subdirectory or rewrite existing non-MIE directory
      @@ -2544,7 +2545,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.  The MIE format itself is also
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MIEUnits.pod libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MIEUnits.pod
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MIEUnits.pod	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MIEUnits.pod	2022-01-12 22:51:56.000000000 +0000
      @@ -356,7 +356,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MIFF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MIFF.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MIFF.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MIFF.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -255,7 +255,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Minolta.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Minolta.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Minolta.pm	2020-02-14 12:26:47.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Minolta.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -49,7 +49,7 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::Exif;
       
      -$VERSION = '2.83';
      +$VERSION = '2.87';
       
       # Full list of product codes for Sony-compatible Minolta lenses
       # (ref http://www.kb.sony.com/selfservice/documentLink.do?externalId=C1000570)
      @@ -602,13 +602,18 @@
           15 => 'Light', #JR (NC)
           16 => 'Autumn Leaves', #JR (NC)
           17 => 'Sepia', #JR
      +    18 => 'FL', #JR (7SM3)
      +    19 => 'Vivid 2', #JR (7SM3)
      +    20 => 'IN', #JR (7SM3)
      +    21 => 'SH', #JR (7SM3)
           100 => 'Neutral', #JD
           101 => 'Clear', #JD
           102 => 'Deep', #JD
           103 => 'Light', #JD
           104 => 'Night View', #JD
           105 => 'Autumn Leaves', #JD
      -    0xffffffff => 'n/a', #PH
      +    255 => 'Off', #JR (new for ILCE-7SM3, July 2020)
      +   0xffffffff => 'n/a', #PH
       );
       
       %minoltaSceneMode = (
      @@ -2923,7 +2928,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MinoltaRaw.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MinoltaRaw.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MinoltaRaw.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MinoltaRaw.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -17,7 +17,7 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::Minolta;
       
      -$VERSION = '1.15';
      +$VERSION = '1.16';
       
       sub ProcessMRW($$;$);
       sub WriteMRW($$;$);
      @@ -59,10 +59,12 @@
           CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
           WRITABLE => 1,
           GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    DATAMEMBER => [ 0 ],
           FIRST_ENTRY => 0,
           0 => {
               Name => 'FirmwareID',
               Format => 'string[8]',
      +        RawConv => '$$self{MinoltaPRD} = 1 if $$self{FILE_TYPE} eq "MRW"; $val',  # used in decoding RIF info
           },
           8 => {
               Name => 'SensorHeight',
      @@ -214,38 +216,37 @@
                   PrintConv => \%Image::ExifTool::Minolta::sonyColorMode,
               },
           ],
      -    # NOTE: some of these WB_RBLevels may apply to other models too...
      +    # NOTE: WB_RBLevels up to Custom also apply to Minolta models which write PRD info (ref IB)
           8  => { #3
               Name => 'WB_RBLevelsTungsten',
      -        Condition => '$$self{Model} eq "DSLR-A100"',
      +        Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
               Format => 'int16u[2]',
               Notes => 'these WB_RBLevels currently decoded only for the Sony A100',
           },
           12 => { #3
               Name => 'WB_RBLevelsDaylight',
      -        Condition => '$$self{Model} eq "DSLR-A100"',
      +        Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
               Format => 'int16u[2]',
           },
           16 => { #3
               Name => 'WB_RBLevelsCloudy',
      -        Condition => '$$self{Model} eq "DSLR-A100"',
      +        Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
               Format => 'int16u[2]',
           },
           20 => { #3
               Name => 'WB_RBLevelsCoolWhiteF',
      -        Condition => '$$self{Model} eq "DSLR-A100"',
      +        Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
               Format => 'int16u[2]',
           },
           24 => { #3
               Name => 'WB_RBLevelsFlash',
      -        Condition => '$$self{Model} eq "DSLR-A100"',
      +        Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
               Format => 'int16u[2]',
           },
           28 => { #3
      -        Name => 'WB_RBLevelsUnknown',
      -        Condition => '$$self{Model} eq "DSLR-A100"',
      +        Name => 'WB_RBLevelsCustom', #IB
      +        Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
               Format => 'int16u[2]',
      -        Unknown => 1,
           },
           32 => { #3
               Name => 'WB_RBLevelsShade',
      @@ -511,7 +512,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MNG.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MNG.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MNG.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MNG.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -661,7 +661,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MOI.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MOI.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MOI.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MOI.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -137,7 +137,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Motorola.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Motorola.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Motorola.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Motorola.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -159,7 +159,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MPC.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MPC.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MPC.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MPC.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -134,7 +134,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MPEG.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MPEG.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MPEG.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MPEG.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -704,7 +704,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MPF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MPF.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MPF.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MPF.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -28,8 +28,8 @@
               from this segment is stored as a JPEG trailer.  The MPF tags are not
               writable, however the MPF segment may be deleted as a group (with "MPF:All")
               but then the JPEG trailer should also be deleted (with "Trailer:All").  See
      -        L for the official
      -        specification.
      +        L
      +        for the official specification.
           },
           0xb000 => 'MPFVersion',
           0xb001 => 'NumberOfImages',
      @@ -266,7 +266,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MRC.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MRC.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MRC.pm	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MRC.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -0,0 +1,341 @@
      +#------------------------------------------------------------------------------
      +# File:         MRC.pm
      +#
      +# Description:  Read MRC (Medical Research Council) image files
      +#
      +# Revisions:    2021-04-21 - P. Harvey Created
      +#
      +# References:   1) https://www.ccpem.ac.uk/mrc_format/mrc2014.php
      +#               2) http://legacy.ccp4.ac.uk/html/library.html
      +#               3) https://github.com/ccpem/mrcfile/blob/master/mrcfile/dtypes.py
      +#
      +# Notes:        The header is basically identical to the older CCP4 file format
      +#------------------------------------------------------------------------------
      +
      +package Image::ExifTool::MRC;
      +
      +use strict;
      +use vars qw($VERSION);
      +use Image::ExifTool qw(:DataAccess :Utils);
      +
      +$VERSION = '1.00';
      +
      +my %bool = (
      +    Format => 'int8u',
      +    PrintConv => { 0 => 'No', 1 => 'Yes' } 
      +);
      +
      +%Image::ExifTool::MRC::Main = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Image' },
      +    VARS => { NO_LOOKUP => 1 }, # omit tags from lookup
      +    FORMAT => 'int32u',
      +    NOTES => q{
      +        Tags extracted from Medical Research Council (MRC) format imaging files. 
      +        See L for the specification.
      +    },
      +    0 => 'ImageWidth',
      +    1 => 'ImageHeight',
      +    2 => {
      +        Name => 'ImageDepth',
      +        Notes => q{
      +            number of sections. Use ExtractEmbedded option to extract metadata for all
      +            sections
      +        },
      +        RawConv => '$$self{ImageDepth} = $val',
      +    },
      +    3 => {
      +        Name => 'ImageMode',
      +        PrintConv => {
      +            0 => '8-bit signed integer',
      +            1 => '16-bit signed integer',
      +            2 => '32-bit signed real',
      +            3 => 'complex 16-bit integer',
      +            4 => 'complex 32-bit real',
      +            6 => '16-bit unsigned integer',
      +        },
      +    },
      +    4 => { Name => 'StartPoint', Format => 'int32u[3]' },
      +    7 => { Name => 'GridSize',   Format => 'int32u[3]' },
      +    10 => { Name => 'CellWidth', Format => 'float', Notes => 'cell size in angstroms' },
      +    11 => { Name => 'CellHeight',Format => 'float' },
      +    12 => { Name => 'CellDepth', Format => 'float' },
      +    13 => { Name => 'CellAlpha', Format => 'float' },
      +    14 => { Name => 'CellBeta',  Format => 'float' },
      +    15 => { Name => 'CellGamma', Format => 'float' },
      +    16 => { Name => 'ImageWidthAxis',  PrintConv => { 1 => 'X', 2 => 'Y', 3 => 'Z' } },
      +    17 => { Name => 'ImageHeightAxis', PrintConv => { 1 => 'X', 2 => 'Y', 3 => 'Z' } },
      +    18 => { Name => 'ImageDepthAxis',  PrintConv => { 1 => 'X', 2 => 'Y', 3 => 'Z' } },
      +    19 => { Name => 'DensityMin', Format => 'float' },
      +    20 => { Name => 'DensityMax', Format => 'float' },
      +    21 => { Name => 'DensityMean',Format => 'float' },
      +    22 => 'SpaceGroupNumber',
      +    23 => { Name => 'ExtendedHeaderSize', RawConv => '$$self{ExtendedHeaderSize} = $val' },
      +    26 => { Name => 'ExtendedHeaderType', Format => 'string[4]', RawConv => '$$self{ExtendedHeaderType} = $val' },
      +    27 => 'MRCVersion',
      +    49 => { Name => 'Origin',     Format => 'float[3]' },
      +    53 => { Name => 'MachineStamp', Format => 'int8u[4]', PrintConv => 'sprintf("0x%.2x 0x%.2x 0x%.2x 0x%.2x",split " ", $val)' },
      +    54 => { Name => 'RMSDeviation', Format => 'float' },
      +    55 => { Name => 'NumberOfLabels', RawConv => '$$self{NLab} = $val' },
      +    56 => { Name => 'Label0', Format => 'string[80]', Condition => '$$self{NLab} > 0' },
      +    76 => { Name => 'Label1', Format => 'string[80]', Condition => '$$self{NLab} > 1' },
      +    96 => { Name => 'Label2', Format => 'string[80]', Condition => '$$self{NLab} > 2' },
      +   116 => { Name => 'Label3', Format => 'string[80]', Condition => '$$self{NLab} > 3' },
      +   136 => { Name => 'Label4', Format => 'string[80]', Condition => '$$self{NLab} > 4' },
      +   156 => { Name => 'Label5', Format => 'string[80]', Condition => '$$self{NLab} > 5' },
      +   176 => { Name => 'Label6', Format => 'string[80]', Condition => '$$self{NLab} > 6' },
      +   196 => { Name => 'Label7', Format => 'string[80]', Condition => '$$self{NLab} > 7' },
      +   216 => { Name => 'Label8', Format => 'string[80]', Condition => '$$self{NLab} > 8' },
      +   236 => { Name => 'Label9', Format => 'string[80]', Condition => '$$self{NLab} > 9' },
      +);
      +
      +%Image::ExifTool::MRC::FEI12 = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Image' },
      +    VARS => { NO_LOOKUP => 1 }, # omit tags from lookup (way too many!)
      +    NOTES => 'Tags extracted from FEI1 and FEI2 extended headers.',
      +    0 => { Name => 'MetadataSize',    Format => 'int32u', RawConv => '$$self{MetadataSize} = $val' },
      +    4 => { Name => 'MetadataVersion', Format => 'int32u' },
      +    8 => {
      +        Name => 'Bitmask1',
      +        Format => 'int32u',
      +        RawConv => '$$self{BitM} = $val',
      +        PrintConv => 'sprintf("0x%.8x", $val)',
      +    },
      +    12 => {
      +        Name => 'TimeStamp',
      +        Format => 'double', 
      +        Condition => '$$self{BitM} & 0x01',
      +        Groups => { 2 => 'Time'},
      +        # shift from days since Dec 30, 1899 to Unix epoch of Jan 1, 1970
      +        # (my sample looks like local time, although it should be UTC)
      +        ValueConv => 'ConvertUnixTime(($val-25569)*24*3600)',
      +        PrintConv => '$self->ConvertDateTime($val)',
      +    },
      +    20  => { Name => 'MicroscopeType',  Format => 'string[16]', Condition => '$$self{BitM} & 0x02' },
      +    36  => { Name => 'MicroscopeID',    Format => 'string[16]', Condition => '$$self{BitM} & 0x04' },
      +    52  => { Name => 'Application',     Format => 'string[16]', Condition => '$$self{BitM} & 0x08' },
      +    68  => { Name => 'AppVersion',      Format => 'string[16]', Condition => '$$self{BitM} & 0x10' },
      +    84  => { Name => 'HighTension',     Format => 'double',     Condition => '$$self{BitM} & 0x20', Notes => 'volts' },
      +    92  => { Name => 'Dose',            Format => 'double',     Condition => '$$self{BitM} & 0x40', Notes => 'electrons/m2' },
      +    100 => { Name => 'AlphaTilt',       Format => 'double',     Condition => '$$self{BitM} & 0x80' },
      +    108 => { Name => 'BetaTilt',        Format => 'double',     Condition => '$$self{BitM} & 0x100' },
      +    116 => { Name => 'XStage',          Format => 'double',     Condition => '$$self{BitM} & 0x200' },
      +    124 => { Name => 'YStage',          Format => 'double',     Condition => '$$self{BitM} & 0x400' },
      +    132 => { Name => 'ZStage',          Format => 'double',     Condition => '$$self{BitM} & 0x800' },
      +    140 => { Name => 'TiltAxisAngle',   Format => 'double',     Condition => '$$self{BitM} & 0x1000' },
      +    148 => { Name => 'DualAxisRot',     Format => 'double',     Condition => '$$self{BitM} & 0x2000' },
      +    156 => { Name => 'PixelSizeX',      Format => 'double',     Condition => '$$self{BitM} & 0x4000' },
      +    164 => { Name => 'PixelSizeY',      Format => 'double',     Condition => '$$self{BitM} & 0x8000' },
      +    220 => { Name => 'Defocus',         Format => 'double',     Condition => '$$self{BitM} & 0x400000' },
      +    228 => { Name => 'STEMDefocus',     Format => 'double',     Condition => '$$self{BitM} & 0x800000' },
      +    236 => { Name => 'AppliedDefocus',  Format => 'double',     Condition => '$$self{BitM} & 0x1000000' },
      +    244 => { Name => 'InstrumentMode',  Format => 'int32u',     Condition => '$$self{BitM} & 0x2000000', PrintConv => { 1 => 'TEM', 2 => 'STEM' } },
      +    248 => { Name => 'ProjectionMode',  Format => 'int32u',     Condition => '$$self{BitM} & 0x4000000', PrintConv => { 1 => 'Diffraction', 2 => 'Imaging' } },
      +    252 => { Name => 'ObjectiveLens',   Format => 'string[16]', Condition => '$$self{BitM} & 0x8000000' },
      +    268 => { Name => 'HighMagnificationMode', Format => 'string[16]', Condition => '$$self{BitM} & 0x10000000' },
      +    284 => { Name => 'ProbeMode',       Format => 'int32u',     Condition => '$$self{BitM} & 0x20000000', PrintConv => { 1 => 'Nano', 2 => 'Micro' } },
      +    288 => { Name => 'EFTEMOn',         %bool,                  Condition => '$$self{BitM} & 0x40000000' },
      +    289 => { Name => 'Magnification',   Format => 'double',     Condition => '$$self{BitM} & 0x80000000' },
      +    297 => {
      +        Name => 'Bitmask2',
      +        Format => 'int32u',
      +        RawConv => '$$self{BitM} = $val',
      +        PrintConv => 'sprintf("0x%.8x", $val)',
      +    },
      +    301 => { Name => 'CameraLength',    Format => 'double',     Condition => '$$self{BitM} & 0x01' },
      +    309 => { Name => 'SpotIndex',       Format => 'int32u',     Condition => '$$self{BitM} & 0x02' },
      +    313 => { Name => 'IlluminationArea',Format => 'double',     Condition => '$$self{BitM} & 0x04' },
      +    321 => { Name => 'Intensity',       Format => 'double',     Condition => '$$self{BitM} & 0x08' },
      +    329 => { Name => 'ConvergenceAngle',Format => 'double',     Condition => '$$self{BitM} & 0x10' },
      +    337 => { Name => 'IlluminationMode',Format => 'string[16]', Condition => '$$self{BitM} & 0x20' },
      +    353 => { Name => 'WideConvergenceAngleRange', %bool,        Condition => '$$self{BitM} & 0x40' },
      +    354 => { Name => 'SlitInserted',    %bool,                  Condition => '$$self{BitM} & 0x80' },
      +    355 => { Name => 'SlitWidth',       Format => 'double',     Condition => '$$self{BitM} & 0x100' },
      +    363 => { Name => 'AccelVoltOffset', Format => 'double',     Condition => '$$self{BitM} & 0x200' },
      +    371 => { Name => 'DriftTubeVolt',   Format => 'double',     Condition => '$$self{BitM} & 0x400' },
      +    379 => { Name => 'EnergyShift',     Format => 'double',     Condition => '$$self{BitM} & 0x800' },
      +    387 => { Name => 'ShiftOffsetX',    Format => 'double',     Condition => '$$self{BitM} & 0x1000' },
      +    395 => { Name => 'ShiftOffsetY',    Format => 'double',     Condition => '$$self{BitM} & 0x2000' },
      +    403 => { Name => 'ShiftX',          Format => 'double',     Condition => '$$self{BitM} & 0x4000' },
      +    411 => { Name => 'ShiftY',          Format => 'double',     Condition => '$$self{BitM} & 0x8000' },
      +    419 => { Name => 'IntegrationTime', Format => 'double',     Condition => '$$self{BitM} & 0x10000' },
      +    427 => { Name => 'BinningWidth',    Format => 'int32u',     Condition => '$$self{BitM} & 0x20000' },
      +    431 => { Name => 'BinningHeight',   Format => 'int32u',     Condition => '$$self{BitM} & 0x40000' },
      +    435 => { Name => 'CameraName',      Format => 'string[16]', Condition => '$$self{BitM} & 0x80000' },
      +    451 => { Name => 'ReadoutAreaLeft', Format => 'int32u',     Condition => '$$self{BitM} & 0x100000' },
      +    455 => { Name => 'ReadoutAreaTop',  Format => 'int32u',     Condition => '$$self{BitM} & 0x200000' },
      +    459 => { Name => 'ReadoutAreaRight',Format => 'int32u',     Condition => '$$self{BitM} & 0x400000' },
      +    463 => { Name => 'ReadoutAreaBottom',Format=> 'int32u',     Condition => '$$self{BitM} & 0x800000' },
      +    467 => { Name => 'CetaNoiseReduct', %bool,                  Condition => '$$self{BitM} & 0x1000000' },
      +    468 => { Name => 'CetaFramesSummed',Format => 'int32u',     Condition => '$$self{BitM} & 0x2000000' },
      +    472 => { Name => 'DirectDetElectronCounting', %bool,        Condition => '$$self{BitM} & 0x4000000' },
      +    473 => { Name => 'DirectDetAlignFrames',      %bool,        Condition => '$$self{BitM} & 0x8000000' },
      +    490 => {
      +        Name => 'Bitmask3',
      +        Format => 'int32u',
      +        RawConv => '$$self{BitM} = $val',
      +        PrintConv => 'sprintf("0x%.8x", $val)',
      +    },
      +    518 => { Name => 'PhasePlate',      %bool,                  Condition => '$$self{BitM} & 0x40' },
      +    519 => { Name => 'STEMDetectorName',Format => 'string[16]', Condition => '$$self{BitM} & 0x80' },
      +    535 => { Name => 'Gain',            Format => 'double',     Condition => '$$self{BitM} & 0x100' },
      +    543 => { Name => 'Offset',          Format => 'double',     Condition => '$$self{BitM} & 0x200' },
      +    571 => { Name => 'DwellTime',       Format => 'double',     Condition => '$$self{BitM} & 0x8000' },
      +    579 => { Name => 'FrameTime',       Format => 'double',     Condition => '$$self{BitM} & 0x10000' },
      +    587 => { Name => 'ScanSizeLeft',    Format => 'int32u',     Condition => '$$self{BitM} & 0x20000' },
      +    591 => { Name => 'ScanSizeTop',     Format => 'int32u',     Condition => '$$self{BitM} & 0x40000' },
      +    595 => { Name => 'ScanSizeRight',   Format => 'int32u',     Condition => '$$self{BitM} & 0x80000' },
      +    599 => { Name => 'ScanSizeBottom',  Format => 'int32u',     Condition => '$$self{BitM} & 0x100000' },
      +    603 => { Name => 'FullScanFOV_X',   Format => 'double',     Condition => '$$self{BitM} & 0x200000' },
      +    611 => { Name => 'FullScanFOV_Y',   Format => 'double',     Condition => '$$self{BitM} & 0x400000' },
      +    619 => { Name => 'Element',         Format => 'string[16]', Condition => '$$self{BitM} & 0x800000' },
      +    635 => { Name => 'EnergyIntervalLower', Format => 'double', Condition => '$$self{BitM} & 0x1000000' },
      +    643 => { Name => 'EnergyIntervalHigher',Format => 'double', Condition => '$$self{BitM} & 0x2000000' },
      +    651 => { Name => 'Method',          Format=> 'int32u',      Condition => '$$self{BitM} & 0x4000000' },
      +    655 => { Name => 'IsDoseFraction',  %bool,                  Condition => '$$self{BitM} & 0x8000000' },
      +    656 => { Name => 'FractionNumber',  Format => 'int32u',     Condition => '$$self{BitM} & 0x10000000' },
      +    660 => { Name => 'StartFrame',      Format => 'int32u',     Condition => '$$self{BitM} & 0x20000000' },
      +    664 => { Name => 'EndFrame',        Format => 'int32u',     Condition => '$$self{BitM} & 0x40000000' },
      +    668 => { Name =>'InputStackFilename',Format=> 'string[80]', Condition => '$$self{BitM} & 0x80000000' },
      +    748 => {
      +        Name => 'Bitmask4',
      +        Format => 'int32u',
      +        RawConv => '$$self{BitM} = $val',
      +        PrintConv => 'sprintf("0x%.8x", $val)',
      +    },
      +    752 => { Name => 'AlphaTiltMin',   Format => 'double',     Condition => '$$self{BitM} & 0x01' },
      +    760 => { Name => 'AlphaTiltMax',   Format => 'double',     Condition => '$$self{BitM} & 0x02' },
      +#
      +# FEI2 header starts here
      +#
      +    768 => { Name => 'ScanRotation',   Format => 'double',     Condition => '$$self{BitM} & 0x04' },
      +    776 => { Name => 'DiffractionPatternRotation',Format=>'double', Condition => '$$self{BitM} & 0x08' },
      +    784 => { Name => 'ImageRotation',  Format => 'double',     Condition => '$$self{BitM} & 0x10' },
      +    792 => { Name => 'ScanModeEnumeration',Format => 'int32u', Condition => '$$self{BitM} & 0x20', PrintConv => { 0 => 'Other', 1 => 'Raster', 2 => 'Serpentine' } },
      +    796 => {
      +        Name => 'AcquisitionTimeStamp',
      +        Format => 'int64u',
      +        Condition => '$$self{BitM} & 0x40',
      +        Groups => { 2 => 'Time' },
      +        # microseconds since 1970 UTC
      +        ValueConv => 'ConvertUnixTime($val / 1e6, 1, 6)',
      +        PrintConv => '$self->ConvertDateTime($val)',
      +    },
      +    804 => { Name => 'DetectorCommercialName', Format => 'string[16]', Condition => '$$self{BitM} & 0x80' },
      +    820 => { Name => 'StartTiltAngle', Format => 'double',     Condition => '$$self{BitM} & 0x100' },
      +    828 => { Name => 'EndTiltAngle',   Format => 'double',     Condition => '$$self{BitM} & 0x200' },
      +    836 => { Name => 'TiltPerImage',   Format => 'double',     Condition => '$$self{BitM} & 0x400' },
      +    844 => { Name => 'TitlSpeed',      Format => 'double',     Condition => '$$self{BitM} & 0x800' },
      +    852 => { Name => 'BeamCenterX',    Format => 'int32u',     Condition => '$$self{BitM} & 0x1000' },
      +    856 => { Name => 'BeamCenterY',    Format => 'int32u',     Condition => '$$self{BitM} & 0x2000' },
      +    860 => {
      +        Name => 'CFEGFlashTimeStamp',
      +        Format => 'int64u',
      +        Condition => '$$self{BitM} & 0x4000',
      +        Groups => { 2 => 'Time' },
      +        ValueConv => 'ConvertUnixTime($val / 1e6, 1, 6)',
      +        PrintConv => '$self->ConvertDateTime($val)',
      +    },
      +    868 => { Name => 'PhasePlatePosition',Format => 'int32u',  Condition => '$$self{BitM} & 0x8000' },
      +    872 => { Name => 'ObjectiveAperture', Format=>'string[16]',Condition => '$$self{BitM} & 0x10000' },
      +);
      +
      +#------------------------------------------------------------------------------
      +# Extract metadata from a MRC image
      +# Inputs: 0) ExifTool object reference, 1) dirInfo reference
      +# Returns: 1 on success, 0 if this wasn't a valid MRC file
      +sub ProcessMRC($$)
      +{
      +    my ($et, $dirInfo) = @_;
      +    my $raf = $$dirInfo{RAF};
      +    my ($buff, $tagTablePtr, $i);
      +
      +    # verify this is a valid MRC file
      +    return 0 unless $raf->Read($buff, 1024) == 1024;
      +    # validate axes, "MAP" file type and machine stamp
      +    return 0 unless $buff =~ /^.{64}[\x01\x02\x03]\0\0\0[\x01\x02\x03]\0\0\0[\x01\x02\x03]\0\0\0.{132}MAP[\0 ](\x44\x44|\x44\x41|\x11\x11)\0\0/s;
      +
      +    $et->SetFileType();
      +    SetByteOrder('II');
      +    my %dirInfo = (
      +        DataPt => \$buff,
      +        DirStart => 0,
      +        DirLen => length($buff),
      +    );
      +    $tagTablePtr = GetTagTable('Image::ExifTool::MRC::Main');
      +    $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
      +
      +    # (I don't have any samples with extended headers for testing, so these are not yet decoded)
      +    if ($$et{ExtendedHeaderSize} and $$et{ExtendedHeaderType} =~ /^FEI[12]/) {
      +        unless ($raf->Read($buff,4)==4 and $raf->Seek(-4,1)) { # read metadata size
      +            $et->Warn('Error reading extended header'); 
      +            return 1;
      +        }
      +        my $size = Get32u(\$buff, 0);
      +        if ($size * $$et{ImageDepth} > $$et{ExtendedHeaderSize}) {
      +            $et->Warn('Corrupted extended header');
      +            return 1;
      +        }
      +        $dirInfo{DirLen} = $size;
      +        $tagTablePtr = GetTagTable('Image::ExifTool::MRC::FEI12');
      +        for ($i=0; ;) {
      +            $dirInfo{DataPos} = $raf->Tell();
      +            $raf->Read($buff, $size) == $size or $et->Warn("Error reading extended header $i"), last;
      +            $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
      +            last if ++$i >= $$et{ImageDepth};
      +            unless ($$et{OPTIONS}{ExtractEmbedded}) {
      +                $et->Warn('Use the ExtractEmbedded option to read metadata for all frames',3);
      +                last;
      +            }
      +            $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +        }
      +        delete $$et{DOC_NUM};
      +    }
      +
      +    return 1;
      +}
      +
      +1;  # end
      +
      +__END__
      +
      +=head1 NAME
      +
      +Image::ExifTool::MRC - Read MRC meta information
      +
      +=head1 SYNOPSIS
      +
      +This module is used by Image::ExifTool
      +
      +=head1 DESCRIPTION
      +
      +This module contains definitions required by Image::ExifTool to read
      +metadata from Medical Research Council (MRC) images.
      +
      +=head1 AUTHOR
      +
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
      +
      +This library is free software; you can redistribute it and/or modify it
      +under the same terms as Perl itself.
      +
      +=head1 REFERENCES
      +
      +=over 4
      +
      +=item L
      +
      +=item L
      +
      +=item L
      +
      +=back
      +
      +=head1 SEE ALSO
      +
      +L,
      +L
      +
      +=cut
      +
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MWG.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MWG.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MWG.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MWG.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -16,7 +16,7 @@
       use Image::ExifTool::Exif;
       use Image::ExifTool::XMP;
       
      -$VERSION = '1.23';
      +$VERSION = '1.24';
       
       sub RecoverTruncatedIPTC($$$);
       sub ListToString($);
      @@ -460,7 +460,8 @@
           NOTES => q{
               Image region metadata defined by the MWG 2.0 specification.  These tags
               may be accessed without the need to load the MWG Composite tags above.  See
      -        L for the official specification.
      +        L
      +        for the official specification.
           },
           Regions => {
               Name => 'RegionInfo',
      @@ -488,8 +489,9 @@
               Hierarchical keywords metadata defined by the MWG 2.0 specification. 
               ExifTool unrolls keyword structures to an arbitrary depth of 6 to allow
               individual levels to be accessed with different tag names, and to avoid
      -        infinite recursion.  See L for the
      -        official specification.
      +        infinite recursion.  See
      +        L
      +        for the official specification.
           },
           # arbitrarily define only the first 6 levels of the keyword hierarchy
           Keywords => {
      @@ -527,7 +529,8 @@
           NAMESPACE => 'mwg-coll',
           NOTES => q{
               Collections metadata defined by the MWG 2.0 specification.  See
      -        L for the official specification.
      +        L
      +        for the official specification.
           },
           Collections => {
               FlatName => '',
      @@ -626,6 +629,14 @@
           local $_;
           my ($et, $nvHash, $val, $newValuePt) = @_;
           my (@new, $delIndex);
      +    my $writeMode = $et->Options('WriteMode');
      +    if ($writeMode ne 'wcg') {
      +        if (defined $val) {
      +            $writeMode =~ /w/i or return 0;
      +        } else {
      +            $writeMode =~ /c/i or return 0;
      +        }
      +    }
           if ($$nvHash{DelValue} and defined $val) {
               # preserve specified old values
               my $old = StringToList($val, $et);
      @@ -745,7 +756,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/MXF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MXF.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/MXF.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/MXF.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -1066,7 +1066,7 @@
           '060e2b34.0101.0102.04010503.08000000' => { Name => 'Palette', Type => 'DataValue', Unknown => 1 },
           '060e2b34.0101.0102.04010503.09000000' => { Name => 'PaletteLayout', Type => 'RGBALayout', Unknown => 1 },
           '060e2b34.0101.0102.04010503.0a000000' => { Name => 'ComponentDepth', Format => 'int32u' },
      -    '060e2b34.0101.0102.04010601.00000000' => { Name => 'VideoCodingSchemeID', Type => 'AUID', Unknown => 1 },
      +    '060e2b34.0101.0102.04010601.00000000' => { Name => 'VideoCodingSchemeID', Type => 'AUID' },
           '060e2b34.0101.0102.04010802.03000000' => { Name => 'RoundedCaptureFilmFrameRate', Format => 'int32u' },
           '060e2b34.0101.0102.04020301.02000000' => { Name => 'AudioAverageBitrate', Format => 'float', PrintConv => 'ConvertBitrate($val)', Groups => { 2 => 'Audio' } },
           '060e2b34.0101.0102.04020301.03000000' => { Name => 'AudioFixedBitrateFlag', Type => 'Boolean', Groups => { 2 => 'Audio' } },
      @@ -2987,7 +2987,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/NikonCapture.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/NikonCapture.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/NikonCapture.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/NikonCapture.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -918,7 +918,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/NikonCustom.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/NikonCustom.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/NikonCustom.pm	2020-02-14 12:25:48.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/NikonCustom.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -5,7 +5,7 @@
       #
       # Revisions:    2009/11/25 - P. Harvey Created
       #
      -# References:   1) Warren Hatch private communication (D3 with SB-800 and SB-900)
      +# References:   1) Warren Hatch private communication (D3 and Z9 with SB-800 and SB-900)
       #               2) Anonymous contribution 2011/05/25 (D700, D7000)
       #              JD) Jens Duttke private communication
       #------------------------------------------------------------------------------
      @@ -15,8 +15,122 @@
       use strict;
       use vars qw($VERSION);
       
      -$VERSION = '1.17';
      +$VERSION = '1.19';
       
      +my %buttonsZ9= (
      +    0 => 'None',
      +    1 => 'Preview',
      +    3 => 'FV Lock',
      +    4 => 'AE/AF Lock',
      +    5 => 'AE Lock Only',
      +    6 => 'AE Lock (reset on release)',
      +    7 => 'AE Lock (hold)',
      +    8 => 'AF Lock Only',
      +    9 => 'AF-On',
      +    10 => 'Flash Disable/Enable',
      +    11 => 'Bracketing Burst',
      +    12 => '+NEF(RAW)',
      +    18 => 'Virtual Horizon',
      +    19 => 'Synchronized Release',
      +    20 => 'My Menu',
      +    21 => 'My Menu Top Item',
      +    22 => 'Playback',
      +    23 => 'Rating',
      +    24 => 'Protect',
      +    25 => 'Zoom',
      +    26 => 'Focus Peaking',
      +    28 => 'Image Area',
      +    30 => 'Non-CPU Lens',
      +    31 => 'Active-D Lighting',
      +    33 => '1 Stop Speed/Aperture',
      +    35 => 'Metering',
      +    36 => 'Auto Bracketing',
      +    37 => 'Multiple Exposure',
      +    38 => 'HDR Overlay',
      +    39 => 'Picture Control',
      +    40 => 'Quality',
      +    41 => 'Focus Mode/AF AreaMode',
      +    42 => 'Select Center Focus Point',
      +    44 => 'Record Movie',
      +    47 => 'Choose Folder',
      +    48 => 'Power Aperture (Open)',
      +    49 => 'Power Aperture (Close)',
      +    52 => 'Microphone Sensitivity',
      +    57 => 'Preset Focus Point',
      +    58 => 'AE/AWB Lock (hold)',
      +    59 => 'AF-AreaMode',
      +    60 => 'AF-AreaMode + AF-On',
      +    61 => 'Recall Shooting Functions',
      +    64 => 'Filtered Playback',
      +    65 => 'Same as AF-On',
      +    66 => 'Voice Memo',
      +    70 => 'Photo Shooting Bank',
      +    73 => 'Exposure Compensation',
      +    76 => 'Silent Mode',
      +    78 => 'LiveView Information',
      +    79 => 'AWB Lock (hold)',
      +    80 => 'Grid Display',
      +    81 => 'Starlight View',
      +    82 => 'Select To Send (PC)',
      +    83 => 'Select To Send (FTP)',
      +    85 => 'Control Lock',
      +);
      +my %dialsZ9 = (
      +    0 => '1 Frame',
      +    1 => '10 Frames',
      +    2 => '50 Frames',
      +    3 => 'Folder',
      +    4 => 'Protect',
      +    5 => 'Photos Only',
      +    6 => 'Videos Only',
      +    7 => 'Rating',
      +    8 => 'Page',
      +);
      +my %evfGridsZ9 = (
      +    0 => '3x3',
      +    1 => '4x4',
      +    2 => '2.35:1',
      +    3 => '1.85:1',
      +    4 => '5:4',
      +    5 => '4:3',
      +    6 => '1:1',
      +    7 => '16:9',
      +    8 => '90%',
      +);
      +my %flicksZ9 = (
      +     0 => 'Rating',
      +    1 => 'Select To Send (PC)',
      +    2 => 'Select To Send (FTP)',
      +    3 => 'Protect',
      +    4 => 'Voice Memo',
      +    5 => 'None',
      +);
      +my %focusModeRestrictionsZ9 = (
      +    0 => 'AF-S',
      +    1 => 'AF-C',
      +    2 => 'Full-time AF',
      +    3 => 'Manual',
      +    4 => 'No Restrictions',
      +);
      +my %powerOffDelayTimesZ9 = (
      +    0 => '2 s',
      +    1 => '4 s',
      +    3 => '10 s',
      +    4 => '20 s',
      +    5 => '30 s',
      +    6 => '1 min',
      +    7 => '5 min',
      +    8 => '10 min',
      +    11 => '30 min',
      +    12 => 'No Limit',
      +);
      +my %thirdHalfFull = (
      +    0 => '1/3 EV',
      +    1 => '1/2 EV',
      +    2 => '1 EV',
      +);
      +
      +my %limitNolimit = ( 0 => 'Limit', 1 => 'No Limit' );
       my %offOn = ( 0 => 'Off', 1 => 'On' );
       my %onOff = ( 0 => 'On', 1 => 'Off' );
       my %noYes = ( 0 => 'No', 1 => 'Yes' );
      @@ -3358,6 +3472,8 @@
                   47 => 'AF-Area Mode + AF-On (Auto Area AF)',
                   49 => 'Sync Release (Master Only)',
                   50 => 'Sync Release (Remote Only)',
      +            58 => 'AF-Area Mode + AF-On (Group Area AF - HL)',
      +            59 => 'AF-Area Mode + AF-On (Group Area AF - VL)',
               },
           },
           15.1 => { # CSf1-a
      @@ -3401,6 +3517,8 @@
                   47 => 'AF-Area Mode + AF-On (Auto Area AF)',
                   49 => 'Sync Release (Master Only)',
                   50 => 'Sync Release (Remote Only)',
      +            58 => 'AF-Area Mode + AF-On (Group Area AF - HL)',
      +            59 => 'AF-Area Mode + AF-On (Group Area AF - VL)',
               },
           },
           16.1 => { # CSf1-p
      @@ -9512,6 +9630,405 @@
           },
       );
       
      +# Z9 custom settings (ref 1)   #base at offset26 + 1035 (firmware 1.0.0)
      +%Image::ExifTool::NikonCustom::SettingsZ9 = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
      +    CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
      +    DATAMEMBER => [ 185, 529 ],
      +    WRITABLE => 1,
      +    FIRST_ENTRY => 0,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    NOTES => 'Custom settings for the Z9.',
      +    1 => {
      +        Name => 'CustomSettingsBank',
      +        PrintConv => {
      +            0 => 'A',
      +            1 => 'B',
      +            2 => 'C',
      +            3 => 'D',
      +        },
      +    },
      +    3 => { # CSa1
      +        Name => 'AF-CPrioritySelection',
      +        PrintConv => {
      +            0 => 'Release',
      +            1 => 'Release + Focus',
      +            3 => 'Focus',
      +        },
      +    },
      +    5 => { Name => 'AF-SPrioritySelection', PrintConv => {0 => 'Release',1 => 'Focus'}},  #CSa2
      +    7 => { # CSa3-a                      #when AFAreaMode is 3D-tracking, blocked shot response will be 3, regardless of this setting
      +        Name => 'BlockShotAFResponse',
      +        PrintConv => {
      +            1 => '1 (Quick)',
      +            2 => '2',
      +            3 => '3 (Normal)',
      +            4 => '4',
      +            5 => '5 (Delayed)',
      +        },
      +    },
      +    11 => {Name => 'AFPointSel',PrintConv => { 0 => 'Use All',1 => 'Use Half' }},    # CSa4
      +    13 => { # CSa5
      +        Name => 'StoreByOrientation',
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'Focus Point',
      +            2 => 'Focus Point and AF-area mode',
      +        },
      +    },
      +    15 => { Name => 'AFActivation',                 PrintConv => {0 => 'AF-On Only', 1 => 'Shutter/AF-On'}},     # CSa6-a
      +    16 => { Name => 'AF-OnOutOfFocusRelease',       PrintConv => {0 => 'Disable', 1 => 'Enable'}, Unknown => 1},  # CSa6-b
      +    17 => { Name => 'LimitAF-AreaModeSelPinpoint',  PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
      +    19 => { Name => 'LimitAF-AreaModeSelWideAF_S',  PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
      +    20 => { Name => 'LimitAF-AreaModeSelWideAF_L',  PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
      +    21 => { Name => 'LimitAFAreaModeSelAuto',       PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8     #left out hypen to retain compatibility with tag name in NikonSettings
      +    22 => { Name => 'FocusPointWrap',               PrintConv => { 0 => 'No Wrap', 1 => 'Wrap' }, Unknown => 1 }, # CSa10
      +    23 => { Name => 'ManualFocusPointIllumination', PrintConv => {0 => 'On During Focus Point Selection Only', 1 => 'On', }, Unknown => 1 },  # CSa11a
      +    24 => { Name => 'DynamicAreaAFAssist',     PrintConv => { 0 => 'Focus Point Only',1 => 'Focus and Surrounding Points',}, Unknown => 1 },  # CSa11b
      +    25 => { Name => 'AF-AssistIlluminator',    PrintConv => \%offOn }, # CSa12
      +    26 => { Name => 'ManualFocusRingInAFMode', PrintConv => \%offOn }, # CSa14
      +    27 => { Name => 'ExposureControlStepSize', PrintConv => \%thirdHalfFull },     # CSb2
      +    29 => { # CSb3
      +        Name => 'EasyExposureCompensation',
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'On',
      +            2 => 'On (auto reset)',
      +        },
      +    },
      +    31 => { # CSb5
      +        Name => 'CenterWeightedAreaSize',
      +        PrintConv => {
      +            0 => '8 mm',
      +            1 => '12 mm',
      +            4 => 'Average',
      +        },
      +    },
      +    33 => { # CSb6-a
      +        Name => 'FineTuneOptMatrixMetering',
      +        Format => 'int8s',
      +        ValueConv => '$val / 6',
      +        ValueConvInv => 'int($val*6)',
      +        PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
      +        PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    35 => { # CSb6-b
      +        Name => 'FineTuneOptCenterWeighted',
      +        Format => 'int8s',
      +        ValueConv => '$val / 6',
      +        ValueConvInv => 'int($val*6)',
      +        PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
      +        PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    37 => { # CSb6-c
      +        Name => 'FineTuneOptSpotMetering',
      +        Format => 'int8s',
      +        ValueConv => '$val / 6',
      +        ValueConvInv => 'int($val*6)',
      +        PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
      +        PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    39 => { # CSb6-d
      +        Name => 'FineTuneOptHighlightWeighted',
      +        Format => 'int8s',
      +        ValueConv => '$val / 6',
      +        ValueConvInv => 'int($val*6)',
      +        PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
      +        PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    41 => { # CSc1
      +        Name => 'ShutterReleaseButtonAE-L',
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'On (Half Press)',
      +            2 => 'On (Burst Mode)',
      +        },
      +    },
      +    43 => { # CSc3-a
      +        Name => 'SelfTimerTime',
      +        PrintConv => {
      +            0 => '2 s',
      +            1 => '5 s',
      +            2 => '10 s',
      +            3 => '20 s',
      +        },
      +    },
      +    45 => { Name => 'SelfTimerShotCount',  }, # CSc3-b   1-9
      +    49 => { # CSc3-c
      +        Name => 'SelfTimerShotInterval',
      +        PrintConv => {
      +            0 => '0.5 s',
      +            1 => '1 s',
      +            2 => '2 s',
      +            3 => '3 s',
      +        },
      +    },
      +    51 => { Name => 'PlaybackMonitorOffTime',    PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-a
      +    53 => { Name => 'MenuMonitorOffTime',        PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-b
      +    55 => { Name => 'ShootingInfoMonitorOffTime',PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-c
      +    57 => { Name => 'ImageReviewMonitorOffTime', PrintConv => \%powerOffDelayTimesZ9 }, # CSc4-d
      +    59 => { Name => 'CLModeShootingSpeed',       ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1b
      +    61 => {  # CSd2       # values: 1-200 &  'No Limit'
      +        Name => 'MaxContinuousRelease',
      +        Format => 'int16s',
      +        ValueConv => '($val = -1 ?  \'No Limit\' : $val ) ',
      +    },
      +    65 => { Name => 'SyncReleaseMode',                PrintConv => { 0 => 'No Sync', 1 => 'Sync' }, Unknown => 1 }, # CSd4
      +    69 => { Name => 'LimitSelectableImageAreaDX',     PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-1
      +    70 => { Name => 'LimitSelectableImageArea1To1',   PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-2
      +    71 => { Name => 'LimitSelectableImageArea16To9',  PrintConv => \%limitNolimit, Unknown => 1 }, # CSd6-3
      +    72 => { Name => 'FileNumberSequence',             PrintConv => \%offOn }, # CSd7
      +    73 => { #CSa13b
      +        Name => 'FocusPeakingLevel',
      +        Unknown => 1,
      +        PrintConv => {
      +            0 => 'High Sensitivity',
      +            1 => 'Standard Sensitivity',
      +            2 => 'Low Sensitivity',
      +        },
      +    },
      +    75 => { #CSa13c
      +        Name => 'FocusPeakingHighlightColor',
      +        Unknown => 1,
      +        PrintConv => {
      +            0 => 'Red',
      +            1 => 'Yellow',
      +            2 => 'Blue',
      +            3 => 'White',
      +        },
      +    },
      +    81 => { Name => 'ContinuousModeDisplay',  PrintConv => \%offOn }, # CSd12
      +    83 => { # CSe1-a            Previous cameras reported this with HighSpeedSync indicator appended as '(Auto FP)'.  Z9 separated the 2 fields.
      +        Name => 'FlashSyncSpeed',
      +        ValueConv => '($val-144)/8',
      +        PrintConv => {
      +            0 => '1/60 s',
      +            1 => '1/80 s',
      +            2 => '1/100 s',
      +            3 => '1/125 s',
      +            4 => '1/160 s',
      +            5 => '1/200 s',
      +            6 => '1/250 s',
      +        },
      +    },
      +    85 => { Name => 'HighSpeedSync',          PrintConv => \%offOn }, # CSe1-b
      +    87 => { # CSe2
      +        Name => 'FlashShutterSpeed',
      +        ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24  : 2 + ($val - 16) / 24',     #unusual decode perhaps due to need to accomodate 4 new values?
      +        PrintConv => {
      +            0 => '1 s',
      +            1 => '1/2 s',
      +            2 => '1/4 s',
      +            3 => '1/8 s',
      +            4 => '1/15 s',
      +            5 => '1/30 s',
      +            6 => '1/60 s',
      +            7 => '30 s',
      +            8 => '15 s',
      +            9 => '8 s',
      +            10 => '4 s',
      +            11 => '2 s',
      +        },
      +    },
      +    89 => { Name => 'FlashExposureCompArea',   PrintConv => { 0 => 'Entire Frame', 1 => 'Background Only' } }, # CSe3
      +    91 => { Name => 'AutoFlashISOSensitivity', PrintConv => { 0 => 'Subject and Background',1 => 'Subject Only'} }, # CSe4
      +    93 => { Name => 'ModelingFlash',           PrintConv => \%offOn }, # CSe5
      +    95 => { # CSe6
      +        Name => 'AutoBracketModeM',
      +        PrintConv => {
      +            0 => 'Flash/Speed',
      +            1 => 'Flash/Speed/Aperture',
      +            2 => 'Flash/Aperture',
      +            3 => 'Flash Only',
      +            4 => 'Flash/ISO',
      +        },
      +    },
      +    97 => { Name => 'AutoBracketOrder',   PrintConv => { 0 => '0,-,+',1 => '-,0,+' } }, # CSe7
      +    99 => { Name => 'Func1Button',        PrintConv => \%buttonsZ9}, # CSf2-a
      +    #101 Func1Button submenu: Preview               0 => 'Press To Recall', 1=> 'Hold To Recall'  # CSf2-a
      +    #103 Func1Button submenu: AreaMode              0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a  # CSf2-a
      +    #105 Func1Button submenu: AreaMode+AF-On        0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a  # CSf2-a
      +    #109 Func1Button submenu: SynchronizedRelease   1=>'Master', 2=>'Remote'  # CSf2-a
      +    #111 Func1Button submenu: Zoom                  0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)'  # CSf2-a
      +    #113 Func1Button & Func1ButtonPlayback submenu: Rating                # CSf2-a & CSf3a   0=>'Candidate For Deletion'  6=>''None'
      +    115 => { Name => 'Func2Button',       PrintConv => \%buttonsZ9}, # CSf2-b
      +    #117 Func2Button submenu: Preview               0 => 'Press To Recall', 1=> 'Hold To Recall' # CSf2-b
      +    #119 Func2Button submenu: AreaMode              0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a  # CSf2-b
      +    #121 Func2Button submenu: AreaMode+AF-On        0-7 => S, Dyn-S, Dyn-M, Dyn-L, Wide-S, Wide-L, 3D, Auto; 11=>n/a  # CSf2-b
      +    #125 Func2Button submenu: SynchronizedRelease   1=>'Master', 2=>'Remote'  # CSf2-b
      +    #127 Func2Button submenu: Zoom                  0=>'Zoom (Low)', 2=>'Zoom (1:1)', 2=>'Zoom (High)'  # CSf2-b
      +    #129 Func2Button & Func2ButtonPlayback submenu: Rating                # CSf2-b & CSf3b   0=>'Candidate For Deletion'  6=>''None'
      +    131 => { Name => 'AFOnButton',                PrintConv => \%buttonsZ9}, # CSf2-c
      +    143 => { Name => 'SubSelector',               PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-g
      +    155 => { Name => 'AssignMovieRecordButton',   PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-m
      +    159 => { Name => 'LensFunc1Button',           PrintConv => \%buttonsZ9}, # CSf2-o
      +    167 => { Name => 'LensFunc2Button',           PrintConv => \%buttonsZ9}, # CSf2-p
      +    173 => { # CSf2-q
      +        Name => 'LensControlRing',
      +        PrintConv => {
      +            0 => 'None (Disabled)',
      +            1 => 'Focus (M/A)',
      +            2 => 'ISO Sensitivity',
      +            3 => 'Exposure Compensation',
      +            4 => 'Aperture',
      +        },
      +    },
      +    175 => { Name => 'MultiSelectorShootMode',     PrintConv => \%buttonsZ9}, # CSf2-h    called the OK button in camera, tag name retained for compatibility
      +    179 => { Name => 'MultiSelectorPlaybackMode',  PrintConv => \%buttonsZ9}, # CSf3f
      +    183 => { Name => 'ShutterSpeedLock',           PrintConv => \%offOn }, # CSf4-a
      +    184 => { Name => 'ApertureLock',               PrintConv => \%offOn }, # CSf4-b
      +    185 => { # CSf5-a Previous cameras reported this tag as part of CmdDialsReverseRotation.  Blend with CSf5-b separate settings together to match extant tag name and values
      +        Name => 'CmdDialsReverseRotExposureComp',
      +        RawConv => '$$self{CmdDialsReverseRotExposureComp} = $val',
      +        Hidden => 1,
      +    },
      +    186 => [{ # CSf5-a  (continued from above)
      +        Name => 'CmdDialsReverseRotation',
      +        Condition => '$$self{CmdDialsReverseRotExposureComp} == 0',
      +        PrintConv => {
      +            0 => 'No',
      +            1 => 'Shutter Speed & Aperture',
      +        },
      +    },{
      +        Name => 'CmdDialsReverseRotation',
      +        PrintConv => {
      +            0 => 'Exposure Compensation',
      +            1 => 'Exposure Compensation, Shutter Speed & Aperture',
      +        },
      +    }],
      +    191 => { Name => 'UseDialWithoutHold',  PrintConv => \%offOn, Unknown => 1 }, # CSf6
      +    193 => { Name => 'ReverseIndicators',   PrintConv => { 0 => '+ 0 -', 1 => '- 0 +' }, Unknown => 1 }, # CSf7
      +    195 => { Name => 'MovieFunc1Button',    PrintConv => \%buttonsZ9}, # CSg2-a
      +    203 => { Name => 'MovieAF-OnButton',    PrintConv => \%buttonsZ9}, # CSg2-f
      +    217 => { Name => 'MovieMultiSelector',  PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-h
      +    221 => { Name => 'MovieAFSpeed',        ValueConv => '$val - 5', ValueConvInv => '$val + 6' }, # CSg6-a
      +    223 => { Name => 'MovieAFSpeedApply',    rintConv => {0 => 'Always', 1 => 'Only During Recording'},}, # CSg6-b
      +    225 => { # CSg7
      +        Name => 'MovieAFTrackingSensitivity',
      +        PrintConv => {
      +            0 => '1 (High)',
      +            1 => '2',
      +            2 => '3',
      +            3 => '4 (Normal)',
      +            4 => '5',
      +            5 => '6',
      +            6 => '7 (Low)',
      +        },
      +    },
      +    257 => { Name => 'LCDIllumination',           PrintConv => \%offOn, Unknown => 1 }, # CSd11
      +    258 => { Name => 'ExtendedShutterSpeeds',     PrintConv => \%offOn }, # CSd5
      +    259 => { Name => 'SubjectMotion',             PrintConv => {0 => 'Erratic', 1 => 'Steady'} },  # CSa3-b
      +    261 => { Name => 'FocusPointPersistence',     PrintConv => {0 => 'Auto', 1 => 'Off'} }, # CSa7
      +    263 => { Name => 'AutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1},  # CSa9
      +    267 => { Name => 'CHModeShootingSpeed',       ValueConv => '$val + 1', ValueConvInv => '$val - 1', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1a
      +    269.1 => { Name => 'LimitReleaseModeSelCL',   Mask => 0x02, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-a
      +    269.2 => { Name => 'LimitReleaseModeSelCH',   Mask => 0x04, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-b
      +    269.3 => { Name => 'LimitReleaseModeSelC30',  Mask => 0x10, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-e
      +    269.4 => { Name => 'LimitReleaseModeSelC120', Mask => 0x40, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-c
      +    269.5 => { Name => 'LimitReleaseModeSelSelf', Mask => 0x80, PrintConv => \%limitNolimit, Unknown => 1 }, # CSd3-d
      +    273 => { Name => 'FlashBurstPriority',            PrintConv => { 0 => 'Frame Rate',1 => 'Exposure'}, Unknown => 1 },  # CSe8
      +    277 => { Name => 'VerticalFuncButton',            PrintConv => \%buttonsZ9}, # CSf2-c
      +    281 => { Name => 'Func3Button',                   PrintConv => \%buttonsZ9}, # CSf2-c
      +    285 => { Name => 'VerticalAFOnButton',            PrintConv => \%buttonsZ9}, # CSf2-l
      +    293 => { Name => 'VerticalMultiSelectorPlaybackMode',  PrintConv => { 0 => 'Image Scroll L/R', 1 => 'Image Scroll Up/Down' }, Unknown => 1}, # CSf3-j
      +    295 => { Name => 'MovieFunc3Button',                   PrintConv => \%buttonsZ9}, # CSg2-c
      +    335 => { Name => 'LimitAF-AreaModeSelDynamic_S',       PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
      +    336 => { Name => 'LimitAF-AreaModeSelDynamic_M',       PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
      +    337 => { Name => 'LimitAF-AreaModeSelDynamic_L',       PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
      +    339 => { Name => 'LimitAF-AreaModeSel3DTracking',      PrintConv => \%limitNolimit, Unknown => 1 }, # CSa8
      +    341 => { Name => 'PlaybackFlickUp',     PrintConv => \%flicksZ9, Unknown => 1}, # CSf11-a
      +    345 => { Name => 'PlaybackFlickDown',   PrintConv => \%flicksZ9, Unknown => 1}, # CSf11-b
      +    349 => { Name => 'ISOStepSize',         PrintConv => \%thirdHalfFull },     # CSb1
      +    355 => { Name => 'ReverseFocusRing',    PrintConv => { 0 => 'Not Reversed', 1 => 'Reversed' } }, # CSf8
      +    356 => { Name => 'EVFImageFrame',       PrintConv => \%offOn, Unknown => 1 }, # CSd14
      +    357 => { Name => 'EVFGrid',             PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSd15
      +    359 => { Name => 'VirtualHorizonStyle', PrintConv => {0 => 'Type A (Cockpit)', 1 => 'Type B (Sides)' }, Unknown => 1}, #CSd16
      +    373 => { Name => 'Func4Button',         PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-e
      +    379 => { Name => 'AudioButton',         PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-i
      +    381 => { Name => 'QualityButton',       PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-j
      +    399 => { Name => 'VerticalMultiSelector',          PrintConv => \%buttonsZ9, Unknown => 1}, # CSf2-k
      +    421 => { Name => 'Func1ButtonPlaybackMode',        PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-a
      +    423 => { Name => 'Func2ButtonPlaybackMode',        PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-b
      +    425 => { Name => 'Func3ButtonPlaybackMode',        PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-c
      +    431 => { Name => 'Func4ButtonPlaybackMode',        PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-e
      +    437 => { Name => 'MovieRecordButtonPlaybackMode',  PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-m
      +    439 => { Name => 'VerticalFuncButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-d
      +    441 => { Name => 'AudioButtonPlaybackMode',        PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-g
      +    447 => { Name => 'QualityButtonPlaybackMode',      PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-h
      +    467 => { Name => 'FocusPointLock',                 PrintConv => \%offOn,     Unknown => 1}, # CSf4-c
      +    453 => { Name => 'WhiteBalanceButtonPlaybackMode', PrintConv => \%buttonsZ9, Unknown => 1}, # CSf3-i
      +    459 => { Name => 'CommandDialPlaybackMode',        PrintConv => \%dialsZ9,   Unknown => 1}, # CSf3-k
      +    463 => { Name => 'SubCommandDialPlaybackMode',     PrintConv => \%dialsZ9,   Unknown => 1}, # CSf3-l
      +    469 => { Name => 'ControlRingResponse',            PrintConv => { 0 => 'High', 1 => 'Low' } }, # CSf10
      +    481 => { Name => 'VerticalMovieFuncButton',        PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-d
      +    505 => { Name => 'VerticalMovieAFOnButton',        PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-l
      +    515 => { Name => 'MovieAFAreaMode',       PrintConv => \%buttonsZ9, Unknown => 1}, # CSg2-e
      +    #521 => { Name => 'MovieLimitAF-AreaModeSelWideAF_S',      PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-a
      +    #522 => { Name => 'MovieLimitAF-AreaModeSelWideAF_W',      PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-b
      +    #523 => { Name => 'MovieLimitAF-AreaModeSelSubjectTrack',  PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-c
      +    #524 => { Name => 'MovieLimitAFAreaModeSelAuto',           PrintConv => \%limitNolimit, Unknown => 1 }, # CSg4-d
      +    #525 => { Name => 'MovieAutoFocusModeRestrictions', PrintConv => \%focusModeRestrictionsZ9, Unknown => 1},  # CSa9
      +    527 => { Name => 'HDMIViewAssist', PrintConv => \%offOn, Unknown => 1 }, # CSg8
      +    529 => { # CSg9-a
      +        Name => 'ZebraPatternToneRange',
      +        Unknown => 1,
      +        RawConv => '$$self{ZebraPatternToneRange} = $val',
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'Highlights',
      +            2 => 'Midtones',
      +        },
      +    },
      +    531 => { Name => 'MovieZebraPattern',              Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} != 0', PrintConv => {0 => 'Pattern 1', 1 => 'Pattern 2'}, Unknown => 1}, # CSg9-b
      +    533 => { Name => 'MovieHighlightDisplayThreshold', Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 1', Unknown => 1 }, # CSg9-c   120-25  when highlights are the selected tone range
      +    535 => { Name => 'MovieMidtoneDisplayValue',       Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', Unknown => 1 }, # CSg9-d1     when midtones are the selected tone range
      +    537 => { Name => 'MovieMidtoneDisplayRange',       Condition => '$$self{ZebraPatternToneRange} and $$self{ZebraPatternToneRange} == 2', PrintConv => '"+/-$val"', Unknown => 1 }, # CSg9-d1     when midtones are the selected tone range
      +    #539 CS g-10 LimitZebraPatternToneRange  0=>'No Restrictions', 1=> 'Highlights', 2=> 'Midtones'
      +    541 => { Name => 'MovieEVFGrid',          PrintConv => \%evfGridsZ9, Unknown => 1 }, # CSg11
      +    549 => { Name => 'MovieShutterSpeedLock', PrintConv => \%offOn,     Unknown => 1}, # CSg4-a
      +    550 => { Name => 'MovieFocusPointLock',   PrintConv => \%offOn,     Unknown => 1}, # CSf4-c
      +    563 => { Name => 'MatrixMetering',        PrintConv => { 0 => 'Face Detection Off', 1 => 'Face Detection On' }, Unknown => 1 }, # CSb4
      +    564 => { Name => 'AF-CFocusDisplay',      PrintConv => \%offOn }, # CSa11c
      +    565 => { Name => 'FocusPeakingDisplay',   PrintConv => \%offOn, Unknown => 1}, # CSa13a
      +    567 => { # CSb7
      +        Name => 'KeepExposure',
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'Shutter Speed',
      +            2 => 'ISO',
      +        },
      +    },
      +    #569  CDd8 (adjust viewfinder/monitor hue, brightness and/or white balance settings)   0=>'No adjustment',  1=>'Adjust'.  Related ontrols & adjustments stored in following dozen bytes or so.
      +    585 => { Name => 'StarlightView',   PrintConv => \%offOn, Unknown => 1 }, # CSd9
      +    587 => { # CSd10-a
      +        Name => 'EVFWarmDisplayMode',
      +        Unknown => 1,
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'Mode 1',
      +            2 => 'Mode 2',
      +        },
      +    },
      +    589 => {  # CSd10-b      values in range -3 to +3
      +        Name => 'EVFWarmDisplayBrightness',
      +        Format => 'int8s',
      +        Unknown => 1,
      +    },
      +    591 => { #CSd13
      +        Name => 'EVFReleaseIndicator',
      +        Unknown => 1,
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'Type A (Dark)',
      +            2 => 'Type B (Border)',
      +            3 => 'Type C (Sides)',
      +        },
      +    },
      +    601 => { Name => 'MovieApertureLock',     PrintConv => \%offOn,  Unknown => 1 }, # CSg4-b
      +    607 => { Name => 'FlickAdvanceDirection', PrintConv => {  0 => 'Left to Right', 1 => 'Right to Left' },  Unknown => 1 }, # CSf11-c
      +);
      +
       1;  # end
       
       __END__
      @@ -9534,16 +10051,16 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
       
       =head1 ACKNOWLEDGEMENTS
       
      -Thanks to Jens Duttke and Warren Hatch for their help decoding the D300 and
      -D3 custom settings.  And thanks to the customer service personnel at Best
      -Buy for not bugging me while I spent lots of time playing with their
      +Thanks to Jens Duttke and Warren Hatch for their help decoding the D300, D3
      +and Z9 custom settings.  And thanks to the customer service personnel at
      +Best Buy for not bugging me while I spent lots of time playing with their
       cameras.
       
       =head1 SEE ALSO
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Nikon.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Nikon.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Nikon.pm	2020-02-14 12:26:17.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Nikon.pm	2022-02-09 12:08:07.000000000 +0000
      @@ -48,6 +48,7 @@
       #              35) David Puschel private communication
       #              36) Hayo Baann (forum10207)
       #              37) Tom Lachecki, private communication
      +#              38) https://github.com/exiftool/exiftool/pull/40 (and forum10893)
       #              IB) Iliah Borg private communication (LibRaw)
       #              JD) Jens Duttke private communication
       #              NJ) Niels Kristian Bech Jensen private communication
      @@ -60,8 +61,9 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::Exif;
       use Image::ExifTool::GPS;
      +use Image::ExifTool::XMP;
       
      -$VERSION = '3.78';
      +$VERSION = '4.05';
       
       sub LensIDConv($$$);
       sub ProcessNikonAVI($$$);
      @@ -271,6 +273,7 @@
           '9F 58 44 44 14 14 A1 06' => 'AF-S DX Nikkor 35mm f/1.8G', #27
           'A0 54 50 50 0C 0C A2 06' => 'AF-S Nikkor 50mm f/1.4G',
           'A1 40 18 37 2C 34 A3 06' => 'AF-S DX Nikkor 10-24mm f/3.5-4.5G ED',
      +    'A1 40 2D 53 2C 3C CB 86' => 'AF-P DX Nikkor 18-55mm f/3.5-5.6G', #30
           'A2 48 5C 80 24 24 A4 0E' => 'AF-S Nikkor 70-200mm f/2.8G ED VR II',
           'A3 3C 29 44 30 30 A5 0E' => 'AF-S Nikkor 16-35mm f/4G ED VR',
           'A4 54 37 37 0C 0C A6 06' => 'AF-S Nikkor 24mm f/1.4G ED',
      @@ -296,6 +299,7 @@
           'B8 40 2D 44 2C 34 BA 06' => 'AF-S Nikkor 18-35mm f/3.5-4.5G ED',
           'A0 40 2D 74 2C 3C BB 0E' => 'AF-S DX Nikkor 18-140mm f/3.5-5.6G ED VR', #PH
           'A1 54 55 55 0C 0C BC 06' => 'AF-S Nikkor 58mm f/1.4G', #IB
      +    'A1 48 6E 8E 24 24 DB 4E' => 'AF-S Nikkor 120-300mm f/2.8E FL ED SR VR', #28
           'A2 40 2D 53 2C 3C BD 0E' => 'AF-S DX Nikkor 18-55mm f/3.5-5.6G VR II',
           'A4 40 2D 8E 2C 40 BF 0E' => 'AF-S DX Nikkor 18-300mm f/3.5-6.3G ED VR',
           'A5 4C 44 44 14 14 C0 06' => 'AF-S Nikkor 35mm f/1.8G ED', #35 ("ED" ref 11)
      @@ -347,6 +351,7 @@
           'FE 47 00 00 24 24 4B 06' => 'Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye', #JD
           '26 48 11 11 30 30 1C 02' => 'Sigma 8mm F4 EX Circular Fisheye',
           '79 40 11 11 2C 2C 1C 06' => 'Sigma 8mm F3.5 EX Circular Fisheye', #JD
      +    'DB 40 11 11 2C 2C 1C 06' => 'Sigma 8mm F3.5 EX DG Circular Fisheye', #30
           'DC 48 19 19 24 24 4B 06' => 'Sigma 10mm F2.8 EX DC HSM Fisheye',
           'C2 4C 24 24 14 14 4B 06' => 'Sigma 14mm F1.8 DG HSM | A', #IB
           '48 48 24 24 24 24 4B 02' => 'Sigma 14mm F2.8 EX Aspherical HSM',
      @@ -400,6 +405,7 @@
           '48 38 1F 37 34 3C 4B 06' => 'Sigma 12-24mm F4.5-5.6 EX DG Aspherical HSM',
           'F0 38 1F 37 34 3C 4B 06' => 'Sigma 12-24mm F4.5-5.6 EX DG Aspherical HSM',
           '96 38 1F 37 34 3C 4B 06' => 'Sigma 12-24mm F4.5-5.6 II DG HSM', #Jurgen Sahlberg
      +    'CA 3C 1F 37 30 30 4B 46' => 'Sigma 12-24mm F4 DG HSM | A', #github issue#101
           'C1 48 24 37 24 24 4B 46' => 'Sigma 14-24mm F2.8 DG HSM | A', #30
           '26 40 27 3F 2C 34 1C 02' => 'Sigma 15-30mm F3.5-4.5 EX DG Aspherical DF',
           '48 48 2B 44 24 30 4B 06' => 'Sigma 17-35mm F2.8-4 EX DG  Aspherical HSM',
      @@ -447,6 +453,7 @@
         # '92 3E 2D 88 2C 40 4B 0E' (22mm)
         # '92 40 2D 88 2C 40 4B 0E' (18mm)
           '26 48 31 49 24 24 1C 02' => 'Sigma 20-40mm F2.8',
      +    '7B 48 37 44 18 18 4B 06' => 'Sigma 24-35mm F2.0 DG HSM | A', #30
           '02 3A 37 50 31 3D 02 00' => 'Sigma 24-50mm F4-5.6 UC',
           '26 48 37 56 24 24 1C 02' => 'Sigma 24-60mm F2.8 EX DG',
           'B6 48 37 56 24 24 1C 02' => 'Sigma 24-60mm F2.8 EX DG',
      @@ -488,9 +495,11 @@
           '7A 48 5C 80 24 24 4B 06' => 'Sigma 70-200mm F2.8 EX APO DG Macro HSM II',
           'EE 48 5C 80 24 24 4B 06' => 'Sigma 70-200mm F2.8 EX APO DG Macro HSM II', #JD
           '9C 48 5C 80 24 24 4B 0E' => 'Sigma 70-200mm F2.8 EX DG OS HSM', #Rolando Ruzic
      +    'BB 48 5C 80 24 24 4B 4E' => 'Sigma 70-200mm F2.8 DG OS HSM | S', #forum13207
           '02 46 5C 82 25 25 02 00' => 'Sigma 70-210mm F2.8 APO', #JD
           '02 40 5C 82 2C 35 02 00' => 'Sigma APO 70-210mm F3.5-4.5',
           '26 3C 5C 82 30 3C 1C 02' => 'Sigma 70-210mm F4-5.6 UC-II',
      +    '02 3B 5C 82 30 3C 02 00' => 'Sigma Zoom-K 70-210mm F4-5.6', #30
           '26 3C 5C 8E 30 3C 1C 02' => 'Sigma 70-300mm F4-5.6 DG Macro',
           '56 3C 5C 8E 30 3C 1C 02' => 'Sigma 70-300mm F4-5.6 APO Macro Super II',
           'E0 3C 5C 8E 30 3C 4B 06' => 'Sigma 70-300mm F4-5.6 APO DG Macro HSM', #22
      @@ -501,6 +510,7 @@
           '77 44 60 98 34 3C 7B 0E' => 'Sigma 80-400mm F4.5-5.6 APO DG D OS',
           '48 48 68 8E 30 30 4B 02' => 'Sigma APO 100-300mm F4 EX IF HSM',
           'F3 48 68 8E 30 30 4B 02' => 'Sigma APO 100-300mm F4 EX IF HSM',
      +    '26 45 68 8E 34 42 1C 02' => 'Sigma 100-300mm F4.5-6.7 DL', #30
           '48 54 6F 8E 24 24 4B 02' => 'Sigma APO 120-300mm F2.8 EX DG HSM',
           '7A 54 6E 8E 24 24 4B 02' => 'Sigma APO 120-300mm F2.8 EX DG HSM',
           'FA 54 6E 8E 24 24 4B 02' => 'Sigma APO 120-300mm F2.8 EX DG HSM', #https://exiftool.org/forum/index.php/topic,2787.0.html
      @@ -511,9 +521,11 @@
           'CE 34 76 A0 38 40 4B 0E' => 'Sigma 150-500mm F5-6.3 DG OS APO HSM', #JD
           '81 34 76 A6 38 40 4B 0E' => 'Sigma 150-600mm F5-6.3 DG OS HSM | S', #Jaap Voets
           '82 34 76 A6 38 40 4B 0E' => 'Sigma 150-600mm F5-6.3 DG OS HSM | C',
      +    'C4 4C 73 73 14 14 4B 46' => 'Sigma 135mm F1.8 DG HSM | A', #forum3833
           '26 40 7B A0 34 40 1C 02' => 'Sigma APO 170-500mm F5-6.3 Aspherical RF',
           'A7 49 80 A0 24 24 4B 06' => 'Sigma APO 200-500mm F2.8 EX DG',
           '48 3C 8E B0 3C 3C 4B 02' => 'Sigma APO 300-800mm F5.6 EX DG HSM',
      +    'D2 3C 8E B0 3C 3C 4B 02' => 'Sigma APO 300-800mm F5.6 EX DG HSM', #forum10942
       #
           '00 47 25 25 24 24 00 02' => 'Tamron SP AF 14mm f/2.8 Aspherical (IF) (69E)',
           'C8 54 44 44 0D 0D DF 46' => 'Tamron SP 35mm f/1.4 Di USD (F045)', #IB
      @@ -542,11 +554,13 @@
           '07 46 2B 44 24 30 03 02' => 'Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical (IF) (A05)',
           'CB 3C 2B 44 24 31 DF 46' => 'Tamron 17-35mm f/2.8-4 Di OSD (A037)', #IB
           '00 53 2B 50 24 24 00 06' => 'Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16)', #PH
      +    '7C 54 2B 50 24 24 00 06' => 'Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16)', #PH (https://github.com/Exiv2/exiv2/issues/1155)
           '00 54 2B 50 24 24 00 06' => 'Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16NII)',
           'FB 54 2B 50 24 24 84 06' => 'Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16NII)', #https://exiftool.org/forum/index.php/topic,3787.0.html
           'F3 54 2B 50 24 24 84 0E' => 'Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical (IF) (B005)',
           '00 3F 2D 80 2B 40 00 06' => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) (A14)',
           '00 3F 2D 80 2C 40 00 06' => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14)',
      +    'EC 3E 3C 8E 2C 40 DF 0E' => 'Tamron 28-300mm f/3.5-6.3 Di VC PZD A010', #30
           '00 40 2D 80 2C 40 00 06' => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14NII)', #NJ
           'FC 40 2D 80 2C 40 DF 06' => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14NII)', #PH (NC)
           'E6 40 2D 80 2C 40 DF 0E' => 'Tamron 18-200mm f/3.5-6.3 Di II VC (B018)', #Tanel (removed AF designation, ref 37)
      @@ -556,7 +570,7 @@
           'F0 3F 2D 8A 2C 40 DF 0E' => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD (B008)',
           'E0 40 2D 98 2C 41 DF 4E' => 'Tamron 18-400mm f/3.5-6.3 Di II VC HLD (B028)', # (removed AF designation, ref 37)
           '07 40 2F 44 2C 34 03 02' => 'Tamron AF 19-35mm f/3.5-4.5 (A10)',
      -    '07 40 30 45 2D 35 03 02' => 'Tamron AF 19-35mm f/3.5-4.5 (A10)',
      +    '07 40 30 45 2D 35 03 02.1' => 'Tamron AF 19-35mm f/3.5-4.5 (A10)',
           '00 49 30 48 22 2B 00 02' => 'Tamron SP AF 20-40mm f/2.7-3.5 (166D)',
           '0E 4A 31 48 23 2D 0E 02' => 'Tamron SP AF 20-40mm f/2.7-3.5 (166D)',
           'FE 48 37 5C 24 24 DF 0E' => 'Tamron SP 24-70mm f/2.8 Di VC USD (A007)', #24
      @@ -575,6 +589,7 @@
           '4D 41 3C 8E 2B 40 62 02' => 'Tamron AF 28-300mm f/3.5-6.3 XR Di LD Aspherical (IF) (A061)',
           '4D 41 3C 8E 2C 40 62 02' => 'Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical (IF) (185D)',
           'F9 40 3C 8E 2C 40 40 0E' => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical (IF) Macro (A20)',
      +    'C9 3C 44 76 25 31 DF 4E' => 'Tamron 35-150mm f/2.8-4 Di VC OSD (A043)', #30
           '00 47 53 80 30 3C 00 06' => 'Tamron AF 55-200mm f/4-5.6 Di II LD (A15)',
           'F7 53 5C 80 24 24 84 06' => 'Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)',
           'FE 53 5C 80 24 24 84 06' => 'Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)',
      @@ -587,6 +602,7 @@
           '00 48 5C 8E 30 3C 00 06' => 'Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2 (A17NII)', #JD
           'F1 47 5C 8E 30 3C DF 0E' => 'Tamron SP 70-300mm f/4-5.6 Di VC USD (A005)',
           'CF 47 5C 8E 31 3D DF 0E' => 'Tamron SP 70-300mm f/4-5.6 Di VC USD (A030)', #forum9773
      +    'CC 44 68 98 34 41 DF 0E' => 'Tamron 100-400mm f/4.5-6.3 Di VC USD', #30
           'EB 40 76 A6 38 40 DF 0E' => 'Tamron SP AF 150-600mm f/5-6.3 VC USD (A011)',
           'E3 40 76 A6 38 40 DF 4E' => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2', #30
           '20 3C 80 98 3D 3D 1E 02' => 'Tamron AF 200-400mm f/5.6 LD IF (75D)',
      @@ -604,6 +620,7 @@
           '7A 48 1C 29 24 24 7E 06' => 'Tokina AT-X 116 PRO DX II (AF 11-16mm f/2.8)',
           '80 48 1C 29 24 24 7A 06' => 'Tokina atx-i 11-16mm F2.8 CF', #exiv2 issue 1078
           '7A 48 1C 30 24 24 7E 06' => 'Tokina AT-X 11-20 F2.8 PRO DX (AF 11-20mm f/2.8)',
      +    '8B 48 1C 30 24 24 85 06' => 'Tokina AT-X 11-20 F2.8 PRO DX (AF 11-20mm f/2.8)', #forum12687
           '00 3C 1F 37 30 30 00 06' => 'Tokina AT-X 124 AF PRO DX (AF 12-24mm f/4)',
           '7A 3C 1F 37 30 30 7E 06.2' => 'Tokina AT-X 124 AF PRO DX II (AF 12-24mm f/4)',
           '7A 3C 1F 3C 30 30 7E 06' => 'Tokina AT-X 12-28 PRO DX (AF 12-28mm f/4)',
      @@ -632,6 +649,7 @@
           '24 44 60 98 34 3C 1A 02' => 'Tokina AT-X 840 AF-II (AF 80-400mm f/4.5-5.6)',
           '00 44 60 98 34 3C 00 02' => 'Tokina AT-X 840 D (AF 80-400mm f/4.5-5.6)',
           '14 48 68 8E 30 30 0B 00' => 'Tokina AT-X 340 AF (AF 100-300mm f/4)',
      +    '8C 48 29 3C 24 24 86 06' => 'Tokina opera 16-28mm F2.8 FF', #30
       #
           '06 3F 68 68 2C 2C 06 00' => 'Cosina AF 100mm F3.5 Macro',
           '07 36 3D 5F 2C 3C 03 00' => 'Cosina AF Zoom 28-80mm F3.5-5.6 MC Macro',
      @@ -647,8 +665,10 @@
           '00 54 48 48 18 18 00 00' => 'Voigtlander Ultron 40mm F2 SLII Aspherical',
           '00 54 55 55 0C 0C 00 00' => 'Voigtlander Nokton 58mm F1.4 SLII',
           '00 40 64 64 2C 2C 00 00' => 'Voigtlander APO-Lanthar 90mm F3.5 SLII Close Focus',
      +    '07 40 30 45 2D 35 03 02.2' => 'Voigtlander Ultragon 19-35mm F3.5-4.5 VMV', #NJ
       #
           '00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
      +    '00 48 27 27 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/15 ZF.2', #MykytaKozlov
           '00 48 32 32 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/21 ZF.2',
           '00 54 38 38 18 18 00 00' => 'Carl Zeiss Distagon T* 2/25 ZF.2',
           '00 54 3C 3C 18 18 00 00' => 'Carl Zeiss Distagon T* 2/28 ZF.2',
      @@ -685,6 +705,7 @@
       #
           '9A 4C 50 50 14 14 9C 06' => 'Yongnuo YN50mm F1.8N',
           '9F 48 48 48 24 24 A1 06' => 'Yongnuo YN40mm F2.8N', #30
      +    '9F 54 68 68 18 18 A2 06' => 'Yongnuo YN100mm F2N', #30
       #
           '02 40 44 5C 2C 34 02 00' => 'Exakta AF 35-70mm 1:3.5-4.5 MC',
       #
      @@ -706,6 +727,10 @@
           '00 48 80 80 30 30 00 00' => 'Nikkor 200mm f/4 AiS',
           '00 40 11 11 2C 2C 00 00' => 'Samyang 8mm f/3.5 Fish-Eye',
           '00 58 64 64 20 20 00 00' => 'Soligor C/D Macro MC 90mm f/2.5',
      +    '4A 58 30 30 14 0C 4D 02' => 'Rokinon 20mm f/1.8 ED AS UMC', #30
      +#
      +    'A0 56 44 44 14 14 A2 06' => 'Sony FE 35mm F1.8', #IB (Techart adapter)
      +    'A0 37 5C 8E 34 3C A2 06' => 'Sony FE 70-300mm F4.5-5.6 G OSS', #IB (Techart adapter)
       );
       
       # text encoding used in LocationInfo (ref PH)
      @@ -733,6 +758,7 @@
           '5 2' => '5.02 (SB-900)',
           '6 1' => '6.01 (SB-700)', #https://exiftool.org/forum/index.php/topic,5034.0.html
           '7 1' => '7.01 (SB-910)', #PH
      +    '14 3' => '14.03 (SB-5000)', #28
           OTHER => sub {
               my ($val, $inv) = @_;
               return sprintf('%d.%.2d (Unknown model)', split(' ', $val)) unless $inv;
      @@ -789,6 +815,124 @@
           0x07 => 'Repeating Flash',
       );
       
      +my %activeDLightingZ7 = (
      +    0 => 'Off',
      +    2 => 'Low',
      +    3 => 'Normal',
      +    4 => 'High',
      +    5 => 'Extra High',
      +);
      +
      +my %flashControlModeZ7 = (
      +    0 => 'TTL',
      +    1 => 'Auto External Flash',
      +    2 => 'GN (distance priority)',
      +    3 => 'Manual',
      +    4 => 'Repeating Flash',
      +);
      +
      +my %flashRemoteControlZ7 = (
      +    0 => 'Group',
      +    1 => 'Quick Wireless',
      +    2 => 'Remote Repeating',
      +);
      +
      +my %flashWirelessOptionZ7 = (
      +    0 => 'Off',
      +    1 => 'Optical AWL',
      +    2 => 'Optical/Radio AWL',
      +    3 => 'Radio AWL',
      +);
      +
      +my %focusModeZ7 = (
      +    0 => 'Manual',
      +    1 => 'AF-S',
      +    2 => 'AF-C',
      +    4 => 'AF-F',    # full frame
      +);
      +
      +my %infoZSeries = (
      +    Condition => '$$self{Model} =~ /^NIKON Z (5|50|6|6_2|7|7_2|fc|9)\b/i',
      +    Notes => 'Z Series cameras thru Decemeber 2021',
      +);
      +my %iSOAutoHiLimitZ7 = (
      +    0 => 'ISO 64',
      +    1 => 'ISO 80',
      +    2 => 'ISO 100',
      +    3 => 'ISO 125',
      +    4 => 'ISO 160',
      +    5 => 'ISO 200',
      +    6 => 'ISO 250',
      +    7 => 'ISO 320',
      +    8 => 'ISO 400',
      +    9 => 'ISO 500',
      +    10 => 'ISO 640',
      +    11 => 'ISO 800',
      +    12 => 'ISO 1000',
      +    13 => 'ISO 1250',
      +    14 => 'ISO 1600',
      +    15 => 'ISO 2000',
      +    16 => 'ISO 2500',
      +    17 => 'ISO 3200',
      +    18 => 'ISO 4000',
      +    19 => 'ISO 5000',
      +    20 => 'ISO 6400',
      +    21 => 'ISO 8000',
      +    22 => 'ISO 10000',
      +    23 => 'ISO 12800',
      +    24 => 'ISO 16000',
      +    25 => 'ISO 20000',
      +    26 => 'ISO 25600',
      +    27 => 'ISO Hi 0.3',
      +    28 => 'ISO Hi 0.7',
      +    29 => 'ISO Hi 1.0',
      +    32 => 'ISO Hi 2.0',
      +);
      +
      +my %meteringModeZ7 = (
      +    0 => 'Matrix',
      +    1 => 'Center',
      +    2 => 'Spot',
      +    3 => 'Highlight'
      +);
      +
      +my %movieFrameRateZ7 = (
      +    0 => '120p',
      +    1 => '100p',
      +    2 => '60p',
      +    3 => '50p',
      +    4 => '30p',
      +    5 => '25p',
      +    6 => '24p',
      +);
      +
      +my %offLowNormalHighZ7 = (
      +    0 => 'Off',
      +    1 => 'Low',
      +    2 => 'Normal',
      +    3 => 'High',
      +);
      +
      +my %movieFrameSizeZ9 = (
      +    1 => '1920x1080',
      +    2 => '3840x2160',
      +    3 => '7680x4320',
      +);
      +
      +my %subjectDetectionZ9 = (
      +    0 => 'Off',
      +    1 => 'Auto',
      +    2 => 'People',
      +    3 => 'Animals',
      +    4 => 'Vehicles',
      +);
      +
      +my %vRModeZ9 = (
      +    0 => 'Off',
      +    1 => 'Normal',
      +    2 => 'Sport',
      +);
      +
       my %retouchValues = ( #PH
            0 => 'None',
            3 => 'B & W',
      @@ -873,6 +1017,38 @@
           10 => 'E3', 20 => 'B9', 30 => 'D4',
       );
       
      +# AF point indices for models with 105 focus points, eg. D6 (ref 28)
      +# - 7 rows (A-G) with 15 columns (1-15), center is D8
      +my %afPoints105 = (
      +     1 => 'D8',  28 => 'G7',  55 => 'F13', 82 => 'E4',
      +     2 => 'C8',  29 => 'D6',  56 => 'G13', 83 => 'F4',
      +     3 => 'B8',  30 => 'C6',  57 => 'D14', 84 => 'G4',
      +     4 => 'A8',  31 => 'B6',  58 => 'C14', 85 => 'D3',
      +     5 => 'E8',  32 => 'A6',  59 => 'B14', 86 => 'C3',
      +     6 => 'F8',  33 => 'E6',  60 => 'A14', 87 => 'B3',
      +     7 => 'G8',  34 => 'F6',  61 => 'E14', 88 => 'A3',
      +     8 => 'D9',  35 => 'G6',  62 => 'F14', 89 => 'E3',
      +     9 => 'C9',  36 => 'D11', 63 => 'G14', 90 => 'F3',
      +    10 => 'B9',  37 => 'C11', 64 => 'D15', 91 => 'G3',
      +    11 => 'A9',  38 => 'B11', 65 => 'C15', 92 => 'D2',
      +    12 => 'E9',  39 => 'A11', 66 => 'B15', 93 => 'C2',
      +    13 => 'F9',  40 => 'E11', 67 => 'A15', 94 => 'B2',
      +    14 => 'G9',  41 => 'F11', 68 => 'E15', 95 => 'A2',
      +    15 => 'D10', 42 => 'G11', 69 => 'F15', 96 => 'E2',
      +    16 => 'C10', 43 => 'D12', 70 => 'G15', 97 => 'F2',
      +    17 => 'B10', 44 => 'C12', 71 => 'D5',  98 => 'G2',
      +    18 => 'A10', 45 => 'B12', 72 => 'C5',  99 => 'D1',
      +    19 => 'E10', 46 => 'A12', 73 => 'B5', 100 => 'C1',
      +    20 => 'F10', 47 => 'E12', 74 => 'A5', 101 => 'B1',
      +    21 => 'G10', 48 => 'F12', 75 => 'E5', 102 => 'A1',
      +    22 => 'D7',  49 => 'G12', 76 => 'F5', 103 => 'E1',
      +    23 => 'C7',  50 => 'D13', 77 => 'G5', 104 => 'F1',
      +    24 => 'B7',  51 => 'C13', 78 => 'D4', 105 => 'G1',
      +    25 => 'A7',  52 => 'B13', 79 => 'C4',
      +    26 => 'E7',  53 => 'A13', 80 => 'B4',
      +    27 => 'F7',  54 => 'E13', 81 => 'A4',
      +);
      +
       # AF point indices for models with 135 focus points, eg. 1J1 (ref PH)
       # - 9 rows (A-I) with 15 columns (1-15), center is E8
       # - odd columns, columns 2 and 14, and the remaining corner points are
      @@ -944,6 +1120,43 @@
           31 => 'B8',  62 => 'H13', 93 => 'C17', 124 => 'G4',
       );
       
      +# AF point indices for models with 81 focus points, eg. Z6/Z7/Z50 (ref 38)
      +# - 9 rows (A-I) with 9 columns (1-9), center is E5
      +# NOTE: the AF points start 2 bytes into the data, so the map starts
      +#       at 17 instead of 1
      +#
      +#        7   6   5   4   3   2   1   0
      +# 00 : [H5][G5][F5][A5][B5][C5][D5][E5]
      +# 01 : [G6][F6][A6][B6][C6][D6][E6][I5]
      +# 02 : [F4][A4][B4][C4][D4][E4][I6][H6]
      +# 03 : [A7][B7][C7][D7][E7][I4][H4][G4]
      +# 04 : [B3][C3][D3][E3][I7][H7][G7][F7]
      +# 05 : [C8][D8][E8][I3][H3][G3][F3][A3]
      +# 06 : [D2][E2][I8][H8][G8][F8][A8][B8]
      +# 07 : [E9][I2][H2][G2][F2][A2][B2][C2]
      +# 08 : [I9][H9][G9][F9][A9][B9][C9][D9]
      +# 09 : [H1][G1][F1][A1][B1][C1][D1][E1]
      +# 0a : [  ][  ][  ][  ][  ][  ][  ][I1]
      +my %afPoints81 = (
      +     17 => 'E5',  34 => 'I6',  51 => 'H7',  68 => 'G8',  85 => 'F9',
      +     18 => 'D5',  35 => 'E4',  52 => 'I7',  69 => 'H8',  86 => 'G9',
      +     19 => 'C5',  36 => 'D4',  53 => 'E3',  70 => 'I8',  87 => 'H9',
      +     20 => 'B5',  37 => 'C4',  54 => 'D3',  71 => 'E2',  88 => 'I9',
      +     21 => 'A5',  38 => 'B4',  55 => 'C3',  72 => 'D2',  89 => 'E1',
      +     22 => 'F5',  39 => 'A4',  56 => 'B3',  73 => 'C2',  90 => 'D1',
      +     23 => 'G5',  40 => 'F4',  57 => 'A3',  74 => 'B2',  91 => 'C1',
      +     24 => 'H5',  41 => 'G4',  58 => 'F3',  75 => 'A2',  92 => 'B1',
      +     25 => 'I5',  42 => 'H4',  59 => 'G3',  76 => 'F2',  93 => 'A1',
      +     26 => 'E6',  43 => 'I4',  60 => 'H3',  77 => 'G2',  94 => 'F1',
      +     27 => 'D6',  44 => 'E7',  61 => 'I3',  78 => 'H2',  95 => 'G1',
      +     28 => 'C6',  45 => 'D7',  62 => 'E8',  79 => 'I2',  96 => 'H1',
      +     29 => 'B6',  46 => 'C7',  63 => 'D8',  80 => 'E9',  97 => 'I1',
      +     30 => 'A6',  47 => 'B7',  64 => 'C8',  81 => 'D9',
      +     31 => 'F6',  48 => 'A7',  65 => 'B8',  82 => 'C9',
      +     32 => 'G6',  49 => 'F7',  66 => 'A8',  83 => 'B9',
      +     33 => 'H6',  50 => 'G7',  67 => 'F8',  84 => 'A9',
      +);
      +
       my %cropHiSpeed = ( #IB
           0 => 'Off',
           1 => '1.3x Crop', # (1.3x Crop, Large)
      @@ -956,7 +1169,9 @@
           10 => '1.3x Movie Crop', #36 (D4/D500)
           11 => 'FX Uncropped',
           12 => 'DX Uncropped',
      -    15 => '1.5x Movie Crop', #36 (D4/D500)
      +    13 => '2.8x Movie Crop', #28 (D5/D6)    5584/1936
      +    14 => '1.4x Movie Crop', #28 (D5/D6)    5584/3856
      +    15 => '1.5x Movie Crop', #36 (D4/D500)  5600/3872
           17 => '1:1 Crop',
           OTHER => sub {
               my ($val, $inv, $conv) = @_;
      @@ -968,7 +1183,31 @@
           },
       );
       
      +my %flashGroupOptionsMode = (
      +    0 => 'TTL',
      +    1 => 'Manual',
      +    2 => 'Auto',
      +    3 => 'Off',
      +);
      +
      +my %nefCompression = (   #28 relocated to MakerNotes_0x51 at offset x'0a (Z9)
      +    1 => 'Lossy (type 1)', # (older models)
      +    2 => 'Uncompressed', #JD - D100 (even though TIFF compression is set!)
      +    3 => 'Lossless',
      +    4 => 'Lossy (type 2)',
      +    5 => 'Striped packed 12 bits', #IB
      +    6 => 'Uncompressed (reduced to 12 bit)', #IB
      +    7 => 'Unpacked 12 bits', #IB (padded to 16)
      +    8 => 'Small', #IB
      +    9 => 'Packed 12 bits', #IB (2 pixels in 3 bytes)
      +    10 => 'Packed 14 bits', #28 (4 pixels in 7 bytes, eg. D6 uncompressed 14 bit)
      +    13 => 'High Efficiency', #28
      +    14 => 'High Efficiency*', #28
      +);
      +
      +my %noYes = ( 0 => 'No' , 1 => 'Yes', );
       my %offOn = ( 0 => 'Off', 1 => 'On' );
      +my %onOff = ( 0 => 'On',  1 => 'Off' );
       
       # common attributes for writable BinaryData directories
       my %binaryDataAttrs = (
      @@ -979,6 +1218,30 @@
           FIRST_ENTRY => 0,
       );
       
      +my %base64bin = ( ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)' );
      +my %base64int32u = ( ValueConv => 'my $val=Image::ExifTool::XMP::DecodeBase64($val); unpack("V",$$val)' );
      +my %base64bytes = ( ValueConv => 'my $val=Image::ExifTool::XMP::DecodeBase64($val); join(".",unpack("C*",$$val))' );
      +my %base64double = (
      +    ValueConv => q{
      +        my $val=Image::ExifTool::XMP::DecodeBase64($val);
      +        my $saveOrder = GetByteOrder();
      +        SetByteOrder('II');
      +        $val = GetDouble($val,0);
      +        SetByteOrder($saveOrder);
      +        return $val;
      +    },
      +);
      +my %base64coord = (
      +    ValueConv => q{
      +        my $val=Image::ExifTool::XMP::DecodeBase64($val);
      +        my $saveOrder = GetByteOrder();
      +        SetByteOrder('II');
      +        $val = GetDouble($val,0) + GetDouble($val,8)/60 + GetDouble($val,16)/3600;
      +        SetByteOrder($saveOrder);
      +        return $val;
      +    },
      +    PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1)',
      +);
       # Nikon maker note tags
       %Image::ExifTool::Nikon::Main = (
           PROCESS_PROC => \&Image::ExifTool::Nikon::ProcessNikon,
      @@ -1018,7 +1281,12 @@
           0x0004 => { Name => 'Quality',      Writable => 'string' },
           0x0005 => { Name => 'WhiteBalance', Writable => 'string' },
           0x0006 => { Name => 'Sharpness',    Writable => 'string' },
      -    0x0007 => { Name => 'FocusMode',    Writable => 'string' },
      +    0x0007 => {
      +        Name => 'FocusMode',
      +        DataMember => 'FocusMode',
      +        Writable => 'string',
      +        RawConv => '$$self{FocusMode} = $val',
      +    },
           # FlashSetting (better named FlashSyncMode, ref 28) values:
           #   "Normal", "Slow", "Rear Slow", "RED-EYE", "RED-EYE SLOW"
           0x0008 => { Name => 'FlashSetting', Writable => 'string' },
      @@ -1322,7 +1590,9 @@
                    16 => 'Electronic',
                  # 33 => ? seen for 1J2
                    48 => 'Electronic Front Curtain',
      -           # 81 => ? seen for Z50
      +             64 => 'Electronic (Movie)', #JanSkoda (Z6II)
      +             80 => 'Auto (Mechanical)', #JanSkoda (Z6II)
      +             81 => 'Auto (Electronic Front Curtain)', #JanSkoda (Z6II)
               },
           },
           0x0035 => { #32
      @@ -1343,16 +1613,41 @@
               Count => 4,
               # (may need to divide by 4 for some images, eg. D3300/D5300, 12 bit - ref IB)
           },
      +    0x003e => { #28
      +        Name => 'ImageSizeRAW',
      +        PrintConv => {
      +             1 => 'Large',
      +             2 => 'Medium',
      +             3 => 'Small',
      +        },
      +    },
           0x0045 => { #IB
               Name => 'CropArea',
               Notes => 'left, top, width, height',
               Writable => 'int16u',
               Count => 4,
           },
      +    0x004e => { #28
      +        Name => 'NikonSettings',
      +        Writable => 'undef',
      +        Permanent => 0,
      +        Flags => [ 'Binary', 'Protected' ],
      +        SubDirectory => { TagTable => 'Image::ExifTool::NikonSettings::Main' },
      +    },
           0x004f => { #IB (D850)
               Name => 'ColorTemperatureAuto',
               Writable => 'int16u',
           },
      +    0x0051 => { #28 (Z9)
      +        Name => 'MakerNotes0x51',
      +        Writable => 'undef',
      +        Hidden => 1,
      +        Permanent => 0,
      +        Flags => [ 'Binary', 'Protected' ],
      +        SubDirectory => { TagTable => 'Image::ExifTool::Nikon::MakerNotes0x51' },
      +    },
      +    #0x0053 #28 possibly a secondary DistortionControl block (in addition to DistortInfo)?  Certainly offset 0x04 within block contains tag AutoDistortionControl for Z72 and D6  (1=>On; 2=> Off)
      +    #0x005e #28 possibly DiffractionCompensation block?  Certainly offset 0x04 within block contains tag DiffractionCompensation
           0x0080 => { Name => 'ImageAdjustment',  Writable => 'string' },
           0x0081 => { Name => 'ToneComp',         Writable => 'string' }, #2
           0x0082 => { Name => 'AuxiliaryLens',    Writable => 'string' },
      @@ -1419,6 +1714,7 @@
                   7 => 'Fired, External', #14
                   8 => 'Fired, Commander Mode',
                   9 => 'Fired, TTL Mode',
      +            18 => 'LED Light', #G.F. (movie LED light)
               },
           },
           0x0088 => [
      @@ -1498,7 +1794,7 @@
           0x008c => {
               Name => 'ContrastCurve', #JD
               Writable => 'undef',
      -        Flags => [ 'Binary', 'Protected' ],
      +        Flags => [ 'Binary', 'Protected', 'Drop' ], # (drop because not found in Nikon JPEG's)
           },
           # ColorHue: MODE1/MODE1a=sRGB, MODE2=Adobe RGB, MODE3a=more saturated sRGB
           # --> should really be called ColorSpace or ColorMode, but that would conflict with other tags
      @@ -1653,10 +1949,8 @@
                   SubDirectory => {
                       TagTable => 'Image::ExifTool::Nikon::ShotInfoD850',
                       DecryptStart => 4,
      -                # initially only decrypt enough to extract CustomSettingsOffset
      -                DecryptLen => 0x58,
      -                # then decrypt through to the end of the custom settings
      -                DecryptMore => 'Get32u(\$data, 0x58) + 90 + 4',
      +                DecryptLen => 0x2efb + 12,
      +                DecryptMore => 'Get32u(\$data, 0xa0) + 12',
                       ByteOrder => 'LittleEndian',
                   },
               },
      @@ -1745,6 +2039,16 @@
                       ByteOrder => 'LittleEndian',
                   },
               },
      +        { # (D6 firmware version 1.00, ref 28)
      +            Condition => '$$valPt =~ /^0246/',
      +            Name => 'ShotInfoD6',
      +            SubDirectory => {
      +                TagTable => 'Image::ExifTool::Nikon::ShotInfoD6',
      +                DecryptStart => 4,
      +                DecryptLen => 0xc292 + 720,   # thru decoded parts of Offset 32
      +                ByteOrder => 'LittleEndian',
      +            },
      +        },
               { # (D610 firmware version 1.00)
                   Condition => '$$valPt =~ /^0232/',
                   Name => 'ShotInfoD610',
      @@ -1755,7 +2059,30 @@
                       ByteOrder => 'BigEndian',
                   },
               },
      -        { # D7100=0227, Z6/Z7=0800
      +        { # (Z6_2 firmware version 1.00 and Z7II firmware versions 1.00 & 1.01, ref 28)
      +            # 0800=Z6/Z7  0801=Z50  0802=Z5   0803=Z6II/Z7II  0804=Zfc
      +            Condition => '$$valPt =~ /^080[01234]/',
      +            Name => 'ShotInfoZ7II',
      +            SubDirectory => {
      +                TagTable => 'Image::ExifTool::Nikon::ShotInfoZ7II',
      +                DecryptStart => 4,
      +                # TODO: eventually set the length dynamically according to actual offsets!
      +                DecryptLen => 0xd04e + 860,   # thru decoded MenuSettingsZ7II
      +                ByteOrder => 'LittleEndian',
      +            },
      +        },
      +        { # (Z9 firmware version 1.00 ref 28)
      +            Condition => '$$valPt =~ /^0805/',
      +            Name => 'ShotInfoZ9',
      +            SubDirectory => {
      +                TagTable => 'Image::ExifTool::Nikon::ShotInfoZ9',
      +                DecryptStart => 4,
      +                # TODO: eventually set the length dynamically according to actual offsets!
      +                DecryptLen => 0xec4b + 1646,  # decoded thru end of CustomSettingZ9 in Offset26 (+MenuSettingsZ9Offset)
      +                ByteOrder => 'LittleEndian',
      +            },
      +        },
      +        { # D7100=0227
                   Condition => '$$valPt =~ /^0[28]/',
                   Name => 'ShotInfo02xx',
                   SubDirectory => {
      @@ -1784,17 +2111,8 @@
           0x0093 => { #21
               Name => 'NEFCompression',
               Writable => 'int16u',
      -        PrintConv => {
      -            1 => 'Lossy (type 1)', # (older models)
      -            2 => 'Uncompressed', #JD - D100 (even though TIFF compression is set!)
      -            3 => 'Lossless',
      -            4 => 'Lossy (type 2)',
      -            5 => 'Striped packed 12 bits', #IB
      -            6 => 'Uncompressed (reduced to 12 bit)', #IB
      -            7 => 'Unpacked 12 bits', #IB (padded to 16)
      -            8 => 'Small', #IB
      -            9 => 'Packed 12 bits', #IB (2 pixels in 3 bytes)
      -        },
      +        SeparateTable => 'NEFCompression',
      +        PrintConv => \%nefCompression,
           },
           0x0094 => { Name => 'SaturationAdj',    Writable => 'int16s' },
           0x0095 => { Name => 'NoiseReduction',   Writable => 'string' }, # ("Off" or "FPNR"=long exposure NR)
      @@ -1995,7 +2313,7 @@
                   },
               },
               {
      -            Condition => '$$valPt =~ /^0800/', # Z6/Z7
      +            Condition => '$$valPt =~ /^080[012]/', # Z6/Z7/Z9
                   Name => 'LensData0800',
                   SubDirectory => {
                       TagTable => 'Image::ExifTool::Nikon::LensData0800',
      @@ -2129,6 +2447,11 @@
                   Condition => '$$valPt =~ /^010[78]/',
                   SubDirectory => { TagTable => 'Image::ExifTool::Nikon::FlashInfo0107' },
               },
      +         {
      +            Name => 'FlashInfo0300', # (Z7II)
      +            Condition => '$$valPt =~ /^030[01]/',
      +            SubDirectory => { TagTable => 'Image::ExifTool::Nikon::FlashInfo0300' },
      +        },
               {
                   Name => 'FlashInfoUnknown',
                   SubDirectory => { TagTable => 'Image::ExifTool::Nikon::FlashInfoUnknown' },
      @@ -2199,11 +2522,15 @@
               PrintConv => '$self->ConvertDateTime($val)',
               PrintConvInv => '$self->InverseDateTime($val,0)',
           },
      -    0x00b7 => { #JD
      +    0x00b7 => [{
      +        Name => 'AFInfo2',
      +        Condition => '$$self{Model} =~ /^NIKON Z 9\b/i',    #AFInfo2Version 0400
      +        SubDirectory => { TagTable => 'Image::ExifTool::Nikon::AFInfo2V0400' },
      +    },{ #JD
               Name => 'AFInfo2',
               # (this structure may be byte swapped when rewritten by CaptureNX)
               SubDirectory => { TagTable => 'Image::ExifTool::Nikon::AFInfo2' },
      -    },
      +    }],
           0x00b8 => [{ #PH
               Name => 'FileInfo',
               # unfortunately, some newer models write this as little-endian
      @@ -2252,6 +2579,10 @@
               Flags => [ 'Binary', 'Protected' ],
               SubDirectory => { TagTable => 'Image::ExifTool::Nikon::PictureControl' },
           },
      +    0x00bf => {
      +        Name => 'SilentPhotography',
      +        PrintConv => \%offOn,
      +    },
           0x00c3 => {
               Name => 'BarometerInfo',
               SubDirectory => {
      @@ -2460,15 +2791,23 @@
               },
           },
           # 5 - values: 0, 1 (VR On), 2 (VR Off)
      -    6 => {
      +    6 => [{
      +        Name => 'VRMode',
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'Sport',
      +            3 => 'Normal',
      +        },
      +        %infoZSeries
      +    },{
               Name => 'VRMode',
               PrintConv => {
      -            0 => 'Normal', # (Z7 gives this value for "off" - PH)
      +            0 => 'Normal',
                   1 => 'On (1)', #PH (NC)
                   2 => 'Active', # (1J1)
                   3 => 'Sport', #PH (Z7)
               },
      -    },
      +    }],
           # 7 - values: 0, 1
       );
       
      @@ -3260,6 +3599,7 @@
                       15 => 'Dynamic Area (72 points)', #PH
                       16 => 'Group Area (HL)', #28
                       17 => 'Group Area (VL)', #28
      +                18 => 'Dynamic Area (49 points)', #28
                       128 => 'Single', #PH (1J1,1J2,1J3,1J4,1S1,1S2,1V2,1V3)
                       129 => 'Auto (41 points)', #PH (1J1,1J2,1J3,1J4,1S1,1S2,1V1,1V2,1V3,AW1)
                       130 => 'Subject Tracking (41 points)', #PH (1J1,1J4,1J3)
      @@ -3290,13 +3630,21 @@
                       130 => 'Subject Tracking (41 points)', #PH (NC)
                       131 => 'Face Priority (41 points)', #PH (NC)
                       192 => 'Pinpoint', #PH (Z7)
      -                193 => 'Single', #PH (Z7) (AF-S?)
      +                193 => 'Single', #PH (Z7)
                       194 => 'Dynamic', #PH (Z7)
                       195 => 'Wide (S)', #PH (Z7)
                       196 => 'Wide (L)', #PH (Z7)
                       197 => 'Auto', #PH (Z7)
      -                198 => 'Auto (198)', #PH (Z7) (focus lock with AF-C maybe?)
      -                199 => 'Auto (focus lock)', #PH (Z7, AF-S)
      +                198 => 'Auto (People)', #28 (Z7)    #if no faces are detected, will record as 'Auto'.  Camera setting recorded in AFAreaMode field in the MakerNotes area
      +                199 => 'Auto (Animal)', #28 (Z7)    #if no animals are detected, will record as 'Auto'.  Camera setting recorded in AFAreaMode field in the MakerNotes area
      +                200 => 'Normal-area AF', #28 (D6)
      +                201 => 'Wide-area AF', #28 (D6)
      +                202 => 'Face-priority AF', #28 (D6)
      +                203 => 'Subject-tracking AF', #28 (D6)
      +                204 => 'Dynamic Area (S)', #28 (Z9)
      +                205 => 'Dynamic Area (M)', #28 (Z9)
      +                206 => 'Dynamic Area (L)', #28 (Z9)
      +                207 => '3D-tracking', #28 (Z9)
                   },
               },
           ],
      @@ -3314,13 +3662,15 @@
                   5 => 'On (5)', #PH (1S2[128/129], 1J4/1V3[129])
                   6 => 'On (105-point)', #PH (1J4/1V3[128/130])
                   7 => 'On (153-point)', #PH (D5/D500/D850)
      -            8 => 'On (8)', #PH (Z7)
      +            8 => 'On (81-point)', #38
      +            9 => 'On (105-point)', #28 (D6)
               },
           },
           7 => [
               { #PH/JD
                   Name => 'PrimaryAFPoint',
      -            Condition => '$$self{PhaseDetectAF} < 2',
      +            # PrimaryAFPoint may only be valid for PhaseDetect - certainly true on the D6, possibly other bodies? (ref 28)
      +            Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version} ne "0301"',
                   Notes => q{
                       models with 51-point AF -- 5 rows (A-E) and 11 columns (1-11): D3, D3S, D3X,
                       D4, D4S, D300, D300S, D700, D800, D800e and D810
      @@ -3455,7 +3805,7 @@
           8 => [
               { #JD/PH
                   Name => 'AFPointsUsed',
      -            Condition => '$$self{PhaseDetectAF} < 2',
      +            Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version} ne "0301"',
                   Notes => q{
                       models with 51-point AF -- 5 rows: A1-9, B1-11, C1-11, D1-11, E1-9.  Center
                       point is C6
      @@ -3559,21 +3909,23 @@
                   PrintConv => sub { PrintAFPoints(shift, \%afPoints153); },
                   PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints153); },
               },
      -        { #PH (Z7) (NC)
      +        { #38 (Z6/Z7/Z50)
                   Name => 'AFPointsUsed',
      -            Condition => '$$self{PhaseDetectAF} == 8',
      +            Condition => '$$self{PhaseDetectAF} == 8 and $$self{Model} =~ /^NIKON Z/',
                   Notes => q{
      -                models with 493-point AF -- 17 rows (A-Q) and 29 columns (1-29). Center
      -                point is I15
      +                models with 81-selectable point AF -- 9 rows (A-I) and 9 columns (1-9) for
      +                phase detect AF points. Center point is E5
                   },
      -            Format => 'undef[62]',
      -            ValueConv => 'join(" ", unpack("H2"x62, $val))',
      +            Format => 'undef[13]',
      +            ValueConv => 'join(" ", unpack("H2"x13, $val))',
                   ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
      -            PrintConv => sub { PrintAFPointsGrid(shift, 29); },
      -            PrintConvInv => sub { PrintAFPointsGridInv(shift, 29, 62); },
      +            PrintConv => sub { PrintAFPoints(shift, \%afPoints81); },
      +            PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints81); },
               },
               { #PH
                   Name => 'AFPointsUsed',
      +            # version 301 uses a separate field at offset 0x0a for this tag (ref 28)
      +            Condition =>  '$$self{AFInfo2Version} ne "0301"',
                   Format => 'undef[7]',
                   ValueConv => 'join(" ", unpack("H2"x7, $val))',
                   ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
      @@ -3581,6 +3933,19 @@
                   PrintConvInv => '$val=~s/Unknown \\((.*)\\)/$1/; $val',
               },
           ],
      +    0x0a => { #28 (D6) in any of the 3 Group modes on the D6, the points specify the outer boundaries of the focus point area; otherwise the tag value is consistent with other Nikon bodies
      +            Name => 'AFPointsUsed',
      +        Condition => '$$self{AFInfo2Version} eq "0301"  and $$self{PhaseDetectAF} == 9',
      +        Notes => q{
      +            models with 105-point AF -- 7 rows (A-G) and 15 columns (1-15). Center
      +            point is D8
      +        },
      +        Format => 'undef[14]',
      +        ValueConv => 'join(" ", unpack("H2"x14, $val))',
      +        ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
      +        PrintConv => sub { PrintAFPoints(shift, \%afPoints105); },
      +        PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints105); },
      +    },
           0x10 => { #PH (D90 and D5000)
               Name => 'AFImageWidth',
               Condition => '$$self{AFInfo2Version} eq "0100"',
      @@ -3623,11 +3988,21 @@
               Format => 'int16u',
               RawConv => '$val ? $val : undef',
           },
      -    0x1c => { #PH
      -        Name => 'ContrastDetectAFInFocus',
      -        Condition => '$$self{AFInfo2Version} eq "0100"',
      -        PrintConv => { 0 => 'No', 1 => 'Yes' },
      -    },
      +    0x1c => [
      +        { #PH
      +            Name => 'ContrastDetectAFInFocus',
      +            Condition => '$$self{AFInfo2Version} eq "0100"',
      +            PrintConv => { 0 => 'No', 1 => 'Yes' },
      +        },{ #PH (D500, see forum11190)
      +            Name => 'AFPointsSelected',
      +            Condition => '$$self{AFInfo2Version} eq "0101" and $$self{PhaseDetectAF} == 7',
      +            Format => 'undef[20]',
      +            ValueConv => 'join(" ", unpack("H2"x20, $val))',
      +            ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
      +            PrintConv => sub { PrintAFPoints(shift, \%afPoints153); },
      +            PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints153); },
      +        },
      +    ],
           # 0x1d - always zero (with or without live view)
           0x2a => { #PH (Z7)
               Name => 'AFImageWidth',
      @@ -3643,13 +4018,46 @@
           },
           0x2e => { #PH (Z7)
               Name => 'AFAreaXPosition',
      -        Condition => '$$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/',
      +        Condition => q{
      +            $$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
      +            $$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
      +        },
               Format => 'int16u',
           },
      -    0x30 => { #PH (Z7)
      -        Name => 'AFAreaYPosition',
      -        Condition => '$$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/',
      -        Format => 'int16u',
      +    0x2f => { #28 (Z7)   Still photography range 1-17 for the 493 point Z7 (arranged in a 29x17 grid. Center at x=16, y=10).
      +        Name => 'AFFocusPointXPosition',
      +        Condition => q{
      +            $$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
      +            $$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
      +        },
      +        PrintConv => sub { my ($val) = @_; PrintAFPointsLeftRight($val, 29 ); },
      +    },
      +    0x30 => [
      +        { #PH (Z7)
      +            Name => 'AFAreaYPosition',
      +            Condition => q{
      +                $$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
      +                $$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
      +            },
      +            Format => 'int16u',
      +        },{ #PH (D500, see forum11190)
      +            Name => 'AFPointsInFocus',
      +            Condition => '$$self{AFInfo2Version} eq "0101" and $$self{PhaseDetectAF} == 7',
      +            Notes => 'AF points in focus at the time time image was captured',
      +            Format => 'undef[20]',
      +            ValueConv => 'join(" ", unpack("H2"x20, $val))',
      +            ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
      +            PrintConv => sub { PrintAFPoints(shift, \%afPoints153); },
      +            PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints153); },
      +        },
      +    ],
      +    0x31 => { #28 (Z7)
      +        Name => 'AFFocusPointYPosition',
      +        Condition => q{
      +            $$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
      +            $$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
      +        },
      +        PrintConv => sub { my ($val) = @_; PrintAFPointsUpDown($val, 17 ); },
           },
           0x32 => { #PH (Z7)
               Name => 'AFAreaWidth',
      @@ -3663,6 +4071,19 @@
               Format => 'int16u',
               RawConv => '$val ? $val : undef',
           },
      +    0x38 => { #28
      +        Name => 'PrimaryAFPoint',
      +        Condition => '$$self{PhaseDetectAF} == 9 and $$self{AFInfo2Version} =~ /^03/',
      +        Notes => q{
      +            Nikon models with 105-point AF -- 7 rows (A-G) and 15 columns (1-15): D6
      +        },
      +        PrintConvColumns => 5,
      +        PrintConv => {
      +            0 => '(none)',
      +            %afPoints105,
      +            1 => 'D8 (Center)',
      +        },
      +    },
           0x44 => [
               {
                   Name => 'PrimaryAFPoint',
      @@ -3751,6 +4172,47 @@
           },
       );
       
      +%Image::ExifTool::Nikon::AFInfo2V0400 = (       #V0400 related fields begin at x'3c'   ( Z9)
      +    %binaryDataAttrs,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    DATAMEMBER => [ 0 ],
      +    0 => {
      +        Name => 'AFInfo2Version',
      +        Format => 'undef[4]',
      +        Writable => 0,
      +        RawConv => '$$self{AFInfo2Version} = $val',
      +    },
      +    0x3e => {
      +        Name => 'AFImageWidth',
      +        Format => 'int16u',
      +    },
      +    0x40 => {
      +        Name => 'AFImageHeight',
      +        Format => 'int16u',
      +    },
      +    0x43 => {
      +        Name => 'FocusPositionHorizontal',
      +        PrintConv => sub { my ($val) = @_; PrintAFPointsLeftRight($val, 29 ); },    #493 focus points for Z9 fall in a 30x18 grid (some coordinates are not accessible)
      +    },
      +    0x45 => {
      +        Name => 'FocusPositionVertical',
      +        PrintConv => sub { my ($val) = @_; PrintAFPointsUpDown($val, 17 ); },
      +    },
      +    0x46 => {
      +        Name => 'AFAreaWidth',
      +        Format => 'int16u',
      +        Notes => 'size of AF area in AFImage pixels',
      +        RawConv => '$val ? $val : undef',
      +    },
      +    0x48 => {
      +        Name => 'AFAreaHeight',
      +        Format => 'int16u',
      +        RawConv => '$val ? $val : undef',
      +    }
      +    #  AFFocusResult is the result of the last AF operation and not necessarily an indication of the state of the of the capture (e.g., the subject may have moved or the image re-framed)
      +    #0x4a => { Name => 'AFFocusResult',PrintConv => {0=> "No Focus", 1=>"Focus"} },     #new tag created because Z9 uses a hybrid contrast/phase AF     (closest former tag was ContrastDetectAFInFocus).
      +);
      +
       # Nikon AF fine-tune information (ref 28)
       %Image::ExifTool::Nikon::AFTune = (
           %binaryDataAttrs,
      @@ -3762,6 +4224,7 @@
                   # (don't know what the difference between 1 and 2 is)
                   1 => 'On (1)',
                   2 => 'On (2)',
      +            3 => 'On (Zoom)', #28
               },
           },
           1 => {
      @@ -3771,6 +4234,7 @@
               PrintConvInv => '$val eq "n/a" ? 255 : $val',
           },
           2 => {
      +        # when AFFineTune = 3 (indicating a zoom lens), this Tag stores the tuning adjustment for the wide end of the zoom range (ref 28)
               Name => 'AFFineTuneAdj',
               Priority => 0, # so other value takes priority if it exists
               Notes => 'may only be valid for saved lenses',
      @@ -3778,6 +4242,14 @@
               PrintConv => '$val > 0 ? "+$val" : $val',
               PrintConvInv => '$val',
           },
      +    3 => {
      +        Name => 'AFFineTuneAdjTele',
      +        # should probably insert a Condition that restricts this to AFFineTune = 3 (ref 28)
      +        Notes => 'only valid for zoom lenses (ie, AFTune=3)',
      +        Format => 'int8s',
      +        PrintConv => '$val > 0 ? "+$val" : $val',
      +        PrintConvInv => '$val',
      +    },
       );
       
       # Nikon NEF processing information (ref forum6281)
      @@ -4498,6 +4970,16 @@
                   13 => 'Nikkor Z 24-70mm f/2.8 S',
                   14 => 'Nikkor Z 85mm f/1.8 S',
                   15 => 'Nikkor Z 24mm f/1.8 S', #IB
      +            16 => 'Nikkor Z 70-200mm f/2.8 VR S', #IB
      +            17 => 'Nikkor Z 20mm f/1.8 S', #IB
      +            18 => 'Nikkor Z 24-200mm f/4-6.3 VR', #IB
      +            21 => 'Nikkor Z 50mm f/1.2 S', #IB
      +            22 => 'Nikkor Z 24-50mm f/4-6.3', #IB
      +            23 => 'Nikkor Z 14-24mm f/2.8 S', #IB
      +            24 => 'Nikkor Z MC 105mm f/2.8 VR S', #IB
      +            27 => 'Nikkor Z MC 50mm f/2.8', #IB
      +            28 => 'Nikkor Z 100-400mm f/4.5-5.6 VR S', #28
      +            29 => 'Nikkor Z 28mm f/2.8', #IB
               },
           },
           0x36 => {
      @@ -4659,7 +5141,7 @@
               Priority => 0,
           },
           # note: DecryptLen currently set to 0x251
      -    
      +
           # 0x55c - int16u[2400] TiffMeteringImage2: 60x40 image (ShotInfoVersion 0800, ref JR)
           # 0x181c - int16u[1200] TiffMeteringImage?: 60x20 image for some NEF's (ShotInfoVersion 0800, ref JR)
           # 0x217c - int16u[2400] TiffMeteringImage3: 60x40 image (ShotInfoVersion 0800, ref JR)
      @@ -5815,6 +6297,18 @@
                   3 => 'Rotate 180',
               },
           },
      +    0x0d0 => {
      +        Name => 'Interval',
      +        # prior version of the d% firmware do not support this tag, nor does the D500 (at least thru firmware 1.3)
      +        Condition => '$$self{Model} eq "NIKON D5" and $$self{FirmwareVersion} ge "1.40"',
      +        PrintConv =>  '$val > 0 ? sprintf("%.0f", $val) : ""',
      +    },
      +    0x0d4 => {
      +        Name => 'IntervalFrame',
      +        # prior version of the d% firmware do not support this tag, nor does the D500 (at least thru firmware 1.3)
      +        Condition => '$$self{Model} eq "NIKON D5" and $$self{FirmwareVersion} ge "1.40"',
      +        PrintConv =>  '$val > 0 ? sprintf("%.0f", $val) : ""',
      +    },
           0x05e2 => {
               Name => 'FlickerReductionIndicator',
               Mask => 0x01,
      @@ -6212,7 +6706,7 @@
           #        3 => 'Rotate 180',
           #    },
           #},
      -    0x2ea4 => {
      +    0x2ea4 => { #PH
               Name => 'NikonMeteringMode',
               Condition => '$$self{Model} =~ /\bD500\b/', # (didn't seem to work for D5, but I need more samples)
               Notes => 'D500 only',
      @@ -6226,53 +6720,18 @@
           },
           # note: DecryptLen currently set to OtherOffset + 0x2ea5 - 0x2c90
       );
      -# shot information for the D610 firmware 1.00 (encrypted) - ref PH
      -%Image::ExifTool::Nikon::ShotInfoD610 = (
      -    PROCESS_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
      -    WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
      -    CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
      -    VARS => { ID_LABEL => 'Index' },
      -    IS_SUBDIR => [ 0x07cf ],
      -    WRITABLE => 1,
      -    FIRST_ENTRY => 0,
      -    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      -    NOTES => 'These tags are extracted from encrypted data in images from the D610.',
      -    0x00 => {
      -        Name => 'ShotInfoVersion',
      -        Format => 'string[4]',
      -        Writable => 0,
      -    },
      -    0x04 => {
      -        Name => 'FirmwareVersion',
      -        Format => 'string[5]',
      -        Writable => 0,
      -    },
      -    0x07cf => {
      -        Name => 'CustomSettingsD610',
      -        Format => 'undef[48]',
      -        SubDirectory => {
      -            TagTable => 'Image::ExifTool::NikonCustom::SettingsD610',
      -        },
      -    },
      -    # note: DecryptLen currently set to 0x7ff
      -);
       
      -# shot information for the D810 firmware 1.00(PH)/1.01 (encrypted) - ref 28
      -%Image::ExifTool::Nikon::ShotInfoD810 = (
      +# shot information for the D6 firmware 1.00 (encrypted) - ref 28
      +%Image::ExifTool::Nikon::ShotInfoD6 = (
           PROCESS_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
           WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
           CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
           VARS => { ID_LABEL => 'Index' },
      -    DATAMEMBER => [ 0x04, 0x24, 0x38, 0x40, 0x84, 0x01d0, 0x175e, 0x185d, 0x18ab ],
      -    IS_SUBDIR => [ 0x18ab ],
      +    DATAMEMBER => [ 0x30, 0x60, 0x9c, 0xa4, 0x75e7, 0x760c, 0x7610, 0xc219, 0xc292, 0xc40e, 0xc412, 0xc4a6, 0xc4be ],
           WRITABLE => 1,
           FIRST_ENTRY => 0,
           GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      -    NOTES => q{
      -        These tags are extracted from encrypted data in images from the D810.  Note
      -        that the indices listed below are for firmware version 1.0, but they may be
      -        different for other firmware versions.
      -    },
      +    NOTES => 'These tags are extracted from encrypted data in images from the D6.',
           0x00 => {
               Name => 'ShotInfoVersion',
               Format => 'string[4]',
      @@ -6280,78 +6739,368 @@
           },
           0x04 => {
               Name => 'FirmwareVersion',
      -        DataMember => 'FirmwareVersion',
      -        Format => 'string[5]',
      +        Format => 'string[8]',
               Writable => 0,
      -        RawConv => '$$self{FirmwareVersion} = $val',
           },
      -    # 0x0c - number of entries in offset table (= 0x21)
      -    # 0x10 - int32u[val 0x0c]: offset table
           0x24 => {
      -        Name => 'BracketingOffset',
      -        DataMember => 'BracketingOffset',
      +        Name => 'NumberOffsets', # (number of entries in offset table.  offsets are from start of ShotInfo data)
      +        DataMember => 'NumberOffsets',
               Format => 'int32u',
               Writable => 0,
               Hidden => 1,
      -        RawConv => '$$self{BracketingOffset} = $val || 0x10000000; undef',
           },
      -    0x38 => {
      -        Name => 'ISOAutoOffset',
      -        DataMember => 'ISOAutoOffset',
      +    0x30 => {
      +        Name => 'Offset3',
      +        DataMember => 'Offset3',
               Format => 'int32u',
               Writable => 0,
               Hidden => 1,
      -        RawConv => '$$self{ISOAutoOffset} = $val || 0x10000000; undef',
      +        RawConv => '$$self{Offset3} = $val || 0x10000000; undef', # (ignore if 0)
           },
      -    0x40 => {
      -        Name => 'CustomSettingsOffset', # (relative offset from start of ShotInfo data)
      -        DataMember => 'CustomSettingsOffset',
      +    0x60 => {
      +        Name => 'Offset15',
      +        DataMember => 'Offset15',
               Format => 'int32u',
               Writable => 0,
               Hidden => 1,
      -        RawConv => '$$self{CustomSettingsOffset} = $val || 0x10000000; undef',
      +        RawConv => '$$self{Offset15} = $val || 0x10000000; undef', # (ignore if 0)
           },
      -    0x84 => {
      +    0x9c => {
               Name => 'OrientationOffset',
               DataMember => 'OrientationOffset',
               Format => 'int32u',
               Writable => 0,
               Hidden => 1,
      -        RawConv => '$$self{OrientationOffset} = $val || 0x10000000; undef',
      +        RawConv => '$$self{OrientationOffset} = $val || 0x10000000; undef', # (ignore if 0)
           },
      -    0x01d0 => {
      -        Name => 'SecondarySlotFunction',
      -        Mask => 0x03,
      -        PrintConv => {
      -            0 => 'Overflow',
      -            2 => 'Backup',
      -            3 => 'NEF Primary + JPG Secondary',
      +    0xa4 => {
      +        Name => 'Offset32',
      +        DataMember => 'Offset32',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{Offset32} = $val || 0x10000000; undef', # (ignore if 0)
      +    },
      +    ### 0x75e8 - Offset3 info start (D6 firmware 1.33)
      +    0x75e7 => {
      +        Name => 'Hook1',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of Offset5 data
      +        Hook => '$varSize = $$self{Offset3} - 0x75e8',
      +    },
      +    0x760c => {
      +        Name => 'IntervalShooting',
      +        RawConv => '$$self{IntervalShooting} = $val',
      +        Format => 'int16u',
      +        PrintConv => q{
      +            return 'Off' if $val == 0 ;
      +            my $i = sprintf("Interval %.0f of %.0f",$val, $$self{IntervalShootingIntervals});    #something like "Interval 1 of 3"
      +            my $f = $$self{IntervalShootingShotsPerInterval} > 1 ? sprintf(" Frame %.0f of %.0f",$$self{IntervalFrame}, $$self{IntervalShootingShotsPerInterval}): '' ;  #something like "Frame 1 of 3" or blank
      +            return "On: $i$f"
      +            #$val == 0 ? 'Off' : sprintf("On: Interval %.0f of %.0f Frame %.0f of %.0f",$val, $$self{IntervalShootingIntervals}, $$self{IntervalFrame}, $$self{IntervalShootingShotsPerInterval}),
               },
      -        Hook => '$varSize = $$self{BracketingOffset} - 0x1747',
           },
      -    0x1756 => {
      -        Name => 'AEBracketingSteps',
      -        Mask => 0xff,
      -        PrintHex => 1,
      -        PrintConvColumns => 2,
      -        PrintConv => {
      -            0x00 => 'AE Bracketing Disabled',
      -            0x20 => 'AE Bracketing Disabled',
      -            0x30 => 'AE Bracketing Disabled',
      -            0x40 => 'AE Bracketing Disabled',
      -            0x50 => 'AE Bracketing Disabled',
      -            0x81 => '+3F0.3',
      -            0x82 => '-3F0.3',
      -            0x83 => '+2F0.3',
      -            0x84 => '-2F0.3',
      -            0x85 => '3F0.3',
      -            0x86 => '5F0.3',
      -            0x87 => '7F0.3',
      -            0x88 => '9F0.3',
      -            0x91 => '+3F0.5',
      -            0x92 => '-3F0.5',
      -            0x93 => '+2F0.5',
      -            0x94 => '-2F0.5',
      +    0x7610 => {
      +        Name => 'IntervalFrame',
      +        RawConv => '$$self{IntervalFrame} = $val',
      +        Condition => '$$self{IntervalShooting} > 0',
      +        Format => 'int16u',
      +        Hidden => 1,
      +    },
      +### 0xc21a - OrientationInfo start (D6 firmware 1.00) (0xc952 for firmware 1.33)
      +    0xc219 => {
      +        Name => 'Hook2',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of OrientationInfo data
      +        Hook => '$varSize = $$self{OrientationOffset} - 0xc21a',
      +    },
      +    0xc21a => {
      +        Name => 'RollAngle',
      +        Format => 'fixed32u',
      +        Notes => 'converted to degrees of clockwise camera roll',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0xc21e => {
      +        Name => 'PitchAngle',
      +        Format => 'fixed32u',
      +        Notes => 'converted to degrees of upward camera tilt',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0xc222 => {
      +        Name => 'YawAngle',
      +        Format => 'fixed32u',
      +        Notes => 'the camera yaw angle when shooting in portrait orientation',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    ### 0xc9c6 - Offset32 start (D6 firmware 1.33)
      +    0xc292 => {
      +        Name => 'Hook3',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of data
      +        Hook => '$varSize = $$self{Offset32} - 0xc292',
      +    },
      +    0xc40e => {
      +        Name => 'Intervals',
      +        Format => 'int32u',
      +        RawConv => '$$self{IntervalShootingIntervals} = $val',
      +        Condition => '$$self{IntervalShooting} > 0',
      +    },
      +    0xc412 => {
      +        Name => 'ShotsPerInterval',
      +        Format => 'int32u',
      +        RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
      +        Condition => '$$self{IntervalShooting} > 0',
      +    },
      +    0xc416 => {
      +        Name => 'IntervalExposureSmoothing',
      +        Condition => '$$self{IntervalShooting} > 0',
      +        Format => 'int8u',
      +        PrintConv => \%offOn,
      +    },
      +    0xc418 => {
      +        Name => 'IntervalPriority',
      +        Condition => '$$self{IntervalShooting} > 0',
      +        Format => 'int8u',
      +        PrintConv => \%offOn,
      +    },
      +    0xc43a => {
      +        Name => 'FocusShiftNumberShots',
      +    },
      +    0xc43e => {
      +        Name => 'FocusShiftStepWidth',
      +    },
      +    0xc442 => {
      +        Name => 'FocusShiftInterval',
      +        PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
      +    },
      +    0xc446 => {
      +        Name => 'FocusShiftExposureLock',
      +        PrintConv => \%offOn,
      +    },
      +    #0xc49c => HighISONoiseReduction
      +    0xc4a0 => {
      +        Name => 'DiffractionCompensation',
      +        Format => 'int8u',
      +        PrintConv => \%offOn,
      +    },
      +    #0xc4a1 => {Name => 'FlickerReductionShooting',},   #redundant with tag in NikonSettings
      +    0xc4a6 => {
      +        Name => 'FlashControlMode',   #this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
      +        RawConv => '$$self{FlashControlMode} = $val',
      +        PrintConv => {
      +            0 => 'TTL',
      +            1 => 'Auto External Flash',
      +            2 => 'GN (distance priority)',
      +            3 => 'Manual',
      +            4 => 'Repeating Flash',
      +        },
      +    },
      +    0xc4ac => {
      +        Name => 'FlashGNDistance',
      +        Condition => '$$self{FlashControlMode} == 2',
      +        Unknown => 1,
      +        ValueConv => '$val + 3',
      +        PrintConv => \%flashGNDistance,
      +    },
      +    0xc4b0 => {
      +        Name => 'FlashOutput',   #range[0,24]  with 0=>Full; 1=>50%; then decreasing flash power in 1/3 stops to 0.39% (1/256 full power). #also found in FlashInfoUnknown at offset 0x0a (with different mappings)
      +        Condition => '$$self{FlashControlMode} >= 3',
      +        Unknown => 1,
      +        ValueConv => '2 ** (-$val/3)',
      +        ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
      +        PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
      +        PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +    },
      +    0xc4ba => {
      +        Name => 'FlashRemoteControl',
      +        Unknown => 1,
      +        PrintConv => {
      +            0 => 'Group',
      +            1 => 'Quick Wireless',
      +            2 => 'Remote Repeating',
      +        },
      +    },
      +    0xc4be => {
      +        Name => 'FlashMasterControlMode',        #tag name chosen for compatibility with those found in FlashInfo0102 & FlashInfo0103
      +        RawConv => '$$self{FlashGroupOptionsMasterMode} = $val',
      +        PrintConv => \%flashGroupOptionsMode,
      +    },
      +    0xc4c0 => {
      +        Name => 'FlashMasterCompensation',
      +        Unknown => 1,
      +        Format => 'int8s',
      +        Condition => '$$self{FlashGroupOptionsMasterMode}  != 3',   #other than 'Off'
      +        ValueConv => '$val/6',
      +        ValueConvInv => '6 * $val',
      +        PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
      +        PrintConvInv => '$val',
      +    },
      +    0xc4c4 => {
      +        Name => 'FlashMasterOutput',
      +        Unknown => 1,
      +        Condition => '$$self{FlashGroupOptionsMasterMode}  == 1',   #only for Mode=M
      +        ValueConv => '2 ** (-$val/3)',
      +        ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
      +        PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
      +        PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +    },
      +    0xc4c6 => {
      +        Name => 'FlashWirelessOption',
      +        Unknown => 1,
      +        PrintConv => {
      +            0 => 'Optical AWL',
      +            1 => 'Off',
      +        },
      +    },
      +    0xc55c => {
      +        Name => 'MovieType',
      +        Unknown => 1,
      +        PrintConv => {
      +            0 => 'MOV',
      +            1 => 'MP4',
      +        },
      +    },
      +    # note: DecryptLen currently set to 0xc9c6 + 720
      +);
      +
      +# shot information for the D610 firmware 1.00 (encrypted) - ref PH
      +%Image::ExifTool::Nikon::ShotInfoD610 = (
      +    PROCESS_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
      +    WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
      +    CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
      +    VARS => { ID_LABEL => 'Index' },
      +    IS_SUBDIR => [ 0x07cf ],
      +    WRITABLE => 1,
      +    FIRST_ENTRY => 0,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    NOTES => 'These tags are extracted from encrypted data in images from the D610.',
      +    0x00 => {
      +        Name => 'ShotInfoVersion',
      +        Format => 'string[4]',
      +        Writable => 0,
      +    },
      +    0x04 => {
      +        Name => 'FirmwareVersion',
      +        Format => 'string[5]',
      +        Writable => 0,
      +    },
      +    0x07cf => {
      +        Name => 'CustomSettingsD610',
      +        Format => 'undef[48]',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::NikonCustom::SettingsD610',
      +        },
      +    },
      +    # note: DecryptLen currently set to 0x7ff
      +);
      +
      +# shot information for the D810 firmware 1.00(PH)/1.01 (encrypted) - ref 28
      +%Image::ExifTool::Nikon::ShotInfoD810 = (
      +    PROCESS_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
      +    WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
      +    CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
      +    VARS => { ID_LABEL => 'Index' },
      +    DATAMEMBER => [ 0x04, 0x24, 0x38, 0x40, 0x84, 0x01d0, 0x175e, 0x185d, 0x18ab ],
      +    IS_SUBDIR => [ 0x18ab ],
      +    WRITABLE => 1,
      +    FIRST_ENTRY => 0,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    NOTES => q{
      +        These tags are extracted from encrypted data in images from the D810.  Note
      +        that the indices listed below are for firmware version 1.0, but they may be
      +        different for other firmware versions.
      +    },
      +    0x00 => {
      +        Name => 'ShotInfoVersion',
      +        Format => 'string[4]',
      +        Writable => 0,
      +    },
      +    0x04 => {
      +        Name => 'FirmwareVersion',
      +        DataMember => 'FirmwareVersion',
      +        Format => 'string[5]',
      +        Writable => 0,
      +        RawConv => '$$self{FirmwareVersion} = $val',
      +    },
      +    # 0x0c - number of entries in offset table (= 0x21)
      +    # 0x10 - int32u[val 0x0c]: offset table
      +    0x24 => {
      +        Name => 'BracketingOffset',
      +        DataMember => 'BracketingOffset',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{BracketingOffset} = $val || 0x10000000; undef',
      +    },
      +    0x38 => {
      +        Name => 'ISOAutoOffset',
      +        DataMember => 'ISOAutoOffset',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{ISOAutoOffset} = $val || 0x10000000; undef',
      +    },
      +    0x40 => {
      +        Name => 'CustomSettingsOffset', # (relative offset from start of ShotInfo data)
      +        DataMember => 'CustomSettingsOffset',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{CustomSettingsOffset} = $val || 0x10000000; undef',
      +    },
      +    0x84 => {
      +        Name => 'OrientationOffset',
      +        DataMember => 'OrientationOffset',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{OrientationOffset} = $val || 0x10000000; undef',
      +    },
      +    0x01d0 => {
      +        Name => 'SecondarySlotFunction',
      +        Mask => 0x03,
      +        PrintConv => {
      +            0 => 'Overflow',
      +            2 => 'Backup',
      +            3 => 'NEF Primary + JPG Secondary',
      +        },
      +        Hook => '$varSize = $$self{BracketingOffset} - 0x1747',
      +    },
      +    0x1756 => {
      +        Name => 'AEBracketingSteps',
      +        Mask => 0xff,
      +        PrintHex => 1,
      +        PrintConvColumns => 2,
      +        PrintConv => {
      +            0x00 => 'AE Bracketing Disabled',
      +            0x20 => 'AE Bracketing Disabled',
      +            0x30 => 'AE Bracketing Disabled',
      +            0x40 => 'AE Bracketing Disabled',
      +            0x50 => 'AE Bracketing Disabled',
      +            0x81 => '+3F0.3',
      +            0x82 => '-3F0.3',
      +            0x83 => '+2F0.3',
      +            0x84 => '-2F0.3',
      +            0x85 => '3F0.3',
      +            0x86 => '5F0.3',
      +            0x87 => '7F0.3',
      +            0x88 => '9F0.3',
      +            0x91 => '+3F0.5',
      +            0x92 => '-3F0.5',
      +            0x93 => '+2F0.5',
      +            0x94 => '-2F0.5',
                   0x95 => '3F0.5',
                   0x96 => '5F0.5',
                   0x97 => '7F0.5',
      @@ -6589,7 +7338,7 @@
           WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
           CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
           VARS => { ID_LABEL => 'Index' },
      -    DATAMEMBER => [ 0x04, 0x58, 0x0fbf ],
      +    DATAMEMBER => [ 0x04, 0x58, 0xa0, 0x0fbf, 0x2efa ],
           IS_SUBDIR => [ 0x1038 ],
           WRITABLE => 1,
           FIRST_ENTRY => 0,
      @@ -6615,6 +7364,14 @@
               Hidden => 1,
               RawConv => '$$self{CustomSettingsOffset} = $val || 0x10000000; undef',
           },
      +    0xa0 => {
      +        Name => 'OrientationOffset',
      +        DataMember => 'OrientationOffset',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{OrientationOffset} = $val || 0x10000000; undef',
      +    },
           0x0791 => {
               Name => 'PhotoShootingMenuBankImageArea',
               Mask => 0x07,
      @@ -6654,7 +7411,42 @@
                   TagTable => 'Image::ExifTool::NikonCustom::SettingsD850',
               },
           },
      -    # note: DecryptLen currently set to 94 bytes after CustomSettingsOffset
      +### 0x2efb - OrientationInfo start (D850 firmware 1.01a)
      +    0x2efa => {
      +        Name => 'Hook1',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of OrientationInfo data
      +        Hook => '$varSize = $$self{OrientationOffset} - 0x2efb',
      +    },
      +    0x2efb => { #28
      +        Name => 'RollAngle',
      +        Format => 'fixed32u',
      +        Notes => 'converted to degrees of clockwise camera roll',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x2eff => { #28
      +        Name => 'PitchAngle',
      +        Format => 'fixed32u',
      +        Notes => 'converted to degrees of upward camera tilt',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x2f03 => { #28
      +        Name => 'YawAngle',
      +        Format => 'fixed32u',
      +        Notes => 'the camera yaw angle when shooting in portrait orientation',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    # note: DecryptLen currently set to 0x2f07
       );
       # shot information for the D4 firmware 1.00g (ref PH)
       %Image::ExifTool::Nikon::ShotInfoD4 = (
      @@ -6699,9 +7491,7 @@
           WRITABLE => 1,
           FIRST_ENTRY => 0,
           GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      -    NOTES => q{
      -        These tags are extracted from encrypted data in images from the D4S.
      -    },
      +    NOTES => 'These tags are extracted from encrypted data in images from the D4S.',
           0x00 => {
               Name => 'ShotInfoVersion',
               Format => 'string[4]',
      @@ -6944,60 +7734,1373 @@
                   0x72 => 'ISO Hi 5.0',
               },
           },
      -    0x193d => {
      -        Name => 'CustomSettingsD4S',
      -        Condition => '$$self{FirmwareVersion} !~ /^1.00/',
      -        Notes => 'firmware version 1.01',
      -        Format => 'undef[56]',
      -        SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsD4' },
      +    0x193d => {
      +        Name => 'CustomSettingsD4S',
      +        Condition => '$$self{FirmwareVersion} !~ /^1.00/',
      +        Notes => 'firmware version 1.01',
      +        Format => 'undef[56]',
      +        SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsD4' },
      +    },
      +#    0x1978 => {        # this decode works, but involves more bits than should be necessary
      +#        Name => 'ShutterTrigger',
      +#        Mask => 0xff,
      +#        PrintConv => {
      +#           0 => 'Timer',
      +#           15 => 'Cable Release/Remote',
      +#           195 => 'Shutter Button',
      +#       },
      +#   },
      +    0x350b => {
      +        Name => 'RollAngle',
      +        Format => 'fixed32u',
      +        Notes => 'converted to degrees of clockwise camera roll',
      +        ValueConv => '$val < 180 ? -$val : 360 - $val',
      +        ValueConvInv => '$val <= 0 ? -$val : 360 - $val',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x350f => {
      +        Name => 'PitchAngle',
      +        Format => 'fixed32u',
      +        Notes => 'converted to degrees of upward camera tilt',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x3513 => {
      +        Name => 'YawAngle',
      +        Format => 'fixed32u',
      +        Notes => 'the camera yaw angle when shooting in portrait orientation',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x3693 => {
      +        Name => 'Rotation',
      +        Mask => 0x30,
      +        PrintConv => {
      +            0 => 'Horizontal',
      +            1 => 'Rotate 270 CW',
      +            2 => 'Rotate 90 CW',
      +            3 => 'Rotate 180',
      +        },
      +    },
      +    # note: DecryptLen currently set to 0x3697
      +);
      +
      +# shot information for the Z7II firmware 1.00 (encrypted) - ref 28
      +%Image::ExifTool::Nikon::ShotInfoZ7II = (
      +    PROCESS_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
      +    WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
      +    CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
      +    VARS => { ID_LABEL => 'Index' },
      +    DATAMEMBER => [ 0x04, 0x30, 0x38, 0x98, 0xa0,  0x75e7, 0x760c,
      +                    0x7610, 0x7eff, 0xce31, 0xcea5, 0xceb6, 0xceb7 ],
      +    IS_SUBDIR => [ 0xceb8 ],
      +    WRITABLE => 1,
      +    FIRST_ENTRY => 0,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    NOTES => 'These tags are extracted from encrypted data in images from the Z7II.',
      +    0x00 => {
      +        Name => 'ShotInfoVersion',
      +        Format => 'string[4]',
      +        Writable => 0,
      +    },
      +    0x04 => {
      +        Name => 'FirmwareVersion',
      +        DataMember => 'FirmwareVersion',
      +        Format => 'string[8]',
      +        Writable => 0,
      +        RawConv => '$$self{FirmwareVersion} = $val',
      +    },
      +    0x0e => {
      +        Name => 'FirmwareVersion2',
      +        Format => 'string[8]',
      +        Writable => 0,
      +        Hidden => 1,
      +    },
      +    0x18 => {
      +        Name => 'FirmwareVersion3',
      +        Format => 'string[8]',
      +        Writable => 0,
      +        Hidden => 1,
      +    },
      +    0x24 => {
      +        Name => 'NumberOffsets', # number of entries in offset table.  offsets are from start of ShotInfo data.
      +        DataMember => 'NumberOffsets',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +    },
      +    0x30 => {
      +        Name => 'Offset3',
      +        DataMember => 'Offset3',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{Offset3} = $val || 0x10000000; undef', # (ignore if 0)
      +    },
      +    0x38 => {
      +        Name => 'Offset5',
      +        DataMember => 'Offset5',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{Offset5} = $val || 0x10000000; undef', # (ignore if 0)
      +    },
      +    0x98 => {
      +        Name => 'OrientationOffset',
      +        DataMember => 'OrientationOffset',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{OrientationOffset} = $val || 0x10000000; undef', # (ignore if 0)
      +    },
      +    0xa0 => {
      +        Name => 'Offset31',
      +        DataMember => 'Offset31',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{Offset31} = $val || 0x10000000; undef', # (ignore if 0)
      +    },
      +    ### 0x75e8 - Offset3 info start (Z7II firmware 1.30)
      +    0x75e7 => {
      +        Name => 'Hook1',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of Offset3 data
      +        Hook => '$varSize = $$self{Offset3} - 0x75e8',
      +    },
      +    0x760c => {
      +        Name => 'IntervalShooting',
      +        RawConv => '$$self{IntervalShooting} = $val',
      +        Format => 'int16u',
      +        PrintConv => q{
      +            return 'Off' if $val == 0 ;
      +            my $i = sprintf("Interval %.0f of %.0f",$val, $$self{IntervalShootingIntervals}); # something like "Interval 1 of 3"
      +            my $f = $$self{IntervalShootingShotsPerInterval} > 1 ? sprintf(" Frame %.0f of %.0f",$$self{IntervalFrame}, $$self{IntervalShootingShotsPerInterval}): '' ;  # something like "Frame 1 of 3" or blank
      +            return "On: $i$f"
      +            #$val == 0 ? 'Off' : sprintf("On: Interval %.0f of %.0f Frame %.0f of %.0f",$val, $$self{IntervalShootingIntervals}, $$self{IntervalFrame}, $$self{IntervalShootingShotsPerInterval}),
      +        },
      +    },
      +    0x7610 => {
      +        Name => 'IntervalFrame',
      +        RawConv => '$$self{IntervalFrame} = $val',
      +        Condition => '$$self{IntervalShooting} > 0',
      +        Format => 'int16u',
      +        Hidden => 1,
      +    },
      +    ### 0x7f00 - Offset5 info start (Z7II firmware 1.30)
      +    0x7eff => {
      +        Name => 'Hook2',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of Offset5 data
      +        Hook => '$varSize = $$self{Offset5} - 0x7f00',
      +    },
      +    0x7fa0 => { #28
      +        Name => 'PortraitImpressionBalance', # will be 0 for firmware 1.21 and earlier; firmware 1.30 onward: will be set by Photo Shooting Menu entry Portrait Impression Balance
      +                   # offset5+160;    128 is neutral; >128 increases Yellow; <128 increases Magenta;  increments of 4 result from 1 full unit adjustment on the camera
      +                   # offset5+161     128 is neutral;  >128 increases Brightness; <128 decreases Brightness
      +                   # with firmware 1.30 when 'Off' is selected in the Shooting menu, offsets 160 & 161 will contain 255.  Selecting Mode 1,2, or 3 will populate offsets 160 & 161 with values in the range [116,141]
      +        Format => 'int8u[2]',
      +        Condition => '$$self{FirmwareVersion} ge "01.30"',
      +        PrintConv => q{
      +            return 'Off' if $val eq '0 0' or $val eq '255 255';
      +            my @v = split ' ', $val;
      +            my $brightness = $v[1]==128 ? 'Brightness: Neutral' : sprintf('Brightness: %+.1f',($v[1]-128)/4);
      +            my $color = $v[0]==128 ? 'Color: Neutral' : sprintf('%s: %.1f', $v[0]>128 ? 'Yellow' : 'Magenta', abs($v[0]-128)/4);
      +            # will return something like: 'Magenta: 1.0  Brightness: Neutral'
      +            return "$color $brightness"
      +        },
      +    },
      +    ### 0xce32 - OrientationInfo start (Z7II firmware 1.00)
      +    0xce31 => {
      +        Name => 'Hook3',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of OrientationInfo data
      +        Hook => '$varSize = $$self{OrientationOffset} - 0xce32',
      +    },
      +
      +    0xce32 => {
      +        Name => 'RollAngle',
      +        Format => 'fixed32u',
      +        Notes => 'converted to degrees of clockwise camera roll',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0xce36 => {
      +        Name => 'PitchAngle',
      +        Format => 'fixed32u',
      +        Notes => 'converted to degrees of upward camera tilt',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0xce3a => {
      +        Name => 'YawAngle',
      +        Format => 'fixed32u',
      +        Notes => 'the camera yaw angle when shooting in portrait orientation',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0xcea5 => {
      +        Name => 'Hook4',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of Offset31 data
      +        Hook => '$varSize = $$self{Offset31} - 0xcea6',
      +    },
      +    ### 0xcea6 - Offset31 info start (Z7II firmware 1.30)
      +    0xceb6 => {
      +        Name => 'MenuSettingsZ7IIOffset',
      +        # offset to MenuSettingsZ7II is relative to start of Offset31 block
      +        RawConv => '$$self{MenuSettingsZ7IIOffset} = ($val || 0x10000000) + $$self{Offset31}; undef', # (ignore if 0)
      +    },
      +    0xceb7 => {
      +        Name => 'Hook5',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of Offset5 data
      +        Hook => '$varSize = $$self{MenuSettingsZ7IIOffset} - 0xceb8',
      +    },
      +    0xceb8 => { # (this is 0xd04e for the Z50)
      +        Name => 'MenuSettingsZ7II',
      +        Format => 'undef[860]',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ7II',
      +        },
      +    }
      +    # note: DecryptLen currently set to 0xd04e + 860 (offset for Z50 is 0xd04e)
      +);
      +
      +# shot information for the Z9 firmware 1.00 (encrypted) - ref 28
      +%Image::ExifTool::Nikon::ShotInfoZ9 = (
      +    PROCESS_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
      +    WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
      +    CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
      +    VARS => { ID_LABEL => 'Index' },
      +    DATAMEMBER => [ 0x04, 0x30, 0x38, 0x84, 0x8c, 0x6c6f, 0x6c98,
      +                    0x6c9a, 0x7717, 0x7844, 0xeaea, 0xeb6f, 0xeb70 ],
      +    IS_SUBDIR => [ 0xec4b ],
      +    WRITABLE => 1,
      +    FIRST_ENTRY => 0,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    NOTES => 'These tags are extracted from encrypted data in images from the Z9.',
      +    0x00 => {
      +        Name => 'ShotInfoVersion',
      +        Format => 'string[4]',
      +        Writable => 0,
      +    },
      +    0x04 => {
      +        Name => 'FirmwareVersion',
      +        DataMember => 'FirmwareVersion',
      +        Format => 'string[8]',
      +        Writable => 0,
      +        RawConv => '$$self{FirmwareVersion} = $val',
      +    },
      +    0x0e => {
      +        Name => 'FirmwareVersion2',
      +        Format => 'string[8]',
      +        Writable => 0,
      +        Hidden => 1,
      +    },
      +    0x18 => {
      +        Name => 'FirmwareVersion3',
      +        Format => 'string[8]',
      +        Writable => 0,
      +        Hidden => 1,
      +    },
      +    0x24 => {
      +        Name => 'NumberOffsets', # number of entries in offset table.  offsets are from start of ShotInfo data.
      +        DataMember => 'NumberOffsets',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +    },
      +    0x30 => {
      +        Name => 'Offset3',   #offset3 - length 2528 (Z9 firmware 1.0)
      +        DataMember => 'Offset3',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{Offset3} = $val || 0x10000000; undef', # (ignore if 0)
      +    },
      +    0x38 => {
      +        Name => 'Offset5',   #offset5 - length 2488 (Z9 firmware 1.0)
      +        DataMember => 'Offset5',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{Offset5} = $val || 0x10000000; undef', # (ignore if 0)
      +    },
      +    0x84 => {
      +        Name => 'OrientationOffset',   #offset24 - length 108 (Z9 firmware 1.0)
      +        DataMember => 'OrientationOffset',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{OrientationOffset} = $val || 0x10000000; undef', # (ignore if 0)
      +    },
      +    0x8c => {
      +        Name => 'Offset26',   #offset26 - length 1895 (Z9 firmware 1.0)
      +        DataMember => 'Offset26',
      +        Format => 'int32u',
      +        Writable => 0,
      +        Hidden => 1,
      +        RawConv => '$$self{Offset26} = $val || 0x10000000; undef', # (ignore if 0)
      +    },
      +    ### 0x6c70 - Offset3 info start (Z9 firmware 1.00)
      +    0x6c6f => {
      +        Name => 'Offset3Hook',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of Offset3 data
      +        Hook => '$varSize = $$self{Offset3} - 0x6c70',
      +    },
      +    0x6c98 => {
      +        Name => 'IntervalShooting',
      +        RawConv => '$$self{IntervalShooting} = $val',
      +        Format => 'int16u',
      +        PrintConv => q{
      +            return 'Off' if $val == 0 ;
      +            my $i = sprintf("Interval %.0f of %.0f",$val, $$self{IntervalShootingIntervals}); # something like "Interval 1 of 3"
      +            my $f = $$self{IntervalShootingShotsPerInterval} > 1 ? sprintf(" Frame %.0f of %.0f",$$self{IntervalFrame}, $$self{IntervalShootingShotsPerInterval}): '' ;  # something like "Frame 1 of 3" or blank
      +            return "On: $i$f"
      +            #$val == 0 ? 'Off' : sprintf("On: Interval %.0f of %.0f Frame %.0f of %.0f",$val, $$self{IntervalShootingIntervals}, $$self{IntervalFrame}, $$self{IntervalShootingShotsPerInterval}),
      +        },
      +    },
      +    0x6c9a => {
      +        Name => 'IntervalFrame',
      +        RawConv => '$$self{IntervalFrame} = $val',
      +        Condition => '$$self{IntervalShooting} > 0',
      +        Format => 'int16u',
      +        Hidden => 1,
      +    },
      +    ### 0x7718 - Offset5 info start (Z9 firmware 1.00)
      +    0x7717 => {
      +        Name => 'Offsset5Hook',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of Offset5 data
      +        Hook => '$varSize = $$self{Offset5} - 0x7718',
      +    },
      +    0x7844 => {
      +        Name => 'FocusShiftShooting',
      +        RawConv => '$$self{FocusShiftShooting} = $val',
      +        PrintConv => q{
      +            return 'Off' if $val == 0 ;
      +            my $i = sprintf("Frame %.0f of %.0f",$val, $$self{FocusShiftNumberShots}); # something like Frame 1 of 100"
      +            return "On: $i"
      +        },
      +    },
      +    ### 0xeaeb - OrientationInfo start (Z9 firmware 1.00)
      +    0xeaea => {
      +        Name => 'OrientationHook',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of OrientationInfo data
      +        Hook => '$varSize = $$self{OrientationOffset} - 0xeaeb',
      +    },
      +    0xeaeb => {
      +        Name => 'RollAngle',
      +        Format => 'fixed32u',
      +        Notes => 'converted to degrees of clockwise camera roll',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0xeaef => {
      +        Name => 'PitchAngle',
      +        Format => 'fixed32u',
      +        Notes => 'converted to degrees of upward camera tilt',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0xeaf3 => {
      +        Name => 'YawAngle',
      +        Format => 'fixed32u',
      +        Notes => 'the camera yaw angle when shooting in portrait orientation',
      +        ValueConv => '$val <= 180 ? $val : $val - 360',
      +        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    ### 0xeb5f - Offset26 info start (Z9 firmware 1.00)
      +    0xeb6f => {
      +        Name => 'MenuSettingsZ9Offset',
      +        Writable => 0,
      +        Hidden => 1,
      +        # offset to MenuSettingsZ9 is relative to start of Offset26 block
      +        RawConv => '$$self{MenuSettingsZ9Offset} = ($val || 0x10000000) + $$self{Offset26}; undef', # (ignore if 0)
      +    },
      +    0xeb70 => {
      +        Name => 'Hook5',
      +        Hidden => 1,
      +        RawConv => 'undef',
      +        # account for variable location of menu settings data
      +        Hook => '$varSize = $$self{MenuSettingsZ9Offset} - 0xec4b',
      +    },
      +    0xec4b => {
      +        Name => 'MenuSettingsZ9',
      +        Format => 'undef[1646]',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
      +        },
      +    },
      +    # note: DecryptLen currently set to 0xec4b + 1646
      +);
      +
      +%Image::ExifTool::Nikon::MenuSettingsZ7II  = (
      +    %binaryDataAttrs,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    DATAMEMBER => [ 176, 180, 328, 352, 858 ],
      +    NOTES => 'These tags are used by the Z5, Z6, Z7, Z6II, Z7II, Z50 and Zfc.',
      +    160 => {
      +        Name => 'IntervalDurationHours',
      +        Format => 'int32u',
      +        #Condition => '$$self{IntervalShooting} > 0',
      +    },
      +    164 => {
      +        Name => 'IntervalDurationMinutes',
      +        Format => 'int32u',
      +        #Condition => '$$self{IntervalShooting} > 0',
      +    },
      +    168 => {
      +        Name => 'IntervalDurationSeconds',
      +        Format => 'int32u',
      +        #Condition => '$$self{IntervalShooting} > 0',
      +    },
      +    176 => {
      +        Name => 'Intervals',
      +        Format => 'int32u',
      +        RawConv => '$$self{IntervalShootingIntervals} = $val',
      +        #Condition => '$$self{IntervalShooting} > 0',
      +    },
      +    180 => {
      +        Name => 'ShotsPerInterval',
      +        Format => 'int32u',
      +        RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
      +        #Condition => '$$self{IntervalShooting} > 0',
      +    },
      +    184 => {
      +        Name => 'IntervalExposureSmoothing',
      +        #Condition => '$$self{IntervalShooting} > 0',
      +        Format => 'int8u',
      +        PrintConv => \%offOn,
      +    },
      +    186 => {
      +        Name => 'IntervalPriority',
      +        #Condition => '$$self{IntervalShooting} > 0',
      +        Format => 'int8u',
      +        PrintConv => \%offOn,
      +    },
      +    220 => {
      +        Name => 'FocusShiftNumberShots',
      +    },
      +    224 => {
      +        Name => 'FocusShiftStepWidth',
      +    },
      +    228 => {
      +        Name => 'FocusShiftInterval',
      +        PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
      +    },
      +    232 => {
      +        Name => 'FocusShiftExposureLock',
      +        PrintConv => \%offOn,
      +    },
      +    #304 => White Balance - Kelvin Temp
      +    #312 => ColorSpace
      +    #314 => ActiveD-Lighting
      +    #318 => HighISONoiseReduction
      +    322 => {
      +        Name => 'DiffractionCompensation',
      +        Format => 'int8u',
      +        PrintConv => \%offOn,
      +    },
      +    323 => {
      +        Name => 'AutoDistortionControl',
      +        Format => 'int8u',
      +        PrintConv => \%offOn,
      +    },
      +    #324 => {Name => 'FlickerReductionShooting',}, # redundant with tag in NikonSettings
      +    326 => {
      +        Name => 'NikonMeteringMode',
      +         Unknown => 1,
      +         PrintConv => {
      +            0 => 'Matrix',
      +            1 => 'Center',
      +            2 => 'Spot',
      +            3 => 'Highlight'
      +        },
      +    },
      +    326 => { Name => 'NikonMeteringMode',   PrintConv => \%meteringModeZ7},
      +    328 => {
      +        Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
      +        RawConv => '$$self{FlashControlMode} = $val',
      +        PrintConv => \%flashControlModeZ7,
      +    },
      +    334 => {
      +        Name => 'FlashGNDistance',
      +        Condition => '$$self{FlashControlMode} == 2',
      +        Unknown => 1,
      +        ValueConv => '$val + 3',
      +        PrintConv => \%flashGNDistance,
      +    },
      +    338 => {
      +        Name => 'FlashOutput',   # range[0,24]  with 0=>Full; 1=>50%; then decreasing flash power in 1/3 stops to 0.39% (1/256 full power). also found in FlashInfoUnknown at offset 0x0a (with different mappings)
      +        Condition => '$$self{FlashControlMode} >= 3',
      +        Unknown => 1,
      +        ValueConv => '2 ** (-$val/3)',
      +        ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
      +        PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
      +        PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +    },
      +    346 => { Name => 'FlashWirelessOption',  PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
      +    348 => { Name => 'FlashRemoteControl',   PrintConv => \%flashRemoteControlZ7, Unknown => 1},
      +    352 => {
      +        Name => 'FlashMasterControlMode', # tag name chosen for compatibility with those found in FlashInfo0102 & FlashInfo0103
      +        RawConv => '$$self{FlashGroupOptionsMasterMode} = $val',
      +        PrintConv => \%flashGroupOptionsMode,
      +    },
      +    354 => {
      +        Name => 'FlashMasterCompensation',
      +        Format => 'int8s',
      +        Condition => '$$self{FlashGroupOptionsMasterMode}  != 3',   # other than 'Off'
      +        Unknown => 1,
      +        ValueConv => '$val/6',
      +        ValueConvInv => '6 * $val',
      +        PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
      +        PrintConvInv => '$val',
      +    },
      +    358 => {
      +        Name => 'FlashMasterOutput',
      +        Unknown => 1,
      +        Condition => '$$self{FlashGroupOptionsMasterMode}  == 1',   # only for Mode=M
      +        ValueConv => '2 ** (-$val/3)',
      +        ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
      +        PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
      +        PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +    },
      +    #360 => {Name => 'FlashGroupAControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupACompensation at 362 and FlashGroupAOutput at 368
      +    #368 => {Name => 'FlashGroupBControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupBCompensation at 370 and FlashGroupBOutput at 374
      +    #376 => {Name => 'FlashGroupCControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupCCompensation at 378 and FlashGroupCOutput at 382
      +    #384 => {Name => 'FlashGroupDControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupDCompensation at 386 and FlashGroupDOutput at 390
      +    #392 => {Name => 'FlashGroupEControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupECompensation at 394 and FlashGroupEOutput at 398
      +    #400 => {Name => 'FlashGroupFControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupFCompensation at 402 and FlashGroupFOutput at 406
      +    #434 => FocusMode
      +    #436 => AFAreaMode
      +    #438 => VibrationReduction
      +    #442 => BracketSet
      +    #444 => BracketProgram
      +    #446 => BracketIncrement
      +    #463 => SilentPhotography
      +    502 => { Name => 'MovieFrameSize',   PrintConv => \%movieFrameSizeZ9, Unknown => 1},
      +    504 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1},
      +    506 => {
      +        Name => 'MovieSlowMotion',
      +        Unknown => 1,
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'On (4x)', # 120p recording with playback @ 30p [1920 x 1080; 30p x 4] or 100p recording with playback @ 25p [1920 x 1080; 25p x 4]
      +            2 => 'On (5x)', # 120p recording with playback @ 24p [1920 x 1080; 20p x 5]
      +        },
      +    },
      +    510 => {
      +        Name => 'MovieType',
      +        Unknown => 1,
      +        PrintConv => {
      +            0 => 'MOV',
      +            1 => 'MP4',
      +        },
      +    },
      +    #512 => MovieISOAutoHiLimit
      +    516 => {
      +        Name => 'MovieISOAutoManualMode',
      +        Condition => '$$self{Model} =~ /^NIKON 7/',    #ISO ranges vary by model.  These mappings are for the Z7 and Z7II
      +        Format => 'int16u',
      +        Unknown => 1,
      +        ValueConv => '($val-104)/8',
      +        ValueConvInv => '8 * ($val + 104)',
      +        PrintConv => \%iSOAutoHiLimitZ7,
      +    },
      +    #520 => MovieWhiteBalanceSameAsPhoto
      +    568 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1},
      +    572 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
      +    574 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
      +    576 => {
      +        Name => 'MovieVignetteControlSameAsPhoto',
      +        Unknown => 1,
      +        PrintConv => \%noYes
      +    },
      +    577 => {
      +        Name => 'MovieDiffractionCompensation',
      +        Unknown => 1,
      +        PrintConv => \%offOn
      +    },
      +    578 => {
      +        Name => 'MovieAutoDistortionControl',
      +        Unknown => 1,
      +        PrintConv => \%offOn
      +    },
      +    584 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1},
      +    #586 => MovieAFAreaMode
      +    590 => {
      +        Name => 'MovieVibrationReduction',
      +        Unknown => 1,
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'On (Normal)',
      +            2 => 'On (Sport)',
      +        },
      +    },
      +    591 => {
      +        Name => 'MovieVibrationReductionSameAsPhoto',
      +        Unknown => 1,
      +        PrintConv => \%noYes
      +    },
      +    #848 => HDMIOutputResolution
      +    #850 => HDMIOutputRange
      +    #854 => HDMIExternalRecorder
      +    #856 => HDMIBitDepth
      +    858 => {
      +        Name => 'HDMIOutputN-Log', # one of the choices under SettingsMenu/HDMI/Advanced.  Curiously,the HDR/HLC output option which is controlled by the same sub-menu is decoded thru NikonSettings
      +        Condition => '$$self{HDMIBitDepth} and $$self{HDMIBitDepth} == 2',   # only for 10 bit
      +        RawConv => '$$self{HDMIOutputNLog} = $val',
      +        Unknown => 1,
      +        PrintConv => \%offOn,
      +    },
      +    #859 => HDMIViewAssist
      +);
      +
      +%Image::ExifTool::Nikon::MenuSettingsZ9  = (
      +    %binaryDataAttrs,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    DATAMEMBER => [ 140, 188, 192, 232, 424, 534 ],
      +    IS_SUBDIR => [ 799 ],
      +    NOTES => 'These tags are used by the Z9.',
      +    #90  ISO
      +    140 => {
      +        Name => 'MultipleExposureMode',
      +        RawConv => '$$self{MultipleExposureMode} = $val',
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'On (Series)',
      +            2 => 'On',
      +        },
      +    },
      +    142 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0' },  #range 2-9
      +    188 => {
      +        Name => 'Intervals',
      +        Format => 'int32u',
      +        RawConv => '$$self{IntervalShootingIntervals} = $val',
      +        Condition => '$$self{IntervalShooting} > 0',
      +    },
      +    192 => {
      +        Name => 'ShotsPerInterval',
      +        Format => 'int32u',
      +        RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
      +        Condition => '$$self{IntervalShooting} > 0',
      +    },
      +    #220 NEFCompression      0=> 'Lossless'   1=> 'High Efficiency*'   4=>  'High Efficientcy'
      +    232 => {
      +        Name => 'FocusShiftNumberShots',    #1-300
      +        RawConv => '$$self{FocusShiftNumberShots} = $val',
      +        Condition => '$$self{FocusShiftShooting} > 0',
      +    },
      +    236 => {
      +        Name => 'FocusShiftStepWidth',     #1(Narrow) to 10 (Wide)
      +        Condition => '$$self{FocusShiftShooting} > 0',
      +    },
      +    240 => {
      +        Name => 'FocusShiftInterval',
      +        Condition => '$$self{FocusShiftShooting} > 0',
      +        PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
      +    },
      +    244 => {
      +        Name => 'FocusShiftExposureLock',
      +        Unknown => 1,
      +        PrintConv => \%offOn,
      +        Condition => '$$self{FocusShiftShooting} > 0',
      +    },
      +    274 => {
      +        Name => 'PhotoShootingMenuBank',
      +        PrintConv => {
      +            0 => 'A',
      +            1 => 'B',
      +            2 => 'C',
      +            3 => 'D',
      +        },
      +    },
      +    276 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn, },    #single tag from both Photo & Video menus
      +    308 => {
      +        Name => 'PhotoShootingMenuBankImageArea',
      +        PrintConv => {
      +            0 => 'FX',
      +            1 => 'DX',
      +            4 => '16:9',
      +            8 => '1:1',
      +        },
      +    },
      +    #310 ImageQuality
      +    322 => { Name => 'AutoISO', PrintConv => \%offOn, },
      +    324 => {
      +        Name => 'ISOAutoHiLimit',
      +        Format => 'int16u',
      +        Unknown => 1,
      +        ValueConv => '($val-104)/8',
      +        ValueConvInv => '8 * ($val + 104)',
      +        PrintConv => \%iSOAutoHiLimitZ7,
      +    },
      +    326 => {
      +        Name => 'ISOAutoFlashLimit',
      +        Format => 'int16u',
      +        Unknown => 1,
      +        ValueConv => '($val-104)/8',
      +        ValueConvInv => '8 * ($val + 104)',
      +        PrintConv => \%iSOAutoHiLimitZ7,
      +    },
      +    #332 ISOAutoShutterTime - Auto setting 0=> 'Auto (Slowest)', 1 => 'Auto (Slower)', 2=> 'Auto', 3=> 'Auto (Faster)', 4=> 'Auto (Fastest)'
      +    334 => {
      +        Name => 'ISOAutoShutterTime',         #shutter speed is 2 ** (-$val/24)
      +        ValueConv => '$val / 8',
      +        Format => 'int16s',
      +        PrintConv => {
      +            -15 => 'Auto',    #z9 firmware 1.00 maps both 'Auto' and '30 s'  to -15
      +            -12 => '15 s',
      +            -9 => '8 s',
      +            -6 => '4 s',
      +            -3 => '2 s',
      +            0 => '1 s',
      +            1 => '1/1.3 s',
      +            2 => '1/1.6 s',
      +            3 => '1/2 s',
      +            4 => '1/2.5 s',
      +            5 => '1/3 s',
      +            6 => '1/4 s',
      +            7 => '1/5 s',
      +            8 => '1/6 s',
      +            9 => '1/8 s',
      +            10 => '1/10 s',
      +            11 => '1/13 s',
      +            12 => '1/15 s',
      +            13 => '1/20 s',
      +            14 => '1/25 s',
      +            15 => '1/30 s',
      +            16 => '1/40 s',
      +            17 => '1/50 s',
      +            18 => '1/60 s',
      +            19 => '1/80 s',
      +            20 => '1/100 s',
      +            21 => '1/120 s',
      +            22 => '1/160 s',
      +            23 => '1/200 s',
      +            24 => '1/250 s',
      +            25 => '1/320 s',
      +            26 => '1/400 s',
      +            27 => '1/500 s',
      +            28 => '1/640 s',
      +            29 => '1/800 s',
      +            30 => '1/1000 s',
      +            31 => '1/1250 s',
      +            32 => '1/1600 s',
      +            33 => '1/2000 s',
      +            34 => '1/2500 s',
      +            35 => '1/3200 s',
      +            36 => '1/4000 s',
      +            37 => '1/5000 s',
      +            37.5 => '1/6000 s',
      +            38 => '1/6400 s',
      +            39 => '1/8000 s',
      +            40 => '1/10000 s',
      +            40.5 => '1/12000 s',
      +            41 => '1/13000 s',
      +            42 => '1/16000 s',
      +        },
      +    },
      +    #336 WhiteBalance
      +    #406 PictureControl
      +    #408 ColorSpace
      +    #410 ActiveD-Lighting
      +    #412 => { Name => 'NoiseReduction',  PrintConv => \%offOn },     #Long Exposure Noise Reduction
      +    #414 HighISONoiseReduction
      +    #414 VignetteControl
      +    416 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
      +    418 => { Name => 'DiffractionCompensation', PrintConv => \%offOn },    #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
      +    #419 AutoDistortionControl     #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
      +    420 => { Name => 'FlickerReductionShooting', PrintConv => \%offOn },
      +    #422 MeteringMode
      +    424 => {
      +        Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
      +        RawConv => '$$self{FlashControlMode} = $val',
      +        PrintConv => \%flashControlModeZ7,
      +    },
      +    426 => {
      +        Name => 'FlashMasterCompensation',
      +        Format => 'int8s',
      +        Unknown => 1,
      +        ValueConv => '$val/6',
      +        ValueConvInv => '6 * $val',
      +        PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
      +        PrintConvInv => '$val',
      +    },
      +    430 => {
      +        Name => 'FlashGNDistance',
      +        Condition => '$$self{FlashControlMode} == 2',
      +        Unknown => 1,
      +        ValueConv => '$val + 3',
      +        PrintConv => \%flashGNDistance,
      +    },
      +    434 => {
      +        Name => 'FlashOutput',   # range[0,24]  with 0=>Full; 1=>50%; then decreasing flash power in 1/3 stops to 0.39% (1/256 full power). also found in FlashInfoUnknown at offset 0x0a (with different mappings)
      +        Condition => '$$self{FlashControlMode} >= 3',
      +        Unknown => 1,
      +        ValueConv => '2 ** (-$val/3)',
      +        ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
      +        PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
      +        PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +    },
      +    #442 flash wirelss control 0=> 'Off' 1=> 'CMD'
      +    444 => { Name => 'FlashRemoteControl',  PrintConv => \%flashRemoteControlZ7, Unknown => 1},
      +    456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
      +    #526 FocusMode
      +    528 => {
      +        Name => 'AFAreaMode',
      +        PrintConv => {
      +            1 => 'Single',
      +            2 => 'Dynamic',
      +            3 => 'Wide (S)',
      +            4 => 'Wide (L)',
      +            5 => '3D',
      +            6 => 'Auto',
      +        },
      +    },
      +    530 => { Name => 'VRMode',   PrintConv => \%vRModeZ9},
      +    534 => {
      +        Name => 'BracketSet',
      +        RawConv => '$$self{BracketSet} = $val',
      +        PrintConv => {
      +            0 => 'AE/Flash',
      +            1 => 'AE',
      +            2 => 'Flash',
      +            3 => 'White Balance',
      +            4 => 'Active-D Lighting',
      +        },
      +    },
      +    536 => {
      +        Name => 'BracketProgram',
      +        Condition => '$$self{BracketSet} < 3',
      +        Notes => 'AE and/or Flash Bracketing',
      +        PrintConv => {
      +            0 => 'Disabled',
      +            2 => '2F',
      +            3 => '3F',
      +            4 => '4F',
      +            5 => '5F',
      +            7 => '7F',
      +            9 => '9F',
      +        },
      +    },
      +    538 => {
      +        Name => 'BracketIncrement',
      +        Condition => '$$self{BracketSet} < 3',
      +        Notes => 'AE and/or Flash Bracketing',
      +        PrintConv => {
      +            0 => '0.3',
      +            #1 => '0.5',
      +            2 => '0.7',
      +            3 => '1.0',
      +            4 => '2.0',
      +            5 => '3.0',
      +        },
      +    },
      +    #544 BracketProgram for ADL
      +    556 => {
      +        Name => 'SecondarySlotFunction',
      +        PrintConv => {
      +            0 => 'Overflow',
      +            1 => 'Backup',
      +            2 => 'NEF Primary + JPG Secondary',
      +            3 => 'JPG Primary + JPG Secondary',
      +        },
      +    },
      +    572 => { Name => 'DXCropAlert', PrintConv => \%offOn, },
      +    574 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9},
      +    604 => {
      +        Name => 'MovieImageArea',
      +        Unknown => 1,
      +        Mask => 0x01,            #without the mask 4 => 'FX'  5 => DX   only the 2nd Z-series field encountered with a mask.
      +        PrintConv => {
      +            0 => 'FX',
      +            1 => 'DX',
      +        },
      +    },
      +    614 => {
      +        Name => 'MovieType',
      +        Unknown => 1,
      +        PrintConv => {
      +            1 => 'H.265 8-bit (MP4)',
      +            2 => 'H.265 8-bit (MOV)',
      +            3 => 'H.265 10-bit (MOV)',
      +            4 => 'ProRes 422 HQ 10-bit (MOV)',
      +        },
      +    },
      +    616 => {
      +        Name => 'MovieISOAutoHiLimit',
      +        Format => 'int16u',
      +        Unknown => 1,
      +        ValueConv => '($val-104)/8',
      +        ValueConvInv => '8 * ($val + 104)',
      +        PrintConv => \%iSOAutoHiLimitZ7,
      +    },
      +    618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1},
      +    620 => {
      +        Name => 'MovieISOAutoManualMode',
      +        Format => 'int16u',
      +        Unknown => 1,
      +        ValueConv => '($val-104)/8',
      +         ValueConvInv => '8 * ($val + 104)',
      +        PrintConv => \%iSOAutoHiLimitZ7,
      +    },
      +    696 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1},
      +    698 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
      +    704 => {
      +        Name => 'MovieFlickerReduction',
      +        PrintConv => {
      +            0 => 'Auto',
      +            1 => '50Hz',
      +            2 => '60Hz',
      +        },
      +    },
      +    706 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, , Unknown => 1},
      +    708 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1},
      +    710 => {
      +        Name => 'MovieAFAreaMode',
      +        PrintConv => {
      +            1 => 'Single',
      +            3 => 'Wide (S)',
      +            4 => 'Wide (L)',
      +            6 => 'Auto',
      +            11 => 'Subject Tracking',
      +        },
      +    },
      +    712 => { Name => 'MovieVRMode',   PrintConv => \%vRModeZ9, Unknown => 1},
      +    716 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 },   #distinct from MoveieVRMode
      +    718 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'On', 2 => 'On' }, Unknown => 1 },    #not sure why the unusal mapping with 2 => 'On'
      +    720 => { Name => 'MicrophoneSensitivity', Unknown => 1},    #1-20
      +    722 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 },   #distinct from MoveieVRMode
      +    724 => { Name => 'MicrophoneFrequencyResponse', PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
      +    726 => { Name => 'WindNoiseReduction', PrintConv =>  \%offOn, Unknown => 1 },
      +    748 => {
      +        Name => 'MovieToneMap',
      +        Unknown => 1,
      +        PrintConv => {
      +            0 => 'SDR',
      +            1 => 'HLG',
      +            2 => 'N-Log',
      +        },
      +    },
      +    754 => { Name => 'MovieFrameSize',   PrintConv => \%movieFrameSizeZ9, Unknown => 1},
      +    756 => { Name => 'MovieFrameRate',   PrintConv => \%movieFrameRateZ7, Unknown => 1},
      +    762 => { Name => 'MicrophoneJackPower',   PrintConv => \%offOn, Unknown => 1 },
      +    763 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
      +    764 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1},
      +    799 => {
      +        Name => 'CustomSettingsZ9',
      +        Format => 'undef[608]',
      +        SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
      +    },
      +    1426 => {
      +        Name => 'Language',
      +        Unknown => 1,
      +        PrintConv => {
      +            4 => 'English',
      +            5 => 'Spanish',
      +            7 => 'French',
      +        },
      +    },
      +    1428 => {
      +        Name => 'TimeZone',
      +        PrintConv => {
      +            5 => '+09:00 (Tokyo)',
      +            6 => '+08:00 (Beijing, Honk Kong, Sinapore)',
      +            10 => '+05:45 (Kathmandu)',
      +            11 => '+05:30 (New Dehli)',
      +            16 => '+03:00 (Moscow, Nairobi)',
      +            15 => '+02:00 (Athens)',
      +            16 => '+01:00 (Madrid, Paris, Berlin)',
      +            17 => '+02:00 (Athens, Helsinki)',
      +            18 => '+00:00 (London)',
      +            19 => '+00:00', #PH (unknown city)
      +            22 => '-03:00 (Buenos Aires, Sao Paulo)',
      +            24 => '-04:00 (Manaus, Caracas)',
      +            25 => '-05:00 (New York, Toronto, Lima)',
      +            26 => '-06:00 (Chicago, Mexico City)',
      +            27 => '-07:00 (Denver)',
      +            28 => '-08:00 (Los Angeles, Vancouver)',
      +            29 => '-09:00 (Anchorage)',
      +            30 => '-10:00 (Hawaii)',
      +        },
      +    },
      +    1434  => {Name => 'MonitorBrightness', ValueConv => '$val - 5', Unknown => 1},        # settings: -5 to +5
      +    1456 => { Name => 'AFFineTune',        PrintConv => \%offOn, Unknown => 1 },
      +    1552 => {
      +        Name => 'HDMIOutputResolution',
      +        PrintConv => {
      +            0 => 'Auto',
      +            1 => '4320p',
      +            2 => '2160p',
      +            3 => '1080p',
      +            #4 => '1080i',
      +            5 => '720p',
      +            #6 => '576p',
      +            #7 => '480p',
      +        },
      +    },
      +    1565 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
      +    1572 => { Name => 'AirplaneMode',       PrintConv => \%offOn, Unknown => 1 },
      +    1573 => { Name => 'EmptySlotRelease',   PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
      +    1608 => { Name => 'EnergySavingMode',   PrintConv =>\%offOn,  Unknown => 1 },
      +    1632 => { Name => 'RecordLocationData', PrintConv => \%offOn, Unknown => 1 },
      +    1636 => { Name => 'USBPowerDelivery',   PrintConv => \%offOn, Unknown => 1 },
      +    1645 => { Name => 'SensorShield',       PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
      +);
      +
      +# Flash information (ref JD)
      +%Image::ExifTool::Nikon::FlashInfo0100 = (
      +    %binaryDataAttrs,
      +    DATAMEMBER => [ 9.2, 15, 16 ],
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    NOTES => q{
      +        These tags are used by the D2H, D2Hs, D2X, D2Xs, D50, D70, D70s, D80 and
      +        D200.
      +    },
      +    # NOTE: Must set ByteOrder in SubDirectory if any multi-byte integer tags added
      +    0 => {
      +        Name => 'FlashInfoVersion',
      +        Format => 'string[4]',
      +        Writable => 0,
      +    },
      +    4 => { #PH
      +        Name => 'FlashSource',
      +        PrintConv => {
      +            0 => 'None',
      +            1 => 'External',
      +            2 => 'Internal',
      +        },
      +    },
      +    # 5 - values: 46,48,50,54,78
      +    6 => {
      +        Format => 'int8u[2]',
      +        Name => 'ExternalFlashFirmware',
      +        SeparateTable => 'FlashFirmware',
      +        PrintConv => \%flashFirmware,
      +    },
      +    8 => {
      +        Name => 'ExternalFlashFlags',
      +        PrintConv => { 0 => '(none)',
      +            BITMASK => {
      +                0 => 'Fired', #28
      +                2 => 'Bounce Flash', #PH
      +                4 => 'Wide Flash Adapter',
      +                5 => 'Dome Diffuser', #28
      +            },
      +        },
      +    },
      +    9.1 => {
      +        Name => 'FlashCommanderMode',
      +        Mask => 0x80,
      +        PrintConv => { 0 => 'Off', 1 => 'On' },
      +    },
      +    9.2 => {
      +        Name => 'FlashControlMode',
      +        Mask => 0x7f,
      +        DataMember => 'FlashControlMode',
      +        RawConv => '$$self{FlashControlMode} = $val',
      +        PrintConv => \%flashControlMode,
      +        SeparateTable => 'FlashControlMode',
      +    },
      +    10 => [
      +        {
      +            Name => 'FlashOutput',
      +            Condition => '$$self{FlashControlMode} >= 0x06',
      +            ValueConv => '2 ** (-$val/6)',
      +            ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
      +            PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
      +            PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +        },
      +        {
      +            Name => 'FlashCompensation',
      +            Format => 'int8s',
      +            Priority => 0,
      +            ValueConv => '-$val/6',
      +            ValueConvInv => '-6 * $val',
      +            PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
      +            PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +        },
      +    ],
      +    11 => {
      +        Name => 'FlashFocalLength',
      +        RawConv => '$val ? $val : undef',
      +        PrintConv => '"$val mm"',
      +        PrintConvInv => '$val=~/(\d+)/; $1 || 0',
      +    },
      +    12 => {
      +        Name => 'RepeatingFlashRate',
      +        RawConv => '$val ? $val : undef',
      +        PrintConv => '"$val Hz"',
      +        PrintConvInv => '$val=~/(\d+)/; $1 || 0',
      +    },
      +    13 => {
      +        Name => 'RepeatingFlashCount',
      +        RawConv => '$val ? $val : undef',
      +    },
      +    14 => { #PH
      +        Name => 'FlashGNDistance',
      +        SeparateTable => 1,
      +        PrintConv => \%flashGNDistance,
      +    },
      +    15 => {
      +        Name => 'FlashGroupAControlMode',
      +        Mask => 0x0f,
      +        DataMember => 'FlashGroupAControlMode',
      +        RawConv => '$$self{FlashGroupAControlMode} = $val',
      +        PrintConv => \%flashControlMode,
      +        SeparateTable => 'FlashControlMode',
      +    },
      +    16 => {
      +        Name => 'FlashGroupBControlMode',
      +        Mask => 0x0f,
      +        DataMember => 'FlashGroupBControlMode',
      +        RawConv => '$$self{FlashGroupBControlMode} = $val',
      +        PrintConv => \%flashControlMode,
      +        SeparateTable => 'FlashControlMode',
      +    },
      +    17 => [
      +        {
      +            Name => 'FlashGroupAOutput',
      +            Condition => '$$self{FlashGroupAControlMode} >= 0x06',
      +            ValueConv => '2 ** (-$val/6)',
      +            ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
      +            PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
      +            PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +        },
      +        {
      +            Name => 'FlashGroupACompensation',
      +            Format => 'int8s',
      +            ValueConv => '-$val/6',
      +            ValueConvInv => '-6 * $val',
      +            PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
      +            PrintConvInv => '$val',
      +        },
      +    ],
      +    18 => [
      +        {
      +            Name => 'FlashGroupBOutput',
      +            Condition => '$$self{FlashGroupBControlMode} >= 0x06',
      +            ValueConv => '2 ** (-$val/6)',
      +            ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
      +            PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
      +            PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +        },
      +        {
      +            Name => 'FlashGroupBCompensation',
      +            Format => 'int8s',
      +            ValueConv => '-$val/6',
      +            ValueConvInv => '-6 * $val',
      +            PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
      +            PrintConvInv => '$val',
      +        },
      +    ],
      +);
      +
      +# Flash information for D40, D40x, D3 and D300 (ref JD)
      +%Image::ExifTool::Nikon::FlashInfo0102 = (
      +    %binaryDataAttrs,
      +    DATAMEMBER => [ 9.2, 16.1, 17.1, 17.2 ],
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    NOTES => q{
      +        These tags are used by the D3 (firmware 1.x), D40, D40X, D60 and D300
      +        (firmware 1.00).
      +    },
      +    # NOTE: Must set ByteOrder in SubDirectory if any multi-byte integer tags added
      +    0 => {
      +        Name => 'FlashInfoVersion',
      +        Format => 'string[4]',
      +        Writable => 0,
      +    },
      +    4 => { #PH
      +        Name => 'FlashSource',
      +        PrintConv => {
      +            0 => 'None',
      +            1 => 'External',
      +            2 => 'Internal',
      +        },
      +    },
      +    # 5 - values: 46,48,50,54,78
      +    6 => {
      +        Format => 'int8u[2]',
      +        Name => 'ExternalFlashFirmware',
      +        SeparateTable => 'FlashFirmware',
      +        PrintConv => \%flashFirmware,
      +    },
      +    8 => {
      +        Name => 'ExternalFlashFlags',
      +        PrintConv => { BITMASK => {
      +            0 => 'Fired', #28
      +            2 => 'Bounce Flash', #PH
      +            4 => 'Wide Flash Adapter',
      +            5 => 'Dome Diffuser', #28
      +        }},
      +    },
      +    9.1 => {
      +        Name => 'FlashCommanderMode',
      +        Mask => 0x80,
      +        PrintConv => { 0 => 'Off', 1 => 'On' },
      +    },
      +    9.2 => {
      +        Name => 'FlashControlMode',
      +        Mask => 0x7f,
      +        DataMember => 'FlashControlMode',
      +        RawConv => '$$self{FlashControlMode} = $val',
      +        PrintConv => \%flashControlMode,
      +        SeparateTable => 'FlashControlMode',
      +    },
      +    10 => [
      +        {
      +            Name => 'FlashOutput',
      +            Condition => '$$self{FlashControlMode} >= 0x06',
      +            ValueConv => '2 ** (-$val/6)',
      +            ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
      +            PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
      +            PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +        },
      +        {
      +            Name => 'FlashCompensation',
      +            # this is the compensation from the camera (0x0012) for "Built-in" FlashType, or
      +            # the compensation from the external unit (0x0017) for "Optional" FlashType - PH
      +            Format => 'int8s',
      +            Priority => 0,
      +            ValueConv => '-$val/6',
      +            ValueConvInv => '-6 * $val',
      +            PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
      +            PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +        },
      +    ],
      +    12 => {
      +        Name => 'FlashFocalLength',
      +        RawConv => '$val ? $val : undef',
      +        PrintConv => '"$val mm"',
      +        PrintConvInv => '$val=~/(\d+)/; $1 || 0',
      +    },
      +    13 => {
      +        Name => 'RepeatingFlashRate',
      +        RawConv => '$val ? $val : undef',
      +        PrintConv => '"$val Hz"',
      +        PrintConvInv => '$val=~/(\d+)/; $1 || 0',
           },
      -#    0x1978 => {        #this decode works, but involves more bits than should be necessary
      -#        Name => 'ShutterTrigger',
      -#        Mask => 0xff,
      -#        PrintConv => {
      -#           0 => 'Timer',
      -#           15 => 'Cable Release/Remote',
      -#           195 => 'Shutter Button',
      -#       },
      -#   },
      -    0x350b => {
      -        Name => 'RollAngle',
      -        Format => 'fixed32u',
      -        Notes => 'converted to degrees of clockwise camera roll',
      -        ValueConv => '$val < 180 ? -$val : 360 - $val',
      -        ValueConvInv => '$val <= 0 ? -$val : 360 - $val',
      -        PrintConv => 'sprintf("%.1f", $val)',
      -        PrintConvInv => '$val',
      +    14 => {
      +        Name => 'RepeatingFlashCount',
      +        RawConv => '$val ? $val : undef',
           },
      -    0x350f => {
      -        Name => 'PitchAngle',
      -        Format => 'fixed32u',
      -        Notes => 'converted to degrees of upward camera tilt',
      -        ValueConv => '$val <= 180 ? $val : $val - 360',
      -        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      -        PrintConv => 'sprintf("%.1f", $val)',
      -        PrintConvInv => '$val',
      +    15 => { #PH
      +        Name => 'FlashGNDistance',
      +        SeparateTable => 1,
      +        PrintConv => \%flashGNDistance,
           },
      -    0x3513 => {
      -        Name => 'YawAngle',
      -        Format => 'fixed32u',
      -        Notes => 'the camera yaw angle when shooting in portrait orientation',
      -        ValueConv => '$val <= 180 ? $val : $val - 360',
      -        ValueConvInv => '$val >= 0 ? $val : $val + 360',
      -        PrintConv => 'sprintf("%.1f", $val)',
      -        PrintConvInv => '$val',
      +    16.1 => {
      +        Name => 'FlashGroupAControlMode',
      +        Mask => 0x0f,
      +        Notes => 'note: group A tags may apply to the built-in flash settings for some models',
      +        DataMember => 'FlashGroupAControlMode',
      +        RawConv => '$$self{FlashGroupAControlMode} = $val',
      +        PrintConv => \%flashControlMode,
      +        SeparateTable => 'FlashControlMode',
           },
      -    0x3693 => {
      -        Name => 'Rotation',
      -        Mask => 0x30,
      -        PrintConv => {
      -            0 => 'Horizontal',
      -            1 => 'Rotate 270 CW',
      -            2 => 'Rotate 90 CW',
      -            3 => 'Rotate 180',
      -        },
      +    17.1 => {
      +        Name => 'FlashGroupBControlMode',
      +        Mask => 0xf0,
      +        Notes => 'note: group B tags may apply to group A settings for some models',
      +        DataMember => 'FlashGroupBControlMode',
      +        RawConv => '$$self{FlashGroupBControlMode} = $val',
      +        PrintConv => \%flashControlMode,
      +        SeparateTable => 'FlashControlMode',
           },
      -    # note: DecryptLen currently set to 0x3697
      +    17.2 => { #PH
      +        Name => 'FlashGroupCControlMode',
      +        Mask => 0x0f,
      +        Notes => 'note: group C tags may apply to group B settings for some models',
      +        DataMember => 'FlashGroupCControlMode',
      +        RawConv => '$$self{FlashGroupCControlMode} = $val',
      +        PrintConv => \%flashControlMode,
      +        SeparateTable => 'FlashControlMode',
      +    },
      +    18 => [
      +        {
      +            Name => 'FlashGroupAOutput',
      +            Condition => '$$self{FlashGroupAControlMode} >= 0x06',
      +            ValueConv => '2 ** (-$val/6)',
      +            ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
      +            PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
      +            PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +        },
      +        {
      +            Name => 'FlashGroupACompensation',
      +            Format => 'int8s',
      +            ValueConv => '-$val/6',
      +            ValueConvInv => '-6 * $val',
      +            PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
      +            PrintConvInv => '$val',
      +        },
      +    ],
      +    19 => [
      +        {
      +            Name => 'FlashGroupBOutput',
      +            Condition => '$$self{FlashGroupBControlMode} >= 0x60',
      +            ValueConv => '2 ** (-$val/6)',
      +            ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
      +            PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
      +            PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +        },
      +        {
      +            Name => 'FlashGroupBCompensation',
      +            Format => 'int8s',
      +            ValueConv => '-$val/6',
      +            ValueConvInv => '-6 * $val',
      +            PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
      +            PrintConvInv => '$val',
      +        },
      +    ],
      +    20 => [ #PH
      +        {
      +            Name => 'FlashGroupCOutput',
      +            Condition => '$$self{FlashGroupCControlMode} >= 0x06',
      +            ValueConv => '2 ** (-$val/6)',
      +            ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
      +            PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
      +            PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
      +        },
      +        {
      +            Name => 'FlashGroupCCompensation',
      +            Format => 'int8s',
      +            ValueConv => '-$val/6',
      +            ValueConvInv => '-6 * $val',
      +            PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
      +            PrintConvInv => '$val',
      +        },
      +    ],
       );
       
       # Flash information (ref JD)
      @@ -7894,6 +9997,42 @@
           ],
       );
       
      +# Flash information for the Z7II (ref 28)
      +# (likey similar to FlashInfo010 and FlashInfo0108 with addition of support for radio controlled units such as the SB-5000?
      +%Image::ExifTool::Nikon::FlashInfo0300 = (
      +    %binaryDataAttrs,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    0 => {
      +        Name => 'FlashInfoVersion',
      +        Format => 'string[4]',
      +        Writable => 0,
      +    },
      +    4 => {
      +        Name => 'FlashSource',
      +        PrintConv => {
      +            0 => 'None',
      +            1 => 'External',
      +            2 => 'Internal',
      +        },
      +    },
      +    6 => {
      +        Format => 'int8u[2]',
      +        Name => 'ExternalFlashFirmware',
      +        SeparateTable => 'FlashFirmware',
      +        PrintConv => \%flashFirmware,
      +    },
      +    10 => {
      +        Name => 'FlashCompensation',
      +        # this is the compensation from the camera (0x0012) for "Built-in" FlashType, or
      +        # the compensation from the external unit (0x0017) for "Optional" FlashType - PH
      +        Format => 'int8s',
      +        Priority => 0,
      +        ValueConv => '-$val/6',
      +        ValueConvInv => '-6 * $val',
      +        PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
      +        PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +);
       # Unknown Flash information
       %Image::ExifTool::Nikon::FlashInfoUnknown = (
           %binaryDataAttrs,
      @@ -8017,6 +10156,25 @@
           },
       );
       
      +# MakerNotes0x51 - compression info for Z9
      +%Image::ExifTool::Nikon::MakerNotes0x51 = (
      +    %binaryDataAttrs,
      +    DATAMEMBER => [ 0 ],
      +    GROUPS => { 0 => 'MakerNotes' },
      +    0 => {
      +        Name => 'FirmwareVersion',
      +        Format => 'string[8]',
      +        Writable => 0,
      +        RawConv => '$$self{FirmwareVersion} = $val',
      +    },
      +    10 => {
      +        Name => 'NEFCompression',
      +        Writable => 'int16u',
      +        SeparateTable => 'NEFCompression',
      +        PrintConv => \%nefCompression,
      +    },
      +);
      +
       # extra info found in IFD0 of NEF files (ref PH, Z6/Z7)
       %Image::ExifTool::Nikon::NEFInfo = (
           GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      @@ -8028,8 +10186,8 @@
           # 0x02 - undef[148]
           # 0x03 - undef[284]
           # 0x04 - undef[148,212]
      -    # 0x05 - undef[84]
      -    # 0x06 - undef[116]
      +    # 0x05 - undef[84] (barrel distortion params at offsets 0x14,0x1c,0x24, ref 28)
      +    # 0x06 - undef[116] (vignette correction params at offsets 0x24,0x34,0x44, ref 28)
           # 0x07 - undef[104]
           # 0x08 - undef[24]
           # 0x09 - undef[36]
      @@ -8722,6 +10880,7 @@
                   7 => 'Fired, External', #14
                   8 => 'Fired, Commander Mode',
                   9 => 'Fired, TTL Mode',
      +            18 => 'LED Light', #G.F. (movie LED light)
               },
           },
           0x2000098 => [
      @@ -8790,7 +10949,7 @@
                   },
               },
               {
      -            Condition => '$$valPt =~ /^0800/', # Z6/Z7
      +            Condition => '$$valPt =~ /^080[012]/', # Z6/Z7/Z9
                   Name => 'LensData0800',
                   SubDirectory => {
                       TagTable => 'Image::ExifTool::Nikon::LensData0800',
      @@ -8875,6 +11034,103 @@
           },
       );
       
      +# Nikon XMP tags written in NKSC metadata
      +%Image::ExifTool::Nikon::ast = (
      +    GROUPS => { 0 => 'XMP', 1 => 'XMP-ast', 2 => 'Image' },
      +    PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
      +    NAMESPACE => 'ast',
      +    VARS => { NO_ID => 1 },
      +    NOTES => 'Tags used by Nikon NX Studio in Nikon NKSC sidecar files and trailers.',
      +    about      => { },
      +    version    => { },
      +    XMLPackets => {
      +        SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' },
      +        Encoding => 'Base64',
      +        Binary => 1,
      +    },
      +    IPTC => {
      +        SubDirectory => { TagTable => 'Image::ExifTool::IPTC::Main' },
      +        Encoding => 'Base64',
      +        Binary => 1,
      +    },
      +    GPSVersionID => { Groups => { 2 => 'Location' }, %base64bytes },
      +    GPSLatitudeRef => {
      +        Groups => { 2 => 'Location' },
      +        %base64int32u,
      +        PrintConv => { 0 => 'North', 1 => 'South' }, #PH (NC)
      +    },
      +    GPSLatitude => { Groups => { 2 => 'Location' }, %base64coord },
      +    GPSLongitudeRef => {
      +        Groups => { 2 => 'Location' },
      +        %base64int32u,
      +        PrintConv => { 2 => 'East', 3 => 'West' }, #PH (NC)
      +    },
      +    GPSLongitude => { Groups => { 2 => 'Location' }, %base64coord },
      +    GPSAltitudeRef => {
      +        Groups => { 2 => 'Location' },
      +        %base64bytes,
      +        PrintConv => {
      +            0 => 'Above Sea Level',
      +            1 => 'Below Sea Level',
      +        },
      +    },
      +    GPSAltitude => {
      +        Groups => { 2 => 'Location' },
      +        %base64double,
      +        PrintConv => '"$val m"',
      +    },
      +    GPSMapDatum => { Groups => { 2 => 'Location' } },
      +    GPSImgDirection => {
      +        Groups => { 2 => 'Location' },
      +        %base64double,
      +        PrintConv => 'sprintf("%.2f", $val)',
      +    },
      +    GPSImgDirectionRef => {
      +        Groups => { 2 => 'Location' },
      +        PrintConv => {
      +            M => 'Magnetic North',
      +            T => 'True North',
      +        },
      +    },
      +);
      +%Image::ExifTool::Nikon::sdc = (
      +    GROUPS => { 0 => 'XMP', 1 => 'XMP-sdc', 2 => 'Image' },
      +    PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
      +    NAMESPACE => 'sdc',
      +    VARS => { NO_ID => 1 },
      +    about      => { },
      +    version    => { },
      +    appversion => { Name => 'AppVersion' },
      +    appname    => { Name => 'AppName' },
      +);
      +%Image::ExifTool::Nikon::nine = (
      +    GROUPS => { 0 => 'XMP', 1 => 'XMP-nine', 2 => 'Image' },
      +    PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
      +    NAMESPACE => 'nine',
      +    VARS => { NO_ID => 1 },
      +    about      => { },
      +    version    => { },
      +    Label      => { },
      +    Rating     => { },
      +    Trim       => { %base64bin },
      +    NineEdits  => {
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::Nikon::NineEdits',
      +            IgnoreProp => { userData => 1 }, # remove "UserData" from already overly long tag names
      +        },
      +        Binary => 1,
      +    },
      +);
      +%Image::ExifTool::Nikon::NineEdits = (
      +    GROUPS => { 0 => 'XML', 1 => 'NineEdits', 2 => 'Image' },
      +    PROCESS_PROC => \&Image::ExifTool::XMP::ProcessXMP,
      +    VARS => { NO_ID => 1 },
      +    NOTES => 'XML-based tags used to store editing information.',
      +    filterParametersBinary => { %base64bin },
      +    filterParametersExportExportData => { %base64bin },
      +    filterParametersCustomCustomData => { %base64bin },
      +);
      +
       # Nikon composite tags
       %Image::ExifTool::Nikon::Composite = (
           GROUPS => { 2 => 'Camera' },
      @@ -9003,7 +11259,7 @@
               return undef unless $val =~ /^([A-J])(\d+)$/i;
               return (ord(uc($1))-65) * $ncol + $2 - 1;
           } else {
      -        my $row = int(($val + 0.5) / $ncol);
      +        my $row = int(($val + 0.5) / $ncol) & 0xff;
               my $col = $val - $ncol * $row + 1;
               return chr(65+$row) . $col;
           }
      @@ -9052,6 +11308,32 @@
       }
       
       #------------------------------------------------------------------------------
      +# Print conversion for relative Left/Right AF points (ref 28)
      +# Inputs: 0) column, 1) number of columns
      +# Returns: AF point data as a string (e.g. '2L' or 'C' or '3R')
      +sub PrintAFPointsLeftRight($$)
      +{
      +    my ($col, $ncol) = @_;
      +    my $center = 1 + ($ncol + 1)/2;
      +    return 'C' if $col == $center;
      +    return sprintf('%d', $center - $col) . 'L of Center' if $col < $center;
      +    return sprintf('%d', $col - $center) . 'R of Center' if $col > $center;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Print conversion for relative Up/Down AF points (ref 28)
      +# Inputs: 0) row, 1) number of rows
      +# Returns: AF point data as a string (e.g. '2U' or 'C' or '3D')
      +sub PrintAFPointsUpDown($$)
      +{
      +    my ($row, $nrow) = @_;
      +    my $center = 1 + ($nrow + 1)/2;
      +    return 'C' if $row == $center;
      +    return sprintf('%d', $center - $row) . 'U from Center' if $row < $center;
      +    return sprintf('%d', $row - $center) . 'D from Center' if $row > $center;
      +}
      +
      +#------------------------------------------------------------------------------
       # Print PictureControl value
       # Inputs: 0) value (with 0x80 subtracted),
       #         1) 'Normal' (0 value) string (default 'Normal')
      @@ -9243,6 +11525,72 @@
       }
       
       #------------------------------------------------------------------------------
      +# Extract information from "NIKON APP" trailer (ref PH)
      +# Inputs: 0) ExifTool ref, 1) Optional dirInfo ref for returning trailer info
      +# Returns: true on success
      +sub ProcessNikonApp($;$)
      +{
      +    local $_;
      +    my ($et, $dirInfo) = @_;
      +    my $raf = $$et{RAF};
      +    my $offset = $dirInfo ? $$dirInfo{Offset} || 0 : 0;
      +    my $buff;
      +
      +    return 0 unless $raf->Seek(-20-$offset, 2) and $raf->Read($buff, 20) == 20 and
      +        substr($buff,-16) eq "\0\0\0\0\0\0/NIKON APP";    # check magic number
      +
      +    my $verbose = $et->Options('Verbose');
      +    my $fileEnd = $raf->Tell();
      +    my $trailerLen = unpack('N', $buff);
      +    $trailerLen > $fileEnd and $et->Warn('Bad NikonApp trailer size'), return 0;
      +    if ($dirInfo) {
      +        $$dirInfo{DirLen} = $trailerLen if $dirInfo;
      +        $$dirInfo{DataPos} = $fileEnd - $trailerLen;
      +        if ($$dirInfo{OutFile}) {
      +            if ($$et{DEL_GROUP}{NikonApp}) {
      +                ++$$et{CHANGED};
      +            # just copy the trailer when writing
      +            } elsif ($trailerLen > $fileEnd or not $raf->Seek($$dirInfo{DataPos}, 0) or
      +                     $raf->Read(${$$dirInfo{OutFile}}, $trailerLen) != $trailerLen)
      +            {
      +                return 0;
      +            } else {
      +                return 1;
      +            }
      +        }
      +        $et->DumpTrailer($dirInfo) if $verbose or $$et{HTML_DUMP};
      +    }
      +    unless ($trailerLen >= 0x40 and $raf->Seek($fileEnd - $trailerLen, 0) and
      +            $raf->Read($buff, 0x40) == 0x40 and $buff =~ m(NIKON APP\0))
      +    {
      +        $et->Warn('Error reading NikonApp trailer');
      +        return 0;
      +    }
      +    $$et{SET_GROUP0} = 'NikonApp';
      +    while ($raf->Read($buff, 8) == 8) {
      +        my ($id, $len) = unpack('N2', $buff);
      +        if ($len & 0x80000000) {
      +            $et->Warn('Invalid NikonApp record length');
      +            last;
      +        }
      +        last if $id == 0 and $len == 0;
      +        unless ($raf->Read($buff, $len) == $len) {
      +            $et->Warn('Truncated NikonApp record');
      +            last;
      +        }
      +        if ($id == 1) {
      +            require Image::ExifTool::XMP;
      +            Image::ExifTool::XMP::ProcessXMP($et, { DataPt => \$buff });
      +        } else { # (haven't seen any other types of records)
      +            $et->Warn("Unknown NikonApp record $id");
      +            last;
      +        }
      +    }
      +    delete $$et{SET_GROUP0};
      +    return 1;
      +}
      +
      +#------------------------------------------------------------------------------
       # Read Nikon NCTG tags in MOV videos
       # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
       # Returns: 1 on success
      @@ -9456,12 +11804,10 @@
               $dataLen = length $data;
               $dirStart = 0;
           }
      -    # loop through necessary IFD entries
      -    my ($lastTag) = sort { $b <=> $a } keys %$tagHash; # (reverse sort)
      +    # loop through Nikon MakerNote IFD entries
           for ($index=0; $index<$numEntries; ++$index) {
               my $entry = $dirStart + 2 + 12 * $index;
               my $tagID = Get16u($dataPt, $entry);
      -        last if $tagID > $lastTag;  # (assuming tags are in order)
               next unless exists $$tagHash{$tagID};   # only extract required tags
               my $format = Get16u($dataPt, $entry+2);
               next if $format < 1 or $format > 13;
      @@ -9585,7 +11931,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/NikonSettings.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/NikonSettings.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/NikonSettings.pm	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/NikonSettings.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -0,0 +1,2093 @@
      +#------------------------------------------------------------------------------
      +# File:         NikonSettings.pm
      +#
      +# Description:  Read Nikon user settings
      +#
      +# Revisions:    2021/01/08 - Warren Hatch Created
      +#               2021/01/12 - PH Created ProcessNikonSettings() to extract tags
      +#                            by ID instead of using fixed offsets
      +#
      +# References:   1) Warren Hatch private communication (D6 and Z7_2)
      +#
      +#------------------------------------------------------------------------------
      +
      +package Image::ExifTool::NikonSettings;
      +
      +use strict;
      +use vars qw($VERSION);
      +use Image::ExifTool qw(:DataAccess :Utils);
      +
      +$VERSION = '1.07';
      +
      +sub ProcessNikonSettings($$$);
      +
      +my %enableDisable = ( 1 => 'Enable', 2 => 'Disable' );
      +
      +my %funcButtonZ7m2 = (
      +    1 => 'AF-On',
      +    2 => 'AF Lock Only',
      +    3 => 'AE Lock (hold)',
      +    4 => 'AE Lock (reset on release)',
      +    5 => 'AE Lock Only',
      +    6 => 'AE/AF Lock',
      +    7 => 'FV Lock',
      +    8 => 'Flash Disable/Enable',
      +    9 => 'Preview',
      +    10 => 'Matrix Metering',
      +    11 => 'Center-weighted Metering',
      +    12 => 'Spot Metering',
      +    13 => 'Highlight-weighted Metering',
      +    14 => 'Bracketing Burst',
      +    15 => 'Synchronized Release (Master)',
      +    16 => 'Synchronized Release (Remote)',    # no settings map to 17 or 18
      +    19 => '+NEF(RAW)',
      +    20 => 'Subject Tracking',
      +    21 => 'Silent Photography',
      +    22 => 'LiveView Info Display On/Off',
      +    23 => 'Grid Display',
      +    24 => 'Zoom (Low)',
      +    25 => 'Zoom (1:1)',
      +    26 => 'Zoom (High)',
      +    27 => 'My Menu',
      +    28 => 'My Menu Top Item',
      +    29 => 'Playback',
      +    30 => 'Protect',
      +    31 => 'Image Area',
      +    32 => 'Image Quality',
      +    33 => 'White Balance',
      +    34 => 'Picture Control',
      +    35 => 'Active-D Lighting',
      +    36 => 'Metering',
      +    37 => 'Flash Mode',
      +    38 => 'Focus Mode',
      +    39 => 'Auto Bracketing',
      +    40 => 'Multiple Exposure',
      +    41 => 'HDR',
      +    42 => 'Exposure Delay Mode',
      +    43 => 'Shutter/Aperture Lock',
      +    44 => 'Focus Peaking',
      +    45 => 'Rating 0',
      +    46 => 'Rating 5',
      +    47 => 'Rating 4',
      +    48 => 'Rating 3',
      +    49 => 'Rating 2',
      +    50 => 'Rating 1',    # no settings map to x'51 (possibly intended for 'Candidate for Delection'
      +    52 => 'Non-CPU Lens',
      +    52 => 'None',
      +);
      +
      +my %flickUpDownD6 = (
      +    1 => 'Rating',
      +    2 => 'Select To Send',
      +    3 => 'Protect',
      +    4 => 'Voice Memo',
      +    5 => 'None',
      +);
      +
      +my %flickUpDownRatingD6 = (
      +    1 => 'Rating 5',
      +    2 => 'Rating 4',
      +    3 => 'Rating 3',
      +    4 => 'Rating 2',
      +    5 => 'Rating 1',
      +    6 => 'Candidate for Deletion',
      +);
      +
      +my %groupAreaCustom = (
      +    1 => '1x7',
      +    2 => '1x5',
      +    3 => '3x7',
      +    4 => '3x5',
      +    5 => '3x3',
      +    6 => '5x7',
      +    7 => '5x5',
      +    8 => '5x3',
      +    9 => '5x1',
      +    10 => '7x7',
      +    11 => '7x5',
      +    12 => '7x3',
      +    13 => '7x1',
      +    14 => '11x3',
      +    15 => '11x1',
      +    16 => '15x3',
      +    17 => '15x1',
      +);
      +
      +my %iSOAutoHiLimitD6 = (
      +    1 => 'ISO 200',
      +    2 => 'ISO 250',
      +    3 => 'ISO 280',
      +    4 => 'ISO 320',
      +    5 => 'ISO 400',
      +    6 => 'ISO 500',
      +    7 => 'ISO 560',
      +    8 => 'ISO 640',
      +    9 => 'ISO 800',
      +    10 => 'ISO 1000',
      +    11 => 'ISO 1100',
      +    12 => 'ISO 1250',
      +    13 => 'ISO 1600',
      +    14 => 'ISO 2000',
      +    15 => 'ISO 2200',
      +    16 => 'ISO 2500',
      +    17 => 'ISO 3200',
      +    18 => 'ISO 4000',
      +    19 => 'ISO 4500',
      +    20 => 'ISO 5000',
      +    21 => 'ISO 6400',
      +    22 => 'ISO 8000',
      +    23 => 'ISO 9000',
      +    24 => 'ISO 10000',
      +    25 => 'ISO 12800',
      +    26 => 'ISO 16000',
      +    27 => 'ISO 18000',
      +    28 => 'ISO 20000',
      +    29 => 'ISO 25600',
      +    30 => 'ISO 32000',
      +    31 => 'ISO 36000',
      +    32 => 'ISO 40000',
      +    33 => 'ISO 51200',
      +    34 => 'ISO 64000',
      +    35 => 'ISO 72000',
      +    36 => 'ISO 81200',
      +    37 => 'ISO 102400',
      +    38 => 'ISO Hi 0.3',
      +    39 => 'ISO Hi 0.5',
      +    40 => 'ISO Hi 0.7',
      +    41 => 'ISO Hi 1.0',
      +    42 => 'ISO Hi 2.0',
      +    43 => 'ISO Hi 3.0',
      +    44 => 'ISO Hi 4.0',
      +    45 => 'ISO Hi 5.0',
      +);
      +
      +my %iSOAutoHiLimitZ7 = (
      +    1 => 'ISO 100',
      +    2 => 'ISO 125',
      +    4 => 'ISO 160',
      +    5 => 'ISO 200',
      +    6 => 'ISO 250',
      +    8 => 'ISO 320',
      +    9 => 'ISO 400',
      +    10 => 'ISO 500',
      +    12 => 'ISO 640',
      +    13 => 'ISO 800',
      +    14 => 'ISO 1000',
      +    16 => 'ISO 1250',
      +    17 => 'ISO 1600',
      +    18 => 'ISO 2000',
      +    20 => 'ISO 2500',
      +    21 => 'ISO 3200',
      +    22 => 'ISO 4000',
      +    24 => 'ISO 5000',
      +    25 => 'ISO 6400',
      +    26 => 'ISO 8000',
      +    28 => 'ISO 10000',
      +    29 => 'ISO 12800',
      +    30 => 'ISO 16000',
      +    32 => 'ISO 20000',
      +    33 => 'ISO 25600',
      +    38 => 'ISO Hi 0.3',
      +    39 => 'ISO Hi 0.5',
      +    40 => 'ISO Hi 0.7',
      +    41 => 'ISO Hi 1.0',
      +    42 => 'ISO Hi 2.0',
      +);
      +
      +my %lensFuncButtonZ7m2 = (
      +    1 => 'AF-On',
      +    2 => 'AF Lock Only',
      +    3 => 'AE Lock (hold)',
      +    4 => 'AE Lock (reset on release)',
      +    5 => 'AE Lock Only',
      +    6 => 'AE/AF Lock',
      +    7 => 'FV Lock',
      +    8 => 'Flash Disable/Enable',
      +    9 => 'Preview',
      +    10 => 'Matrix Metering',
      +    11 => 'Center-weighted Metering',
      +    12 => 'Spot Metering',
      +    13 => 'Highlight-weighted Metering',
      +    14 => 'Bracketing Burst',
      +    15 => 'Synchronized Release (Master)',
      +    16 => 'Synchronized Release (Remote)',    # no settings map to 17 or 18 (Z7II fw 1.01)
      +    19 => '+NEF(RAW)',
      +    20 => 'Subject Tracking',
      +    21 => 'Grid Display',
      +    22 => 'Zoom (Low)',
      +    23 => 'Zoom (1:1)',
      +    24 => 'Zoom (High)',
      +    25 => 'My Menu',
      +    26 => 'My Menu Top Item',
      +    27 => 'Playback',
      +    28 => 'None',
      +);
      +
      +my %limitNolimit = ( 1 => 'Limit', 2 => 'No Limit' );
      +
      +my %limtReleaseModeSel = (
      +    0 => 'No Limit',    # not sure why 0 and 2 both map to 'No Limit', but they do
      +    1 => 'Limit',
      +    2 => 'No Limit',
      +);
      +
      +my %menuBank = (
      +    1 => 'A',
      +    2 => 'B',
      +    3 => 'C',
      +    4 => 'D',
      +);
      +
      +my %noYes = ( 1 => 'No', 2 => 'Yes' );
      +my %offOn = ( 1 => 'Off', 2 => 'On' );
      +my %onOff = ( 1 => 'On', 2 => 'Off' );
      +
      +my %previewButtonD6 = (
      +    1 => 'Preset Focus Point - Press To Recall',
      +    2 => 'Preset Focus Point - Hold To Recall',
      +    3 => 'AF-AreaMode S',
      +    4 => 'AF-AreaMode D9',
      +    5 => 'AF-AreaMode D25',
      +    6 => 'AF-AreaMode D49',
      +    7 => 'AF-AreaMode D105',
      +    8 => 'AF-AreaMode 3D',
      +    9 => 'AF-AreaMode Group',
      +    10 => 'AF-AreaMode Group C1',
      +    11 => 'AF-AreaMode Group C2',
      +    12 => 'AF-AreaMode Auto Area',
      +    13 => 'AF-AreaMode + AF-On S',
      +    14 => 'AF-AreaMode + AF-On D9',
      +    15 => 'AF-AreaMode + AF-On D25',
      +    16 => 'AF-AreaMode + AF-On D49',
      +    17 => 'AF-AreaMode + AF-On D105',
      +    18 => 'AF-AreaMode + AF-On 3D',
      +    19 => 'AF-AreaMode + AF-On Group',
      +    20 => 'AF-AreaMode + AF-On Group C1',
      +    21 => 'AF-AreaMode + AF-On Group C2',
      +    22 => 'AF-AreaMode + AF-On Auto Area',
      +    23 => 'AF-On',
      +    24 => 'AF Lock Only',
      +    25 => 'AE Lock (hold)',
      +    26 => 'AE/WB Lock (hold)',
      +    27 => 'AE Lock (reset on release)',
      +    28 => 'AE Lock Only',
      +    29 => 'AE/AF Lock',
      +    30 => 'FV Lock',
      +    31 => 'Flash Disable/Enable',
      +    32 => 'Preview',
      +    33 => 'Recall Shooting Functions',
      +    34 => 'Bracketing Burst',
      +    35 => 'Synchronized Release (Master)',
      +    36 => 'Synchronized Release (Remote)', # no settings map to 37 or 38
      +    39 => '+NEF(RAW)',
      +    40 => 'Grid Display',
      +    41 => 'Virtual Horizon',
      +    42 => 'Voice Memo',
      +    43 => 'Wired LAN',
      +    44 => 'My Menu',
      +    45 => 'My Menu Top Item',
      +    46 => 'Playback',
      +    47 => 'Filtered Playback',
      +    48 => 'Photo Shooting Bank',
      +    49 => 'AF Mode/AF Area Mode',
      +    50 => 'Image Area',
      +    51 => 'Active-D Lighting',
      +    52 => 'Exposure Delay Mode',
      +    53 => 'Shutter/Aperture Lock',
      +    54 => '1 Stop Speed/Aperture',
      +    55 => 'Non-CPU Lens',
      +    56 => 'None',
      +);
      +
      +my %releaseFocus = (
      +    1 => 'Release',
      +    2 => 'Focus',
      +);
      +
      +my %tagMultiSelector = (
      +    1 => 'Restart Standby Timer',
      +    2 => 'Do Nothing',
      +);
      +
      +my %tagSecondarySlotFunction = (
      +    1 => 'Overflow',
      +    2 => 'Backup',
      +    3 => 'NEF Primary + JPG Secondary',
      +    4 => 'JPG Primary + JPG Secondary',
      +);
      +
      +my %tagSubSelector = (
      +    1 => 'Same as MultiSelector',
      +    2 => 'Focus Point Selection',
      +);
      +
      +my %thirdHalfFull = (
      +    1 => '1/3 EV',
      +    2 => '1/2 EV',
      +    3 => '1 EV',
      +);
      +
      +my %times4s10s20s1m5m20m = (
      +    1 => '4 s',
      +    2 => '10 s',
      +    3 => '20 s',
      +    4 => '1 min',
      +    5 => '5 min',
      +    6 => '10 min',
      +);
      +
      +my %yesNo = ( 1 => 'Yes', 2 => 'No' );
      +
      +my %infoD6 = (
      +    Condition => '$$self{Model} =~ /^NIKON D6\b/i',
      +    Notes => 'D6',
      +);
      +
      +my %infoZ7 = (
      +    Condition => '$$self{Model} =~ /^NIKON Z (7|7_2)\b/i',
      +    Notes => 'Z7 and Z7_2',
      +);
      +
      +my %infoZSeries = (
      +    Condition => '$$self{Model} =~ /^NIKON Z (5|50|6|6_2|7|7_2|fc)\b/i',
      +    Notes => 'Z Series cameras thru November 2021',
      +);
      +
      +# Nikon Settings tags (ref 1, tag ID's ref PH)
      +%Image::ExifTool::NikonSettings::Main = (
      +    PROCESS_PROC => \&ProcessNikonSettings,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
      +    NOTES => q{
      +        User settings for newer Nikon models.  A number of the tags are marked as
      +        Unknown only to reduce the volume of the normal output.
      +    },
      +    0x001 => [{
      +        Name => 'ISOAutoHiLimit',
      +        PrintConv => \%iSOAutoHiLimitD6,
      +        %infoD6,
      +    },{
      +        Name => 'ISOAutoHiLimit',
      +        PrintConv => \%iSOAutoHiLimitZ7,
      +        %infoZ7,
      +    }],
      +    0x002 => [{
      +        Name => 'ISOAutoFlashLimit',
      +        PrintConv => {
      +            1 => 'Same As Without Flash',
      +            2 => 'ISO 200',
      +            3 => 'ISO 250',
      +            5 => 'ISO 320',
      +            6 => 'ISO 400',
      +            7 => 'ISO 500',
      +            9 => 'ISO 640',
      +            10 => 'ISO 800',
      +            11 => 'ISO 1000',
      +            13 => 'ISO 1250',
      +            14 => 'ISO 1600',
      +            15 => 'ISO 2000',
      +            17 => 'ISO 2500',
      +            18 => 'ISO 3200',
      +            19 => 'ISO 4000',
      +            21 => 'ISO 5000',
      +            22 => 'ISO 6400',
      +            23 => 'ISO 8000',
      +            25 => 'ISO 10000',
      +            26 => 'ISO 12800',
      +            27 => 'ISO 16000',
      +            29 => 'ISO 20000',
      +            30 => 'ISO 25600',
      +            31 => 'ISO 32000',
      +            33 => 'ISO 40000',
      +            34 => 'ISO 51200',
      +            35 => 'ISO 64000',
      +            36 => 'ISO 72000',
      +            37 => 'ISO 81200',
      +            38 => 'ISO 102400',
      +            39 => 'ISO Hi 0.3',
      +            40 => 'ISO Hi 0.5',
      +            41 => 'ISO Hi 0.7',
      +            42 => 'ISO Hi 1.0',
      +            43 => 'ISO Hi 2.0',
      +            44 => 'ISO Hi 3.0',
      +            45 => 'ISO Hi 4.0',
      +            46 => 'ISO Hi 5.0',
      +        },
      +        %infoD6,
      +    },{
      +        Name => 'ISOAutoFlashLimit',
      +        PrintConv => {
      +            1 => 'Same As Without Flash',
      +            2 => 'ISO 100',
      +            3 => 'ISO 125',
      +            5 => 'ISO 160',
      +            6 => 'ISO 200',
      +            7 => 'ISO 250',
      +            9 => 'ISO 320',
      +            10 => 'ISO 400',
      +            11 => 'ISO 500',
      +            13 => 'ISO 640',
      +            14 => 'ISO 800',
      +            15 => 'ISO 1000',
      +            17 => 'ISO 1250',
      +            18 => 'ISO 1600',
      +            19 => 'ISO 2000',
      +            21 => 'ISO 2500',
      +            22 => 'ISO 3200',
      +            23 => 'ISO 4000',
      +            25 => 'ISO 5000',
      +            26 => 'ISO 6400',
      +            27 => 'ISO 8000',
      +            29 => 'ISO 10000',
      +            30 => 'ISO 12800',
      +            31 => 'ISO 16000',
      +            33 => 'ISO 20000',
      +            34 => 'ISO 25600',
      +            39 => 'ISO Hi 0.3',
      +            40 => 'ISO Hi 0.5',
      +            41 => 'ISO Hi 0.7',
      +            42 => 'ISO Hi 1.0',
      +            43 => 'ISO Hi 2.0',
      +        },
      +        %infoZ7,
      +    }],
      +    0x003 => { # (D6/Z7_2)
      +        Name => 'ISOAutoShutterTime',
      +        PrintConv => {
      +            1 => 'Auto (Slowest)',
      +            2 => 'Auto (Slower)',
      +            3 => 'Auto',
      +            4 => 'Auto (Faster)',
      +            5 => 'Auto (Fastest)',
      +            6 => '1/4000 s',
      +            7 => '1/3200 s',
      +            8 => '1/2500 s',
      +            9 => '1/2000 s',
      +            10 => '1/1600 s',
      +            11 => '1/1250 s',
      +            12 => '1/1000 s',
      +            13 => '1/800 s',
      +            14 => '1/640 s',
      +            15 => '1/500 s',
      +            16 => '1/400 s',
      +            17 => '1/320 s',
      +            18 => '1/250 s',
      +            19 => '1/200 s',
      +            20 => '1/160 s',
      +            21 => '1/125 s',
      +            22 => '1/100 s',
      +            23 => '1/80 s',
      +            24 => '1/60 s',
      +            25 => '1/50 s',
      +            26 => '1/40 s',
      +            27 => '1/30 s',
      +            28 => '1/25 s',
      +            29 => '1/20 s',
      +            30 => '1/15 s',
      +            31 => '1/13 s',
      +            32 => '1/10 s',
      +            33 => '1/8 s',
      +            34 => '1/6 s',
      +            35 => '1/5 s',
      +            36 => '1/4 s',
      +            37 => '1/3 s',
      +            38 => '1/2.5 s',
      +            39 => '1/2 s',
      +            40 => '1/1.6 s',
      +            41 => '1/1.3 s',
      +            42 => '1 s',
      +            43 => '1.3 s',
      +            44 => '1.6 s',
      +            45 => '2 s',
      +            46 => '2.5 s',
      +            47 => '3 s',
      +            48 => '4 s',
      +            49 => '5 s',
      +            50 => '6 s',
      +            51 => '8 s',
      +            52 => '10 s',
      +            53 => '13 s',
      +            54 => '15 s',
      +            55 => '20 s',
      +            56 => '25 s',
      +            57 => '30 s',
      +        },
      +    },
      +    0x00b => { Name => 'FlickerReductionShooting', PrintConv => \%enableDisable }, # (D6/Z7_2)
      +    0x00c => { Name => 'FlickerReductionIndicator',PrintConv => \%enableDisable }, # (D6)
      +    0x00d => [{
      +        Name => 'MovieISOAutoHiLimit',
      +        PrintConv => \%iSOAutoHiLimitD6,
      +        %infoD6,
      +    },{
      +        Name => 'MovieISOAutoHiLimit',
      +        PrintConv => {
      +            1 => 'ISO 200',
      +            2 => 'ISO 250',
      +            4 => 'ISO 320',
      +            5 => 'ISO 400',
      +            6 => 'ISO 500',
      +            8 => 'ISO 640',
      +            9 => 'ISO 800',
      +            10 => 'ISO 1000',
      +            12 => 'ISO 1250',
      +            13 => 'ISO 1600',
      +            14 => 'ISO 2000',
      +            16 => 'ISO 2500',
      +            17 => 'ISO 3200',
      +            18 => 'ISO 4000',
      +            20 => 'ISO 5000',
      +            21 => 'ISO 6400',
      +            22 => 'ISO 8000',
      +            24 => 'ISO 10000',
      +            25 => 'ISO 12800',
      +            26 => 'ISO 16000',
      +            28 => 'ISO 20000',
      +            29 => 'ISO 25600',
      +            34 => 'ISO Hi 0.3',
      +            35 => 'ISO Hi 0.5',
      +            36 => 'ISO Hi 0.7',
      +            37 => 'ISO Hi 1.0',
      +            38 => 'ISO Hi 2.0',
      +        },
      +        %infoZ7,
      +    }],
      +    0x00e => { Name => 'MovieISOAutoControlManualMode',PrintConv => \%onOff }, # (D6/Z7_2)
      +    0x00f => { Name => 'MovieWhiteBalanceSameAsPhoto', PrintConv => \%yesNo }, # (D6/Z7_2)
      +    0x01d => [{ # CSa1 (D6)
      +        Name => 'AF-CPrioritySel',
      +        PrintConv => { # valid for cameras with 4 options for CS1, otherwise 1=Release, 2=Focus
      +            1 => 'Release',
      +            2 => 'Release + Focus',
      +            3 => 'Focus + Release',
      +            4 => 'Focus',
      +        },
      +        %infoD6,
      +    },{ # CSa1 (Z7_2)
      +        Name => 'AF-CPrioritySel',
      +        PrintConv => \%releaseFocus,
      +        %infoZSeries,
      +    }],
      +    0x01e => { Name => 'AF-SPrioritySel',       PrintConv => \%releaseFocus }, # CSa2 (D6), CSa2 (Z7_2)
      +    0x020 => [{ # CSa4 (D6)
      +        Name => 'AFPointSel',
      +        PrintConv => {
      +            1 => '105 Points',
      +            2 => '27 Points',
      +            3 => '15 Points',
      +        },
      +        %infoD6,
      +    },{ # CSa4 (Z7_2)
      +        Name => 'AFPointSel',
      +        PrintConv => { 1 => 'Use All', 2 => 'Use Half' },
      +        %infoZSeries,
      +    }],
      +    0x022 => { Name => 'AFActivation',          PrintConv => { 1 => 'Shutter/AF-On', 2 => 'AF-On Only' } }, # CSa6-a (D6/Z7_2) (missing enable/disable out of focus release) # (D6)
      +    0x023 => { Name => 'FocusPointWrap',        PrintConv => { 1 => 'Wrap', 2 => 'No Wrap' } }, # CSa16 (D6), CSa8 (Z7_2)
      +    0x025 => { # CSa17-a (D6), CSa9-a (Z7_2)
      +        Name => 'ManualFocusPointIllumination',
      +        PrintConv => {
      +            1 => 'On',
      +            2 => 'On During Focus Point Selection Only',
      +        },
      +    },
      +    0x026 => { Name => 'AF-AssistIlluminator',      PrintConv => \%onOff }, # CSa11 (Z7_2)
      +    0x027 => { Name => 'ManualFocusRingInAFMode',   PrintConv => \%onOff }, # CSa12 (D6,Z7_2) capability documented in manual, but visibility (& ability to test) requires a compatible lens
      +    0x029 => { Name => 'ISOStepSize',               PrintConv => \%thirdHalfFull },     # CSb1 (D6)
      +    0x02a => { Name => 'ExposureControlStepSize',   PrintConv => \%thirdHalfFull }, # CSb2 (D6), CSb1 (Z7_2)
      +    0x02b => { # CSb4 (D6), CSb2 (Z7_2)
      +        Name => 'EasyExposureCompensation',
      +        PrintConv => {
      +            1 => 'On (auto reset)',
      +            2 => 'On',
      +            3 => 'Off',
      +        },
      +    },
      +    0x02c => { Name => 'MatrixMetering', PrintConv => { 1 => 'Face Detection On', 2 => 'Face Detection Off' } }, # CSb5 (D6)
      +    0x02d => [{ # CSb6 (D6)
      +        Name => 'CenterWeightedAreaSize',
      +        PrintConv => {
      +            1 => '8 mm',
      +            2 => '12 mm',
      +            3 => '15 mm',
      +            4 => '20 mm',
      +            5 => 'Average',
      +        },
      +        %infoD6
      +    },{ # CSb3 (Z7_2)
      +        Name => 'CenterWeightedAreaSize',
      +        PrintConv => { 1 => '12 mm', 2 => 'Average' },
      +        %infoZSeries,
      +    }],
      +    0x02f => { # CSb7-a (D6), CSb4-a (Z7_2)
      +        Name => 'FineTuneOptMatrixMetering',
      +        ValueConv => '($val - 7) / 6',
      +        ValueConvInv => 'int($val*6+7)',
      +        PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
      +        PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    0x030 => { # CSb7-b (D6), CSb4-b (Z7_2)
      +        Name => 'FineTuneOptCenterWeighted',
      +        ValueConv => '($val - 7) / 6',
      +        ValueConvInv => 'int($val*6+7)',
      +        PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
      +        PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    0x031 => { # CSb7-c (D6), CSb4-c (Z7_2)
      +        Name => 'FineTuneOptSpotMetering',
      +        ValueConv => '($val - 7) / 6',
      +        ValueConvInv => 'int($val*6+7)',
      +        PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
      +        PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    0x032 => { # CSb7-d (D6), CSb4-d (Z7_2)
      +        Name => 'FineTuneOptHighlightWeighted',
      +        ValueConv => '($val - 7) / 6',
      +        ValueConvInv => 'int($val*6+7)',
      +        PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
      +        PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    0x033 => { # CSc1 (D6), CSc1 (Z7_2)
      +        Name => 'ShutterReleaseButtonAE-L',
      +        PrintConv => {
      +            1 => 'On (Half Press)',
      +            2 => 'On (Burst Mode)',
      +            3 => 'Off',
      +        },
      +    },
      +    0x034 => [{ # CSc2 (D6)
      +        Name => 'StandbyMonitorOffTime',
      +        PrintConv => {
      +            1 => '4 s',
      +            2 => '6 s',
      +            3 => '10 s',
      +            4 => '30 s',
      +            5 => '1 min',
      +            6 => '5 min',
      +            7 => '10 min',
      +            8 => '30 min',
      +            9 => 'No Limit',
      +        },
      +        %infoD6,
      +    },{ # CSc4-d (Z7_2)
      +        Name => 'StandbyMonitorOffTime',
      +        PrintConv => {
      +            1 => '10 s',
      +            2 => '20 s',
      +            3 => '30 s',
      +            4 => '1 min',
      +            5 => '5 min',
      +            6 => '10 min',
      +            7 => '30 min',
      +            8 => 'No Limit',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x035 => { # CSc3-a (D6), CSc2-a (Z7_2)
      +        Name => 'SelfTimerTime',
      +        PrintConv => {
      +            1 => '2 s',
      +            2 => '5 s',
      +            3 => '10 s',
      +            4 => '20 s',
      +        },
      +    },
      +    0x036 => { Name => 'SelfTimerShotCount', ValueConv => '10 - $val', ValueConvInv => '10 + $val' }, # CSc3-b (D6), CSc2-b (Z7_2)
      +    0x037 => { # CSc3-c (D6), CSc2-c (Z7_2)
      +        Name => 'SelfTimerShotInterval',
      +        PrintConv => {
      +            1 => '0.5 s',
      +            2 => '1 s',
      +            3 => '2 s',
      +            4 => '3 s',
      +        },
      +    },
      +    0x038 => { Name => 'PlaybackMonitorOffTime',    PrintConv => \%times4s10s20s1m5m20m }, # CSc4-a (D6), CSc3-a (Z7_2)
      +    0x039 => { Name => 'MenuMonitorOffTime',        PrintConv => \%times4s10s20s1m5m20m }, # CSc4-b (D6), CSc3-b (Z7_2)
      +    0x03a => { Name => 'ShootingInfoMonitorOffTime',PrintConv => \%times4s10s20s1m5m20m }, # CSc4-c (D6)
      +    0x03b => { # CSc4-d (D6), CSc3-c (Z7_2)
      +        Name => 'ImageReviewMonitorOffTime',
      +        PrintConv => {
      +            1 => '2 s',
      +            2 => '4 s',
      +            3 => '10 s',
      +            4 => '20 s',
      +            5 => '1 min',
      +            6 => '5 min',
      +            7 => '10 min',
      +        },
      +    },
      +    0x03c => { # CSc4-e (D6)
      +        Name => 'LiveViewMonitorOffTime',
      +        PrintConv => {
      +            1 => '5 min',
      +            2 => '10 min',
      +            3 => '15 min',
      +            4 => '20 min',
      +            5 => '30 min',
      +            6 => 'No Limit',
      +        },
      +    },
      +    0x03e => { Name => 'CLModeShootingSpeed',       ValueConv => '6 - $val', ValueConvInv => '6 + $val', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1 (Z7_2)
      +    0x03f => { Name => 'MaxContinuousRelease' }, # CSd2       # values: 1-200 # (D6/Z7_2)
      +    0x040 => { # CSd5 (D6), CSd4 (Z7_2)
      +        Name => 'ExposureDelayMode',
      +        PrintConv => {
      +            1 => '3 s',
      +            2 => '2 s',
      +            3 => '1 s',
      +            4 => '0.5 s',
      +            5 => '0.2 s',
      +            6 => 'Off',
      +        },
      +    },
      +    0x041 => { Name => 'ElectronicFront-CurtainShutter',PrintConv => \%onOff }, # CSd6 (D6)
      +    0x042 => { Name => 'FileNumberSequence',        PrintConv => \%onOff }, # CSd9 (D6), CSd8 (Z7_2)
      +    0x043 => { Name => 'FramingGridDisplay',        PrintConv => \%onOff }, # CSd11 (D6), CSd10 (Z7_2), new tag with implementation of NikonSettings # (Z7_2)
      +    0x045 => { Name => 'LCDIllumination',           PrintConv => \%onOff }, # CSd13 (D6)
      +    0x046 => { Name => 'OpticalVR',                 PrintConv => \%onOff }, # CSd15 (D6)
      +    0x047 => [{ # CSe1 (D6)
      +        Name => 'FlashSyncSpeed',
      +        PrintConv => {
      +            1 => '1/250 s (auto FP)',
      +            2 => '1/250 s',
      +            3 => '1/200 s',
      +            4 => '1/160 s',
      +            5 => '1/125 s',
      +            6 => '1/100 s',
      +            7 => '1/80 s',
      +            8 => '1/60 s',
      +        },
      +        %infoD6,
      +    },{ # CSe1 (Z7_2)
      +        Name => 'FlashSyncSpeed',
      +        PrintConv => {
      +            1 => '1/200 s (auto FP)',
      +            2 => '1/200 s',
      +            3 => '1/160 s',
      +            4 => '1/125 s',
      +            5 => '1/100 s',
      +            6 => '1/80 s',
      +            7 => '1/60 s',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x048 => { # CSe2 (D6/Z7_2)
      +        Name => 'FlashShutterSpeed',
      +        PrintConv => {
      +            1 => '1/60 s',
      +            2 => '1/30 s',
      +            3 => '1/15 s',
      +            4 => '1/8 s',
      +            5 => '1/4 s',
      +            6 => '1/2 s',
      +            7 => '1 s',
      +            8 => '2 s',
      +        },
      +    },
      +    0x049 => { Name => 'FlashExposureCompArea', PrintConv => { 1 => 'Entire Frame', 2 => 'Background Only' } }, # CSe3 (D6/Z7_2)
      +    0x04a => { # CSe4 (D6/Z7_2)
      +        Name => 'AutoFlashISOSensitivity',
      +        PrintConv => {
      +            1 => 'Subject and Background',
      +            2 => 'Subject Only',
      +        },
      +    },
      +    0x051 => { # CSf3-l (D6)
      +        Name => 'AssignBktButton',
      +        PrintConv => {
      +            1 => 'Auto Bracketing',
      +            2 => 'Multiple Exposure',
      +            3 => 'HDR (high dynamic range)',
      +            4 => 'None',
      +        },
      +    },
      +    0x052 => [{ # CSf3-m (D6)
      +        Name => 'AssignMovieRecordButton',
      +        PrintConv => {
      +            1 => 'Voice Memo',
      +            2 => 'Photo Shooting Bank',
      +            3 => 'Exposure Mode',
      +            4 => 'AF Mode/AF Area Mode',
      +            5 => 'Image Area',
      +            6 => 'Shutter/Aperture Lock',
      +            7 => 'None',
      +        },
      +        %infoD6,
      +    },{ # CSf2-f (Z7_2)
      +        Name => 'AssignMovieRecordButton',
      +        PrintConv => {
      +            1 => 'AE Lock (hold)',
      +            2 => 'AE Lock (reset on release)',
      +            3 => 'Preview',
      +            4 => '+NEF(RAW)',
      +            5 => 'LiveView Info Display On/Off',
      +            6 => 'Grid Display',
      +            7 => 'Zoom (Low)',
      +            8 => 'Zoom (1:1)',
      +            9 => 'Zoom (High)',
      +            10 => 'My Menu',
      +            11 => 'My Menu Top Item',
      +            12 => 'Image Area',
      +            13 => 'Image Quality',
      +            14 => 'White Balance',
      +            15 => 'Picture Control',
      +            16 => 'Active-D Lighting',
      +            17 => 'Metering',
      +            18 => 'Flash Mode',
      +            19 => 'Focus Mode',
      +            20 => 'Auto Bracketing',
      +            21 => 'Multiple Exposure',
      +            22 => 'HDR',
      +            23 => 'Exposure Delay Mode',
      +            24 => 'Shutter/Aperture Lock',
      +            25 => 'Non-CPU Lens',
      +            26 => 'None',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x053 => [{ # CSf4-a (D6)
      +        Name => 'MultiSelectorShootMode',
      +        PrintConv => {
      +            1 => 'Select Center Focus Point',
      +            2 => 'Preset Focus Point - Press To Recall',
      +            3 => 'Preset Focus Point - Hold To Recall',
      +            4 => 'None',
      +        },
      +        %infoD6,
      +    },{ # CSf3-a (Z7_2) also called the OK button on this camera
      +        Name => 'MultiSelectorShootMode',
      +        PrintConv => {
      +            1 => 'Select Center Focus Point',
      +            2 => 'Zoom (Low)',
      +            3 => 'Zoom (1:1)',
      +            4 => 'Zoom (High)',
      +            5 => 'None',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x054 => [{ # CSf4-c (D6)
      +        Name => 'MultiSelectorPlaybackMode',
      +        PrintConv => {
      +            1 => 'Filtered Playback',
      +            2 => 'View Histograms',
      +            3 => 'Zoom (Low)',
      +            4 => 'Zoom (1:1)',
      +            5 => 'Zoom (High)',
      +            6 => 'Choose Folder',
      +        },
      +        %infoD6,
      +    },{ # CSf3-b (Z7_2) # these decodes are correct.  However, a new camera (or one following a 'reset all settings') will report Zoom (Low), despite the camera exhibiting the expected behavior (Zoom 1:1).  Any change to CSf3-b corrects the reporting.
      +        Name => 'MultiSelectorPlaybackMode',
      +        PrintConv => {
      +            1 => 'Thumbnail On/Off',
      +            2 => 'View Histograms',
      +            3 => 'Zoom (Low)',
      +            4 => 'Zoom (1:1)',
      +            5 => 'Zoom (High)',
      +            6 => 'Choose Folder',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x056 => { # CSf4-b (D6)
      +        Name => 'MultiSelectorLiveView',
      +        PrintConv => {
      +            1 => 'Select Center Focus Point',
      +            2 => 'Zoom (Low)',
      +            3 => 'Zoom (1:1)',
      +            4 => 'Zoom (High)',
      +            5 => 'None',
      +        },
      +    },
      +    0x058 => { # CSf6-a-1 and CSf6-a-2 (D6), CSf5-a-1 and CSf5-a-2 (Z7_2), Previous cameras reported these 2 in a single tag (CmdDialsReverseRotation).  Blend the separate settings together to match extant tag name and values
      +        Name => 'CmdDialsReverseRotExposureComp',
      +        RawConv => '$$self{CmdDialsReverseRotExposureComp} = $val',
      +        Unknown => 1,
      +    },
      +    0x059 => { # CSf6-b-1 and  CSf6-b-2 (D6), CSf5-b-1 and  CSf5-b-2 (Z7_2), Previous cameras reported these 2 in a single tag (CmdDialsChangeMainSub).  Blend the separate settings together to match extant tag name and values
      +        Name => 'CmdDialsChangeMainSubExposure',
      +        RawConv => '$$self{CmdDialsChangeMainSubExposure} = $val',
      +        Unknown => 1,
      +    },
      +    0x05a => [{ # CSf6-b-1 and CSf6-b-2 (D6), CSf5-b-1 and CSf5-b-2 (Z7_2), (continued from above)
      +        Name => 'CmdDialsChangeMainSub',
      +        Condition => '$$self{CmdDialsChangeMainSubExposure} and $$self{CmdDialsChangeMainSubExposure} == 1',
      +        PrintConv => {
      +            1 => 'Autofocus On, Exposure On',
      +            2 => 'Autofocus Off, Exposure On',
      +        },
      +    },{
      +        Name => 'CmdDialsChangeMainSub',
      +        Condition => '$$self{CmdDialsChangeMainSubExposure} and $$self{CmdDialsChangeMainSubExposure} == 2',
      +        PrintConv => {
      +            1 => 'Autofocus On, Exposure On (Mode A)',
      +            2 => 'Autofocus Off, Exposure On (Mode A)',
      +        },
      +    },{
      +        Name => 'CmdDialsChangeMainSub',
      +        PrintConv => {
      +            1 => 'Autofocus On, Exposure Off',
      +            2 => 'Autofocus Off, Exposure Off',
      +        },
      +    }],
      +    0x05b => { Name => 'CmdDialsMenuAndPlayback', PrintConv => { 1 => 'On', 2 => 'On (Image Review Excluded)', 3 => 'Off' } }, # CSf5-c (D6), CSf5-c (Z7_2)
      +    0x05c => { # CSf6-d (D6), CSf5-d (Z7_2)
      +        Name => 'SubDialFrameAdvance',
      +        PrintConv => {
      +            1 => '10 Frames',
      +            2 => '50 Frames',
      +            3 => 'Rating',
      +            4 => 'Protect',
      +            5 => 'Stills Only',
      +            6 => 'Movies Only',
      +            7 => 'Folder',
      +        },
      +    },
      +    0x05d => { Name => 'ReleaseButtonToUseDial',    PrintConv => \%yesNo }, # CSf8 (D6), CSf6 (Z7_2)
      +    0x05e => { Name => 'ReverseIndicators',         PrintConv => { 1 => '+ 0 -', 2 => '- 0 +' } }, # CSf9 (D6), CSf7 (Z7_2)
      +    0x062 => { # CSg2-f (D6), CSg2-e (Z7_2)
      +        Name => 'MovieShutterButton',
      +        PrintConv => {
      +            1 => 'Take Photo',
      +            2 => 'Record Movie',
      +        },
      +    },
      +    0x063 => { # Settings menu # (D6,Z7_2)
      +        Name => 'Language',
      +        PrintConv => {
      +            5 => 'English',
      +            6 => 'Spanish',
      +            8 => 'French',
      +            15 => 'Portuguese (Br)',
      +        },
      +    },
      +    0x06c => [{
      +        Name => 'ShootingInfoDisplay',
      +        PrintConv => {
      +            1 => 'Auto',
      +            2 => 'Manual (dark on light)',
      +            3 => 'Manual (light on dark)',
      +        },
      +        %infoD6,
      +    },{
      +        Name => 'ShootingInfoDisplay',
      +        PrintConv => {
      +            1 => 'Manual (dark on light)',
      +            2 => 'Manual (light on dark)',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x074 => { Name => 'FlickAdvanceDirection', PrintConv => { 1 => 'Right to Left', 2 => 'Left to Right' } }, # CSf12-3 (D6)
      +    0x075 => { # Settings menu # (D6,Z7_2)
      +        Name => 'HDMIOutputResolution',
      +        PrintConv => {
      +            1 => 'Auto',
      +            2 => '2160p',
      +            3 => '1080p',
      +            4 => '1080i',
      +            5 => '720p',
      +            6 => '576p',
      +            7 => '480p',
      +        },
      +    },
      +    0x077 => { # Settings menu # (D6,Z7_2)
      +        Name => 'HDMIOutputRange',
      +        PrintConv => {
      +            1 => 'Auto',
      +            2 => 'Limit',
      +            3 => 'Full',
      +        },
      +    },
      +    0x080 => [{
      +        Name => 'RemoteFuncButton',
      +        PrintConv => {
      +            1 => 'AF-On',
      +            2 => 'AF Lock Only',
      +            3 => 'AE Lock (reset on release)',
      +            4 => 'AE Lock Only',
      +            5 => 'AE/AF Lock',
      +            6 => 'FV Lock',
      +            7 => 'Flash Disable/Enable',
      +            8 => 'Preview',
      +            9 => '+NEF(RAW)',
      +            10 => 'LiveView Info Display On/Off',
      +            11 => 'Recall Shooting Functions',
      +            12 => 'None',
      +        },
      +        %infoD6,
      +    },{
      +        Name => 'RemoteFuncButton',
      +        PrintConv => {
      +            1 => 'AF-On',
      +            2 => 'AF Lock Only',
      +            3 => 'AE Lock (reset on release)',
      +            4 => 'AE Lock Only',
      +            5 => 'AE/AF Lock',
      +            6 => 'FV Lock',
      +            7 => 'Flash Disable/Enable',
      +            8 => 'Preview',
      +            9 => '+NEF(RAW)',
      +            10 => 'None',
      +            11 => 'LiveView Info Display On/Off',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x08b => [{ # CSf6-a-1 and CSf6-a-2 (D6), CSf5-a-1 and CSf5-a-2 (Z7_2), (continued from above)
      +        Name => 'CmdDialsReverseRotation',
      +        Condition => '$$self{CmdDialsReverseRotExposureComp} and $$self{CmdDialsReverseRotExposureComp} == 1',
      +        PrintConv => {
      +            1 => 'No',
      +            2 => 'Shutter Speed & Aperture',
      +        },
      +    },{
      +        Name => 'CmdDialsReverseRotation',
      +        PrintConv => {
      +            1 => 'Exposure Compensation',
      +            2 => 'Exposure Compensation, Shutter Speed & Aperture',
      +        },
      +    }],
      +    0x08d => { # CSd10-b (D6), CSd11-b (Z7_2)
      +        Name => 'FocusPeakingHighlightColor',
      +        PrintConv => {
      +            1 => 'Red',
      +            2 => 'Yellow',
      +            3 => 'Blue',
      +            4 => 'White',
      +        },
      +    },
      +    0x08e => { Name => 'ContinuousModeDisplay',     PrintConv => \%onOff }, # CSd14 (D6), CSd12 (Z7_2)
      +    0x08f => { Name => 'ShutterSpeedLock',          PrintConv => \%onOff }, # CSf54-a (D6), CSf4-a (Z7_2)
      +    0x090 => { Name => 'ApertureLock',              PrintConv => \%onOff }, # CSf5-b (D6), CSf4-b (Z7_2 could not select)
      +    0x091 => { # CSg4-b (D6), CSg6-b (Z7_2)
      +        Name => 'MovieHighlightDisplayThreshold',
      +        PrintConv => {
      +            1 => '255',
      +            2 => '248',
      +            3 => '235',
      +            4 => '224',
      +            5 => '213',
      +            6 => '202',
      +            7 => '191',
      +            8 => '180',
      +        },
      +    },
      +    0x092 => { Name => 'HDMIExternalRecorder',     PrintConv => \%onOff }, # Settings Menu/HDMI/Advanced entry (D6 & Z7_2)
      +    0x093 => { # CSa3-a (D6), CSa3 (Z7_2)
      +        Name => 'BlockShotAFResponse',
      +        PrintConv => {
      +            1 => '1 (Quick)',
      +            2 => '2',
      +            3 => '3 (Normal)',
      +            4 => '4',
      +            5 => '5 (Delay)',
      +        },
      +    },
      +    0x094 => { Name => 'SubjectMotion', PrintConv => { 1 => 'Erratic', 2 => 'Steady' } }, # CSa3-b (D6)
      +    0x095 => { Name => 'Three-DTrackingFaceDetection', PrintConv => \%onOff }, # CSa8 (D6)
      +    0x097 => [{ # CSa5 (D6)
      +        Name => 'StoreByOrientation',
      +        PrintConv => {
      +            1 => 'Focus Point',
      +            2 => 'Focus Point and AF-area mode',
      +            3 => 'Off',
      +        },
      +        %infoD6,
      +    },{ # CSa5 (Z7_2)
      +        Name => 'StoreByOrientation',
      +        PrintConv => {
      +            1 => 'Focus Point',
      +            2 => 'Off',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x099 => { Name => 'DynamicAreaAFAssist',PrintConv => \%onOff }, # CSa17-c (D6), CSa9-b (Z7_2)
      +    0x09a => { Name => 'ExposureCompStepSize',      PrintConv => \%thirdHalfFull }, # CSb3 (D6)
      +    0x09b => { Name => 'SyncReleaseMode',           PrintConv => { 1 => 'Sync', 2 => 'No Sync' } }, # CSd4 (D6), CSd3 (Z7_2)
      +    0x09c => { Name => 'ModelingFlash',             PrintConv => \%onOff }, # CSe6 (D6), CSe5 (Z7_2)
      +    0x09d => { # CSe7 (D6), CSe6 (Z7_2)
      +        Name => 'AutoBracketModeM',
      +        PrintConv => {
      +            1 => 'Flash/Speed',
      +            2 => 'Flash/Speed/Aperture',
      +            3 => 'Flash/Aperture',
      +            4 => 'Flash Only',
      +        },
      +    },
      +    0x09e => { Name => 'PreviewButton',             PrintConv => \%previewButtonD6 }, # CSf3-a (D6)
      +    0x0a0 => [{ # CSf3-b (D6)
      +        Name => 'Func1Button',
      +        PrintConv => \%previewButtonD6,
      +        %infoD6,
      +    },{ # CSf2-a (Z7_2)
      +        Name => 'Func1Button',
      +        PrintConv => \%funcButtonZ7m2,
      +        %infoZSeries,
      +    }],
      +    0x0a2 => [{ # CSf3-c (D6)
      +        Name => 'Func2Button',
      +        PrintConv => \%previewButtonD6,
      +        %infoD6,
      +    },{ # CSf2-b (Z7_2)
      +        Name => 'Func2Button',
      +        PrintConv => \%funcButtonZ7m2,
      +        %infoZSeries,
      +    }],
      +    0x0a3 => [{ # CSf3-f (D6)
      +        Name => 'AF-OnButton',
      +        PrintConv => {
      +            1 => 'AF-AreaMode S',
      +            2 => 'AF-AreaMode D9',
      +            3 => 'AF-AreaMode D25',
      +            4 => 'AF-AreaMode D49',
      +            5 => 'AF-AreaMode D105',
      +            6 => 'AF-AreaMode 3D',
      +            7 => 'AF-AreaMode Group',
      +            8 => 'AF-AreaMode Group C1',
      +            9 => 'AF-AreaMode Group C2',
      +            10 => 'AF-AreaMode Auto Area',
      +            11 => 'AF-AreaMode + AF-On S',
      +            12 => 'AF-AreaMode + AF-On D9',
      +            13 => 'AF-AreaMode + AF-On D25',
      +            14 => 'AF-AreaMode + AF-On D49',
      +            15 => 'AF-AreaMode + AF-On D105',
      +            16 => 'AF-AreaMode + AF-On 3D',
      +            17 => 'AF-AreaMode + AF-On Group',
      +            18 => 'AF-AreaMode + AF-On Group C1',
      +            19 => 'AF-AreaMode + AF-On Group C2',
      +            20 => 'AF-AreaMode + AF-On Auto Area',
      +            21 => 'AF-On',
      +            22 => 'AF Lock Only',
      +            23 => 'AE Lock (hold)',
      +            24 => 'AE/WB Lock (hold)',
      +            25 => 'AE Lock (reset on release)',
      +            26 => 'AE Lock Only',
      +            27 => 'AE/AF Lock',
      +            28 => 'Recall Shooting Functions',
      +            29 => 'None',
      +        },
      +        %infoD6,
      +    },{ # CSf2-c (Z7_2)
      +        Name => 'AF-OnButton',
      +        PrintConv => {
      +            1 => 'Center Focus Point',
      +            2 => 'AF-On',
      +            3 => 'AF Lock Only',
      +            4 => 'AE Lock (hold)',
      +            5 => 'AE Lock (reset on release)',
      +            6 => 'AE Lock Only',
      +            7 => 'AE/AF Lock',
      +            8 => 'LiveView Info Display On/Off',
      +            9 => 'Zoom (Low)',
      +            10 => 'Zoom (1:1)',
      +            11 => 'Zoom (High)',
      +            12 => 'None'
      +        },
      +        %infoZSeries,
      +    }],
      +    0x0a4 => { Name => 'SubSelector', PrintConv => \%tagSubSelector }, # CSf3-g-1 # (D6), CSf2-d-1 # (Z7_2)
      +    0x0a5 => [{ # CSf3-h (D6)
      +        Name => 'SubSelectorCenter',
      +        PrintConv => {
      +            1 => 'Preset Focus Point - Press To Recall',
      +            2 => 'Preset Focus Point - Hold To Recall',
      +            3 => 'Center Focus Point',
      +            4 => 'AF-AreaMode S',
      +            5 => 'AF-AreaMode D9',
      +            6 => 'AF-AreaMode D25',
      +            7 => 'AF-AreaMode D49',
      +            8 => 'AF-AreaMode D105',
      +            9 => 'AF-AreaMode 3D',
      +            10 => 'AF-AreaMode Group',
      +            11 => 'AF-AreaMode Group C1',
      +            12 => 'AF-AreaMode Group C2',
      +            13 => 'AF-AreaMode Auto Area',
      +            14 => 'AF-AreaMode + AF-On S',
      +            15 => 'AF-AreaMode + AF-On D9',
      +            16 => 'AF-AreaMode + AF-On D25',
      +            17 => 'AF-AreaMode + AF-On D49',
      +            18 => 'AF-AreaMode + AF-On D105',
      +            19 => 'AF-AreaMode + AF-On 3D',
      +            20 => 'AF-AreaMode + AF-On Group',
      +            21 => 'AF-AreaMode + AF-On Group C1',
      +            22 => 'AF-AreaMode + AF-On Group C2',
      +            23 => 'AF-AreaMode + AF-On Auto Area',
      +            24 => 'AF-On',
      +            25 => 'AF Lock Only',
      +            26 => 'AE Lock (hold)',
      +            27 => 'AE/WB Lock (hold)',
      +            28 => 'AE Lock (reset on release)',
      +            29 => 'AE Lock Only',
      +            30 => 'AE/AF Lock',
      +            31 => 'FV Lock',
      +            32 => 'Flash Disable/Enable',
      +            33 => 'Preview',
      +            34 => 'Recall Shooting Functions',
      +            35 => 'Bracketing Burst',
      +            36 => 'Synchronized Release (Master)',
      +            37 => 'Synchronized Release (Remote)',
      +            38 => 'None',
      +        },
      +        %infoD6,
      +    },{ # CSf2-e (Z7_2)
      +        Name => 'SubSelectorCenter',
      +        PrintConv => {
      +            1 => 'Center Focus Point',
      +            2 => 'AF-On',
      +            3 => 'AF Lock Only',
      +            4 => 'AE Lock (hold)',
      +            5 => 'AE Lock (reset on release)',
      +            6 => 'AE Lock Only',
      +            7 => 'AE/AF Lock',
      +            8 => 'FV Lock',
      +            9 => 'Flash Disable/Enable',
      +            10 => 'Preview',
      +            11 => 'Matrix Metering',
      +            12 => 'Center-weighted Metering',
      +            13 => 'Spot Metering',
      +            14 => 'Highlight-weighted Metering',
      +            15 => 'Bracketing Burst',
      +            16 => 'Synchronized Release (Master)',
      +            17 => 'Synchronized Release (Remote)',
      +            20 => '+NEF(RAW)',
      +            21 => 'LiveView Info Display On/Off',
      +            22 => 'Grid Display',
      +            23 => 'Image Area',
      +            24 => 'Non-CPU Lens',
      +            25 => 'None',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x0a7 => [{ # CSf3-n (D6)
      +        Name => 'LensFunc1Button',
      +        PrintConv => {
      +            1 => 'Preset Focus Point - Press To Recall',
      +            2 => 'Preset Focus Point - Hold To Recall',
      +            3 => 'AF-AreaMode S',
      +            4 => 'AF-AreaMode D9',
      +            5 => 'AF-AreaMode D25',
      +            6 => 'AF-AreaMode D49',
      +            7 => 'AF-AreaMode D105',
      +            8 => 'AF-AreaMode 3D',
      +            9 => 'AF-AreaMode Group',
      +            10 => 'AF-AreaMode Group C1',
      +            11 => 'AF-AreaMode Group C2',
      +            12 => 'AF-AreaMode Auto Area',
      +            13 => 'AF-AreaMode + AF-On S',
      +            14 => 'AF-AreaMode + AF-On D9',
      +            15 => 'AF-AreaMode + AF-On D25',
      +            16 => 'AF-AreaMode + AF-On D49',
      +            17 => 'AF-AreaMode + AF-On D105',
      +            18 => 'AF-AreaMode + AF-On 3D',
      +            19 => 'AF-AreaMode + AF-On Group',
      +            20 => 'AF-AreaMode + AF-On Group C1',
      +            21 => 'AF-AreaMode + AF-On Group C2',
      +            22 => 'AF-AreaMode + AF-On Auto Area',
      +            23 => 'AF-On',
      +            24 => 'AF Lock Only',
      +            25 => 'AE Lock Only',
      +            26 => 'AE/AF Lock',
      +            27 => 'Flash Disable/Enable',
      +            28 => 'Recall Shooting Functions',
      +            29 => 'Synchronized Release (Master)',
      +            30 => 'Synchronized Release (Remote)',
      +        },
      +        %infoD6,
      +    },{ # CSf2-g (Z7_2)
      +        Name => 'LensFunc1Button',
      +        PrintConv => \%lensFuncButtonZ7m2,
      +        %infoZSeries,
      +    }],
      +    0x0a8 => { Name => 'CmdDialsApertureSetting',   PrintConv => { 1 => 'Sub-command Dial', 2 => 'Aperture Ring' } }, # CSf6-c (D6)
      +    0x0a9 => { Name => 'MultiSelector',             PrintConv => \%tagMultiSelector }, # CSf7 (D6)
      +    0x0aa => { # CSf10 (D6)
      +        Name => 'LiveViewButtonOptions',
      +        PrintConv => {
      +            1 => 'Enable',
      +            2 => 'Enable (Standby Timer Active)',
      +            3 => 'Disable',
      +        },
      +    },
      +    0x0ab => { # CSf11 (D6)
      +        Name => 'LightSwitch',
      +        PrintConv => {
      +            1 => 'LCD Backlight',
      +            2 => 'LCD Backlight and Shooting Information',
      +        },
      +    },
      +    0x0b1 => [{ # CSg2-a (D6)
      +        Name => 'MoviePreviewButton',
      +        PrintConv => {
      +            1 => 'Power Aperture (Open)',
      +            2 => 'Exposure Compensation',
      +            3 => 'Grid Display',
      +            4 => 'Zoom (Low)',
      +            5 => 'Zoom (1:1)',
      +            6 => 'Zoom (High)',
      +            7 => 'Image Area',
      +            8 => 'Microphone Sensitivity',
      +            9 => 'None',
      +        },
      +        %infoD6,
      +    },{ # CSg2-a (Z7_2)
      +        Name => 'MovieFunc1Button',
      +        PrintConv => {
      +            1 => 'Power Aperture (Open)',
      +            2 => 'Exposure Compensation',
      +            3 => 'Subject Tracking',
      +            4 => 'LiveView Info Display On/Off',
      +            5 => 'Grid Display',
      +            6 => 'Zoom (Low)',
      +            7 => 'Zoom (1:1)',
      +            8 => 'Zoom (High)',
      +            9 => 'Protect',
      +            10 => 'Image Area',
      +            11 => 'White Balance',
      +            12 => 'Picture Control',
      +            13 => 'Active-D Lighting',
      +            14 => 'Metering',
      +            15 => 'Focus Mode',
      +            16 => 'Microphone Sensitivity',
      +            17 => 'Focus Peaking',
      +            18 => 'Rating (None)',
      +            19 => 'Rating (5)',
      +            20 => 'Rating (4)',
      +            21 => 'Rating (3)',
      +            22 => 'Rating (2)',
      +            23 => 'Rating (1)',    # no mapping for 24 on the Z7_2.  Possibly intended for Rating = 'Candidate for Deletion'?
      +            25 => 'None',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x0b3 => [{ # CSg2-b (D6)
      +        Name => 'MovieFunc1Button',
      +        PrintConv => {
      +            1 => 'Power Aperture (Close)',
      +            2 => 'Exposure Compensation',
      +            3 => 'Grid Display',
      +            4 => 'Zoom (Low)',
      +            5 => 'Zoom (1:1)',
      +            6 => 'Zoom (High)',
      +            7 => 'Image Area',
      +            8 => 'Microphone Sensitivity',
      +            9 => 'None',
      +        },
      +        %infoD6,
      +    },{ # CSg2-b (Z7_2)
      +        Name => 'MovieFunc2Button',
      +        PrintConv => { # TODO:  simplify Func1 and Func2 movies buttons - identical except for the 1st entry
      +            1 => 'Power Aperture (Close)',
      +            2 => 'Exposure Compensation',
      +            3 => 'Subject Tracking',
      +            4 => 'LiveView Info Display On/Off',
      +            5 => 'Grid Display',
      +            6 => 'Zoom (Low)',
      +            7 => 'Zoom (1:1)',
      +            8 => 'Zoom (High)',
      +            9 => 'Protect',
      +            10 => 'Image Area',
      +            11 => 'White Balance',
      +            12 => 'Picture Control',
      +            13 => 'Active-D Lighting',
      +            14 => 'Metering',
      +            15 => 'Focus Mode',
      +            16 => 'Microphone Sensitivity',
      +            17 => 'Focus Peaking',
      +            18 => 'Rating (None)',
      +            19 => 'Rating (5)',
      +            20 => 'Rating (4)',
      +            21 => 'Rating (3)',
      +            22 => 'Rating (2)',
      +            23 => 'Rating (1)',    # no mapping for 24 on the Z7_2.  Possibly intended for Rating = 'Candidate for Deletion'?
      +            25 => 'None',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x0b5 => { # CSg2-c (D6)
      +        Name => 'MovieFunc2Button',
      +        PrintConv => {
      +            1 => 'Grid Display',
      +            2 => 'Zoom (Low)',
      +            3 => 'Zoom (1:1)',
      +            4 => 'Zoom (High)',
      +            5 => 'Image Area',
      +            6 => 'Microphone Sensitivity',
      +            7 => 'None',
      +        },
      +    },
      +    0x0b6 => [{ # CSg2-e (D6)
      +        Name => 'AssignMovieSubselector',
      +        PrintConv => {
      +            1 => 'Center Focus Point',
      +            2 => 'AF Lock Only',
      +            3 => 'AE Lock (hold)',
      +            4 => 'AE/WB Lock (hold)',
      +            5 => 'AE Lock Only',
      +            6 => 'AE/AF Lock',
      +            7 => 'Zoom (Low)',
      +            8 => 'Zoom (1:1)',
      +            9 => 'Zoom (High)',
      +            10 => 'Record Movie',
      +            11 => 'None',
      +        },
      +        %infoD6,
      +    },{ # CSg2-d (Z7_2)
      +        Name => 'AssignMovieSubselector',
      +        PrintConv => {
      +            1 => 'Center Focus Point',
      +            2 => 'AF Lock Only',
      +            3 => 'AE Lock (hold)',
      +            4 => 'AE Lock Only',
      +            5 => 'AE/AF Lock',
      +            6 => 'LiveView Info Display On/Off',
      +            7 => 'Grid Display',
      +            8 => 'Zoom (Low)',
      +            9 => 'Zoom (1:1)',
      +            10 => 'Zoom (High)',
      +            11 => 'Record Movie',
      +            12 => 'Image Area',
      +            13 => 'None',
      +        },
      +        %infoZSeries,
      +    }],
      +    0x0b8 => { Name => 'LimitAFAreaModeSelD9',          PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-a (D6)
      +    0x0b9 => { Name => 'LimitAFAreaModeSelD25',         PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-b (D6)
      +    0x0bc => { Name => 'LimitAFAreaModeSel3D',          PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-e (D6)
      +    0x0bd => { Name => 'LimitAFAreaModeSelGroup',       PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-f (D6)
      +    0x0be => { Name => 'LimitAFAreaModeSelAuto',        PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-i (D6), CSa7-g (Z7_2)
      +  # 0x0bf => { Name => 'LimitSelectableImageArea30x20', PrintConv => \%limitNolimit }, # CSd8-1 (D6) further investigation & testing of CSd8-1 and CSd8-2 required.  The other CSd8 tags are fine.
      +  # 0x0c0 => { Name => 'LimitSelectableImageAreaDX',    PrintConv => \%limitNolimit }, # CSd8-2 (D6) further investigation & testing of CSd8-1 and CSd8-2 required.  The other CSd8 tags are fine.
      +    0x0c1 => { Name => 'LimitSelectableImageArea5To4',  PrintConv => \%limitNolimit, Unknown => 1 }, # CSd8-3 (D6)
      +    0x0c2 => { Name => 'LimitSelectableImageArea1To1',  PrintConv => \%limitNolimit, Unknown => 1 }, # CSd8-4 (D6)
      +  # 0x0d3 => CSf3-g-2 (D6), CSf2-d-2 (Z7_2) SelectorPlaybackRole 'Scroll' and  'Display Next/Previous' (skipped to reduce volume of output)
      +    0x0d4 => { Name => 'PhotoShootingMenuBank',         PrintConv => \%menuBank }, # (D6)
      +    0x0d5 => { Name => 'CustomSettingsBank',            PrintConv => \%menuBank }, # (D6)
      +    0x0d6 => { Name => 'LimitAF-AreaModeSelPinpoint',   PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-a (Z7_2)
      +    0x0d7 => { Name => 'LimitAF-AreaModeSelDynamic',    PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-b (Z7_2)
      +    0x0d8 => { Name => 'LimitAF-AreaModeSelWideAF_S',   PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-c (Z7_2)
      +    0x0d9 => { Name => 'LimitAF-AreaModeSelWideAF_L',   PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-d (Z7_2)
      +    0x0da => { Name => 'LowLightAF',                    PrintConv => \%onOff }, # CSa10 (Z7_2)
      +    0x0db => { Name => 'LimitSelectableImageAreaDX',    PrintConv => \%limitNolimit, Unknown => 1 }, # CSd7-a (Z7_2)
      +    0x0dc => { Name => 'LimitSelectableImageArea5To4',  PrintConv => \%limitNolimit, Unknown => 1 }, # CSd7-b (Z7_2)
      +    0x0dd => { Name => 'LimitSelectableImageArea1To1',  PrintConv => \%limitNolimit, Unknown => 1 }, # CSd7-c (Z7_2)
      +    0x0de => { Name => 'LimitSelectableImageArea16To9', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd7-d (Z7_2)
      +    0x0df => { Name => 'ApplySettingsToLiveView',       PrintConv => \%onOff }, # CSd9  # new tag with Z7_2 # (Z7_2)
      +    0x0e0 => { # CSd10-a (D6), CSd11-a (Z7_2)
      +        Name => 'FocusPeakingLevel',
      +        PrintConv => {
      +            1 => 'High Sensitivity',
      +            2 => 'Standard Sensitivity',
      +            3 => 'Low Sensitivity',
      +            4 => 'Off',
      +        },
      +    },
      +    0x0ea => { # CSf2-i         #option for 'Focus (M/A)' is documented, but not available from camera menu
      +        Name => 'LensControlRing',
      +        PrintConv => {
      +            1 => 'Aperture',
      +            2 => 'Exposure Compensation',
      +            3 => 'ISO Sensitivity',
      +            4 => 'None (Disabled)',
      +        },
      +    },
      +  # 0x0eb  MovieLensControlRing ? # (Z7_2)
      +  # 0x0ec # (Z7_2)
      +    0x0ed => [{ # CSg3 (D6)
      +        Name => 'MovieMultiSelector',
      +        PrintConv => {
      +            1 => 'Center Focus Point',
      +            2 => 'Zoom (Low)',
      +            3 => 'Zoom (1:1)',
      +            4 => 'Zoom (High)',
      +            5 => 'Record Movie',
      +            6 => 'None',
      +        },
      +        %infoD6,
      +    },{ # labels Ok button on camera # (Z7_2)
      +        Name => 'MovieMultiSelector',
      +        PrintConv => { # Z7 has codes for both OK and MultiSelector - although only the OK value can be changed.  [The multiselector served as the OK button on these cameras].
      +            1 => 'Center Focus Point',
      +            2 => 'Zoom (Low)',
      +            3 => 'Zoom (1:1)',
      +            4 => 'Zoom (High)',
      +            5 => 'Record Movie',
      +            6 => 'None',
      +        },
      +    }],
      +    0x0ee => { Name => 'MovieAFSpeed',                  ValueConv => '$val - 6', ValueConvInv => '$val + 6' }, # CSg4-a (Z7_2)
      +    0x0ef => { # CSg4-b (Z7_2)
      +        Name => 'MovieAFSpeedApply',
      +        PrintConv => {
      +            1 => 'Always',
      +            2 => 'Only During Recording',
      +        },
      +    },
      +    0x0f0 => { # CSg5 (Z7_2)
      +        Name => 'MovieAFTrackingSensitivity',
      +        PrintConv => {
      +            1 => '1 (High)',
      +            2 => '2',
      +            3 => '3',
      +            4 => '4 (Normal)',
      +            5 => '5',
      +            6 => '6',
      +            7 => '7 (Low)',
      +        },
      +    },
      +    0x0f1 => { # CSg4-a (D6), CSg6-a (Z7_2)
      +        Name => 'MovieHighlightDisplayPattern',
      +        PrintConv => {
      +            1 => 'Pattern 1',
      +            2 => 'Pattern 2',
      +            3 => 'Off',
      +        },
      +    },
      +    0x0f2 => { Name => 'SubDialFrameAdvanceRating5',    PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
      +    0x0f3 => { Name => 'SubDialFrameAdvanceRating4',    PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
      +    0x0f4 => { Name => 'SubDialFrameAdvanceRating3',    PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
      +    0x0f5 => { Name => 'SubDialFrameAdvanceRating2',    PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
      +    0x0f6 => { Name => 'SubDialFrameAdvanceRating1',    PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
      +    0x0f7 => { Name => 'SubDialFrameAdvanceRating0',    PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
      +  # 0x0f8 ??  looks like it should be part of the above, but nothing seems to cause the value to change.  Possibly intended for Rating='Candidate for Deletion' # (D6)
      +    0x0f9 => { # CSg2-c (Z7_2)
      +        Name => 'MovieAF-OnButton',
      +        PrintConv => {
      +            1 => 'Center Focus Point',
      +            2 => 'AF-On',
      +            3 => 'AF Lock Only',
      +            4 => 'AE Lock (hold)',
      +            5 => 'AE Lock Only',
      +            6 => 'AE/AF Lock',
      +            7 => 'LiveView Info Display On/Off',
      +            8 => 'Zoom (Low)',
      +            9 => 'Zoom (1:1)',
      +            10 => 'Zoom (High)',
      +            11 => 'Record Movie',
      +            12 => 'None',
      +        },
      +    },
      +    0x0fb => { Name => 'SecondarySlotFunction', PrintConv => \%tagSecondarySlotFunction },    # tag name selected to maintain compatibility with older cameras # (Z7_2)
      +    0x0fb => { Name => 'SecondarySlotFunction', PrintConv => \%tagSecondarySlotFunction }, # (D6)
      +    0x0fc => { Name => 'SilentPhotography',     PrintConv => \%onOff }, # (D6,Z7_2)   # tag is associated with Silent LiveView Photography (as distinguisehed from Silent Interval or Silent Focus Shift)
      +    0x0fd => { Name => 'ExtendedShutterSpeeds', PrintConv => \%onOff }, # CSd7 (D6), CSd6 (Z7_2)
      +    0x102 => { # (Z7_2)
      +        Name => 'HDMIBitDepth',
      +        RawConv => '$$self{HDMIBitDepth} = $val',
      +        PrintConv => {
      +            1 => '8 Bit',
      +            2 => '10 Bit',
      +            #5 => 'Auto',     #observed on the Z50 - needs confirmation
      +        },
      +    },
      +    0x103 => { # (Z7_2)
      +        Name => 'HDMIOutputHDR',
      +        Condition => '$$self{HDMIBitDepth}  == 2',   # HDR(HLC) output option only available only for 10 bit
      +        RawConv => '$$self{HDMIOutputHDR} = $val',
      +        PrintConv => {
      +            2 => 'On',  # unusual decode perhaps due to sharing sub-menu with tag HDMIOutputN-Log?
      +            3 => 'Off',
      +        },
      +    },
      +    0x104 => {  # valid for 10 bit with either N-Log or HDR/HLG selected    CSg5 (Z7_2)
      +        Name => 'HDMIViewAssist',
      +        Condition => '$$self{HDMIBitDepth}  == 2',
      +        PrintConv => \%onOff
      +    },
      +    0x109 => { # (D6,Z7_2)
      +        Name => 'BracketSet',
      +        RawConv => '$$self{BracketSet} = $val',
      +        PrintConv => {
      +            1 => 'AE/Flash',
      +            2 => 'AE',
      +            3 => 'Flash',
      +            4 => 'White Balance',
      +            5 => 'Active-D Lighting',
      +        },
      +    },
      +    0x10a => [{ # (D6/Z7_2)
      +        Name => 'BracketProgram',
      +        Condition => '$$self{BracketSet} < 4',
      +        Notes => 'AE and/or Flash Bracketing',
      +        RawConv => '$$self{BracketProgram} = $val',
      +        PrintConv =>  {
      +            15 => '+3F',
      +            16 => '-3F',
      +            17 => '+2F',
      +            18 => '-2F',
      +            19 => 'Disabled',
      +            20 => '3F',
      +            21 => '5F',
      +            22 => '7F',
      +            23 => '9F',
      +        },
      +    },{
      +        Name => 'BracketProgram',
      +        Condition => '$$self{BracketSet} and $$self{BracketSet} == 4',
      +        Notes => 'White Balance Bracketing',
      +        RawConv => '$$self{BracketProgram} = $val',
      +        PrintConv =>  {
      +            1 => 'B3F',
      +            2 => 'A3F',
      +            3 => 'B2F',
      +            4 => 'A2F',
      +            5 => 'Disabled',
      +            6 => '3F',
      +            7 => '5F',
      +            8 => '7F',
      +            9 => '9F',
      +            19 => 'N/A'    # observed when shooting other than JPG
      +        },
      +    },{
      +        Name => 'BracketProgram',
      +        Condition => '$$self{BracketSet} and $$self{BracketSet} == 5',
      +        Notes => 'Active-D Bracketing',
      +        RawConv => '$$self{BracketProgram} = $val',
      +        Mask => 0x0f,
      +        PrintConv =>  {
      +            10 => 'Disabled',
      +            11 => '2 Exposures',
      +            12 => '3 Exposures',
      +            13 => '4 Exposures',
      +            14 => '5 Exposures',
      +        },
      +    }],
      +    0x10b => [{ # (D6/Z7_2)
      +        Name => 'BracketIncrement',
      +        Condition => '$$self{BracketSet} < 4 and $$self{BracketProgram} ne 19',
      +        Notes => 'AE and/or Flash Bracketing enabled',
      +        PrintConv =>  {
      +            0x01 => '0.3',
      +            0x03 => '0.5',
      +            0x04 => '1.0',
      +            0x05 => '2.0',
      +            0x06 => '3.0',
      +        },
      +    },{
      +        Name => 'BracketIncrement',
      +        Condition => '$$self{BracketSet} == 4 and $$self{BracketProgram} ne 5',
      +        Notes => 'White Balance Bracketing enabled',
      +        PrintConv => '$val-6',   # TODO:  qualify amber/blue direction of increment (eg, '1A' vs.'1B' vs '1A,1B')
      +    }],
      +    0x10c => { # (D6/Z7_2)
      +        Name => 'BracketIncrement',
      +        Condition => '$$self{BracketSet} == 5 and $$self{BracketProgram} ne 10',
      +        Notes => 'Active-D Bracketing enabled',
      +        PrintConv =>  {
      +            0 => 'Off',
      +            1 => 'Off, Low',
      +            2 => 'Off, Normal',
      +            3 => 'Off, High',
      +            4 => 'Off, Extra High',
      +            5 => 'Off, Auto',
      +            6 => 'Off, Low, Normal',
      +            7 => 'Off, Low, Normal, High',
      +            8 => 'Off, Low, Normal, High, Extra High',
      +        },
      +    },
      +    0x10e  => { # (D6/Z7_2)
      +        Name => 'MonitorBrightness',
      +        # settings: -5 to +5
      +        ValueConv => '$val - 6',
      +    },
      +    0x116 => { Name => 'GroupAreaC1',               PrintConv =>\%groupAreaCustom },    # CSa10-a (new with D6) # (D6)
      +    0x117 => { Name => 'AutoAreaAFStartingPoint',   PrintConv => \%enableDisable },     # CSa12 (D6)
      +    0x118 => { Name => 'FocusPointPersistence',     PrintConv => { 1 => 'Auto', 2 => 'Off' } }, # CSa13 (new with D6) # (D6)
      +    0x119 => { Name => 'LimitAFAreaModeSelD49',     PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-c (D6)
      +    0x11a => { Name => 'LimitAFAreaModeSelD105',    PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-d (D6)
      +    0x11b => { Name => 'LimitAFAreaModeSelGroupC1', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-g (D6)
      +    0x11c => { Name => 'LimitAFAreaModeSelGroupC2', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-h (D6)
      +    0x11d => { # CSa15 (D6)
      +        Name => 'AutoFocusModeRestrictions',
      +        PrintConv => {
      +            1 => 'AF-S',
      +            2 => 'AF-C',
      +            3 => 'No Limit',
      +        },
      +    },
      +    0x11e => { # CSa17-b (D6)
      +        Name => 'FocusPointBrightness',
      +        PrintConv => {
      +            1 => 'Extra High',
      +            2 => 'High',
      +            3 => 'Normal',
      +            4 => 'Low',
      +        },
      +    },
      +    0x11f => { Name => 'CHModeShootingSpeed',       ValueConv => '15 - $val', ValueConvInv => '15 + $val', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1-a (D6)
      +    0x120 => { Name => 'CLModeShootingSpeed',       ValueConv => '11 - $val', ValueConvInv => '11 + $val', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1-b (D6)
      +    0x121 => { # CSd1-c (new with D6)
      +        Name => 'QuietShutterShootingSpeed',
      +        PrintConv => {
      +            1 => 'Single',
      +            2 => '5 fps',
      +            3 => '4 fps',
      +            4 => '3 fps',
      +            5 => '2 fps',
      +            6 => '1 fps',
      +        },
      +    },
      +    0x122 => { Name => 'LimitReleaseModeSelCL',         PrintConv => \%limtReleaseModeSel, Unknown => 1 }, # CSd3-a (D6)
      +    0x123 => { Name => 'LimitReleaseModeSelCH',         PrintConv => \%limtReleaseModeSel, Unknown => 1 }, # CSd3-b (D6)
      +    0x124 => { Name => 'LimitReleaseModeSelQ',          PrintConv => \%limtReleaseModeSel, Unknown => 1 }, # CSd3-c (D6)
      +    0x125 => { Name => 'LimitReleaseModeSelTimer',      PrintConv => \%limtReleaseModeSel, Unknown => 1 }, # CSd3-d (D6)
      +    0x126 => { Name => 'LimitReleaseModeSelMirror-Up',  PrintConv => \%limtReleaseModeSel, Unknown => 1 }, # CSd3-e (D6)
      +    0x127 => { Name => 'LimitSelectableImageArea16To9', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd8-5 (D6)
      +    0x128 => { Name => 'RearControPanelDisplay',        PrintConv => { 1 => 'Release Mode', 2 => 'Frame Count' } }, # CSd12  # new tag with D6 # (D6)
      +    0x129 => { Name => 'FlashBurstPriority',            PrintConv => { 1 => 'Frame Rate', 2 => 'Exposure' } }, # CSE5   # new tag with D6 # (D6)
      +    0x12a => { Name => 'RecallShootFuncExposureMode',   PrintConv => \%offOn }, # (D6)
      +    0x12b => { Name => 'RecallShootFuncShutterSpeed',   PrintConv => \%offOn }, # (D6)
      +    0x12c => { Name => 'RecallShootFuncAperture',       PrintConv => \%offOn }, # (D6)
      +    0x12d => { Name => 'RecallShootFuncExposureComp',   PrintConv => \%offOn }, # (D6)
      +    0x12e => { Name => 'RecallShootFuncISO',            PrintConv => \%offOn }, # (D6)
      +    0x12f => { Name => 'RecallShootFuncMeteringMode',   PrintConv => \%offOn }, # (D6)
      +    0x130 => { Name => 'RecallShootFuncWhiteBalance',   PrintConv => \%offOn }, # (D6)
      +    0x131 => { Name => 'RecallShootFuncAFAreaMode',     PrintConv => \%offOn }, # (D6)
      +    0x132 => { Name => 'RecallShootFuncFocusTracking',  PrintConv => \%offOn }, # (D6)
      +    0x133 => { Name => 'RecallShootFuncAF-On',          PrintConv => \%offOn }, # (D6)
      +    0x134 => { # CSf3-d (D6)
      +        Name => 'VerticalFuncButton',
      +        PrintConv => {
      +            1 => 'Preset Focus Point',
      +            2 => 'AE Lock (hold)',
      +            3 => 'AE/WB Lock (hold)',
      +            4 => 'AE Lock (reset on release)',
      +            5 => 'FV Lock',
      +            6 => 'Preview',
      +            7 => '+NEF(RAW)',
      +            8 => 'Grid Display',
      +            9 => 'Virtual Horizon',
      +            10 => 'Voice Memo',
      +            11 => 'Playback',
      +            12 => 'Filtered Playback',
      +            13 => 'Photo Shooting Bank',
      +            14 => 'Exposure Mode',
      +            15 => 'Exposure Comp',
      +            16 => 'AF Mode/AF Area Mode',
      +            17 => 'Image Area',
      +            18 => 'ISO',
      +            19 => 'Active-D Lighting',
      +            20 => 'Metering',
      +            21 => 'Exposure Delay Mode',
      +            22 => 'Shutter/Aperture Lock',
      +            23 => '1 Stop Speed/Aperture',
      +            24 => 'Rating 0',
      +            25 => 'Rating 5',
      +            26 => 'Rating 4',
      +            27 => 'Rating 3',
      +            28 => 'Rating 2',
      +            29 => 'Rating 1',
      +            30 => 'Candidate For Deletion',
      +            31 => 'Non-CPU Lens',
      +            32 => 'None',
      +        },
      +    },
      +    0x135 => { # CSf3-e (D6)
      +        Name => 'Func3Button',
      +        PrintConv => {
      +            1 => 'Voice Memo',
      +            2 => 'Select To Send',
      +            3 => 'Wired LAN',
      +            4 => 'My Menu',
      +            5 => 'My Menu Top Item',
      +            6 => 'Filtered Playback',
      +            7 => 'Rating 0',
      +            8 => 'Rating 5',
      +            9 => 'Rating 4',
      +            10 => 'Rating 3',
      +            11 => 'Rating 2',
      +            12 => 'Rating 1',
      +            13 => 'Candidate For Deletion',
      +            14 => 'None',
      +        },
      +    },
      +    0x136 => { # CSf3-i (D6)
      +        Name => 'VerticalAF-OnButton',
      +        PrintConv => {
      +            1 => 'AF-AreaMode S',
      +            2 => 'AF-AreaMode D9',
      +            3 => 'AF-AreaMode D25',
      +            4 => 'AF-AreaMode D49',
      +            5 => 'AF-AreaMode D105',
      +            6 => 'AF-AreaMode 3D',
      +            7 => 'AF-AreaMode Group',
      +            8 => 'AF-AreaMode Group C1',
      +            9 => 'AF-AreaMode Group C2',
      +            10 => 'AF-AreaMode Auto Area',
      +            11 => 'AF-AreaMode + AF-On S',
      +            12 => 'AF-AreaMode + AF-On D9',
      +            13 => 'AF-AreaMode + AF-On D25',
      +            14 => 'AF-AreaMode + AF-On D49',
      +            15 => 'AF-AreaMode + AF-On D105',
      +            16 => 'AF-AreaMode + AF-On 3D',
      +            17 => 'AF-AreaMode + AF-On Group',
      +            18 => 'AF-AreaMode + AF-On Group C1',
      +            19 => 'AF-AreaMode + AF-On Group C2',
      +            20 => 'AF-AreaMode + AF-On Auto Area',
      +            21 => 'Same as AF-On',
      +            22 => 'AF-On',
      +            23 => 'AF Lock Only',
      +            24 => 'AE Lock (hold)',
      +            25 => 'AE/WB Lock (hold)',
      +            26 => 'AE Lock (reset on release)',
      +            27 => 'AE Lock Only',
      +            28 => 'AE/AF Lock',
      +            29 => 'Recall Shooting Functions',
      +            30 => 'None',
      +        },
      +    },
      +    0x137 => { Name => 'VerticalMultiSelector', PrintConv => \%tagSubSelector }, # CSf3-j-1 # (D6)
      +    0x138 => { # CSf3-k (D6)
      +        Name => 'MeteringButton',
      +        PrintConv => {
      +            1 => 'Photo Shooting Bank',
      +            2 => 'Image Area',
      +            3 => 'Active-D Lighting',
      +            4 => 'Metering',
      +            5 => 'Exposure Delay Mode',
      +            6 => 'Shutter/Aperture Lock',
      +            7 => '1 Stop Speed/Aperture',
      +            8 => 'Non-CPU Lens',
      +            9 => 'None',
      +        },
      +    },
      +    0x139 => { Name => 'PlaybackFlickUp', RawConv => '$$self{PlaybackFlickUp} = $val', PrintConv => \%flickUpDownD6 }, # CSf12-1-a # (D6)
      +    0x13a => { Name => 'PlaybackFlickUpRating', Condition => '$$self{PlaybackFlickUp} and $$self{PlaybackFlickUp} == 1', Notes => 'Meaningful only when PlaybackFlickUp is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-1-b # (D6)
      +    0x13b => { Name => 'PlaybackFlickDown', RawConv => '$$self{PlaybackFlickDown} = $val', PrintConv => \%flickUpDownD6 }, # CSf12-2-a # (D6)
      +    0x13c => { Name => 'PlaybackFlickDownRating', Condition => '$$self{PlaybackFlickDown} and $$self{PlaybackFlickDown} == 1', Notes => 'Meaningful only when PlaybackFlickDown is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-2-b # (D6)
      +    0x13d => {  # CSg2-d (D6)
      +        Name => 'MovieFunc3Button',
      +        PrintConv => {
      +            1 => 'Record Movie',
      +            2 => 'My Menu',
      +            3 => 'My Menu Top Item',
      +            4 => 'None',
      +        },
      +    },
      +    0x150 => { # CSd5 (Z7_2) new with Z series
      +        Name => 'ShutterType',
      +        PrintConv => {
      +            1 => 'Auto',
      +            2 => 'Mechanical',
      +            3 => 'Electronic',
      +        },
      +    },
      +    0x151 => { Name => 'LensFunc2Button',       PrintConv => \%lensFuncButtonZ7m2 }, # CSf2-h (Z7_2)
      +    #0x153 => { Name => 'ViewfinderBrightness', }      #(Z7_2)   # commented out to reduce output volume.  Range [-5,+5]. PrintConv matches MonitorBrightness.
      +    0x158 => { Name => 'USBPowerDelivery',      PrintConv => \%enableDisable }, # (Z7_2)
      +    0x159 => { Name => 'EnergySavingMode',      PrintConv =>\%onOff },    # (Z7_2)
      +    0x15c => { Name => 'BracketingBurstOptions',PrintConv => \%enableDisable }, # CSe9 (D6)
      +  # 0x15d => CSf3-j-2 (D6) 'Same as Multi-Selector with Info(U/D) & Playback(R/L)'  and  'Same as Multi-Selector with Info(R/L) & Playback(U/D)'  (skipped to reduce volume of output)
      +    0x15e => { Name => 'PrimarySlot',           PrintConv => { 1 => 'CFexpress/XQD Card', 2 => 'SD Card' } }, # (Z7_2)
      +    0x15f => { Name => 'ReverseFocusRing',      PrintConv => { 1 => 'Not Reversed', 2 => 'Reversed' } }, # CSf8 (Z7_2)
      +    0x160 => { # CSf9-a (Z7_2)
      +        Name => 'VerticalFuncButton',
      +        PrintConv => {
      +            1 => 'AE Lock (hold)',
      +            2 => 'AE Lock (reset on release)',
      +            3 => 'FV Lock',
      +            4 => 'Preview',
      +            5 => '+NEF(RAW)',
      +            6 => 'Subject Tracking',
      +            7 => 'Silent Photography',
      +            8 => 'LiveView Info Display On/Off',
      +            9 => 'Playback',
      +            10 => 'Image Area',
      +            11 => 'Metering',
      +            12 => 'Flash Mode',
      +            13 => 'Focus Mode',
      +            14 => 'Exposure Delay Mode',
      +            15 => 'Shutter/Aperture Lock',
      +            16 => 'Exposure Compensation',
      +            17 => 'ISO Sensitivity',
      +            18 => 'None',
      +        },
      +    },
      +    0x161 => { # CSf9-b (Z7_2)
      +        Name => 'VerticalAFOnButton',
      +        PrintConv => {
      +            1 => 'Same as AF-On Button',
      +            2 => 'Select Center Focus Point',
      +            3 => 'AF-On',
      +            4 => 'AF Lock Only',
      +            5 => 'AE Lock (hold)',
      +            6 => 'AE Lock (reset on release)',
      +            7 => 'AE Lock Only',
      +            8 => 'AE/AF Lock',
      +            9 => 'LiveView Info Display On/Off',
      +            10 => 'Zoom (Low)',
      +            11 => 'Zoom (1:1)',
      +            12 => 'Zoom (High)',
      +            13 => 'None',
      +        },
      +    },
      +    0x162 => { Name => 'VerticalMultiSelector', PrintConv => \%tagSubSelector }, # CSf9-c (Z7_2)
      +  # 0x163 => CSf9-c-2 (Z7_2) 'Same as Multi-Selector with Info(U/D) & Playback(R/L)' and 'Same as Multi-Selector with Info(R/L) & Playback(U/D)' (skipped to reduce volume of output)
      +    0x164 => { # CSg7-a (Z7_2)
      +        Name => 'VerticalMovieFuncButton',
      +        PrintConv => {
      +            1 => 'LiveView Info Display On/Off',
      +            2 => 'Record Movie',
      +            3 => 'Exposure Compensation',
      +            4 => 'ISO',
      +            5 => 'None',
      +        },
      +    },
      +    0x165 => { # CSg7-b (Z7_2)
      +        Name => 'VerticalMovieAFOnButton',
      +        PrintConv => {
      +            1 => 'Same as AF-On',
      +            2 => 'Center Focus Point',
      +            3 => 'AF-On',
      +            4 => 'AF Lock Only',
      +            5 => 'AE Lock (hold)',
      +            6 => 'AE Lock Only',
      +            7 => 'AE/AF Lock',
      +            8 => 'LiveView Info Display On/Off',
      +            9 => 'Zoom (Low)',
      +            10 => 'Zoom (1:1)',
      +            11 => 'Zoom (High)',
      +            12 => 'Record Movie',
      +            13 => 'None',
      +        },
      +    },
      +    #0x168 => { Name => 'ControlPanelBrightness',   # (Z7_2)   #commented to reduce output volume
      +    0x169 => { Name => 'LimitAF-AreaModeSelAutoPeople',   PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-h (Z7_2)
      +    0x16a => { Name => 'LimitAF-AreaModeSelAutoAnimals',  PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-h (Z7_2)
      +    0x16b => { Name => 'LimitAF-AreaModeSelWideLPeople',  PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-e (Z7_2)
      +    0x16c => { Name => 'LimitAF-AreaModeSelWideLAnimals', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-f (Z7_2)
      +    0x16d => { Name => 'SaveFocus', PrintConv => \%onOff }, # (Z7_2)
      +    0x16e => { # (Z7_2)
      +        Name => 'AFAreaMode',
      +        RawConv => '$$self{AFAreaMode} = $val',
      +        PrintConv => {
      +            2 => 'Single-point',
      +            3 => 'Dynamic-area',
      +            4 => 'Wide (S)',
      +            5 => 'Wide (L)',
      +            6 => 'Wide (L-people)',
      +            7 => 'Wide (L-animals)',
      +            8 => 'Auto',
      +            9 => 'Auto (People)',
      +            10 => 'Auto (Animals)',
      +        },
      +    },
      +    0x16f => { # (Z7_2)
      +        Name => 'MovieAFAreaMode',
      +        PrintConv => {
      +            1 => 'Single-point',
      +            2 => 'Wide (S)',
      +            3 => 'Wide (L)',
      +            4 => 'Wide (L-people)',
      +            5 => 'Wide (L-animals)',
      +            6 => 'Auto',
      +            7 => 'Auto (People)',
      +            8 => 'Auto (Animals)',
      +        },
      +    },
      +    0x170 => { Name => 'PreferSubSelectorCenter', PrintConv => \%offOn }, # CSf13 (D6 firmware v1.2.0)
      +    0x171 => { # CSb8 (D6 firmware v1.3.0)
      +        Name => 'KeepExposureWithTeleconverter',
      +        PrintConv => {
      +            1 => 'Off',
      +            2 => 'Shutter Speed',
      +            3 => 'ISO',
      +        },
      +    },
      +    0x174 => { # CSa17-d (D6 firmware v1.2.0)
      +        Name => 'FocusPointSelectionSpeed',
      +        PrintConv => {
      +            1 => 'Normal',
      +            2 => 'High',
      +            3 => 'Very High',
      +        },
      +    },
      +);
      +
      +#------------------------------------------------------------------------------
      +# Process NikonSettings directory (ref PH)
      +# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
      +# Returns: 1 on success
      +sub ProcessNikonSettings($$$)
      +{
      +    my ($et, $dirInfo, $tagTablePtr) = @_;
      +
      +    # NikonSettings directory has a 24-byte header:
      +    #  0x00 - undef[4]: '0100'
      +    #  0x04 - int32u:   1 (D-models), 2 (Z-models)
      +    #  0x08 - undef[4]: '0100'
      +    #  0x0c - int32u:   1 (Z7), 2 (D850), 3 (D780,Z50), 4 (D6,Z5), 5(Z7m2)
      +    #  0x10 - undef[4]: firmware version (eg. '0110' for firmware 1.10)
      +    #  0x14 - int32u:   number of entries in directory
      +
      +    return 0 if $$dirInfo{DirLen} < 24; # sanity check
      +
      +    my $dataPt = $$dirInfo{DataPt};
      +    my $start = $$dirInfo{DirStart};
      +    my $num = Get32u($dataPt, $start + 0x14);
      +
      +    $et->VerboseDir('NikonSettings', $num);
      +
      +    my $n = int(($$dirInfo{DirLen} - 0x18) / 8);
      +    if ($n < $num) {
      +        $et->Warn('Missing '.($num-$n).' NikonSettings entries', 1);
      +        $num = $n;
      +    } elsif ($n > $num) {
      +        $et->Warn('Unused space in NikonSettings directory', 1);
      +    }
      +    my $i;
      +    for ($i=0; $i<$num; ++$i) {
      +        my $entry = $start + 0x18 + $i * 8;
      +        my $tag = Get16u($dataPt, $entry);
      +        my $fmt = Get16u($dataPt, $entry + 2);
      +        my $val = Get32u($dataPt, $entry + 4);
      +        # abort if the tag has a format that we haven't yet seen
      +        # (assuming this is a size/format code.  So far we have only seen 0x400)
      +        $fmt == 0x400 or $et->Warn(sprintf('Unknown format 0x%x for NikonSettings tag 0x%.4x',$fmt,$tag)), last;
      +        $et->HandleTag($tagTablePtr, $tag, $val,
      +            DataPt  => $dataPt,
      +            DataPos => $$dirInfo{DataPos},
      +            Base    => $$dirInfo{Base},
      +            Start   => $entry + 4,
      +            Size    => 4,
      +            Format  => 'int32u',
      +            Index   => $i,
      +        );
      +    }
      +    return 1;
      +}
      +
      +
      +1;  # end
      +
      +__END__
      +
      +=head1 NAME
      +
      +Image::ExifTool::NikonSettings - Read Nikon user settings
      +
      +=head1 SYNOPSIS
      +
      +This module is loaded automatically by Image::ExifTool when required.
      +
      +=head1 DESCRIPTION
      +
      +This module contains the definitions necessary to read the user settings for
      +Nikon cameras such as the D6 and Z7mk2.
      +
      +
      +=head1 AUTHOR
      +
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
      +
      +This library is free software; you can redistribute it and/or modify it
      +under the same terms as Perl itself.
      +
      +=head1 ACKNOWLEDGEMENTS
      +
      +Thanks to Warren Hatch for his work decoding settings for the D6 and Z7mkII,
      +and for providing the original source code for this module.
      +
      +=head1 SEE ALSO
      +
      +L,
      +L
      +
      +=cut
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Nintendo.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Nintendo.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Nintendo.pm	2020-01-02 12:08:52.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Nintendo.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -107,7 +107,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Ogg.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Ogg.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Ogg.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Ogg.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -214,7 +214,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Olympus.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Olympus.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Olympus.pm	2020-02-14 12:25:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Olympus.pm	2022-02-09 12:08:07.000000000 +0000
      @@ -27,6 +27,7 @@
       #              19) Brad Grier private communication
       #              22) Herbert Kauer private communication
       #              23) Daniel Pollock private communication (PEN-F)
      +#              24) Sebastian private communication (E-M1 Mark III)
       #              IB) Iliah Borg private communication (LibRaw)
       #              NJ) Niels Kristian Bech Jensen private communication
       #------------------------------------------------------------------------------
      @@ -39,7 +40,7 @@
       use Image::ExifTool::Exif;
       use Image::ExifTool::APP12;
       
      -$VERSION = '2.64';
      +$VERSION = '2.76';
       
       sub PrintLensInfo($$$);
       
      @@ -108,9 +109,12 @@
           '0 32 00' => 'Olympus Zuiko Digital ED 14-35mm F2.0 SWD', #PH
           '0 32 10' => 'Olympus M.Zuiko Digital ED 12-200mm F3.5-6.3', #IB
           '0 33 00' => 'Olympus Zuiko Digital 25mm F2.8', #PH
      +    '0 33 10' => 'Olympus M.Zuiko Digital 150-400mm F4.5 TC1.25x IS Pro', #IB
           '0 34 00' => 'Olympus Zuiko Digital ED 9-18mm F4.0-5.6', #7
           '0 34 10' => 'Olympus M.Zuiko Digital ED 12-45mm F4.0 Pro', #IB
           '0 35 00' => 'Olympus Zuiko Digital 14-54mm F2.8-3.5 II', #PH
      +    '0 35 10' => 'Olympus M.Zuiko 100-400mm F5.0-6.3', #IB
      +    '0 36 10' => 'Olympus M.Zuiko Digital ED 8-25mm F4 Pro', #IB
           # Sigma lenses
           '1 01 00' => 'Sigma 18-50mm F3.5-5.6 DC', #8
           '1 01 10' => 'Sigma 30mm F2.8 EX DN', #NJ
      @@ -172,15 +176,22 @@
           '2 28 10' => 'Lumix G Vario 12-60mm F3.5-5.6 Asph. Power OIS', #NJ
           '2 29 10' => 'Leica DG Summilux 12mm F1.4 Asph.', #IB
           '2 30 10' => 'Leica DG Vario-Elmarit 12-60mm F2.8-4 Asph. Power OIS', #IB
      +    '2 31 10' => 'Lumix G Vario 45-200mm F4.0-5.6 II', #forum3833
      +    '2 32 10' => 'Lumix G Vario 100-300mm F4.0-5.6 II', #PH
           '2 33 10' => 'Lumix G X Vario 12-35mm F2.8 II Asph. Power OIS', #IB
      +    '2 34 10' => 'Lumix G Vario 35-100mm F2.8 II', #forum3833
           '2 35 10' => 'Leica DG Vario-Elmarit 8-18mm F2.8-4 Asph.', #IB
           '2 36 10' => 'Leica DG Elmarit 200mm F2.8 Power OIS', #IB
           '2 37 10' => 'Leica DG Vario-Elmarit 50-200mm F2.8-4 Asph. Power OIS', #IB
           '2 38 10' => 'Leica DG Vario-Summilux 10-25mm F1.7 Asph.', #IB
      +    '2 40 10' => 'Leica DG Vario-Summilux 25-50mm F1.7 Asph.', #IB (H-X2550)
           '3 01 00' => 'Leica D Vario Elmarit 14-50mm F2.8-3.5 Asph.', #11
           '3 02 00' => 'Leica D Summilux 25mm F1.4 Asph.', #11
           # Tamron lenses
           '5 01 10' => 'Tamron 14-150mm F3.5-5.8 Di III', #NJ (model C001)
      +  # '65535 07 40' - Seen for LUMIX S 16-35/F4 on Panasonic DC-S1H (ref PH)
      +    # Other makes
      +    '24 01 10' => 'Venus Optics Laowa 50mm F2.8 2x Macro', #DonKomarechka
       );
       
       # lookup for Olympus camera types (ref PH)
      @@ -420,6 +431,7 @@
           S0085 => 'E-PL10', #IB
           S0089 => 'E-M5MarkIII',
           S0092 => 'E-M1MarkIII', #IB
      +    S0093 => 'E-P7', #IB
           SR45 => 'D220',
           SR55 => 'D320L',
           SR83 => 'D340L',
      @@ -1833,6 +1845,7 @@
                       6 => 'Imager AF',
                       7 => 'Live View Magnification Frame',
                       8 => 'AF sensor',
      +                9 => 'Starry Sky AF', #24
                   },
               }],
           },
      @@ -1890,9 +1903,13 @@
           },
           0x307 => { #15
               Name => 'AFFineTuneAdj',
      -        Format => 'int16s',
      +        Writable => 'int16s',
               Count => 3, # not sure what the 3 values mean
           },
      +    0x308 => { #forum11578
      +        Name => 'FocusBracketStepSize',
      +        Writable => 'int8u',
      +    },
           0x400 => { #6
               Name => 'FlashMode',
               Writable => 'int16u',
      @@ -2117,6 +2134,11 @@
                   67 => 'Soft Background Shot', #11
                   142 => 'Hand-held Starlight', #PH (SH-21)
                   154 => 'HDR', #PH (XZ-2)
      +            197 => 'Panning', #forum11631 (EM5iii)
      +            203 => 'Light Trails', #forum11631 (EM5iii)
      +            204 => 'Backlight HDR', #forum11631 (EM5iii)
      +            205 => 'Silent', #forum11631 (EM5iii)
      +            206 => 'Multi Focus Shot', #forum11631 (EM5iii)
               },
           },
           0x50a => { #PH/4/6
      @@ -2508,6 +2530,8 @@
               Count => 2,
               PrintConv => {
                   '0 0' => 'No',
      +            '1 *' => 'Live Composite (* images)', #24
      +            '4 *' => 'Live Time/Bulb (* images)', #24
                   '3 2' => 'ND2 (1EV)', #IB
                   '3 4' => 'ND4 (2EV)', #IB
                   '3 8' => 'ND8 (3EV)', #IB
      @@ -2516,21 +2540,26 @@
                   '5 4' => 'HDR1', #forum8906
                   '6 4' => 'HDR2', #forum8906
                   '8 8' => 'Tripod high resolution', #IB
      -            '9 2' => 'Focus-stacked (2 images)', #IB
      -            '9 3' => 'Focus-stacked (3 images)', #IB
      -            '9 4' => 'Focus-stacked (4 images)', #IB
      -            '9 5' => 'Focus-stacked (5 images)', #IB
      -            '9 6' => 'Focus-stacked (6 images)', #IB
      -            '9 7' => 'Focus-stacked (7 images)', #IB
      -            '9 8' => 'Focus-stacked (8 images)',
      -            '9 9' => 'Focus-stacked (9 images)', #IB
      -            '9 10' => 'Focus-stacked (10 images)', #IB
      -            '9 11' => 'Focus-stacked (11 images)', #IB
      -            '9 12' => 'Focus-stacked (12 images)', #IB
      -            '9 13' => 'Focus-stacked (13 images)', #IB
      -            '9 14' => 'Focus-stacked (14 images)', #IB
      -            '9 15' => 'Focus-stacked (15 images)', #IB
      -            '11 16' => 'Hand-held high resolution', #IB
      +            '9 *' => 'Focus-stacked (* images)', #IB (* = 2-15)
      +            '11 16' => 'Hand-held high resolution', #IB (perhaps '11 15' would be possible, ref 24)
      +            OTHER => sub {
      +                my ($val, $inv, $conv) = @_;
      +                if ($inv) {
      +                    $val = lc $val;
      +                    return undef unless $val =~ s/(\d+) images/\* images/;
      +                    my $num = $1;
      +                    foreach (keys %$conv) {
      +                        next unless $val eq lc $$conv{$_};
      +                        ($val = $_) =~ s/\*/$num/ or return undef;
      +                        return $val;
      +                    }
      +                } else {
      +                    return "Unknown ($_[0])" unless $val =~ s/ (\d+)/ \*/ and $$conv{$val};
      +                    my $num = $1;
      +                    ($val = $$conv{$val}) =~ s/\*/$num/;
      +                    return $val;
      +                }
      +            },
               },
           },
           0x900 => { #11
      @@ -2891,6 +2920,7 @@
               Count => 2,
               PrintConv => [{
                   0 => 'Off',
      +            1 => 'Live Composite', #github issue#61
                   2 => 'On (2 frames)',
                   3 => 'On (3 frames)',
               }],
      @@ -3400,7 +3430,7 @@
           0x2a => {
               Name => 'FNumber',
               Format => 'rational64u',
      -        PrintConv => 'sprintf("%.1f",$val)',
      +        PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
           },
           0x32 => { #(NC)
               Name => 'ExposureCompensation',
      @@ -3446,7 +3476,7 @@
           0x3a => {
               Name => 'FNumber',
               Format => 'rational64u',
      -        PrintConv => 'sprintf("%.1f",$val)',
      +        PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
           },
           0x42 => { #(NC)
               Name => 'ExposureCompensation',
      @@ -3497,7 +3527,7 @@
           0x28 => {
               Name => 'FNumber',
               Format => 'rational64u',
      -        PrintConv => 'sprintf("%.1f",$val)',
      +        PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
           },
           0x30 => { #(NC)
               Name => 'ExposureCompensation',
      @@ -3579,6 +3609,10 @@
               Format => 'string[24]',
               Groups => { 2 => 'Time' },
           },
      +    0x17f => {
      +        Name => 'LensModel',
      +        Format => 'string[32]'
      +    },
       );
       
       # yet a different "thmb" atom format (PH, E-M5)
      @@ -3710,7 +3744,7 @@
           0x5a => {
               Name => 'FNumber',
               Format => 'rational64u',
      -        PrintConv => 'sprintf("%.1f",$val)',
      +        PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
           },
           0x7f => {
               Name => 'DateTimeOriginal', #(NC)
      @@ -3755,7 +3789,7 @@
           0x5e => {
               Name => 'FNumber',
               Format => 'rational64u',
      -        PrintConv => 'sprintf("%.1f",$val)',
      +        PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
           },
           0x83 => {
               Name => 'DateTime1',
      @@ -3925,7 +3959,7 @@
                   1 => 'LensTypeModel',
               },
               Notes => 'based on tags found in some Panasonic RW2 images',
      -        SeparateTable => 'LensType',
      +        SeparateTable => 'Olympus LensType',
               ValueConv => '"$val[0] $val[1]"',
               PrintConv => \%olympusLensTypes,
           },
      @@ -4037,7 +4071,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/OOXML.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/OOXML.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/OOXML.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/OOXML.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -395,7 +395,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/OpenEXR.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/OpenEXR.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/OpenEXR.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/OpenEXR.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -15,7 +15,7 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::GPS;
       
      -$VERSION = '1.02';
      +$VERSION = '1.03';
       
       # supported EXR value format types (other types are extracted as undef binary data)
       my %formatType = (
      @@ -172,12 +172,13 @@
           my $ver = unpack('x4V', $buff);
           $et->HandleTag($tagTablePtr, '_ver', $ver & 0xff);
           $et->HandleTag($tagTablePtr, '_lay', $ver & 0x200);
      +    my $maxLen = ($ver & 0x400) ? 255 : 31;
       
           # extract attributes
           for (;;) {
               $raf->Read($buff, 68) or last;
               last if $buff =~ /^\0/;
      -        unless ($buff =~ /^([^\0]{1,31})\0([^\0]{1,31})\0(.{4})/sg) {
      +        unless ($buff =~ /^([^\0]{1,$maxLen})\0([^\0]{1,$maxLen})\0(.{4})/sg) {
                   $et->Warn('EXR format error');
                   last;
               }
      @@ -189,6 +190,7 @@
               my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
               unless ($tagInfo) {
                   my $name = ucfirst $tag;
      +            $name =~ s/([^a-zA-Z])([a-z])/$1\U$2/g; # capitalize first letter of each word
                   $name =~ tr/-_a-zA-Z0-9//dc;
                   if (length $name <= 1) {
                       if (length $name) {
      @@ -302,7 +304,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Opus.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Opus.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Opus.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Opus.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -69,7 +69,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Other.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Other.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Other.pm	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Other.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -0,0 +1,93 @@
      +#------------------------------------------------------------------------------
      +# File:         Other.pm
      +#
      +# Description:  Read meta information from other uncommon formats
      +#
      +# Revisions:    2021/07/16 - P. Harvey Created
      +#
      +# References:   1) PFM - http://www.pauldebevec.com/Research/HDR/PFM/
      +#------------------------------------------------------------------------------
      +
      +package Image::ExifTool::Other;
      +
      +use strict;
      +use vars qw($VERSION);
      +use Image::ExifTool qw(:DataAccess :Utils);
      +use Image::ExifTool::Exif;
      +
      +$VERSION = '1.00';
      +
      +# Other info
      +%Image::ExifTool::Other::PFM = (
      +    GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Image' },
      +    VARS => { NO_ID => 1 },
      +    NOTES => q{
      +        Tags extracted from Portable FloatMap images. See
      +        L for the specification.
      +    },
      +    ColorSpace  => { PrintConv => { PF => 'RGB', 'Pf' => 'Monochrome'} },
      +    ImageWidth  => { },
      +    ImageHeight => { },
      +    ByteOrder   => { PrintConv => '$val > 0 ? "Big-endian" : "Little-endian"' },
      +);
      +
      +#------------------------------------------------------------------------------
      +# Extract information from a Portable FloatMap image
      +# Inputs: 0) ExifTool object reference, 1) dirInfo reference
      +# Returns: 1 on success, 0 if this wasn't a valid PFM file
      +sub ProcessPFM2($$)
      +{
      +    my ($et, $dirInfo) = @_;
      +    my $raf = $$dirInfo{RAF};
      +    my $buff;
      +    return 0 unless $raf->Read($buff, 256) and $buff =~ /^(P[Ff])\x0a(\d+) (\d+)\x0a([-+0-9.]+)\x0a/;
      +    $et->SetFileType('PFM', 'image/x-pfm');
      +    my $tagTablePtr = GetTagTable('Image::ExifTool::Other::PFM');
      +    $et->HandleTag($tagTablePtr, ColorSpace => $1);
      +    $et->HandleTag($tagTablePtr, ImageWidth => $2);
      +    $et->HandleTag($tagTablePtr, ImageHeight => $3);
      +    $et->HandleTag($tagTablePtr, ByteOrder => $4);
      +    # hack to set proper file description (extension is the same for Printer Font Metrics files)
      +    $Image::ExifTool::static_vars{OverrideFileDescription}{PFM} = 'Portable FloatMap',
      +    return 1;
      +}
      +
      +1;  # end
      +
      +__END__
      +
      +=head1 NAME
      +
      +Image::ExifTool::Other - Read meta information from other uncommon formats
      +
      +=head1 SYNOPSIS
      +
      +This module is used by Image::ExifTool
      +
      +=head1 DESCRIPTION
      +
      +This module contains routines required by Image::ExifTool to extract
      +information from Portable FloatMap (PFM) images.
      +
      +=head1 AUTHOR
      +
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
      +
      +This library is free software; you can redistribute it and/or modify it
      +under the same terms as Perl itself.
      +
      +=head1 REFERENCES
      +
      +=over 4
      +
      +=item PFM L
      +
      +=back
      +
      +=head1 SEE ALSO
      +
      +L,
      +L
      +
      +=cut
      +
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Palm.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Palm.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Palm.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Palm.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -379,7 +379,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Panasonic.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Panasonic.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Panasonic.pm	2020-02-14 12:25:18.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Panasonic.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -26,6 +26,7 @@
       #              20) Bernd-Michael Kemper private communication (DMC-GX80/85)
       #              21) Klaus Homeister forum post
       #              22) Daniel Beichl private communication (G9)
      +#              23) Tim Gray private communication (M10 Monochrom)
       #              JD) Jens Duttke private communication (TZ3,FZ30,FZ50)
       #------------------------------------------------------------------------------
       
      @@ -36,7 +37,7 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::Exif;
       
      -$VERSION = '2.07';
      +$VERSION = '2.16';
       
       sub ProcessLeicaLEIC($$$);
       sub WhiteBalanceConv($;$$);
      @@ -258,6 +259,7 @@
           88 => 'Clear Sports Shot', #18
           89 => 'Monochrome', #18
           90 => 'Creative Control', #18
      +    92 => 'Handheld Night Shot', #forum11523
       );
       
       %Image::ExifTool::Panasonic::Main = (
      @@ -365,7 +367,9 @@
                       '32 2'  => '3-area (center)?', # (DMC-L1 guess)
                       '32 3'  => '3-area (right)?', # (DMC-L1 guess)
                       '64 0'  => 'Face Detect',
      -                '128 0' => 'Spot Focusing 2', #18
      +                '64 1' => 'Face Detect (animal detect on)', #forum11194
      +                '64 2' => 'Face Detect (animal detect off)', #forum11194
      +                '128 0' => 'Pinpoint focus', #18/forum11194
                       '240 0' => 'Tracking', #22
                   },
               },
      @@ -374,14 +378,17 @@
               Name => 'ImageStabilization',
               Writable => 'int16u',
               PrintConv => {
      -            2 => 'On, Mode 1',
      +            2 => 'On, Optical',
                   3 => 'Off',
                   4 => 'On, Mode 2',
      -            5 => 'Panning', #18
      +            5 => 'On, Optical Panning', #18
                   # GF1 also has a "Mode 3" - PH
      -            6 => 'On, Mode 3', #PH (GX7, sensor shift?)
      +            6 => 'On, Body-only', #PH (GX7, sensor shift?)
      +            7 => 'On, Body-only Panning', #forum11194
                   9 => 'Dual IS', #20
      +            10 => 'Dual IS Panning', #forum11194
                   11 => 'Dual2 IS', #forum9298
      +            12 => 'Dual2 IS Panning', #forum11194
               },
           },
           0x1c => {
      @@ -442,7 +449,7 @@
                   same as the number printed on the camera body
               },
               PrintConv => q{
      -            return $val unless $val=~/^([A-Z]\d{2})(\d{2})(\d{2})(\d{2})(\d{4})/;
      +            return $val unless $val=~/^([A-Z][0-9A-Z]{2})(\d{2})(\d{2})(\d{2})(\d{4})/;
                   my $yr = $2 + ($2 < 70 ? 2000 : 1900);
                   return "($1) $yr:$3:$4 no. $5";
               },
      @@ -452,7 +459,15 @@
               Name => 'PanasonicExifVersion',
               Writable => 'undef',
           },
      -    # 0x27 - values: 0 (LZ6,FX10K)
      +    0x27 => {
      +        Name => 'VideoFrameRate',
      +        Writable => 'int16u',
      +        Notes => 'only valid for older models',
      +        PrintConv => {
      +            OTHER => sub { shift },
      +            0 => 'n/a',
      +        },
      +    },
           0x28 => {
               Name => 'ColorEffect',
               Writable => 'int16u',
      @@ -514,9 +529,11 @@
                   0 => 'Off',
                   1 => 'On', #PH (TZ5) [was "Low/High Quality" from ref 4]
                   2 => 'Auto Exposure Bracketing (AEB)', #17
      +            3 => 'Focus Bracketing', #forum11194
                   4 => 'Unlimited', #PH (TZ5)
                   8 => 'White Balance Bracketing', #18
                   17 => 'On (with flash)', #forum5597
      +            18 => 'Aperture Bracketing', #forum11194
               },
           },
           0x2b => { #4
      @@ -541,13 +558,15 @@
                       # 0x03 - observed with LZ6 and TZ5 in Fireworks mode
                       #        and GX7 in Fantasy/Retro/OldDays/HighKey - PH
                       # 0x04 - observed in MP4 movie with GM1 (EXIF and 0x39 Contrast "Normal") - PH
      -                # 0x05 - observed with FX01, FX40 and FP8 (EXIF contrast "Normal") - PH
      +                0x05 => 'Normal 2', #forum1194
                       0x06 => 'Medium Low', #PH (FZ18)
                       0x07 => 'Medium High', #PH (FZ18)
                       # 0x08 - GX7 in DynamicMonochrome mode
                       0x0d => 'High Dynamic', #PH (FZ47 in ?)
                       # 0x13 - seen for LX100 (PH)
      -                # 0x18 - seen for FZ2500 (PH)
      +                0x18 => 'Dynamic Range (film-like)', #forum11194
      +                0x2e => 'Match Filter Effects Toy', #forum11194
      +                0x37 => 'Match Photo Style L. Monochrome', #forum11194
                       # DMC-LC1 values:
                       0x100 => 'Low',
                       0x110 => 'Normal',
      @@ -652,11 +671,14 @@
               Name => 'SelfTimer',
               Writable => 'int16u',
               PrintConv => {
      +            0 => 'Off (0)', #forum11529
                   1 => 'Off',
                   2 => '10 s',
                   3 => '2 s',
                   4 => '10 s / 3 pictures', #17
      -            # 258 - seen for FZ2500,TZ90,LeicaCLux (PH)
      +            258 => '2 s after shutter pressed', #forum11194
      +            266 => '10 s after shutter pressed', #forum11194
      +            778 => '3 photos after 10 s', #forum11194
               },
           },
           # 0x2f - values: 1 (LZ6,FX10K)
      @@ -724,8 +746,20 @@
               PrintConvInv => '$val =~ /(\d+)/ ? $1 : $val',
           },
           # 0x37 - values: 0,1,2 (LZ6, 0 for movie preview); 257 (FX10K); 0,256 (TZ5, 0 for movie preview)
      -    # 0x38 - values: 0,1,2 (LZ6, same as 0x37); 1,2 (FX10K); 0,256 (TZ5, 0 for movie preview)
      -    #        - changes with noise reduction for DC-S1
      +    #        --> may indicate battery power (forum11388)
      +    0x38 => { #forum11388
      +        Name => 'BatteryLevel',
      +        Writable => 'int16u',
      +        PrintConv => {
      +            1 => 'Full',
      +            2 => 'Medium',
      +            3 => 'Low',
      +            4 => 'Near Empty',
      +            7 => 'Near Full',
      +            8 => 'Medium Low',
      +            256 => 'n/a',
      +        },
      +    },
           0x39 => { #7 (L1/L10)
               Name => 'Contrast',
               Format => 'int16s',
      @@ -760,6 +794,7 @@
               Name => 'AdvancedSceneType',
               Writable => 'int16u',
               Notes => 'used together with SceneMode to derive Composite AdvancedSceneMode',
      +        # see forum11194 for more info
           },
           0x3e => { #PH (TZ5/FS7)
               # (tags 0x3b, 0x3e, 0x8008 and 0x8009 have the same values in all my samples - PH)
      @@ -852,7 +887,7 @@
               },
           },
           0x49 => { #19
      -        Name => 'LongExposureNoiseReduction',
      +        Name => 'LongExposureNoiseReduction', # (indicates availability, forum11194)
               Writable => 'int16u',
               PrintConv => {
                   1 => 'Off',
      @@ -1091,6 +1126,10 @@
                   4 => 'Monochrome',
                   5 => 'Scenery',
                   6 => 'Portrait',
      +            8 => 'Cinelike D', #forum11194
      +            9 => 'Cinelike V', #forum11194
      +            11 => 'L. Monochrome', #forum11194
      +            15 => 'L. Monochrome D', #forum11194
               },
           },
           0x8a => { #18
      @@ -1153,7 +1192,7 @@
               ValueConv => '-$val / 10',
               ValueConvInv => '-$val * 10',
           },
      -    0x92 => { #21 (forum9453)
      +    0x92 => { #21 (forum9453) (more to decode in forum11194)
               Name => 'WBShiftCreativeControl',
               Writable => 'int8u',
               Format => 'int8s',
      @@ -1181,6 +1220,7 @@
                   0 => 'Off',
                   1 => 'Time Lapse',
                   2 => 'Stop-motion Animation',
      +            3 => 'Focus Bracketing', #forum11194
               },
           },
           0x9d => { #18
      @@ -1210,6 +1250,36 @@
               },
           },
           # 0xa0 - undef[32]: AWB gains and black levels (ref forum9303)
      +    0xa1 => { #forum11194
      +        Name => 'FilterEffect',
      +        Writable => 'rational64u',
      +        Format => 'int32u',
      +        PrintConv => {
      +            '0 0' => 'Expressive',
      +            # '0 1' => have seen this for XS1 (PH)
      +            '0 2' => 'Retro',
      +            '0 4' => 'High Key',
      +            '0 8' => 'Sepia',
      +            '0 16' => 'High Dynamic',
      +            '0 32' => 'Miniature Effect',
      +            '0 256' => 'Low Key',
      +            '0 512' => 'Toy Effect',
      +            '0 1024' => 'Dynamic Monochrome',
      +            '0 2048' => 'Soft Focus',
      +            '0 4096' => 'Impressive Art',
      +            '0 8192' => 'Cross Process',
      +            '0 16384' => 'One Point Color',
      +            '0 32768' => 'Star Filter',
      +            '0 524288' => 'Old Days',
      +            '0 1048576' => 'Sunshine',
      +            '0 2097152' => 'Bleach Bypass',
      +            '0 4194304' => 'Toy Pop',
      +            '0 8388608' => 'Fantasy',
      +            '0 33554432' => 'Monochrome',
      +            '0 67108864' => 'Rough Monochrome',
      +            '0 134217728' => 'Silky Monochrome',
      +        },
      +    },
           0xa3 => { #18
               Name => 'ClearRetouchValue',
               Writable => 'rational64u',
      @@ -1229,9 +1299,15 @@
               Writable => 'int16u',
               PrintConv => { 0 => 'Off', 1 => 'On' },
           },
      +    0xac => { #forum11194
      +        Name => 'MonochromeFilterEffect',
      +        Writable => 'int16u',
      +        PrintConv => { 0 => 'Off', 1 => 'Yellow', 2 => 'Orange', 3 => 'Red', 4 => 'Green' },
      +    },
           0xad => { #forum9360
               Name => 'HighlightShadow',
               Writable => 'int16u',
      +        Format => 'int16s', #forum11194
               Count => 2,
           },
           0xaf => { #PH (is this in UTC maybe? -- sometimes different time zone other times)
      @@ -1242,6 +1318,11 @@
               PrintConv => '$self->ConvertDateTime($val)',
               PrintConvInv => '$self->InverseDateTime($val)',
           },
      +    0xb3 => { #forum11194
      +        Name => 'VideoBurstResolution',
      +        Writable => 'int16u',
      +        PrintConv => { 1 => 'Off or 4K', 4 => '6K' },
      +    },
           0xb4 => { #forum9429
               Name => 'MultiExposure',
               Writable => 'int16u',
      @@ -1263,6 +1344,10 @@
                   0x28 => '4K Burst (Start/Stop)',
                   0x48 => '4K Pre-burst',
                   0x108 => 'Loop Recording',
      +            0x810 => '6K Burst',
      +            0x820 => '6K Burst (Start/Stop)',
      +            0x408 => 'Focus Stacking', #forum11563
      +            0x1001 => 'High Resolution Mode',
               },
           },
           0xbc => { #forum9282
      @@ -1270,15 +1355,86 @@
               Writable => 'int16u',
               PrintConv => { 0 => 'Off', 1 => 'Auto' },
           },
      +    0xbd => { #forum11194
      +        Name => 'FocusBracket',
      +        Notes => 'positive is further, negative is closer',
      +        Writable => 'int16u',
      +        Format => 'int16s',
      +    },
      +    0xbe => { #forum11194
      +        Name => 'LongExposureNRUsed',
      +        Writable => 'int16u',
      +        PrintConv => { 0 => 'No', 1 => 'Yes' },
      +    },
      +    0xbf => { #forum11194
      +        Name => 'PostFocusMerging',
      +        Format => 'int32u',
      +        Count => 2,
      +        PrintConv => { '0 0' => 'Post Focus Auto Merging or None' },
      +    },
      +    0xc1 => { #forum11194
      +        Name => 'VideoPreburst',
      +        Writable => 'int16u',
      +        PrintConv => { 0 => 'No', 1 => '4K or 6K' },
      +    },
      +    0xca => { #forum11459
      +        Name => 'SensorType',
      +        Writable => 'int16u',
      +        PrintConv => {
      +            0 => 'Multi-aspect',
      +            1 => 'Standard',
      +        },
      +    },
      +    # Note: LensTypeMake and LensTypeModel are combined into a Composite LensType tag
      +    # defined in Olympus.pm which has the same values as Olympus:LensType
      +    0xc4 => { #PH
      +        Name => 'LensTypeMake',
      +        Condition => '$format eq "int16u" and $$valPt ne "\xff\xff"',   # (ignore make 65535 for now)
      +        Writable => 'int16u',
      +    },
      +    0xc5 => { #PH
      +        Name => 'LensTypeModel',
      +        Condition => '$format eq "int16u"',
      +        Writable => 'int16u',
      +        RawConv => q{
      +            return undef unless $val;
      +            require Image::ExifTool::Olympus; # (to load Composite LensID)
      +            return $val;
      +        },
      +        ValueConv => '$_=sprintf("%.4x",$val); s/(..)(..)/$2 $1/; $_',
      +        ValueConvInv => '$val =~ s/(..) (..)/$2$1/; hex($val)',
      +    },
           0xd1 => { #PH
               Name => 'ISO',
               RawConv => '$val > 0xfffffff0 ? undef : $val',
               Writable => 'int32u',
           },
      +    0xd2 => { #forum11194
      +        Name => 'MonochromeGrainEffect',
      +        Writable => 'int16u',
      +        PrintConv => {
      +            0 => 'Off',
      +            1 => 'Low',
      +            2 => 'Standard',
      +            3 => 'High',
      +        },
      +    },
           0xd6 => { #PH (DC-S1)
               Name => 'NoiseReductionStrength',
               Writable => 'rational64s',
           },
      +    0xe4 => { #IB
      +        Name => 'LensTypeModel',
      +        Condition => '$format eq "int16u"',
      +        Writable => 'int16u',
      +        RawConv => q{
      +            return undef unless $val;
      +            require Image::ExifTool::Olympus; # (to load Composite LensID)
      +            return $val;
      +        },
      +        ValueConv => '$_=sprintf("%.4x",$val); s/(..)(..)/$2 $1/; $_',
      +        ValueConvInv => '$val =~ s/(..) (..)/$2$1/; hex($val)',
      +    },
           0x0e00 => {
               Name => 'PrintIM',
               Description => 'Print Image Matching',
      @@ -1949,7 +2105,7 @@
           WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
           CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
           GROUPS => { 0 => 'MakerNotes', 1 => 'Leica', 2 => 'Camera' },
      -    NOTES => 'This information is written by the Leica S (Typ 007).',
      +    NOTES => 'This information is written by the Leica S (Typ 007) and M10 models.',
           0x304 => {
               Name => 'FocusDistance',
               Notes => 'focus distance in mm for most models, but cm for others',
      @@ -1970,6 +2126,40 @@
               PrintConvInv => '$val',
           },
           # 0x340 - ImageUniqueID
      +    0x34c => { #23
      +        Name => 'UserProfile',
      +        Writable => 'string',
      +    },
      +    # 0x357 int32u - 0=DNG, 3162=JPG (ref 23)
      +    0x359 => { #23
      +        Name => 'ISOSelected',
      +        Writable => 'int32s',
      +        PrintConv => {
      +            0 => 'Auto',
      +            OTHER => sub { return shift; },
      +        },
      +    },
      +    0x35a => { #23
      +        Name => 'FNumber',
      +        Writable => 'int32s',
      +        ValueConv => '$val / 1000',
      +        ValueConvInv => '$val * 1000',
      +        PrintConv => 'sprintf("%.1f", $val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x035b => { #IB
      +        Name => 'CorrelatedColorTemp', # (in Kelvin)
      +        Writable => 'int16u',
      +    },
      +    0x035c => { #IB
      +        Name => 'ColorTint', # (same units as Adobe is using)
      +        Writable => 'int16s',
      +    },
      +    0x035d => { #IB
      +        Name => 'WhitePoint', # (x/y)
      +        Writable => 'rational64u',
      +        Count => 2,
      +    },
       );
       
       # Type 2 tags (ref PH)
      @@ -2306,7 +2496,8 @@
                       # AdvancedSceneType=5 for automatic mode iA (ref 19)
                       if ($prt) {
                           return $prt if $v[1] == 1;
      -                    return "$prt (intelligent auto)" if $v[1] == 5;
      +                    return "$prt (intelligent auto)" if $v[1] == 5; #forum11523
      +                    return "$prt (intelligent auto plus)" if $v[1] == 7; #forum11523
                           return "$prt ($v[1])";
                       }
                       return "Unknown ($val)";
      @@ -2329,10 +2520,19 @@
                   '9 3' => 'Objects', #(FZ28)
                   '9 4' => 'Creative Macro', #(FZ28)
                   #'9 5' - ? (GF3)
      +            '18 1' => 'High Sensitivity', #forum11523 (TZ5)
      +            '20 1' => 'Fireworks', #forum11523 (TZ5)
                   '21 2' => 'Illuminations', #(FZ28)
                   '21 4' => 'Creative Night Scenery', #(FZ28)
                   #'21 5' - ? (LX3)
      +            '26 1' => 'High-speed Burst (shot 1)', #forum11523 (TZ5)
      +            '27 1' => 'High-speed Burst (shot 2)', #forum11523 (TZ5)
      +            '29 1' => 'Snow', #forum11523 (TZ5)
      +            '30 1' => 'Starry Sky', #forum11523 (TZ5)
      +            '31 1' => 'Beach', #forum11523 (TZ5)
      +            '36 1' => 'High-speed Burst (shot 3)', #forum11523 (TZ5)
                   #'37 5' - ? (various)
      +            '39 1' => 'Aerial Photo / Underwater / Multi-aspect', #forum11523 (TZ5)
                   '45 2' => 'Cinema', #(GF2)
                   '45 7' => 'Expressive', #(GF1,GF2)
                   '45 8' => 'Retro', #(GF1,GF2)
      @@ -2637,7 +2837,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PanasonicRaw.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PanasonicRaw.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PanasonicRaw.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PanasonicRaw.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -21,7 +21,7 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::Exif;
       
      -$VERSION = '1.24';
      +$VERSION = '1.25';
       
       sub ProcessJpgFromRaw($$$);
       sub WriteJpgFromRaw($$$);
      @@ -512,6 +512,7 @@
               # when format is int32u (S models), these values have been observed (ref IB):
               #  256 - Leica lens
               #  257 - Lumix lens
      +        #  258 - ? (seen once)
           },
           0x1202 => { #IB
               Name => 'LensTypeModel',
      @@ -531,14 +532,45 @@
               PrintConv => '"$val mm"',
               PrintConvInv => '$val=~s/\s*mm$//;$val',
           },
      +    # 0x1300 - incident light value? (ref forum11395)
      +    0x1301 => { #forum11395
      +        Name => 'ApertureValue',
      +        Writable => 'int16s',
      +        Priority => 0,
      +        ValueConv => '2 ** ($val / 512)',
      +        ValueConvInv => '$val>0 ? 512*log($val)/log(2) : 0',
      +        PrintConv => 'sprintf("%.1f",$val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x1302 => { #forum11395
      +        Name => 'ShutterSpeedValue',
      +        Writable => 'int16s',
      +        Priority => 0,
      +        ValueConv => 'abs($val/256)<100 ? 2**(-$val/256) : 0',
      +        ValueConvInv => '$val>0 ? -256*log($val)/log(2) : -25600',
      +        PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
      +        PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    0x1303 => { #forum11395
      +        Name => 'SensitivityValue',
      +        Writable => 'int16s',
      +        ValueConv => '$val / 256',
      +        ValueConvInv => 'int($val * 256)',
      +    },
           0x1305 => { #forum9384
               Name => 'HighISOMode',
               Writable => 'int16u',
               RawConv => '$val || undef',
               PrintConv => { 1 => 'On', 2 => 'Off' },
           },
      +    # 0x1306 EV for some models like the GX8 (forum11395)
           # 0x140b - scaled overall black level? (ref forum9281)
           # 0x1411 - scaled black level per channel difference (ref forum9281)
      +    0x1412 => { #forum11397
      +        Name => 'FacesDetected',
      +        Writable => 'int8u',
      +        PrintConv => { 0 => 'No', 1 => 'Yes' },
      +    },
           # 0x2000 - WB tungsten=3, daylight=4 (ref forum9467)
           # 0x2009 - scaled black level per channel (ref forum9281)
           # 0x3000-0x310b - red/blue balances * 1024 (ref forum9467)
      @@ -600,6 +632,8 @@
               Writable => 'int8u',
               PrintConv => \%Image::ExifTool::Exif::orientation,
           },
      +    # 0x3504 = Tag 0x1301+0x1302-0x1303 (Bv = Av+Tv-Sv) (forum11395)
      +    # 0x3505 - same as 0x1300 (forum11395)
           0x3600 => { #forum9396
               Name => 'WhiteBalanceDetected',
               Writable => 'int8u',
      @@ -818,7 +852,10 @@
               $out = $et->Options('TextOut');
               print $out '--- DOC1:JpgFromRaw ',('-'x56),"\n";
           }
      +    # fudge HtmlDump base offsets to show as a stand-alone JPEG
      +    $$et{BASE_FUDGE} = $$et{BASE};
           my $rtnVal = $et->ProcessJPEG(\%dirInfo);
      +    $$et{BASE_FUDGE} = 0;
           # restore necessary variables for continued RW2/RWL processing
           $$et{BASE} = 0;
           $$et{FILE_TYPE} = 'TIFF';
      @@ -851,7 +888,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Parrot.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Parrot.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Parrot.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Parrot.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -13,7 +13,7 @@
       use strict;
       use vars qw($VERSION);
       
      -$VERSION = '1.00';
      +$VERSION = '1.01';
       
       sub Process_mett($$$);
       
      @@ -703,6 +703,7 @@
               $et->HandleTag($tagTbl, $id, undef,
                   DataPt  => $dataPt,
                   DataPos => $dataPos,
      +            Base    => $$dirInfo{Base},
                   Start   => $pos,
                   Size    => $size,
               );
      @@ -730,7 +731,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PCX.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PCX.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PCX.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PCX.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -114,7 +114,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PDF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PDF.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PDF.pm	2020-02-14 12:25:05.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PDF.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -21,7 +21,7 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       require Exporter;
       
      -$VERSION = '1.49';
      +$VERSION = '1.54';
       
       sub FetchObject($$$$);
       sub ExtractObject($$;$$);
      @@ -280,7 +280,12 @@
               ConvertToDict => 1,
           },
           Cs1 => {
      -        SubDirectory => { TagTable => 'Image::ExifTool::PDF::Cs1' },
      +        SubDirectory => { TagTable => 'Image::ExifTool::PDF::DefaultRGB' },
      +        ConvertToDict => 1, # (just in case)
      +    },
      +    CS0 => {
      +        SubDirectory => { TagTable => 'Image::ExifTool::PDF::DefaultRGB' },
      +        ConvertToDict => 1, # (just in case)
           },
       );
       
      @@ -291,14 +296,7 @@
           },
       );
       
      -# tags in PDF Cs1 dictionary
      -%Image::ExifTool::PDF::Cs1 = (
      -    _stream => {
      -        SubDirectory => { TagTable => 'Image::ExifTool::ICC_Profile::Main' },
      -    },
      -);
      -
      -# tags in PDF ICCBased dictionary
      +# tags in PDF ICCBased, Cs1 and CS0 dictionaries
       %Image::ExifTool::PDF::ICCBased = (
           _stream => {
               SubDirectory => { TagTable => 'Image::ExifTool::ICC_Profile::Main' },
      @@ -703,9 +701,11 @@
           my $raf = $$et{RAF};
           $raf->Seek($offset+$$et{PDFBase}, 0) or $et->Warn("Bad $tag offset"), return undef;
           # verify that we are reading the expected object
      -    $raf->ReadLine($data) or $et->Warn("Error reading $tag data"), return undef;
           ($obj = $ref) =~ s/R/obj/;
      -    unless ($data =~ s/^$obj//) {
      +    for (;;) {
      +        $raf->ReadLine($data) or $et->Warn("Error reading $tag data"), return undef;
      +        last if $data =~ s/^$obj//;
      +        next if $data =~ /^\s+$/;   # keep reading if this was a blank line
               # handle cases where other whitespace characters are used in the object ID string
               while ($data =~ /^\d+(\s+\d+)?\s*$/) {
                   $raf->ReadLine($dat);
      @@ -717,6 +717,7 @@
                   $et->Warn("$tag object ($obj) not found at offset $offset");
                   return undef;
               }
      +        last;
           }
           # read the first line of data from the object (ignoring blank lines and comments)
           for (;;) {
      @@ -1986,16 +1987,17 @@
                   } else {
                       $val = ReadPDFValue($val);
                   }
      -            # convert from UTF-16 (big endian) to UTF-8 or Latin if necessary
      -            # unless this is binary data (hex-encoded strings would not have been converted)
                   if (ref $val) {
                       if (ref $val eq 'ARRAY') {
      +                    delete $$et{LIST_TAGS}{$tagInfo} if $$tagInfo{List};
                           my $v;
                           foreach $v (@$val) {
                               $et->FoundTag($tagInfo, $v);
                           }
                       }
                   } elsif (defined $val) {
      +                # convert from UTF-16 (big endian) to UTF-8 or Latin if necessary
      +                # unless this is binary data (hex-encoded strings would not have been converted)
                       my $format = $$tagInfo{Format} || $$tagInfo{Writable} || 'string';
                       $val = ConvertPDFDate($val) if $format eq 'date';
                       if (not $$tagInfo{Binary} and $val =~ /[\x18-\x1f\x80-\xff]/) {
      @@ -2161,6 +2163,7 @@
           # set input record separator
           local $/ = $ws =~ /(\x0d\x0a|\x0d|\x0a)/ ? $1 : "\x0a";
           my (%xref, @mainDicts, %loaded, $mainFree);
      +    my ($xrefSize, $mainDictSize) = (0, 0);
           # initialize variables to capture when rewriting
           if ($capture) {
               $capture->{startxref} = $xr;
      @@ -2203,6 +2206,7 @@
                           $raf->Read($buff, 20) == 20 or return -6;
                           $buff =~ /^\s*(\d{10}) (\d{5}) (f|n)/s or return -4;
                           my $num = $start + $i;
      +                    $xrefSize = $num if $num > $xrefSize;
                           # locate object to generate entry from stream if necessary
                           # (must do this before we test $xref{$num})
                           LocateAnyObject(\%xref, $num) if $xref{dicts};
      @@ -2239,6 +2243,8 @@
                   $et->Warn('Error loading secondary dictionary');
                   next;
               }
      +        # keep track of total trailer dictionary Size
      +        $mainDictSize = $$mainDict{Size} if $$mainDict{Size} and $$mainDict{Size} > $mainDictSize;
               if ($loadXRefStream) {
                   # decode and save our XRef stream from PDF-1.5 file
                   # (but parse it later as required to save time)
      @@ -2277,6 +2283,10 @@
               # load previous xref table if it exists
               push @xrefOffsets, $$mainDict{Prev}, 'Prev' if $$mainDict{Prev};
           }
      +    if ($xrefSize > $mainDictSize) {
      +        my $str = "Objects in xref table ($xrefSize) exceed trailer dictionary Size ($mainDictSize)";
      +        $capture ? $et->Error($str) : $et->Warn($str);
      +    }
       #
       # extract encryption information if necessary
       #
      @@ -2378,7 +2388,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Pentax.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Pentax.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Pentax.pm	2020-02-14 12:24:25.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Pentax.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -58,7 +58,7 @@
       use Image::ExifTool::GPS;
       use Image::ExifTool::HP;
       
      -$VERSION = '3.30';
      +$VERSION = '3.40';
       
       sub CryptShutterCount($$);
       sub PrintFilter($$$);
      @@ -322,6 +322,7 @@
           '8 21' => 'Sigma 17-50mm F2.8 EX DC OS HSM', #26
           '8 22' => 'Sigma 85mm F1.4 EX DG HSM', #26
           '8 23' => 'Sigma 70-200mm F2.8 APO EX DG OS HSM', #27
      +    '8 24' => 'Sigma 17-70mm F2.8-4 DC Macro OS HSM', #27
           '8 25' => 'Sigma 17-50mm F2.8 EX DC HSM', #Exiv2
           '8 27' => 'Sigma 18-200mm F3.5-6.3 II DC HSM', #27
           '8 28' => 'Sigma 18-250mm F3.5-6.3 DC Macro HSM', #27
      @@ -338,6 +339,9 @@
           '8 63' => 'HD PENTAX-D FA 15-30mm F2.8 ED SDM WR', #PH
           '8 64' => 'HD PENTAX-D FA* 50mm F1.4 SDM AW', #27
           '8 65' => 'HD PENTAX-D FA 70-210mm F4 ED SDM WR', #PH
      +    '8 66' => 'HD PENTAX-D FA 85mm F1.4 ED SDM AW', #James O'Neill
      +    '8 67' => 'HD PENTAX-D FA 21mm F2.4 ED Limited DC WR', #ChristianShulz
      +    '8 195' => 'HD PENTAX DA* 16-50mm F2.8 ED PLM AW', #27
           '8 196' => 'HD PENTAX-DA* 11-18mm F2.8 ED DC AW', #29
           '8 197' => 'HD PENTAX-DA 55-300mm F4.5-6.3 ED PLM WR RE', #29
           '8 198' => 'smc PENTAX-DA L 18-50mm F4-5.6 DC WR RE', #29
      @@ -546,6 +550,8 @@
           0x13222 => 'K-70', #29 (Ricoh)
           0x1322c => 'KP', #29 (Ricoh)
           0x13240 => 'K-1 Mark II', # (Ricoh)
      +    0x13254 => 'K-3 Mark III', #IB (Ricoh)
      +    0x13290 => 'WG-70', # (Ricoh)
       );
       
       # Pentax city codes - (PH, Optio WP)
      @@ -2219,6 +2225,7 @@
                   17 => '17 (K-70)', #29
                   18 => '18 (KP)', #PH
                   19 => '19 (GR III)', #PH
      +            20 => '20 (K-3III)', #PH
               },
           },
           0x0067 => { #PH (K-5)
      @@ -2451,6 +2458,7 @@
                   '2 0' => 'Standard',
                   '3 0' => 'Fast',
                   # '1 108' - seen for GR III
      +            # '3 84' - seen for K-3III
               },
           },
           0x007b => { #PH (K-5)
      @@ -2552,6 +2560,14 @@
           },
           # 0x0086 - int8u: 0, 111[Sport,Pet] (Q) - related to Tracking FocusMode?
           # 0x0087 - int8u: 0 (Q)
      +    0x0087 => { #PH
      +        Name => 'ShutterType',
      +        Writable => 'int8u',
      +        PrintConv => {
      +            0 => 'Normal', # ('Mechanical' if the camera has a mechanical shutter)
      +            1 => 'Electronic', # (KP)
      +        },
      +    },
           0x0088 => { #PH
               Name => 'NeutralDensityFilter',
               Writable => 'int8u',
      @@ -2586,8 +2602,9 @@
                   },
               },
           },
      -    0x0095 => { #31
      +    0x0095 => [{ #31
               Name => 'SkinToneCorrection',
      +        Condition => '$count == 2',
               Writable => 'int8s',
               Count => 2,
               PrintConv => {
      @@ -2595,7 +2612,15 @@
                   '1 1' => 'On (type 1)',
                   '1 2' => 'On (type 2)',
               },
      -    },
      +    },{
      +        Name => 'SkinToneCorrection',
      +        Condition => '$count == 3',
      +        Writable => 'int8s',
      +        Count => 3,
      +        PrintConv => {
      +            '0 0 0' => 'Off',
      +        },
      +    }],
           0x0096 => { #31
               Name => 'ClarityControl',
               Writable => 'int8s',
      @@ -2831,8 +2856,18 @@
               # High:     0000000238c0e960fde0f9203140f5a0fce0f1e031403f00e600fb00f7803760f120fc60ef403460
               # Very High:000000023d20e520fdc0f7203420f4c0fb60ee6036404400e120fae0f5403aa0f020fac0eb403a00
           },
      -    # 0x021c - undef[18] (K-5)
      -    # 0x021d - undef[18] (K-5)
      +    0x021c => { #IB
      +        Name => 'ColorMatrixA2',
      +        Format => 'int16s',
      +        Writable => 'undef',
      +        Count => 9,
      +    },
      +    0x021d => { #IB
      +        Name => 'ColorMatrixB2',
      +        Format => 'int16s',
      +        Writable => 'undef',
      +        Count => 9,
      +    },
           # 0x021e - undef[8] (K-5, Q)
           0x021f => { #JD
               Name => 'AFInfo',
      @@ -2884,13 +2919,20 @@
               Writable => 'string',
               Notes => 'left blank by some cameras',
           },
      -    0x022a => { #PH (K-5)
      +    0x022a => [{ #PH (RICOH models (GR III))
      +        Name => 'FilterInfo',
      +        Condition => '$$self{Make} =~ /^RICOH/',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::Pentax::FilterInfo',
      +            ByteOrder => 'LittleEndian',
      +        },
      +    },{ #PH (K-5)
               Name => 'FilterInfo',
               SubDirectory => {
                   TagTable => 'Image::ExifTool::Pentax::FilterInfo',
                   ByteOrder => 'BigEndian',
               },
      -    },
      +    }],
           0x022b => { #PH (K-5)
               Name => 'LevelInfo',
               SubDirectory => { TagTable => 'Image::ExifTool::Pentax::LevelInfo' },
      @@ -4309,15 +4351,15 @@
               Name => 'LC3',
               %lensCode,
           },
      -    5 => { # LC4 = aberation correction, near distance data
      +    5 => { # LC4 = aberration correction, near distance data
               Name => 'LC4',
               %lensCode,
           },
      -    6 => { # LC5 = light color aberation correction data
      +    6 => { # LC5 = light color aberration correction data
               Name => 'LC5',
               %lensCode,
           },
      -    7 => { # LC6 = open aberation data
      +    7 => { # LC6 = open aberration data
               Name => 'LC6',
               %lensCode,
           },
      @@ -6273,7 +6315,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PGF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PGF.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PGF.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PGF.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -119,7 +119,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PhaseOne.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PhaseOne.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PhaseOne.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PhaseOne.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -15,7 +15,7 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::Exif;
       
      -$VERSION = '1.06';
      +$VERSION = '1.07';
       
       sub WritePhaseOne($$$);
       sub ProcessPhaseOne($$$);
      @@ -73,10 +73,11 @@
               PrintConv => { #PH
                   1 => 'RAW 1', #? (encrypted)
                   2 => 'RAW 2', #? (encrypted)
      -            3 => 'IIQ L',
      +            3 => 'IIQ L', # (now "L14", ref IB)
                   # 4?
                   5 => 'IIQ S',
      -            6 => 'IIQ Sv2',
      +            6 => 'IIQ Sv2', # (now "S14" for "IIQ 14 Smart" and "IIQ 14 Sensor+", ref IB)
      +            8 => 'IIQ L16', #IB ("IIQ 16 Extended" and "IIQ 16 Large")
               },
           },
           0x010f => {
      @@ -711,7 +712,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PhotoCD.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PhotoCD.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PhotoCD.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PhotoCD.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -484,7 +484,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PhotoMechanic.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PhotoMechanic.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PhotoMechanic.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PhotoMechanic.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -236,7 +236,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Photoshop.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Photoshop.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Photoshop.pm	2020-02-14 12:24:02.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Photoshop.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -28,7 +28,7 @@
       use vars qw($VERSION $AUTOLOAD $iptcDigestInfo);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.64';
      +$VERSION = '1.65';
       
       sub ProcessPhotoshop($$$);
       sub WritePhotoshop($$$);
      @@ -982,11 +982,18 @@
                   DataPos => $$dirInfo{DataPos},
                   Size    => $size,
                   Start   => $pos,
      +            Base    => $$dirInfo{Base},
                   Parent  => $$dirInfo{DirName},
               );
               $size += 1 if $size & 0x01; # size is padded to an even # bytes
               $pos += $size;
           }
      +    # warn about incorrect IPTCDigest
      +    if ($$et{VALUE}{IPTCDigest} and $$et{VALUE}{CurrentIPTCDigest} and
      +        $$et{VALUE}{IPTCDigest} ne $$et{VALUE}{CurrentIPTCDigest})
      +    {
      +        $et->WarnOnce('IPTCDigest is not current. XMP may be out of sync');
      +    }
           delete $$et{LOW_PRIORITY_DIR}{'*'};
           return $success;
       }
      @@ -1136,7 +1143,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PICT.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PICT.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PICT.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PICT.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -1236,7 +1236,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PLIST.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PLIST.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PLIST.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PLIST.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -438,7 +438,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PLUS.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PLUS.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PLUS.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PLUS.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -2586,7 +2586,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PNG.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PNG.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PNG.pm	2020-02-14 12:23:48.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PNG.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -36,7 +36,7 @@
       use vars qw($VERSION $AUTOLOAD %stdCase);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.54';
      +$VERSION = '1.60';
       
       sub ProcessPNG_tEXt($$$);
       sub ProcessPNG_iTXt($$$);
      @@ -89,10 +89,10 @@
       
       # data and text chunk types
       my %isDatChunk = ( IDAT => 1, JDAT => 1, JDAA => 1 );
      -my %isTxtChunk = ( tEXt => 1, zTXt => 1, iTXt => 1 );
      +my %isTxtChunk = ( tEXt => 1, zTXt => 1, iTXt => 1, eXIf => 1 );
       
       # chunks that we shouldn't move other chunks across (ref 3)
      -my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND => 1, 
      +my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND => 1,
                          DHDR => 1, BASI => 1, CLON => 1, PAST => 1, SHOW => 1, MAGN => 1 );
       
       # PNG chunks
      @@ -142,11 +142,14 @@
           },
           gAMA => {
               Name => 'Gamma',
      +        Writable => 1,
      +        Protected => 1,
               Notes => q{
                   ExifTool reports the gamma for decoding the image, which is consistent with
                   the EXIF convention, but is the inverse of the stored encoding gamma
               },
               ValueConv => 'my $a=unpack("N",$val);$a ? int(1e9/$a+0.5)/1e4 : $val',
      +        ValueConvInv => 'pack("N", int(1e5/$val+0.5))',
           },
           gIFg => {
               Name => 'GIFGraphicControlExtension',
      @@ -166,7 +169,10 @@
           },
           iCCP => {
               Name => 'ICC_Profile',
      -        Notes => 'this is where ExifTool will write a new ICC_Profile',
      +        Notes => q{
      +            this is where ExifTool will write a new ICC_Profile.  When creating a new
      +            ICC_Profile, the SRGBRendering tag should be deleted if it exists
      +        },
               SubDirectory => {
                   TagTable => 'Image::ExifTool::ICC_Profile::Main',
                   ProcessProc => \&ProcessPNG_Compressed,
      @@ -174,7 +180,12 @@
           },
          'iCCP-name' => {
               Name => 'ProfileName',
      -        Notes => 'not a real tag ID, this tag represents the iCCP profile name',
      +        Writable => 1,
      +        FakeTag => 1, # (not a real PNG tag, so don't try to write it)
      +        Notes => q{
      +            not a real tag ID, this tag represents the iCCP profile name, and may only
      +            be written when the ICC_Profile is written
      +        },
           },
       #   IDAT
       #   IEND
      @@ -227,7 +238,11 @@
           },
           sRGB => {
               Name => 'SRGBRendering',
      +        Writable => 1,
      +        Protected => 1,
      +        Notes => 'this chunk should not be present if an iCCP chunk exists',
               ValueConv => 'unpack("C",$val)',
      +        ValueConvInv => 'pack("C",$val)',
               PrintConv => {
                   0 => 'Perceptual',
                   1 => 'Relative Colorimetric',
      @@ -259,6 +274,7 @@
           },
           tRNS => {
               Name => 'Transparency',
      +        # may have as many entries as the PLTE table, but who wants to see all that?
               ValueConv => q{
                   return \$val if length($val) > 6;
                   join(" ",unpack($Image::ExifTool::PNG::colorType == 3 ? "C*" : "n*", $val));
      @@ -311,6 +327,18 @@
           },
           # fcTL - animation frame control for each frame
           # fdAT - animation data for each frame
      +    iDOT => { # (ref NealKrawetz)
      +        Name => 'AppleDataOffsets',
      +        Binary => 1,
      +        # Apple offsets into data relative to start of iDOT chunk:
      +        #    int32u Divisor  [only ever seen 2]
      +        #    int32u Unknown  [always 0]
      +        #    int32u TotalDividedHeight  [image height from IDHR/Divisor]
      +        #    int32u Size  [always 40 / 0x28; size of this chunk]
      +        #    int32u DividedHeight1
      +        #    int32u DividedHeight2
      +        #    int32u IDAT_Offset2 [location of IDAT with start of DividedHeight2 segment]
      +    },
       );
       
       # PNG IHDR chunk
      @@ -466,6 +494,8 @@
               if the L option is used and Compress::Zlib is available.  Raw profile
               information is always created as compressed zTXt if Compress::Zlib is
               available, or tEXt otherwise.  Standard XMP is written as uncompressed iTXt.
      +        User-defined tags may set an 'iTXt' flag in the tag definition to be written
      +        only as iTXt.
       
               Alternate languages are accessed by suffixing the tag name with a '-',
               followed by an RFC 3066 language code (eg. "PNG:Comment-fr", or
      @@ -963,7 +993,7 @@
               $$tagInfo{LangCode} = $lang if $lang;
               # make unknown profiles binary data type
               $$tagInfo{Binary} = 1 if $tag =~ /^Raw profile type /;
      -        $verbose and $et->VPrint(0, "  | [adding $tag]\n");
      +        $verbose and $et->VPrint(0, "  [adding $tag]\n");
               AddTagToTable($tagTablePtr, $tag, $tagInfo);
           }
       #
      @@ -1144,11 +1174,16 @@
           if ($tagInfo and $$tagInfo{Name} eq 'ICC_Profile') {
               $et->VerboseDir('iCCP');
               $tagTablePtr = \%Image::ExifTool::PNG::Main;
      -        if (length($tag) and not $outBuff) {
      -            FoundPNG($et, $tagTablePtr, 'iCCP-name', $tag);
      -        }
      +        FoundPNG($et, $tagTablePtr, 'iCCP-name', $tag) if length($tag) and not $outBuff;
               $success = FoundPNG($et, $tagTablePtr, 'iCCP', $val, $compressed, $outBuff);
      -        $$outBuff = $hdr . $$outBuff if $outBuff and $$outBuff;
      +        if ($outBuff and $$outBuff) {
      +            my $profileName = $et->GetNewValue($Image::ExifTool::PNG::Main{'iCCP-name'});
      +            if (defined $profileName) {
      +                $hdr = $profileName . substr($hdr, length $tag);
      +                $et->VerboseValue("+ PNG:ProfileName", $profileName);
      +            }
      +            $$outBuff = $hdr . $$outBuff;
      +        }
           } else {
               $success = FoundPNG($et, $tagTablePtr, $tag, $val, $compressed, $outBuff, 'Latin');
           }
      @@ -1342,8 +1377,7 @@
                   } elsif ($hdrChunk eq 'IHDR' and $chunk eq 'CgBI') {
                       $et->Warn('Non-standard PNG image (Apple iPhone format)');
                   } else {
      -                $et->Warn("$fileType image did not start with $hdrChunk");
      -                last;
      +                $et->WarnOnce("$fileType image did not start with $hdrChunk");
                   }
               }
               if ($outfile and ($isDatChunk{$chunk} or $chunk eq $endChunk) and @txtOffset) {
      @@ -1371,9 +1405,8 @@
                       # to add it as a text profile chunk if this isn't successful
                       # (ie. if Compress::Zlib wasn't available)
                       Add_iCCP($et, $outfile);
      -                AddChunks($et, $outfile) or $err = 1;   # all all text chunks
      -                # add EXIF before end chunk if not found already
      -                AddChunks($et, $outfile, 'IFD0') if $chunk eq $endChunk;
      +                AddChunks($et, $outfile) or $err = 1;           # add all text chunks
      +                AddChunks($et, $outfile, 'IFD0') or $err = 1;   # and eXIf chunk
                   } elsif ($chunk eq 'PLTE') {
                       # iCCP chunk must come before PLTE (and IDAT, handled above)
                       # (ignore errors -- will add later as text profile if this fails)
      @@ -1411,8 +1444,16 @@
                   next;
               }
               if ($datChunk) {
      -            # skip over data chunks if possible
      -            unless ($verbose or $validate or $outfile) {
      +            my $chunkSizeLimit = 10000000;  # largest chunk to read into memory
      +            if ($outfile) {
      +                # avoid loading very large data chunks into memory
      +                if ($len > $chunkSizeLimit) {
      +                    Write($outfile, $hbuf) or $err = 1;
      +                    Image::ExifTool::CopyBlock($raf, $outfile, $len+4) or $et->Error("Error copying $datChunk");
      +                    next;
      +                }
      +            # skip over data chunks if possible/necessary
      +            } elsif (not $validate or $len > $chunkSizeLimit) {
                       $raf->Seek($len + 4, 1) or $et->Warn('Seek error'), last;
                       next;
                   }
      @@ -1425,7 +1466,7 @@
                   } else {
                       $msg = 'fixed';
                   }
      -            $et->WarnOnce("Text chunk(s) found after $$et{FileType} $wasDat ($msg)", 1);
      +            $et->WarnOnce("Text/EXIF chunk(s) found after $$et{FileType} $wasDat ($msg)", 1);
               }
               # read chunk data and CRC
               unless ($raf->Read($dbuf,$len)==$len and $raf->Read($cbuf, 4)==4) {
      @@ -1520,7 +1561,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PostScript.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PostScript.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PostScript.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PostScript.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -777,7 +777,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PPM.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PPM.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PPM.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PPM.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -16,7 +16,7 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.09';
      +$VERSION = '1.10';
       
       #------------------------------------------------------------------------------
       # Read or write information in a PPM/PGM/PBM image
      @@ -48,19 +48,19 @@
               # note: may contain comments starting with '#'
               if ($buff =~ /\G#/gc) {
                   # must read more if we are in the middle of a comment
      -            next unless $buff =~ /\G ?(.*\n(#.*\n)*)\s*/g;
      +            next unless $buff =~ /\G ?(.*[\n\r]+(#.*[\n\r]+)*)\s*/g;
                   $info{Comment} = $1;
                   next if $buff =~ /\G#/gc;
               } else {
                   delete $info{Comment};
               }
      -        next unless $buff =~ /\G(\S+)\s+(\S+)\s/g;
      +        next unless $buff =~ /\G(\S+)\s+(\S+)\s+/g;
               $info{ImageWidth} = $1;
               $info{ImageHeight} = $2;
               $type = [qw{PPM PBM PGM}]->[$num % 3];
               last if $type eq 'PBM'; # (no MaxVal for PBM images)
               if ($buff =~ /\G\s*#/gc) {
      -            next unless $buff =~ /\G ?(.*\n(#.*\n)*)\s*/g;
      +            next unless $buff =~ /\G ?(.*[\n\r]+(#.*[\n\r]+)*)\s*/g;
                   $info{Comment} = '' unless exists $info{Comment};
                   $info{Comment} .= $1;
                   next if $buff =~ /\G#/gc;
      @@ -76,7 +76,7 @@
           }
           if (defined $info{Comment}) {
               $info{Comment} =~ s/^# ?//mg;   # remove "# " at the start of each line
      -        $info{Comment} =~ s/\n$//;      # remove trailing newline
      +        $info{Comment} =~ s/[\n\r]+$//; # remove trailing newline
           }
           $et->SetFileType($type);
           my $len = pos($buff);
      @@ -143,7 +143,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PrintIM.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PrintIM.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PrintIM.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PrintIM.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -112,7 +112,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/PSP.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PSP.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/PSP.pm	2020-01-02 12:08:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/PSP.pm	2022-01-12 22:51:56.000000000 +0000
      @@ -284,7 +284,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Qualcomm.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Qualcomm.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Qualcomm.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Qualcomm.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -1331,7 +1331,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/QuickTime.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/QuickTime.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/QuickTime.pm	2020-02-19 15:36:27.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/QuickTime.pm	2022-02-09 12:08:07.000000000 +0000
      @@ -35,6 +35,8 @@
       #   23) http://atomicparsley.sourceforge.net/mpeg-4files.html
       #   24) https://github.com/sergiomb2/libmp4v2/wiki/iTunesMetadata
       #   25) https://cconcolato.github.io/mp4ra/atoms.html
      +#   26) https://github.com/SamsungVR/android_upload_sdk/blob/master/SDKLib/src/main/java/com/samsung/msca/samsungvr/sdk/UserVideo.java
      +#   27) https://exiftool.org/forum/index.php?topic=11517.0
       #------------------------------------------------------------------------------
       
       package Image::ExifTool::QuickTime;
      @@ -45,7 +47,7 @@
       use Image::ExifTool::Exif;
       use Image::ExifTool::GPS;
       
      -$VERSION = '2.42';
      +$VERSION = '2.74';
       
       sub ProcessMOV($$;$);
       sub ProcessKeys($$$);
      @@ -63,6 +65,7 @@
       sub ProcessRIFFTrailer($$$);
       sub ProcessTTAD($$$);
       sub ProcessNMEA($$$);
      +sub ProcessGPSLog($$$);
       sub SaveMetaKeys($$$);
       # ++^^^^^^^^^^^^++
       sub ParseItemLocation($$);
      @@ -104,7 +107,9 @@
           MQV  => 'video/quicktime',
           HEIC => 'image/heic',
           HEVC => 'image/heic-sequence',
      +    HEICS=> 'image/heic-sequence',
           HEIF => 'image/heif',
      +    HEIFS=> 'image/heif-sequence',
           AVIF => 'image/avif', #PH (NC)
           CRX  => 'video/x-canon-crx',    # (will get overridden)
       );
      @@ -156,8 +161,15 @@
           'F4P ' => 'Protected Video for Adobe Flash Player 9+ (.F4P)', # video/mp4
           'F4V ' => 'Video for Adobe Flash Player 9+ (.F4V)', # video/mp4
           'isc2' => 'ISMACryp 2.0 Encrypted File', # ?/enc-isoff-generic
      -    'iso2' => 'MP4 Base Media v2 [ISO 14496-12:2005]', # video/mp4
      -    'isom' => 'MP4  Base Media v1 [IS0 14496-12:2003]', # video/mp4
      +    'iso2' => 'MP4 Base Media v2 [ISO 14496-12:2005]', # video/mp4 (or audio)
      +    'iso3' => 'MP4 Base Media v3', # video/mp4 (or audio)
      +    'iso4' => 'MP4 Base Media v4', # video/mp4 (or audio)
      +    'iso5' => 'MP4 Base Media v5', # video/mp4 (or audio)
      +    'iso6' => 'MP4 Base Media v6', # video/mp4 (or audio)
      +    'iso7' => 'MP4 Base Media v7', # video/mp4 (or audio)
      +    'iso8' => 'MP4 Base Media v8', # video/mp4 (or audio)
      +    'iso9' => 'MP4 Base Media v9', # video/mp4 (or audio)
      +    'isom' => 'MP4 Base Media v1 [IS0 14496-12:2003]', # video/mp4 (or audio)
           'JP2 ' => 'JPEG 2000 Image (.JP2) [ISO 15444-1 ?]', # image/jp2
           'JP20' => 'Unknown, from GPAC samples (prob non-existent)',
           'jpm ' => 'JPEG 2000 Compound Image (.JPM) [ISO 15444-6]', # image/jpm
      @@ -205,15 +217,22 @@
           'hevc' => 'High Efficiency Image Format HEVC sequence (.HEICS)', # image/heic-sequence
           'mif1' => 'High Efficiency Image Format still image (.HEIF)', # image/heif
           'msf1' => 'High Efficiency Image Format sequence (.HEIFS)', # image/heif-sequence
      +    'heix' => 'High Efficiency Image Format still image (.HEIF)', # image/heif (ref PH, Canon 1DXmkIII)
           'avif' => 'AV1 Image File Format (.AVIF)', # image/avif
           'crx ' => 'Canon Raw (.CRX)', #PH (CR3 or CRM; use Canon CompressorVersion to decide)
       );
       
      -# information for time/date-based tags (time zero is Jan 1, 1904)
      +# information for int32u date/time tags (time zero is Jan 1, 1904)
       my %timeInfo = (
           Notes => 'converted from UTC to local time if the QuickTimeUTC option is set',
      -    # It is not uncommon for brain-dead software to use the wrong time zero,
      -    # so assume a time zero of Jan 1, 1970 if the date is before this
      +    Shift => 'Time',
      +    Writable => 1,
      +    Permanent => 1,
      +    DelValue => 0,
      +    # It is not uncommon for brain-dead software to use the wrong time zero, it should be
      +    # Jan 1, 1904, so assume a time zero of Jan 1, 1970 if the date is before this
      +    # Note: This value will be in UTC if generated by a system that is aware of the time zone
      +    # (also note: this code is duplicated for the CreateDate tag)
           RawConv => q{
               my $offset = (66 * 365 + 17) * 24 * 3600;
               return $val - $offset if $val >= $offset or $$self{OPTIONS}{QuickTimeUTC};
      @@ -222,13 +241,22 @@
               }
               return $val;
           },
      -    Shift => 'Time',
      -    Writable => 1,
      -    Permanent => 1,
      -    DelValue => 0,
      -    # Note: This value will be in UTC if generated by a system that is aware of the time zone
      -    ValueConv => 'ConvertUnixTime($val, $self->Options("QuickTimeUTC"))',
      -    ValueConvInv => 'GetUnixTime($val, $self->Options("QuickTimeUTC")) + (66 * 365 + 17) * 24 * 3600',
      +    RawConvInv => q{
      +        if ($$self{FileType} eq 'CR3' and not $self->Options('QuickTimeUTC')) {
      +            # convert to UTC
      +            my $offset = (66 * 365 + 17) * 24 * 3600;
      +            $val = ConvertUnixTime($val - $offset);
      +            $val = GetUnixTime($val, 1) + $offset;
      +        }
      +        return $val;
      +    },
      +    # (all CR3 files store UTC times - PH)
      +    ValueConv => 'ConvertUnixTime($val, $self->Options("QuickTimeUTC") || $$self{FileType} eq "CR3")',
      +    ValueConvInv => q{
      +        $val = GetUnixTime($val, $self->Options("QuickTimeUTC"));
      +        return undef unless defined $val;
      +        return $val + (66 * 365 + 17) * 24 * 3600;
      +    },
           PrintConv => '$self->ConvertDateTime($val)',
           PrintConvInv => '$self->InverseDateTime($val)',
           # (can't put Groups here because they aren't constant!)
      @@ -243,11 +271,15 @@
           Unknown => 1,
           ValueConv => '$val =~ /^([\x20-\x7e]*)\0*$/ ? $1 : \$val',
       );
      +
      +# multi-language text with 6-byte header
      +my %langText = ( IText => 6 );
      +
       # parsing for most of the 3gp udta language text boxes
      -my %langText = (
      +my %langText3gp = (
           Notes => 'used in 3gp videos',
      -    IText => 6,
           Avoid => 1,
      +    IText => 6,
       );
       
       # 4-character Vendor ID codes (ref PH)
      @@ -409,14 +441,18 @@
           # (note: vide is only processed if specific atoms exist in the VideoSampleDesc)
           vide => { %eeStd,
               JPEG => 'stsd',
      -      # avcC => 'stsd', # (uncomment to parse H264 stream)
           },
           text => { %eeStd },
           meta => { %eeStd },
           sbtl => { %eeStd },
           data => { %eeStd },
           camm => { %eeStd }, # (Insta360)
      -    ''   => { 'gps ' => 'moov' }, # (no handler -- in top level 'moov' box)
      +    ctbx => { %eeStd }, # (GM cars)
      +    ''   => { 'gps ' => 'moov', 'GPS ' => 'main' }, # (no handler -- in top level 'moov' box, and main)
      +);
      +# boxes to save when ExtractEmbedded is set to 2 or higher
      +my %eeBox2 = (
      +    vide => { avcC => 'stsd' }, # (parses H264 video stream)
       );
       
       # QuickTime atoms
      @@ -447,6 +483,17 @@
                   Condition => '$$valPt =~ /^\0\0..(cprt|sttm|ptnm|ptrh|thum|gps |3gf )/s',
                   SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Pittasoft' },
               },{
      +            Name => 'ThumbnailImage',
      +            # (DJI Zenmuse XT2 thermal camera)
      +            Groups => { 2 => 'Preview' },
      +            Condition => '$$valPt =~ /^.{4}mdat\xff\xd8\xff/s',
      +            RawConv => q{
      +                my $len = unpack('N', $val);
      +                return undef if $len <= 8 or $len > length($val);
      +                return substr($val, 8, $len-8);
      +            },
      +            Binary => 1,
      +        },{
                   Unknown => 1,
                   Binary => 1,
               },
      @@ -522,6 +569,7 @@
                   # *** this is where ExifTool writes XMP in MP4 videos (as per XMP spec) ***
                   Condition => '$$valPt=~/^\xbe\x7a\xcf\xcb\x97\xa9\x42\xe8\x9c\x71\x99\x94\x91\xe3\xaf\xac/',
                   WriteGroup => 'XMP',    # (write main XMP tags here)
      +            PreservePadding => 1,
                   SubDirectory => {
                       TagTable => 'Image::ExifTool::XMP::Main',
                       Start => 16,
      @@ -553,10 +601,25 @@
                       Start => 16,
                   },
               },
      +        { # (ref https://github.com/JamesHeinrich/getID3/blob/master/getid3/module.audio-video.quicktime.php)
      +            Name => 'SensorData', # sensor data for the 360Fly
      +            Condition => '$$valPt=~/^\xef\xe1\x58\x9a\xbb\x77\x49\xef\x80\x95\x27\x75\x9e\xb1\xdc\x6f/ and $$self{OPTIONS}{ExtractEmbedded}',
      +            SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Tags360Fly' },
      +        },
      +        {
      +            Name => 'SensorData',
      +            Condition => '$$valPt=~/^\xef\xe1\x58\x9a\xbb\x77\x49\xef\x80\x95\x27\x75\x9e\xb1\xdc\x6f/',
      +            Notes => 'raw 360Fly sensor data without ExtractEmbedded option',
      +            RawConv => q{
      +                $self->WarnOnce('Use the ExtractEmbedded option to decode timed SensorData',3);
      +                return \$val;
      +            },
      +        },
               { #PH (Canon CR3)
                   Name => 'PreviewImage',
                   Condition => '$$valPt=~/^\xea\xf4\x2b\x5e\x1c\x98\x4b\x88\xb9\xfb\xb7\xdc\x40\x6e\x4d\x16/',
                   Groups => { 2 => 'Preview' },
      +            PreservePadding => 1,
                   # 0x00 - undef[16]: UUID
                   # 0x10 - int32u[2]: "0 1" (version and/or item count?)
                   # 0x18 - int32u: PRVW atom size
      @@ -587,6 +650,11 @@
               Groups => { 2 => 'Preview' },
               Binary => 1,
           },
      +   'thm ' => { #PH (70mai A800)
      +        Name => 'ThumbnailImage',
      +        Groups => { 2 => 'Preview' },
      +        Binary => 1,
      +    },
           ardt => { #PH
               Name => 'ARDroneFile',
               ValueConv => 'length($val) > 4 ? substr($val,4) : $val', # remove length
      @@ -632,6 +700,15 @@
           udat => { #PH (GPS NMEA-format log written by Datakam Player software)
               Name => 'GPSLog',
               Binary => 1,    # (actually ASCII, but very lengthy)
      +        Notes => 'parsed to extract GPS separately when ExtractEmbedded is used',
      +        RawConv => q{
      +            $val =~ s/\0+$//;   # remove trailing nulls
      +            if (length $val and $$self{OPTIONS}{ExtractEmbedded}) {
      +                my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
      +                Image::ExifTool::QuickTime::ProcessGPSLog($self, { DataPt => \$val }, $tagTbl);
      +            }
      +            return $val;
      +        },
           },
           # meta - proprietary XML information written by some Flip cameras - PH
           # beam - 16 bytes found in an iPhone video
      @@ -647,7 +724,7 @@
               ValueConv => '$val=~tr/-/:/; $val',
               ValueConvInv => '$val=~s/(\d+):(\d+):/$1-$2-/; $val',
               PrintConv => '$self->ConvertDateTime($val)',
      -        PrintConvInv => '$self->InverseDateTime($val)',
      +        PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
           },
           gps0 => { #PH (DuDuBell M1, VSYS M6L)
               Name => 'GPSTrack',
      @@ -665,6 +742,16 @@
           },
           # gpsa - seen hex "01 20 00 00" (DuDuBell M1, VSYS M6L)
           # gsea - 20 bytes hex "05 00's..." (DuDuBell M1) "05 08 02 01 ..." (VSYS M6L)
      +   'GPS ' => {  # GPS data written by 70mai dashcam (parsed in QuickTimeStream.pl)
      +        Name => 'GPSDataList2',
      +        Unknown => 1,
      +        Binary => 1,
      +    },
      +    sefd => {
      +        Name => 'SamsungTrailer',
      +        SubDirectory => { TagTable => 'Image::ExifTool::Samsung::Trailer' },
      +    },
      +    # 'samn'? - seen in Vantrue N2S sample video
       );
       
       # MPEG-4 'ftyp' atom
      @@ -960,7 +1047,7 @@
       %Image::ExifTool::QuickTime::CleanAperture = (
           PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
           GROUPS => { 2 => 'Video' },
      -    FORMAT => 'rational64u',
      +    FORMAT => 'rational64s',
           0 => 'CleanApertureWidth',
           1 => 'CleanApertureHeight',
           2 => 'CleanApertureOffsetX',
      @@ -1126,6 +1213,15 @@
               Name => 'CreateDate',
               Groups => { 2 => 'Time' },
               %timeInfo,
      +        RawConv => q{
      +            my $offset = (66 * 365 + 17) * 24 * 3600;
      +            if ($val >= $offset or $$self{OPTIONS}{QuickTimeUTC}) {
      +                $val -= $offset;
      +            } elsif ($val and not $$self{IsWriting}) {
      +                $self->WarnOnce('Patched incorrect time zero for QuickTime date/time tag',1);
      +            }
      +            return $$self{CreateDate} = $val;
      +        },
               # this is int64u if MovieHeaderVersion == 1 (ref 13)
               Hook => '$$self{MovieHeaderVersion} and $format = "int64u", $varSize += 4',
           },
      @@ -1305,6 +1401,7 @@
               Format => 'fixed32s[9]',
               Notes => 'writable for the video track via the Composite Rotation tag',
               Writable => 1,
      +        Protected => 1,
               Permanent => 1,
               # only set rotation if image size is non-zero
               RawConvInv => \&GetMatrixStructure,
      @@ -1369,12 +1466,12 @@
               },
               ValueConvInv => q{
                   require Image::ExifTool::XMP;
      -            $val =  Image::ExifTool::XMP::FormatXMPDate($val);
      -            $val =~ s/([-+]\d{2}):(\d{2})$/$1$2/; # remove time zone colon
      +            my $tmp = Image::ExifTool::XMP::FormatXMPDate($val);
      +            ($val = $tmp) =~ s/([-+]\d{2}):(\d{2})$/$1$2/ if defined $tmp; # remove time zone colon
                   return $val;
               },
               PrintConv => '$self->ConvertDateTime($val)',
      -        PrintConvInv => '$self->InverseDateTime($val)',
      +        PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
           },
           "\xa9ART" => 'Artist', #PH (iTunes 8.0.2)
           "\xa9alb" => 'Album', #PH (iTunes 8.0.2)
      @@ -1501,47 +1598,43 @@
           # the following are 3gp tags, references:
           # http://atomicparsley.sourceforge.net
           # http://www.3gpp.org/ftp/tsg_sa/WG4_CODEC/TSGS4_25/Docs/
      -    # (note that all %langText tags are Avoid => 1)
      -    cprt => { Name => 'Copyright',  %langText, Groups => { 2 => 'Author' } },
      -    auth => { Name => 'Author',     %langText, Groups => { 2 => 'Author' } },
      -    titl => { Name => 'Title',      %langText },
      -    dscp => { Name => 'Description',%langText },
      -    perf => { Name => 'Performer',  %langText },
      -    gnre => { Name => 'Genre',      %langText },
      -    albm => { Name => 'Album',      %langText },
      -    coll => { Name => 'CollectionName', %langText }, #17
      +    # (note that all %langText3gp tags are Avoid => 1)
      +    cprt => { Name => 'Copyright',  %langText3gp, Groups => { 2 => 'Author' } },
      +    auth => { Name => 'Author',     %langText3gp, Groups => { 2 => 'Author' } },
      +    titl => { Name => 'Title',      %langText3gp },
      +    dscp => { Name => 'Description',%langText3gp },
      +    perf => { Name => 'Performer',  %langText3gp },
      +    gnre => { Name => 'Genre',      %langText3gp },
      +    albm => { Name => 'Album',      %langText3gp },
      +    coll => { Name => 'CollectionName', %langText3gp }, #17
           rtng => {
               Name => 'Rating',
      +        Writable => 'undef',
      +        Avoid => 1,
               # (4-byte flags, 4-char entity, 4-char criteria, 2-byte lang, string)
      -        RawConv => q{
      -            return '' unless length $val >= 14;
      -            my $str = 'Entity=' . substr($val,4,4) . ' Criteria=' . substr($val,8,4);
      -            $str =~ tr/\0-\x1f\x7f-\xff//d; # remove unprintable characters
      -            my $lang = Image::ExifTool::QuickTime::UnpackLang(Get16u(\$val, 12));
      -            $lang = $lang ? "($lang) " : '';
      -            $val = substr($val, 14);
      -            $val = $self->Decode($val, 'UCS2') if $val =~ /^\xfe\xff/;
      -            return $lang . $str . ' ' . $val;
      -        },
      +        IText => 14, # (14 bytes before string)
      +        Notes => 'string in the form "Entity=XXXX Criteria=XXXX XXXXX", used in 3gp videos',
      +        ValueConv => '$val=~s/^(.{4})(.{4})/Entity=$1 Criteria=$2 /i; $val',
      +        ValueConvInv => '$val=~s/Entity=(.{4}) Criteria=(.{4}) ?/$1$2/i; $val',
           },
           clsf => {
               Name => 'Classification',
      +        Writable => 'undef',
      +        Avoid => 1,
               # (4-byte flags, 4-char entity, 2-byte index, 2-byte lang, string)
      -        RawConv => q{
      -            return '' unless length $val >= 12;
      -            my $str = 'Entity=' . substr($val,4,4) . ' Index=' . Get16u(\$val,8);
      -            $str =~ tr/\0-\x1f\x7f-\xff//d; # remove unprintable characters
      -            my $lang = Image::ExifTool::QuickTime::UnpackLang(Get16u(\$val, 10));
      -            $lang = $lang ? "($lang) " : '';
      -            $val = substr($val, 12);
      -            $val = $self->Decode($val, 'UCS2') if $val =~ /^\xfe\xff/;
      -            return $lang . $str . ' ' . $val;
      -        },
      +        IText => 12,
      +        Notes => 'string in the form "Entity=XXXX Index=### XXXXX", used in 3gp videos',
      +        ValueConv => '$val=~s/^(.{4})(.{2})/"Entity=$1 Index=".unpack("n",$2)." "/ie; $val',
      +        ValueConvInv => '$val=~s/Entity=(.{4}) Index=(\d+) ?/$1.pack("n",$2)/ie; $val',
           },
           kywd => {
               Name => 'Keywords',
      -        # (4 byte flags, 2-byte lang, 1-byte count, count x pascal strings)
      +        # (4 byte flags, 2-byte lang, 1-byte count, count x pascal strings, ref 17)
      +        # (but I have also seen a simple string written by iPhone, so don't make writable yet)
      +        Notes => "not writable because Apple doesn't follow the 3gp specification",
               RawConv => q{
      +            my $sep = $self->Options('ListSep');
      +            return join($sep, split /\0+/, $val) unless $val =~ /^\0/; # (iPhone)
                   return '' unless length $val >= 7;
                   my $lang = Image::ExifTool::QuickTime::UnpackLang(Get16u(\$val, 4));
                   $lang = $lang ? "($lang) " : '';
      @@ -1557,27 +1650,30 @@
                       push @vals, $v;
                       $pos += $len;
                   }
      -            my $sep = $self->Options('ListSep');
                   return $lang . join($sep, @vals);
               },
           },
           loci => {
               Name => 'LocationInformation',
               Groups => { 2 => 'Location' },
      +        Writable => 'undef',
      +        IText => 6,
      +        Avoid => 1,
      +        NoDecode => 1, # (we'll decode the data ourself)
      +        Notes => q{
      +            string in the form "XXXXX Role=XXX Lat=XXX Lon=XXX Alt=XXX Body=XXX
      +            Notes=XXX", used in 3gp videos
      +        },
               # (4-byte flags, 2-byte lang, location string, 1-byte role, 4-byte fixed longitude,
               #  4-byte fixed latitude, 4-byte fixed altitude, body string, notes string)
               RawConv => q{
      -            return '' unless length $val >= 6;
      -            my $lang = Image::ExifTool::QuickTime::UnpackLang(Get16u(\$val, 4));
      -            $lang = $lang ? "($lang) " : '';
      -            $val = substr($val, 6);
                   my $str;
                   if ($val =~ /^\xfe\xff/) {
                       $val =~ s/^(\xfe\xff(.{2})*?)\0\0//s or return '';
                       $str = $self->Decode($1, 'UCS2');
                   } else {
                       $val =~ s/^(.*?)\0//s or return '';
      -                $str = $1;
      +                $str = $self->Decode($1, 'UTF8');
                   }
                   $str = '(none)' unless length $str;
                   return '' if length $val < 13;
      @@ -1592,27 +1688,52 @@
                   if ($val =~ s/^(\xfe\xff(.{2})*?)\0\0//s) {
                       $str .= ' Body=' . $self->Decode($1, 'UCS2');
                   } elsif ($val =~ s/^(.*?)\0//s) {
      -                $str .= " Body=$1";
      +                $str .= ' Body=' . $self->Decode($1, 'UTF8');
                   }
                   if ($val =~ s/^(\xfe\xff(.{2})*?)\0\0//s) {
                       $str .= ' Notes=' . $self->Decode($1, 'UCS2');
                   } elsif ($val =~ s/^(.*?)\0//s) {
      -                $str .= " Notes=$1";
      +                $str .= ' Notes=' . $self->Decode($1, 'UTF8');
                   }
      -            return $lang . $str;
      +            return $str;
      +        },
      +        RawConvInv => q{
      +            my ($role, $lat, $lon, $alt, $body, $note);
      +            $lat = $1 if $val =~ s/ Lat=([-+]?[.\d]+)//i;
      +            $lon = $1 if $val =~ s/ Lon=([-+]?[.\d]+)//i;
      +            $alt = $1 if $val =~ s/ Alt=([-+]?[.\d]+)//i;
      +            $note = $val =~ s/ Notes=(.*)//i ? $1 : '';
      +            $body = $val =~ s/ Body=(.*)//i ? $1 : '';
      +            $role = $val =~ s/ Role=(.*)//i ? $1 : '';
      +            $val = '' if $val eq '(none)';
      +            $role = {shooting=>0,real=>1,fictional=>2}->{lc $role} || 0;
      +            return $self->Encode($val, 'UTF8') . "\0" . Set8u($role) .
      +                   SetFixed32s(defined $lon ? $lon : 999) .
      +                   SetFixed32s(defined $lat ? $lat : 999) .
      +                   SetFixed32s(defined $alt ? $alt : 0) .
      +                   $self->Encode($body) . "\0" .
      +                   $self->Encode($note) . "\0";
               },
           },
           yrrc => {
               Name => 'Year',
      +        Writable => 'undef',
               Groups => { 2 => 'Time' },
      -        RawConv => 'length($val) >= 6 ? Get16u(\$val,4) : ""',
      +        Avoid => 1,
      +        Notes => 'used in 3gp videos',
      +        ValueConv => 'length($val) >= 6 ? unpack("x4n",$val) : ""',
      +        ValueConvInv => 'pack("Nn",0,$val)',
           },
           urat => { #17
               Name => 'UserRating',
      -        RawConv => q{
      +        Writable => 'undef',
      +        Notes => 'used in 3gp videos',
      +        Avoid => 1,
      +        ValueConv => q{
                   return '' unless length $val >= 8;
      -            return Get8u(\$val, 7);
      +            unpack('x7C', $val);
               },
      +        ValueConvInv => 'pack("N2",0,$val)',
           },
           # tsel - TrackSelection (ref 17)
           # Apple tags (ref 16[dead] -- see ref 25 instead)
      @@ -1626,10 +1747,14 @@
               Avoid => 1,
               Format => 'string', # (necessary to remove the trailing NULL)
           },
      -    date => { # (NC)
      +    date => {
               Name => 'DateTimeOriginal',
               Description => 'Date/Time Original',
               Groups => { 2 => 'Time' },
      +        Notes => q{
      +            Apple Photos has been reported to show a crazy date/time for some MP4 files
      +            containing this tag, but perhaps only if it is missing a time zone
      +        }, #forum10690/11125
               Shift => 'Time',
               ValueConv => q{
                   require Image::ExifTool::XMP;
      @@ -1644,7 +1769,7 @@
                   return $val;
               },
               PrintConv => '$self->ConvertDateTime($val)',
      -        PrintConvInv => '$self->InverseDateTime($val)',
      +        PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
           },
           manu => { # (SX280)
               Name => 'Make',
      @@ -1851,6 +1976,25 @@
                   ByteOrder => 'LittleEndian',
               },
           },
      +    # ---- Garmin ---- (ref PH)
      +    uuid => [{
      +        Name => 'GarminSoftware', # (NC)
      +        Condition => '$$valPt =~ /^VIRBactioncamera/',
      +        RawConv => 'substr($val, 16)',
      +        RawConvInv => '"VIRBactioncamera$val"',
      +    },{
      +        # have seen "28 f3 11 e2 b7 91 4f 6f 94 e2 4f 5d ea cb 3c 01" for RicohThetaZ1 accelerometer RADT data (not yet decoded)
      +        Name => 'UUID-Unknown',
      +        Writable => 0,
      +        %unknownInfo,
      +    }],
      +    pmcc => {
      +        Name => 'GarminSettings',
      +        ValueConv => 'substr($val, 4)',
      +        ValueConvInv => '"\0\0\0\x01$val"',
      +    },
      +    # hmtp - "\0\0\0\x01" followed by 408 bytes of zero
      +    # vrin - "\0\0\0\x01" followed by 8 bytes of zero
           # ---- GoPro ---- (ref PH)
           GoPr => 'GoProType', # (Hero3+)
           FIRM => { Name => 'FirmwareVersion', Avoid => 1 }, # (Hero4)
      @@ -1864,7 +2008,7 @@
           # SETT? 12 bytes (Hero4)
           # MUID? 32 bytes (Hero4, starts with serial number hash)
           # HMMT? 404 bytes (Hero4, all zero)
      -    # BCID? 26 bytes (Hero5, all zero)
      +    # BCID? 26 bytes (Hero5, all zero), 36 bytes GoPro Max
           # GUMI? 16 bytes (Hero5)
          "FOV\0" => 'FieldOfView', #forum8938 (Hero2) seen: "Wide"
           GPMF => {
      @@ -1921,7 +2065,11 @@
           # ---- Microsoft ----
           Xtra => { #PH (microsoft)
               Name => 'MicrosoftXtra',
      -        SubDirectory => { TagTable => 'Image::ExifTool::Microsoft::Xtra' },
      +        WriteGroup => 'Microsoft',
      +        SubDirectory => {
      +            DirName => 'Microsoft',
      +            TagTable => 'Image::ExifTool::Microsoft::Xtra',
      +        },
           },
           # ---- Minolta ----
           MMA0 => { #PH (DiMage 7Hi)
      @@ -1970,7 +2118,7 @@
                   SubDirectory => { TagTable => 'Image::ExifTool::Olympus::thmb' },
               },{ #17 (format is in bytes 3-7)
                   Name => 'ThumbnailImage',
      -            Condition => '$$valPt =~ /^.{8}\xff\xd8\xff\xdb/s',
      +            Condition => '$$valPt =~ /^.{8}\xff\xd8\xff[\xdb\xe0]/s',
                   Groups => { 2 => 'Preview' },
                   RawConv => 'substr($val, 8)',
                   Binary => 1,
      @@ -2034,6 +2182,63 @@
                   ProcessProc => \&Image::ExifTool::ProcessTIFF, # (because ProcessMOV is default)
               },
           },
      +    '@mak' => { Name => 'Make',     Avoid => 1 },
      +    '@mod' => { Name => 'Model',    Avoid => 1 },
      +    '@swr' => { Name => 'SoftwareVersion', Avoid => 1 },
      +    '@day' => {
      +        Name => 'ContentCreateDate',
      +        Notes => q{
      +            some stupid Ricoh programmer used the '@' symbol instead of the copyright
      +            symbol in these tag ID's for the Ricoh Theta Z1 and maybe other models
      +        },
      +        Groups => { 2 => 'Time' },
      +        Shift => 'Time',
      +        Avoid => 1,
      +        # handle values in the form "2010-02-12T13:27:14-0800"
      +        ValueConv => q{
      +            require Image::ExifTool::XMP;
      +            $val =  Image::ExifTool::XMP::ConvertXMPDate($val);
      +            $val =~ s/([-+]\d{2})(\d{2})$/$1:$2/; # add colon to timezone if necessary
      +            return $val;
      +        },
      +        ValueConvInv => q{
      +            require Image::ExifTool::XMP;
      +            my $tmp = Image::ExifTool::XMP::FormatXMPDate($val);
      +            ($val = $tmp) =~ s/([-+]\d{2}):(\d{2})$/$1$2/ if defined $tmp; # remove time zone colon
      +            return $val;
      +        },
      +        PrintConv => '$self->ConvertDateTime($val)',
      +        PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
      +    },
      +    '@xyz' => { #PH (iPhone 3GS)
      +        Name => 'GPSCoordinates',
      +        Groups => { 2 => 'Location' },
      +        Avoid => 1,
      +        ValueConv => \&ConvertISO6709,
      +        ValueConvInv => \&ConvInvISO6709,
      +        PrintConv => \&PrintGPSCoordinates,
      +        PrintConvInv => \&PrintInvGPSCoordinates,
      +    },
      +    # RDT1 - pairs of int32u_BE, starting at byte 8: "458275 471846"
      +    # RDT2 - pairs of int32u_BE, starting at byte 8: "472276 468526"
      +    # RDT3 - pairs of int32u_BE, starting at byte 8: "876603 482191"
      +    # RDT4 - pairs of int32u_BE, starting at byte 8: "1955 484612"
      +    # RDT6 - empty
      +    # RDT7 - empty
      +    # RDT8 - empty
      +    # RDT9 - only 16-byte header?
      +    # the boxes below all have a similar header (little-endian):
      +    #  0 int32u - number of records
      +    #  4 ? - "1e 00"
      +    #  6 int16u - record length in bytes
      +    #  8 ? - "23 01 00 00 00 00 00 00"
      +    #  16 - start of records (each record ends in an int64u timestamp in ns)
      +    # RDTA - float[4],ts: "-0.31289672 -0.2245330 11.303817 0 775.780"
      +    # RDTB - float[4],ts: "-0.04841613 -0.2166595 0.0724792 0 775.780"
      +    # RDTC - float[4],ts: "27.60925 -27.10037 -13.27285 0 775.829"
      +    # RDTD - int16s[3],ts: "353 -914 16354 0 775.829"
      +    # RDTG - ts: "775.825"
      +    # RDTI - float[4],ts: "0.00165951 0.005770059 0.06838259 0.1744695 775.862"
           # ---- Samsung ----
           vndr => 'Vendor', #PH (Samsung PL70)
           SDLN => 'PlayMode', #PH (NC, Samsung ST80 "SEQ_PLAY")
      @@ -2063,6 +2268,26 @@
               Name => 'TomTomMetaData',
               SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::TomTom' },
           },
      +    # ---- Samsung Gear 360 ----
      +    vrot => {
      +        Name => 'AccelerometerData',
      +        Notes => q{
      +            accelerometer readings for each frame of the video, expressed as sets of
      +            yaw, pitch and roll angles in degrees
      +        },
      +        Format => 'rational64s',
      +        ValueConv => '$val =~ s/^-?\d+ //; \$val', # (ignore leading version/size words)
      +    },
      +    # m360 - 8 bytes "0 0 0 0 0 0 0 1"
      +    # opax - 164 bytes unknown (center and affine arrays? ref 26)
      +    # opai - 32 bytes (maybe contains a serial number starting at byte 16? - PH) (rgb gains, degamma, gamma? ref 26)
      +    # intv - 16 bytes all zero
      +    # ---- Xaiomi ----
      +    mcvr => {
      +        Name => 'PreviewImage',
      +        Groups => { 2 => 'Preview' },
      +        Binary => 1,
      +    },
           # ---- Unknown ----
           # CDET - 128 bytes (unknown origin)
           # mtyp - 4 bytes all zero (some drone video)
      @@ -2070,7 +2295,6 @@
           # kgcg - 128 bytes 0's and 1's
           # kgsi - 4 bytes "00 00 00 80"
           # FIEL - 18 bytes "FIEL\0\x01\0\0\0..."
      -    
       #
       # other 3rd-party tags
       # (ref http://code.google.com/p/mp4parser/source/browse/trunk/isoparser/src/main/resources/isoparser-default.properties?r=814)
      @@ -2431,7 +2655,23 @@
                   Start => 4,
               },
           },
      -    # idat
      +    idat => {
      +        Name => 'MetaImageSize', #PH (NC)
      +        Format => 'int16u',
      +        # (don't know what the first two numbers are for)
      +        PrintConv => '$val =~ s/^(\d+) (\d+) (\d+) (\d+)/${3}x$4/; $val',
      +    },
      +    uuid => [
      +        { #PH (Canon R5/R6 HIF)
      +            Name => 'MetaVersion', # (NC)
      +            Condition => '$$valPt=~/^\x85\xc0\xb6\x87\x82\x0f\x11\xe0\x81\x11\xf4\xce\x46\x2b\x6a\x48/',
      +            RawConv => 'substr($val, 0x14)',
      +        },
      +        {
      +            Name => 'UUID-Unknown',
      +            %unknownInfo,
      +        },
      +    ],
       );
       
       # additional metadata container (ref ISO14496-12:2015)
      @@ -2485,6 +2725,7 @@
           colr => [{
               Name => 'ICC_Profile',
               Condition => '$$valPt =~ /^(prof|rICC)/',
      +        Permanent => 0, # (in QuickTime, this writes a zero-length box instead of deleting)
               SubDirectory => {
                   TagTable => 'Image::ExifTool::ICC_Profile::Main',
                   Start => 4,
      @@ -2497,6 +2738,7 @@
               Name => 'Rotation',
               Format => 'int8u',
               Writable => 'int8u',
      +        Protected => 1,
               ValueConv => '$val * 90',
               ValueConvInv => 'int($val / 90 + 0.5)',
           },
      @@ -2528,6 +2770,7 @@
               Name => 'PixelAspectRatio',
               Format => 'int32u',
               Writable => 'int32u',
      +        Protected => 1,
           },
           rloc => {
               Name => 'RelativeLocation',
      @@ -2536,7 +2779,7 @@
           },
           clap => {
               Name => 'CleanAperture',
      -        Format => 'rational64u',
      +        Format => 'rational64s',
               Notes => '4 numbers: width, height, left and top',
           },
           hvcC => {
      @@ -2573,19 +2816,35 @@
               Mask => 0x1f,
               PrintConv => {
                   0 => 'No Profile',
      -            1 => 'Main Profile',
      -            2 => 'Main 10 Profile',
      -            3 => 'Main Still Picture Profile',
      +            1 => 'Main',
      +            2 => 'Main 10',
      +            3 => 'Main Still Picture',
      +            4 => 'Format Range Extensions',
      +            5 => 'High Throughput',
      +            6 => 'Multiview Main',
      +            7 => 'Scalable Main',
      +            8 => '3D Main',
      +            9 => 'Screen Content Coding Extensions',
      +            10 => 'Scalable Format Range Extensions',
      +            11 => 'High Throughput Screen Content Coding Extensions',
               },
           },
           2 => {
               Name => 'GenProfileCompatibilityFlags',
               Format => 'int32u',
               PrintConv => { BITMASK => {
      -            31 => 'No Profile',         # (bit 0 in stream)
      -            30 => 'Main',               # (bit 1 in stream)
      -            29 => 'Main 10',            # (bit 2 in stream)
      -            28 => 'Main Still Picture', # (bit 3 in stream)
      +            31 => 'No Profile',             # (bit 0 in stream)
      +            30 => 'Main',                   # (bit 1 in stream)
      +            29 => 'Main 10',                # (bit 2 in stream)
      +            28 => 'Main Still Picture',     # (bit 3 in stream)
      +            27 => 'Format Range Extensions',# (...)
      +            26 => 'High Throughput',
      +            25 => 'Multiview Main',
      +            24 => 'Scalable Main',
      +            23 => '3D Main',
      +            22 => 'Screen Content Coding Extensions',
      +            21 => 'Scalable Format Range Extensions',
      +            20 => 'High Throughput Screen Content Coding Extensions',
               }},
           },
           6 => {
      @@ -2725,12 +2984,16 @@
           WRITE_PROC => \&WriteQuickTime,
           GROUPS => { 2 => 'Image' },
           # (Note: ExifTool's ItemRefVersion may be used to test the iref version number)
      -    # dimg - DerivedImage
      -    # thmb - Thumbnail
      -    # auxl - AuxiliaryImage
      +    NOTES => q{
      +        The Item reference entries listed in the table below contain information about
      +        the associations between items in the file.  This information is used by
      +        ExifTool, but these entries are not extracted as tags.
      +    },
      +    dimg => { Name => 'DerivedImageRef',   RawConv => 'undef' },
      +    thmb => { Name => 'ThumbnailRef',      RawConv => 'undef' },
      +    auxl => { Name => 'AuxiliaryImageRef', RawConv => 'undef' },
           cdsc => {
               Name => 'ContentDescribes',
      -        Notes => 'parsed, but not extracted as a tag',
               RawConv => \&ParseContentDescribes,
               WriteHook => \&ParseContentDescribes,
           },
      @@ -2819,9 +3082,9 @@
               3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2
               country code to the tag name (eg. "ItemList:Title-fra" or
               "ItemList::Title-fra-FR").  When creating a new Meta box to contain the
      -        ItemList directory, by default ExifTool does not specify a
      -        L, but the
      -        API L option may be used to include an 'mdir' Handler box.
      +        ItemList directory, by default ExifTool adds an 'mdir' (Metadata) Handler
      +        box because Apple software may ignore ItemList tags otherwise, but the API
      +        L option may be set to 0 to avoid this.
           },
           # in this table, binary 1 and 2-byte "data"-type tags are interpreted as
           # int8u and int16u.  Multi-byte binary "data" tags are extracted as binary data.
      @@ -2850,7 +3113,7 @@
                   return $val;
               },
               PrintConv => '$self->ConvertDateTime($val)',
      -        PrintConvInv => '$self->InverseDateTime($val)',
      +        PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
           },
           "\xa9des" => 'Description', #4
           "\xa9enc" => 'EncodedBy', #10
      @@ -2858,10 +3121,25 @@
           "\xa9grp" => 'Grouping',
           "\xa9lyr" => 'Lyrics',
           "\xa9nam" => 'Title',
      -    # "\xa9st3" ? #10
           "\xa9too" => 'Encoder',
           "\xa9trk" => 'Track',
           "\xa9wrt" => 'Composer',
      +#
      +# the following tags written by AtomicParsley 0.9.6
      +# (ref https://exiftool.org/forum/index.php?topic=11455.0)
      +#
      +    "\xa9st3" => 'Subtitle',
      +    "\xa9con" => 'Conductor',
      +    "\xa9sol" => 'Soloist',
      +    "\xa9arg" => 'Arranger',
      +    "\xa9ope" => 'OriginalArtist',
      +    "\xa9dir" => 'Director',
      +    "\xa9ard" => 'ArtDirector',
      +    "\xa9sne" => 'SoundEngineer',
      +    "\xa9prd" => 'Producer',
      +    "\xa9xpd" => 'ExecutiveProducer',
      +    sdes      => 'StoreDescription',
      +#
           '----' => {
               Name => 'iTunesInfo',
               SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::iTunesInfo' },
      @@ -2870,18 +3148,29 @@
           covr => { Name => 'CoverArt',    Groups => { 2 => 'Preview' } },
           cpil => { #10
               Name => 'Compilation',
      -        Format => 'int8u', #23
      +        Format => 'int8u', #27 (ref 23 contradicts what AtomicParsley actually writes, which is int8s)
      +        Writable => 'int8s',
               PrintConv => { 0 => 'No', 1 => 'Yes' },
           },
           disk => {
               Name => 'DiskNumber',
               Format => 'undef',  # (necessary to prevent decoding as string!)
      -        ValueConv => 'length($val) >= 6 ? join(" of ",unpack("x2nn",$val)) : \$val',
      -        ValueConvInv => 'my @a = split / of /, $val; @a==2 ? pack("n3",0,@a) : undef',
      +        ValueConv => q{
      +            return \$val unless length($val) >= 6;
      +            my @a = unpack 'x2nn', $val;
      +            return $a[1] ? join(' of ', @a) : $a[0];
      +        },
      +        ValueConvInv => q{
      +            my @a = $val =~ /\d+/g;
      +            return undef if @a == 0 or @a > 2;
      +            push @a, 0 if @a == 1;
      +            return pack('n3', 0, @a);
      +        },
           },
           pgap => { #10
               Name => 'PlayGap',
               Format => 'int8u', #23
      +        Writable => 'int8s', #27
               PrintConv => {
                   0 => 'Insert Gap',
                   1 => 'No Gap',
      @@ -2889,13 +3178,26 @@
           },
           tmpo => {
               Name => 'BeatsPerMinute',
      -        Format => 'int16u', # marked as boolean but really int16u in my sample
      +        # marked as boolean but really int16u in my sample
      +        # (but written as int16s by iTunes and AtomicParsley, ref forum11506)
      +        Format => 'int16u',
      +        Writable => 'int16s',
           },
           trkn => {
               Name => 'TrackNumber',
               Format => 'undef',  # (necessary to prevent decoding as string!)
      -        ValueConv => 'length($val) >= 6 ? join(" of ",unpack("x2nn",$val)) : \$val',
      -        ValueConvInv => 'my @a = split / of /, $val; @a==2 ? pack("n3",0,@a) : undef',
      +        ValueConv => q{
      +            return \$val unless length($val) >= 6;
      +            my @a = unpack 'x2nn', $val;
      +            return $a[1] ? join(' of ', @a) : $a[0];
      +        },
      +        # (see forum11501 for discussion about the format used)
      +        ValueConvInv => q{
      +            my @a = $val =~ /\d+/g;
      +            return undef if @a == 0 or @a > 2;
      +            push @a, 0 if @a == 1;
      +            return pack('n4', 0, @a, 0);
      +        },
           },
       #
       # Note: it is possible that the tags below are not being decoded properly
      @@ -2904,6 +3206,7 @@
           akID => { #10
               Name => 'AppleStoreAccountType',
               Format => 'int8u', #24
      +        Writable => 'int8s', #27
               PrintConv => {
                   0 => 'iTunes',
                   1 => 'AOL',
      @@ -2914,12 +3217,14 @@
           atID => { #10 (or TV series)
               Name => 'AlbumTitleID',
               Format => 'int32u',
      +        Writable => 'int32s', #27
           },
           auth => { Name => 'Author', Groups => { 2 => 'Author' } },
           catg => 'Category', #7
           cnID => { #10
               Name => 'AppleStoreCatalogID',
               Format => 'int32u',
      +        Writable => 'int32s', #27
           },
           cprt => { Name => 'Copyright', Groups => { 2 => 'Author' } },
           dscp => { Name => 'Description', Avoid => 1 },
      @@ -2927,24 +3232,32 @@
           gnre => { #10
               Name => 'Genre',
               Avoid => 1,
      -        # (Note: not written as int16u if numerical, although it should be)
      +        # (Note: see https://exiftool.org/forum/index.php?topic=11537.0)
      +        Format => 'undef',
      +        ValueConv => 'unpack("n",$val)',
      +        ValueConvInv => '$val =~ /^\d+$/ ? pack("n",$val) : undef',
               PrintConv => q{
                   return $val unless $val =~ /^\d+$/;
                   require Image::ExifTool::ID3;
                   Image::ExifTool::ID3::PrintGenre($val - 1); # note the "- 1"
               },
               PrintConvInv => q{
      +            return $val if $val =~ /^[0-9]+$/;
                   require Image::ExifTool::ID3;
                   my $id = Image::ExifTool::ID3::GetGenreID($val);
      -            return defined $id ? $id : $val;
      -        },
      +            return unless defined $id and $id =~ /^\d+$/;
      +            return $id + 1;
      +        }, 
           },
           egid => 'EpisodeGlobalUniqueID', #7
           geID => { #10
               Name => 'GenreID',
               Format => 'int32u',
      +        Writable => 'int32s', #27
               SeparateTable => 1,
      -        PrintConv => { #21/PH (based on https://affiliate.itunes.apple.com/resources/documentation/genre-mapping/)
      +        # the following lookup is based on http://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/genres
      +        # (see scripts/parse_genre to parse genre JSON file from above)
      +        PrintConv => { #21/PH
                   2 => 'Music|Blues',
                   3 => 'Music|Comedy',
                   4 => "Music|Children's Music",
      @@ -2990,6 +3303,17 @@
                   53 => 'Music|Instrumental',
                   74 => 'Audiobooks|News',
                   75 => 'Audiobooks|Programs & Performances',
      +            500 => 'Fitness Music',
      +            501 => 'Fitness Music|Pop',
      +            502 => 'Fitness Music|Dance',
      +            503 => 'Fitness Music|Hip-Hop',
      +            504 => 'Fitness Music|Rock',
      +            505 => 'Fitness Music|Alt/Indie',
      +            506 => 'Fitness Music|Latino',
      +            507 => 'Fitness Music|Country',
      +            508 => 'Fitness Music|World',
      +            509 => 'Fitness Music|New Age',
      +            510 => 'Fitness Music|Classical',
                   1001 => 'Music|Alternative|College Rock',
                   1002 => 'Music|Alternative|Goth Rock',
                   1003 => 'Music|Alternative|Grunge',
      @@ -3161,8 +3485,8 @@
                   1174 => 'Music|Vocal|Traditional Pop',
                   1175 => 'Music|Jazz|Vocal Jazz',
                   1176 => 'Music|Vocal|Vocal Pop',
      -            1177 => 'Music|World|Afro-Beat',
      -            1178 => 'Music|World|Afro-Pop',
      +            1177 => 'Music|African|Afro-Beat',
      +            1178 => 'Music|African|Afro-Pop',
                   1179 => 'Music|World|Cajun',
                   1180 => 'Music|World|Celtic',
                   1181 => 'Music|World|Celtic Folk',
      @@ -3187,7 +3511,7 @@
                   1200 => 'Music|World|Australia',
                   1201 => 'Music|World|Japan',
                   1202 => 'Music|World|France',
      -            1203 => 'Music|World|Africa',
      +            1203 => 'Music|African',
                   1204 => 'Music|World|Asia',
                   1205 => 'Music|World|Europe',
                   1206 => 'Music|World|South Africa',
      @@ -3246,18 +3570,18 @@
                   1267 => 'Music|Indian|Devotional & Spiritual',
                   1268 => 'Music|Indian|Sufi',
                   1269 => 'Music|Indian|Indian Classical',
      -            1270 => 'Music|World|Russian Chanson',
      +            1270 => 'Music|Russian|Russian Chanson',
                   1271 => 'Music|World|Dini',
      -            1272 => 'Music|World|Halk',
      -            1273 => 'Music|World|Sanat',
      +            1272 => 'Music|Turkish|Halk',
      +            1273 => 'Music|Turkish|Sanat',
                   1274 => 'Music|World|Dangdut',
                   1275 => 'Music|World|Indonesian Religious',
                   1276 => 'Music|World|Calypso',
                   1277 => 'Music|World|Soca',
                   1278 => 'Music|Indian|Ghazals',
                   1279 => 'Music|Indian|Indian Folk',
      -            1280 => 'Music|World|Arabesque',
      -            1281 => 'Music|World|Afrikaans',
      +            1280 => 'Music|Turkish|Arabesque',
      +            1281 => 'Music|African|Afrikaans',
                   1282 => 'Music|World|Farsi',
                   1283 => 'Music|World|Israeli',
                   1284 => 'Music|Arabic|Khaleeji',
      @@ -3274,8 +3598,8 @@
                   1296 => 'Music|World|Tango',
                   1297 => 'Music|World|Fado',
                   1298 => 'Music|World|Iberia',
      -            1299 => 'Music|World|Russian',
      -            1300 => 'Music|World|Turkish',
      +            1299 => 'Music|Russian',
      +            1300 => 'Music|Turkish',
                   1301 => 'Podcasts|Arts',
                   1302 => 'Podcasts|Society & Culture|Personal Journals',
                   1303 => 'Podcasts|Comedy',
      @@ -3344,6 +3668,90 @@
                   1479 => 'Podcasts|Science & Medicine|Social Sciences',
                   1480 => 'Podcasts|Technology|Software How-To',
                   1481 => 'Podcasts|Health|Alternative Health',
      +            1482 => 'Podcasts|Arts|Books',
      +            1483 => 'Podcasts|Fiction',
      +            1484 => 'Podcasts|Fiction|Drama',
      +            1485 => 'Podcasts|Fiction|Science Fiction',
      +            1486 => 'Podcasts|Fiction|Comedy Fiction',
      +            1487 => 'Podcasts|History',
      +            1488 => 'Podcasts|True Crime',
      +            1489 => 'Podcasts|News',
      +            1490 => 'Podcasts|News|Business News',
      +            1491 => 'Podcasts|Business|Management',
      +            1492 => 'Podcasts|Business|Marketing',
      +            1493 => 'Podcasts|Business|Entrepreneurship',
      +            1494 => 'Podcasts|Business|Non-Profit',
      +            1495 => 'Podcasts|Comedy|Improv',
      +            1496 => 'Podcasts|Comedy|Comedy Interviews',
      +            1497 => 'Podcasts|Comedy|Stand-Up',
      +            1498 => 'Podcasts|Education|Language Learning',
      +            1499 => 'Podcasts|Education|How To',
      +            1500 => 'Podcasts|Education|Self-Improvement',
      +            1501 => 'Podcasts|Education|Courses',
      +            1502 => 'Podcasts|Leisure',
      +            1503 => 'Podcasts|Leisure|Automotive',
      +            1504 => 'Podcasts|Leisure|Aviation',
      +            1505 => 'Podcasts|Leisure|Hobbies',
      +            1506 => 'Podcasts|Leisure|Crafts',
      +            1507 => 'Podcasts|Leisure|Games',
      +            1508 => 'Podcasts|Leisure|Home & Garden',
      +            1509 => 'Podcasts|Leisure|Video Games',
      +            1510 => 'Podcasts|Leisure|Animation & Manga',
      +            1511 => 'Podcasts|Government',
      +            1512 => 'Podcasts|Health & Fitness',
      +            1513 => 'Podcasts|Health & Fitness|Alternative Health',
      +            1514 => 'Podcasts|Health & Fitness|Fitness',
      +            1515 => 'Podcasts|Health & Fitness|Nutrition',
      +            1516 => 'Podcasts|Health & Fitness|Sexuality',
      +            1517 => 'Podcasts|Health & Fitness|Mental Health',
      +            1518 => 'Podcasts|Health & Fitness|Medicine',
      +            1519 => 'Podcasts|Kids & Family|Education for Kids',
      +            1520 => 'Podcasts|Kids & Family|Stories for Kids',
      +            1521 => 'Podcasts|Kids & Family|Parenting',
      +            1522 => 'Podcasts|Kids & Family|Pets & Animals',
      +            1523 => 'Podcasts|Music|Music Commentary',
      +            1524 => 'Podcasts|Music|Music History',
      +            1525 => 'Podcasts|Music|Music Interviews',
      +            1526 => 'Podcasts|News|Daily News',
      +            1527 => 'Podcasts|News|Politics',
      +            1528 => 'Podcasts|News|Tech News',
      +            1529 => 'Podcasts|News|Sports News',
      +            1530 => 'Podcasts|News|News Commentary',
      +            1531 => 'Podcasts|News|Entertainment News',
      +            1532 => 'Podcasts|Religion & Spirituality|Religion',
      +            1533 => 'Podcasts|Science',
      +            1534 => 'Podcasts|Science|Natural Sciences',
      +            1535 => 'Podcasts|Science|Social Sciences',
      +            1536 => 'Podcasts|Science|Mathematics',
      +            1537 => 'Podcasts|Science|Nature',
      +            1538 => 'Podcasts|Science|Astronomy',
      +            1539 => 'Podcasts|Science|Chemistry',
      +            1540 => 'Podcasts|Science|Earth Sciences',
      +            1541 => 'Podcasts|Science|Life Sciences',
      +            1542 => 'Podcasts|Science|Physics',
      +            1543 => 'Podcasts|Society & Culture|Documentary',
      +            1544 => 'Podcasts|Society & Culture|Relationships',
      +            1545 => 'Podcasts|Sports',
      +            1546 => 'Podcasts|Sports|Soccer',
      +            1547 => 'Podcasts|Sports|Football',
      +            1548 => 'Podcasts|Sports|Basketball',
      +            1549 => 'Podcasts|Sports|Baseball',
      +            1550 => 'Podcasts|Sports|Hockey',
      +            1551 => 'Podcasts|Sports|Running',
      +            1552 => 'Podcasts|Sports|Rugby',
      +            1553 => 'Podcasts|Sports|Golf',
      +            1554 => 'Podcasts|Sports|Cricket',
      +            1555 => 'Podcasts|Sports|Wrestling',
      +            1556 => 'Podcasts|Sports|Tennis',
      +            1557 => 'Podcasts|Sports|Volleyball',
      +            1558 => 'Podcasts|Sports|Swimming',
      +            1559 => 'Podcasts|Sports|Wilderness',
      +            1560 => 'Podcasts|Sports|Fantasy Sports',
      +            1561 => 'Podcasts|TV & Film|TV Reviews',
      +            1562 => 'Podcasts|TV & Film|After Shows',
      +            1563 => 'Podcasts|TV & Film|Film Reviews',
      +            1564 => 'Podcasts|TV & Film|Film History',
      +            1565 => 'Podcasts|TV & Film|Film Interviews',
                   1602 => 'Music Videos|Blues',
                   1603 => 'Music Videos|Comedy',
                   1604 => "Music Videos|Children's Music",
      @@ -3436,10 +3844,10 @@
                   1695 => 'Music Videos|Indian|Devotional & Spiritual',
                   1696 => 'Music Videos|Indian|Sufi',
                   1697 => 'Music Videos|Indian|Indian Classical',
      -            1698 => 'Music Videos|World|Russian Chanson',
      +            1698 => 'Music Videos|Russian|Russian Chanson',
                   1699 => 'Music Videos|World|Dini',
      -            1700 => 'Music Videos|World|Halk',
      -            1701 => 'Music Videos|World|Sanat',
      +            1700 => 'Music Videos|Turkish|Halk',
      +            1701 => 'Music Videos|Turkish|Sanat',
                   1702 => 'Music Videos|World|Dangdut',
                   1703 => 'Music Videos|World|Indonesian Religious',
                   1704 => 'Music Videos|Indian|Indian Pop',
      @@ -3447,8 +3855,8 @@
                   1706 => 'Music Videos|World|Soca',
                   1707 => 'Music Videos|Indian|Ghazals',
                   1708 => 'Music Videos|Indian|Indian Folk',
      -            1709 => 'Music Videos|World|Arabesque',
      -            1710 => 'Music Videos|World|Afrikaans',
      +            1709 => 'Music Videos|Turkish|Arabesque',
      +            1710 => 'Music Videos|African|Afrikaans',
                   1711 => 'Music Videos|World|Farsi',
                   1712 => 'Music Videos|World|Israeli',
                   1713 => 'Music Videos|Arabic',
      @@ -3466,8 +3874,8 @@
                   1726 => 'Music Videos|World|Tango',
                   1727 => 'Music Videos|World|Fado',
                   1728 => 'Music Videos|World|Iberia',
      -            1729 => 'Music Videos|World|Russian',
      -            1730 => 'Music Videos|World|Turkish',
      +            1729 => 'Music Videos|Russian',
      +            1730 => 'Music Videos|Turkish',
                   1731 => 'Music Videos|Alternative|College Rock',
                   1732 => 'Music Videos|Alternative|Goth Rock',
                   1733 => 'Music Videos|Alternative|Grunge',
      @@ -3640,9 +4048,9 @@
                   1901 => 'Music Videos|Vocal|Traditional Pop',
                   1902 => 'Music Videos|Jazz|Vocal Jazz',
                   1903 => 'Music Videos|Vocal|Vocal Pop',
      -            1904 => 'Music Videos|World|Africa',
      -            1905 => 'Music Videos|World|Afro-Beat',
      -            1906 => 'Music Videos|World|Afro-Pop',
      +            1904 => 'Music Videos|African',
      +            1905 => 'Music Videos|African|Afro-Beat',
      +            1906 => 'Music Videos|African|Afro-Pop',
                   1907 => 'Music Videos|World|Asia',
                   1908 => 'Music Videos|World|Australia',
                   1909 => 'Music Videos|World|Cajun',
      @@ -3710,12 +4118,69 @@
                   1973 => 'Music Videos|Indian|Regional Indian|Bengali',
                   1974 => 'Music Videos|Indian|Indian Classical|Carnatic Classical',
                   1975 => 'Music Videos|Indian|Indian Classical|Hindustani Classical',
      +            1976 => 'Music Videos|African|Afro House',
      +            1977 => 'Music Videos|African|Afro Soul',
      +            1978 => 'Music Videos|African|Afrobeats',
      +            1979 => 'Music Videos|African|Benga',
      +            1980 => 'Music Videos|African|Bongo-Flava',
      +            1981 => 'Music Videos|African|Coupe-Decale',
      +            1982 => 'Music Videos|African|Gqom',
      +            1983 => 'Music Videos|African|Highlife',
      +            1984 => 'Music Videos|African|Kuduro',
      +            1985 => 'Music Videos|African|Kizomba',
      +            1986 => 'Music Videos|African|Kwaito',
      +            1987 => 'Music Videos|African|Mbalax',
      +            1988 => 'Music Videos|African|Ndombolo',
      +            1989 => 'Music Videos|African|Shangaan Electro',
      +            1990 => 'Music Videos|African|Soukous',
      +            1991 => 'Music Videos|African|Taarab',
      +            1992 => 'Music Videos|African|Zouglou',
      +            1993 => 'Music Videos|Turkish|Ozgun',
      +            1994 => 'Music Videos|Turkish|Fantezi',
      +            1995 => 'Music Videos|Turkish|Religious',
      +            1996 => 'Music Videos|Pop|Turkish Pop',
      +            1997 => 'Music Videos|Rock|Turkish Rock',
      +            1998 => 'Music Videos|Alternative|Turkish Alternative',
      +            1999 => 'Music Videos|Hip-Hop/Rap|Turkish Hip-Hop/Rap',
      +            2000 => 'Music Videos|African|Maskandi',
      +            2001 => 'Music Videos|Russian|Russian Romance',
      +            2002 => 'Music Videos|Russian|Russian Bard',
      +            2003 => 'Music Videos|Russian|Russian Pop',
      +            2004 => 'Music Videos|Russian|Russian Rock',
      +            2005 => 'Music Videos|Russian|Russian Hip-Hop',
      +            2006 => 'Music Videos|Arabic|Levant',
      +            2007 => 'Music Videos|Arabic|Levant|Dabke',
      +            2008 => 'Music Videos|Arabic|Maghreb Rai',
      +            2009 => 'Music Videos|Arabic|Khaleeji|Khaleeji Jalsat',
      +            2010 => 'Music Videos|Arabic|Khaleeji|Khaleeji Shailat',
      +            2011 => 'Music Videos|Tarab',
      +            2012 => 'Music Videos|Tarab|Iraqi Tarab',
      +            2013 => 'Music Videos|Tarab|Egyptian Tarab',
      +            2014 => 'Music Videos|Tarab|Khaleeji Tarab',
      +            2015 => 'Music Videos|Pop|Levant Pop',
      +            2016 => 'Music Videos|Pop|Iraqi Pop',
      +            2017 => 'Music Videos|Pop|Egyptian Pop',
      +            2018 => 'Music Videos|Pop|Maghreb Pop',
      +            2019 => 'Music Videos|Pop|Khaleeji Pop',
      +            2020 => 'Music Videos|Hip-Hop/Rap|Levant Hip-Hop',
      +            2021 => 'Music Videos|Hip-Hop/Rap|Egyptian Hip-Hop',
      +            2022 => 'Music Videos|Hip-Hop/Rap|Maghreb Hip-Hop',
      +            2023 => 'Music Videos|Hip-Hop/Rap|Khaleeji Hip-Hop',
      +            2024 => 'Music Videos|Alternative|Indie Levant',
      +            2025 => 'Music Videos|Alternative|Indie Egyptian',
      +            2026 => 'Music Videos|Alternative|Indie Maghreb',
      +            2027 => 'Music Videos|Electronic|Levant Electronic',
      +            2028 => "Music Videos|Electronic|Electro-Cha'abi",
      +            2029 => 'Music Videos|Electronic|Maghreb Electronic',
      +            2030 => 'Music Videos|Folk|Iraqi Folk',
      +            2031 => 'Music Videos|Folk|Khaleeji Folk',
      +            2032 => 'Music Videos|Dance|Maghreb Dance',
                   4000 => 'TV Shows|Comedy',
                   4001 => 'TV Shows|Drama',
                   4002 => 'TV Shows|Animation',
                   4003 => 'TV Shows|Action & Adventure',
      -            4004 => 'TV Shows|Classic',
      -            4005 => 'TV Shows|Kids',
      +            4004 => 'TV Shows|Classics',
      +            4005 => 'TV Shows|Kids & Family',
                   4006 => 'TV Shows|Nonfiction',
                   4007 => 'TV Shows|Reality TV',
                   4008 => 'TV Shows|Sci-Fi & Fantasy',
      @@ -3781,9 +4246,11 @@
                   6023 => 'App Store|Food & Drink',
                   6024 => 'App Store|Shopping',
                   6025 => 'App Store|Stickers',
      +            6026 => 'App Store|Developer Tools',
      +            6027 => 'App Store|Graphics & Design',
                   7001 => 'App Store|Games|Action',
                   7002 => 'App Store|Games|Adventure',
      -            7003 => 'App Store|Games|Arcade',
      +            7003 => 'App Store|Games|Casual',
                   7004 => 'App Store|Games|Board',
                   7005 => 'App Store|Games|Card',
                   7006 => 'App Store|Games|Casino',
      @@ -4082,11 +4549,11 @@
                   8301 => 'Tones|Ringtones|Vocal|Trot',
                   8302 => 'Tones|Ringtones|Jazz|Vocal Jazz',
                   8303 => 'Tones|Ringtones|Vocal|Vocal Pop',
      -            8304 => 'Tones|Ringtones|World|Africa',
      -            8305 => 'Tones|Ringtones|World|Afrikaans',
      -            8306 => 'Tones|Ringtones|World|Afro-Beat',
      -            8307 => 'Tones|Ringtones|World|Afro-Pop',
      -            8308 => 'Tones|Ringtones|World|Arabesque',
      +            8304 => 'Tones|Ringtones|African',
      +            8305 => 'Tones|Ringtones|African|Afrikaans',
      +            8306 => 'Tones|Ringtones|African|Afro-Beat',
      +            8307 => 'Tones|Ringtones|African|Afro-Pop',
      +            8308 => 'Tones|Ringtones|Turkish|Arabesque',
                   8309 => 'Tones|Ringtones|World|Asia',
                   8310 => 'Tones|Ringtones|World|Australia',
                   8311 => 'Tones|Ringtones|World|Cajun',
      @@ -4102,7 +4569,7 @@
                   8321 => 'Tones|Ringtones|World|Farsi',
                   8322 => 'Tones|Ringtones|World|Flamenco',
                   8323 => 'Tones|Ringtones|World|France',
      -            8324 => 'Tones|Ringtones|World|Halk',
      +            8324 => 'Tones|Ringtones|Turkish|Halk',
                   8325 => 'Tones|Ringtones|World|Hawaii',
                   8326 => 'Tones|Ringtones|World|Iberia',
                   8327 => 'Tones|Ringtones|World|Indonesian Religious',
      @@ -4111,15 +4578,15 @@
                   8330 => 'Tones|Ringtones|World|Klezmer',
                   8331 => 'Tones|Ringtones|World|North America',
                   8332 => 'Tones|Ringtones|World|Polka',
      -            8333 => 'Tones|Ringtones|World|Russian',
      -            8334 => 'Tones|Ringtones|World|Russian Chanson',
      -            8335 => 'Tones|Ringtones|World|Sanat',
      +            8333 => 'Tones|Ringtones|Russian',
      +            8334 => 'Tones|Ringtones|Russian|Russian Chanson',
      +            8335 => 'Tones|Ringtones|Turkish|Sanat',
                   8336 => 'Tones|Ringtones|World|Soca',
                   8337 => 'Tones|Ringtones|World|South Africa',
                   8338 => 'Tones|Ringtones|World|South America',
                   8339 => 'Tones|Ringtones|World|Tango',
                   8340 => 'Tones|Ringtones|World|Traditional Celtic',
      -            8341 => 'Tones|Ringtones|World|Turkish',
      +            8341 => 'Tones|Ringtones|Turkish',
                   8342 => 'Tones|Ringtones|World|Worldbeat',
                   8343 => 'Tones|Ringtones|World|Zydeco',
                   8345 => 'Tones|Ringtones|Classical|Art Song',
      @@ -4170,6 +4637,63 @@
                   8390 => 'Tones|Ringtones|Indian|Regional Indian|Bengali',
                   8391 => 'Tones|Ringtones|Indian|Indian Classical|Carnatic Classical',
                   8392 => 'Tones|Ringtones|Indian|Indian Classical|Hindustani Classical',
      +            8393 => 'Tones|Ringtones|African|Afro House',
      +            8394 => 'Tones|Ringtones|African|Afro Soul',
      +            8395 => 'Tones|Ringtones|African|Afrobeats',
      +            8396 => 'Tones|Ringtones|African|Benga',
      +            8397 => 'Tones|Ringtones|African|Bongo-Flava',
      +            8398 => 'Tones|Ringtones|African|Coupe-Decale',
      +            8399 => 'Tones|Ringtones|African|Gqom',
      +            8400 => 'Tones|Ringtones|African|Highlife',
      +            8401 => 'Tones|Ringtones|African|Kuduro',
      +            8402 => 'Tones|Ringtones|African|Kizomba',
      +            8403 => 'Tones|Ringtones|African|Kwaito',
      +            8404 => 'Tones|Ringtones|African|Mbalax',
      +            8405 => 'Tones|Ringtones|African|Ndombolo',
      +            8406 => 'Tones|Ringtones|African|Shangaan Electro',
      +            8407 => 'Tones|Ringtones|African|Soukous',
      +            8408 => 'Tones|Ringtones|African|Taarab',
      +            8409 => 'Tones|Ringtones|African|Zouglou',
      +            8410 => 'Tones|Ringtones|Turkish|Ozgun',
      +            8411 => 'Tones|Ringtones|Turkish|Fantezi',
      +            8412 => 'Tones|Ringtones|Turkish|Religious',
      +            8413 => 'Tones|Ringtones|Pop|Turkish Pop',
      +            8414 => 'Tones|Ringtones|Rock|Turkish Rock',
      +            8415 => 'Tones|Ringtones|Alternative|Turkish Alternative',
      +            8416 => 'Tones|Ringtones|Hip-Hop/Rap|Turkish Hip-Hop/Rap',
      +            8417 => 'Tones|Ringtones|African|Maskandi',
      +            8418 => 'Tones|Ringtones|Russian|Russian Romance',
      +            8419 => 'Tones|Ringtones|Russian|Russian Bard',
      +            8420 => 'Tones|Ringtones|Russian|Russian Pop',
      +            8421 => 'Tones|Ringtones|Russian|Russian Rock',
      +            8422 => 'Tones|Ringtones|Russian|Russian Hip-Hop',
      +            8423 => 'Tones|Ringtones|Arabic|Levant',
      +            8424 => 'Tones|Ringtones|Arabic|Levant|Dabke',
      +            8425 => 'Tones|Ringtones|Arabic|Maghreb Rai',
      +            8426 => 'Tones|Ringtones|Arabic|Khaleeji|Khaleeji Jalsat',
      +            8427 => 'Tones|Ringtones|Arabic|Khaleeji|Khaleeji Shailat',
      +            8428 => 'Tones|Ringtones|Tarab',
      +            8429 => 'Tones|Ringtones|Tarab|Iraqi Tarab',
      +            8430 => 'Tones|Ringtones|Tarab|Egyptian Tarab',
      +            8431 => 'Tones|Ringtones|Tarab|Khaleeji Tarab',
      +            8432 => 'Tones|Ringtones|Pop|Levant Pop',
      +            8433 => 'Tones|Ringtones|Pop|Iraqi Pop',
      +            8434 => 'Tones|Ringtones|Pop|Egyptian Pop',
      +            8435 => 'Tones|Ringtones|Pop|Maghreb Pop',
      +            8436 => 'Tones|Ringtones|Pop|Khaleeji Pop',
      +            8437 => 'Tones|Ringtones|Hip-Hop/Rap|Levant Hip-Hop',
      +            8438 => 'Tones|Ringtones|Hip-Hop/Rap|Egyptian Hip-Hop',
      +            8439 => 'Tones|Ringtones|Hip-Hop/Rap|Maghreb Hip-Hop',
      +            8440 => 'Tones|Ringtones|Hip-Hop/Rap|Khaleeji Hip-Hop',
      +            8441 => 'Tones|Ringtones|Alternative|Indie Levant',
      +            8442 => 'Tones|Ringtones|Alternative|Indie Egyptian',
      +            8443 => 'Tones|Ringtones|Alternative|Indie Maghreb',
      +            8444 => 'Tones|Ringtones|Electronic|Levant Electronic',
      +            8445 => "Tones|Ringtones|Electronic|Electro-Cha'abi",
      +            8446 => 'Tones|Ringtones|Electronic|Maghreb Electronic',
      +            8447 => 'Tones|Ringtones|Folk|Iraqi Folk',
      +            8448 => 'Tones|Ringtones|Folk|Khaleeji Folk',
      +            8449 => 'Tones|Ringtones|Dance|Maghreb Dance',
                   9002 => 'Books|Nonfiction',
                   9003 => 'Books|Romance',
                   9004 => 'Books|Travel & Adventure',
      @@ -4183,7 +4707,7 @@
                   9019 => 'Books|Science & Nature',
                   9020 => 'Books|Sci-Fi & Fantasy',
                   9024 => 'Books|Lifestyle & Home',
      -            9025 => 'Books|Health, Mind & Body',
      +            9025 => 'Books|Self-Development',
                   9026 => 'Books|Comics & Graphic Novels',
                   9027 => 'Books|Computers & Internet',
                   9028 => 'Books|Cookbooks, Food & Wine',
      @@ -4197,7 +4721,7 @@
                   10001 => 'Books|Lifestyle & Home|Antiques & Collectibles',
                   10002 => 'Books|Arts & Entertainment|Art & Architecture',
                   10003 => 'Books|Religion & Spirituality|Bibles',
      -            10004 => 'Books|Health, Mind & Body|Spirituality',
      +            10004 => 'Books|Self-Development|Spirituality',
                   10005 => 'Books|Business & Personal Finance|Industries & Professions',
                   10006 => 'Books|Business & Personal Finance|Marketing & Sales',
                   10007 => 'Books|Business & Personal Finance|Small Business & Entrepreneurship',
      @@ -4262,7 +4786,7 @@
                   10066 => 'Books|Reference|Foreign Languages',
                   10067 => 'Books|Arts & Entertainment|Games',
                   10068 => 'Books|Lifestyle & Home|Gardening',
      -            10069 => 'Books|Health, Mind & Body|Health & Fitness',
      +            10069 => 'Books|Self-Development|Health & Fitness',
                   10070 => 'Books|History|Africa',
                   10071 => 'Books|History|Americas',
                   10072 => 'Books|History|Ancient',
      @@ -4287,7 +4811,7 @@
                   10091 => 'Books|Nonfiction|Philosophy',
                   10092 => 'Books|Arts & Entertainment|Photography',
                   10093 => 'Books|Fiction & Literature|Poetry',
      -            10094 => 'Books|Health, Mind & Body|Psychology',
      +            10094 => 'Books|Self-Development|Psychology',
                   10095 => 'Books|Reference|Almanacs & Yearbooks',
                   10096 => 'Books|Reference|Atlases & Maps',
                   10097 => 'Books|Reference|Catalogs & Directories',
      @@ -4312,7 +4836,7 @@
                   10116 => 'Books|Science & Nature|Life Sciences',
                   10117 => 'Books|Science & Nature|Physics',
                   10118 => 'Books|Science & Nature|Reference',
      -            10119 => 'Books|Health, Mind & Body|Self-Improvement',
      +            10119 => 'Books|Self-Development|Self-Improvement',
                   10120 => 'Books|Nonfiction|Social Science',
                   10121 => 'Books|Sports & Outdoors|Baseball',
                   10122 => 'Books|Sports & Outdoors|Basketball',
      @@ -4402,7 +4926,7 @@
                   11059 => 'Books|Sports & Outdoors|Motor Sports',
                   11060 => 'Books|Sports & Outdoors|Rugby',
                   11061 => 'Books|Sports & Outdoors|Running',
      -            11062 => 'Books|Health, Mind & Body|Diet & Nutrition',
      +            11062 => 'Books|Self-Development|Diet & Nutrition',
                   11063 => 'Books|Science & Nature|Agriculture',
                   11064 => 'Books|Science & Nature|Atmosphere',
                   11065 => 'Books|Science & Nature|Biology',
      @@ -4646,6 +5170,8 @@
                   11339 => 'Books|Comics & Graphic Novels|Manga|Girls',
                   11340 => 'Books|Comics & Graphic Novels|Manga|Women',
                   11341 => 'Books|Comics & Graphic Novels|Manga|Other',
      +            11342 => 'Books|Comics & Graphic Novels|Manga|Yaoi',
      +            11343 => 'Books|Comics & Graphic Novels|Manga|Comic Essays',
                   12001 => 'Mac App Store|Business',
                   12002 => 'Mac App Store|Developer Tools',
                   12003 => 'Mac App Store|Education',
      @@ -4669,7 +5195,7 @@
                   12022 => 'Mac App Store|Graphics & Design',
                   12201 => 'Mac App Store|Games|Action',
                   12202 => 'Mac App Store|Games|Adventure',
      -            12203 => 'Mac App Store|Games|Arcade',
      +            12203 => 'Mac App Store|Games|Casual',
                   12204 => 'Mac App Store|Games|Board',
                   12205 => 'Mac App Store|Games|Card',
                   12206 => 'Mac App Store|Games|Casino',
      @@ -5091,6 +5617,63 @@
                   100046 => 'Music|Indian|Regional Indian|Bengali',
                   100047 => 'Music|Indian|Indian Classical|Carnatic Classical',
                   100048 => 'Music|Indian|Indian Classical|Hindustani Classical',
      +            100049 => 'Music|African|Afro House',
      +            100050 => 'Music|African|Afro Soul',
      +            100051 => 'Music|African|Afrobeats',
      +            100052 => 'Music|African|Benga',
      +            100053 => 'Music|African|Bongo-Flava',
      +            100054 => 'Music|African|Coupe-Decale',
      +            100055 => 'Music|African|Gqom',
      +            100056 => 'Music|African|Highlife',
      +            100057 => 'Music|African|Kuduro',
      +            100058 => 'Music|African|Kizomba',
      +            100059 => 'Music|African|Kwaito',
      +            100060 => 'Music|African|Mbalax',
      +            100061 => 'Music|African|Ndombolo',
      +            100062 => 'Music|African|Shangaan Electro',
      +            100063 => 'Music|African|Soukous',
      +            100064 => 'Music|African|Taarab',
      +            100065 => 'Music|African|Zouglou',
      +            100066 => 'Music|Turkish|Ozgun',
      +            100067 => 'Music|Turkish|Fantezi',
      +            100068 => 'Music|Turkish|Religious',
      +            100069 => 'Music|Pop|Turkish Pop',
      +            100070 => 'Music|Rock|Turkish Rock',
      +            100071 => 'Music|Alternative|Turkish Alternative',
      +            100072 => 'Music|Hip-Hop/Rap|Turkish Hip-Hop/Rap',
      +            100073 => 'Music|African|Maskandi',
      +            100074 => 'Music|Russian|Russian Romance',
      +            100075 => 'Music|Russian|Russian Bard',
      +            100076 => 'Music|Russian|Russian Pop',
      +            100077 => 'Music|Russian|Russian Rock',
      +            100078 => 'Music|Russian|Russian Hip-Hop',
      +            100079 => 'Music|Arabic|Levant',
      +            100080 => 'Music|Arabic|Levant|Dabke',
      +            100081 => 'Music|Arabic|Maghreb Rai',
      +            100082 => 'Music|Arabic|Khaleeji|Khaleeji Jalsat',
      +            100083 => 'Music|Arabic|Khaleeji|Khaleeji Shailat',
      +            100084 => 'Music|Tarab',
      +            100085 => 'Music|Tarab|Iraqi Tarab',
      +            100086 => 'Music|Tarab|Egyptian Tarab',
      +            100087 => 'Music|Tarab|Khaleeji Tarab',
      +            100088 => 'Music|Pop|Levant Pop',
      +            100089 => 'Music|Pop|Iraqi Pop',
      +            100090 => 'Music|Pop|Egyptian Pop',
      +            100091 => 'Music|Pop|Maghreb Pop',
      +            100092 => 'Music|Pop|Khaleeji Pop',
      +            100093 => 'Music|Hip-Hop/Rap|Levant Hip-Hop',
      +            100094 => 'Music|Hip-Hop/Rap|Egyptian Hip-Hop',
      +            100095 => 'Music|Hip-Hop/Rap|Maghreb Hip-Hop',
      +            100096 => 'Music|Hip-Hop/Rap|Khaleeji Hip-Hop',
      +            100097 => 'Music|Alternative|Indie Levant',
      +            100098 => 'Music|Alternative|Indie Egyptian',
      +            100099 => 'Music|Alternative|Indie Maghreb',
      +            100100 => 'Music|Electronic|Levant Electronic',
      +            100101 => "Music|Electronic|Electro-Cha'abi",
      +            100102 => 'Music|Electronic|Maghreb Electronic',
      +            100103 => 'Music|Folk|Iraqi Folk',
      +            100104 => 'Music|Folk|Khaleeji Folk',
      +            100105 => 'Music|Dance|Maghreb Dance',
                   40000000 => 'iTunes U',
                   40000001 => 'iTunes U|Business & Economics',
                   40000002 => 'iTunes U|Business & Economics|Economics',
      @@ -5316,12 +5899,14 @@
                   50000090 => 'Books|Comics & Graphic Novels|Comics',
                   50000091 => 'Books|Romance|Multicultural',
                   50000092 => 'Audiobooks|Erotica',
      +            50000093 => 'Audiobooks|Light Novels',
               },
           },
           grup => { Name => 'Grouping', Avoid => 1 }, #10
           hdvd => { #10
               Name => 'HDVideo',
               Format => 'int8u', #24
      +        Writable => 'int8s', #27
               PrintConv => { 0 => 'No', 1 => 'Yes' },
           },
           keyw => 'Keyword', #7
      @@ -5329,18 +5914,21 @@
           pcst => { #7
               Name => 'Podcast',
               Format => 'int8u', #23
      +        Writable => 'int8s', #27
               PrintConv => { 0 => 'No', 1 => 'Yes' },
           },
           perf => 'Performer',
           plID => { #10 (or TV season)
               Name => 'PlayListID',
               Format => 'int8u',  # actually int64u, but split it up
      +        Writable => 'int32s', #27
           },
           purd => 'PurchaseDate', #7
           purl => 'PodcastURL', #7
           rtng => { #10
               Name => 'Rating',
               Format => 'int8u', #23
      +        Writable => 'int8s', #27
               PrintConv => {
                   0 => 'none',
                   1 => 'Explicit',
      @@ -5351,6 +5939,7 @@
           sfID => { #10
               Name => 'AppleStoreCountry',
               Format => 'int32u',
      +        Writable => 'int32s', #27
               SeparateTable => 1,
               PrintConv => { #21
                   143441 => 'United States', # US
      @@ -5519,6 +6108,7 @@
           stik => { #10
               Name => 'MediaType',
               Format => 'int8u', #23
      +        Writable => 'int8s', #27
               PrintConvColumns => 2,
               PrintConv => { #(http://weblog.xanga.com/gryphondwb/615474010/iphone-ringtones---what-did-itunes-741-really-do.html)
                   0 => 'Movie (old)', #forum9059 (was Movie)
      @@ -5540,6 +6130,7 @@
           tves => { #7/10
               Name => 'TVEpisode',
               Format => 'int32u',
      +        Writable => 'int32s', #27
           },
           tvnn => 'TVNetworkName', #7
           tvsh => 'TVShow', #10
      @@ -5550,7 +6141,8 @@
           yrrc => 'Year', #(ffmpeg source)
           itnu => { #PH (iTunes 10.5)
               Name => 'iTunesU',
      -        Format => 'int8s',
      +        Format => 'int8u', #27
      +        Writable => 'int8s', #27
               Description => 'iTunes U',
               PrintConv => { 0 => 'No', 1 => 'Yes' },
           },
      @@ -5592,6 +6184,35 @@
           GUID => 'GUID',
           AACR => { Name => 'Unknown_AACR', Unknown => 1 }, # eg: "CR!1T1H1QH6WX7T714G2BMFX3E9MC4S"
           # ausr - 30 bytes (User Alias?)
      +    "\xa9xyz" => { #PH (written by Google Photos)
      +        Name => 'GPSCoordinates',
      +        Groups => { 2 => 'Location' },
      +        ValueConv => \&ConvertISO6709,
      +        ValueConvInv => \&ConvInvISO6709,
      +        PrintConv => \&PrintGPSCoordinates,
      +        PrintConvInv => \&PrintInvGPSCoordinates,
      +    },
      +    # the following tags written by iTunes 12.5.1.21
      +    # (ref https://www.ventismedia.com/mantis/view.php?id=14963
      +    #  https://community.mp3tag.de/t/x-mp4-new-tag-problems/19488)
      +    "\xa9wrk" => 'Work', #PH
      +    "\xa9mvn" => 'MovementName', #PH
      +    "\xa9mvi" => { #PH
      +        Name => 'MovementNumber',
      +        Format => 'int16u', #27
      +        Writable => 'int16s', #27
      +    },
      +    "\xa9mvc" => { #PH
      +        Name => 'MovementCount',
      +        Format => 'int16u', #27
      +        Writable => 'int16s', #27
      +    },
      +    shwm => { #PH
      +        Name => 'ShowMovement',
      +        Format => 'int8u', #27
      +        Writable => 'int8s', #27
      +        PrintConv => { 0 => 'No', 1 => 'Yes' },
      +    },
       );
       
       # tag decoded from timed face records
      @@ -5624,13 +6245,12 @@
           PROCESS_PROC => \&ProcessKeys,
           WRITE_PROC => \&WriteKeys,
           CHECK_PROC => \&CheckQTValue,
      -    VARS => { LONG_TAGS => 3 },
      +    VARS => { LONG_TAGS => 7 },
           WRITABLE => 1,
           # (not PREFERRED when writing)
           GROUPS => { 1 => 'Keys' },
           WRITE_GROUP => 'Keys',
           LANG_INFO => \&GetLangInfo,
      -    FORMAT => 'string',
           NOTES => q{
               This directory contains a list of key names which are used to decode tags
               written by the "mdta" handler.  Also in this table are a few tags found in
      @@ -5670,7 +6290,7 @@
                   return $val;
               },
               PrintConv => '$self->ConvertDateTime($val)',
      -        PrintConvInv => '$self->InverseDateTime($val)',
      +        PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
           },
           description => { },
           director    => { },
      @@ -5696,6 +6316,10 @@
           'location.ISO6709' => {
               Name => 'GPSCoordinates',
               Groups => { 2 => 'Location' },
      +        Notes => q{
      +            Google Photos may ignore this if the coorinates have more than 5 digits
      +            after the decimal
      +        },
               ValueConv => \&ConvertISO6709,
               ValueConvInv => \&ConvInvISO6709,
               PrintConv => \&PrintGPSCoordinates,
      @@ -5730,8 +6354,13 @@
                   return $val;
               },
               PrintConv => '$self->ConvertDateTime($val)',
      -        PrintConvInv => '$self->InverseDateTime($val)',
      +        PrintConvInv => '$self->InverseDateTime($val,1)', # (add time zone if it didn't exist)
           },
      +    'location.accuracy.horizontal' => { Name => 'LocationAccuracyHorizontal' },
      +    'live-photo.auto'           => { Name => 'LivePhotoAuto', Writable => 'int8u' },
      +    'live-photo.vitality-score' => { Name => 'LivePhotoVitalityScore', Writable => 'float' },
      +    'live-photo.vitality-scoring-version' => { Name => 'LivePhotoVitalityScoringVersion', Writable => 'int64s' },
      +    'apple.photos.variation-identifier'   => { Name => 'ApplePhotosVariationIdentifier',  Writable => 'int64s' },
           'direction.facing' => { Name => 'CameraDirection', Groups => { 2 => 'Location' } },
           'direction.motion' => { Name => 'CameraMotion',    Groups => { 2 => 'Location' } },
           'location.body'    => { Name => 'LocationBody',    Groups => { 2 => 'Location' } },
      @@ -5741,7 +6370,7 @@
           'player.movie.visual.tint'      => 'Tint',
           'player.movie.visual.contrast'  => 'Contrast',
           'player.movie.audio.gain'       => 'AudioGain',
      -    'player.movie.audio.treble'     => 'Trebel',
      +    'player.movie.audio.treble'     => 'Treble',
           'player.movie.audio.bass'       => 'Bass',
           'player.movie.audio.balance'    => 'Balance',
           'player.movie.audio.pitchshift' => 'PitchShift',
      @@ -5767,11 +6396,15 @@
           # com.divergentmedia.clipwrap.manufacturer     ('Sony')
           # com.divergentmedia.clipwrap.originalDateTime ('2013/2/6 10:30:40+0200')
       #
      -# seen in timed metadata (mebx), and added dynamically to the table
      -# via SaveMetaKeys().  NOTE: these tags are not writable!
      +# seen in timed metadata (mebx), and added dynamically to the table via SaveMetaKeys()
      +# NOTE: these tags are not writable! (timed metadata cannot yet be written)
       #
           # (mdta)com.apple.quicktime.video-orientation (dtyp=66, int16s)
      -    'video-orientation' => { Name => 'VideoOrientation', Writable => 0 },
      +    'video-orientation' => {
      +        Name => 'VideoOrientation',
      +        Writable => 0,
      +        PrintConv => \%Image::ExifTool::Exif::orientation, #PH (NC)
      +    },
           # (mdta)com.apple.quicktime.live-photo-info (dtyp=com.apple.quicktime.com.apple.quicktime.live-photo-info)
           'live-photo-info' => {
               Name => 'LivePhotoInfo',
      @@ -5811,15 +6444,32 @@
           'detected-face.roll-angle' => { Name => 'DetectedFaceRollAngle', Writable => 0 },
           # (fiel)com.apple.quicktime.detected-face.yaw-angle (dtyp=23, float)
           'detected-face.yaw-angle'  => { Name => 'DetectedFaceYawAngle',  Writable => 0 },
      +#
      +# seen in Apple ProRes RAW file
      +#
      +    # (mdta)com.apple.proapps.manufacturer (eg. "Sony")
      +    # (mdta)com.apple.proapps.exif.{Exif}.FNumber (float, eg. 1.0)
      +    # (mdta)org.smpte.rdd18.lens.irisfnumber (eg. "F1.0")
      +    # (mdta)com.apple.proapps.exif.{Exif}.ShutterSpeedValue (float, eg. 1.006)
      +    # (mdta)org.smpte.rdd18.camera.shutterspeed_angle (eg. "179.2deg")
      +    # (mdta)org.smpte.rdd18.camera.neutraldensityfilterwheelsetting (eg. "ND1")
      +    # (mdta)org.smpte.rdd18.camera.whitebalance (eg. "4300K")
      +    # (mdta)com.apple.proapps.exif.{Exif}.ExposureIndex (float, eg. 4000)
      +    # (mdta)org.smpte.rdd18.camera.isosensitivity (eg. "4000")
      +    # (mdta)com.apple.proapps.image.{TIFF}.Make (eg. "Atmos")
      +    # (mdta)com.apple.proapps.image.{TIFF}.Model (eg. "ShogunInferno")
      +    # (mdta)com.apple.proapps.image.{TIFF}.Software (eg. "9.0")
       );
       
       # iTunes info ('----') atoms
       %Image::ExifTool::QuickTime::iTunesInfo = (
           PROCESS_PROC => \&ProcessMOV,
      -    GROUPS => { 2 => 'Audio' },
      +    GROUPS => { 1 => 'iTunes', 2 => 'Audio' },
      +    VARS => { LONG_TAGS => 0 }, # (hack for discrepancy in the way long tags are counted in BuildTagLookup)
           NOTES => q{
               ExifTool will extract any iTunesInfo tags that exist, even if they are not
      -        defined in this table.
      +        defined in this table.  These tags belong to the family 1 "iTunes" group,
      +        and are not currently writable.
           },
           # 'mean'/'name'/'data' atoms form a triplet, but unfortunately
           # I haven't been able to find any documentation on this.
      @@ -5880,9 +6530,45 @@
               SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::EncodingParams' },
           },
           # also heard about 'iTunPGAP', but I haven't seen a sample
      -    DISCNUMBER => 'DiscNumber', #PH
      -    TRACKNUMBER => 'TrackNumber', #PH
      -    popularimeter => 'Popularimeter', #PH
      +    # all tags below were added based on samples I have seen - PH
      +    DISCNUMBER          => 'DiscNumber',
      +    TRACKNUMBER         => 'TrackNumber',
      +    ARTISTS             => 'Artists',
      +    CATALOGNUMBER       => 'CatalogNumber',
      +    RATING              => 'Rating',
      +    MEDIA               => 'Media',
      +    SCRIPT              => 'Script', # character set? (seen 'Latn')
      +    BARCODE             => 'Barcode',
      +    LABEL               => 'Label',
      +    MOOD                => 'Mood',
      +    popularimeter       => 'Popularimeter',
      +    'Dynamic Range (DR)'=> 'DynamicRange',
      +    initialkey          => 'InitialKey',
      +    originalyear        => 'OriginalYear',
      +    originaldate        => 'OriginalDate',
      +    '~length'           => 'Length', # play length? (ie. duration?)
      +    replaygain_track_gain=>'ReplayTrackGain',
      +    replaygain_track_peak=>'ReplayTrackPeak',
      +   'Volume Level (ReplayGain)'=> 'ReplayVolumeLevel',
      +   'Dynamic Range (R128)'=> 'DynamicRangeR128',
      +   'Volume Level (R128)' => 'VolumeLevelR128',
      +   'Peak Level (Sample)' => 'PeakLevelSample',
      +   'Peak Level (R128)'   => 'PeakLevelR128',
      +    # also seen (many from forum12777):
      +    # 'MusicBrainz Album Release Country'
      +    # 'MusicBrainz Album Type'
      +    # 'MusicBrainz Album Status'
      +    # 'MusicBrainz Track Id'
      +    # 'MusicBrainz Release Track Id'
      +    # 'MusicBrainz Album Id'
      +    # 'MusicBrainz Album Artist Id'
      +    # 'MusicBrainz Artist Id'
      +    # 'Acoustid Id' (sic)
      +    # 'Tool Version'
      +    # 'Tool Name'
      +    # 'ISRC'
      +    # 'HDCD'
      +    # 'Waveform'
       );
       
       # iTunes audio encoding parameters
      @@ -6291,7 +6977,7 @@
           sgpd => {
               Name => 'SampleGroupDescription',
               Flags => ['Binary','Unknown'],
      -        # bytes 4-7 give grouping type (ref ISO/IEC 14496-15:2014) 
      +        # bytes 4-7 give grouping type (ref ISO/IEC 14496-15:2014)
               #   tsas - temporal sublayer sample
               #   stsa - step-wise temporal layer access
               #   avss - AVC sample
      @@ -6351,7 +7037,7 @@
       #
       #   AudioFormat  Offset  Child atoms
       #   -----------  ------  ----------------
      -#   mp4a         52 *    wave, chan, esds, SA3D(Insta360 spherical video params?)
      +#   mp4a         52 *    wave, chan, esds, SA3D(Insta360 spherical video params?,also GoPro Max)
       #   in24         52      wave, chan
       #   "ms\0\x11"   52      wave
       #   sowt         52      chan
      @@ -6388,6 +7074,7 @@
           # alac - 28 bytes
           # adrm - AAX DRM atom? 148 bytes
           # aabd - AAX unknown 17kB (contains 'aavd' strings)
      +    # SA3D - written by Garmin VIRB360
       );
       
       # AMR decode config box (ref 3)
      @@ -6418,13 +7105,28 @@
               Name => 'SchemeInfo',
               SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::SchemeInfo' },
           },
      +    enda => {
      +        Name => 'Endianness',
      +        Format => 'int16u',
      +        PrintConv => {
      +            0 => 'Big-endian (Motorola, MM)',
      +            1 => 'Little-endian (Intel, II)',
      +        },
      +    },
           # skcr
      -    # enda
       );
       
       %Image::ExifTool::QuickTime::Wave = (
           PROCESS_PROC => \&ProcessMOV,
           frma => 'PurchaseFileFormat',
      +    enda => {
      +        Name => 'Endianness',
      +        Format => 'int16u',
      +        PrintConv => {
      +            0 => 'Big-endian (Motorola, MM)',
      +            1 => 'Little-endian (Intel, II)',
      +        },
      +    },
           # "ms\0\x11" - 20 bytes
       );
       
      @@ -6859,6 +7561,20 @@
       #
           ftab => { Name => 'FontTable',  Format => 'undef', ValueConv => 'substr($val, 5)' },
           name => { Name => 'OtherName',  Format => 'undef', ValueConv => 'substr($val, 4)' },
      +    # mrlh = GM header?
      +    # mrlv = GM data
      +    # mrld = GM data (448-byte records):
      +    #            0 - int32u count
      +    #            4 - int32u ? (related to units) 0=none,1=m/km,2=L,3=kph,4=C,7=deg,8=rpm,9=kPa,10=G,11=V,15=Nm,16=%
      +    #            8 - int32u ? (0,1,3,4,5)
      +    #           12 - string[64] units
      +    #           76 - int32u ? (1,3,7,15)
      +    #           80 - int32u 0
      +    #           84 - undef[4] ?
      +    #           88 - int16u[6] ?
      +    #           100 - undef[32] ?
      +    #           132 - string[64] measurement name
      +    #           196 - string[64] measurement name
       );
       
       # MP4 data information box (ref 5)
      @@ -7011,7 +7727,11 @@
           8 => {
               Name => 'HandlerType',
               Format => 'undef[4]',
      -        RawConv => '$$self{HandlerType} = $val unless $val eq "alis" or $val eq "url "; $val',
      +        RawConv => q{
      +            $$self{HandlerType} = $val unless $val eq 'alis' or $val eq 'url ';
      +            $$self{HasHandler}{$val} = 1; # remember all our handlers
      +            return $val;
      +        },
               PrintConvColumns => 2,
               PrintConv => {
                   alis => 'Alias Data', #PH
      @@ -7116,7 +7836,7 @@
                   $val =~ s/\0+$//;   # remove trailing nulls
                   if (length $val and $$self{OPTIONS}{ExtractEmbedded}) {
                       my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
      -                Image::ExifTool::QuickTime::ProcessNMEA($self, { DataPt => \$val }, $tagTbl);
      +                Image::ExifTool::QuickTime::ProcessGPSLog($self, { DataPt => \$val }, $tagTbl);
                   }
                   return $val;
               },
      @@ -7155,6 +7875,7 @@
                   1 => 'QuickTime:HandlerType',
               },
               Writable => 1,
      +        Protected => 1,
               WriteAlso => {
                   MatrixStructure => 'Image::ExifTool::QuickTime::GetRotationMatrix($val)',
               },
      @@ -7725,7 +8446,6 @@
           }
           # add all referenced item ID's to a "RefersTo" lookup
           $$et{ItemInfo}{$id}{RefersTo}{$_} = 1 foreach @to;
      -    $et->VPrint(1, "$$et{INDENT}  Item $id describes: @to\n") unless $$et{IsWriting};
           return undef;
       }
       
      @@ -7916,22 +8636,41 @@
                   $buff = $val . $buff if length $val;
                   next unless length $buff;   # ignore empty directories
                   my ($start, $subTable, $proc);
      +            my $pos = $$item{Extents}[0][1] + $base;
                   if ($name eq 'EXIF' and length $buff >= 4) {
      -                $start = 4 + unpack('N', $buff); # skip "Exif\0\0" header if it exists
      +                if ($buff =~ /^(MM\0\x2a|II\x2a\0)/) {
      +                    $et->Warn('Missing Exif header');
      +                    $start = 0;
      +                } elsif ($buff =~ /^Exif\0\0/) {
      +                    # (haven't seen this yet, but it is just a matter of time
      +                    #  until someone screws it up like this)
      +                    $et->Warn('Missing Exif header size');
      +                    $start = 6;
      +                } else {
      +                    my $n = unpack('N', $buff);
      +                    $start = 4 + $n; # skip "Exif\0\0" header if it exists
      +                    if ($start > length($buff)) {
      +                        $et->Warn('Invalid EXIF header');
      +                        next;
      +                    }
      +                    if ($$et{HTML_DUMP}) {
      +                        $et->HDump($pos, 4, 'Exif header length', "Value: $n");
      +                        $et->HDump($pos+4, $start-4, 'Exif header') if $n;
      +                    }
      +                }
                       $subTable = GetTagTable('Image::ExifTool::Exif::Main');
                       $proc = \&Image::ExifTool::ProcessTIFF;
                   } else {
                       $start = 0;
                       $subTable = GetTagTable('Image::ExifTool::XMP::Main');
                   }
      -            my $pos = $$item{Extents}[0][1] + $base;
                   my %dirInfo = (
                       DataPt   => \$buff,
                       DataLen  => length $buff,
                       DirStart => $start,
                       DirLen   => length($buff) - $start,
                       DataPos  => $pos,
      -                Base     => $pos, # (needed for IsOffset tags in binary data)
      +                Base     => $pos + $start, # (needed for HtmlDump and IsOffset tags in binary data)
                   );
                   # handle processing of metadata for sub-documents
                   if (defined $primary and $$item{RefersTo} and not $$item{RefersTo}{$primary}) {
      @@ -7971,13 +8710,13 @@
       #------------------------------------------------------------------------------
       # Get quicktime format from flags word
       # Inputs: 0) quicktime atom flags, 1) data length
      -# Returns: Exiftool format string
      +# Returns: ExifTool format string
       sub QuickTimeFormat($$)
       {
           my ($flags, $len) = @_;
           my $format;
           if ($flags == 0x15 or $flags == 0x16) {
      -        $format = { 1=>'int8', 2=>'int16', 4=>'int32' }->{$len};
      +        $format = { 1=>'int8', 2=>'int16', 4=>'int32', 8=>'int64' }->{$len};
               $format .= $flags == 0x15 ? 's' : 'u' if $format;
           } elsif ($flags == 0x17) {
               $format = 'float';
      @@ -8054,18 +8793,22 @@
           my $dirLen = $$dirInfo{DirLen} || (length($$dataPt) - $pos);
           return 0 if $pos + 8 > $dirLen;
       
      -    my $num = Get32u($dataPt, 4);   # get number of sample descriptions in table
      +    my $num = Get32u($dataPt, 4);   # get number of sample entries in table
           $pos += 8;
      -    my $i;
      -    for ($i=0; $i<$num; ++$i) {     # loop through sample descriptions
      -        last if $pos + 8 > $dirLen;
      +    my ($i, $err);
      +    for ($i=0; $i<$num; ++$i) {     # loop through sample entries
      +        $pos + 8 > $dirLen and $err = 1, last;
               my $size = Get32u($dataPt, $pos);
      -        last if $pos + $size > $dirLen;
      +        $pos + $size > $dirLen and $err = 1, last;
               $$dirInfo{DirStart} = $pos;
               $$dirInfo{DirLen} = $size;
               ProcessHybrid($et, $dirInfo, $tagTablePtr);
               $pos += $size;
           }
      +    if ($err and $$et{HandlerType}) {
      +        my $grp = $$et{SET_GROUP1} || $$dirInfo{Parent} || 'unknown';
      +        $et->Warn("Truncated $$et{HandlerType} sample table for $grp");
      +    }
           return 1;
       }
       
      @@ -8198,20 +8941,28 @@
               my $ns  = substr($$dataPt, $pos + 4, 4);
               my $tag = substr($$dataPt, $pos + 8, $len - 8);
               $tag =~ s/\0.*//s; # truncate at null
      -        $tag =~ s/^com\.apple\.quicktime\.// if $ns eq 'mdta'; # remove apple quicktime domain
      +        my $full = $tag;
      +        $tag =~ s/^com\.(apple\.quicktime\.)?// if $ns eq 'mdta'; # remove apple quicktime domain
               $tag = "Tag_$ns" unless $tag;
      -        # (I have some samples where the tag is a reversed ItemList or UserData tag ID)
      -        my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
      -        unless ($tagInfo) {
      -            $tagInfo = $et->GetTagInfo($itemList, $tag);
      -            unless ($tagInfo) {
      +        my $short = $tag;
      +        my $tagInfo;
      +        for (;;) {
      +            $tagInfo = $et->GetTagInfo($tagTablePtr, $tag) and last;
      +            # also try ItemList and UserData tables
      +            $tagInfo = $et->GetTagInfo($itemList, $tag) and last;
      +            $tagInfo = $et->GetTagInfo($userData, $tag) and last;
      +            # (I have some samples where the tag is a reversed ItemList or UserData tag ID)
      +            if ($tag =~ /^\w{3}\xa9$/) {
      +                $tag = pack('N', unpack('V', $tag));
      +                $tagInfo = $et->GetTagInfo($itemList, $tag) and last;
                       $tagInfo = $et->GetTagInfo($userData, $tag);
      -                if (not $tagInfo and $tag =~ /^\w{3}\xa9$/) {
      -                    $tag = pack('N', unpack('V', $tag));
      -                    $tagInfo = $et->GetTagInfo($itemList, $tag);
      -                    $tagInfo or $tagInfo = $et->GetTagInfo($userData, $tag);
      -                }
      +                last;
      +            }
      +            if ($tag eq $full) {
      +                $tag = $short;
      +                last;
                   }
      +            $tag = $full;
               }
               my ($newInfo, $msg);
               if ($tagInfo) {
      @@ -8230,9 +8981,10 @@
                   $$newInfo{Groups} = $groups ? { %$groups } : { };
                   $$newInfo{Groups}{$_} or $$newInfo{Groups}{$_} = $$tagTablePtr{GROUPS}{$_} foreach 0..2;
                   $$newInfo{Groups}{1} = 'Keys';
      -        } elsif ($tag =~ /^[-\w. ]+$/) {
      +        } elsif ($tag =~ /^[-\w. ]+$/ or $tag =~ /\w{4}/) {
                   # create info for tags with reasonable id's
                   my $name = ucfirst $tag;
      +            $name =~ tr/-0-9a-zA-Z_. //dc;
                   $name =~ s/[. ]+(.?)/\U$1/g;
                   $name =~ s/_([a-z])/_\U$1/g;
                   $name =~ s/([a-z])_([A-Z])/$1$2/g;
      @@ -8251,9 +9003,10 @@
                   delete $$itemList{$id};
               }
               if ($newInfo) {
      +            $$newInfo{KeysID} = $tag;  # save original ID for use in family 7 group name
                   AddTagToTable($itemList, $id, $newInfo);
                   $msg or $msg = '';
      -            $out and print $out "$$et{INDENT}Added ItemList Tag $id = $tag$msg\n";
      +            $out and print $out "$$et{INDENT}Added ItemList Tag $id = ($ns) $tag$msg\n";
               }
               $pos += $len;
               ++$index;
      @@ -8289,7 +9042,7 @@
           my $dirID = $$dirInfo{DirID} || '';
           my $charsetQuickTime = $et->Options('CharsetQuickTime');
           my ($buff, $tag, $size, $track, $isUserData, %triplet, $doDefaultLang, $index);
      -    my ($dirEnd, $ee, $unkOpt, %saveOptions, $atomCount);
      +    my ($dirEnd, $unkOpt, %saveOptions, $atomCount);
       
           my $topLevel = not $$et{InQuickTime};
           $$et{InQuickTime} = 1;
      @@ -8329,6 +9082,7 @@
                   if ($raf->Read($buff, $size-8) == $size-8) {
                       $raf->Seek(-($size-8), 1);
                       my $type = substr($buff, 0, 4);
      +                $$et{save_ftyp} = $type;
                       # see if we know the extension for this file type
                       if ($ftypLookup{$type} and $ftypLookup{$type} =~ /\(\.(\w+)/) {
                           $fileType = $1;
      @@ -8353,8 +9107,8 @@
           }
           $$raf{NoBuffer} = 1 if $et->Options('FastScan'); # disable buffering in FastScan mode
       
      -    if ($$et{OPTIONS}{ExtractEmbedded}) {
      -        $ee = 1;
      +    my $ee = $$et{OPTIONS}{ExtractEmbedded};
      +    if ($ee) {
               $unkOpt = $$et{OPTIONS}{Unknown};
               require 'Image/ExifTool/QuickTimeStream.pl';
           }
      @@ -8377,6 +9131,12 @@
                       } else {
                           my $t = PrintableTagID($tag,2);
                           $et->VPrint(0,"$$et{INDENT}Tag '${t}' extends to end of file");
      +                    if ($$tagTablePtr{"$tag-size"}) {
      +                        my $pos = $raf->Tell();
      +                        $raf->Seek(0, 2);
      +                        $et->HandleTag($tagTablePtr, "$tag-size", $raf->Tell() - $pos);
      +                        $et->HandleTag($tagTablePtr, "$tag-offset", $pos) if $$tagTablePtr{"$tag-offset"};
      +                    }
                       }
                       last;
                   }
      @@ -8437,6 +9197,9 @@
                   } elsif ($handlerType ne 'vide' and not $$et{OPTIONS}{Validate}) {
                       EEWarn($et);
                   }
      +        } elsif ($ee and $ee > 1 and $eeBox2{$handlerType} and $eeBox2{$handlerType}{$tag}) {
      +            $eeTag = 1;
      +            $$et{OPTIONS}{Unknown} = 1;
               }
               my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
       
      @@ -8558,6 +9321,24 @@
                           Format  => $tagInfo ? $$tagInfo{Format} : undef,
                           Index   => $index,
                       );
      +                # print iref item ID numbers
      +                if ($dirID eq 'iref') {
      +                    my ($id, $count, @to, $i);
      +                    if ($$et{ItemRefVersion}) {
      +                        ($id, $count, @to) = unpack('NnN*', $val) if length $val >= 10;
      +                    } else {
      +                        ($id, $count, @to) = unpack('nnn*', $val) if length $val >= 6;
      +                    }
      +                    defined $id or $id = '', $count = 0;
      +                    $id .= " (wrong count: $count)" if $count != @to;
      +                    # convert sequential numbers to a range
      +                    for ($i=1; $i<@to; ) {
      +                        $to[$i-1] =~ /(\d+)$/ and $to[$i] == $1 + 1 or ++$i, next;
      +                        $to[$i-1] =~ s/(-.*)?$/-$to[$i]/;
      +                        splice @to, $i, 1;
      +                    }
      +                    $et->VPrint(1, "$$et{INDENT}  Item $id refers to: ",join(',',@to),"\n");
      +                }
                   }
                   # extract metadata from stream if ExtractEmbedded option is enabled
                   if ($eeTag) {
      @@ -8582,6 +9363,7 @@
                                   Name => $name,
                                   Description => $desc,
                               };
      +                        $et->VPrint(0, $$et{INDENT}, "[adding QuickTime:$name]\n");
                               AddTagToTable($tagTablePtr, $tag, $tagInfo);
                           }
                           # ignore 8-byte header
      @@ -8593,9 +9375,9 @@
                                   $val = \$buff;
                               }
                           }
      -                    undef %triplet;
      +                    $$tagInfo{List} = 1; # (allow any of these tags to have multiple data elements)
      +                    $et->VerboseInfo($tag, $tagInfo, Value => $val) if $verbose;
                       } else {
      -                    undef %triplet if $tag eq 'mean';
                           $triplet{$tag} = substr($val,4) if length($val) > 4;
                           undef $tagInfo;  # don't store this tag
                       }
      @@ -8627,7 +9409,9 @@
                               SetByteOrder('II');
                           }
                           my $oldGroup1 = $$et{SET_GROUP1};
      -                    if ($$tagInfo{Name} eq 'Track') {
      +                    if ($$tagInfo{SubDirectory} and $$tagInfo{SubDirectory}{TagTable} and
      +                        $$tagInfo{SubDirectory}{TagTable} eq 'Image::ExifTool::QuickTime::Track')
      +                    {
                               $track or $track = 0;
                               $$et{SET_GROUP1} = 'Track' . (++$track);
                           }
      @@ -8659,7 +9443,7 @@
                           for (;;) {
                               last if $pos + 16 > $size;
                               my ($len, $type, $flags, $ctry, $lang) = unpack("x${pos}Na4Nnn", $val);
      -                        last if $pos + $len > $size;
      +                        last if $pos + $len > $size or not $len;
                               my ($value, $langInfo, $oldDir);
                               my $format = $$tagInfo{Format};
                               if ($type eq 'data' and $len >= 16) {
      @@ -8677,7 +9461,13 @@
                                       # (shouldn't be null terminated, but some software writes it anyway)
                                       $value =~ s/\0$// unless $$tagInfo{Binary};
                                   } else {
      -                                $format = QuickTimeFormat($flags, $len) unless $format;
      +                                if (not $format) {
      +                                    $format = QuickTimeFormat($flags, $len);
      +                                } elsif ($format =~ /^int\d+([us])$/) {
      +                                    # adjust integer to available length (but not int64)
      +                                    my $fmt = { 1=>'int8', 2=>'int16', 4=>'int32' }->{$len};
      +                                    $format = $fmt . $1 if defined $fmt;
      +                                }
                                       if ($format) {
                                           $value = ReadValue(\$value, 0, $format, $$tagInfo{Count}, $len);
                                       } elsif (not $$tagInfo{ValueConv}) {
      @@ -8688,10 +9478,10 @@
                                   }
                               }
                               if ($ctry or $lang) {
      -                            $lang = GetLangCode($lang, $ctry);
      -                            if ($lang) {
      +                            my $langCode = GetLangCode($lang, $ctry);
      +                            if ($langCode) {
                                       # get tagInfo for other language
      -                                $langInfo = GetLangInfoQT($et, $tagInfo, $lang);
      +                                $langInfo = GetLangInfoQT($et, $tagInfo, $langCode);
                                       # save other language tag ID's so we can delete later if necessary
                                       if ($langInfo) {
                                           $$tagInfo{OtherLang} or $$tagInfo{OtherLang} = [ ];
      @@ -8708,7 +9498,7 @@
                                   Size    => $len,
                                   Format  => $format,
                                   Index   => $index,
      -                            Extra   => sprintf(", Type='${type}', Flags=0x%x%s",$flags,($lang ? ", Lang=$lang" : '')),
      +                            Extra   => sprintf(", Type='${type}', Flags=0x%x, Lang=0x%.4x",$flags,$lang),
                               ) if $verbose;
                               # use "Keys" in path instead of ItemList if this was defined by a Keys tag
                               my $isKey = $$tagInfo{Groups} && $$tagInfo{Groups}{1} && $$tagInfo{Groups}{1} eq 'Keys';
      @@ -8729,9 +9519,9 @@
                           }
                           for (;;) {
                               my ($len, $lang);
      -                        if ($$tagInfo{IText} and $$tagInfo{IText} == 6) {
      -                            last if $pos + 6 > $size;
      -                            $pos += 4;
      +                        if ($$tagInfo{IText} and $$tagInfo{IText} >= 6) {
      +                            last if $pos + $$tagInfo{IText} > $size;
      +                            $pos += $$tagInfo{IText} - 2;
                                   $lang = unpack("x${pos}n", $val);
                                   $pos += 2;
                                   $len = $size - $pos;
      @@ -8751,7 +9541,7 @@
                               # ignore any empty entries (or null padding) after the first
                               next if not $len and $pos;
                               my $str = substr($val, $pos, $len);
      -                        my $langInfo;
      +                        my ($langInfo, $enc);
                               if (($lang < 0x400 or $lang == 0x7fff) and $str !~ /^\xfe\xff/) {
                                   # this is a Macintosh language code
                                   # a language code of 0 is Macintosh english, so treat as default
      @@ -8768,15 +9558,22 @@
                                   }
                                   # the spec says only "Macintosh text encoding", but
                                   # allow this to be configured by the user
      -                            $str = $et->Decode($str, $charsetQuickTime);
      +                            $enc = $charsetQuickTime;
                               } else {
                                   # convert language code to ASCII (ignore read-only bit)
                                   $lang = UnpackLang($lang);
                                   # may be either UTF-8 or UTF-16BE
      -                            my $enc = $str=~s/^\xfe\xff// ? 'UTF16' : 'UTF8';
      +                            $enc = $str=~s/^\xfe\xff// ? 'UTF16' : 'UTF8';
      +                        }
      +                        unless ($$tagInfo{NoDecode}) {
                                   $str = $et->Decode($str, $enc);
      +                            $str =~ s/\0+$//;   # remove any trailing nulls (eg. 3gp tags)
      +                        }
      +                        if ($$tagInfo{IText} and $$tagInfo{IText} > 6) {
      +                            my $n = $$tagInfo{IText} - 6;
      +                            # add back extra bytes (eg. 'rtng' box)
      +                            $str = substr($val, $pos-$n-2, $n) . $str;
                               }
      -                        $str =~ s/\0+$//;   # remove any trailing nulls (eg. 3gp tags)
                               $langInfo = GetLangInfoQT($et, $tagInfo, $lang) if $lang;
                               $et->FoundTag($langInfo || $tagInfo, $str);
                               $pos += $len;
      @@ -8826,6 +9623,13 @@
               ($size, $tag) = unpack('Na4', $buff);
               ++$index if defined $index;
           }
      +    # tweak file type based on track content ("iso*" and "dash" ftyp only)
      +    if ($topLevel and $$et{VALUE}{FileType} and $$et{VALUE}{FileType} eq 'MP4' and
      +        $$et{save_ftyp} and $$et{HasHandler} and $$et{save_ftyp} =~ /^(iso|dash)/ and
      +        $$et{HasHandler}{soun} and not $$et{HasHandler}{vide})
      +    {
      +        $et->OverrideFileType('M4A', 'audio/mp4');
      +    }
           # fill in missing defaults for alternate language tags
           # (the first language is taken as the default)
           if ($doDefaultLang and $$et{QTLang}) {
      @@ -8885,7 +9689,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/QuickTimeStream.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/QuickTimeStream.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/QuickTimeStream.pl	2020-02-14 12:22:30.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/QuickTimeStream.pl	2022-01-12 22:54:16.000000000 +0000
      @@ -10,14 +10,22 @@
       #               3) https://forum.flitsservice.nl/dashcam-info/dod-ls460w-gps-data-uit-mov-bestand-lezen-t87926.html
       #               4) https://developers.google.com/streetview/publish/camm-spec
       #               5) https://sergei.nz/extracting-gps-data-from-viofo-a119-and-other-novatek-powered-cameras/
      +#               6) Thomas Allen https://github.com/exiftool/exiftool/pull/62
       #------------------------------------------------------------------------------
       package Image::ExifTool::QuickTime;
       
       use strict;
       
      +use Image::ExifTool qw(:DataAccess :Utils);
      +use Image::ExifTool::QuickTime;
      +
       sub Process_tx3g($$$);
      +sub Process_marl($$$);
      +sub Process_mebx($$$);
       sub ProcessFreeGPS($$$);
       sub ProcessFreeGPS2($$$);
      +sub Process360Fly($$$);
      +sub ProcessFMAS($$$);
       
       # QuickTime data types that have ExifTool equivalents
       # (ref https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW35)
      @@ -58,20 +66,23 @@
       my $gpsBlockSize = 0x8000;
       
       # conversion factors
      -my $knotsToKph = 1.852; # knots --> km/h
      -my $mpsToKph   = 3.6;   # m/s   --> km/h
      +my $knotsToKph = 1.852;     # knots --> km/h
      +my $mpsToKph   = 3.6;       # m/s   --> km/h
      +my $mphToKph   = 1.60934;   # mph   --> km/h
       
       # handler types to process based on MetaFormat/OtherFormat
       my %processByMetaFormat = (
           meta => 1,  # ('CTMD' in CR3 images, 'priv' unknown in DJI video)
           data => 1,  # ('RVMI')
           sbtl => 1,  # (subtitle; 'tx3g' in Yuneec drone videos)
      +    ctbx => 1,  # ('marl' in GM videos)
       );
       
       # data lengths for each INSV record type
       my %insvDataLen = (
           0x300 => 56,    # accelerometer
      -    0x400 => 16,    # unknown
      +    0x400 => 16,    # exposure (ref 6)
      +    0x600 => 8,     # timestamps (ref 6)
           0x700 => 53,    # GPS
       );
       
      @@ -85,18 +96,18 @@
       %Image::ExifTool::QuickTime::Stream = (
           GROUPS => { 2 => 'Location' },
           NOTES => q{
      -        Timed metadata extracted from QuickTime media data and some AVI videos when
      -        the ExtractEmbedded option is used.  Although most of these tags are
      -        combined into the single table below, ExifTool currently reads 37 different
      -        formats of timed GPS metadata from video files.
      +        The tags below are extracted from timed metadata in QuickTime and other
      +        formats of video files when the ExtractEmbedded option is used.  Although
      +        most of these tags are combined into the single table below, ExifTool
      +        currently reads 59 different formats of timed GPS metadata from video files.
           },
           VARS => { NO_ID => 1 },
           GPSLatitude  => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")', RawConv => '$$self{FoundGPSLatitude} = 1; $val' },
           GPSLongitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")' },
           GPSAltitude  => { PrintConv => '(sprintf("%.4f", $val) + 0) . " m"' }, # round to 4 decimals
      -    GPSSpeed     => { PrintConv => 'sprintf("%.4f", $val) + 0' },   # round to 4 decimals
      +    GPSSpeed     => { PrintConv => 'sprintf("%.4f", $val) + 0', Notes => 'in km/h unless GPSSpeedRef says otherwise' },
           GPSSpeedRef  => { PrintConv => { K => 'km/h', M => 'mph', N => 'knots' } },
      -    GPSTrack     => { PrintConv => 'sprintf("%.4f", $val) + 0' },    # round to 4 decimals
      +    GPSTrack     => { PrintConv => 'sprintf("%.4f", $val) + 0', Notes => 'relative to true north unless GPSTrackRef says otherwise' },
           GPSTrackRef  => { PrintConv => { M => 'Magnetic North', T => 'True North' } },
           GPSDateTime  => {
               Groups => { 2 => 'Time' },
      @@ -114,6 +125,7 @@
           ExposureCompensation => { PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)', Groups => { 2 => 'Camera' } },
           ISO          => { Groups => { 2 => 'Camera' } },
           CameraDateTime=>{ PrintConv => '$self->ConvertDateTime($val)', Groups => { 2 => 'Time' } },
      +    VideoTimeStamp => { Groups => { 2 => 'Video' } },
           Accelerometer=> { Notes => '3-axis acceleration in units of g' },
           AccelerometerData => { },
           AngularVelocity => { },
      @@ -129,6 +141,22 @@
           SampleTime   => { Groups => { 2 => 'Video' }, PrintConv => 'ConvertDuration($val)', Notes => 'sample decoding time' },
           SampleDuration=>{ Groups => { 2 => 'Video' }, PrintConv => 'ConvertDuration($val)' },
           UserLabel    => { Groups => { 2 => 'Other' } },
      +    KiloCalories => { Groups => { 2 => 'Other' } },
      +    SampleDateTime => {
      +        Groups => { 2 => 'Time' },
      +        ValueConv => q{
      +            my $str = ConvertUnixTime($val);
      +            my $frac = $val - int($val);
      +            if ($frac != 0) {
      +                $frac = sprintf('%.6f', $frac);
      +                $frac =~ s/^0//;
      +                $frac =~ s/0+$//;
      +                $str .= $frac;
      +            }
      +            return $str;
      +        },
      +        PrintConv => '$self->ConvertDateTime($val)',
      +    },
       #
       # timed metadata decoded based on MetaFormat (format of 'meta' or 'data' sample description)
       # [or HandlerType, or specific 'vide' type if specified]
      @@ -140,10 +168,31 @@
                   ProcessProc => \&Process_mebx,
               },
           },
      -    gpmd => {
      -        Name => 'gpmd',
      +    gpmd => [{
      +        Name => 'gpmd_Kingslim', # Kingslim D4 dashcam
      +        Condition => '$$valPt =~ /^.{21}\0\0\0A[NS][EW]/s',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::QuickTime::Stream',
      +            ProcessProc => \&ProcessFreeGPS,
      +        },
      +    },{
      +        Name => 'gpmd_Rove', # Rove Stealth 4K encrypted text
      +        Condition => '$$valPt =~ /^\0\0\xf2\xe1\xf0\xeeTT/',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::QuickTime::Stream',
      +            ProcessProc => \&Process_text,
      +        },
      +    },{
      +        Name => 'gpmd_FMAS', # Vantrue N2S binary format
      +        Condition => '$$valPt =~ /^FMAS\0\0\0\0/',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::QuickTime::Stream',
      +            ProcessProc => \&ProcessFMAS,
      +        },
      +    },{
      +        Name => 'gpmd_GoPro',
               SubDirectory => { TagTable => 'Image::ExifTool::GoPro::GPMF' },
      -    },
      +    }],
           fdsc => {
               Name => 'fdsc',
               Condition => '$$valPt =~ /^GPRO/',
      @@ -154,6 +203,10 @@
               Name => 'rtmd',
               SubDirectory => { TagTable => 'Image::ExifTool::Sony::rtmd' },
           },
      +    marl => {
      +        Name => 'marl',
      +        SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::marl' },
      +    },
           CTMD => { # (Canon Timed MetaData)
               Name => 'CTMD',
               SubDirectory => { TagTable => 'Image::ExifTool::Canon::CTMD' },
      @@ -370,7 +423,14 @@
               Groups => { 2 => 'Time' },
               Format => 'double',
               RawConv => '$$self{FoundGPSDateTime} = 1; $val',
      +        # by the specification, this should use the GPS epoch of Jan 6, 1980,
      +        # but I have samples which use the Unix epoch of Jan 1, 1970, so convert
      +        # to the Unix Epoch only if it doesn't match the CreateDate within 5 years
               ValueConv => q{
      +            my $offset = 315964800;
      +            if ($$self{CreateDate} and $$self{CreateDate} - $val > 24 * 3600 * 365 * 5) {
      +                $val += $offset;
      +            }
                   my $str = ConvertUnixTime($val);
                   my $frac = $val - int($val);
                   if ($frac != 0) {
      @@ -495,7 +555,10 @@
           PROCESS_PROC => \&Process_tx3g,
           GROUPS => { 2 => 'Location' },
           FIRST_ENTRY => 0,
      -    NOTES => 'Tags extracted from the tx3g sbtl timed metadata of Yuneec drones.',
      +    NOTES => q{
      +        Tags extracted from the tx3g sbtl timed metadata of Yuneec drones, and
      +        subtitle text in some other videos.
      +    },
           Lat => {
               Name => 'GPSLatitude',
               RawConv => '$$self{FoundGPSLatitude} = 1; $val',
      @@ -516,6 +579,11 @@
           GimYaw   => 'GimbalYaw',
           GimPitch => 'GimbalPitch',
           GimRoll  => 'GimbalRoll',
      +    DateTime => { # for date/time-format subtitle text
      +        Groups => { 2 => 'Time' },
      +        PrintConv => '$self->ConvertDateTime($val)',
      +    },
      +    Text => { Groups => { 2 => 'Other' } },
       );
       
       %Image::ExifTool::QuickTime::INSV_MakerNotes = (
      @@ -529,6 +597,137 @@
           },
       );
       
      +%Image::ExifTool::QuickTime::Tags360Fly = (
      +    PROCESS_PROC => \&Process360Fly,
      +    NOTES => 'Timed metadata found in MP4 videos from the 360Fly.',
      +    1 => {
      +        Name => 'Accel360Fly',
      +        SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Accel360Fly' },
      +    },
      +    2 => {
      +        Name => 'Gyro360Fly',
      +        SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Gyro360Fly' },
      +    },
      +    3 => {
      +        Name => 'Mag360Fly',
      +        SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Mag360Fly' },
      +    },
      +    5 => {
      +        Name => 'GPS360Fly',
      +        SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::GPS360Fly' },
      +    },
      +    6 => {
      +        Name => 'Rot360Fly',
      +        SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Rot360Fly' },
      +    },
      +    250 => {
      +        Name => 'Fusion360Fly',
      +        SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Fusion360Fly' },
      +    },
      +);
      +
      +%Image::ExifTool::QuickTime::Accel360Fly = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 2 => 'Location' },
      +    1  => { Name => 'AccelMode', Unknown => 1 }, # (always 2 in my sample)
      +    2  => {
      +        Name => 'SampleTime',
      +        Groups => { 2 => 'Video' },
      +        Format => 'int64u',
      +        ValueConv => '$val / 1e6',
      +        PrintConv => 'ConvertDuration($val)',
      +    },
      +    10 => { Name => 'AccelYPR',  Format => 'float[3]' },
      +);
      +
      +%Image::ExifTool::QuickTime::Gyro360Fly = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 2 => 'Location' },
      +    1  => { Name => 'GyroMode', Unknown => 1 }, # (always 1 in my sample)
      +    2  => {
      +        Name => 'SampleTime',
      +        Groups => { 2 => 'Video' },
      +        Format => 'int64u',
      +        ValueConv => '$val / 1e6',
      +        PrintConv => 'ConvertDuration($val)',
      +    },
      +    10 => { Name => 'GyroYPR', Format => 'float[3]' },
      +);
      +
      +%Image::ExifTool::QuickTime::Mag360Fly = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 2 => 'Location' },
      +    1  => { Name => 'MagMode', Unknown => 1 }, # (always 1 in my sample)
      +    2  => {
      +        Name => 'SampleTime',
      +        Groups => { 2 => 'Video' },
      +        Format => 'int64u',
      +        ValueConv => '$val / 1e6',
      +        PrintConv => 'ConvertDuration($val)',
      +    },
      +    10 => { Name => 'MagnetometerXYZ', Format => 'float[3]' },
      +);
      +
      +%Image::ExifTool::QuickTime::GPS360Fly = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 2 => 'Location' },
      +    1  => { Name => 'GPSMode', Unknown => 1 }, # (always 16 in my sample)
      +    2  => {
      +        Name => 'SampleTime',
      +        Groups => { 2 => 'Video' },
      +        Format => 'int64u',
      +        ValueConv => '$val / 1e6',
      +        PrintConv => 'ConvertDuration($val)',
      +    },
      +    10 => { Name => 'GPSLatitude',  Format => 'float', PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")' },
      +    14 => { Name => 'GPSLongitude', Format => 'float', PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")' },
      +    18 => { Name => 'GPSAltitude',  Format => 'float', PrintConv => '"$val m"' }, # (questionable accuracy)
      +    22 => {
      +        Name => 'GPSSpeed',
      +        Notes => 'converted to km/hr',
      +        Format => 'int16u',
      +        ValueConv => '$val * 0.036',
      +        PrintConv => 'sprintf("%.1f",$val)',
      +    },
      +    24 => { Name => 'GPSTrack',     Format => 'int16u', ValueConv => '$val / 100' },
      +    26 => { Name => 'Acceleration', Format => 'int16u', ValueConv => '$val / 1000' },
      +);
      +
      +%Image::ExifTool::QuickTime::Rot360Fly = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 2 => 'Location' },
      +    1  => { Name => 'RotMode', Unknown => 1 }, # (always 1 in my sample)
      +    2  => {
      +        Name => 'SampleTime',
      +        Groups => { 2 => 'Video' },
      +        Format => 'int64u',
      +        ValueConv => '$val / 1e6',
      +        PrintConv => 'ConvertDuration($val)',
      +    },
      +    10 => { Name => 'RotationXYZ', Format => 'float[3]' },
      +);
      +
      +%Image::ExifTool::QuickTime::Fusion360Fly = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 2 => 'Location' },
      +    1  => { Name => 'FusionMode', Unknown => 1 }, # (always 0 in my sample)
      +    2  => {
      +        Name => 'SampleTime',
      +        Groups => { 2 => 'Video' },
      +        Format => 'int64u',
      +        ValueConv => '$val / 1e6',
      +        PrintConv => 'ConvertDuration($val)',
      +    },
      +    10 => { Name => 'FusionYPR', Format => 'float[3]' },
      +);
      +
      +# tags found in 'marl' ctbx timed metadata (ref PH)
      +%Image::ExifTool::QuickTime::marl = (
      +    PROCESS_PROC => \&Process_marl,
      +    GROUPS => { 2 => 'Other' },
      +    NOTES => 'Tags extracted from the marl ctbx timed metadata of GM cars.',
      +);
      +
       #------------------------------------------------------------------------------
       # Save information from keys in OtherSampleDesc directory for processing timed metadata
       # Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
      @@ -629,7 +828,7 @@
       
       #------------------------------------------------------------------------------
       # Approximate GPSDateTime value from sample time and CreateDate
      -# Inputs: 0) ExifTool ref, 1) tag table ptr, 2) sample time (ms)
      +# Inputs: 0) ExifTool ref, 1) tag table ptr, 2) sample time (s)
       #         3) true if CreateDate is at end of video
       # Notes: Uses ExifTool CreateDateAtEnd as flag to subtract video duration
       sub SetGPSDateTime($$$)
      @@ -660,47 +859,88 @@
       }
       
       #------------------------------------------------------------------------------
      +# Handle tags that we found in the subtitle 'text'
      +# Inputs: 0) ExifTool ref, 1) tag table ref, 2) hash of tag names/values
      +sub HandleTextTags($$$)
      +{
      +    my ($et, $tagTbl, $tags) = @_;
      +    my $tag;
      +    delete $$tags{done};
      +    delete $$tags{GPSTimeStamp} if $$tags{GPSDateTime};
      +    foreach $tag (sort keys %$tags) {
      +        $et->HandleTag($tagTbl, $tag => $$tags{$tag});
      +    }
      +    $$et{UnknownTextCount} = 0;
      +    undef %$tags;   # clear the hash
      +}
      +
      +#------------------------------------------------------------------------------
       # Process subtitle 'text'
      -# Inputs: 0) ExifTool ref, 1) tag table ref, 2) data ref, 3) optional sample time
      +# Inputs: 0) ExifTool ref, 1) data ref or dirInfo ref, 2) tag table ref
       sub Process_text($$$)
       {
      -    my ($et, $tagTbl, $buffPt) = @_;
      -    my ($found, $val, %tags, $tag);
      +    my ($et, $dataPt, $tagTbl) = @_;
      +    my %tags;
       
           return if $$et{NoMoreTextDecoding};
       
      -    while ($$buffPt =~ /\$(\w+)([^\$]*)/g) {
      +    if (ref $dataPt eq 'HASH') {
      +        my $dirName = $$dataPt{DirName};
      +        $dataPt = $$dataPt{DataPt};
      +        $et->VerboseDir($dirName, undef, length($$dataPt));
      +    }
      +
      +    while ($$dataPt =~ /\$(\w+)([^\$]*)/g) {
               my ($tag, $dat) = ($1, $2);
      -        if ($tag =~ /^[A-Z]{2}RMC$/ and $dat =~ /^,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/) {
      -            my $year = $15 + ($15 >= 70 ? 1900 : 2000);
      -            my $str = sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%.2dZ', $year, $14, $13, $1, $2, $3);
      -            $et->HandleTag($tagTbl, GPSDateTime  => $str);
      -            $et->HandleTag($tagTbl, GPSLatitude  => (($5 || 0) + $6/60) * ($7 eq 'N' ? 1 : -1));
      -            $et->HandleTag($tagTbl, GPSLongitude => (($8 || 0) + $9/60) * ($10 eq 'E' ? 1 : -1));
      -            if (length $11) {
      -                $et->HandleTag($tagTbl, GPSSpeed => $11 * $knotsToKph);
      -                $et->HandleTag($tagTbl, GPSSpeedRef => 'K');
      -            }
      -            if (length $12) {
      -                $et->HandleTag($tagTbl, GPSTrack => $11);
      -                $et->HandleTag($tagTbl, GPSTrackRef => 'T');
      +        if ($tag =~ /^[A-Z]{2}RMC$/ and $dat =~ /^,(\d{2})(\d{2})(\d+(?:\.\d*)),A?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/) {
      +            my $time = "$1:$2:$3";
      +            if ($$et{LastTime}) {
      +                if ($$et{LastTime} eq $time) {
      +                    $$et{DOC_NUM} = $$et{LastDoc};
      +                } elsif (%tags) {
      +                    HandleTextTags($et, $tagTbl, \%tags);
      +                    $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +                }
                   }
      -            $found = 1;
      +            $$et{LastTime} = $time;
      +            $$et{LastDoc} = $$et{DOC_NUM};
      +            my $year = $14 + ($14 >= 70 ? 1900 : 2000);
      +            my $dateTime = sprintf('%.4d:%.2d:%.2d %sZ', $year, $13, $12, $time);
      +            $tags{GPSDateTime} = $dateTime;
      +            $tags{GPSLatitude} = (($4 || 0) + $5/60) * ($6 eq 'N' ? 1 : -1);
      +            $tags{GPSLongitude} = (($7 || 0) + $8/60) * ($9 eq 'E' ? 1 : -1);
      +            $tags{GPSSpeed} = $10 * $knotsToKph if length $10;
      +            $tags{GPSTrack} = $11 if length $11;
      +        } elsif ($tag =~ /^[A-Z]{2}GGA$/ and $dat =~ /^,(\d{2})(\d{2})(\d+(?:\.\d*)?),(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),[1-6]?,(\d+)?,(\.\d+|\d+\.?\d*)?,(-?\d+\.?\d*)?,M?/s) {
      +            my $time = "$1:$2:$3";
      +            if ($$et{LastTime}) {
      +                if ($$et{LastTime} eq $time) {
      +                    $$et{DOC_NUM} = $$et{LastDoc};
      +                } elsif (%tags) {
      +                    HandleTextTags($et, $tagTbl, \%tags);
      +                    $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +                }
      +            }
      +            $$et{LastTime} = $time;
      +            $$et{LastDoc} = $$et{DOC_NUM};
      +            $tags{GPSTimeStamp} = $time;
      +            $tags{GPSLatitude} = (($4 || 0) + $5/60) * ($6 eq 'N' ? 1 : -1);
      +            $tags{GPSLongitude} = (($7 || 0) + $8/60) * ($9 eq 'E' ? 1 : -1);
      +            $tags{GPSSatellites} = $10 if defined $10;
      +            $tags{GPSDOP} = $11 if defined $11;
      +            $tags{GPSAltitude} = $12 if defined $12;
               } elsif ($tag eq 'BEGINGSENSOR' and $dat =~ /^:([-+]\d+\.\d+):([-+]\d+\.\d+):([-+]\d+\.\d+)/) {
      -            $et->HandleTag($tagTbl, Accelerometer => "$1 $2 $3");
      -            $found = 1;
      +            $tags{Accelerometer} = "$1 $2 $3";
               } elsif ($tag eq 'TIME' and $dat =~ /^:(\d+)/) {
      -            $et->HandleTag($tagTbl, TimeCode => $1 / ($$et{MediaTS} || 1));
      -            $found = 1;
      +            $tags{TimeCode} = $1 / ($$et{MediaTS} || 1);
               } elsif ($tag eq 'BEGIN') {
      -            $et->HandleTag($tagTbl, Text => $dat) if length $dat;
      -            $found = 1;
      +            $tags{Text} = $dat if length $dat;
      +            $tags{done} = 1;
               } elsif ($tag ne 'END') {
      -            $et->HandleTag($tagTbl, Text => "\$$tag$dat");
      -            $found = 1;
      +            $tags{Text} = "\$$tag$dat";
               }
           }
      -    return if $found;
      +    %tags and HandleTextTags($et, $tagTbl, \%tags), return;
       
           # check for enciphered binary GPS data
           # BlueSkySea:
      @@ -735,31 +975,28 @@
           #   0110: 31 30 38 30 30 30 58 00 58 00 58 00 58 00 58 00 [108000X.X.X.X.X.]
           #   0120: 58 00 58 00 58 00 58 00 00 00 00 00 00 00 00 00 [X.X.X.X.........]
           #   0130: 00 00 00 00 00 00 00                            [.......]
      -    if ($$buffPt =~ /^\0\0(..\xaa\xaa|\xf2\xe1\xf0\xee)/s and length $$buffPt >= 282) {
      -        $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 8, 14)));
      +    if ($$dataPt =~ /^\0\0(..\xaa\xaa|\xf2\xe1\xf0\xee)/s and length $$dataPt >= 282) {
      +        my $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$dataPt, 8, 14)));
               if ($val =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/) {
                   $tags{GPSDateTime} = "$1:$2:$3 $4:$5:$6";
      -            $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 38, 9)));
      +            $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$dataPt, 38, 9)));
                   if ($val =~ /^([NS])(\d{2})(\d+$)$/) {
                       $tags{GPSLatitude} = ($2 + $3 / 600000) * ($1 eq 'S' ? -1 : 1);
                   }
      -            $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 47, 10)));
      +            $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$dataPt, 47, 10)));
                   if ($val =~ /^([EW])(\d{3})(\d+$)$/) {
                       $tags{GPSLongitude} = ($2 + $3 / 600000) * ($1 eq 'W' ? -1 : 1);
                   }
      -            $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 0x39, 5)));
      +            $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$dataPt, 0x39, 5)));
                   $tags{GPSAltitude} = $val + 0 if $val =~ /^[-+]\d+$/;
      -            $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 0x3e, 3)));
      -            if ($val =~ /^\d+$/) {
      -                $tags{GPSSpeed} = $val + 0;
      -                $tags{GPSSpeedRef} = 'K';
      -            }
      -            if ($$buffPt =~ /^\0\0..\xaa\xaa/s) { # (BlueSkySea)
      -                $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 0xad, 12)));
      +            $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$dataPt, 0x3e, 3)));
      +            $tags{GPSSpeed} = $val + 0 if $val =~ /^\d+$/;
      +            if ($$dataPt =~ /^\0\0..\xaa\xaa/s) { # (BlueSkySea)
      +                $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$dataPt, 0xad, 12)));
                       # the first X,Y,Z accelerometer readings from the AccelerometerData
                       if ($val =~ /^([-+]\d{3})([-+]\d{3})([-+]\d{3})$/) {
                           $tags{Accelerometer} = "$1 $2 $3";
      -                    $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 0xba, 96)));
      +                    $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$dataPt, 0xba, 96)));
                           my $order = GetByteOrder();
                           SetByteOrder('II');
                           $val = ReadValue(\$val, 0, 'float');
      @@ -768,78 +1005,91 @@
                       }
                   } else { # (Ambarella)
                       my @acc;
      -                $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$buffPt, 0x41, 195)));
      +                $val = pack('C*', map { $_ ^ 0xaa } unpack('C*', substr($$dataPt, 0x41, 195)));
                       push @acc, $1, $2, $3 while $val =~ /\G([-+]\d{3})([-+]\d{3})([-+]\d{3})/g;
                       $tags{Accelerometer} = "@acc" if @acc;
                   }
               }
      +        %tags and HandleTextTags($et, $tagTbl, \%tags), return;
           }
       
           # check for DJI telemetry data, eg:
           # "F/3.5, SS 1000, ISO 100, EV 0, GPS (8.6499, 53.1665, 18), D 24.26m,
           #  H 6.00m, H.S 2.10m/s, V.S 0.00m/s \n"
      -    if (not %tags and $$buffPt =~ /GPS \(([-+]?\d*\.\d+),\s*([-+]?\d*\.\d+)/) {
      +    if ($$dataPt =~ /GPS \(([-+]?\d*\.\d+),\s*([-+]?\d*\.\d+)/) {
               $$et{CreateDateAtEnd} = 1;  # set flag indicating the file creation date is at the end
               $tags{GPSLatitude} = $2;
               $tags{GPSLongitude} = $1;
      -        $tags{GPSAltitude} = $1 if $$buffPt =~ /,\s*H\s+([-+]?\d+\.?\d*)m/;
      -        if ($$buffPt =~ /,\s*H.S\s+([-+]?\d+\.?\d*)/) {
      -            $tags{GPSSpeed} = $1 * $mpsToKph;
      -            $tags{GPSSpeedRef} = 'K';
      -        }
      -        $tags{Distance} = $1 * $mpsToKph if $$buffPt =~ /,\s*D\s+(\d+\.?\d*)m/;
      -        $tags{VerticalSpeed} = $1 if $$buffPt =~ /,\s*V.S\s+([-+]?\d+\.?\d*)/;
      -        $tags{FNumber} = $1 if $$buffPt =~ /\bF\/(\d+\.?\d*)/;
      -        $tags{ExposureTime} = 1 / $1 if $$buffPt =~ /\bSS\s+(\d+\.?\d*)/;
      -        $tags{ExposureCompensation} = ($1 / ($2 || 1)) if $$buffPt =~ /\bEV\s+([-+]?\d+\.?\d*)(\/\d+)?/;
      -        $tags{ISO} = $1 if $$buffPt =~ /\bISO\s+(\d+\.?\d*)/;
      +        $tags{GPSAltitude} = $1 if $$dataPt =~ /,\s*H\s+([-+]?\d+\.?\d*)m/;
      +        $tags{GPSSpeed} = $1 * $mpsToKph if $$dataPt =~ /,\s*H.S\s+([-+]?\d+\.?\d*)/;
      +        $tags{Distance} = $1 * $mpsToKph if $$dataPt =~ /,\s*D\s+(\d+\.?\d*)m/;
      +        $tags{VerticalSpeed} = $1 if $$dataPt =~ /,\s*V.S\s+([-+]?\d+\.?\d*)/;
      +        $tags{FNumber} = $1 if $$dataPt =~ /\bF\/(\d+\.?\d*)/;
      +        $tags{ExposureTime} = 1 / $1 if $$dataPt =~ /\bSS\s+(\d+\.?\d*)/;
      +        $tags{ExposureCompensation} = ($1 / ($2 || 1)) if $$dataPt =~ /\bEV\s+([-+]?\d+\.?\d*)(\/\d+)?/;
      +        $tags{ISO} = $1 if $$dataPt =~ /\bISO\s+(\d+\.?\d*)/;
      +        HandleTextTags($et, $tagTbl, \%tags);
      +        return;
           }
       
           # check for Mini 0806 dashcam GPS, eg:
           # "A,270519,201555.000,3356.8925,N,08420.2071,W,000.0,331.0M,+01.84,-09.80,-00.61;\n"
      -    if (not %tags and $$buffPt =~ /^A,(\d{2})(\d{2})(\d{2}),(\d{2})(\d{2})(\d{2}(\.\d+)?)/) {
      +    if ($$dataPt =~ /^A,(\d{2})(\d{2})(\d{2}),(\d{2})(\d{2})(\d{2}(\.\d+)?)/) {
               $tags{GPSDateTime} = "20$3:$2:$1 $4:$5:$6Z";
      -        if ($$buffPt =~ /^A,.*?,.*?,(\d{2})(\d+\.\d+),([NS])/) {
      +        if ($$dataPt =~ /^A,.*?,.*?,(\d{2})(\d+\.\d+),([NS])/) {
                   $tags{GPSLatitude} = ($1 + $2/60) * ($3 eq 'S' ? -1 : 1);
               }
      -        if ($$buffPt =~ /^A,.*?,.*?,.*?,.*?,(\d{3})(\d+\.\d+),([EW])/) {
      +        if ($$dataPt =~ /^A,.*?,.*?,.*?,.*?,(\d{3})(\d+\.\d+),([EW])/) {
                   $tags{GPSLongitude} = ($1 + $2/60) * ($3 eq 'W' ? -1 : 1);
               }
      -        my @a = split ',', $$buffPt;
      +        my @a = split ',', $$dataPt;
               $tags{GPSAltitude} = $a[8] if $a[8] and $a[8] =~ s/M$//;
               $tags{GPSSpeed} = $a[7] if $a[7] and $a[7] =~ /^\d+\.\d+$/; # (NC)
               $tags{Accelerometer} = "$a[9] $a[10] $a[11]" if $a[11] and $a[11] =~ s/;\s*$//;
      +        HandleTextTags($et, $tagTbl, \%tags);
      +        return;
      +    }
      +
      +    # check for Roadhawk dashcam text
      +    # ".;;;;D?JL;6+;;;D;R?;4;;;;DBB;;O;;;=D;L;;HO71G>F;-?=J-F:FNJJ;DPP-JF3F;;PL=DBRLBF0F;=?DNF-RD-PF;N;?=JF;;?D=F:*6F~"
      +    # decoded:
      +    # "X0000.2340Y-000.0720Z0000.9900G0001.0400$GPRMC,082138,A,5330.6683,N,00641.9749,W,012.5,87.86,050213,002.1,A"
      +    # (note: "002.1" is magnetic variation and is not decoded; it should have ",E" or ",W" afterward for direction)
      +    if ($$dataPt =~ /\*[0-9A-F]{2}~$/) {
      +        # (ref https://reverseengineering.stackexchange.com/questions/11582/how-to-reverse-engineer-dash-cam-metadata)
      +        my @decode = unpack 'C*', '-I8XQWRVNZOYPUTA0B1C2SJ9K.L,M$D3E4F5G6H7';
      +        my @chars = unpack 'C*', substr($$dataPt, 0, -4);
      +        foreach (@chars) {
      +            my $n = $_ - 43;
      +            $_ = $decode[$n] if $n >= 0 and defined $decode[$n];
      +        }
      +        my $buff = pack 'C*', @chars;
      +        if ($buff =~ /X(.*?)Y(.*?)Z(.*?)G(.*?)\$/) {
      +            # yup. the decoding worked out
      +            $tags{Accelerometer} = "$1 $2 $3 $4";
      +            $$dataPt = $buff;   # (process GPRMC below)
      +        }
           }
       
      -    # check for Thinkware format, eg:
      +    # check for Thinkware format (and other NMEA RMC), eg:
           # "gsensori,4,512,-67,-12,100;GNRMC,161313.00,A,4529.87489,N,07337.01215,W,6.225,35.34,310819,,,A*52..;
           #  CAR,0,0,0,0.0,0,0,0,0,0,0,0,0"
      -    unless (%tags) {
      -        if ($$buffPt =~ /[A-Z]{2}RMC,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/ and
      -            # do some basic sanity checks on the date
      -            $13 <= 31 and $14 <= 12 and $15 <= 99)
      -        {
      -            my $year = $15 + ($15 >= 70 ? 1900 : 2000);
      -            $tags{GPSDateTime} = sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%.2dZ', $year, $14, $13, $1, $2, $3);
      -            $tags{GPSLatitude} = (($5 || 0) + $6/60) * ($7 eq 'N' ? 1 : -1);
      -            $tags{GPSLongitude} = (($8 || 0) + $9/60) * ($10 eq 'E' ? 1 : -1);
      -            if (length $11) {
      -                $tags{GPSSpeed} = $11 * $knotsToKph;
      -                $tags{GPSSpeedRef} = 'K';
      -            }
      -            if (length $12) {
      -                $tags{GPSTrack} = $12;
      -                $tags{GPSTrackRef} = 'T';
      -            }
      -        }
      -        $tags{GSensor} = $1 if $$buffPt =~ /\bgsensori,(.*?)(;|$)/;
      -        $tags{Car} = $1 if $$buffPt =~ /\bCAR,(.*?)(;|$)/;
      +    if ($$dataPt =~ /[A-Z]{2}RMC,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/ and
      +        # do some basic sanity checks on the date
      +        $13 <= 31 and $14 <= 12 and $15 <= 99)
      +    {
      +        my $year = $15 + ($15 >= 70 ? 1900 : 2000);
      +        $tags{GPSDateTime} = sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%.2dZ', $year, $14, $13, $1, $2, $3);
      +        $tags{GPSLatitude} = (($5 || 0) + $6/60) * ($7 eq 'N' ? 1 : -1);
      +        $tags{GPSLongitude} = (($8 || 0) + $9/60) * ($10 eq 'E' ? 1 : -1);
      +        $tags{GPSSpeed} = $11 * $knotsToKph if length $11;
      +        $tags{GPSTrack} = $12 if length $12;
           }
      +    $tags{GSensor} = $1 if $$dataPt =~ /\bgsensori,(.*?)(;|$)/;
      +    $tags{Car} = $1 if $$dataPt =~ /\bCAR,(.*?)(;|$)/;
      +
           if (%tags) {
      -        foreach $tag (sort keys %tags) {
      -            $et->HandleTag($tagTbl, $tag => $tags{$tag});
      -        }
      -        $$et{UnknownTextCount} = 0;
      +        HandleTextTags($et, $tagTbl, \%tags);
           } else {
               $$et{UnknownTextCount} = ($$et{UnknownTextCount} || 0) + 1;
               # give up trying to decode useful information if we haven't found anything for a while
      @@ -892,7 +1142,7 @@
                       ($startChunk, $samplesPerChunk, $descIdx) = @{shift @$stsc};
                       $nextChunk = $$stsc[0][0] if @$stsc;
                   }
      -            @$size < @$start + $samplesPerChunk and $et->WarnOnce('Sample size error'), return;
      +            @$size < @$start + $samplesPerChunk and $et->WarnOnce('Sample size error'), last;
                   my $sampleStart = $chunkStart;
                   for ($i=0; ; ) {
                       push @$start, $sampleStart;
      @@ -959,6 +1209,10 @@
                       $pos += $hdrLen + $len;
                       last if $pos + $hdrLen >= length($buff);
                   }
      +            if ($$et{GotNAL06}) {
      +                my $eeOpt = $et->Options('ExtractEmbedded');
      +                last unless $eeOpt and $eeOpt > 2;
      +            }
                   next;
               }
               if ($verbose > 1) {
      @@ -966,7 +1220,10 @@
                   $et->VPrint(1, "${hdr}, Sample ".($i+1).' of '.scalar(@$start)." ($size bytes)\n");
                   $et->VerboseDump(\$buff, Addr => $$start[$i]);
               }
      -        if ($type eq 'text') {
      +        if ($type eq 'text' or
      +            # (PNDM is normally 'text', but was sbtl/tx3g in concatenated Garmin sample output_3videos.mp4)
      +            ($type eq 'sbtl' and $metaFormat eq 'tx3g' and $buff =~ /^..PNDM/s))
      +        {
       
                   FoundSomething($et, $tagTbl, $time[$i], $dur[$i]);
                   unless ($buff =~ /^\$BEGIN/) {
      @@ -995,12 +1252,13 @@
                               $val =~ tr/\t/ /;
                               $et->HandleTag($tagTbl, RawGSensor => $val) if length $val;
                           }
      -                } elsif ($buff =~ /^PNDM/ and length $buff >= 20) {
      +                } elsif ($buff =~ /^(\0.{3})?PNDM/s) {
                           # Garmin Dashcam format (actually binary, not text)
      -                    $et->HandleTag($tagTbl, GPSLatitude  => Get32s(\$buff, 12) * 180/0x80000000);
      -                    $et->HandleTag($tagTbl, GPSLongitude => Get32s(\$buff, 16) * 180/0x80000000);
      -                    $et->HandleTag($tagTbl, GPSSpeed => Get16u(\$buff, 8));
      -                    $et->HandleTag($tagTbl, GPSSpeedRef => 'M');
      +                    my $n = $1 ? 4 : 0; # skip leading 4-byte size word if it exists
      +                    next if length($buff) < 20 + $n;
      +                    $et->HandleTag($tagTbl, GPSLatitude  => Get32s(\$buff, 12+$n) * 180/0x80000000);
      +                    $et->HandleTag($tagTbl, GPSLongitude => Get32s(\$buff, 16+$n) * 180/0x80000000);
      +                    $et->HandleTag($tagTbl, GPSSpeed     => Get16u(\$buff, 8+$n) * $mphToKph);
                           SetGPSDateTime($et, $tagTbl, $time[$i]);
                           next; # all done (don't store/process as text)
                       }
      @@ -1008,7 +1266,7 @@
                           $et->HandleTag($tagTbl, Text => $buff); # just store any other text
                       }
                   }
      -            Process_text($et, $tagTbl, \$buff);
      +            Process_text($et, \$buff, $tagTbl);
       
               } elsif ($processByMetaFormat{$type}) {
       
      @@ -1019,8 +1277,8 @@
                           $$et{ee} = $ee; # need ee information for 'keys'
                           $et->HandleTag($tagTbl, $metaFormat, undef,
                               DataPt  => \$buff,
      -                        DataPos => $$start[$i],
      -                        Base    => $$start[$i],
      +                        DataPos => 0,
      +                        Base    => $$start[$i], # (Base must be set for CR3 files)
                               TagInfo => $tagInfo,
                           );
                           delete $$et{ee};
      @@ -1029,10 +1287,10 @@
                           # "X0000.0000Y0000.0000Z0000.0000G0000.0000$GPRMC,000125,V,,,,,000.0,,280908,002.1,N*71~, 794021  \x0a"
                           FoundSomething($et, $tagTbl, $time[$i], $dur[$i]);
                           $et->HandleTag($tagTbl, Accelerometer => "$1 $2 $3 $4") if $buff =~ /X(.*?)Y(.*?)Z(.*?)G(.*?)\$/;
      -                    Process_text($et, $tagTbl, \$buff);
      +                    Process_text($et, \$buff, $tagTbl);
                       }
                   } elsif ($verbose) {
      -                $et->VPrint(0, "Unknown meta format ($metaFormat)");
      +                $et->VPrint(0, "Unknown $type format ($metaFormat)");
                   }
       
               } elsif ($type eq 'gps ') { # (ie. GPSDataList tag)
      @@ -1054,8 +1312,8 @@
                       FoundSomething($et, $tagTbl, $time[$i], $dur[$i]);
                       $et->HandleTag($tagTbl, $type, undef,
                           DataPt  => \$buff,
      -                    DataPos => $$start[$i],
      -                    Base    => $$start[$i],
      +                    DataPos => 0,
      +                    Base    => $$start[$i], # (Base must be set for CR3 files)
                           TagInfo => $tagInfo,
                       );
                   }
      @@ -1074,6 +1332,19 @@
       }
       
       #------------------------------------------------------------------------------
      +# Convert latitude/longitude from DDDMM.MMMM format to decimal degrees
      +# Inputs: 0) latitude, 1) longitude
      +# Returns: lat/lon are changed in place
      +# (note: this method works fine for negative coordinates)
      +sub ConvertLatLon($$)
      +{
      +    my $deg = int($_[0] / 100);     # latitude
      +    $_[0] = $deg + ($_[0] - $deg * 100) / 60;
      +    $deg = int($_[1] / 100);        # longitude
      +    $_[1] = $deg + ($_[1] - $deg * 100) / 60;
      +}
      +
      +#------------------------------------------------------------------------------
       # Process "freeGPS " data blocks referenced by a 'gps ' (GPSDataList) atom
       # Inputs: 0) ExifTool ref, 1) dirInfo ref {DataPt,SampleTime,SampleDuration}, 2) tagTable ref
       # Returns: 1 on success (or 0 on unrecognized or "measurement-void" GPS data)
      @@ -1084,18 +1355,40 @@
           my ($et, $dirInfo, $tagTbl) = @_;
           my $dataPt = $$dirInfo{DataPt};
           my $dirLen = length $$dataPt;
      -    my ($yr, $mon, $day, $hr, $min, $sec, $stat, $lbl);
      +    my ($yr, $mon, $day, $hr, $min, $sec, $stat, $lbl, $ddd);
           my ($lat, $latRef, $lon, $lonRef, $spd, $trk, $alt, @acc, @xtra);
       
           return 0 if $dirLen < 92;
       
      -    if (substr($$dataPt,12,1) eq "\x05") {
      +    if (substr($$dataPt,18,8) eq "\xaa\xaa\xf2\xe1\xf0\xee\x54\x54") {
       
      +        # (this is very similar to the encrypted text format)
               # decode encrypted ASCII-based GPS (DashCam Azdome GS63H, ref 5)
               # header looks like this in my sample:
               #  0000: 00 00 80 00 66 72 65 65 47 50 53 20 05 01 00 00 [....freeGPS ....]
               #  0010: 01 03 aa aa f2 e1 f0 ee 54 54 98 9a 9b 92 9a 93 [........TT......]
               #  0020: 98 9e 98 98 9e 93 98 92 a6 9f 9f 9c 9d ed fa 8a [................]
      +        # decrypted (from byte 18):
      +        #  0000: 00 00 58 4b 5a 44 fe fe 32 30 31 38 30 39 32 34 [..XKZD..20180924]
      +        #  0010: 32 32 34 39 32 38 0c 35 35 36 37 47 50 20 20 20 [224928.5567GP   ]
      +        #  0020: 00 00 00 00 00 03 4e 34 30 34 36 34 33 35 30 57 [......N40464350W]
      +        #  0030: 30 30 37 30 34 30 33 30 38 30 30 30 30 30 30 30 [0070403080000000]
      +        #  0040: 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [7...............]
      +        #  [...]
      +        #  00a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 2b 30 39 [.............+09]
      +        #  00b0: 33 2d 30 30 33 2d 30 30 35 00 00 00 00 00 00 00 [3-003-005.......]
      +        # header looks like this for EEEkit gps:
      +        #  0000: 00 00 04 00 66 72 65 65 47 50 53 20 f0 03 00 00 [....freeGPS ....]
      +        #  0010: 01 03 aa aa f2 e1 f0 ee 54 54 98 9a 98 9a 9a 9f [........TT......]
      +        #  0020: 9b 93 9b 9c 98 99 99 9f a6 9a 9a 98 9a 9a 9f 9b [................]
      +        #  0030: 93 9b 9c 98 99 99 9c a9 e4 99 9d 9e 9f 98 9e 9b [................]
      +        #  0040: 9c fd 9b 98 98 98 9f 9f 9a 9a 93 81 9a 9b 9d 9f [................]
      +        # decrypted (from byte 18):
      +        #  0000: 00 00 58 4b 5a 44 fe fe 32 30 32 30 30 35 31 39 [..XKZD..20200519]
      +        #  0010: 31 36 32 33 33 35 0c 30 30 32 30 30 35 31 39 31 [162335.002005191]
      +        #  0020: 36 32 33 33 36 03 4e 33 37 34 35 32 34 31 36 57 [62336.N37452416W]
      +        #  0030: 31 32 32 32 35 35 30 30 39 2b 30 31 37 35 30 31 [122255009+017501]
      +        #  0040: 31 2b 30 31 34 2b 30 30 32 2b 30 32 36 2b 30 31 [1+014+002+026+01]
               my $n = $dirLen - 18;
               $n = 0x101 if $n > 0x101;
               my $buf2 = pack 'C*', map { $_ ^ 0xaa } unpack 'C*', substr($$dataPt,18,$n);
      @@ -1104,13 +1397,25 @@
                   $et->VerboseDump(\$buf2);
               }
               # (extract longitude as 9 digits, not 8, ref PH)
      -        return 0 unless $buf2 =~ /^.{8}(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).(.{15})([NS])(\d{8})([EW])(\d{9})(\d{8})/s;
      +        return 0 unless $buf2 =~ /^.{8}(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}).(.{15})([NS])(\d{8})([EW])(\d{9})(\d{8})?/s;
               ($yr,$mon,$day,$hr,$min,$sec,$lbl,$latRef,$lat,$lonRef,$lon,$spd) = ($1,$2,$3,$4,$5,$6,$7,$8,$9/1e4,$10,$11/1e4,$12);
      -        $spd += 0;  # remove leading 0's
      +        if (defined $spd) { # (Azdome)
      +            $spd += 0;  # remove leading 0's
      +        } elsif ($buf2 =~ /^.{57}([-+]\d{4})(\d{3})/s) { # (EEEkit)
      +            # $alt = $1 + 0;  (doesn't look right for my sample, but the Ambarella A12 text has this)
      +            $spd = $2 + 0;
      +        }
               $lbl =~ s/\0.*//s;  $lbl =~ s/\s+$//;  # truncate at null and remove trailing spaces
               push @xtra, UserLabel => $lbl if length $lbl;
               # extract accelerometer data (ref PH)
      -        @acc = ($1/100,$2/100,$3/100) if $buf2 =~ /^.{173}([-+]\d{3})([-+]\d{3})([-+]\d{3})/s;
      +        if ($buf2 =~ /^.{65}(([-+]\d{3})([-+]\d{3})([-+]\d{3})([-+]\d{3})*)/s) {
      +            $_ = $1;
      +            @acc = ($2/100, $3/100, $4/100);
      +            s/([-+])/ $1/g;  s/^ //;
      +            push @xtra, AccelerometerData => $_;
      +        } elsif ($buf2 =~ /^.{173}([-+]\d{3})([-+]\d{3})([-+]\d{3})/s) { # (Azdome)
      +            @acc = ($1/100, $2/100, $3/100);
      +        }
       
           } elsif ($$dataPt =~ /^.{52}(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/s) {
       
      @@ -1140,7 +1445,7 @@
                   map { $_ = $_ - 4294967296 if $_ >= 0x80000000; $_ /= 256 } @acc;
               }
       
      -    } elsif ($$dataPt =~ /^.{40}A([NS])([EW])/s) {
      +    } elsif ($$dataPt =~ /^.{37}\0\0\0A([NS])([EW])/s) {
       
               # decode freeGPS from ViofoA119v3 dashcam (similar to Novatek GPS format)
               # 0000: 00 00 40 00 66 72 65 65 47 50 53 20 f0 03 00 00 [..@.freeGPS ....]
      @@ -1157,16 +1462,44 @@
               $trk = GetFloat($dataPt, 0x38);
               SetByteOrder('MM');
       
      +    } elsif ($$dataPt =~ /^.{21}\0\0\0A([NS])([EW])/s) {
      +
      +        # also decode 'gpmd' chunk from Kingslim D4 dashcam videos
      +        # 0000: 0a 00 00 00 0b 00 00 00 07 00 00 00 e5 07 00 00 [................]
      +        # 0010: 06 00 00 00 03 00 00 00 41 4e 57 31 91 52 83 45 [........ANW1.R.E]
      +        # 0020: 15 70 fe c5 29 5c c3 41 ae c7 af 42 00 00 d1 be [.p..)\.A...B....]
      +        # 0030: 00 00 80 3b 00 00 2c 3e 00 00 00 00 00 00 00 00 [...;..,>........]
      +        # 0040: 00 00 00 00 00 00 00 00 00 00 00 00 26 26 26 26 [............&&&&]
      +        # 0050: 4c 49 47 4f 47 50 53 49 4e 46 4f 00 00 00 00 05 [LIGOGPSINFO.....]
      +        # 0060: 01 00 00 00 23 23 23 23 75 00 00 00 c0 22 20 20 [....####u...."  ]
      +        # 0070: 20 f0 12 10 12 21 e5 0e 10 12 2f 90 10 13 01 f2 [ ....!..../.....]
      +        ($latRef, $lonRef) = ($1, $2);
      +        ($hr,$min,$sec,$yr,$mon,$day) = unpack("V6", $$dataPt);
      +        SetByteOrder('II');
      +        # lat/lon aren't decoded properly, but spd,trk,acc are
      +        $lat = GetFloat($dataPt, 0x1c);
      +        $lon = GetFloat($dataPt, 0x20);
      +        $et->VPrint(0, sprintf("Raw lat/lon = %.9f %.9f\n", $lat, $lon));
      +        $et->WarnOnce('GPSLatitude/Longitude encryption is not yet known, so these will be wrong');
      +        $lat = abs $lat;
      +        $lon = abs $lon;
      +        $spd = GetFloat($dataPt, 0x24) * $knotsToKph; # (convert knots to km/h)
      +        $trk = GetFloat($dataPt, 0x28);
      +        $acc[0] = GetFloat($dataPt, 0x2c);
      +        $acc[1] = GetFloat($dataPt, 0x30);
      +        $acc[2] = GetFloat($dataPt, 0x34);
      +        SetByteOrder('MM');
      +
           } elsif ($$dataPt =~ /^.{60}A\0{3}.{4}([NS])\0{3}.{4}([EW])\0{3}/s) {
       
               # decode freeGPS from Akaso dashcam
               # 0000: 00 00 80 00 66 72 65 65 47 50 53 20 60 00 00 00 [....freeGPS `...]
      -        # 0000: 78 2e 78 78 00 00 00 00 00 00 00 00 00 00 00 00 [x.xx............]
      -        # 0000: 30 30 30 30 30 00 00 00 00 00 00 00 00 00 00 00 [00000...........]
      -        # 0000: 12 00 00 00 2f 00 00 00 19 00 00 00 41 00 00 00 [..../.......A...]
      -        # 0000: 13 b3 ca 44 4e 00 00 00 29 92 fb 45 45 00 00 00 [...DN...)..EE...]
      -        # 0000: d9 ee b4 41 ec d1 d3 42 e4 07 00 00 01 00 00 00 [...A...B........]
      -        # 0000: 0c 00 00 00 01 00 00 00 05 00 00 00 00 00 00 00 [................]
      +        # 0010: 78 2e 78 78 00 00 00 00 00 00 00 00 00 00 00 00 [x.xx............]
      +        # 0020: 30 30 30 30 30 00 00 00 00 00 00 00 00 00 00 00 [00000...........]
      +        # 0030: 12 00 00 00 2f 00 00 00 19 00 00 00 41 00 00 00 [..../.......A...]
      +        # 0040: 13 b3 ca 44 4e 00 00 00 29 92 fb 45 45 00 00 00 [...DN...)..EE...]
      +        # 0050: d9 ee b4 41 ec d1 d3 42 e4 07 00 00 01 00 00 00 [...A...B........]
      +        # 0060: 0c 00 00 00 01 00 00 00 05 00 00 00 00 00 00 00 [................]
               ($latRef, $lonRef) = ($1, $2);
               ($hr, $min, $sec, $yr, $mon, $day) = unpack('x48V3x28V3', $$dataPt);
               SetByteOrder('II');
      @@ -1177,6 +1510,113 @@
               $trk -= 360 if $trk >= 360;
               SetByteOrder('MM');
       
      +    } elsif ($$dataPt =~ /^.{60}4W`b]S= 140) {
      +
      +        # 0000: 00 00 40 00 66 72 65 65 47 50 53 20 f0 01 00 00 [..@.freeGPS ....]
      +        # 0010: 5a 58 53 42 4e 58 59 53 00 00 00 00 00 00 00 00 [ZXSBNXYS........]
      +        # 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +        # 0030: 00 00 00 00 00 00 00 00 00 00 00 00 34 57 60 62 [............4W`b]
      +        # 0040: 5d 53 3c 41 44 45 41 41 42 3e 40 40 3c 51 3c 45 []S@@AGIHD<^<@AFC]
      +        # 0060: 42 3e 49 49 40 42 45 3c 55 3c 45 47 3e 45 43 41 [B>II@BEECA]
      +        # decipher $GPRMC by subtracting 16 from each character value
      +        $_ = pack 'C*', map { $_>=16 and $_-=16 } unpack('x60C80', $$dataPt);
      +        return 0 unless /[A-Z]{2}RMC,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d*?\d{1,2}\.\d+),([NS]),(\d*?\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/;
      +        ($yr,$mon,$day,$hr,$min,$sec,$lat,$latRef,$lon,$lonRef) = ($13,$12,$11,$1,$2,$3,$5,$6,$7,$8);
      +        $yr += ($yr >= 70 ? 1900 : 2000);
      +        $spd = $9 * $knotsToKph if length $9;
      +        $trk = $10 if length $10;
      +
      +    } elsif ($$dataPt =~ /^.{64}[\x01-\x0c]\0{3}[\x01-\x1f]\0{3}A[NS][EW]\0/s) {
      +
      +        # Akaso V1 dascham
      +        #  0000: 00 00 80 00 66 72 65 65 47 50 53 20 78 00 00 00 [....freeGPS x...]
      +        #  0010: 59 6e 64 41 6b 61 73 6f 43 61 72 00 00 00 00 00 [YndAkasoCar.....]
      +        #  0020: 30 30 30 30 30 00 00 00 00 00 00 00 00 00 00 00 [00000...........]
      +        #  0030: 0e 00 00 00 27 00 00 00 2c 00 00 00 e3 07 00 00 [....'...,.......]
      +        #  0040: 05 00 00 00 1d 00 00 00 41 4e 45 00 00 00 00 00 [........ANE.....]
      +        #  0050: f1 4e 3e 3d 90 df ca 40 e3 50 bf 0b 0b 31 a0 40 [.N>=...@.P...1.@]
      +        #  0060: 4b dc c8 41 9a 79 a7 43 34 58 43 31 4f 37 31 35 [K..A.y.C4XC1O715]
      +        #  0070: 35 31 32 36 36 35 37 35 59 4e 44 53 0d e7 cc f9 [51266575YNDS....]
      +        #  0080: 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 [................]
      +        # Redtiger F7N dashcam
      +        #  0000: 00 00 40 00 66 72 65 65 47 50 53 20 f0 01 00 00 [..@.freeGPS ....]
      +        #  0010: 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +        #  0020: 01 00 00 00 b0 56 50 01 7b 18 68 45 17 02 3f 46 [.....VP.{.hE..?F]
      +        #  0030: 13 00 00 00 01 00 00 00 06 00 00 00 15 00 00 00 [................]
      +        #  0040: 0c 00 00 00 1c 00 00 00 41 4e 57 00 00 00 00 00 [........ANW.....]
      +        #  0050: 80 d4 26 4e 36 11 b5 40 74 b5 15 7b cd 7b f3 40 [..&N6..@t..{.{.@]
      +        #  0060: 0a d7 a3 3d cd 4c 4e 43 38 34 37 41 45 48 31 36 [...=.LNC847AEH16]
      +        #  0070: 33 36 30 38 32 34 35 37 59 53 4b 4a 01 00 00 00 [36082457YSKJ....]
      +        #  0080: ec ff ff ff 00 00 00 00 0e 00 00 00 01 00 00 00 [................]
      +        #  0090: 0a 00 00 00 e5 07 00 00 0c 00 00 00 1c 00 00 00 [................]
      +        ($hr,$min,$sec,$yr,$mon,$day,$stat,$latRef,$lonRef) =
      +            unpack('x48V6a1a1a1x1', $$dataPt);
      +        # ignore invalid fixes
      +        return 0 unless $stat eq 'A' and ($latRef eq 'N' or $latRef eq 'S') and
      +                                         ($lonRef eq 'E' or $lonRef eq 'W');
      +
      +        $et->WarnOnce('GPSLatitude/Longitude encryption is not yet known, so these will be wrong');
      +        # (see https://exiftool.org/forum/index.php?topic=11320.0)
      +
      +        SetByteOrder('II');
      +
      +        $spd = GetFloat($dataPt, 0x60);
      +        $trk = GetFloat($dataPt, 0x64) + 180;   # (why is this off by 180?)
      +        $lat = GetDouble($dataPt, 0x50);    # latitude is here, but encrypted somehow
      +        $lon = GetDouble($dataPt, 0x58);    # longitude is here, but encrypted somehow
      +        $ddd = 1; # don't convert until we know what the format is
      +
      +        SetByteOrder('MM');
      +        #my $serialNum = substr($$dataPt, 0x68, 20);
      +
      +    } elsif ($$dataPt =~ /^.{12}\xac\0\0\0.{44}(.{72})/s) {
      +
      +        # EACHPAI dash cam
      +        #  0000: 00 00 80 00 66 72 65 65 47 50 53 20 ac 00 00 00 [....freeGPS ....]
      +        #  0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +        #  0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +        #  0030: 00 00 00 00 00 00 00 00 00 00 00 00 34 57 60 62 [............4W`b]
      +        #  0040: 5d 53 3c 41 47 45 45 42 42 3e 40 40 40 3c 51 3c []S@@@HFCE<^<@HCA]
      +        #  0060: 42 3e 46 42 47 48 3c 67 3c 40 3e 40 42 3c 43 3e [B>FBGH@B]
      +        #  0070: 43 41 3c 40 42 40 46 42 40 3c 3c 3c 51 3a 47 46 [CA<@B@FB@<<WarnOnce("Can't yet decrypt EACHPAI timed GPS", 1);
      +        # (see https://exiftool.org/forum/index.php?topic=5095.msg61266#msg61266)
      +        return 1;
      +
      +        my $time = pack 'C*', map { $_ ^= 0 } unpack 'C*', $1;
      +        # bytes 7-12 are the timestamp in ASCII HHMMSS after xor-ing with 0x70
      +        substr($time,7,6) = pack 'C*', map { $_ ^= 0x70 } unpack 'C*', substr($time,7,6);
      +        # (other values are currently unknown)
      +
      +    } elsif ($$dataPt =~ /^.{64}A([NS])([EW])\0/s) {
      +
      +        # Vantrue S1 dashcam
      +        #  0000: 00 00 80 00 66 72 65 65 47 50 53 20 78 00 00 00 [....freeGPS x...]
      +        #  0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +        #  0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +        #  0030: 68 6f 72 73 6f 6e 74 65 63 68 00 00 00 00 00 00 [horsontech......]
      +        #  0040: 41 4e 45 00 15 00 00 00 07 00 00 00 02 00 00 00 [ANE.............]
      +        #  0050: 03 00 00 00 35 00 00 00 05 00 00 00 4f 74 4c 44 [....5.......OtLD]
      +        #  0060: e2 77 a0 45 89 c1 98 42 71 bd ac 42 02 ab 0d 43 [.w.E...Bq..B...C]
      +        #  0070: 05 00 00 00 7f 00 00 00 07 01 00 00 00 00 00 00 [................]
      +        ($latRef, $lonRef) = ($1, $2);
      +        ($yr,$mon,$day,$hr,$min,$sec,@acc) = unpack('x68V6x20V3', $$dataPt);
      +        return 0 unless $mon>=1 and $mon<=12 and $day>=1 and $day<=31;
      +        $yr += 2000 if $yr < 2000;
      +        # (not sure about acc scaling)
      +        map { $_ = $_ - 4294967296 if $_ >= 0x80000000; $_ /= 1000 } @acc;
      +        SetByteOrder('II');
      +        $lon = GetFloat($dataPt, 0x5c);
      +        $lat = GetFloat($dataPt, 0x60);
      +        $spd = GetFloat($dataPt, 0x64) * $knotsToKph;
      +        $trk = GetFloat($dataPt, 0x68);
      +        $alt = GetFloat($dataPt, 0x6c);
      +        SetByteOrder('MM');
      +
           } else {
       
               # decode binary GPS format (Viofo A119S, ref 2)
      @@ -1191,6 +1631,21 @@
               return 0 unless $stat eq 'A' and ($latRef eq 'N' or $latRef eq 'S') and
                                                ($lonRef eq 'E' or $lonRef eq 'W');
               ($lat,$lon,$spd,$trk) = unpack 'f*', pack 'L*', $lat, $lon, $spd, $trk;
      +        # lat/lon also stored as doubles by Transcend Driver Pro 230 (ref PH)
      +        SetByteOrder('II');
      +        my ($lat2, $lon2, $alt2) = (
      +            GetDouble($dataPt, 0x70),
      +            GetDouble($dataPt, 0x80),
      +          # GetDouble($dataPt, 0x98), # (don't know what this is)
      +            GetDouble($dataPt,0xa0),
      +          # GetDouble($dataPt,0xa8)) # (don't know what this is)
      +        );
      +        if (abs($lat2-$lat) < 0.001 and abs($lon2-$lon) < 0.001) {
      +            $lat = $lat2;
      +            $lon = $lon2;
      +            $alt = $alt2;
      +        }
      +        SetByteOrder('MM');
               $yr += 2000 if $yr < 2000;
               $spd *= $knotsToKph;    # convert speed to km/h
               # ($trk is not confirmed; may be GPSImageDirection, ref PH)
      @@ -1200,10 +1655,7 @@
       #
           FoundSomething($et, $tagTbl, $$dirInfo{SampleTime}, $$dirInfo{SampleDuration});
           # lat/long are in DDDMM.MMMM format
      -    my $deg = int($lat / 100);
      -    $lat = $deg + ($lat - $deg * 100) / 60;
      -    $deg = int($lon / 100);
      -    $lon = $deg + ($lon - $deg * 100) / 60;
      +    ConvertLatLon($lat, $lon) unless $ddd;
           $sec = '0' . $sec unless $sec =~ /^\d{2}/;   # pad integer part of seconds to 2 digits
           if (defined $yr) {
               my $time = sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%sZ',$yr,$mon,$day,$hr,$min,$sec);
      @@ -1215,14 +1667,8 @@
           $et->HandleTag($tagTbl, GPSLatitude  => $lat * ($latRef eq 'S' ? -1 : 1));
           $et->HandleTag($tagTbl, GPSLongitude => $lon * ($lonRef eq 'W' ? -1 : 1));
           $et->HandleTag($tagTbl, GPSAltitude  => $alt) if defined $alt;
      -    if (defined $spd) {
      -        $et->HandleTag($tagTbl, GPSSpeed => $spd);
      -        $et->HandleTag($tagTbl, GPSSpeedRef => 'K');
      -    }
      -    if (defined $trk) {
      -        $et->HandleTag($tagTbl, GPSTrack => $trk);
      -        $et->HandleTag($tagTbl, GPSTrackRef => 'T');
      -    }
      +    $et->HandleTag($tagTbl, GPSSpeed     => $spd) if defined $spd;
      +    $et->HandleTag($tagTbl, GPSTrack     => $trk) if defined $trk;
           while (@xtra) {
               my $tag = shift @xtra;
               $et->HandleTag($tagTbl, $tag => shift @xtra);
      @@ -1341,9 +1787,7 @@
                       $et->HandleTag($tagTbl, GPSLatitude  => Get32s(\$b, 0x10) / 1e7);
                       $et->HandleTag($tagTbl, GPSLongitude => Get32s(\$b, 0x18) / 1e7);
                       $et->HandleTag($tagTbl, GPSSpeed     => Get32s(\$b, 0x20) / 100 * $mpsToKph);
      -                $et->HandleTag($tagTbl, GPSSpeedRef  => 'K');
                       $et->HandleTag($tagTbl, GPSTrack     => $trk);
      -                $et->HandleTag($tagTbl, GPSTrackRef  => 'T');
                       $et->HandleTag($tagTbl, GPSAltitude  => Get32s(\$b, 0x28) / 1000);
                       $lastRecPos = $recPos;
                       $foundNew = 1;
      @@ -1434,6 +1878,46 @@
                   $trk = GetFloat($dataPt, 0x58);
               }
       
      +    } elsif ($$dataPt =~ /^.{60}A\0.{6}([NS])\0.{6}([EW])\0/s and $dirLen >= 112) {
      +
      +        # header looks like this in my sample (unknown dashcam, "Anticlock 2 2020_1125_1455_007.MOV"):
      +        #  0000: 00 00 80 00 66 72 65 65 47 50 53 20 68 00 00 00 [....freeGPS h...]
      +        #  0010: 32 30 31 33 30 33 32 35 41 00 00 00 00 00 00 00 [20130325A.......]
      +        #  0020: 41 70 72 20 20 36 20 32 30 31 36 2c 20 31 36 3a [Apr  6 2016, 16:]
      +        #  0030: 0e 00 00 00 38 00 00 00 22 00 00 00 41 00 00 00 [....8..."...A...]
      +        #  0040: 8a 63 24 45 53 00 00 00 9f e6 42 45 45 00 00 00 [.c$ES.....BEE...]
      +        #  0050: 59 c0 04 3f 52 b8 42 41 14 00 00 00 0b 00 00 00 [Y..?R.BA........]
      +        #  0060: 19 00 00 00 06 00 00 00 05 00 00 00 f6 ff ff ff [................]
      +        #  0070: 03 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 [................]
      +        ($latRef, $lonRef) = ($1, $2);
      +        ($hr,$min,$sec,$yr,$mon,$day,@acc) = unpack('x48V3x28V6',$$dataPt);
      +        map { $_ = $_ - 4294967296 if $_ >= 0x80000000; $_ /= 1000 } @acc; # (NC)
      +        $lat = GetFloat($dataPt, 0x40);
      +        $lon = GetFloat($dataPt, 0x48);
      +        $spd = GetFloat($dataPt, 0x50);
      +        $trk = GetFloat($dataPt, 0x54);
      +
      +    } elsif ($$dataPt =~ /^.{16}A([NS])([EW])\0/s) {
      +
      +        # INNOVV MP4 video (same format as INNOVV TS)
      +        while ($$dataPt =~ /(A[NS][EW]\0.{28})/g) {
      +            my $dat = $1;
      +            $lat = abs(GetFloat(\$dat, 4)); # (abs just to be safe)
      +            $lon = abs(GetFloat(\$dat, 8)); # (abs just to be safe)
      +            $spd = GetFloat(\$dat, 12) * $knotsToKph;
      +            $trk = GetFloat(\$dat, 16);
      +            @acc = unpack('x20V3', $dat);
      +            map { $_ = $_ - 4294967296 if $_ >= 0x80000000 } @acc;
      +            ConvertLatLon($lat, $lon);
      +            $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +            $et->HandleTag($tagTbl, GPSLatitude  => $lat * (substr($dat,1,1) eq 'S' ? -1 : 1));
      +            $et->HandleTag($tagTbl, GPSLongitude => $lon * (substr($dat,2,1) eq 'W' ? -1 : 1));
      +            $et->HandleTag($tagTbl, GPSSpeed     => $spd);
      +            $et->HandleTag($tagTbl, GPSTrack     => $trk);
      +            $et->HandleTag($tagTbl, Accelerometer => "@acc");
      +        }
      +        return 1;
      +
           } else {
       
               # (look for binary GPS as stored by NextBase 512G, ref PH)
      @@ -1475,9 +1959,7 @@
                   $et->HandleTag($tagTbl, GPSLatitude  => $lat);
                   $et->HandleTag($tagTbl, GPSLongitude => $lon);
                   $et->HandleTag($tagTbl, GPSSpeed     => $spd / 100 * $mpsToKph);
      -            $et->HandleTag($tagTbl, GPSSpeedRef  => 'K');
                   $et->HandleTag($tagTbl, GPSTrack     => $trk);
      -            $et->HandleTag($tagTbl, GPSTrackRef  => 'T');
                   last if $pos += 0x20 > length($$dataPt) - 0x1e;
               }
               return $$et{DOC_NUM} ? 1 : 0;   # return 0 if nothing extracted
      @@ -1490,21 +1972,12 @@
           $yr += 2000 if $yr < 2000;
           my $time = sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%.2dZ', $yr, $mon, $day, $hr, $min, $sec);
           # convert from DDMM.MMMMMM to DD.DDDDDD format if necessary
      -    unless ($ddd) {
      -        my $deg = int($lat / 100);
      -        $lat = $deg + ($lat - $deg * 100) / 60;
      -        $deg = int($lon / 100);
      -        $lon = $deg + ($lon - $deg * 100) / 60;
      -    }
      +    ConvertLatLon($lat, $lon) unless $ddd;
           $et->HandleTag($tagTbl, GPSDateTime  => $time);
           $et->HandleTag($tagTbl, GPSLatitude  => $lat * ($latRef eq 'S' ? -1 : 1));
           $et->HandleTag($tagTbl, GPSLongitude => $lon * ($lonRef eq 'W' ? -1 : 1));
      -    $et->HandleTag($tagTbl, GPSSpeed     => $spd); # (now in km/h)
      -    $et->HandleTag($tagTbl, GPSSpeedRef  => 'K');
      -    if (defined $trk) {
      -        $et->HandleTag($tagTbl, GPSTrack     => $trk);
      -        $et->HandleTag($tagTbl, GPSTrackRef  => 'T');
      -    }
      +    $et->HandleTag($tagTbl, GPSSpeed     => $spd) if defined $spd; # (now in km/h)
      +    $et->HandleTag($tagTbl, GPSTrack     => $trk) if defined $trk;
           if (defined $alt) {
               $et->HandleTag($tagTbl, GPSAltitude  => $alt);
           }
      @@ -1512,6 +1985,7 @@
           return 1;
       }
       
      +
       #------------------------------------------------------------------------------
       # Extract embedded information referenced from a track
       # Inputs: 0) ExifTool ref, 1) tag name, 2) data ref
      @@ -1583,6 +2057,29 @@
               }
               $$et{HandlerType} = $tag;   # fake handler type
               ProcessSamples($et);        # we have all we need to process sample data now
      +    } elsif ($tag eq 'GPS ') {
      +        my $pos = 0;
      +        my $tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
      +        SetByteOrder('II');
      +        while ($pos + 36 < $dataLen) {
      +            my $dat = substr($$dataPt, $pos, 36);
      +            last if $dat eq "\x0" x 36;
      +            my @a = unpack 'VVVVaVaV', $dat;
      +            $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +            # 0=1, 1=1, 2=secs, 3=?
      +            SetGPSDateTime($et, $tagTbl, $a[2]);
      +            my $lat = $a[5] / 1e3;
      +            my $lon = $a[7] / 1e3;
      +            ConvertLatLon($lat, $lon);
      +            $lat = -abs($lat) if $a[4] eq 'S';
      +            $lon = -abs($lon) if $a[6] eq 'W';
      +            $et->HandleTag($tagTbl, GPSLatitude  => $lat);
      +            $et->HandleTag($tagTbl, GPSLongitude => $lon);
      +            $et->HandleTag($tagTbl, GPSSpeed     => $a[3] / 1e3);
      +            $pos += 36;
      +        }
      +        SetByteOrder('MM');
      +        delete $$et{DOC_NUM};
           }
       }
       
      @@ -1596,7 +2093,33 @@
           my $dataPt = $$dirInfo{DataPt};
           return 0 if length $$dataPt < 2;
           pos($$dataPt) = 2;  # skip 2-byte length word
      -    $et->HandleTag($tagTablePtr, $1, $2) while $$dataPt =~ /(\w+):([^:]*[^:\s])(\s|$)/sg;
      +    $et->VerboseDir('tx3g', undef, length($$dataPt)-2);
      +    $et->HandleTag($tagTablePtr, 'Text', substr($$dataPt, 2));
      +    if ($$dataPt =~ /^..\w{3} (\d{4})-(\d{2})-(\d{2}) (\d{2}:\d{2}:\d{2}) ?([-+])(\d{2}):?(\d{2})$/s) {
      +        $et->HandleTag($tagTablePtr, 'DateTime', "$1:$2:$3 $4$5$6:$7");
      +    } else {
      +        $et->HandleTag($tagTablePtr, $1, $2) while $$dataPt =~ /(\w+):([^:]*[^:\s])(\s|$)/sg;
      +    }
      +    return 1;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Process GM 'marl' ctbx metadata (ref PH)
      +# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
      +# Returns: 1 on success
      +sub Process_marl($$$)
      +{
      +    my ($et, $dirInfo, $tagTablePtr) = @_;
      +    my $dataPt = $$dirInfo{DataPt};
      +    return 0 if length $$dataPt < 2;
      +
      +    # 8-byte records:
      +    # byte 0 seems to be tag ID (0=timestamp in sec * 1e7)
      +    # bytes 1-3 seem to be 24-bit signed integer (unknown meaning)
      +    # bytes 4-7 are an int32u value, usually a multiple of 10000
      +
      +    $et->WarnOnce("Can't yet decode timed GM data", 1);
      +    # (see https://exiftool.org/forum/index.php?topic=11335.msg61393#msg61393)
           return 1;
       }
       
      @@ -1614,9 +2137,9 @@
       
           # parse using information from 'keys' table (eg. Apple iPhone7+ hevc 'Core Media Data Handler')
           $et->VerboseDir('mebx', undef, length $$dataPt);
      -    my $pos = 0;
      -    while ($pos + 8 < length $$dataPt) {
      -        my $len = Get32u($dataPt, $pos);
      +    my ($pos, $len);
      +    for ($pos=0; $pos+8 length $$dataPt;
               my $id = substr($$dataPt, $pos+4, 4);
               my $info = $$ee{'keys'}{$id};
      @@ -1639,7 +2162,6 @@
               } else {
                   $et->WarnOnce('No key information for mebx ID ' . PrintableTagID($id,1));
               }
      -        $pos += $len;
           }
           return 1;
       }
      @@ -1695,20 +2217,14 @@
               my $lat = GetDouble($dataPt, $pos);
               my $lon = GetDouble($dataPt, $pos+8);
               next if abs($lat) > 9000 or abs($lon) > 18000;
      -        # (note: this method works fine for negative coordinates)
      -        my $deg = int($lat / 100);
      -        $lat = $deg + ($lat - $deg * 100) / 60;
      -        $deg = int($lon / 100);
      -        $lon = $deg + ($lon - $deg * 100) / 60;
      +        ConvertLatLon($lat, $lon);
               my @a = unpack('C*', substr($$dataPt, $pos+22, 6)); # unpack date/time
               $a[0] += 2000;
               $et->HandleTag($tagTbl, GPSDateTime  => sprintf("%.4d:%.2d:%.2d %.2d:%.2d:%.2dZ", @a));
               $et->HandleTag($tagTbl, GPSLatitude  => $lat);
               $et->HandleTag($tagTbl, GPSLongitude => $lon);
               $et->HandleTag($tagTbl, GPSSpeed     => Get16u($dataPt, $pos+0x14));
      -        $et->HandleTag($tagTbl, GPSSpeedRef  => 'K');
               $et->HandleTag($tagTbl, GPSTrack     => Get8u($dataPt, $pos+0x1c) * 2); # (NC)
      -        $et->HandleTag($tagTbl, GPSTrackRef  => 'T');
               $et->HandleTag($tagTbl, GPSAltitude  => Get32s($dataPt, $pos + 0x10));
               # yet to be decoded:
               # 0x1d - int8u[3] seen: "1 1 0"
      @@ -1797,10 +2313,7 @@
                       my $lat = GetDouble(\$buff, $pos+4);
                       my $lon = GetDouble(\$buff, $pos+12);
                       $et->Warn('Bad gps0 record') and last if abs($lat) > 9000 or abs($lon) > 18000;
      -                my $deg = int($lat / 100);
      -                $lat = $deg + ($lat - $deg * 100) / 60;
      -                $deg = int($lon / 100);
      -                $lon = $deg + ($lon - $deg * 100) / 60;
      +                ConvertLatLon($lat, $lon);
                       $lat = -$lat if Get8u(\$buff, $pos+0x21) == 2;   # wild guess
                       $lon = -$lon if Get8u(\$buff, $pos+0x22) == 2;   # wild guess
                       my @a = unpack('C*', substr($buff, $pos+26, 6)); # unpack date/time
      @@ -1810,9 +2323,7 @@
                       $et->HandleTag($tagTbl, GPSLatitude  => $lat);
                       $et->HandleTag($tagTbl, GPSLongitude => $lon);
                       $et->HandleTag($tagTbl, GPSSpeed     => Get16u(\$buff, $pos+0x18) * $knotsToKph);
      -                $et->HandleTag($tagTbl, GPSSpeedRef  => 'K');
                       $et->HandleTag($tagTbl, GPSTrack     => Get8u(\$buff, $pos+0x20) * 2);
      -                $et->HandleTag($tagTbl, GPSTrackRef  => 'T');
                   }
               } elsif ($tag eq 'gsen') {
                   # (similar to record decoded in Process_gsen)
      @@ -1849,39 +2360,91 @@
       {
           my ($et, $dirInfo, $tagTbl) = @_;
           my $dataPt = $$dirInfo{DataPt};
      -    # parse only RMC sentence (with leading timestamp) for now
      -    while ($$dataPt =~ /(?:\[(\d+)\])?\$[A-Z]{2}RMC,(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d+\.\d+),([NS]),(\d+\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/g) {
      -        my $tc = $1;    # milliseconds since 1970 (local time)
      -        my ($lat,$latRef,$lon,$lonRef) = ($6,$7,$8,$9);
      -        my $yr = $14 + ($14 >= 70 ? 1900 : 2000);
      -        my ($mon,$day,$hr,$min,$sec) = ($13,$12,$2,$3,$4);
      -        my ($spd, $trk);
      -        $spd = $10 * $knotsToKph if length $10;
      -        $trk = $11 if length $11;
      -        # lat/long are in DDDMM.MMMM format
      -        my $deg = int($lat / 100);
      -        $lat = $deg + ($lat - $deg * 100) / 60;
      -        $deg = int($lon / 100);
      -        $lon = $deg + ($lon - $deg * 100) / 60;
      -        $sec = '0' . $sec unless $sec =~ /^\d{2}/;   # pad integer part of seconds to 2 digits
      -        my $time = sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%sZ',$yr,$mon,$day,$hr,$min,$sec);
      -        my $sampleTime;
      -        $sampleTime = ($tc - $$et{StartTime}) / 1000 if $tc and $$et{StartTime};
      -        FoundSomething($et, $tagTbl, $sampleTime);
      -        $et->HandleTag($tagTbl, GPSDateTime => $time);
      -        $et->HandleTag($tagTbl, GPSLatitude  => $lat * ($latRef eq 'S' ? -1 : 1));
      -        $et->HandleTag($tagTbl, GPSLongitude => $lon * ($lonRef eq 'W' ? -1 : 1));
      -        if (defined $spd) {
      -            $et->HandleTag($tagTbl, GPSSpeed => $spd);
      -            $et->HandleTag($tagTbl, GPSSpeedRef => 'K');
      -        }
      -        if (defined $trk) {
      -            $et->HandleTag($tagTbl, GPSTrack => $trk);
      -            $et->HandleTag($tagTbl, GPSTrackRef => 'T');
      +    my ($rtnVal, %fix);
      +    # parse only RMC and GGA sentence [with leading timecode] for now
      +    for (;;) {
      +        my ($tc, $type, $tim);
      +        if ($$dataPt =~ /(?:\[(\d+)\])?\$[A-Z]{2}(RMC|GGA),(\d{2}\d{2}\d+(\.\d*)?),/g) {
      +            ($tc, $type, $tim) = ($1, $2, $3);
      +        }
      +        # write out last fix now if complete
      +        # (use the GPS timestamps because they may be different for the same timecode)
      +        if ($fix{tim} and (not $tim or $fix{tim} != $tim)) {
      +            if ($fix{dat} and defined $fix{lat} and defined $fix{lon}) {
      +                my $sampleTime;
      +                $sampleTime = ($fix{tc} - $$et{StartTime}) / 1000 if $fix{tc} and $$et{StartTime};
      +                FoundSomething($et, $tagTbl, $sampleTime);
      +                $et->HandleTag($tagTbl, GPSDateTime  => $fix{dat});
      +                $et->HandleTag($tagTbl, GPSLatitude  => $fix{lat});
      +                $et->HandleTag($tagTbl, GPSLongitude => $fix{lon});
      +                $et->HandleTag($tagTbl, GPSSpeed     => $fix{spd} * $knotsToKph) if defined $fix{spd};
      +                $et->HandleTag($tagTbl, GPSTrack     => $fix{trk}) if defined $fix{trk};
      +                $et->HandleTag($tagTbl, GPSAltitude  => $fix{alt}) if defined $fix{alt};
      +                $et->HandleTag($tagTbl, GPSSatellites=> $fix{nsats}+0) if defined $fix{nsats};
      +                $et->HandleTag($tagTbl, GPSDOP       => $fix{hdop}) if defined $fix{hdop};
      +            }
      +            undef %fix;
      +        }
      +        $fix{tim} = $tim or last;
      +        my $pos = pos($$dataPt);
      +        pos($$dataPt) = $pos - length($tim) - 1; # rewind to re-parse time
      +        # (parsing of NMEA strings copied from Geotag.pm)
      +        if ($type eq 'RMC' and
      +            $$dataPt =~ /\G(\d{2})(\d{2})(\d+(\.\d*)?),A?,(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),(\d*\.?\d*),(\d*\.?\d*),(\d{2})(\d{2})(\d+)/g)
      +        {
      +            my $year = $15 + ($15 >= 70 ? 1900 : 2000);
      +            $fix{tc} = $tc; # use timecode of RMC sentence
      +            $fix{dat} = sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%sZ',$year,$14,$13,$1,$2,$3);
      +            $fix{lat} = (($5 || 0) + $6/60) * ($7 eq 'N' ? 1 : -1);
      +            $fix{lon} = (($8 || 0) + $9/60) * ($10 eq 'E' ? 1 : -1);
      +            $fix{spd} = $11 if length $11;
      +            $fix{trk} = $12 if length $12;
      +        } elsif ($type eq 'GGA' and
      +            $$dataPt =~ /\G(\d{2})(\d{2})(\d+(\.\d*)?),(\d*?)(\d{1,2}\.\d+),([NS]),(\d*?)(\d{1,2}\.\d+),([EW]),[1-6]?,(\d+)?,(\.\d+|\d+\.?\d*)?,(-?\d+\.?\d*)?,M?/g)
      +        {
      +            $fix{lat} = (($5 || 0) + $6/60) * ($7 eq 'N' ? 1 : -1);
      +            $fix{lon} = (($8 || 0) + $9/60) * ($10 eq 'E' ? 1 : -1);
      +            @fix{qw(nsats hdop alt)} = ($11,$12,$13);
      +        } else {
      +            pos($$dataPt) = $pos;   # continue searching from our last match
               }
           }
           delete $$et{DOC_NUM};
      -    return 1;
      +    return $rtnVal;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Process 'gps ' or 'udat' atom possibly containing NMEA (ref PH)
      +# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
      +# Returns: 1 on success
      +sub ProcessGPSLog($$$)
      +{
      +    my ($et, $dirInfo, $tagTbl) = @_;
      +    my $dataPt = $$dirInfo{DataPt};
      +    my ($rtnVal, @a);
      +
      +    # try NMEA format first
      +    return 1 if ProcessNMEA($et,$dirInfo,$tagTbl);
      +
      +    # DENVER ACG-8050WMK2 format looks like this:
      +    # 210318073213[1][N][52200970][E][006362321][+00152][100][00140][C000000]+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000+000
      +    # YYMMDDHHMMSS A? NS lat       EW lon         alt    kph  dir    kCal    accel
      +    while ($$dataPt =~ /\b(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\[1\]\[([NS])\]\[(\d{8})\]\[([EW])\]\[(\d{9})\]\[([-+]?\d*)\]\[(\d*)\]\[(\d*)\]\[C?(\d*)\](([-+]\d{3})+)/g) {
      +        my $lat = substr( $8,0,2) + substr( $8,2) / 600000;
      +        my $lon = substr($10,0,3) + substr($10,3) / 600000;
      +        $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +        $et->HandleTag($tagTbl, GPSDateTime  => "20$1:$2:$3 $4:$5:$6Z");
      +        $et->HandleTag($tagTbl, GPSLatitude  => $lat * ($7 eq 'S' ? -1 : 1));
      +        $et->HandleTag($tagTbl, GPSLongitude => $lon * ($9 eq 'W' ? -1 : 1));
      +        $et->HandleTag($tagTbl, GPSAltitude  => $11 / 10) if length $11;
      +        $et->HandleTag($tagTbl, GPSSpeed     => $12 + 0)  if length $12;
      +        $et->HandleTag($tagTbl, GPSTrack     => $13 + 0)  if length $13;
      +        $et->HandleTag($tagTbl, KiloCalories => $14 / 10) if length $14;
      +        $et->HandleTag($tagTbl, Accelerometer=> $15)      if length $15;
      +        $rtnVal = 1;
      +    }
      +    delete $$et{DOC_NUM};
      +    return $rtnVal;
       }
       
       #------------------------------------------------------------------------------
      @@ -1972,9 +2535,7 @@
                   $et->HandleTag($tagTbl, GPSLongitude => GetDouble($dataPt, $pos+0x24));
                   $et->HandleTag($tagTbl, GPSAltitude  => GetDouble($dataPt, $pos+0x14));
                   $et->HandleTag($tagTbl, GPSSpeed     => GetDouble($dataPt, $pos+0x0c) * $mpsToKph);
      -            $et->HandleTag($tagTbl, GPSSpeedRef  => 'K');
                   $et->HandleTag($tagTbl, GPSTrack     => GetDouble($dataPt, $pos+0x30));
      -            $et->HandleTag($tagTbl, GPSTrackRef  => 'T');
                   if ($unknown) {
                       my @a = map { GetDouble($dataPt, $pos+0x38+8*$_) } 0..2;
                       $et->HandleTag($tagTbl, Unknown03 => "@a");
      @@ -2022,7 +2583,7 @@
           my $trailerLen = unpack('x38V', $buff);
           $trailerLen > $fileEnd and $et->Warn('Bad Insta360 trailer size'), return 0;
           if ($dirInfo) {
      -        $$dirInfo{DirLen} = $trailerLen if $dirInfo;
      +        $$dirInfo{DirLen} = $trailerLen;
               $$dirInfo{DataPos} = $fileEnd - $trailerLen;
               if ($$dirInfo{OutFile}) {
                   if ($$et{DEL_GROUP}{Insta360}) {
      @@ -2078,32 +2639,42 @@
                           $et->HandleTag($tagTbl, Accelerometer => "@a[0..2]"); # (NC)
                           $et->HandleTag($tagTbl, AngularVelocity => "@a[3..5]"); # (NC)
                       }
      -            } elsif ($id == 0x400 and $unknown) {
      +            } elsif ($id == 0x400) {
                       for ($p=0; $p<$len; $p+=$dlen) {
                           $$et{DOC_NUM} = ++$$et{DOC_COUNT};
                           $et->HandleTag($tagTbl, TimeCode => sprintf('%.3f', Get64u(\$buff, $p) / 1000));
      -                    $et->HandleTag($tagTbl, Unknown01 => GetDouble(\$buff, $p + 8));
      +                    $et->HandleTag($tagTbl, ExposureTime => GetDouble(\$buff, $p + 8)); #6
      +                }
      +            } elsif ($id == 0x600) { #6
      +                for ($p=0; $p<$len; $p+=$dlen) {
      +                    $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +                    $et->HandleTag($tagTbl, VideoTimeStamp => sprintf('%.3f', Get64u(\$buff, $p) / 1000));
                       }
                   } elsif ($id == 0x700) {
                       for ($p=0; $p<$len; $p+=$dlen) {
                           my $tmp = substr($buff, $p, $dlen);
                           my @a = unpack('VVvaa8aa8aa8a8a8', $tmp);
                           next unless $a[3] eq 'A';   # (ignore void fixes)
      -                    last unless ($a[5] eq 'N' or $a[5] eq 'S') and # (quick validation)
      -                                ($a[7] eq 'E' or $a[7] eq 'W');
      +                    unless (($a[5] eq 'N' or $a[5] eq 'S') and # (quick validation)
      +                            ($a[7] eq 'E' or $a[7] eq 'W' or 
      +                             # (odd, but I've seen "O" instead of "W".  Perhaps
      +                             #  when the language is french? ie. "Ouest"?)
      +                             $a[7] eq 'O'))
      +                    {
      +                        $et->Warn('Unrecognized INSV GPS format');
      +                        last;
      +                    }
                           $$et{DOC_NUM} = ++$$et{DOC_COUNT};
                           $a[$_] = GetDouble(\$a[$_], 0) foreach 4,6,8,9,10;
                           $a[4] = -abs($a[4]) if $a[5] eq 'S'; # (abs just in case it was already signed)
      -                    $a[6] = -abs($a[6]) if $a[7] eq 'W';
      -                    $et->HandleTag($tagTbl, GPSDateTime => Image::ExifTool::ConvertUnixTime($a[0]) . 'Z');
      -                    $et->HandleTag($tagTbl, GPSLatitude => $a[4]);
      +                    $a[6] = -abs($a[6]) if $a[7] ne 'E';
      +                    $et->HandleTag($tagTbl, GPSDateTime  => Image::ExifTool::ConvertUnixTime($a[0]) . 'Z');
      +                    $et->HandleTag($tagTbl, GPSLatitude  => $a[4]);
                           $et->HandleTag($tagTbl, GPSLongitude => $a[6]);
      -                    $et->HandleTag($tagTbl, GPSSpeed => $a[8] * $mpsToKph);
      -                    $et->HandleTag($tagTbl, GPSSpeedRef => 'K');
      -                    $et->HandleTag($tagTbl, GPSTrack => $a[9]);
      -                    $et->HandleTag($tagTbl, GPSTrackRef => 'T');
      -                    $et->HandleTag($tagTbl, GPSAltitude => $a[10]);
      -                    $et->HandleTag($tagTbl, Unknown02 => "@a[1,2]") if $unknown;
      +                    $et->HandleTag($tagTbl, GPSSpeed     => $a[8] * $mpsToKph);
      +                    $et->HandleTag($tagTbl, GPSTrack     => $a[9]);
      +                    $et->HandleTag($tagTbl, GPSAltitude  => $a[10]);
      +                    $et->HandleTag($tagTbl, Unknown02    => "@a[1,2]") if $unknown; # millisecond counter (https://exiftool.org/forum/index.php?topic=9884.msg65143#msg65143)
                       }
                   }
               } elsif ($id == 0x101) {
      @@ -2129,6 +2700,72 @@
       }
       
       #------------------------------------------------------------------------------
      +# Process 360Fly 'uuid' atom containing sensor data
      +# (ref https://github.com/JamesHeinrich/getID3/blob/master/getid3/module.audio-video.quicktime.php)
      +# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
      +# Returns: 1 on success
      +sub Process360Fly($$$)
      +{
      +    my ($et, $dirInfo, $tagTbl) = @_;
      +    my $dataPt = $$dirInfo{DataPt};
      +    my $dataLen = length $$dataPt;
      +    my $pos = 16;
      +    my $lastTime = -1;
      +    my $streamTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
      +    while ($pos + 32 <= $dataLen) {
      +        my $type = ord substr $$dataPt, $pos, 1;
      +        my $time = Get64u($dataPt, $pos + 2); # (only valid for some types)
      +        if ($$tagTbl{$type}) {
      +            if ($time != $lastTime) {
      +                $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +                $lastTime = $time;
      +            }
      +        }
      +        $et->HandleTag($tagTbl, $type, undef, DataPt => $dataPt, Start => $pos, Size => 32);
      +        # synthesize GPSDateTime from the timestamp for GPS records
      +        SetGPSDateTime($et, $streamTbl, $time / 1e6) if $type == 5;
      +        $pos += 32;
      +    }
      +    delete $$et{DOC_NUM};
      +    return 1;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Process GPS from Vantrue N2S dashcam
      +# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
      +# Returns: 1 on success
      +sub ProcessFMAS($$$)
      +{
      +    my ($et, $dirInfo, $tagTbl) = @_;
      +    my $dataPt = $$dirInfo{DataPt};
      +    return 0 unless $$dataPt =~ /^FMAS\0\0\0\0.{72}SAMM.{36}A/s and length($$dataPt) >= 160;
      +    $et->VerboseDir('FMAS', undef, length($$dataPt));
      +    # 0000: 46 4d 41 53 00 00 00 00 00 00 00 00 00 00 00 00 [FMAS............]
      +    # 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +    # 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
      +    # 0030: 02 08 01 08 06 08 02 04 07 02 06 00 00 00 00 00 [................]
      +    # 0040: 00 00 00 00 00 00 00 00 4f 46 4e 49 4d 4d 41 53 [........OFNIMMAS]
      +    # 0050: 53 41 4d 4d 01 00 00 00 00 00 00 00 00 00 00 00 [SAMM............]
      +    # 0060: e5 07 09 18 08 00 22 00 02 00 00 00 a1 82 8a bf [......".........]
      +    # 0070: 89 23 8e bd 0b 2c 30 bc 41 57 4e 51 16 00 a1 01 [.#...,0.AWNQ....]
      +    # 0080: 29 26 27 0c 4b 00 49 00 00 00 00 00 00 00 00 00 [)&'.K.I.........]
      +    # 0090: 00 00 00 00 00 00 00 00 00 52 00 00 00 00 00 00 [.........R......]
      +    my @a = unpack('x96vCCCCCCx16AAACCCvCCvvv',$$dataPt);
      +    SetByteOrder('II');
      +    my $acc = ReadValue($dataPt, 0x6c, 'float', 3); # (looks like Z comes first in my sample)
      +    my $lon = $a[10] + ($a[11] + $a[13]/6000) / 60; # (why zero byte at $a[12]?)
      +    my $lat = $a[14] + ($a[15] + $a[16]/6000) / 60;
      +    $et->HandleTag($tagTbl, GPSDateTime  => sprintf('%.4d:%.2d:%.2d %.2d:%.2d:%.2d', @a[0..5]));
      +    $et->HandleTag($tagTbl, GPSLatitude  => $lat * ($a[9] eq 'S' ? -1 : 1));
      +    $et->HandleTag($tagTbl, GPSLongitude => $lon * ($a[8] eq 'W' ? -1 : 1));
      +    $et->HandleTag($tagTbl, GPSSpeed     => $a[17] * $mphToKph); # convert mph -> kph
      +    $et->HandleTag($tagTbl, GPSTrack     => $a[18]);
      +    $et->HandleTag($tagTbl, Accelerometer=> $acc);
      +    SetByteOrder('MM');
      +    return 1;
      +}
      +
      +#------------------------------------------------------------------------------
       # Scan media data for "freeGPS" metadata if not found already (ref PH)
       # Inputs: 0) ExifTool ref
       sub ScanMediaData($)
      @@ -2201,7 +2838,7 @@
               $buf2 = substr($buff, $len);
           }
           if ($tagTbl) {
      -        $$et{DOC_NUM} = 0;
      +        $$et{DOC_NUM} = 0; # reset DOC_NUM after extracting embedded metadata
               $et->VPrint(0, "--------------------------\n");
               SetByteOrder($oldByteOrder);
               $$et{INDENT} = substr $$et{INDENT}, 0, -2;
      @@ -2229,7 +2866,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Radiance.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Radiance.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Radiance.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Radiance.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -15,7 +15,7 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.01';
      +$VERSION = '1.02';
       
       # Radiance tags
       %Image::ExifTool::Radiance::Main = (
      @@ -42,6 +42,7 @@
               },
           },
           _command  => 'Command',
      +    _comment  => 'Comment',
           software  => 'Software',
           view      => 'View',
          'format'   => 'Format', # <-- this is the one that caused the conflict when uppercase
      @@ -74,8 +75,12 @@
           while ($raf->ReadLine($buff)) {
               chomp $buff;
               last unless length($buff) > 0 and length($buff) < 4096;
      +        if ($buff =~ s/^#\s*//) {
      +            $et->HandleTag($tagTablePtr, '_comment', $buff) if length $buff;
      +            next;
      +        }
               unless ($buff =~ /^(.*)?\s*=\s*(.*)/) {
      -            $et->HandleTag($tagTablePtr, '_command', $buff);
      +            $et->HandleTag($tagTablePtr, '_command', $buff) if length $buff;
                   next;
               }
               # use lower-case tag names to avoid conflicts with reserved tag table entries
      @@ -120,7 +125,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Rawzor.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Rawzor.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Rawzor.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Rawzor.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -168,7 +168,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/README libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/README
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/README	2020-02-14 12:08:40.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/README	2021-10-27 16:03:44.000000000 +0000
      @@ -62,10 +62,11 @@
         information about the source directory for tags to be copied to the output.
       
         CHECK_PROC : Reference to a function which validates Raw values for writing.
      -  The function takes three arguments: 0) ExifTool object reference, 1) tagInfo
      -  reference, 2) value reference, and returns undefined (and possibly modifies
      -  the input value) if successful, or an error message if there was a format
      -  problem.  May set ExifTool CHECK_WARN datamember for success with a warning.
      +  The function takes 3-4 arguments: 0) ExifTool object reference, 1) tagInfo
      +  reference, 2) value reference, and 3) [optional] conversion type.  It returns
      +  undefined (and possibly modifies the input value) if successful, or an error
      +  message if there was a format problem.  May set ExifTool CHECK_WARN datamember
      +  for success with a warning.
       
         INIT_TABLE : Routine called to do any necessary initialization before the
         first time the table is loaded.  Argument is a reference to the table.
      @@ -387,8 +388,11 @@
                         'Flattened' - [reserved] used internally to mark Struct tags
                         which have been processed to generate flattened equivalents.
       
      -                  'GotGroups' - [reserved] flag used internally to indicate that
      -                  the Groups hash has been initialized for this tag.
      +                  'NotFlat' - [XMP tags only] Flag indicates that this tag ID
      +                  does not represent a flattened tag.  Used to avoid a conflict
      +                  if the tag ID would be the same as a generated ID for a
      +                  flattened tag.  The result is that the flattened tag will not
      +                  be accessible.
       
                         'Hidden' - set to hide tag from the TagName documentation.
                         Also suppresses verbose output of a BinaryData tag.
      @@ -404,6 +408,9 @@
                         to be evaluated.  Expression may access $val and $et,
                         and is evaluated only when reading.
       
      +                  'iTXt' - [PNG TextualData tags only] flag to write tag as PNG
      +                  iTXt chunk even if it contains no special characters.
      +
                         'List' - flag indicating that duplicate entries of this tag
                         are allowed, and will be accumulated in a list.  Note that for
                         XMP information, 3 different types of lists are supported and
      @@ -443,6 +450,10 @@
                         may be written if the tag already exists.  By default, all
                         MakerNotes tags are permanent unless otherwise specified.
       
      +                  'PreservePadding' - [QuickTime only] flag to preserve the
      +                  original size of the QuickTime atom by padding with nulls when
      +                  writing with the QuickTimePad option.
      +
                         'PrintHex' - specifies that unknown PrintConv values should
                         be printed in hex (eg. 'Unknown (0x1)').  Also causes
                         numerical tag values to be printed in hex in the HTML tag name
      @@ -467,9 +478,9 @@
                         tags in IFD1 of JPEG images which default to priority 0.
       
                         'Protected' - bit mask to protect tags from writing:
      -                  Bit 0x01 indicates an 'unsafe' tag, which is not set via
      +                  Bit 0x01 indicates an 'Unsafe' tag, which is not set via
                         SetNewValuesFromFile() unless specified explicitly.
      -                  Bit 0x02 indicates a 'protected' tag, which should not be set
      +                  Bit 0x02 indicates a 'Protected' tag, which should not be set
                         directly by the user.
       
                         'PutFirst' - [EXIF only] flag to place this value before IFD0
      @@ -763,25 +774,26 @@
                         conditionally deleted.
       
         Writable      : Indicates this tag can be written (or not written if Writable
      -                  is set to zero), and for EXIF-type tables gives format for
      -                  writing.  Writable may be set to 1 for MakerNotes information
      -                  because the existing format is always used, however providing
      -                  a format is desirable because it is used in validating the
      -                  value.  Set to 2 for tag to show "yes" in the Writable column
      -                  of the tag name documentation even when there is no WRITE_PROC
      -                  defined (eg. if it is written via an Extra tag).  For EXIF
      -                  tables, the Writable flag may be different than the Format
      -                  flag, in which case Format is used for converting the binary
      -                  value and Writable specifies the format code written to the
      -                  EXIF IFD.  For SubDirectories in EXIF information, this flag
      -                  is only defined if the SubDirectory is writable as a block, or
      -                  if the SubDirectory can not be edited (in which case Writable
      -                  is set to 0).  If non-zero, the SubDirectory is also extracted
      -                  as a block, so the Binary and Protected flags should usually
      -                  set as well.  There is currently no way to specify a write
      -                  format for a SubDirectory that is not writable as a block (the
      -                  default is 'int32u' for IFD-type SubDirectories, and 'undef'
      -                  for all others).
      +                  is set to zero), and for EXIF and QuickTime tables gives
      +                  format for writing.  Writable may be set to 1 for MakerNotes
      +                  information because the existing format is always used,
      +                  however providing a format is desirable because it is used in
      +                  validating the value.  Set to 2 for tag to show "yes" in the
      +                  Writable column of the tag name documentation even when there
      +                  is no WRITE_PROC defined (eg. if it is written via an Extra
      +                  tag).  For EXIF and QuickTime tables, the Writable flag may be
      +                  different than the Format flag, in which case Format is used
      +                  for converting the binary value and Writable specifies the
      +                  format code written to the EXIF IFD.  For SubDirectories in
      +                  EXIF information, this flag is only defined if the
      +                  SubDirectory is writable as a block, or if the SubDirectory
      +                  can not be edited (in which case Writable is set to 0).  If
      +                  non-zero, the SubDirectory is also extracted as a block, so
      +                  the Binary and Protected flags should usually set as well. 
      +                  There is currently no way to specify a write format for a
      +                  SubDirectory that is not writable as a block (the default is
      +                  'int32u' for IFD-type SubDirectories, and 'undef' for all
      +                  others).
       
         WriteAlso     : Used for writable tag to specify other tags to write when this
                         tag is written.  The value is a hash reference.  The hash keys
      @@ -1083,7 +1095,7 @@
       hashes, except that only the following elements are used:
       
         Raw/Value/PrintConv (and their inverses), TagID (optional), Groups, List,
      -  Writable, Struct, Namespace, LangCode, PropertyPath, Notes.
      +  Writable, Struct, Namespace, FlatName, LangCode, PropertyPath, Notes.
       
       But note that for PropertyPath, only the element of the path corresponding to
       the specific field is stored (including any necessary list properties).  The
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Real.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Real.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Real.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Real.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -715,7 +715,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Reconyx.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Reconyx.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Reconyx.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Reconyx.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -431,7 +431,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Red.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Red.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Red.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Red.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -303,7 +303,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Ricoh.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Ricoh.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Ricoh.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Ricoh.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -19,7 +19,7 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::Exif;
       
      -$VERSION = '1.34';
      +$VERSION = '1.35';
       
       sub ProcessRicohText($$$);
       sub ProcessRicohRMETA($$$);
      @@ -875,6 +875,7 @@
               Name => 'SoundFile',
               Notes => 'audio data recorded in JPEG images by the G700SE',
           },
      +    _barcode => { Name => 'Barcodes', List => 1 },
       );
       
       # information stored in Ricoh AVI images (ref PH)
      @@ -1004,6 +1005,23 @@
               # (but it looks like the int16u at $dirStart+6 is the next block number
               # if the data is continued, or 0 for the last block)
               $dirLen < 14 and $et->Warn('Short Ricoh RMETA block', 1), return 0;
      +        if ($$dataPt =~ /^.{20}BARCODE/s) {
      +            my $val = substr($$dataPt, 20);
      +            $val =~ s/\0.*//s;
      +            $val =~ s/^BARCODE\w+,\d{2},//;
      +            my @codes;
      +            for (;;) {
      +                $val =~ s/(\d+),// and length $val >= $1 or last;
      +                push @codes, substr($val, 0, $1);
      +                last unless length $val > $1;
      +                $val = substr($val, $1+1);
      +            }
      +            $et->HandleTag($tagTablePtr, '_barcode', \@codes) if @codes;
      +            return 1;
      +        } elsif ($$dataPt =~ /^.{18}ASCII/s) {
      +            # (ignore barcode tag names for now)
      +            return 1;
      +        }
               my $audioLen = Get16u($dataPt, $dirStart+12);
               $audioLen + 14 > $dirLen and $et->Warn('Truncated Ricoh RMETA audio data', 1), return 0;
               my $buff = substr($$dataPt, $dirStart + 14, $audioLen);
      @@ -1125,7 +1143,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/RIFF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/RIFF.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/RIFF.pm	2020-02-14 13:02:16.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/RIFF.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -21,6 +21,7 @@
       #              13) http://tech.ebu.ch/docs/tech/tech3285.pdf
       #              14) https://developers.google.com/speed/webp/docs/riff_container
       #              15) https://tech.ebu.ch/docs/tech/tech3306-2009.pdf
      +#              16) https://sites.google.com/site/musicgapi/technical-documents/wav-file-format
       #------------------------------------------------------------------------------
       
       package Image::ExifTool::RIFF;
      @@ -29,11 +30,12 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.54';
      +$VERSION = '1.59';
       
       sub ConvertTimecode($);
       sub ProcessSGLT($$$);
       sub ProcessSLLT($$$);
      +sub ProcessLucas($$$);
       
       # recognized RIFF variants
       my %riffType = (
      @@ -353,9 +355,35 @@
               SubDirectory => { TagTable => 'Image::ExifTool::RIFF::DS64' },
           },
           list => 'ListType',  #15
      -    labl => { #15
      -        Name => 'Label',
      -        SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Label' },
      +    labl => { #16 (in 'adtl' chunk)
      +        Name => 'CuePointLabel',
      +        Priority => 0, # (so they are stored in sequence)
      +        ValueConv => 'my $str=substr($val,4); $str=~s/\0+$//; unpack("V",$val) . " " . $str',
      +    },
      +    note => { #16 (in 'adtl' chunk)
      +        Name => 'CuePointNote',
      +        Priority => 0, # (so they are stored in sequence)
      +        ValueConv => 'my $str=substr($val,4); $str=~s/\0+$//; unpack("V",$val) . " " . $str',
      +    },
      +    ltxt => { #16 (in 'adtl' chunk)
      +        Name => 'LabeledText',
      +        Notes => 'CuePointID Length Purpose Country Language Dialect Codepage Text',
      +        Priority => 0, # (so they are stored in sequence)
      +        ValueConv => q{
      +            my @a = unpack('VVa4vvvv', $val);
      +            $a[2] = "'$a[2]'";
      +            my $txt = substr($val, 18);
      +            $txt =~ s/\0+$//;   # remove null terminator
      +            return join(' ', @a, $txt);
      +        },
      +    },
      +    smpl => { #16
      +        Name => 'Sampler',
      +        SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Sampler' },
      +    },        
      +    inst => { #16
      +        Name => 'Instrument',
      +        SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Instrument' },
           },
           LIST_INFO => {
               Name => 'Info',
      @@ -395,6 +423,10 @@
                   ProcessProc => \&Image::ExifTool::RIFF::ProcessChunks,
               },
           },
      +    LIST_adtl => { #PH (ref 16, forum12387)
      +        Name => 'AssociatedDataList',
      +        SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Main' },
      +    },
           # seen LIST_JUNK
           JUNK => [
               {
      @@ -434,6 +466,14 @@
                   SubDirectory => { TagTable => 'Image::ExifTool::Pentax::Junk2' },
               },
               {
      +            Name => 'LucasJunk', # (Lucas LK-7900 Ace)
      +            Condition => '$$valPt =~ /^0G(DA|PS)/',
      +            SubDirectory => {
      +                TagTable => 'Image::ExifTool::QuickTime::Stream',
      +                ProcessProc => \&ProcessLucas,
      +            },
      +        },
      +        {
                   Name => 'TextJunk',
                   # try to interpret unknown junk as an ASCII string
                   RawConv => '$val =~ /^([^\0-\x1f\x7f-\xff]+)\0*$/ ? $1 : undef',
      @@ -457,10 +497,15 @@
               Name => 'NumberOfSamples',
               RawConv => 'Get32u(\$val, 0)',
           },
      -   'cue ' => {
      +   'cue '=> {
               Name => 'CuePoints',
               Binary => 1,
      +        Notes => q{
      +            config_files/cutepointlist.config from full distribution will decode this
      +            and generate a list of cue points with labels
      +        },
           },
      +    plst => { Name => 'Playlist',  Binary => 1 }, #16
           afsp => { },
           IDIT => {
               Name => 'DateTimeOriginal',
      @@ -473,17 +518,42 @@
               Name => 'CharacterSet',
               SubDirectory => { TagTable => 'Image::ExifTool::RIFF::CSET' },
           },
      +    # tx_ tags are generated based on the Codec used for the txts stream
      +    tx_USER => {
      +        Name => 'UserText',
      +        SubDirectory => { TagTable => 'Image::ExifTool::RIFF::UserText' },
      +    },
      +    tx_Unknown => { # (untested)
      +        Name => 'Text',
      +        Notes => 'streamed text, extracted when the ExtractEmbedded option is used',
      +    },
      +   'id3 ' => {
      +        Name => 'ID3',
      +        SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
      +    },        
       #
       # WebP-specific tags
       #
      -    EXIF => { # (WebP)
      +    EXIF => [{ # (WebP)
               Name => 'EXIF',
      +        Condition => '$$valPt =~ /^(II\x2a\0|MM\0\x2a)/',
               Notes => 'WebP files',
               SubDirectory => {
                   TagTable => 'Image::ExifTool::Exif::Main',
                   ProcessProc => \&Image::ExifTool::ProcessTIFF,
               },
      -    },
      +    },{ # (WebP) - have also seen with "Exif\0\0" header - PH
      +        Name => 'EXIF',
      +        Condition => '$$valPt =~ /^Exif\0\0(II\x2a\0|MM\0\x2a)/',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::Exif::Main',
      +            ProcessProc => \&Image::ExifTool::ProcessTIFF,
      +            Start => 6,
      +        },
      +    },{
      +        Name => 'UnknownEXIF',
      +        Binary => 1,
      +    }],
          'XMP ' => { #14 (WebP)
               Name => 'XMP',
               Notes => 'WebP files',
      @@ -674,16 +744,52 @@
           #  very unlikely, support for these is not yet implemented)
       );
       
      -# cue point labels (ref 15)
      -%Image::ExifTool::RIFF::Label = (
      +# Sampler chunk (ref 16)
      +%Image::ExifTool::RIFF::Sampler = (
           PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
           GROUPS => { 2 => 'Audio' },
           FORMAT => 'int32u',
      -    0 => 'LabelID',
      -    1 => {
      -        Name => 'LabelText',
      -        Format => 'string[$size-4]',
      +    0 => 'Manufacturer',
      +    1 => 'Product',
      +    2 => 'SamplePeriod',
      +    3 => 'MIDIUnityNote',
      +    4 => 'MIDIPitchFraction',
      +    5 => {
      +        Name => 'SMPTEFormat',
      +        PrintConv => {
      +            0 => 'none',
      +            24 => '24 fps',
      +            25 => '25 fps',
      +            29 => '29 fps',
      +            30 => '30 fps',
      +        },
      +    },
      +    6 => {
      +        Name => 'SMPTEOffset',
      +        Notes => 'HH:MM:SS:FF',
      +        ValueConv => q{
      +            my $str = sprintf('%.8x', $val);
      +            $str =~ s/(..)(..)(..)(..)/$1:$2:$3:$4/;
      +            return $str;
      +        },
           },
      +    7 => 'NumSampleLoops',
      +    8 => 'SamplerDataLen',
      +    9 => { Name => 'SamplerData', Format => 'undef[$size-40]', Binary => 1 },
      +);
      +
      +# Instrument chunk (ref 16)
      +%Image::ExifTool::RIFF::Instrument = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 2 => 'Audio' },
      +    FORMAT => 'int8s',
      +    0 => 'UnshiftedNote',
      +    1 => 'FineTune',
      +    2 => 'Gain',
      +    3 => 'LowNote',
      +    4 => 'HighNote',
      +    5 => 'LowVelocity',
      +    6 => 'HighVelocity',
       );
       
       # Sub chunks of INFO LIST chunk
      @@ -716,6 +822,7 @@
           ILGT => 'Lightness',
           IMED => 'Medium',
           INAM => 'Title',
      +    ITRK => 'TrackNumber',
           IPLT => 'NumColors',
           IPRD => 'Product',
           ISBJ => 'Subject',
      @@ -974,6 +1081,12 @@
                   Condition => '$$self{RIFFStreamType} eq "vids"',
                   SubDirectory => { TagTable => 'Image::ExifTool::BMP::Main' },
               },
      +        {
      +            Name => 'TextFormat',
      +            Condition => '$$self{RIFFStreamType} eq "txts"',
      +            Hidden => 1,
      +            RawConv => '$self->Options("ExtractEmbedded") or $self->WarnOnce("Use ExtractEmbedded option to extract timed text",3); undef',
      +        },
           ],
       );
       
      @@ -1004,7 +1117,7 @@
           0 => {
               Name => 'StreamType',
               Format => 'string[4]',
      -        RawConv => '$$self{RIFFStreamType} = $val',
      +        RawConv => '$$self{RIFFStreamNum} = ($$self{RIFFStreamNum} || 0) + 1; $$self{RIFFStreamType} = $val',
               PrintConv => {
                   auds => 'Audio',
                   mids => 'MIDI',
      @@ -1017,16 +1130,19 @@
               {
                   Name => 'AudioCodec',
                   Condition => '$$self{RIFFStreamType} eq "auds"',
      +            RawConv => '$$self{RIFFStreamCodec}[$$self{RIFFStreamNum}-1] = $val',
                   Format => 'string[4]',
               },
               {
                   Name => 'VideoCodec',
                   Condition => '$$self{RIFFStreamType} eq "vids"',
      +            RawConv => '$$self{RIFFStreamCodec}[$$self{RIFFStreamNum}-1] = $val',
                   Format => 'string[4]',
               },
               {
                   Name => 'Codec',
                   Format => 'string[4]',
      +            RawConv => '$$self{RIFFStreamCodec}[$$self{RIFFStreamNum}-1] = $val',
               },
           ],
         # 2 => 'StreamFlags',
      @@ -1222,6 +1338,55 @@
           },
       );
       
      +# streamed USER txts written by Momento M6 dashcam (ref PH)
      +%Image::ExifTool::RIFF::UserText = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 2 => 'Location' },
      +    NOTES => q{
      +        Tags decoded from the USER-format txts stream written by Momento M6 dashcam.
      +        Extracted only if the ExtractEmbedded option is used.
      +    },
      +    # (little-endian)
      +  #  0 - int32u: 32
      +  #  4 - int32u: sample number (starting from unknown offset)
      +  #  8 - int8u[4]: "w x y z" ? (w 0=front cam, 1=rear cam, z mostly 5-8)
      +  # 12 - int8u[4]: "0 x 1 0" ? (x incrementing once per second)
      +  # 16 - int8u[4]: "0 32 0 x" ?
      +  # 20 - int32u: 100-150(mostly), 250-300(once per second)
      +  # 24 - int8u[4]: "0 x y 0" ?
      +    28 => { Name => 'GPSAltitude', Format => 'int32u', ValueConv => '$val / 10' }, # (NC)
      +  # 32 - int32u: 0(mostly), 23(once per second)
      +  # 36 - int32u: 0
      +    40 => { Name => 'Accelerometer', Format => 'float[3]' },
      +  # 52 - int32u: 1
      +    56 => { Name => 'GPSSpeed',      Format => 'float' }, # km/h
      +    60 => {
      +        Name => 'GPSLatitude',
      +        Format => 'float',
      +        # Note: these values are unsigned and I don't know where the hemisphere is stored,
      +        # but my only sample is from the U.S., so assume a positive latitude (for now)
      +        ValueConv => 'my $deg = int($val / 100); $deg + ($val - $deg * 100) / 60',
      +        PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
      +    },
      +    64 => {
      +        Name => 'GPSLongitude',
      +        Format => 'float',
      +        # Note: these values are unsigned and I don't know where the hemisphere is stored,
      +        # but my only sample is from the U.S., so assume a negative longitude (for now)
      +        ValueConv => 'my $deg = int($val / 100); -($deg + ($val - $deg * 100) / 60)',
      +        PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
      +    },
      +    68 => {
      +        Name => 'GPSDateTime',
      +        Description => 'GPS Date/Time',
      +        Groups => { 2 => 'Time' },
      +        Format => 'int32u',
      +        ValueConv => 'ConvertUnixTime($val)',
      +        # (likely local time, but clock seemed off by 3 hours in my sample)
      +        PrintConv => '$self->ConvertDateTime($val)',
      +    },
      +);
      +
       # WebP alpha info (ref 14)
       %Image::ExifTool::RIFF::ALPH = (
           PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      @@ -1622,6 +1787,105 @@
       }
       
       #------------------------------------------------------------------------------
      +# Process Lucas streaming GPS information (Lucas LK-7900 Ace) (ref PH)
      +# Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
      +# Returns: 1 on success
      +sub ProcessLucas($$$)
      +{
      +    my ($et, $dirInfo, $tagTbl) = @_;
      +    my $dataPt = $$dirInfo{DataPt};
      +    my $dataLen = length $$dataPt;
      +
      +    unless ($et->Options('ExtractEmbedded')) {
      +        $et->Warn('Use ExtractEmbedded option to extract timed GPS', 3);
      +        return 1;
      +    }
      +    my %recLen = (  # record lengths (not including 4-byte ID)
      +        '0GDA' => 24,
      +        '0GPS' => 48,
      +    );
      +    my ($date,$time,$lat,$lon,$alt,$spd,$sat,$dop,$ew,$ns);
      +    $$et{SET_GROUP0} = $$et{SET_GROUP1} = 'RIFF';
      +    while ($$dataPt =~ /(0GDA|0GPS)/g) {
      +        my ($rec, $pos) = ($1, pos $$dataPt);
      +        $pos + $recLen{$rec} > $dataLen and $et->Warn("Truncated $1 record"), last;
      +        $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +        # records start with int64u sample date/time in ms since 1970
      +        $et->HandleTag($tagTbl, SampleDateTime => Get64u($dataPt, $pos) / 1000);
      +        if ($rec eq '0GPS') {
      +            my $len = Get32u($dataPt, $pos+8);
      +            my $endPos = $pos + $recLen{$rec} + $len;
      +            $endPos > $dataLen and $et->Warn('Truncated 0GPS record'), last;
      +            my $buff = substr($$dataPt, $pos+$recLen{$rec}, $len);
      +            while ($buff =~ /\$(GC|GA),(\d+),/g) {
      +                my $p = pos $buff;
      +                $time = $2;
      +                if ($1 eq 'GC') {
      +                    #     time   date   dist    ? sat dop alt  A
      +                    # $GC,052350,180914,0000955,1,08,1.1,0017,,A*45\x0d\x0a\0
      +                    if ($buff =~ /\G(\d+),\d*,\d*,(\d+),([-\d.]+),(\d+),\d*,A/g) {
      +                        ($date,$sat,$dop,$alt) = ($1,$2,$3,$4);
      +                    }
      +                } else {
      +                    #     time   A lat       lon        spd N W
      +                    # $GA,052351,A,0949.6626,07635.4439,049,N,E,*4C\x0d\x0a\0
      +                    if ($buff =~ /\GA,([\d.]+),([\d.]+),(\d+),([NS]),([EW])/g) {
      +                        ($lat,$lon,$spd,$ns,$ew) = ($1,$2,$3,$4,$5,$6);
      +                        # lat/long are in DDDMM.MMMM format
      +                        my $deg = int($lat / 100);
      +                        $lat = $deg + ($lat - $deg * 100) / 60;
      +                        $deg = int($lon / 100);
      +                        $lon = $deg + ($lon - $deg * 100) / 60;
      +                        $lat *= -1 if $ns eq 'S';
      +                        $lon *= -1 if $ew eq 'W';
      +                    }
      +                }
      +                # look ahead to next NMEA-like sentence, and store the fix
      +                # now only if the next sentence is not at the same time
      +                if ($buff !~ /\$(GC|GA),$time,/g) {
      +                    pos($$dataPt) = $endPos;
      +                    if ($$dataPt !~ /\$(GC|GA),(\d+)/ or $1 ne $time) {
      +                        $time =~ s/(\d{2})(\d{2})(\d{2})/$1:$2:$3Z/;
      +                        if ($date) {
      +                            $date =~ s/(\d{2})(\d{2})(\d{2})/20$3:$2:$1/;
      +                            $et->HandleTag($tagTbl, GPSDateTime => "$date $time");
      +                        } else {
      +                            $et->HandleTag($tagTbl, GPSTimeStamp => $time);
      +                        }
      +                        if (defined $lat) {
      +                            $et->HandleTag($tagTbl, GPSLatitude => $lat);
      +                            $et->HandleTag($tagTbl, GPSLongitude => $lon);
      +                            $et->HandleTag($tagTbl, GPSSpeed => $spd);
      +                        }
      +                        if (defined $alt) {
      +                            $et->HandleTag($tagTbl, GPSAltitude => $alt);
      +                            $et->HandleTag($tagTbl, GPSSatellites => $sat);
      +                            $et->HandleTag($tagTbl, GPSDOP => $dop);
      +                        }
      +                        undef $lat;
      +                        undef $alt;
      +                    }
      +                }
      +                pos($buff) = $p;
      +            }
      +            $pos += $len;
      +        } else { # this is an accelerometer (0GDA) record
      +            # record has 4 more int32s values (the last is always 57 or 58 --
      +            # maybe related to sample time in ms? -- not extracted)
      +            my @acc = unpack('x'.($pos+8).'V3', $$dataPt);
      +            # change to signed integer and divide by 256
      +            map { $_ = $_ - 4294967296 if $_ >= 0x80000000; $_ /= 256 } @acc;
      +            $et->HandleTag($tagTbl, Accelerometer => "@acc");
      +        }
      +        pos($$dataPt) = $pos + $recLen{$rec};
      +    }
      +    delete $$et{SET_GROUP0};
      +    delete $$et{SET_GROUP1};
      +    $$et{DOC_NUM} = 0;
      +    return 1;
      +}
      +
      +#------------------------------------------------------------------------------
       # Extract information from a RIFF file
       # Inputs: 0) ExifTool object reference, 1) DirInfo reference
       # Returns: 1 on success, 0 if this wasn't a valid RIFF file
      @@ -1632,6 +1896,7 @@
           my ($buff, $buf2, $type, $mime, $err, $rf64);
           my $verbose = $et->Options('Verbose');
           my $unknown = $et->Options('Unknown');
      +    my $ee = $et->Options('ExtractEmbedded');
       
           # verify this is a valid RIFF file
           return 0 unless $raf->Read($buff, 12) == 12;
      @@ -1649,7 +1914,8 @@
           $mime = $riffMimeType{$type} if $type;
           $et->SetFileType($type, $mime);
           $$et{VALUE}{FileType} .= ' (RF64)' if $rf64;
      -    $$et{RIFFStreamType} = '';    # initialize stream type
      +    $$et{RIFFStreamType} = '';      # initialize stream type
      +    $$et{RIFFStreamCodec} = [];     # initialize codec array
           SetByteOrder('II');
           my $tagTbl = GetTagTable('Image::ExifTool::RIFF::Main');
           my $pos = 12;
      @@ -1688,16 +1954,22 @@
               # stop when we hit the audio data or AVI index or AVI movie data
               # --> no more because Adobe Bridge stores XMP after this!!
               # (so now we only do this on the FastScan option)
      -        if (($tag eq 'data' or $tag eq 'idx1' or $tag eq 'LIST_movi') and
      -            $et->Options('FastScan'))
      +        if ($et->Options('FastScan') and ($tag eq 'data' or $tag eq 'idx1' or
      +            ($tag eq 'LIST_movi' and not $ee)))
               {
                   $et->VPrint(0, "(end of parsing)\n");
                   last;
               }
               # RIFF chunks are padded to an even number of bytes
               my $len2 = $len + ($len & 0x01);
      +        # change name of stream txts data depending on the Codec
      +        if ($ee and $tag =~ /^(\d{2})tx$/) {
      +            $tag = 'tx_' . ($$et{RIFFStreamCodec}[$1] || 'Unknown');
      +            $tag = "tx_Unknown" unless defined $$tagTbl{$tag};
      +            $$et{DOC_NUM} = ++$$et{DOC_COUNT};
      +        }
               my $tagInfo = $$tagTbl{$tag};
      -        if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF)$/)) {
      +        if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF|\d{2}(db|dc|wb))$/)) {
                   $raf->Read($buff, $len2) == $len2 or $err=1, last;
                   my $setGroups;
                   if ($tagInfo and ref $tagInfo eq 'HASH' and $$tagInfo{SetGroups}) {
      @@ -1715,11 +1987,14 @@
                       delete $$et{SET_GROUP0};
                       delete $$et{SET_GROUP1};
                   }
      +            delete $$et{DOC_NUM} if $ee;
               } elsif ($tag eq 'RIFF') {
                   # don't read into RIFF chunk (eg. concatenated video file)
                   $raf->Read($buff, 4) == 4 or $err=1, last;
                   # extract information from remaining file as an embedded file
                   $$et{DOC_NUM} = ++$$et{DOC_COUNT}
      +        } elsif ($tag eq 'LIST_movi' and $ee) {
      +            next; # parse into movi chunk
               } else {
                   if ($len > 0x7fffffff and not $et->Options('LargeFileSupport')) {
                       $et->Warn("Stopped parsing at large $tag chunk (LargeFileSupport not set)");
      @@ -1754,7 +2029,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/RSRC.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/RSRC.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/RSRC.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/RSRC.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -14,19 +14,22 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.08';
      +$VERSION = '1.09';
      +
      +sub ProcessRSRC($$);
       
       # Information decoded from Mac OS resources
       %Image::ExifTool::RSRC::Main = (
           GROUPS => { 2 => 'Document' },
      +    PROCESS_PROC => \&ProcessRSRC,
           NOTES => q{
      -        Tags extracted from Mac OS resource files and DFONT files.  These tags may
      -        also be extracted from the resource fork of any file in OS X, either by
      -        adding "/..namedfork/rsrc" to the filename to process the resource fork
      -        alone, or by using the L (-ee) option to process the resource
      -        fork as a sub-document of the main file.  When writing, ExifTool preserves
      -        the Mac OS resource fork by default, but it may deleted with C<-rsrc:all=>
      -        on the command line.
      +        Tags extracted from Mac OS resource files, DFONT files and "._" sidecar
      +        files.  These tags may also be extracted from the resource fork of any file
      +        in OS X, either by adding "/..namedfork/rsrc" to the filename to process the
      +        resource fork alone, or by using the L (-ee) option to process
      +        the resource fork as a sub-document of the main file.  When writing,
      +        ExifTool preserves the Mac OS resource fork by default, but it may deleted
      +        with C<-rsrc:all=> on the command line.
           },
           '8BIM' => {
               Name => 'PhotoshopInfo',
      @@ -66,6 +69,9 @@
           my $raf = $$dirInfo{RAF};
           my ($hdr, $map, $buff, $i, $j);
       
      +    # allow access with data reference
      +    $raf or $raf = new File::RandomAccess($$dirInfo{DataPt});
      +
           # attempt to validate the format as thoroughly as practical
           return 0 unless $raf->Read($hdr, 30) == 30;
           my ($datOff, $mapOff, $datLen, $mapLen) = unpack('N*', $hdr);
      @@ -81,7 +87,7 @@
           SetByteOrder('MM');
           my $typeOff = Get16u(\$map, 24);
           my $nameOff = Get16u(\$map, 26);
      -    my $numTypes = Get16u(\$map, 28);
      +    my $numTypes = (Get16u(\$map, 28) + 1) & 0xffff;
       
           # validate offsets in the resource map
           return 0 if $typeOff < 28 or $nameOff < 30;
      @@ -89,10 +95,10 @@
           $et->SetFileType('RSRC') unless $$et{IN_RESOURCE};
           my $verbose = $et->Options('Verbose');
           my $tagTablePtr = GetTagTable('Image::ExifTool::RSRC::Main');
      -    $et->VerboseDir('RSRC', $numTypes+1);
      +    $et->VerboseDir('RSRC', $numTypes);
       
           # parse resource type list
      -    for ($i=0; $i<=$numTypes; ++$i) {
      +    for ($i=0; $i<$numTypes; ++$i) {
               my $off = $typeOff + 2 + 8 * $i;    # offset of entry in type list
               last if $off + 8 > $mapLen;
               my $resType = substr($map,$off,4);  # resource type
      @@ -219,7 +225,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/RTF.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/RTF.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/RTF.pm	2020-02-14 12:21:51.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/RTF.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -15,7 +15,7 @@
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.03';
      +$VERSION = '1.04';
       
       sub ProcessUserProps($$$);
       
      @@ -181,12 +181,17 @@
                   if ($1 eq 'uc') {       # \ucN
                       $skip = $2;
                   } elsif ($1 eq 'u') {   # \uN
      -                require Image::ExifTool::Charset;
      -                $rtnVal .= Image::ExifTool::Charset::Recompose($et, [$2]);
      -                if ($skip) {
      -                    # must skip the specified number of characters
      -                    # (not simple because RTF control words count as a single character)
      -                    last unless $val =~ /\G([^\\]|\\([a-zA-Z]+)(-?\d+)? ?|\\'.{2}|\\.){$skip}/g;
      +                if ($2 < 0) {
      +                    $et->WarnOnce('Invalid Unicode character(s) in text');
      +                    $rtnVal .= '?';
      +                } else {
      +                    require Image::ExifTool::Charset;
      +                    $rtnVal .= Image::ExifTool::Charset::Recompose($et, [$2]);
      +                    if ($skip) {
      +                        # must skip the specified number of characters
      +                        # (not simple because RTF control words count as a single character)
      +                        last unless $val =~ /\G([^\\]|\\([a-zA-Z]+)(-?\d+)? ?|\\'.{2}|\\.){$skip}/g;
      +                    }
                       }
                   } elsif ($rtfEntity{$1}) {
                       require Image::ExifTool::Charset;
      @@ -361,7 +366,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Samsung.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Samsung.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Samsung.pm	2020-02-14 12:21:22.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Samsung.pm	2022-02-09 12:08:07.000000000 +0000
      @@ -22,12 +22,13 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::Exif;
       
      -$VERSION = '1.48';
      +$VERSION = '1.51';
       
       sub WriteSTMN($$$);
       sub ProcessINFO($$$);
       sub ProcessSamsungMeta($$$);
       sub ProcessSamsungIFD($$$);
      +sub ProcessSamsung($$$);
       
       # Samsung LensType lookup
       %samsungLensTypes = (
      @@ -453,6 +454,8 @@
           0xa018 => { #1
               Name => 'ExposureTime',
               Writable => 'rational64u',
      +        ValueConv => '$val=~s/ .*//; $val', # some models write 2 values here
      +        ValueConvInv => '$val',
               PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
               PrintConvInv => '$val',
           },
      @@ -460,6 +463,8 @@
               Name => 'FNumber',
               Priority => 0,
               Writable => 'rational64u',
      +        ValueConv => '$val=~s/ .*//; $val', # some models write 2 values here
      +        ValueConvInv => '$val',
               PrintConv => 'sprintf("%.1f",$val)',
               PrintConvInv => '$val',
           },
      @@ -940,13 +945,31 @@
       %Image::ExifTool::Samsung::Trailer = (
           GROUPS => { 0 => 'MakerNotes', 2 => 'Other' },
           VARS => { NO_ID => 1, HEX_ID => 0 },
      +    PROCESS_PROC => \&ProcessSamsung,
      +    PRIORITY => 0, # (first one takes priority so DepthMapWidth/Height match first DepthMapData)
           NOTES => q{
               Tags extracted from the trailer of JPEG images written when using certain
               features (such as "Sound & Shot" or "Shot & More") from Samsung models such
      -        as the Galaxy S4 and Tab S.
      +        as the Galaxy S4 and Tab S, and from the 'sefd' atom in HEIC images from the
      +        Samsung S10+.
           },
      -    '0x0001-name' => 'EmbeddedImageName', # ("DualShot_1","DualShot_2")
      -    '0x0001' => { Name => 'EmbeddedImage', Groups => { 2 => 'Preview' }, Binary => 1 },
      +    '0x0001-name' => {
      +        Name => 'EmbeddedImageName', # ("DualShot_1","DualShot_2")
      +        RawConv => '$$self{EmbeddedImageName} = $val',
      +    },
      +    '0x0001' => [
      +        {
      +            Name => 'EmbeddedImage',
      +            Condition => '$$self{EmbeddedImageName} eq "DualShot_1"',
      +            Groups => { 2 => 'Preview' },
      +            Binary => 1,
      +        },
      +        {
      +            Name => 'EmbeddedImage2',
      +            Groups => { 2 => 'Preview' },
      +            Binary => 1,
      +        },
      +    ],
           '0x0100-name' => 'EmbeddedAudioFileName', # ("SoundShot_000")
           '0x0100' => { Name => 'EmbeddedAudioFile', Groups => { 2 => 'Audio' }, Binary => 1 },
           '0x0201-name' => 'SurroundShotVideoName', # ("Interactive_Panorama_000")
      @@ -960,6 +983,8 @@
          # 0x08e0-name - seen 'Panorama_Shot_Info'
          # 0x08e0 - string, seen 'PanoramaShot'
          # 0x08e1-name - seen 'Motion_Panorama_Info'
      +   # 0x0910-name - seen 'Front_Cam_Selfie_Info'
      +   # 0x0910 - string, seen 'Front_Cam_Selfie_Info'
          # 0x09e0-name - seen 'Burst_Shot_Info'
          # 0x09e0 - string, seen '489489125'
          # 0x0a01-name - seen 'Image_UTC_Data'
      @@ -974,10 +999,24 @@
           '0x0a30-name' => 'EmbeddedVideoType', # ("MotionPhoto_Data")
           '0x0a30' => { Name => 'EmbeddedVideoFile', Groups => { 2 => 'Video' }, Binary => 1 }, #forum7161
          # 0x0aa1-name - seen 'MCC_Data'
      -   # 0x0aa1 - seen '234','222'
      +   # 0x0aa1 - seen '204','222','234','302','429'
      +    '0x0aa1' => 'MCCData', # (unknown meaning)
          # 0x0ab0-name - seen 'DualShot_Meta_Info'
      -    '0x0ab1-name' => 'DepthMapName', # seen 'DualShot_DepthMap_1' (SM-N950U)
      -    '0x0ab1' => { Name => 'DepthMapData', Binary => 1 },
      +    '0x0ab1-name' => {
      +        Name => 'DepthMapName',
      +        # seen 'DualShot_DepthMap_1' (SM-N950U), DualShot_DepthMap_5 (SM-G998W)
      +        RawConv => '$$self{DepthMapName} = $val',
      +    },
      +    '0x0ab1' => [
      +        {
      +            Name => 'DepthMapData',
      +            Condition => '$$self{DepthMapName} eq "DualShot_DepthMap_1"',
      +            Binary => 1,
      +        },{
      +            Name => 'DepthMapData2',
      +            Binary => 1,
      +        },
      +    ],
          # 0x0ab3-name - seen 'DualShot_Extra_Info' (SM-N950U)
           '0x0ab3' => { # (SM-N950U)
               Name => 'DualShotExtra',
      @@ -1012,7 +1051,8 @@
               Hook => q{
                   if ($size >= 96) {
                       my $tmp = substr($$dataPt, $pos, 64);
      -                if ($tmp =~ /\x01\0\xff\xff/g and not pos($tmp) % 4) {
      +                # (have seen 0x01,0x03 and 0x07)
      +                if ($tmp =~ /[\x01-\x09]\0\xff\xff/g and not pos($tmp) % 4) {
                           $$self{DepthMapTagPos} = pos($tmp);
                           $varSize += $$self{DepthMapTagPos} - 32;
                       }
      @@ -1271,6 +1311,10 @@
           my $unknown = $et->Options('Unknown');
           my ($buff, $buf2, $index, $offsetPos, $audioNOff, $audioSize);
       
      +    unless ($raf) {
      +        $raf = new File::RandomAccess($$dirInfo{DataPt});
      +        $et->VerboseDir('SamsungTrailer');
      +    }
           return 0 unless $raf->Seek(-6-$offset, 2) and $raf->Read($buff, 6) == 6 and
                           ($buff eq 'QDIOBS' or $buff eq "\0\0SEFT");
           my $endPos = $raf->Tell();
      @@ -1325,7 +1369,7 @@
               # save trailer position and length
               my $dataPos = $$dirInfo{DataPos} = $dirPos - $firstBlock;
               my $dirLen = $$dirInfo{DirLen} = $endPos - $dataPos;
      -        if (($verbose or $$et{HTML_DUMP}) and not $outfile) {
      +        if (($verbose or $$et{HTML_DUMP}) and not $outfile and $$dirInfo{RAF}) {
                   $et->DumpTrailer($dirInfo);
                   return 1 if $$et{HTML_DUMP};
               }
      @@ -1445,7 +1489,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Sanyo.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Sanyo.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Sanyo.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Sanyo.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -419,7 +419,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Scalado.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Scalado.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Scalado.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Scalado.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -128,7 +128,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Shift.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Shift.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Shift.pl	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Shift.pl	2022-01-12 22:51:57.000000000 +0000
      @@ -300,9 +300,12 @@
       #
           SplitTime($val, \@time) or return "Invalid time string ($val)";
           if (defined $time[0]) {
      +        return "Can't shift from year 0000" if $time[0] eq '0000';
               $mode = defined $time[3] ? 'DateTime' : 'Date';
           } elsif (defined $time[3]) {
               $mode = 'Time';
      +    } else {
      +        $mode = '';
           }
           # get number of digits after the seconds decimal point
           if (defined $time[5] and $time[5] =~ /\.(\d+)/) {
      @@ -629,7 +632,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Shortcuts.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Shortcuts.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Shortcuts.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Shortcuts.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -265,6 +265,15 @@
               'XMP',
               'ZoomedPreviewImage',
           ],
      +    'ls-l' => [
      +        'FilePermissions',
      +        'FileHardLinks',
      +        'FileUserID',
      +        'FileGroupID',
      +        'FileSize#',
      +        'FileModifyDate',
      +        'FileName',
      +    ],
       );
       
       #------------------------------------------------------------------------------
      @@ -332,7 +341,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Sigma.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Sigma.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Sigma.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Sigma.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -524,7 +524,6 @@
               Name => 'LensType',
               Condition => '$$self{MakerNoteSigmaVer} >= 3 and $format eq "string"',
               Notes => 'some newer models only',
      -        
               ValueConv => '$val =~ /^[0-9a-f]+$/i ? hex($val) : $val',
               # (truncate decimal part and convert hex)
               ValueConvInv => '$val=~s/\.\d+$//;$val=~/^0x/ and $val=hex($val);IsInt($val) ? sprintf("%x",$val) : $val',
      @@ -838,7 +837,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/SigmaRaw.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/SigmaRaw.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/SigmaRaw.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/SigmaRaw.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -16,7 +16,7 @@
       use Image::ExifTool qw(:DataAccess :Utils);
       use Image::ExifTool::Sigma;
       
      -$VERSION = '1.26';
      +$VERSION = '1.27';
       
       sub ProcessX3FHeader($$$);
       sub ProcessX3FDirectory($$$);
      @@ -427,36 +427,43 @@
                   $len -= 28;
       
                   # only rewrite full-sized JpgFromRaw (version 2.0, type 2, format 18)
      -            if ($buff =~ /^SECi\0\0\x02\0\x02\0\0\0\x12\0\0\0/ and
      -                $$et{ImageWidth} == unpack('x16V', $buff))
      -            {
      +            if ($buff =~ /^SECi\0\0\x02\0\x02\0\0\0\x12\0\0\0/) {
                       $raf->Read($buff, $len) == $len or return 'Error reading JpgFromRaw';
      -                # use same write directories as JPEG
      -                $et->InitWriteDirs('JPEG');
      -                # rewrite the embedded JPEG in memory
      -                my $newData;
      -                my %jpegInfo = (
      -                    Parent  => 'X3F',
      -                    RAF     => new File::RandomAccess(\$buff),
      -                    OutFile => \$newData,
      -                );
      -                $$et{FILE_TYPE} = 'JPEG';
      -                my $success = $et->WriteJPEG(\%jpegInfo);
      -                $$et{FILE_TYPE} = 'X3F';
      -                SetByteOrder('II');
      -                return 'Error writing X3F JpgFromRaw' unless $success and $newData;
      -                return -1 if $success < 0;
      -                # write new data if anything changed, otherwise copy old image
      -                my $outPt = $$et{CHANGED} ? \$newData : \$buff;
      -                Write($outfile, $$outPt) or return -1;
      -                # set $len to the total subsection data length
      -                $len = length($$outPt) + 28;
      -                $didContain = 1;
      +                if ($buff =~ /^\xff\xd8\xff\xe1/) { # does this preview contain EXIF?
      +                    # use same write directories as JPEG
      +                    $et->InitWriteDirs('JPEG');
      +                    # make sure we don't add APP0 JFIF because it would mess up our preview identification
      +                    delete $$et{ADD_DIRS}{APP0};
      +                    delete $$et{ADD_DIRS}{JFIF};
      +                    # rewrite the embedded JPEG in memory
      +                    my $newData;
      +                    my %jpegInfo = (
      +                        Parent  => 'X3F',
      +                        RAF     => new File::RandomAccess(\$buff),
      +                        OutFile => \$newData,
      +                    );
      +                    $$et{FILE_TYPE} = 'JPEG';
      +                    my $success = $et->WriteJPEG(\%jpegInfo);
      +                    $$et{FILE_TYPE} = 'X3F';
      +                    SetByteOrder('II');
      +                    return 'Error writing X3F JpgFromRaw' unless $success and $newData;
      +                    return -1 if $success < 0;
      +                    # (this shouldn't happen unless someone tries to delete the EXIF...)
      +                    return 'EXIF segment must come first in X3F JpgFromRaw' unless $newData =~ /^\xff\xd8\xff\xe1/;
      +                    # write new data if anything changed, otherwise copy old image
      +                    my $outPt = $$et{CHANGED} ? \$newData : \$buff;
      +                    Write($outfile, $$outPt) or return -1;
      +                    # set $len to the total subsection data length
      +                    $len = length($$outPt);
      +                    $didContain = 1;
      +                } else {
      +                    Write($outfile, $buff) or return -1;
      +                }
                   } else {
                       # copy original image data
                       Image::ExifTool::CopyBlock($raf, $outfile, $len) or return 'Corrupted X3F image';
      -                $len += 28;
                   }
      +            $len += 28;     # add back header length
               } else {
                   # copy data for this subsection
                   Image::ExifTool::CopyBlock($raf, $outfile, $len) or return 'Corrupted X3F directory';
      @@ -516,16 +523,18 @@
                   $raf->Read($buff, 28) == 28 or return 'Error reading PreviewImage header';
                   # ignore all image data but JPEG compressed (version 2.0, type 2, format 18)
                   next unless $buff =~ /^SECi\0\0\x02\0\x02\0\0\0\x12\0\0\0/;
      -            # check preview image size and extract full-sized preview as JpgFromRaw
      -            if ($$et{ImageWidth} == unpack('x16V', $buff)) {
      +            $offset += 28;
      +            $len -= 28;
      +            $raf->Read($buff, $len) == $len or return "Error reading PreviewImage data";
      +            # check fore EXIF segment, and extract this image as the JpgFromRaw
      +            if ($buff =~ /^\xff\xd8\xff\xe1/) {
                       $$et{IsJpgFromRaw} = 1;
                       $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
                       delete $$et{IsJpgFromRaw};
                   }
      -            $offset += 28;
      -            $len -= 28;
      +        } else {
      +            $raf->Read($buff, $len) == $len or return "Error reading $$tagInfo{Name} data";
               }
      -        $raf->Read($buff, $len) == $len or return "Error reading $$tagInfo{Name} data";
               my $subdir = $$tagInfo{SubDirectory};
               if ($subdir) {
                   my %dirInfo = ( DataPt => \$buff );
      @@ -591,8 +600,6 @@
               $buff .= $buf2;
           }
           my ($widPos, $hdrType) = $ver < 4 ? (28, 'Header') : (40, 'Header4');
      -    # extract ImageWidth for later
      -    $$et{ImageWidth} = Get32u(\$buff, $widPos);
           # process header information
           my $tagTablePtr = GetTagTable('Image::ExifTool::SigmaRaw::Main');
           unless ($outfile) {
      @@ -643,7 +650,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/SonyIDC.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/SonyIDC.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/SonyIDC.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/SonyIDC.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -379,7 +379,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Sony.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Sony.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Sony.pm	2020-02-14 12:20:45.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Sony.pm	2022-02-09 12:08:07.000000000 +0000
      @@ -34,7 +34,7 @@
       use Image::ExifTool::Exif;
       use Image::ExifTool::Minolta;
       
      -$VERSION = '3.21';
      +$VERSION = '3.49';
       
       sub ProcessSRF($$$);
       sub ProcessSR2($$$);
      @@ -71,14 +71,16 @@
          '0.12' => 'Zeiss Loxia 35mm F2',                 # (firmware Ver.01)
           1 => 'Sony LA-EA1 or Sigma MC-11 Adapter', # MC-11 with not-supported lenses
           2 => 'Sony LA-EA2 Adapter',
      -    3 => 'Sony LA-EA3 Adapter', #(NC) ILCE-7 image with A-mount lens, but also has 0x940e 2nd byte=2
      -    6 => 'Sony LA-EA4 Adapter', #(NC) ILCE-7R image with A-mount lens and having phase-detect info blocks in 0x940e AFInfo
      +    3 => 'Sony LA-EA3 Adapter',
      +    6 => 'Sony LA-EA4 Adapter',
      +    7 => 'Sony LA-EA5 Adapter', #JR
           # 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
           44 => 'Metabones Canon EF Smart Adapter', #JR
           78 => 'Metabones Canon EF Smart Adapter Mark III or Other Adapter', #PH/JR (also Mark IV, Fotodiox and Viltrox)
           184 => 'Metabones Canon EF Speed Booster Ultra', #JR ('Green' mode, LensMount reported as A-mount)
           234 => 'Metabones Canon EF Smart Adapter Mark IV', #JR (LensMount reported as A-mount)
           239 => 'Metabones Canon EF Speed Booster', #JR
      +    24593 => 'LA-EA4r MonsterAdapter',
                                                       # Sony VX product code: (http://www.mi-fo.de/forum/index.php?s=7df1c8d3b1cd675f2abf4f4442e19cf2&showtopic=35035&view=findpost&p=303746)
           32784 => 'Sony E 16mm F2.8',                # VX9100
           32785 => 'Sony E 18-55mm F3.5-5.6 OSS',     # VX9101
      @@ -141,7 +143,18 @@
           32852 => 'Sony FE 600mm F4 GM OSS', #IB
           32853 => 'Sony E 16-55mm F2.8 G', #IB/JR
           32854 => 'Sony E 70-350mm F4.5-6.3 G OSS', #IB/JR
      +    32855 => 'Sony FE C 16-35mm T3.1 G', #JR (SELC1635G) (max aperture is 2.8)
           32858 => 'Sony FE 35mm F1.8', #JR/IB
      +    32859 => 'Sony FE 20mm F1.8 G', #IB/JR
      +    32860 => 'Sony FE 12-24mm F2.8 GM', #JR/IB
      +    32862 => 'Sony FE 50mm F1.2 GM', #IB/JR
      +    32863 => 'Sony FE 14mm F1.8 GM', #IB
      +    32864 => 'Sony FE 28-60mm F4-5.6', #JR
      +    32865 => 'Sony FE 35mm F1.4 GM', #IB/JR
      +    32866 => 'Sony FE 24mm F2.8 G', #IB
      +    32867 => 'Sony FE 40mm F2.5 G', #IB
      +    32868 => 'Sony FE 50mm F2.5 G', #IB
      +    32874 => 'Sony FE 70-200mm F2.8 GM OSS II', #IB
       
         # (comment this out so LensID will report the LensModel, which is more useful)
         # 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
      @@ -178,7 +191,19 @@
           49459 => 'Tamron 35mm F2.8 Di III OSD M1:2', #IB (Model F053)
           49460 => 'Tamron 24mm F2.8 Di III OSD M1:2', #JR (Model F051)
           49461 => 'Tamron 20mm F2.8 Di III OSD M1:2', #JR (Model F050)
      -
      +    49462 => 'Tamron 70-180mm F2.8 Di III VXD', #JR (Model A056)
      +    49463 => 'Tamron 28-200mm F2.8-5.6 Di III RXD', #JR (Model A071)
      +    49464 => 'Tamron 70-300mm F4.5-6.3 Di III RXD', #JR (Model A047)
      +    49465 => 'Tamron 17-70mm F2.8 Di III-A VC RXD', #JR (Model B070)
      +    49466 => 'Tamron 150-500mm F5-6.7 Di III VC VXD', #JR (Model A057)
      +    49467 => 'Tamron 11-20mm F2.8 Di III-A RXD', #JR (Model B060)
      +    49468 => 'Tamron 18-300mm F3.5-6.3 Di III-A VC VXD', #JR (Model B061)
      +    49469 => 'Tamron 35-150mm F2-F2.8 Di III VXD', #JR (Model A058)
      +    49470 => 'Tamron 28-75mm F2.8 Di III VXD G2', #JR (Model A063)
      +
      +    49473 => 'Tokina atx-m 85mm F1.8 FE or Viltrox lens', #JR
      +    49473.1 => 'Viltrox 23mm F1.4 E', #JR
      +    49473.2 => 'Viltrox 56mm F1.4 E', #JR
           49712 => 'Tokina FiRIN 20mm F2 FE AF',       # (firmware Ver.01)
           49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
       
      @@ -207,7 +232,19 @@
           50515 => 'Sigma 35mm F1.2 DG DN | A', #IB/JR (019)
           50516 => 'Sigma 14-24mm F2.8 DG DN | A', #IB/JR (019)
           50517 => 'Sigma 24-70mm F2.8 DG DN | A', #JR (019)
      -
      +    50518 => 'Sigma 100-400mm F5-6.3 DG DN OS | C', #JR (020)
      +    50521 => 'Sigma 85mm F1.4 DG DN | A', #JR (020)
      +    50522 => 'Sigma 105mm F2.8 DG DN MACRO | A', #JR (020)
      +    50523 => 'Sigma 65mm F2 DG DN | C', #IB (020)
      +    50524 => 'Sigma 35mm F2 DG DN | C', #IB (020)
      +    50525 => 'Sigma 24mm F3.5 DG DN | C', #JR (021)
      +    50526 => 'Sigma 28-70mm F2.8 DG DN | C', #JR (021)
      +    50527 => 'Sigma 150-600mm F5-6.3 DG DN OS | S', #JR (021)
      +    50528 => 'Sigma 35mm F1.4 DG DN | A', #IB/JR (021)
      +    50529 => 'Sigma 90mm F2.8 DG DN | C', #JR (021)
      +    50530 => 'Sigma 24mm F2 DG DN | C', #JR (021)
      +    50531 => 'Sigma 18-50mm F2.8 DC DN | C', #IB/JR (021)
      + 
           50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
           50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
           50994 => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB
      @@ -219,18 +256,28 @@
           51000 => 'Voigtlander NOKTON 50mm F1.2 Aspherical', #JR
           51001 => 'Voigtlander NOKTON 21mm F1.4 Aspherical', #JR
           51002 => 'Voigtlander APO-LANTHAR 50mm F2 Aspherical', #JR
      +    51003 => 'Voigtlander NOKTON 35mm F1.2 Aspherical SE', #JR
      +    51006 => 'Voigtlander APO-LANTHAR 35mm F2 Aspherical', #JR
       
           # lenses listed in the Sigma MC-11 list, but not yet seen:
           # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
           # 504xx => 'Sigma 30mm F1.4 DC HSM | A + MC-11', # (013)
       
      +    # Note: For Samyang lenses, the "FE" designation isn't written to
      +    # EXIF:LensModel, so it isn't included in these strings either - JR/PH
           51504 => 'Samyang AF 50mm F1.4', #IB
           51505 => 'Samyang AF 14mm F2.8 or Samyang AF 35mm F2.8', #forum3833
           51505.1 => 'Samyang AF 35mm F2.8', #PH (also 32794)
           51507 => 'Samyang AF 35mm F1.4', #IB
           51508 => 'Samyang AF 45mm F1.8',
      -    51510 => 'Samyang AF 18mm F2.8', #JR
      -
      +    51510 => 'Samyang AF 18mm F2.8 or Samyang AF 35mm F1.8', #JR
      +    51510.1 => 'Samyang AF 35mm F1.8', #JR
      +    51512 => 'Samyang AF 75mm F1.8', #IB/JR
      +    51513 => 'Samyang AF 35mm F1.8', #JR
      +    51514 => 'Samyang AF 24mm F1.8', #IB
      +    51515 => 'Samyang AF 12mm F2.0', #JR
      +    51516 => 'Samyang AF 24-70mm F2.8', #JR
      +    51517 => 'Samyang AF 50mm F1.4 II', #JR
       );
       
       # ExposureProgram values (ref PH, mainly decoded from A200)
      @@ -605,9 +652,10 @@
                   3 => 'Standard',
                   4 => 'Economy',
                   5 => 'Extra Fine',
      -            6 => 'RAW + JPEG',
      +            6 => 'RAW + JPEG/HEIF',
                   7 => 'Compressed RAW',
                   8 => 'Compressed RAW + JPEG',
      +            9 => 'Light', #JR
                   0xffffffff => 'n/a', #PH (SLT-A57 panorama)
               },
           },
      @@ -950,7 +998,8 @@
               # unknown offsets or values for DSC-HX60V/HX350/HX400V/QX10/QX30/QX100/RX10/RX100M2/RX100M3/WX220/WX350,
               #                               ILCA-68/77M2, ILCE-5000/5100/6000/7/7M2/7R/7S/QX1, Stellar2, Lusso
               # unknown offsets or values for DSC-HX80/HX90V/RX0/RX1RM2/RX10M2/RX10M3/RX100M4/RX100M5/WX500, ILCE-6300/6500/7RM2/7SM2, ILCA-99M2
      -        # unknown offsets or values for ILCE-6100/6400/6600/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M6/RX100M5A/RX100M7/HX99
      +        # unknown offsets or values for ILCE-6100/6400/6600/7C/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M6/RX100M5A/RX100M7/HX99
      +        # July 2020: ILCE-7SM3 doesn't write this tag anymore
           {
               Name => 'Tag2010a', # ad
               Condition => '$$self{Model} =~ /^NEX-5N$/',
      @@ -991,7 +1040,7 @@
               SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010h' },
           },{
               Name => 'Tag2010i', # ?
      -        Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2))\b/',
      +        Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2)|ZV-(1|E10))\b/',
               SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010i' },
           },{
               Name => 'Tag_0x2010',
      @@ -1099,7 +1148,7 @@
                   },
               },{
                   Name => 'AFAreaModeSetting',
      -            Condition => '$$self{Model} =~ /^(NEX-|ILCE-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
      +            Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
                   Notes => 'NEX, ILCE and some DSC models',
                   RawConv => '$$self{AFAreaILCE} = $val',
                   DataMember => 'AFAreaILCE',
      @@ -1135,7 +1184,7 @@
               # observed values in range (0 0) to (640 480), with center (320 240) often seen
               # for NEX-5R/6, positions appear to be in an 11x9 grid
               Name => 'FlexibleSpotPosition',
      -        Condition => '$$self{Model} =~ /^(NEX-|ILCE-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
      +        Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
               Writable => 'int16u',
               Count => 2,
               Notes => q{
      @@ -1150,7 +1199,7 @@
               # doesn't seem to apply to DSC models (always 0)
               Name => 'AFPointSelected',
               Condition => q{
      -            ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^ILCE-/ and
      +            ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^(ILCE-|ILME-)/ and
                   defined $$self{AFAreaILCE} and  $$self{AFAreaILCE} == 4)
               },
               Notes => 'SLT models or ILCE with LA-EA2/EA4',
      @@ -1228,7 +1277,7 @@
               Name => 'AFPointSelected',
               # non-zero only when AFAreaMode is 'Zone', and 'Expanded-Flexible-Spot' for ILCE-6300/7RM2/7SM2
               # each Zone has 3x3 AF Areas --> 9 positions within 5x5 total Contrast AF Areas
      -        Condition => '$$self{Model} =~ /^(NEX-|ILCE-)/',
      +        Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-)/',
               Notes => 'NEX and ILCE models',
               Writable => 'int8u',
               PrintConv => {
      @@ -1376,6 +1425,7 @@
                   '1 0' => 'Off',
                   '1 1' => 'Standard',
                   '1 2' => 'High',
      +            '65535 65535' => 'n/a', # ILCE-7SM3
               },
           },
           0x2029 => { # uncompressed 14-bit RAW file type setting introduced 2015
      @@ -1384,6 +1434,8 @@
               PrintConv => {
                   0 => 'Compressed RAW',
                   1 => 'Uncompressed RAW',
      +            2 => 'Lossless Compressed RAW', #JR (NC) seen for ILCE-1
      +           65535 => 'n/a', # seen for ILCE-7SM3 JPEG-only
               },
           },
           # 0x202a - first seen for ILCE-6300: 66 bytes
      @@ -1419,7 +1471,7 @@
               },
           },
           0x202d => { #JR first seen for ILCA-99M2, ILCE-6500, DSC-RX100M5
      -        Name => 'ExposureStandardAdjustment', # (NC)
      +        Name => 'ExposureStandardAdjustment',
               Writable => 'rational64s',
               PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
               PrintConvInv => '$val',
      @@ -1430,13 +1482,15 @@
               Count => 2,
               PrintConv => {
                   '0 0' => 'n/a',
      -            '0 1' => 'Standard JPEG',
      -            '0 2' => 'Fine JPEG',
      -            '0 3' => 'Extra Fine JPEG',
      +            '0 1' => 'Standard',
      +            '0 2' => 'Fine',
      +            '0 3' => 'Extra Fine',
      +            '0 4' => 'Light', #JR
                   '1 0' => 'RAW',
      -            '1 1' => 'RAW + Standard JPEG',
      -            '1 2' => 'RAW + Fine JPEG',
      -            '1 3' => 'RAW + Extra Fine JPEG',
      +            '1 1' => 'RAW + Standard',
      +            '1 2' => 'RAW + Fine',
      +            '1 3' => 'RAW + Extra Fine',
      +            '1 4' => 'RAW + Light', #JR
               },
           },
           0x202f => { #JR (ILCE-7RM3)
      @@ -1457,7 +1511,7 @@
                   my ($a,$b,$c,$d) = split ' ', $val;
                   my @a = $a =~ /../g;
                   return undef unless @a == 4;
      -            return Set32u((hex($d)<<22) | ($a[0]<<17) | ($a[1]<<12) | ($a[2]<<6) | $a[3]) . chr($b) . chr($c);
      +            return Set32u((hex($d)<<22) | ($a[0]<<17) | ($a[1]<<12) | ($a[2]<<6) | $a[3]) . chr($b & 0xff) . chr($c & 0xff);
               },
               PrintConv => {
                   '00000000 0 0 0x0' => 'n/a',
      @@ -1482,6 +1536,58 @@
               PrintConv => 'sprintf("%.8d",$val)',
               PrintConvInv => '$val',
           },
      +# 0x2032 - 0x2039: from July 2020 for ILCE-7SM3, ILCE-1, ILME-FX3 and newer
      +    0x2032 => {
      +        Name => 'Shadows',
      +        Writable => 'int32s',
      +        PrintConv => '$val > 0 ? "+$val" : $val',
      +        PrintConvInv => '$val',
      +    },
      +    0x2033 => {
      +        Name => 'Highlights',
      +        Writable => 'int32s',
      +        PrintConv => '$val > 0 ? "+$val" : $val',
      +        PrintConvInv => '$val',
      +    },
      +    0x2034 => {
      +        Name => 'Fade',
      +        Writable => 'int32s',
      +        PrintConv => '$val > 0 ? "+$val" : $val',
      +        PrintConvInv => '$val',
      +    },
      +    0x2035 => {
      +        Name => 'SharpnessRange',
      +        Writable => 'int32s',
      +        PrintConv => '$val > 0 ? "+$val" : $val',
      +        PrintConvInv => '$val',
      +    },
      +    0x2036 => {
      +        Name => 'Clarity',
      +        Writable => 'int32s',
      +        PrintConv => '$val > 0 ? "+$val" : $val',
      +        PrintConvInv => '$val',
      +    },
      +    0x2037 => {
      +        Name => 'FocusFrameSize',
      +        Format => 'int16u',
      +        Count => '3',
      +        Notes => 'width and height of FocusFrame, centered on FocusLocation',
      +        PrintConv => q{
      +            my @a = split ' ', $val;
      +            return $a[2] ? sprintf('%3dx%3d', $a[0], $a[1]) : 'n/a';
      +        },
      +        PrintConvInv => '$val =~ /(\d+)x(\d+)/ ? "$1 $2 257" : "0 0 0"',
      +    },
      +    0x2039 => { #JR
      +        Name => 'JPEG-HEIFSwitch', # (name used in camera menus)
      +        Writable => 'int16u',
      +        PrintConv => {
      +            0 => 'JPEG',
      +            1 => 'HEIF',
      +            65535 => 'n/a',
      +        },
      +    },
      +# 0x203a - 0x2041: first seen October 2021 for ILCE-7M4
           0x3000 => {
               Name => 'ShotInfo',
               SubDirectory => { TagTable => 'Image::ExifTool::Sony::ShotInfo' },
      @@ -1510,19 +1616,26 @@
           # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
           {
               Name => 'Tag9050a',
      -        Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(6100|6300|6400|6500|6600|7M3|7RM2|7RM3|7RM4|7SM2|9|9M2)|ILCA-99M2)/',
      +        Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
               SubDirectory => {
                   TagTable => 'Image::ExifTool::Sony::Tag9050a',
                   ByteOrder => 'LittleEndian',
               },
           },{
               Name => 'Tag9050b',
      -        Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7M3|7RM2|7RM3|7RM4|7SM2|9|9M2)|ILCA-99M2)/',
      +        Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3A?|7RM4A?|7SM2|9|9M2)|ILCA-99M2|ZV-E10)/',
               SubDirectory => {
                   TagTable => 'Image::ExifTool::Sony::Tag9050b',
                   ByteOrder => 'LittleEndian',
               },
           },{
      +        Name => 'Tag9050c',
      +        Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)/',
      +        SubDirectory => {
      +            TagTable => 'Image::ExifTool::Sony::Tag9050c',
      +            ByteOrder => 'LittleEndian',
      +        },
      +    },{
               Name => 'Sony_0x9050',
               %unknownCipherData,
           }],
      @@ -1536,8 +1649,9 @@
           # 0x23 (e) for DSC-RX10/HX60V/HX350/HX400V/WX220/WX350, ILCE-7/7R/5000/6000, ILCA-68/77M2
           # 0x24 (e) for ILCA-99M2,ILCE-5100/6300/6500/7M2/7RM2/7S/7SM2/QX1, DSC-HX80/HX90V/QX30/RX0/RX100M3/RX100M4/RX100M5/RX10M2/RX10M3/RX1RM2/WX500
           # 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99
      -    # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7
      -    # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28 respectively
      +    # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1/E10
      +    # 0x31 (e) for ILCE-1/7SM3, ILME-FX3
      +    # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106 respectively
           {
               Name => 'Tag9400a',
               Condition => q{
      @@ -1551,7 +1665,7 @@
               SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400b' },
           },{
               Name => 'Tag9400c',
      -        Condition => '$$valPt =~ /^[\x23\x24\x26\x28]/',
      +        Condition => '$$valPt =~ /^[\x23\x24\x26\x28\x31]/',
               SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400c' },
           },{
               Name => 'Sony_0x9400',
      @@ -1675,7 +1789,8 @@
           # 13  0    9  2  2     DSC-QX10/QX100/RX100M2
           # 15  0   35  2  2     ILCA-68/77M2, ILCE-5000/5100/6000/7/7R/7S/7M2/QX1, DSC-HX60V/HX350/HX400V/QX30/RX10/RX100M3/WX220/WX350
           # 16  0   85  2  2     DSC-HX80/HX90V/WX500
      -    # 17  0  232  1  2     DSC-RX0/RX0M2/RX1RM2/RX10M2/RX10M3/RX10M4/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/HX99, ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2, ILCA-99M2
      +    # 17  0  232  1  2     DSC-RX0/RX0M2/RX1RM2/RX10M2/RX10M3/RX10M4/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/HX99, ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2, ILCA-99M2, ZV-1
      +    # 18  0   20  0 164    ILCE-7SM3 
           # other values for Panorama images and several other models
           0x9404 => [{
               Name => 'Tag9404a',
      @@ -1709,7 +1824,8 @@
           # 142 var  (0x25 =  37 var enc.) DSC-HX80/HX90V/RX1RM2/RX10M2/RX10M3/RX100M4/WX500, ILCE-6300/7RM2/7SM2
           # 144 var  (0xe1 = 225 var enc.) DSC-RX100M5
           # 145 var  (0x76 = 118 var enc.) ILCA-99M2, ILCE-6500, DSC-RX0
      -    # 163 var  (0x8b = 139 var enc.) ILCE-6100/6400/6600/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/RX100M7/HX99
      +    # 163 var  (0x8b = 139 var enc.) ILCE-6100/6400/6600/7C/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/RX100M7/HX99, ZV-1/E10
      +    # July 2020: ILCE-7SM3 doesn't write this tag anymore, but writes 0x9416
           0x9405 => [{
               Name => 'Tag9405a',
               # first byte must be 0x1b or 0x40 or 0x7d
      @@ -1762,7 +1878,7 @@
           },
           0x940c => [{
               Name => 'Tag940c',
      -        Condition => '$$self{Model} =~ /^(NEX-|ILCE-|Lunar)\b/',
      +        Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|Lunar|ZV-E10)\b/',
               SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag940c' },
           },{
               Name => 'Sony_0x940c',
      @@ -1796,6 +1912,10 @@
               %unknownCipherData,
               # 0x02 - int32u?: 1,3,5,7,9 (A77)
           },
      +    0x9416 => { # replaces 0x9405 for the Sony ILCE-7SM3, from July 2020
      +        Name => 'Sony_0x9416',
      +        SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9416' },
      +    },
           0xb000 => { #8
               Name => 'FileFormat',
               Writable => 'int8u',
      @@ -1818,6 +1938,7 @@
                   '3 3 2 0' => 'ARW 2.3.2', #JR (DSC-RX1RM2,ILCE-7SM2 - support for uncompressed 14-bit RAW)
                   '3 3 3 0' => 'ARW 2.3.3', #JR (ILCE-9)
                   '3 3 5 0' => 'ARW 2.3.5', #JR (DSC-HX99)
      +            '4 0 0 0' => 'ARW 4.0', # (ILCE-7SM3)
                   # what about cRAW images?
               },
           },
      @@ -1911,10 +2032,19 @@
                   376 => 'ILCE-9M2', #JR
                   378 => 'ILCE-6600', #IB/JR
                   379 => 'ILCE-6100', #IB/JR
      +            380 => 'ZV-1', #JR
      +            381 => 'ILCE-7C', #JR
      +            382 => 'ZV-E10', #JR
      +            383 => 'ILCE-7SM3',
      +            384 => 'ILCE-1', #PH
      +            385 => 'ILME-FX3', #JR
      +            386 => 'ILCE-7RM3A', #JR
      +            387 => 'ILCE-7RM4A', #forum12542
      +            388 => 'ILCE-7M4', #IB/JR
               },
           },
           0xb020 => { #2
      -        Name => 'CreativeStyle',
      +        Name => 'CreativeStyle', # (called CreativeLook by the 7SM3, ref JR)
               Writable => 'string',
               # (all of these values have been observed, ref JR and PH)
               # - this PrintConv is included to make these strings consistent with
      @@ -1938,6 +2068,12 @@
                   Light       => 'Light',
                   Autumnleaves=> 'Autumn Leaves',
                   Sepia       => 'Sepia',
      +            # new for the ILCE-7SM3 (ref JR)
      +            VV2 => 'Vivid 2',  # (NC)
      +            FL => 'FL', # "moody finish with sharp contrast and calm coloring as well as the impressive sky and colors of the greens"
      +            IN => 'IN', # "matte textures by suppressing the contrast and saturation"
      +            SH => 'SH', # "bright, transparent, soft, and vivid mood"
      +            # (...also Custom Look 1-6, but don't konw the values)
               },
           },
           0xb021 => { #2
      @@ -6014,11 +6150,17 @@
               29 => 'Gamma ITU709 (800%)',
               31 => 'Gamma S-Log3 (PP8 or PP9)', #14
               33 => 'Gamma HLG2 (PP10)', #14
      +        34 => 'Gamma HLG3', #IB
      +        37 => 'FL',
      +        38 => 'VV2',
      +        39 => 'IN',
      +        40 => 'SH',
           },
       );
       my %isoSetting2010 = (
            0 => 'Auto',
            5 => 25,
      +     7 => 40,
            8 => 50,
            9 => 64,
           10 => 80,
      @@ -6047,12 +6189,17 @@
           33 => 16000,
           34 => 20000,
           35 => 25600,
      +    36 => 32000,
      +    37 => 40000,
           38 => 51200,
           39 => 64000,
      +    40 => 80000,
           41 => 102400,
           42 => 128000,
           43 => 160000,
           44 => 204800,
      +    45 => 256000,
      +    46 => 320000,
           47 => 409600,
       );
       
      @@ -6810,7 +6957,7 @@
           CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
           FORMAT => 'int8u',
           NOTES => q{
      -        Valid for ILCE-6100/6400/6600/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M6/
      +        Valid for ILCE-6100/6400/6600/7C/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M6/
               RX100M5A/RX100M7/HX99.
           },
           WRITABLE => 1,
      @@ -7391,7 +7538,7 @@
           CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
           FORMAT => 'int8u',
           NOTES => q{
      -        Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/
      +        Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/
               7SM2/9/9M2, ILCA-99M2.
           },
           WRITABLE => 1,
      @@ -7480,13 +7627,13 @@
       # March 2019: ILCE-9 with v5.0x firmware follows ILCE-6400 in many tags ...
           0x0050 => {
               Name => 'ShutterCount2',
      -        Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(6100|6400|6600|7RM4|9M2))/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/)',
      +        Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4A?|9M2)|ZV-E10)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/)',
               Format => 'int32u',
               RawConv => '$val & 0x00ffffff',
           },
           0x0052 => {
               Name => 'ShutterCount2',
      -        Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(7M3|7RM3))/)',
      +        Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(7M3|7RM3A?))/)',
               Format => 'int32u',
               RawConv => '$val & 0x00ffffff',
           },
      @@ -7497,13 +7644,13 @@
       # 0x0058, 0x0061:  E-Mount: ShutterCount and dateTime
           0x0058 => { # appears not valid when flash is used ... not for ILCA-99M2
               Name => 'ShutterCount2',
      -        Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9M2))/) and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
      +        Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2)|ZV-E10)/) and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
               Format => 'int32u',
               RawConv => '$val & 0x00ffffff',
           },
           0x0061 => { # only minutes-seconds, not for ILCA-99M2, ILCE-9
               Name => 'SonyTimeMinSec',
      -        Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9|9M2))/',
      +        Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
               Format => 'undef[2]',
               ValueConv => q{
                   my @v = unpack('C*', $val);
      @@ -7512,17 +7659,17 @@
           },
           0x006b => {
               Name => 'ReleaseMode2',
      -        Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7RM4|9M2))/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
      +        Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4A?|9M2)|ZV-E10)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
               %releaseMode2,
           },
           0x006d => {
               Name => 'ReleaseMode2',
      -        Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3))/',
      +        Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3A?))/',
               %releaseMode2,
           },
           0x0073 => {
               Name => 'ReleaseMode2',
      -        Condition => '$$self{Model} !~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9M2))/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
      +        Condition => '$$self{Model} !~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2)|ZV-E10)/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
               %releaseMode2,
           },
           0x0088 => {
      @@ -7601,7 +7748,7 @@
       #
           0x019f => {
               Name => 'ShutterCount3',
      -        Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9|9M2))\b/',
      +        Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)\b/',
               Format => 'int32u',
               RawConv => '$val == 0 ? undef : $val',
           },
      @@ -7619,7 +7766,7 @@
           },
           0x01eb => {
               Name => 'APS-CSizeCapture',
      -        Condition => '$$self{Model} =~ /^ILCE-(7RM4|9M2)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
      +        Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)|ZV-E10/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
               PrintConv => {
                   0 => 'Off',
                   1 => 'On',
      @@ -7627,7 +7774,7 @@
           },
           0x01ed => {
               Name => 'LensSpecFeatures',
      -        Condition => '$$self{Model} =~ /^ILCE-(7RM4|9M2)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
      +        Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)|ZV-E10/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
               Priority => 0,
               Format => 'undef[2]',
               ValueConv => 'join " ", unpack "H2H2", $val',
      @@ -7640,7 +7787,7 @@
           },
           0x01ee => {
               Name => 'APS-CSizeCapture',
      -        Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
      +        Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3A?|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
               PrintConv => {
                   0 => 'Off',
                   1 => 'On',
      @@ -7648,7 +7795,7 @@
           },
           0x01f0 => {
               Name => 'LensSpecFeatures',
      -        Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
      +        Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3A?|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
               Priority => 0,
               Format => 'undef[2]',
               ValueConv => 'join " ", unpack "H2H2", $val',
      @@ -7723,6 +7870,111 @@
           },
       );
       
      +%Image::ExifTool::Sony::Tag9050c = ( #JR
      +    PROCESS_PROC => \&ProcessEnciphered,
      +    WRITE_PROC => \&WriteEnciphered,
      +    CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
      +    FORMAT => 'int8u',
      +    NOTES => q{
      +        Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
      +    },
      +    WRITABLE => 1,
      +    FIRST_ENTRY => 0,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
      +    DATAMEMBER => [ 0x0039 ],
      +    0x0026 => {
      +        Name => 'Shutter',
      +        Format => 'int16u[3]',
      +        PrintConv => {
      +            '0 0 0'  => 'Silent / Electronic (0 0 0)',
      +            OTHER => sub {
      +                my ($val, $inv) = @_;
      +                return $inv ? ($val=~/\((.*?)\)/ ? $1 : undef) : "Mechanical ($val)";
      +            },
      +        },
      +    },
      +    0x0039 => {
      +        Name => 'FlashStatus',
      +        RawConv => '$$self{FlashFired} = $val',
      +        PrintConv => {
      +            0 => 'No Flash present',
      +            2 => 'Flash Inhibited',           # seen for ILCE-7/7R continuous, panorama, HDR mode
      +            64 => 'Built-in Flash present',
      +            65 => 'Built-in Flash Fired',
      +            66 => 'Built-in Flash Inhibited', # seen for panorama, HDR, burst mode
      +            128 => 'External Flash present',  # seen for NEX-5N/5T
      +            129 => 'External Flash Fired',    # seen for SLT-A99V, ILCE-7R, NEX-5N/5R
      +        },
      +    },
      +    0x003a => {
      +        Name => 'ShutterCount',
      +        # or "ShutterCount"? : number of shutter actuations, does not increase during Silent Shooting,
      +        # at least for ILCE-7RM2
      +        Format => 'int32u',
      +        Notes => 'total number of image exposures made by the camera',
      +        RawConv => '$val & 0x00ffffff',
      +        PrintConv => 'sprintf("%6d",$val)',
      +    },
      +    0x0046 => { # appr. same value as Exif ExposureTime, but longer in HDR-modes
      +        Name => 'SonyExposureTime',
      +        Format => 'int16u',
      +        ValueConv => '$val ? 2 ** (16 - $val/256) : 0',
      +        ValueConvInv => '$val ? int((16 - log($val) / log(2)) * 256 + 0.5) : 0',
      +        PrintConv => '$val ? Image::ExifTool::Exif::PrintExposureTime($val) : "Bulb"',
      +        PrintConvInv => 'lc($val) eq "bulb" ? 0 : Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    0x0048 => {
      +        Name => 'SonyFNumber',
      +        Format => 'int16u',
      +        ValueConv => '2 ** (($val/256 - 16) / 2)',
      +        ValueConvInv => '(log($val)*2/log(2)+16)*256',
      +        PrintConv => 'sprintf("%.1f",$val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x004b => {
      +        Name => 'ReleaseMode2',
      +        %releaseMode2,
      +    },
      +    0x0050 => {
      +        Name => 'ShutterCount2',
      +        Condition => '($$self{FlashFired} & 0x01) != 1',
      +        Format => 'int32u',
      +        RawConv => '$val & 0x00ffffff',
      +    },
      +    0x0066 => { # appr. same value as Exif ExposureTime, but not valid in HDR-modes
      +        Name => 'SonyExposureTime',
      +        Format => 'int16u',
      +        ValueConv => '$val ? 2 ** (16 - $val/256) : 0',
      +        ValueConvInv => '$val ? int((16 - log($val) / log(2)) * 256 + 0.5) : 0',
      +        PrintConv => '$val ? Image::ExifTool::Exif::PrintExposureTime($val) : "Bulb"',
      +        PrintConvInv => 'lc($val) eq "bulb" ? 0 : Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    0x0068 => { # appr. same value as Exif ExposureTime, but not valid in HDR-modes
      +        Name => 'SonyFNumber',
      +        Format => 'int16u',
      +        ValueConv => '2 ** (($val/256 - 16) / 2)',
      +        ValueConvInv => '(log($val)*2/log(2)+16)*256',
      +        PrintConv => 'sprintf("%.1f",$val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x006b => {
      +        Name => 'ReleaseMode2',
      +        %releaseMode2,
      +    },
      +    0x0088 => {
      +        Name => 'InternalSerialNumber', #(NC)
      +        Condition => '$$self{Model} =~ /^(ILCE-(7M4|7SM3)|ILME-FX3)/',
      +        Format => 'int8u[6]',
      +        PrintConv => 'unpack "H*", pack "C*", split " ", $val',
      +    },
      +    0x008a => {
      +        Name => 'InternalSerialNumber', #(NC)
      +        Condition => '$$self{Model} =~ /^(ILCE-1)/',
      +        Format => 'int8u[6]',
      +        PrintConv => 'unpack "H*", pack "C*", split " ", $val',
      +    },
      +);
      +
       %Image::ExifTool::Sony::Tag9400a = ( #JR
           PROCESS_PROC => \&ProcessEnciphered,
           WRITE_PROC => \&WriteEnciphered,
      @@ -7892,20 +8144,18 @@
           NOTES => q{
               Valid for DSC-HX60V/HX80/HX90V/HX99/HX350/HX400V/QX30/RX0/RX1RM2/RX10/
               RX10M2/RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/WX220/
      -        WX350/WX500, ILCE-7/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2/5000/5100/6000/
      -        6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.
      +        WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
      +        5100/6000/6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.
           },
           FIRST_ENTRY => 0,
           GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
           0x0009 => { %releaseMode2 },
      -    0x000a => [{
      -        Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9|9M2)|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))\b/',
      -        Name => 'ShotNumberSincePowerUp',
      -        Format => 'int8u',
      -    },{
      +    0x000a => {
               Name => 'ShotNumberSincePowerUp',
      +        Condition => '$$self{Model} =~ /^(ILCA-(68|77M2|99M2)|ILCE-(5000|5100|6000|6300|6500|7|7M2|7R|7RM2|7S|7SM2|QX1)|DSC-(HX350|HX400V|HX60V|HX80|HX90|HX90V|QX30|RX0|RX1RM2|RX10|RX10M2|RX10M3|RX100M3|RX100M4|RX100M5|WX220|WX350|WX500))\b/',
      +        Notes => 'valid only for some models',
               Format => 'int32u',
      -    }],
      +    },
           0x0012 => { %sequenceImageNumber },
           0x0016 => {
               Name => 'SequenceLength',
      @@ -7949,22 +8199,35 @@
                   8 => 'Rotate 270 CW',
               },
           },
      -    0x002a => {
      +    0x002a => [{
               Name => 'Quality2',
      +        Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
               PrintConv => {
                   0 => 'JPEG',
                   1 => 'RAW',
                   2 => 'RAW + JPEG',
                   3 => 'JPEG + MPO', # 3D images
               },
      -    },
      +    },{
      +        Name => 'Quality2',
      +        Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
      +        PrintConv => {
      +            1 => 'JPEG',
      +            2 => 'RAW',
      +            3 => 'RAW + JPEG',
      +            4 => 'HEIF',
      +            6 => 'RAW + HEIF',
      +        },
      +    }],
           0x0047 => {
               Name => 'SonyImageHeight',
      +        Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
               Format => 'int16u',
               PrintConv => '$val > 0 ? 8*$val : "n.a."',
           },
           0x0053 => {
               Name => 'ModelReleaseYear',
      +        Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
               Format => 'int8u',
               PrintConv => 'sprintf("20%.2d", $val)',
           },
      @@ -7979,11 +8242,13 @@
           FIRST_ENTRY => 0,
           GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
           DATAMEMBER => [ 0 ],
      -    IS_SUBDIR => [ 0x0498, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
      +    IS_SUBDIR => [ 0x0498, 0x049d, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
           0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
       
           0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148',          Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
      -    0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
      +    0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167',          Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
      +    0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
      +    0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
           0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
           0x0634 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 68',           Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
           0x0636 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(73|74)/',   Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
      @@ -8054,6 +8319,7 @@
                   14 => 'Tracking',
                   15 => 'Face Tracking',
                   20 => 'Animal Eye Tracking',
      +#            21 => '???',  # (ILCE-7SM3)
                   255 => 'Manual',
               },
           },
      @@ -8119,8 +8385,8 @@
           GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
           DATAMEMBER => [ 0x04 ],
           0x04 => {
      -        # seen values 0,2,3,18,32,49,50,83,148
      -        # CameraTemperature is valid for all values except 0,148
      +        # seen values 0,2,3,18,19,32,49,50,83,130,132,148,213,229,255
      +        # CameraTemperature is valid for all values above except ==0 and >=130 
               Name => 'TempTest2',
               DataMember => 'TempTest2',
               Hidden => 1,
      @@ -8325,7 +8591,7 @@
                       # also often deviating results for Sony FE 90mm F2.8 Macro G OSS ...
               Name => 'SonyFNumber',
               Format => 'int16u',
      -        Condition => '$$self{Model} !~ /^DSC-/',
      +        Condition => '$$self{Model} !~ /^(DSC-|ZV-)/',
               ValueConv => '2 ** (($val/256 - 16) / 2)',
               ValueConvInv => '(log($val)*2/log(2)+16)*256',
               PrintConv => 'sprintf("%.1f",$val)',
      @@ -8441,7 +8707,7 @@
           },
           0x0342 => {
               Name => 'LensZoomPosition',
      -        Condition => '$$self{Model} !~ /^(ILCA-|ILCE-(7RM2|7M3|7RM3|7RM4|7SM2|6100|6300|6400|6500|6600|9|9M2)|DSC-(HX80|HX90V|HX99|RX0|RX10M2|RX10M3|RX10M4|RX100M4|RX100M5|RX100M5A|RX100M6|RX100M7|WX500))/',
      +        Condition => '$$self{Model} !~ /^(ILCA-|ILCE-(7RM2|7M3|7RM3A?|7RM4A?|7SM2|6100|6300|6400|6500|6600|7C|9|9M2)|DSC-(HX80|HX90V|HX99|RX0|RX10M2|RX10M3|RX10M4|RX100M4|RX100M5|RX100M5A|RX100M6|RX100M7|WX500)|ZV-)/',
               Format => 'int16u',
               PrintConv => 'sprintf("%.0f%%",$val/10.24)',
               PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
      @@ -8453,7 +8719,7 @@
           },
           0x034e => {
               Name => 'LensZoomPosition',
      -        Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9M2))/',
      +        Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2)|ZV-E10)/',
               Format => 'int16u',
               PrintConv => 'sprintf("%.0f%%",$val/10.24)',
               PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
      @@ -8465,7 +8731,7 @@
           },
           0x035c => {
               Name => 'VignettingCorrParams',
      -        Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7M3|7RM3|7RM4|9|9M2))/',
      +        Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
               Format => 'int16s[16]',
           },
           0x035a => {
      @@ -8502,7 +8768,7 @@
           },
           0x03b8 => {
               Name => 'ChromaticAberrationCorrParams',
      -        Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|7RM4|9|9M2))/',
      +        Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
               Format => 'int16s[32]',
           },
       );
      @@ -8622,7 +8888,7 @@
           FIRST_ENTRY => 0,
           GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
           DATAMEMBER => [ 0x0008 ],
      -    NOTES => 'NEX and ILCE models only.',
      +    NOTES => 'E-mount cameras only.',
       
           # 0x0001 - 0 for all NEX and ILCE-3000/3500, 20 for all other ILCE (17 for ILCE samples from Sony.net)
           # 0x0008 - LensMount, but different values from Tag9405-0x0105 and Tag9050-0x0604.
      @@ -8737,7 +9003,9 @@
           #   1 1 3 0  for ILCA-68/77M2/99M2
           #   0 0 0 0  for NEX and ILCE-3000/3500, also seen for SLT/ILCA with non-AF lens
           #   1 0 0 0  for ILCE-5000/5100/6000/7/7M2/7R/7S/QX1
      -    #   6 0 0 0  for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2
      +    #   6 0 0 0  for ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2
      +    #   9 . . .  for ILCE-7SM3
      +    #   11 . . . for ILCE-1
           #   0 2 0 0  for NEX/ILCE with LA-EA2/EA4 Phase-AF adapter
           #   2 0 0 0  seen for a few NEX-5N images
           #   2 2 0 0  seen for a few NEX-5N/7 images with LA-EA2 adapter
      @@ -9031,11 +9299,11 @@
       
           # 0x1a06 onwards - first seen for ILCE-7RM2: appears to be some kind of metering image
           # but not valid anymore for ILCE-6400, ILCE-9 v5.0x
      -    0x1a06 => { Name => 'TiffMeteringImageWidth',  Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
      -    0x1a07 => { Name => 'TiffMeteringImageHeight', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
      +    0x1a06 => { Name => 'TiffMeteringImageWidth',  Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
      +    0x1a07 => { Name => 'TiffMeteringImageHeight', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
           0x1a08 => { # (2640 bytes: 1 set of 44x30 int16u values)
               Name => 'TiffMeteringImage',
      -        Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
      +        Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
               Format => 'undef[2640]',
               Notes => q{
                   13(?)-bit intensity data from 1320 (1200) metering segments, extracted as a
      @@ -9241,6 +9509,159 @@
           0xbc => { Name => 'AFStatus_94_E6_Center_F2-8', %Image::ExifTool::Minolta::afStatusInfo },
       );
       
      +# tag 0x9416 decoding (ref JR)
      +%Image::ExifTool::Sony::Tag9416 = (
      +    PROCESS_PROC => \&ProcessEnciphered,
      +    WRITE_PROC => \&WriteEnciphered,
      +    CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
      +    FORMAT => 'int8u',
      +    NOTES => 'Valid for the ILCE-1/7M4/7SM3, ILME-FX3.',
      +    FIRST_ENTRY => 0,
      +    GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
      +    0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
      +    0x0004 => {
      +        Name => 'SonyISO',
      +        Format => 'int16u',
      +        ValueConv => '100 * 2**(16 - $val/256)',
      +        ValueConvInv => '256 * (16 - log($val/100)/log(2))',
      +        PrintConv => 'sprintf("%.0f",$val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x0006 => { %gain2010 },
      +    0x000a => { # appr. same value as Exif ExposureTime, but shorter in HDR-modes
      +        Name => 'SonyExposureTime2',
      +        Format => 'int16u',
      +        ValueConv => '$val ? 2 ** (16 - $val/256) : 0',
      +        ValueConvInv => '$val ? int((16 - log($val) / log(2)) * 256 + 0.5) : 0',
      +        PrintConv => '$val ? Image::ExifTool::Exif::PrintExposureTime($val) : "Bulb"',
      +        PrintConvInv => 'lc($val) eq "bulb" ? 0 : Image::ExifTool::Exif::ConvertFraction($val)',
      +    },
      +    0x000c => {
      +        Name => 'ExposureTime',
      +        Format => 'rational32u',
      +        PrintConv => '$val ? Image::ExifTool::Exif::PrintExposureTime($val) : "Bulb"', # (Bulb NC)
      +        PrintConvInv => 'lc($val) eq "bulb" ? 0 : $val',
      +    },
      +    0x0010 => { # but sometimes deviating results
      +        Name => 'SonyFNumber2',
      +        Format => 'int16u',
      +        ValueConv => '2 ** (($val/256 - 16) / 2)',
      +        ValueConvInv => '(log($val)*2/log(2)+16)*256',
      +        PrintConv => 'sprintf("%.1f",$val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x0012 => {
      +        Name => 'SonyMaxApertureValue', # (at current focal length)
      +        Format => 'int16u',
      +        ValueConv => '2 ** (($val/256 - 16) / 2)',
      +        ValueConvInv => '(log($val)*2/log(2)+16)*256',
      +        PrintConv => 'sprintf("%.1f",$val)',
      +        PrintConvInv => '$val',
      +    },
      +    0x001d => { %sequenceImageNumber },
      +    0x0035 => {
      +        Name => 'ExposureProgram',
      +        Priority => 0,
      +        SeparateTable => 'ExposureProgram3',
      +        PrintConv => \%sonyExposureProgram3,
      +    },
      +    0x0048 => {
      +        Name => 'LensMount',
      +        Condition => '$$self{Model} !~ /^(DSC-)/',
      +        PrintConv => {
      +            0 => 'Unknown',
      +            1 => 'A-mount',
      +            2 => 'E-mount',
      +            3 => 'A-mount (3)',
      +        },
      +    },
      +    0x0049 => {
      +        Name => 'LensFormat',
      +        Condition => '$$self{Model} !~ /^(DSC-)/',
      +        PrintConv => {
      +            0 => 'Unknown',
      +            1 => 'APS-C',
      +            2 => 'Full-frame',
      +        },
      +    },
      +    0x004a => {
      +        Name => 'LensMount',
      +        DataMember => 'LensMount',
      +        RawConv => '$$self{LensMount} = $val; $$self{Model} =~ /^(DSC-)/ ? undef : $val',
      +        PrintConv => {
      +            0 => 'Unknown',
      +            1 => 'A-mount',
      +            2 => 'E-mount',
      +        },
      +    },
      +    0x004b => {
      +        Name => 'LensType2',
      +        Condition => '$$self{LensMount} == 2',
      +        Format => 'int16u',
      +        SeparateTable => 'LensType2',
      +        PrintConv => \%sonyLensTypes2,
      +    },
      +    0x004d => {
      +        Name => 'LensType',
      +        Condition => '$$self{LensMount} == 1',
      +        Priority => 0, #PH (just to be safe)
      +        Format => 'int16u', #PH
      +        SeparateTable => 1,
      +        ValueConvInv => '($val & 0xff00) == 0x8000 ? 0 : int($val)',
      +        PrintConv => \%sonyLensTypes,
      +    },
      +    0x004f => {
      +        Name => 'DistortionCorrParams',
      +        Format => 'int16s[16]',
      +    },
      +    0x0070 => { %pictureProfile2010 }, #IB
      +    0x0071 => {
      +        Name => 'FocalLength',
      +        Format => 'int16u',
      +        ValueConv => '$val / 10',
      +        ValueConvInv => '$val * 10',
      +        PrintConv => 'sprintf("%.1f mm",$val)',
      +        PrintConvInv => '$val =~ s/ ?mm//; $val',
      +    },
      +    0x0073 => {
      +        Name => 'MinFocalLength',
      +        Format => 'int16u',
      +        ValueConv => '$val / 10',
      +        ValueConvInv => '$val * 10',
      +        PrintConv => 'sprintf("%.1f mm",$val)',
      +        PrintConvInv => '$val =~ s/ ?mm//; $val',
      +    },
      +    0x0075 => { # may give 0 for fixed focal length lenses
      +        Name => 'MaxFocalLength',
      +        Format => 'int16u',
      +        RawConv => '$val || undef',
      +        ValueConv => '$val / 10',
      +        ValueConvInv => '$val * 10',
      +        PrintConv => 'sprintf("%.1f mm",$val)',
      +        PrintConvInv => '$val =~ s/ ?mm//; $val',
      +    },
      +    0x088f => {
      +        Name => 'VignettingCorrParams',
      +        Condition => '$$self{Model} !~ /^(ILCE-7M4)/',
      +        Format => 'int16s[16]',
      +    },
      +    0x0891 => {
      +        Name => 'VignettingCorrParams',
      +        Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
      +        Format => 'int16s[16]',
      +    },
      +    0x0914 => {
      +        Name => 'ChromaticAberrationCorrParams',
      +        Condition => '$$self{Model} !~ /^(ILCE-7M4)/',
      +        Format => 'int16s[32]',
      +    },
      +    0x0916 => {
      +        Name => 'ChromaticAberrationCorrParams',
      +        Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
      +        Format => 'int16s[32]',
      +    },
      +);
      +
       %Image::ExifTool::Sony::FaceInfo1 = (
           %binaryDataAttrs,
           GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
      @@ -9733,22 +10154,132 @@
           0x3210 => { Name => 'Sony_rtmd_0x3210', Format => 'int8u',  %hidUnk },
           0x3219 => { Name => 'Sony_rtmd_0x3219', Format => 'int8u',  %hidUnk },
           0x321a => { Name => 'Sony_rtmd_0x321a', Format => 'int8u',  %hidUnk },
      -    0x8000 => { Name => 'Sony_rtmd_0x8000', Format => 'int16u', %hidUnk },
      +    0x8000 => { #forum12218
      +        Name => 'FNumber',
      +        Format => 'int16u',
      +        ValueConv => '2 ** (8-$val/8192)',
      +        PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
      +    },
           0x8001 => { Name => 'Sony_rtmd_0x8001', Format => 'int16u', %hidUnk },
      +    0x8004 => { Name => 'Sony_rtmd_0x8004', Format => 'int16u', %hidUnk },
      +    0x8005 => { Name => 'Sony_rtmd_0x8005', Format => 'int16u', %hidUnk },
      +    0x800a => { Name => 'Sony_rtmd_0x800a', Format => 'int16u', %hidUnk },
      +    0x800b => { Name => 'Sony_rtmd_0x800b', Format => 'int16u', %hidUnk },
         # 0x8100 - 16 bytes starting with 0x060e2b340401
           0x8100 => { Name => 'Sony_rtmd_0x8100', Format => 'int8u',  %hidUnk },
           0x8101 => { Name => 'Sony_rtmd_0x8101', Format => 'int8u',  %hidUnk }, # seen: 0,1
      -    0x8109 => { Name => 'Sony_rtmd_0x8109', Format => 'int32u', %hidUnk }, # seen: "1 50"
      -    0x810a => { Name => 'Sony_rtmd_0x810a', Format => 'int16u', %hidUnk }, # seen: 0
      -    0x810b => { Name => 'Sony_rtmd_0x810b', Format => 'int16u', %hidUnk }, # seen: 100
      -    0x810c => { Name => 'Sony_rtmd_0x810c', Format => 'int16u', %hidUnk }, # seen: 100
      -    0x810d => { Name => 'Sony_rtmd_0x810d', Format => 'int8u',  %hidUnk }, # seen: 1
      +    0x8104 => { Name => 'Sony_rtmd_0x8104', Format => 'int16u', %hidUnk }, # seen: 35616
      +    0x8105 => { Name => 'Sony_rtmd_0x8105', Format => 'int16u', %hidUnk }, # seen: 20092
      +    0x8106 => { Name => 'Sony_rtmd_0x8106', Format => 'int32u', %hidUnk }, # seen: "25 1","24000 1001" frame rate?
      +    0x8109 => { #forum12218
      +        Name => 'ExposureTime',
      +        Format => 'rational64u',
      +        PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
      +    },
      +    0x810a => { #PH (NC, based on samples from forum12218)
      +        Name => 'MasterGainAdjustment',
      +        Format => 'int16u',
      +        ValueConv => '$val / 100',
      +        PrintConv => 'sprintf("%.2f dB", $val)',
      +    },
      +    0x810b => { Name => 'ISO',              Format => 'int16u' }, #forum12218
      +    0x810c => { #PH (NC, based on samples from forum12218)
      +        Name => 'ElectricalExtenderMagnification',
      +        Format => 'int16u',
      +    },
      +    0x810d => { Name => 'Sony_rtmd_0x810d', Format => 'int8u',  %hidUnk }, # seen: 0,1
      +    0x8115 => { Name => 'Sony_rtmd_0x8115', Format => 'int16u', %hidUnk }, # seen: 100
         # 0x8300 - container for other tags in this format
      +    0x8500 => {
      +        Name => 'GPSVersionID',
      +        Groups => { 2 => 'Location' },
      +        Format => 'int8u',
      +        PrintConv => '$val =~ tr/ /./; $val',
      +    },
      +    0x8501 => {
      +        Name => 'GPSLatitudeRef',
      +        Groups => { 2 => 'Location' },
      +        Format => 'string',
      +        PrintConv => {
      +            N => 'North',
      +            S => 'South',
      +        },
      +    },
      +    0x8502 => {
      +        Name => 'GPSLatitude',
      +        Groups => { 2 => 'Location' },
      +        Format => 'rational64u',
      +        ValueConv => 'require Image::ExifTool::GPS;Image::ExifTool::GPS::ToDegrees($val)',
      +        PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1)',
      +    },
      +    0x8503 => {
      +        Name => 'GPSLongitudeRef',
      +        Groups => { 2 => 'Location' },
      +        Format => 'string',
      +        PrintConv => {
      +            E => 'East',
      +            W => 'West',
      +        },
      +    },
      +    0x8504 => {
      +        Name => 'GPSLongitude',
      +        Groups => { 2 => 'Location' },
      +        Format => 'rational64u',
      +        ValueConv => 'require Image::ExifTool::GPS;Image::ExifTool::GPS::ToDegrees($val)',
      +        PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1)',
      +    },
      +    0x8507 => {
      +        Name => 'GPSTimeStamp',
      +        Groups => { 2 => 'Time' },
      +        Format => 'rational64u',
      +        ValueConv => 'require Image::ExifTool::GPS;Image::ExifTool::GPS::ConvertTimeStamp($val)',
      +        PrintConv => 'Image::ExifTool::GPS::PrintTimeStamp($val)',
      +    },
      +    0x8509 => {
      +        Name => 'GPSStatus',
      +        Groups => { 2 => 'Location' },
      +        Format => 'string',
      +        PrintConv => {
      +            A => 'Measurement Active',
      +            V => 'Measurement Void',
      +        },
      +    },
      +    0x850a => {
      +        Name => 'GPSMeasureMode',
      +        Groups => { 2 => 'Location' },
      +        Format => 'string',
      +        PrintConv => {
      +            2 => '2-Dimensional Measurement',
      +            3 => '3-Dimensional Measurement',
      +        },
      +    },
      +    0x8512 => {
      +        Name => 'GPSMapDatum',
      +        Groups => { 2 => 'Location' },
      +        Format => 'string',
      +    },
      +    0x851d => {
      +        Name => 'GPSDateStamp',
      +        Groups => { 2 => 'Time' },
      +        Format => 'string',
      +        ValueConv => 'Image::ExifTool::Exif::ExifDate($val)',
      +    },
           0xe000 => { Name => 'Sony_rtmd_0xe000', Format => 'int8u',  %hidUnk }, # (16 bytes)
           0xe300 => { Name => 'Sony_rtmd_0xe300', Format => 'int8u',  %hidUnk }, # seen: 0,1
      -    0xe301 => { Name => 'Sony_rtmd_0xe301', Format => 'int32u', %hidUnk }, # seen: 100
      +    0xe301 => { Name => 'Sony_rtmd_0xe301', Format => 'int32u', %hidUnk }, # seen: 100,1600,12800
           0xe302 => { Name => 'Sony_rtmd_0xe302', Format => 'int8u',  %hidUnk }, # seen: 1
      -    0xe303 => { Name => 'Sony_rtmd_0xe303', Format => 'int8u',  %hidUnk }, # seen: 255
      +    0xe303 => { #forum12218
      +        Name => 'WhiteBalance',
      +        Format => 'int8u',
      +        PrintConv => {
      +            1 => 'Incandescent',
      +            2 => 'Fluorescent',
      +            4 => 'Daylight',
      +            5 => 'Cloudy',
      +            6 => 'Custom', # ("Shade" uses this value too)
      +            255 => 'Preset',
      +        },
      +    },
           0xe304 => {
               Name => 'DateTime',
               Groups => { 2 => 'Time' },
      @@ -9756,6 +10287,21 @@
               ValueConv => 'my @a=unpack("x1H4H2H2H2H2H2",$val); "$a[0]:$a[1]:$a[2] $a[3]:$a[4]:$a[5]"',
               PrintConv => '$self->ConvertDateTime($val)',
           },
      +    0xe435 => { Name => 'Sony_rtmd_0xe435', Format => 'int32u',  %hidUnk }, # seen: 2000
      +    0xe437 => { Name => 'Sony_rtmd_0xe437', Format => 'int32s',  %hidUnk }, # seen: -3800 to -3400
      +    0xe43b => {
      +        Name => 'PitchRollYaw',
      +        Format => 'int16s',
      +        RawConv => 'substr($val, 8)',
      +    },
      +    0xe445 => { Name => 'Sony_rtmd_0xe445', Format => 'int32u',  %hidUnk }, # seen: 2000
      +    0xe44b => {
      +        Name => 'Accelerometer', # (NC)
      +        Format => 'int16s',
      +        RawConv => 'substr($val, 8)',
      +    },
      +    # f010 - 2048 bytes
      +    # f020 - 543 bytes
       );
       
       # Composite Sony tags
      @@ -9790,6 +10336,37 @@
               },
               PrintConv => '$val eq "inf" ? $val : sprintf("%.2f m",$val)',
           },
      +    GPSDateTime => {
      +        Description => 'GPS Date/Time',
      +        Groups => { 2 => 'Time' },
      +        SubDoc => 1,    # generate for all sub-documents
      +        Require => {
      +            0 => 'Sony:GPSDateStamp',
      +            1 => 'Sony:GPSTimeStamp',
      +        },
      +        ValueConv => '"$val[0] $val[1]Z"',
      +        PrintConv => '$self->ConvertDateTime($val)',
      +    },
      +    GPSLatitude => {
      +        SubDoc => 1,    # generate for all sub-documents
      +        Groups => { 2 => 'Location' },
      +        Require => {
      +            0 => 'Sony:GPSLatitude',
      +            1 => 'Sony:GPSLatitudeRef',
      +        },
      +        ValueConv => '$val[1] =~ /^S/i ? -$val[0] : $val[0]',
      +        PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
      +    },
      +    GPSLongitude => {
      +        SubDoc => 1,    # generate for all sub-documents
      +        Groups => { 2 => 'Location' },
      +        Require => {
      +            0 => 'Sony:GPSLongitude',
      +            1 => 'Sony:GPSLongitudeRef',
      +        },
      +        ValueConv => '$val[1] =~ /^W/i ? -$val[0] : $val[0]',
      +        PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
      +    },
       );
       
       # add our composite tags
      @@ -10710,7 +11287,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Stim.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Stim.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Stim.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Stim.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -21,8 +21,8 @@
           NOTES => q{
               These tags are part of the CIPA Stereo Still Image specification, and are
               found in the APP3 "Stim" segment of JPEG images.  See
      -        L for the
      -        official specification.
      +        L
      +        for the official specification.
           },
           0 => 'StimVersion',
           1 => {
      @@ -174,7 +174,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/TagInfoXML.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/TagInfoXML.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/TagInfoXML.pm	2020-01-02 12:08:54.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/TagInfoXML.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -15,7 +15,7 @@
       use Image::ExifTool qw(:Utils :Vars);
       use Image::ExifTool::XMP;
       
      -$VERSION = '1.31';
      +$VERSION = '1.32';
       @ISA = qw(Exporter);
       
       # set this to a language code to generate Lang module with 'MISSING' entries
      @@ -58,6 +58,12 @@
       my $numbersFirst = 1;   # set to -1 to sort numbers last, or 2 to put negative numbers last
       my $caseInsensitive;    # used internally by sort routine
       
      +# write groups that don't represent real family 1 group names
      +my %fakeWriteGroup = (
      +    Comment => 1,   # (JPEG Comment)
      +    colr => 1,      # (Jpeg2000 'colr' box)
      +);
      +
       #------------------------------------------------------------------------------
       # Utility to print tag information database as an XML list
       # Inputs: 0) output file name (undef to send to console),
      @@ -164,6 +170,7 @@
                       $format = 'struct' if $$tagInfo{Struct};
                       if (defined $format) {
                           $format =~ s/\[.*\$.*\]//;   # remove expressions from format
      +                    $format = 'undef' if $format eq '2'; # (special case)
                       } elsif ($isBinary) {
                           $format = 'int8u';
                       } else {
      @@ -177,9 +184,8 @@
                       }
                       my @groups = $et->GetGroup($tagInfo);
                       my $writeGroup = $$tagInfo{WriteGroup} || $$table{WRITE_GROUP};
      -                if ($writeGroup and $writeGroup ne 'Comment') {
      -                    $groups[1] = $writeGroup;   # use common write group for group 1
      -                }
      +                # use common write group for group 1 (unless fake)
      +                $groups[1] = $writeGroup if $writeGroup and not $fakeWriteGroup{$writeGroup};
                       # add group names if different from table defaults
                       my $grp = '';
                       for ($fam=0; $fam<3; ++$fam) {
      @@ -637,7 +643,7 @@
       
       ~head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      @@ -821,7 +827,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/TagLookup.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/TagLookup.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/TagLookup.pm	2020-02-20 13:21:25.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/TagLookup.pm	2022-02-09 12:08:08.000000000 +0000
      @@ -73,6 +73,8 @@
       	'Image::ExifTool::Canon::ColorCoefs',
       	'Image::ExifTool::Canon::ColorCoefs2',
       	'Image::ExifTool::Canon::ColorData1',
      +	'Image::ExifTool::Canon::ColorData10',
      +	'Image::ExifTool::Canon::ColorData11',
       	'Image::ExifTool::Canon::ColorData2',
       	'Image::ExifTool::Canon::ColorData3',
       	'Image::ExifTool::Canon::ColorData4',
      @@ -93,6 +95,7 @@
       	'Image::ExifTool::Canon::HDRInfo',
       	'Image::ExifTool::Canon::LensInfo',
       	'Image::ExifTool::Canon::LightingOpt',
      +	'Image::ExifTool::Canon::LogInfo',
       	'Image::ExifTool::Canon::Main',
       	'Image::ExifTool::Canon::MeasuredColor',
       	'Image::ExifTool::Canon::ModifiedInfo',
      @@ -164,6 +167,7 @@
       	'Image::ExifTool::IPTC::EnvelopeRecord',
       	'Image::ExifTool::IPTC::NewsPhoto',
       	'Image::ExifTool::JFIF::Main',
      +	'Image::ExifTool::Jpeg2000::ColorSpec',
       	'Image::ExifTool::Jpeg2000::Main',
       	'Image::ExifTool::Kodak::CameraInfo',
       	'Image::ExifTool::Kodak::IFD',
      @@ -207,6 +211,7 @@
       	'Image::ExifTool::Microsoft::MP1',
       	'Image::ExifTool::Microsoft::Stitch',
       	'Image::ExifTool::Microsoft::XMP',
      +	'Image::ExifTool::Microsoft::Xtra',
       	'Image::ExifTool::Minolta::CameraInfoA100',
       	'Image::ExifTool::Minolta::CameraSettings',
       	'Image::ExifTool::Minolta::CameraSettings5D',
      @@ -221,6 +226,7 @@
       	'Image::ExifTool::Motorola::Main',
       	'Image::ExifTool::Nikon::AFInfo',
       	'Image::ExifTool::Nikon::AFInfo2',
      +	'Image::ExifTool::Nikon::AFInfo2V0400',
       	'Image::ExifTool::Nikon::AFTune',
       	'Image::ExifTool::Nikon::BarometerInfo',
       	'Image::ExifTool::Nikon::CaptureOutput',
      @@ -240,6 +246,7 @@
       	'Image::ExifTool::Nikon::FlashInfo0103',
       	'Image::ExifTool::Nikon::FlashInfo0106',
       	'Image::ExifTool::Nikon::FlashInfo0107',
      +	'Image::ExifTool::Nikon::FlashInfo0300',
       	'Image::ExifTool::Nikon::GEM',
       	'Image::ExifTool::Nikon::HDRInfo',
       	'Image::ExifTool::Nikon::ISOInfo',
      @@ -252,6 +259,9 @@
       	'Image::ExifTool::Nikon::LensData0800',
       	'Image::ExifTool::Nikon::LocationInfo',
       	'Image::ExifTool::Nikon::Main',
      +	'Image::ExifTool::Nikon::MakerNotes0x51',
      +	'Image::ExifTool::Nikon::MenuSettingsZ7II',
      +	'Image::ExifTool::Nikon::MenuSettingsZ9',
       	'Image::ExifTool::Nikon::MultiExposure',
       	'Image::ExifTool::Nikon::PictureControl',
       	'Image::ExifTool::Nikon::PictureControl2',
      @@ -274,6 +284,7 @@
       	'Image::ExifTool::Nikon::ShotInfoD5000',
       	'Image::ExifTool::Nikon::ShotInfoD5100',
       	'Image::ExifTool::Nikon::ShotInfoD5200',
      +	'Image::ExifTool::Nikon::ShotInfoD6',
       	'Image::ExifTool::Nikon::ShotInfoD700',
       	'Image::ExifTool::Nikon::ShotInfoD7000',
       	'Image::ExifTool::Nikon::ShotInfoD80',
      @@ -281,6 +292,8 @@
       	'Image::ExifTool::Nikon::ShotInfoD810',
       	'Image::ExifTool::Nikon::ShotInfoD850',
       	'Image::ExifTool::Nikon::ShotInfoD90',
      +	'Image::ExifTool::Nikon::ShotInfoZ7II',
      +	'Image::ExifTool::Nikon::ShotInfoZ9',
       	'Image::ExifTool::Nikon::Type2',
       	'Image::ExifTool::Nikon::VRInfo',
       	'Image::ExifTool::Nikon::WorldTime',
      @@ -314,6 +327,7 @@
       	'Image::ExifTool::NikonCustom::SettingsD810',
       	'Image::ExifTool::NikonCustom::SettingsD850',
       	'Image::ExifTool::NikonCustom::SettingsD90',
      +	'Image::ExifTool::NikonCustom::SettingsZ9',
       	'Image::ExifTool::Nintendo::CameraInfo',
       	'Image::ExifTool::Olympus::CameraSettings',
       	'Image::ExifTool::Olympus::Equipment',
      @@ -458,6 +472,7 @@
       	'Image::ExifTool::Sony::Tag202a',
       	'Image::ExifTool::Sony::Tag9050a',
       	'Image::ExifTool::Sony::Tag9050b',
      +	'Image::ExifTool::Sony::Tag9050c',
       	'Image::ExifTool::Sony::Tag9400a',
       	'Image::ExifTool::Sony::Tag9400b',
       	'Image::ExifTool::Sony::Tag9400c',
      @@ -530,652 +545,677 @@
       
       # lookup for all writable tags
       my %tagLookup = (
      -	'aberrationcorrectiondistance' => { 106 => 0x69 },
      -	'about' => { 482 => 'about' },
      -	'aboutcvterm' => { 474 => 'AboutCvTerm' },
      -	'aboutcvtermcvid' => { 474 => [\'AboutCvTerm','AboutCvTermCvId'] },
      -	'aboutcvtermid' => { 474 => [\'AboutCvTerm','AboutCvTermCvTermId'] },
      -	'aboutcvtermname' => { 474 => [\'AboutCvTerm','AboutCvTermCvTermName'] },
      -	'aboutcvtermrefinedabout' => { 474 => [\'AboutCvTerm','AboutCvTermCvTermRefinedAbout'] },
      -	'absolutealtitude' => { 113 => 'AbsoluteAltitude' },
      -	'abspeakaudiofilepath' => { 488 => 'absPeakAudioFilePath' },
      -	'academicfield' => { 478 => 'academicField' },
      -	'acceleration' => { 116 => 0x9404, 469 => 'Acceleration' },
      -	'accelerationtracking' => { 81 => 0x518 },
      +	'aberrationcorrectiondistance' => { 109 => 0x69 },
      +	'about' => { 497 => 'about' },
      +	'aboutcvterm' => { 489 => 'AboutCvTerm' },
      +	'aboutcvtermcvid' => { 489 => [\'AboutCvTerm','AboutCvTermCvId'] },
      +	'aboutcvtermid' => { 489 => [\'AboutCvTerm','AboutCvTermCvTermId'] },
      +	'aboutcvtermname' => { 489 => [\'AboutCvTerm','AboutCvTermCvTermName'] },
      +	'aboutcvtermrefinedabout' => { 489 => [\'AboutCvTerm','AboutCvTermCvTermRefinedAbout'] },
      +	'absolutealtitude' => { 116 => 'AbsoluteAltitude' },
      +	'abspeakaudiofilepath' => { 503 => 'absPeakAudioFilePath' },
      +	'academicfield' => { 493 => 'academicField' },
      +	'acceleration' => { 119 => 0x9404, 484 => 'Acceleration' },
      +	'accelerationtracking' => { 84 => 0x518 },
       	'accelerationvector' => { 1 => 0x8 },
      -	'accelerometer' => { 376 => 0x3 },
      -	'accelerometerx' => { 306 => 0x8d },
      -	'accelerometery' => { 306 => 0x8e },
      -	'accelerometerz' => { 306 => 0x8c },
      -	'accessoryserialnumber' => { 306 => 0x54 },
      -	'accessorytype' => { 306 => 0x53 },
      -	'actionadvised' => { 128 => 0x2a },
      -	'activearea' => { 116 => 0xc68d },
      -	'actived-lighting' => { 219 => 0x22, 257 => 0x24 },
      -	'actived-lightingmode' => { 257 => 0x25 },
      -	'adaptervoltage' => { 134 => 0x407 },
      -	'addaspectratioinfo' => { 81 => 0x80e },
      -	'addiptcinformation' => { 81 => 0x815 },
      -	'additionalmodelinformation' => { 474 => 'AddlModelInfo' },
      -	'addoriginaldecisiondata' => { 81 => 0x80f, 82 => 0x11, 83 => 0x13, 86 => 0x14 },
      -	'address' => { 157 => 'Address' },
      -	'adjustmentmode' => { 383 => 0x15 },
      -	'adlbracketingstep' => { 238 => 0x883 },
      -	'adlbracketingtype' => { 238 => 0x884 },
      -	'adobe' => { 117 => 'Adobe' },
      -	'adultcontentwarning' => { 293 => 'AdultContentWarning', 481 => 'adultContentWarning' },
      -	'advancedfilter' => { 124 => 0x1201 },
      -	'advancedraw' => { 259 => 0x76a43203 },
      -	'advancedscenetype' => { 306 => 0x3d },
      -	'advisory' => { 486 => 'Advisory' },
      -	'ae_iso' => { 314 => 0x2, 315 => 0x4, 316 => 0x12 },
      -	'aeaperture' => { 314 => 0x1, 315 => 0x3, 316 => 0x11 },
      -	'aeaperturesteps' => { 314 => 0x8, 315 => 0xb },
      -	'aebautocancel' => { 81 => 0x104 },
      -	'aebbracketvalue' => { 74 => 0x11 },
      -	'aebracketingsteps' => { 237 => 0x174c, 238 => 0x87b, 246 => 0x1756 },
      -	'aebsequence' => { 81 => 0x105 },
      -	'aebsequenceautocancel' => { 79 => 0x9, 80 => 0x9, 82 => 0x8, 83 => 0x9, 86 => 0x9, 87 => 0x7 },
      -	'aebshotcount' => { 81 => 0x106 },
      -	'aebxv' => { 314 => 0x4, 315 => 0x6 },
      -	'aeerror' => { 315 => 0x8 },
      -	'aeexposuretime' => { 314 => 0x0, 315 => 0x2, 316 => 0x10 },
      -	'aelbutton' => { 179 => 0x45 },
      -	'aelexposureindicator' => { 179 => 0x51 },
      -	'aelock' => { 179 => 0x5b, 268 => '4.2', 277 => '4.2', 283 => 0x201, 341 => 0x48, 393 => 0x40, 394 => 0x40, 395 => [0x86,0x286] },
      -	'aelockbutton' => { 266 => '16.1', 268 => '4.1', 271 => '15.1', 272 => '16.1', 273 => '16.1', 275 => '30.1', 276 => '16.1', 277 => '4.1', 279 => '17.1', 281 => '17.1' },
      -	'aelockbuttonplusdials' => { 266 => '16.2', 275 => '32.1', 279 => '44.1' },
      -	'aelockformb-d80' => { 281 => '3.1' },
      -	'aelockmetermodeafterfocus' => { 81 => 0x114 },
      -	'aemaxaperture' => { 314 => 0x9, 315 => 0x10, 316 => 0x1c },
      -	'aemaxaperture2' => { 314 => 0xa, 315 => 0x11, 316 => 0x1d },
      -	'aemeteringmode' => { 314 => 0xc },
      -	'aemeteringmode2' => { 314 => '13.1' },
      -	'aemeteringsegments' => { 182 => 0x628, 341 => 0x209 },
      -	'aemicroadjustment' => { 81 => 0x110 },
      -	'aeminaperture' => { 314 => 0xb, 315 => 0x12, 316 => 0x1e },
      -	'aeminexposuretime' => { 314 => 0x5, 315 => 0x13, 316 => 0x1f },
      -	'aeprogrammode' => { 314 => 0x6 },
      -	'aeprojectlink' => { 463 => 'aeProjectLink' },
      -	'aeprojectlinkcompositionid' => { 463 => [\'aeProjectLink','aeProjectLinkCompositionID'] },
      -	'aeprojectlinkfullpath' => { 463 => [\'aeProjectLink','aeProjectLinkFullPath'] },
      -	'aeprojectlinkrenderoutputmoduleindex' => { 463 => [\'aeProjectLink','aeProjectLinkRenderOutputModuleIndex'] },
      -	'aeprojectlinkrenderqueueitemid' => { 463 => [\'aeProjectLink','aeProjectLinkRenderQueueItemID'] },
      -	'aeprojectlinkrendertimestamp' => { 463 => [\'aeProjectLink','aeProjectLinkRenderTimeStamp'] },
      +	'accelerometer' => { 390 => 0x3 },
      +	'accelerometerdata' => { 380 => 'vrot' },
      +	'accelerometerx' => { 320 => 0x8d },
      +	'accelerometery' => { 320 => 0x8e },
      +	'accelerometerz' => { 320 => 0x8c },
      +	'accessoryserialnumber' => { 320 => 0x54 },
      +	'accessorytype' => { 320 => 0x53 },
      +	'actionadvised' => { 131 => 0x2a },
      +	'activearea' => { 119 => 0xc68d },
      +	'actived-lighting' => { 226 => 0x22, 270 => 0x24 },
      +	'actived-lightingmode' => { 270 => 0x25 },
      +	'adaptervoltage' => { 138 => 0x407 },
      +	'addaspectratioinfo' => { 84 => 0x80e },
      +	'addiptcinformation' => { 84 => 0x815 },
      +	'additionalmodelinformation' => { 489 => 'AddlModelInfo' },
      +	'addoriginaldecisiondata' => { 84 => 0x80f, 85 => 0x11, 86 => 0x13, 89 => 0x14 },
      +	'address' => { 161 => 'Address' },
      +	'adjustmentmode' => { 397 => 0x15 },
      +	'adlbracketingstep' => { 248 => 0x883 },
      +	'adlbracketingtype' => { 248 => 0x884 },
      +	'adobe' => { 120 => 'Adobe' },
      +	'adultcontentwarning' => { 307 => 'AdultContentWarning', 496 => 'adultContentWarning' },
      +	'advancedfilter' => { 127 => 0x1201 },
      +	'advancedraw' => { 272 => 0x76a43203 },
      +	'advancedscenetype' => { 320 => 0x3d },
      +	'advisory' => { 501 => 'Advisory' },
      +	'ae_iso' => { 328 => 0x2, 329 => 0x4, 330 => 0x12 },
      +	'aeaperture' => { 328 => 0x1, 329 => 0x3, 330 => 0x11 },
      +	'aeaperturesteps' => { 328 => 0x8, 329 => 0xb },
      +	'aebautocancel' => { 84 => 0x104 },
      +	'aebbracketvalue' => { 77 => 0x11 },
      +	'aebracketingsteps' => { 247 => 0x174c, 248 => 0x87b, 257 => 0x1756 },
      +	'aebsequence' => { 84 => 0x105 },
      +	'aebsequenceautocancel' => { 82 => 0x9, 83 => 0x9, 85 => 0x8, 86 => 0x9, 89 => 0x9, 90 => 0x7 },
      +	'aebshotcount' => { 84 => 0x106 },
      +	'aebxv' => { 328 => 0x4, 329 => 0x6 },
      +	'aeerror' => { 329 => 0x8 },
      +	'aeexposuretime' => { 328 => 0x0, 329 => 0x2, 330 => 0x10 },
      +	'aelbutton' => { 184 => 0x45 },
      +	'aelexposureindicator' => { 184 => 0x51 },
      +	'aelock' => { 184 => 0x5b, 281 => '4.2', 290 => '4.2', 297 => 0x201, 355 => 0x48, 407 => 0x40, 408 => 0x40, 409 => [0x86,0x286] },
      +	'aelockbutton' => { 279 => '16.1', 281 => '4.1', 284 => '15.1', 285 => '16.1', 286 => '16.1', 288 => '30.1', 289 => '16.1', 290 => '4.1', 292 => '17.1', 294 => '17.1' },
      +	'aelockbuttonplusdials' => { 279 => '16.2', 288 => '32.1', 292 => '44.1' },
      +	'aelockformb-d80' => { 294 => '3.1' },
      +	'aelockmetermodeafterfocus' => { 84 => 0x114 },
      +	'aemaxaperture' => { 328 => 0x9, 329 => 0x10, 330 => 0x1c },
      +	'aemaxaperture2' => { 328 => 0xa, 329 => 0x11, 330 => 0x1d },
      +	'aemeteringmode' => { 328 => 0xc },
      +	'aemeteringmode2' => { 328 => '13.1' },
      +	'aemeteringsegments' => { 187 => 0x628, 355 => 0x209 },
      +	'aemicroadjustment' => { 84 => 0x110 },
      +	'aeminaperture' => { 328 => 0xb, 329 => 0x12, 330 => 0x1e },
      +	'aeminexposuretime' => { 328 => 0x5, 329 => 0x13, 330 => 0x1f },
      +	'aeprogrammode' => { 328 => 0x6 },
      +	'aeprojectlink' => { 478 => 'aeProjectLink' },
      +	'aeprojectlinkcompositionid' => { 478 => [\'aeProjectLink','aeProjectLinkCompositionID'] },
      +	'aeprojectlinkfullpath' => { 478 => [\'aeProjectLink','aeProjectLinkFullPath'] },
      +	'aeprojectlinkrenderoutputmoduleindex' => { 478 => [\'aeProjectLink','aeProjectLinkRenderOutputModuleIndex'] },
      +	'aeprojectlinkrenderqueueitemid' => { 478 => [\'aeProjectLink','aeProjectLinkRenderQueueItemID'] },
      +	'aeprojectlinkrendertimestamp' => { 478 => [\'aeProjectLink','aeProjectLinkRenderTimeStamp'] },
       	'aesetting' => { 34 => 0x21 },
      -	'aewhitebalance' => { 314 => 0xd },
      -	'aexv' => { 314 => 0x3, 315 => 0x5 },
      -	'af-cpriority' => { 125 => '0.2' },
      -	'af-cpriorityselection' => { 266 => '1.1', 267 => '1.1', 269 => '1.1', 270 => '1.1', 272 => '0.1', 273 => '0.1', 274 => '0.1', 275 => '1.1', 276 => '0.1', 279 => '1.1', 280 => '1.1' },
      -	'af-csetting' => { 121 => 0x0 },
      -	'af-cspeedtrackingsensitivity' => { 121 => '0.2' },
      -	'af-ctrackingsensitivity' => { 121 => '0.1' },
      -	'af-czoneareaswitching' => { 121 => '0.3' },
      -	'af-onbutton' => { 269 => '70.1', 270 => '70.1', 280 => '70.1' },
      -	'af-onformb-d10' => { 266 => '3.3', 275 => '3.2' },
      -	'af-onformb-d11' => { 276 => '2.2' },
      -	'af-onformb-d12' => { 279 => '50.1' },
      -	'af-spriority' => { 125 => '0.1' },
      -	'af-spriorityselection' => { 266 => '1.2', 267 => '1.2', 269 => '1.2', 270 => '1.2', 274 => '0.2', 275 => '1.2', 276 => '0.2', 279 => '1.2', 280 => '1.2' },
      +	'aewhitebalance' => { 328 => 0xd },
      +	'aexv' => { 328 => 0x3, 329 => 0x5 },
      +	'af-assistilluminator' => { 295 => 0x19 },
      +	'af-cfocusdisplay' => { 295 => 0x234 },
      +	'af-cpriority' => { 128 => '0.2' },
      +	'af-cpriorityselection' => { 279 => '1.1', 280 => '1.1', 282 => '1.1', 283 => '1.1', 285 => '0.1', 286 => '0.1', 287 => '0.1', 288 => '1.1', 289 => '0.1', 292 => '1.1', 293 => '1.1', 295 => 0x3 },
      +	'af-csetting' => { 124 => 0x0 },
      +	'af-cspeedtrackingsensitivity' => { 124 => '0.2' },
      +	'af-ctrackingsensitivity' => { 124 => '0.1' },
      +	'af-czoneareaswitching' => { 124 => '0.3' },
      +	'af-onbutton' => { 282 => '70.1', 283 => '70.1', 293 => '70.1' },
      +	'af-onformb-d10' => { 279 => '3.3', 288 => '3.2' },
      +	'af-onformb-d11' => { 289 => '2.2' },
      +	'af-onformb-d12' => { 292 => '50.1' },
      +	'af-onoutoffocusrelease' => { 295 => 0x10 },
      +	'af-spriority' => { 128 => '0.1' },
      +	'af-spriorityselection' => { 279 => '1.2', 280 => '1.2', 282 => '1.2', 283 => '1.2', 287 => '0.2', 288 => '1.2', 289 => '0.2', 292 => '1.2', 293 => '1.2', 295 => 0x5 },
       	'afacceldeceltracking' => { 2 => 0x3 },
      -	'afactivation' => { 266 => '2.1', 267 => '2.1', 269 => '78.3', 270 => '78.3', 275 => '2.1', 279 => '2.1', 280 => '78.3' },
      -	'afadjustment' => { 341 => 0x72, 350 => 0x267 },
      -	'afandmeteringbuttons' => { 81 => 0x701 },
      -	'afaperture' => { 212 => 0x5, 213 => 0x5, 217 => 0x5 },
      -	'afareaheight' => { 188 => [0x1a,0x34,0x50] },
      -	'afareaillumination' => { 179 => 0x4b, 277 => '15.3' },
      -	'afareamode' => { 123 => '0.2', 175 => 0x33, 179 => 0xe, 187 => 0x0, 188 => 0x5, 306 => 0xf, 373 => 0x1205, 386 => [0xa,0x3a], 393 => 0x11, 394 => 0x10, 395 => 0x24, 406 => 0xb043, 429 => 0x17 },
      -	'afareamodesetting' => { 268 => '11.1', 271 => '0.1', 277 => '16.1', 281 => '2.1', 406 => 0x201c },
      -	'afareapointsize' => { 123 => '0.3' },
      -	'afareas' => { 283 => 0x304 },
      +	'afactivation' => { 279 => '2.1', 280 => '2.1', 282 => '78.3', 283 => '78.3', 288 => '2.1', 292 => '2.1', 293 => '78.3', 295 => 0xf },
      +	'afadjustment' => { 355 => 0x72, 364 => 0x267 },
      +	'afandmeteringbuttons' => { 84 => 0x701 },
      +	'afaperture' => { 219 => 0x5, 220 => 0x5, 224 => 0x5 },
      +	'afareaheight' => { 193 => [0x1a,0x34,0x50], 194 => 0x48 },
      +	'afareaillumination' => { 184 => 0x4b, 290 => '15.3' },
      +	'afareamode' => { 126 => '0.3', 180 => 0x33, 184 => 0xe, 192 => 0x0, 193 => 0x5, 229 => 0x210, 320 => 0xf, 387 => 0x1205, 400 => [0xa,0x3a], 407 => 0x11, 408 => 0x10, 409 => 0x24, 420 => 0xb043, 444 => 0x17 },
      +	'afareamodesetting' => { 281 => '11.1', 284 => '0.1', 290 => '16.1', 294 => '2.1', 420 => 0x201c },
      +	'afareapointsize' => { 126 => '0.4' },
      +	'afareas' => { 297 => 0x304 },
       	'afareaselectionmethod' => { 2 => 0xd },
      -	'afareaselectmethod' => { 81 => 0x51b },
      -	'afareawidth' => { 188 => [0x18,0x32,0x4e] },
      -	'afareaxposition' => { 188 => [0x14,0x2e,0x4a], 373 => 0x1203 },
      -	'afareaxposition1' => { 373 => 0x1201 },
      -	'afareayposition' => { 188 => [0x16,0x30,0x4c], 373 => 0x1204 },
      -	'afareayposition1' => { 373 => 0x1202 },
      -	'afareazonesize' => { 123 => '0.4' },
      -	'afassist' => { 79 => 0x5, 87 => 0x5, 179 => 0x48, 266 => '2.5', 268 => '0.2', 271 => '0.2', 272 => '1.1', 273 => '1.1', 274 => '1.3', 275 => '2.4', 276 => '1.3', 277 => '0.2', 279 => '2.4', 281 => '2.3' },
      -	'afassistbeam' => { 2 => 0x8, 81 => 0x50e, 82 => 0x4, 83 => 0x5, 84 => 0x4, 85 => 0x4, 86 => 0x5 },
      -	'afassistlamp' => { 306 => 0x31 },
      -	'afbuttonpressed' => { 395 => [0x83,0x283] },
      +	'afareaselectmethod' => { 84 => 0x51b },
      +	'afareawidth' => { 193 => [0x18,0x32,0x4e], 194 => 0x46 },
      +	'afareaxposition' => { 193 => [0x14,0x2e,0x4a], 387 => 0x1203 },
      +	'afareaxposition1' => { 387 => 0x1201 },
      +	'afareayposition' => { 193 => [0x16,0x30,0x4c], 387 => 0x1204 },
      +	'afareayposition1' => { 387 => 0x1202 },
      +	'afareazonesize' => { 126 => '0.5' },
      +	'afassist' => { 82 => 0x5, 90 => 0x5, 184 => 0x48, 279 => '2.5', 281 => '0.2', 284 => '0.2', 285 => '1.1', 286 => '1.1', 287 => '1.3', 288 => '2.4', 289 => '1.3', 290 => '0.2', 292 => '2.4', 294 => '2.3' },
      +	'afassistbeam' => { 2 => 0x8, 84 => 0x50e, 85 => 0x4, 86 => 0x5, 87 => 0x4, 88 => 0x4, 89 => 0x5 },
      +	'afassistlamp' => { 320 => 0x31 },
      +	'afbuttonpressed' => { 409 => [0x83,0x283] },
       	'afconfigtool' => { 2 => 0x1 },
      -	'afdefocus' => { 317 => 0x6 },
      -	'afduringliveview' => { 81 => 0x511 },
      -	'affinea' => { 456 => 'AffineA' },
      -	'affineb' => { 456 => 'AffineB' },
      -	'affinec' => { 456 => 'AffineC' },
      -	'affined' => { 456 => 'AffineD' },
      -	'affinetune' => { 189 => 0x0, 283 => 0x306 },
      -	'affinetuneadj' => { 189 => 0x2, 230 => 0x2d1, 231 => 0x2dc, 283 => 0x307 },
      -	'affinetuneindex' => { 189 => 0x1 },
      -	'affinex' => { 456 => 'AffineX' },
      -	'affiney' => { 456 => 'AffineY' },
      -	'afhold' => { 317 => 0x1fd },
      -	'afilluminator' => { 393 => 0x29, 406 => 0xb044 },
      -	'afimageheight' => { 188 => [0x12,0x2c,0x48] },
      -	'afimagewidth' => { 188 => [0x10,0x2a,0x46] },
      -	'afintegrationtime' => { 317 => 0x7 },
      -	'afmicroadj' => { 386 => [0x17d,0x50] },
      -	'afmicroadjmode' => { 3 => 0x1, 390 => 0x131 },
      -	'afmicroadjregisteredlenses' => { 390 => '305.1' },
      -	'afmicroadjustment' => { 81 => 0x507 },
      -	'afmicroadjvalue' => { 3 => 0x2, 390 => 0x130 },
      -	'afmode' => { 110 => 0x3009, 124 => 0x1022, 175 => 0x16, 383 => 0x5 },
      -	'afmoderestrictions' => { 267 => '50.3', 269 => '48.3', 270 => '48.3', 279 => '48.3', 280 => '48.3' },
      -	'afonaelockbuttonswitch' => { 81 => 0x702 },
      -	'afonbutton' => { 266 => '3.1', 267 => '47.1' },
      -	'afpoint' => { 34 => 0x13, 109 => 0x18, 175 => 0x15, 187 => 0x1, 286 => 0x308, 383 => 0x1f, 386 => [0x37,0x7], 390 => 0x19, 391 => 0x18, 392 => [0x18,0x20] },
      -	'afpointactivationarea' => { 80 => 0x11, 86 => 0x11 },
      -	'afpointareaexpansion' => { 81 => 0x508 },
      -	'afpointatshutterrelease' => { 386 => [0x39,0x9] },
      -	'afpointautoselection' => { 81 => 0x50b },
      -	'afpointbrightness' => { 81 => 0x50d, 266 => '2.4', 267 => '46.5', 269 => '2.2', 270 => '2.2', 279 => '2.3', 280 => '2.2' },
      -	'afpointdisplayduringfocus' => { 2 => 0x10, 81 => 0x50c },
      -	'afpointillumination' => { 80 => 0xa, 266 => '2.3', 267 => '46.2', 269 => '47.2', 270 => '47.2', 274 => '1.2', 275 => '2.3', 276 => '1.2', 279 => '47.2', 280 => '47.2', 281 => '2.4' },
      -	'afpointinfocus' => { 386 => [0x38,0x8] },
      -	'afpointmode' => { 322 => 0x3 },
      -	'afpointposition' => { 110 => 0x2021, 306 => 0x4d },
      -	'afpointregistration' => { 79 => 0x7 },
      -	'afpoints' => { 178 => 0x10 },
      -	'afpointselected' => { 179 => 0xd, 283 => 0x305, 341 => 0xe, 390 => 0x15, 391 => 0x14, 392 => [0x14,0x1c], 406 => 0x201e },
      -	'afpointselected2' => { 322 => 0x4 },
      -	'afpointselection' => { 80 => 0xb, 266 => '1.3', 267 => '1.3', 275 => '1.3', 279 => '1.3', 280 => '1.3' },
      -	'afpointselectionmethod' => { 81 => 0x50f, 82 => 0xc, 83 => 0xd, 86 => 0xd },
      -	'afpointsetting' => { 393 => 0x12, 394 => 0x11 },
      -	'afpointsinfocus' => { 74 => 0xe, 187 => 0x2, 317 => 0xb, 318 => 0x4, 341 => [0xf,0x3c] },
      +	'afdefocus' => { 331 => 0x6 },
      +	'afduringliveview' => { 84 => 0x511 },
      +	'affinea' => { 471 => 'AffineA' },
      +	'affineb' => { 471 => 'AffineB' },
      +	'affinec' => { 471 => 'AffineC' },
      +	'affined' => { 471 => 'AffineD' },
      +	'affinetune' => { 195 => 0x0, 229 => 0x5b0, 297 => 0x306 },
      +	'affinetuneadj' => { 195 => 0x2, 240 => 0x2d1, 241 => 0x2dc, 297 => 0x307 },
      +	'affinetuneadjtele' => { 195 => 0x3 },
      +	'affinetuneindex' => { 195 => 0x1 },
      +	'affinex' => { 471 => 'AffineX' },
      +	'affiney' => { 471 => 'AffineY' },
      +	'affocuspointxposition' => { 193 => 0x2f },
      +	'affocuspointyposition' => { 193 => 0x31 },
      +	'afhold' => { 331 => 0x1fd },
      +	'afilluminator' => { 407 => 0x29, 420 => 0xb044 },
      +	'afimageheight' => { 193 => [0x12,0x2c,0x48], 194 => 0x40 },
      +	'afimagewidth' => { 193 => [0x10,0x2a,0x46], 194 => 0x3e },
      +	'afintegrationtime' => { 331 => 0x7 },
      +	'afmicroadj' => { 400 => [0x17d,0x50] },
      +	'afmicroadjmode' => { 3 => 0x1, 404 => 0x131 },
      +	'afmicroadjregisteredlenses' => { 404 => '305.1' },
      +	'afmicroadjustment' => { 84 => 0x507 },
      +	'afmicroadjvalue' => { 3 => 0x2, 404 => 0x130 },
      +	'afmode' => { 113 => 0x3009, 127 => 0x1022, 180 => 0x16, 397 => 0x5 },
      +	'afmoderestrictions' => { 280 => '50.3', 282 => '48.3', 283 => '48.3', 292 => '48.3', 293 => '48.3' },
      +	'afonaelockbuttonswitch' => { 84 => 0x702 },
      +	'afonbutton' => { 279 => '3.1', 280 => '47.1', 295 => 0x83 },
      +	'afpoint' => { 34 => 0x13, 112 => 0x18, 180 => 0x15, 192 => 0x1, 300 => 0x308, 397 => 0x1f, 400 => [0x37,0x7], 404 => 0x19, 405 => 0x18, 406 => [0x18,0x20] },
      +	'afpointactivationarea' => { 83 => 0x11, 89 => 0x11 },
      +	'afpointareaexpansion' => { 84 => 0x508 },
      +	'afpointatshutterrelease' => { 400 => [0x39,0x9] },
      +	'afpointautoselection' => { 84 => 0x50b },
      +	'afpointbrightness' => { 84 => 0x50d, 279 => '2.4', 280 => '46.5', 282 => '2.2', 283 => '2.2', 292 => '2.3', 293 => '2.2' },
      +	'afpointdisplayduringfocus' => { 2 => 0x10, 84 => 0x50c },
      +	'afpointillumination' => { 83 => 0xa, 279 => '2.3', 280 => '46.2', 282 => '47.2', 283 => '47.2', 287 => '1.2', 288 => '2.3', 289 => '1.2', 292 => '47.2', 293 => '47.2', 294 => '2.4' },
      +	'afpointinfocus' => { 400 => [0x38,0x8] },
      +	'afpointmode' => { 336 => 0x3 },
      +	'afpointposition' => { 113 => 0x2021, 320 => 0x4d },
      +	'afpointregistration' => { 82 => 0x7 },
      +	'afpoints' => { 183 => 0x10 },
      +	'afpointsel' => { 295 => 0xb },
      +	'afpointselected' => { 184 => 0xd, 297 => 0x305, 355 => 0xe, 404 => 0x15, 405 => 0x14, 406 => [0x14,0x1c], 420 => 0x201e },
      +	'afpointselected2' => { 336 => 0x4 },
      +	'afpointselection' => { 83 => 0xb, 279 => '1.3', 280 => '1.3', 288 => '1.3', 292 => '1.3', 293 => '1.3' },
      +	'afpointselectionmethod' => { 84 => 0x50f, 85 => 0xc, 86 => 0xd, 89 => 0xd },
      +	'afpointsetting' => { 407 => 0x12, 408 => 0x11 },
      +	'afpointsinfocus' => { 77 => 0xe, 192 => 0x2, 193 => 0x30, 331 => 0xb, 332 => 0x4, 355 => [0xf,0x3c] },
       	'afpointsinfocus5d' => { 19 => 0x38 },
      -	'afpointspotmetering' => { 80 => 0xd },
      -	'afpointsselected' => { 318 => '4.1', 437 => 0x4 },
      -	'afpointsspecial' => { 318 => '4.2' },
      -	'afpointsunknown1' => { 317 => 0x0 },
      -	'afpointsunknown2' => { 317 => 0x2 },
      -	'afpointsused' => { 188 => 0x8, 386 => [0x10,0x16e] },
      +	'afpointspotmetering' => { 83 => 0xd },
      +	'afpointsselected' => { 193 => 0x1c, 332 => '4.1', 452 => 0x4 },
      +	'afpointsspecial' => { 332 => '4.2' },
      +	'afpointsunknown1' => { 331 => 0x0 },
      +	'afpointsunknown2' => { 331 => 0x2 },
      +	'afpointsused' => { 193 => [0xa,0x8], 400 => [0x10,0x16e] },
       	'afpointswitching' => { 2 => 0x4 },
      -	'afpredictor' => { 317 => 0x4 },
      -	'afresponse' => { 219 => 0xad },
      -	'afresult' => { 288 => 0x1038 },
      -	'afsearch' => { 283 => 0x303 },
      -	'afsensoractive' => { 175 => 0x1 },
      -	'afstatus' => { 373 => 0x1200 },
      -	'afstatus_00_b4' => { 389 => 0x0 },
      -	'afstatus_01_c4' => { 389 => 0x2 },
      -	'afstatus_02_d4' => { 389 => 0x4 },
      -	'afstatus_03_e4' => { 389 => 0x6 },
      -	'afstatus_04_f4' => { 389 => 0x8 },
      -	'afstatus_05_g4' => { 389 => 0xa },
      -	'afstatus_06_h4' => { 389 => 0xc },
      -	'afstatus_07_b3' => { 389 => 0xe },
      -	'afstatus_08_c3' => { 389 => 0x10 },
      -	'afstatus_09_d3' => { 389 => 0x12 },
      -	'afstatus_10_e3' => { 389 => 0x14 },
      -	'afstatus_11_f3' => { 389 => 0x16 },
      -	'afstatus_12_g3' => { 389 => 0x18 },
      -	'afstatus_13_h3' => { 389 => 0x1a },
      -	'afstatus_14_b2' => { 389 => 0x1c },
      -	'afstatus_15_c2' => { 389 => 0x1e },
      -	'afstatus_16_d2' => { 389 => 0x20 },
      -	'afstatus_17_e2' => { 389 => 0x22 },
      -	'afstatus_18_f2' => { 389 => 0x24 },
      -	'afstatus_19_g2' => { 389 => 0x26 },
      -	'afstatus_20_h2' => { 389 => 0x28 },
      -	'afstatus_21_c1' => { 389 => 0x2a },
      -	'afstatus_22_d1' => { 389 => 0x2c },
      -	'afstatus_23_e1' => { 389 => 0x2e },
      -	'afstatus_24_f1' => { 389 => 0x30 },
      -	'afstatus_25_g1' => { 389 => 0x32 },
      -	'afstatus_26_a7_vertical' => { 389 => 0x34 },
      -	'afstatus_27_a6_vertical' => { 389 => 0x36 },
      -	'afstatus_28_a5_vertical' => { 389 => 0x38 },
      -	'afstatus_29_c7_vertical' => { 389 => 0x3a },
      -	'afstatus_30_c6_vertical' => { 389 => 0x3c },
      -	'afstatus_31_c5_vertical' => { 389 => 0x3e },
      -	'afstatus_32_e7_vertical' => { 389 => 0x40 },
      -	'afstatus_33_e6_center_vertical' => { 389 => 0x42 },
      -	'afstatus_34_e5_vertical' => { 389 => 0x44 },
      -	'afstatus_35_g7_vertical' => { 389 => 0x46 },
      -	'afstatus_36_g6_vertical' => { 389 => 0x48 },
      -	'afstatus_37_g5_vertical' => { 389 => 0x4a },
      -	'afstatus_38_i7_vertical' => { 389 => 0x4c },
      -	'afstatus_39_i6_vertical' => { 389 => 0x4e },
      -	'afstatus_40_i5_vertical' => { 389 => 0x50 },
      -	'afstatus_41_a7' => { 389 => 0x52 },
      -	'afstatus_42_b7' => { 389 => 0x54 },
      -	'afstatus_43_c7' => { 389 => 0x56 },
      -	'afstatus_44_d7' => { 389 => 0x58 },
      -	'afstatus_45_e7' => { 389 => 0x5a },
      -	'afstatus_46_f7' => { 389 => 0x5c },
      -	'afstatus_47_g7' => { 389 => 0x5e },
      -	'afstatus_48_h7' => { 389 => 0x60 },
      -	'afstatus_49_i7' => { 389 => 0x62 },
      -	'afstatus_50_a6' => { 389 => 0x64 },
      -	'afstatus_51_b6' => { 389 => 0x66 },
      -	'afstatus_52_c6' => { 389 => 0x68 },
      -	'afstatus_53_d6' => { 389 => 0x6a },
      -	'afstatus_54_e6_center' => { 389 => 0x6c },
      -	'afstatus_55_f6' => { 389 => 0x6e },
      -	'afstatus_56_g6' => { 389 => 0x70 },
      -	'afstatus_57_h6' => { 389 => 0x72 },
      -	'afstatus_58_i6' => { 389 => 0x74 },
      -	'afstatus_59_a5' => { 389 => 0x76 },
      -	'afstatus_60_b5' => { 389 => 0x78 },
      -	'afstatus_61_c5' => { 389 => 0x7a },
      -	'afstatus_62_d5' => { 389 => 0x7c },
      -	'afstatus_63_e5' => { 389 => 0x7e },
      -	'afstatus_64_f5' => { 389 => 0x80 },
      -	'afstatus_65_g5' => { 389 => 0x82 },
      -	'afstatus_66_h5' => { 389 => 0x84 },
      -	'afstatus_67_i5' => { 389 => 0x86 },
      -	'afstatus_68_c11' => { 389 => 0x88 },
      -	'afstatus_69_d11' => { 389 => 0x8a },
      -	'afstatus_70_e11' => { 389 => 0x8c },
      -	'afstatus_71_f11' => { 389 => 0x8e },
      -	'afstatus_72_g11' => { 389 => 0x90 },
      -	'afstatus_73_b10' => { 389 => 0x92 },
      -	'afstatus_74_c10' => { 389 => 0x94 },
      -	'afstatus_75_d10' => { 389 => 0x96 },
      -	'afstatus_76_e10' => { 389 => 0x98 },
      -	'afstatus_77_f10' => { 389 => 0x9a },
      -	'afstatus_78_g10' => { 389 => 0x9c },
      -	'afstatus_79_h10' => { 389 => 0x9e },
      -	'afstatus_80_b9' => { 389 => 0xa0 },
      -	'afstatus_81_c9' => { 389 => 0xa2 },
      -	'afstatus_82_d9' => { 389 => 0xa4 },
      -	'afstatus_83_e9' => { 389 => 0xa6 },
      -	'afstatus_84_f9' => { 389 => 0xa8 },
      -	'afstatus_85_g9' => { 389 => 0xaa },
      -	'afstatus_86_h9' => { 389 => 0xac },
      -	'afstatus_87_b8' => { 389 => 0xae },
      -	'afstatus_88_c8' => { 389 => 0xb0 },
      -	'afstatus_89_d8' => { 389 => 0xb2 },
      -	'afstatus_90_e8' => { 389 => 0xb4 },
      -	'afstatus_91_f8' => { 389 => 0xb6 },
      -	'afstatus_92_g8' => { 389 => 0xb8 },
      -	'afstatus_93_h8' => { 389 => 0xba },
      -	'afstatus_94_e6_center_f2-8' => { 389 => 0xbc },
      -	'afstatusactivesensor' => { 175 => 0x2, 386 => [0x4,0x3b], 390 => 0x1e, 391 => 0x1b, 392 => [0x1b,0x21] },
      -	'afstatusbottom' => { 175 => 0x8, 390 => 0x2a, 391 => 0x21, 392 => 0x21 },
      -	'afstatusbottom-left' => { 175 => 0x12, 391 => 0x2b, 392 => 0x2b },
      -	'afstatusbottom-right' => { 175 => 0x6, 391 => 0x1f, 392 => 0x1f },
      -	'afstatusbottomassist-left' => { 390 => 0x28 },
      -	'afstatusbottomassist-right' => { 390 => 0x2c },
      -	'afstatusbottomhorizontal' => { 387 => 0x10, 388 => 0x1c },
      -	'afstatusbottomvertical' => { 387 => 0x16, 388 => 0x26 },
      -	'afstatuscenter-10' => { 390 => 0x34 },
      -	'afstatuscenter-11' => { 390 => 0x36 },
      -	'afstatuscenter-12' => { 390 => 0x38 },
      -	'afstatuscenter-14' => { 390 => 0x3c },
      -	'afstatuscenter-7' => { 390 => 0x2e },
      -	'afstatuscenter-9' => { 390 => 0x32 },
      -	'afstatuscenter-horizontal' => { 390 => 0x30 },
      -	'afstatuscenter-vertical' => { 390 => 0x3a },
      -	'afstatuscenterf2-8' => { 390 => 0x4c },
      -	'afstatuscenterhorizontal' => { 175 => 0x2f, 387 => 0xc, 388 => 0x18, 391 => 0x2f, 392 => 0x2f },
      -	'afstatuscentervertical' => { 175 => 0xc, 387 => 0x14, 388 => 0x22, 391 => 0x25, 392 => 0x25 },
      -	'afstatusfarleft' => { 387 => 0x6, 390 => 0x26 },
      -	'afstatusfarlefthorizontal' => { 388 => 0x4 },
      -	'afstatusfarleftvertical' => { 388 => 0x12 },
      -	'afstatusfarright' => { 387 => 0x18, 390 => 0x44 },
      -	'afstatusfarrighthorizontal' => { 388 => 0x2c },
      -	'afstatusfarrightvertical' => { 388 => 0x34 },
      -	'afstatusleft' => { 175 => 0x2d, 387 => 0x2, 390 => 0x22, 391 => 0x2d, 392 => 0x2d },
      -	'afstatuslefthorizontal' => { 388 => 0x6 },
      -	'afstatusleftvertical' => { 388 => 0xe },
      -	'afstatuslower-left' => { 387 => 0x4, 390 => 0x24 },
      -	'afstatuslower-lefthorizontal' => { 388 => 0xa },
      -	'afstatuslower-leftvertical' => { 388 => 0x10 },
      -	'afstatuslower-middle' => { 387 => 0x22, 388 => 0x24 },
      -	'afstatuslower-right' => { 387 => 0x1e, 390 => 0x4a },
      -	'afstatuslower-righthorizontal' => { 388 => 0x32 },
      -	'afstatuslower-rightvertical' => { 388 => 0x3a },
      -	'afstatuslowerfarleft' => { 388 => 0x8 },
      -	'afstatuslowerfarright' => { 388 => 0x30 },
      -	'afstatusmiddlehorizontal' => { 175 => 0xa, 391 => 0x23, 392 => 0x23 },
      -	'afstatusnearleft' => { 387 => 0xe, 388 => 0x1a },
      -	'afstatusnearright' => { 387 => 0xa, 388 => 0x16 },
      -	'afstatusright' => { 175 => 0x31, 387 => 0x1c, 390 => 0x48, 391 => 0x31, 392 => 0x31 },
      -	'afstatusrighthorizontal' => { 388 => 0x2e },
      -	'afstatusrightvertical' => { 388 => 0x38 },
      -	'afstatustop' => { 175 => 0xe, 390 => 0x40, 391 => 0x27, 392 => 0x27 },
      -	'afstatustop-left' => { 175 => 0x10, 391 => 0x29, 392 => 0x29 },
      -	'afstatustop-right' => { 175 => 0x4, 391 => 0x1d, 392 => 0x1d },
      -	'afstatustopassist-left' => { 390 => 0x3e },
      -	'afstatustopassist-right' => { 390 => 0x42 },
      -	'afstatustophorizontal' => { 387 => 0x8, 388 => 0x14 },
      -	'afstatustopvertical' => { 387 => 0x12, 388 => 0x1e },
      -	'afstatusupper-left' => { 387 => 0x0, 390 => 0x20 },
      -	'afstatusupper-lefthorizontal' => { 388 => 0x2 },
      -	'afstatusupper-leftvertical' => { 388 => 0xc },
      -	'afstatusupper-middle' => { 387 => 0x20, 388 => 0x20 },
      -	'afstatusupper-right' => { 387 => 0x1a, 390 => 0x46 },
      -	'afstatusupper-righthorizontal' => { 388 => 0x2a },
      -	'afstatusupper-rightvertical' => { 388 => 0x36 },
      -	'afstatusupperfarleft' => { 388 => 0x0 },
      -	'afstatusupperfarright' => { 388 => 0x28 },
      +	'afpredictor' => { 331 => 0x4 },
      +	'afresponse' => { 226 => 0xad },
      +	'afresult' => { 302 => 0x1038 },
      +	'afsearch' => { 297 => 0x303 },
      +	'afsensoractive' => { 180 => 0x1 },
      +	'afstatus' => { 387 => 0x1200 },
      +	'afstatus_00_b4' => { 403 => 0x0 },
      +	'afstatus_01_c4' => { 403 => 0x2 },
      +	'afstatus_02_d4' => { 403 => 0x4 },
      +	'afstatus_03_e4' => { 403 => 0x6 },
      +	'afstatus_04_f4' => { 403 => 0x8 },
      +	'afstatus_05_g4' => { 403 => 0xa },
      +	'afstatus_06_h4' => { 403 => 0xc },
      +	'afstatus_07_b3' => { 403 => 0xe },
      +	'afstatus_08_c3' => { 403 => 0x10 },
      +	'afstatus_09_d3' => { 403 => 0x12 },
      +	'afstatus_10_e3' => { 403 => 0x14 },
      +	'afstatus_11_f3' => { 403 => 0x16 },
      +	'afstatus_12_g3' => { 403 => 0x18 },
      +	'afstatus_13_h3' => { 403 => 0x1a },
      +	'afstatus_14_b2' => { 403 => 0x1c },
      +	'afstatus_15_c2' => { 403 => 0x1e },
      +	'afstatus_16_d2' => { 403 => 0x20 },
      +	'afstatus_17_e2' => { 403 => 0x22 },
      +	'afstatus_18_f2' => { 403 => 0x24 },
      +	'afstatus_19_g2' => { 403 => 0x26 },
      +	'afstatus_20_h2' => { 403 => 0x28 },
      +	'afstatus_21_c1' => { 403 => 0x2a },
      +	'afstatus_22_d1' => { 403 => 0x2c },
      +	'afstatus_23_e1' => { 403 => 0x2e },
      +	'afstatus_24_f1' => { 403 => 0x30 },
      +	'afstatus_25_g1' => { 403 => 0x32 },
      +	'afstatus_26_a7_vertical' => { 403 => 0x34 },
      +	'afstatus_27_a6_vertical' => { 403 => 0x36 },
      +	'afstatus_28_a5_vertical' => { 403 => 0x38 },
      +	'afstatus_29_c7_vertical' => { 403 => 0x3a },
      +	'afstatus_30_c6_vertical' => { 403 => 0x3c },
      +	'afstatus_31_c5_vertical' => { 403 => 0x3e },
      +	'afstatus_32_e7_vertical' => { 403 => 0x40 },
      +	'afstatus_33_e6_center_vertical' => { 403 => 0x42 },
      +	'afstatus_34_e5_vertical' => { 403 => 0x44 },
      +	'afstatus_35_g7_vertical' => { 403 => 0x46 },
      +	'afstatus_36_g6_vertical' => { 403 => 0x48 },
      +	'afstatus_37_g5_vertical' => { 403 => 0x4a },
      +	'afstatus_38_i7_vertical' => { 403 => 0x4c },
      +	'afstatus_39_i6_vertical' => { 403 => 0x4e },
      +	'afstatus_40_i5_vertical' => { 403 => 0x50 },
      +	'afstatus_41_a7' => { 403 => 0x52 },
      +	'afstatus_42_b7' => { 403 => 0x54 },
      +	'afstatus_43_c7' => { 403 => 0x56 },
      +	'afstatus_44_d7' => { 403 => 0x58 },
      +	'afstatus_45_e7' => { 403 => 0x5a },
      +	'afstatus_46_f7' => { 403 => 0x5c },
      +	'afstatus_47_g7' => { 403 => 0x5e },
      +	'afstatus_48_h7' => { 403 => 0x60 },
      +	'afstatus_49_i7' => { 403 => 0x62 },
      +	'afstatus_50_a6' => { 403 => 0x64 },
      +	'afstatus_51_b6' => { 403 => 0x66 },
      +	'afstatus_52_c6' => { 403 => 0x68 },
      +	'afstatus_53_d6' => { 403 => 0x6a },
      +	'afstatus_54_e6_center' => { 403 => 0x6c },
      +	'afstatus_55_f6' => { 403 => 0x6e },
      +	'afstatus_56_g6' => { 403 => 0x70 },
      +	'afstatus_57_h6' => { 403 => 0x72 },
      +	'afstatus_58_i6' => { 403 => 0x74 },
      +	'afstatus_59_a5' => { 403 => 0x76 },
      +	'afstatus_60_b5' => { 403 => 0x78 },
      +	'afstatus_61_c5' => { 403 => 0x7a },
      +	'afstatus_62_d5' => { 403 => 0x7c },
      +	'afstatus_63_e5' => { 403 => 0x7e },
      +	'afstatus_64_f5' => { 403 => 0x80 },
      +	'afstatus_65_g5' => { 403 => 0x82 },
      +	'afstatus_66_h5' => { 403 => 0x84 },
      +	'afstatus_67_i5' => { 403 => 0x86 },
      +	'afstatus_68_c11' => { 403 => 0x88 },
      +	'afstatus_69_d11' => { 403 => 0x8a },
      +	'afstatus_70_e11' => { 403 => 0x8c },
      +	'afstatus_71_f11' => { 403 => 0x8e },
      +	'afstatus_72_g11' => { 403 => 0x90 },
      +	'afstatus_73_b10' => { 403 => 0x92 },
      +	'afstatus_74_c10' => { 403 => 0x94 },
      +	'afstatus_75_d10' => { 403 => 0x96 },
      +	'afstatus_76_e10' => { 403 => 0x98 },
      +	'afstatus_77_f10' => { 403 => 0x9a },
      +	'afstatus_78_g10' => { 403 => 0x9c },
      +	'afstatus_79_h10' => { 403 => 0x9e },
      +	'afstatus_80_b9' => { 403 => 0xa0 },
      +	'afstatus_81_c9' => { 403 => 0xa2 },
      +	'afstatus_82_d9' => { 403 => 0xa4 },
      +	'afstatus_83_e9' => { 403 => 0xa6 },
      +	'afstatus_84_f9' => { 403 => 0xa8 },
      +	'afstatus_85_g9' => { 403 => 0xaa },
      +	'afstatus_86_h9' => { 403 => 0xac },
      +	'afstatus_87_b8' => { 403 => 0xae },
      +	'afstatus_88_c8' => { 403 => 0xb0 },
      +	'afstatus_89_d8' => { 403 => 0xb2 },
      +	'afstatus_90_e8' => { 403 => 0xb4 },
      +	'afstatus_91_f8' => { 403 => 0xb6 },
      +	'afstatus_92_g8' => { 403 => 0xb8 },
      +	'afstatus_93_h8' => { 403 => 0xba },
      +	'afstatus_94_e6_center_f2-8' => { 403 => 0xbc },
      +	'afstatusactivesensor' => { 180 => 0x2, 400 => [0x4,0x3b], 404 => 0x1e, 405 => 0x1b, 406 => [0x1b,0x21] },
      +	'afstatusbottom' => { 180 => 0x8, 404 => 0x2a, 405 => 0x21, 406 => 0x21 },
      +	'afstatusbottom-left' => { 180 => 0x12, 405 => 0x2b, 406 => 0x2b },
      +	'afstatusbottom-right' => { 180 => 0x6, 405 => 0x1f, 406 => 0x1f },
      +	'afstatusbottomassist-left' => { 404 => 0x28 },
      +	'afstatusbottomassist-right' => { 404 => 0x2c },
      +	'afstatusbottomhorizontal' => { 401 => 0x10, 402 => 0x1c },
      +	'afstatusbottomvertical' => { 401 => 0x16, 402 => 0x26 },
      +	'afstatuscenter-10' => { 404 => 0x34 },
      +	'afstatuscenter-11' => { 404 => 0x36 },
      +	'afstatuscenter-12' => { 404 => 0x38 },
      +	'afstatuscenter-14' => { 404 => 0x3c },
      +	'afstatuscenter-7' => { 404 => 0x2e },
      +	'afstatuscenter-9' => { 404 => 0x32 },
      +	'afstatuscenter-horizontal' => { 404 => 0x30 },
      +	'afstatuscenter-vertical' => { 404 => 0x3a },
      +	'afstatuscenterf2-8' => { 404 => 0x4c },
      +	'afstatuscenterhorizontal' => { 180 => 0x2f, 401 => 0xc, 402 => 0x18, 405 => 0x2f, 406 => 0x2f },
      +	'afstatuscentervertical' => { 180 => 0xc, 401 => 0x14, 402 => 0x22, 405 => 0x25, 406 => 0x25 },
      +	'afstatusfarleft' => { 401 => 0x6, 404 => 0x26 },
      +	'afstatusfarlefthorizontal' => { 402 => 0x4 },
      +	'afstatusfarleftvertical' => { 402 => 0x12 },
      +	'afstatusfarright' => { 401 => 0x18, 404 => 0x44 },
      +	'afstatusfarrighthorizontal' => { 402 => 0x2c },
      +	'afstatusfarrightvertical' => { 402 => 0x34 },
      +	'afstatusleft' => { 180 => 0x2d, 401 => 0x2, 404 => 0x22, 405 => 0x2d, 406 => 0x2d },
      +	'afstatuslefthorizontal' => { 402 => 0x6 },
      +	'afstatusleftvertical' => { 402 => 0xe },
      +	'afstatuslower-left' => { 401 => 0x4, 404 => 0x24 },
      +	'afstatuslower-lefthorizontal' => { 402 => 0xa },
      +	'afstatuslower-leftvertical' => { 402 => 0x10 },
      +	'afstatuslower-middle' => { 401 => 0x22, 402 => 0x24 },
      +	'afstatuslower-right' => { 401 => 0x1e, 404 => 0x4a },
      +	'afstatuslower-righthorizontal' => { 402 => 0x32 },
      +	'afstatuslower-rightvertical' => { 402 => 0x3a },
      +	'afstatuslowerfarleft' => { 402 => 0x8 },
      +	'afstatuslowerfarright' => { 402 => 0x30 },
      +	'afstatusmiddlehorizontal' => { 180 => 0xa, 405 => 0x23, 406 => 0x23 },
      +	'afstatusnearleft' => { 401 => 0xe, 402 => 0x1a },
      +	'afstatusnearright' => { 401 => 0xa, 402 => 0x16 },
      +	'afstatusright' => { 180 => 0x31, 401 => 0x1c, 404 => 0x48, 405 => 0x31, 406 => 0x31 },
      +	'afstatusrighthorizontal' => { 402 => 0x2e },
      +	'afstatusrightvertical' => { 402 => 0x38 },
      +	'afstatustop' => { 180 => 0xe, 404 => 0x40, 405 => 0x27, 406 => 0x27 },
      +	'afstatustop-left' => { 180 => 0x10, 405 => 0x29, 406 => 0x29 },
      +	'afstatustop-right' => { 180 => 0x4, 405 => 0x1d, 406 => 0x1d },
      +	'afstatustopassist-left' => { 404 => 0x3e },
      +	'afstatustopassist-right' => { 404 => 0x42 },
      +	'afstatustophorizontal' => { 401 => 0x8, 402 => 0x14 },
      +	'afstatustopvertical' => { 401 => 0x12, 402 => 0x1e },
      +	'afstatusupper-left' => { 401 => 0x0, 404 => 0x20 },
      +	'afstatusupper-lefthorizontal' => { 402 => 0x2 },
      +	'afstatusupper-leftvertical' => { 402 => 0xc },
      +	'afstatusupper-middle' => { 401 => 0x20, 402 => 0x20 },
      +	'afstatusupper-right' => { 401 => 0x1a, 404 => 0x46 },
      +	'afstatusupper-righthorizontal' => { 402 => 0x2a },
      +	'afstatusupper-rightvertical' => { 402 => 0x36 },
      +	'afstatusupperfarleft' => { 402 => 0x0 },
      +	'afstatusupperfarright' => { 402 => 0x28 },
       	'afstatusviewfinder' => { 2 => 0x12 },
      -	'aftracking' => { 406 => 0x2021 },
      +	'aftracking' => { 420 => 0x2021 },
       	'aftrackingsensitivity' => { 2 => 0x2 },
      -	'aftype' => { 386 => 0x2 },
      -	'afwithshutter' => { 393 => 0x2a },
      -	'aggregateissuenumber' => { 478 => 'aggregateIssueNumber' },
      -	'aggregationtype' => { 478 => 'aggregationType' },
      -	'agreement' => { 481 => 'agreement' },
      -	'ah2greeninterpolationthreshold' => { 134 => 0xe4e },
      -	'aiservocontinuousshooting' => { 80 => 0x15 },
      +	'aftype' => { 400 => 0x2 },
      +	'afwithshutter' => { 407 => 0x2a },
      +	'aggregateissuenumber' => { 493 => 'aggregateIssueNumber' },
      +	'aggregationtype' => { 493 => 'aggregationType' },
      +	'agreement' => { 496 => 'agreement' },
      +	'ah2greeninterpolationthreshold' => { 138 => 0xe4e },
      +	'airplanemode' => { 229 => 0x624 },
      +	'aiservocontinuousshooting' => { 83 => 0x15 },
       	'aiservofirstimage' => { 2 => 0x5 },
      -	'aiservofirstimagepriority' => { 81 => 0x519 },
      -	'aiservoimagepriority' => { 81 => 0x503 },
      +	'aiservofirstimagepriority' => { 84 => 0x519 },
      +	'aiservoimagepriority' => { 84 => 0x503 },
       	'aiservosecondimage' => { 2 => 0x6 },
      -	'aiservosecondimagepriority' => { 81 => 0x51a },
      -	'aiservotrackingmethod' => { 81 => 0x504 },
      -	'aiservotrackingsensitivity' => { 80 => 0x14, 81 => 0x502 },
      -	'album' => { 358 => ['albm',"\xa9alb"], 360 => 'album', 366 => ['albm',"\xa9alb"], 488 => 'album' },
      -	'albumartist' => { 358 => 'aART', 366 => 'albr' },
      -	'albumtitleid' => { 358 => 'atID' },
      -	'alreadyapplied' => { 462 => 'AlreadyApplied', 464 => 'AlreadyApplied' },
      -	'alternatetitle' => { 478 => 'alternateTitle' },
      -	'alternatetitlea-lang' => { 478 => [\'alternateTitle','alternateTitleA-lang'] },
      -	'alternatetitlea-platform' => { 478 => [\'alternateTitle','alternateTitleA-platform'] },
      -	'alternatetitletext' => { 478 => [\'alternateTitle','alternateTitleText'] },
      -	'altitude' => { 190 => 0x6 },
      -	'alttapename' => { 488 => 'altTapeName' },
      -	'alttimecode' => { 488 => 'altTimecode' },
      -	'alttimecodetimeformat' => { 488 => [\'altTimecode','altTimecodeTimeFormat'] },
      -	'alttimecodetimevalue' => { 488 => [\'altTimecode','altTimecodeTimeValue'] },
      -	'alttimecodevalue' => { 488 => [\'altTimecode','altTimecodeValue'] },
      +	'aiservosecondimagepriority' => { 84 => 0x51a },
      +	'aiservotrackingmethod' => { 84 => 0x504 },
      +	'aiservotrackingsensitivity' => { 83 => 0x14, 84 => 0x502 },
      +	'album' => { 372 => ['albm',"\xa9alb"], 374 => 'album', 380 => ['albm',"\xa9alb"], 503 => 'album' },
      +	'albumartist' => { 179 => 'WM/AlbumArtist', 372 => 'aART', 380 => 'albr' },
      +	'albumcoverurl' => { 179 => 'WM/AlbumCoverURL' },
      +	'albumtitle' => { 179 => 'WM/AlbumTitle' },
      +	'albumtitleid' => { 372 => 'atID' },
      +	'alreadyapplied' => { 477 => 'AlreadyApplied', 479 => 'AlreadyApplied' },
      +	'alternatetitle' => { 493 => 'alternateTitle' },
      +	'alternatetitlea-lang' => { 493 => [\'alternateTitle','alternateTitleA-lang'] },
      +	'alternatetitlea-platform' => { 493 => [\'alternateTitle','alternateTitleA-platform'] },
      +	'alternatetitletext' => { 493 => [\'alternateTitle','alternateTitleText'] },
      +	'altitude' => { 196 => 0x6 },
      +	'alttapename' => { 503 => 'altTapeName' },
      +	'alttextaccessibility' => { 488 => 'AltTextAccessibility' },
      +	'alttimecode' => { 503 => 'altTimecode' },
      +	'alttimecodetimeformat' => { 503 => [\'altTimecode','altTimecodeTimeFormat'] },
      +	'alttimecodetimevalue' => { 503 => [\'altTimecode','altTimecodeTimeValue'] },
      +	'alttimecodevalue' => { 503 => [\'altTimecode','altTimecodeValue'] },
       	'ambienceselection' => { 4 => 0x1 },
      -	'ambientinfrared' => { 369 => 0x5c },
      -	'ambientlight' => { 369 => 0x5e },
      -	'ambienttemperature' => { 116 => 0x9400, 367 => 0x14, 368 => 0x46, 369 => 0x50, 429 => 0x4, 469 => 'Temperature' },
      -	'ambienttemperaturefahrenheit' => { 367 => 0x13, 368 => 0x44, 369 => 0x4e },
      -	'analogbalance' => { 116 => 0xc627 },
      -	'analogcaptureiso' => { 134 => 0x89e },
      -	'analogisotable' => { 134 => 0x89d },
      -	'androidversion' => { 360 => 'com.android.version' },
      -	'angleadj' => { 100 => 0x10003, 106 => 0x8b },
      -	'angleinforoll' => { 458 => 'AngleInfoRoll' },
      -	'angleinfoyaw' => { 458 => 'AngleInfoYaw' },
      -	'anti-blur' => { 406 => 0xb04b },
      -	'antialiasstrength' => { 116 => 0xc632 },
      -	'aperturelock' => { 267 => '38.2', 269 => '38.2', 270 => '38.2', 279 => '38.2', 280 => '38.2' },
      -	'aperturemode' => { 366 => 'apmd' },
      -	'aperturerange' => { 81 => 0x10d },
      -	'apertureringuse' => { 322 => '1.4' },
      -	'aperturesetting' => { 179 => 0x7, 393 => 0x30, 394 => 0x29, 395 => 0x1 },
      -	'aperturevalue' => { 90 => 0x2, 116 => 0x9202, 288 => 0x1002, 350 => 0x401, 468 => 'ApertureValue' },
      -	'appinfo' => { 442 => 'AppInfo' },
      -	'appinfoapplication' => { 442 => [\'AppInfo','AppInfoApplication'] },
      -	'appinfoitemuri' => { 442 => [\'AppInfo','AppInfoItemURI'] },
      -	'appinfoversion' => { 442 => [\'AppInfo','AppInfoVersion'] },
      -	'applekeywords' => { 292 => 'AAPL:Keywords' },
      -	'applestoreaccount' => { 358 => 'apID' },
      -	'applestoreaccounttype' => { 358 => 'akID' },
      -	'applestorecatalogid' => { 358 => 'cnID' },
      -	'applestorecountry' => { 358 => 'sfID' },
      -	'applicationkeystring' => { 134 => 0x400 },
      -	'applicationnotes' => { 116 => 0x2bc, 311 => 0x2bc },
      -	'applicationrecordversion' => { 128 => 0x0 },
      -	'applyshootingmeteringmode' => { 81 => 0x10e },
      -	'approved' => { 470 => 'Approved' },
      -	'approvedby' => { 470 => 'ApprovedBy' },
      -	'approximatefnumber' => { 301 => 0x313, 308 => 0x3406 },
      -	'approximatefocusdistance' => { 459 => 'ApproximateFocusDistance' },
      -	'appversion' => { 472 => 'AppVersion' },
      -	'aps-csizecapture' => { 424 => 0x114, 425 => [0x114,0x1eb,0x1ee,0x21a,0x21c] },
      -	'aquahsl' => { 100 => 0x20914 },
      -	'armidentifier' => { 129 => 0x78 },
      -	'armversion' => { 129 => 0x7a },
      -	'arranger' => { 366 => "\xa9arg" },
      -	'arrangerkeywords' => { 366 => "\xa9ark" },
      -	'artfilter' => { 283 => 0x529 },
      -	'artfiltereffect' => { 283 => 0x52f },
      -	'artist' => { 116 => 0x13b, 296 => 'Artist', 341 => 0x22e, 358 => "\xa9ART", 360 => 'artist', 366 => "\xa9ART", 484 => 'Artist', 488 => 'artist' },
      -	'artmode' => { 110 => 0x301b },
      -	'artmodeparameters' => { 110 => 0x310b },
      -	'artwork' => { 360 => 'artwork' },
      -	'artworkcircadatecreated' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOCircaDateCreated'] },
      -	'artworkcontentdescription' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOContentDescription'] },
      -	'artworkcontributiondescription' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOContributionDescription'] },
      -	'artworkcopyrightnotice' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOCopyrightNotice'] },
      -	'artworkcopyrightownerid' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentCopyrightOwnerId'] },
      -	'artworkcopyrightownername' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentCopyrightOwnerName'] },
      -	'artworkcreator' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOCreator'] },
      -	'artworkcreatorid' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOCreatorId'] },
      -	'artworkdatecreated' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAODateCreated'] },
      -	'artworklicensorid' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentLicensorId'] },
      -	'artworklicensorname' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentLicensorName'] },
      -	'artworkorobject' => { 474 => 'ArtworkOrObject' },
      -	'artworkphysicaldescription' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOPhysicalDescription'] },
      -	'artworksource' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOSource'] },
      -	'artworksourceinventoryno' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOSourceInvNo'] },
      -	'artworksourceinvurl' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOSourceInvURL'] },
      -	'artworkstyleperiod' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOStylePeriod'] },
      -	'artworktitle' => { 474 => [\'ArtworkOrObject','ArtworkOrObjectAOTitle'] },
      -	'aspectframe' => { 287 => 0x1113 },
      -	'aspectratio' => { 5 => 0x0, 287 => 0x1112, 341 => 0x80, 393 => 0x55, 394 => 0x55, 395 => 0xa },
      -	'assetid' => { 452 => 'AssetID' },
      -	'asshoticcprofile' => { 116 => 0xc68f },
      -	'asshotneutral' => { 116 => 0xc628 },
      -	'asshotpreprofilematrix' => { 116 => 0xc690 },
      -	'asshotprofilename' => { 116 => 0xc6f6 },
      -	'asshotwhitexy' => { 116 => 0xc629 },
      -	'assignbktbutton' => { 266 => '4.2', 267 => '16.1', 269 => '16.1', 270 => '16.1', 279 => '16.1', 280 => '16.1' },
      -	'assignfuncbutton' => { 81 => 0x70b },
      -	'assignmb-d17af-onbutton' => { 270 => '79.1' },
      -	'assignmb-d17funcbutton' => { 270 => '67.1' },
      -	'assignmb-d17funcbuttonplusdials' => { 270 => '68.1' },
      -	'assignmb-d18af-onbutton' => { 280 => '79.1' },
      -	'assignmb-d18funcbutton' => { 280 => '67.1' },
      -	'assignmb-d18funcbuttonplusdials' => { 280 => '68.1' },
      -	'assignmoviefunc1buttonplusdials' => { 269 => '75.1', 270 => '75.1', 280 => '75.1' },
      -	'assignmoviefunc2button' => { 269 => '82.1', 270 => '82.1', 280 => '82.1' },
      -	'assignmoviepreviewbuttonplusdials' => { 269 => '75.2', 270 => '75.2', 280 => '75.2' },
      -	'assignmovierecordbutton' => { 267 => '43.2', 279 => '45.1' },
      -	'assignmovierecordbuttonplusdials' => { 269 => '45.1', 270 => '45.1', 280 => '45.1' },
      -	'assignmoviesubselector' => { 269 => '74.1', 270 => '74.1', 280 => '74.1' },
      -	'assignmoviesubselectorplusdials' => { 269 => '76.1', 270 => '76.1', 280 => '76.1' },
      -	'assignremotefnbutton' => { 267 => '54.1', 279 => '51.1' },
      -	'assistbuttonfunction' => { 79 => 0xd },
      -	'atcaptureusercrop' => { 134 => 0x943 },
      -	'attributionname' => { 460 => 'attributionName' },
      -	'attributionurl' => { 460 => 'attributionURL' },
      -	'audio' => { 306 => 0x20 },
      -	'audiobitrate' => { 64 => 0x6c, 474 => 'audioBitRate' },
      -	'audiobitratemode' => { 474 => 'audioBitRateMode' },
      -	'audiobitspersample' => { 474 => 'audioBitsPerSample' },
      -	'audiochannelcount' => { 474 => 'audioChannelCount' },
      -	'audiochannels' => { 64 => 0x70 },
      -	'audiochanneltype' => { 488 => 'audioChannelType' },
      -	'audiocompression' => { 81 => 0x816, 151 => 'Compression' },
      -	'audiocompressor' => { 488 => 'audioCompressor' },
      -	'audiodata' => { 444 => 'Data' },
      -	'audioduration' => { 128 => 0x99 },
      -	'audiogain' => { 360 => 'player.movie.audio.gain' },
      -	'audiomimetype' => { 444 => 'Mime' },
      -	'audiomoddate' => { 488 => 'audioModDate' },
      -	'audiooutcue' => { 128 => 0x9a },
      -	'audiosamplerate' => { 64 => 0x6e, 488 => 'audioSampleRate' },
      -	'audiosampletype' => { 488 => 'audioSampleType' },
      -	'audiosamplingrate' => { 128 => 0x97 },
      -	'audiosamplingresolution' => { 128 => 0x98 },
      -	'audiotype' => { 128 => 0x96 },
      -	'author' => { 153 => 'Author', 292 => 'Author', 296 => 'Author', 357 => 'Author', 358 => ['auth',"\xa9aut"], 360 => 'author', 366 => 'auth', 457 => 'author', 475 => 'Author', 486 => 'Author' },
      -	'authorsposition' => { 476 => 'AuthorsPosition' },
      -	'autoafpointcolortracking' => { 81 => 0x51c },
      +	'ambientinfrared' => { 383 => 0x5c },
      +	'ambientlight' => { 383 => 0x5e },
      +	'ambienttemperature' => { 119 => 0x9400, 381 => 0x14, 382 => 0x46, 383 => 0x50, 444 => 0x4, 484 => 'Temperature' },
      +	'ambienttemperaturefahrenheit' => { 381 => 0x13, 382 => 0x44, 383 => 0x4e },
      +	'analogbalance' => { 119 => 0xc627 },
      +	'analogcaptureiso' => { 138 => 0x89e },
      +	'analogisotable' => { 138 => 0x89d },
      +	'androidversion' => { 374 => 'com.android.version' },
      +	'angleadj' => { 103 => 0x10003, 109 => 0x8b },
      +	'angleinforoll' => { 473 => 'AngleInfoRoll' },
      +	'angleinfoyaw' => { 473 => 'AngleInfoYaw' },
      +	'anti-blur' => { 420 => 0xb04b },
      +	'antialiasstrength' => { 119 => 0xc632 },
      +	'aperturelock' => { 280 => '38.2', 282 => '38.2', 283 => '38.2', 292 => '38.2', 293 => '38.2', 295 => 0xb8 },
      +	'aperturemode' => { 380 => 'apmd' },
      +	'aperturerange' => { 84 => 0x10d },
      +	'apertureringuse' => { 336 => '1.4' },
      +	'aperturesetting' => { 184 => 0x7, 407 => 0x30, 408 => 0x29, 409 => 0x1 },
      +	'aperturevalue' => { 93 => 0x2, 119 => 0x9202, 302 => 0x1002, 364 => 0x401, 483 => 'ApertureValue' },
      +	'appinfo' => { 457 => 'AppInfo' },
      +	'appinfoapplication' => { 457 => [\'AppInfo','AppInfoApplication'] },
      +	'appinfoitemuri' => { 457 => [\'AppInfo','AppInfoItemURI'] },
      +	'appinfoversion' => { 457 => [\'AppInfo','AppInfoVersion'] },
      +	'applekeywords' => { 306 => 'AAPL:Keywords' },
      +	'applephotosvariationidentifier' => { 374 => 'apple.photos.variation-identifier' },
      +	'applestoreaccount' => { 372 => 'apID' },
      +	'applestoreaccounttype' => { 372 => 'akID' },
      +	'applestorecatalogid' => { 372 => 'cnID' },
      +	'applestorecountry' => { 372 => 'sfID' },
      +	'applicationkeystring' => { 138 => 0x400 },
      +	'applicationnotes' => { 119 => 0x2bc, 325 => 0x2bc },
      +	'applicationrecordversion' => { 131 => 0x0 },
      +	'applyshootingmeteringmode' => { 84 => 0x10e },
      +	'approved' => { 485 => 'Approved' },
      +	'approvedby' => { 485 => 'ApprovedBy' },
      +	'approximatefnumber' => { 315 => 0x313, 322 => 0x3406 },
      +	'approximatefocusdistance' => { 474 => 'ApproximateFocusDistance' },
      +	'appversion' => { 487 => 'AppVersion' },
      +	'aps-csizecapture' => { 438 => 0x114, 439 => [0x114,0x1eb,0x1ee,0x21a,0x21c] },
      +	'aquahsl' => { 103 => 0x20914 },
      +	'armidentifier' => { 132 => 0x78 },
      +	'armversion' => { 132 => 0x7a },
      +	'arranger' => { 372 => "\xa9arg", 380 => "\xa9arg" },
      +	'arrangerkeywords' => { 380 => "\xa9ark" },
      +	'artdirector' => { 372 => "\xa9ard" },
      +	'artfilter' => { 297 => 0x529 },
      +	'artfiltereffect' => { 297 => 0x52f },
      +	'artist' => { 119 => 0x13b, 310 => 'Artist', 355 => 0x22e, 372 => "\xa9ART", 374 => 'artist', 380 => "\xa9ART", 499 => 'Artist', 503 => 'artist' },
      +	'artmode' => { 113 => 0x301b },
      +	'artmodeparameters' => { 113 => 0x310b },
      +	'artwork' => { 374 => 'artwork' },
      +	'artworkcircadatecreated' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOCircaDateCreated'] },
      +	'artworkcontentdescription' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOContentDescription'] },
      +	'artworkcontributiondescription' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOContributionDescription'] },
      +	'artworkcopyrightnotice' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOCopyrightNotice'] },
      +	'artworkcopyrightownerid' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentCopyrightOwnerId'] },
      +	'artworkcopyrightownername' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentCopyrightOwnerName'] },
      +	'artworkcreator' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOCreator'] },
      +	'artworkcreatorid' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOCreatorId'] },
      +	'artworkdatecreated' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAODateCreated'] },
      +	'artworklicensorid' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentLicensorId'] },
      +	'artworklicensorname' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOCurrentLicensorName'] },
      +	'artworkorobject' => { 489 => 'ArtworkOrObject' },
      +	'artworkphysicaldescription' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOPhysicalDescription'] },
      +	'artworksource' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOSource'] },
      +	'artworksourceinventoryno' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOSourceInvNo'] },
      +	'artworksourceinvurl' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOSourceInvURL'] },
      +	'artworkstyleperiod' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOStylePeriod'] },
      +	'artworktitle' => { 489 => [\'ArtworkOrObject','ArtworkOrObjectAOTitle'] },
      +	'aspectframe' => { 301 => 0x1113 },
      +	'aspectratio' => { 5 => 0x0, 301 => 0x1112, 355 => 0x80, 407 => 0x55, 408 => 0x55, 409 => 0xa },
      +	'assetid' => { 467 => 'AssetID' },
      +	'asshoticcprofile' => { 119 => 0xc68f },
      +	'asshotneutral' => { 119 => 0xc628 },
      +	'asshotpreprofilematrix' => { 119 => 0xc690 },
      +	'asshotprofilename' => { 119 => 0xc6f6 },
      +	'asshotwhitexy' => { 119 => 0xc629 },
      +	'assignbktbutton' => { 279 => '4.2', 280 => '16.1', 282 => '16.1', 283 => '16.1', 292 => '16.1', 293 => '16.1' },
      +	'assignfuncbutton' => { 84 => 0x70b },
      +	'assignmb-d17af-onbutton' => { 283 => '79.1' },
      +	'assignmb-d17funcbutton' => { 283 => '67.1' },
      +	'assignmb-d17funcbuttonplusdials' => { 283 => '68.1' },
      +	'assignmb-d18af-onbutton' => { 293 => '79.1' },
      +	'assignmb-d18funcbutton' => { 293 => '67.1' },
      +	'assignmb-d18funcbuttonplusdials' => { 293 => '68.1' },
      +	'assignmoviefunc1buttonplusdials' => { 282 => '75.1', 283 => '75.1', 293 => '75.1' },
      +	'assignmoviefunc2button' => { 282 => '82.1', 283 => '82.1', 293 => '82.1' },
      +	'assignmoviepreviewbuttonplusdials' => { 282 => '75.2', 283 => '75.2', 293 => '75.2' },
      +	'assignmovierecordbutton' => { 280 => '43.2', 292 => '45.1', 295 => 0x9b },
      +	'assignmovierecordbuttonplusdials' => { 282 => '45.1', 283 => '45.1', 293 => '45.1' },
      +	'assignmoviesubselector' => { 282 => '74.1', 283 => '74.1', 293 => '74.1' },
      +	'assignmoviesubselectorplusdials' => { 282 => '76.1', 283 => '76.1', 293 => '76.1' },
      +	'assignremotefnbutton' => { 280 => '54.1', 292 => '51.1' },
      +	'assistbuttonfunction' => { 82 => 0xd },
      +	'atcaptureusercrop' => { 138 => 0x943 },
      +	'attributionname' => { 475 => 'attributionName' },
      +	'attributionurl' => { 475 => 'attributionURL' },
      +	'audio' => { 320 => 0x20 },
      +	'audiobitrate' => { 67 => 0x6c, 489 => 'audioBitRate' },
      +	'audiobitratemode' => { 489 => 'audioBitRateMode' },
      +	'audiobitspersample' => { 489 => 'audioBitsPerSample' },
      +	'audiobutton' => { 295 => 0x17b },
      +	'audiobuttonplaybackmode' => { 295 => 0x1b9 },
      +	'audiochannelcount' => { 489 => 'audioChannelCount' },
      +	'audiochannels' => { 67 => 0x70 },
      +	'audiochanneltype' => { 503 => 'audioChannelType' },
      +	'audiocompression' => { 84 => 0x816, 155 => 'Compression' },
      +	'audiocompressor' => { 503 => 'audioCompressor' },
      +	'audiodata' => { 459 => 'Data' },
      +	'audioduration' => { 131 => 0x99 },
      +	'audiogain' => { 374 => 'player.movie.audio.gain' },
      +	'audiomimetype' => { 459 => 'Mime' },
      +	'audiomoddate' => { 503 => 'audioModDate' },
      +	'audiooutcue' => { 131 => 0x9a },
      +	'audiosamplerate' => { 67 => 0x6e, 503 => 'audioSampleRate' },
      +	'audiosampletype' => { 503 => 'audioSampleType' },
      +	'audiosamplingrate' => { 131 => 0x97 },
      +	'audiosamplingresolution' => { 131 => 0x98 },
      +	'audiotype' => { 131 => 0x96 },
      +	'author' => { 157 => 'Author', 306 => 'Author', 310 => 'Author', 371 => 'Author', 372 => ['auth',"\xa9aut"], 374 => 'author', 380 => 'auth', 472 => 'author', 490 => 'Author', 501 => 'Author' },
      +	'authorsposition' => { 491 => 'AuthorsPosition' },
      +	'authorurl' => { 179 => 'WM/AuthorURL' },
      +	'autoafpointcolortracking' => { 84 => 0x51c },
       	'autoafpointseleositraf' => { 2 => 0xa },
      -	'autoaperture' => { 332 => '0.1' },
      -	'autobracket' => { 383 => 0x19 },
      -	'autobracketing' => { 124 => 0x1100, 341 => 0x18, 373 => 0x1007 },
      -	'autobracketingmode' => { 278 => '12.3' },
      -	'autobracketingset' => { 278 => '12.1' },
      -	'autobracketmodem' => { 266 => '21.2', 267 => '13.3', 269 => '13.2', 270 => '13.2', 275 => '26.2', 279 => '13.3', 280 => '13.2' },
      -	'autobracketorder' => { 179 => 0x43, 266 => '21.3', 267 => '13.2', 269 => '13.1', 270 => '13.1', 275 => '26.3', 276 => '12.2', 277 => '2.2', 278 => '12.2', 279 => '13.2', 280 => '13.1', 281 => '13.2' },
      -	'autobracketset' => { 266 => '21.1', 267 => '13.1', 271 => '11.1', 272 => '12.1', 273 => '12.1', 275 => '26.1', 276 => '12.1', 277 => '2.1', 279 => '13.1', 281 => '13.1' },
      -	'autobrightness' => { 462 => 'AutoBrightness', 464 => 'AutoBrightness' },
      -	'autocontrast' => { 462 => 'AutoContrast', 464 => 'AutoContrast' },
      -	'autodistortioncontrol' => { 200 => 0x4 },
      -	'autodynamicrange' => { 124 => 0x140b },
      -	'autoexposure' => { 462 => 'AutoExposure', 464 => 'AutoExposure' },
      -	'autoexposurebracketing' => { 74 => 0x10 },
      -	'autoflashisosensitivity' => { 269 => '38.5', 270 => '38.5', 280 => '38.5' },
      -	'autofocus' => { 286 => 0x209 },
      -	'autofp' => { 277 => '7.3', 281 => '31.4' },
      -	'autoiso' => { 74 => 0x1, 110 => 0x3008, 268 => '1.1', 277 => '1.1' },
      -	'autoisomax' => { 268 => '1.2', 277 => '1.2' },
      -	'autoisominshutterspeed' => { 268 => '1.3', 277 => '1.3' },
      -	'autolateralca' => { 462 => 'AutoLateralCA', 464 => 'AutoLateralCA' },
      -	'autolightingoptimizer' => { 16 => 0xbe, 17 => 0xbf, 20 => 0xbf, 60 => 0x2, 81 => 0x204, 100 => 0x20500, 106 => 0x6f },
      -	'autolightingoptimizeron' => { 100 => '0x20500.0', 106 => 0x6e },
      -	'autoportraitframed' => { 406 => 0x2016 },
      -	'autoredeye' => { 259 => 0xfe28a44f },
      -	'autorotate' => { 74 => 0x1b },
      -	'autoshadows' => { 462 => 'AutoShadows', 464 => 'AutoShadows' },
      -	'autotone' => { 462 => 'AutoTone', 464 => 'AutoTone' },
      -	'autowhiteversion' => { 462 => 'AutoWhiteVersion', 464 => 'AutoWhiteVersion' },
      -	'auxiliarylens' => { 219 => 0x82 },
      -	'avaperturesetting' => { 322 => 0x13 },
      -	'averageblacklevel' => { 43 => 0xe7, 45 => 0xfb, 46 => 0x114, 47 => 0x146 },
      -	'averagelv' => { 182 => 0x38 },
      -	'avsettingwithoutlens' => { 81 => 0x707 },
      -	'azimuth' => { 161 => 'Azimuth' },
      -	'babyage' => { 306 => [0x8010,0x33] },
      -	'babyname' => { 306 => 0x66 },
      -	'backgroundalpha' => { 483 => 'bgalpha' },
      -	'balance' => { 360 => 'player.movie.audio.balance' },
      -	'baseexposurecompensation' => { 322 => 0x15 },
      -	'baseiso' => { 74 => 0x2, 94 => 0x101c, 134 => 0x903, 308 => 0x312a, 435 => 0x6 },
      -	'baseisodaylight' => { 134 => 0x910 },
      -	'baseisoflash' => { 134 => 0x913 },
      -	'baseisofluorescent' => { 134 => 0x912 },
      -	'baseisotungsten' => { 134 => 0x911 },
      -	'baselineexposure' => { 116 => 0xc62a },
      -	'baselineexposureoffset' => { 116 => 0xc7a5 },
      -	'baselinenoise' => { 116 => 0xc62b },
      -	'baselinesharpness' => { 116 => 0xc62c },
      -	'baseurl' => { 486 => 'BaseURL' },
      -	'bass' => { 360 => 'player.movie.audio.bass' },
      -	'batterylevel' => { 393 => 0x51, 397 => 0xc, 398 => 0x4, 399 => 0x4, 436 => 0x7 },
      -	'batterylevelgrip1' => { 436 => 0x6 },
      -	'batterylevelgrip2' => { 436 => 0x8 },
      -	'batteryorder' => { 266 => '12.5', 275 => '13.2', 276 => '2.1', 279 => '3.1' },
      -	'batterystate' => { 179 => 0x60, 393 => 0x50, 399 => 0x14 },
      -	'batterytemperature' => { 397 => 0x1, 399 => 0x2, 436 => 0x5 },
      -	'batterytype' => { 61 => 0x38, 369 => 0x66 },
      -	'batteryunknown' => { 397 => 0x2, 399 => 0x0 },
      -	'batteryvoltage' => { 134 => 0x408, 367 => 0x2a, 368 => 0x49, 369 => 0x62, 397 => 0x8 },
      -	'batteryvoltage1' => { 399 => 0x6 },
      -	'batteryvoltage2' => { 399 => 0x8 },
      -	'batteryvoltageavg' => { 369 => 0x64 },
      -	'bayergreensplit' => { 116 => 0xc62d },
      -	'bayerpattern' => { 133 => 0xf902, 183 => 0x17 },
      -	'beatsperminute' => { 358 => 'tmpo' },
      -	'beatspliceparams' => { 488 => 'beatSpliceParams' },
      -	'beatspliceparamsriseindecibel' => { 488 => [\'beatSpliceParams','beatSpliceParamsRiseInDecibel'] },
      -	'beatspliceparamsriseintimeduration' => { 488 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDuration'] },
      -	'beatspliceparamsriseintimedurationscale' => { 488 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationScale'] },
      -	'beatspliceparamsriseintimedurationvalue' => { 488 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationValue'] },
      -	'beatspliceparamsusefilebeatsmarker' => { 488 => [\'beatSpliceParams','beatSpliceParamsUseFileBeatsMarker'] },
      -	'beep' => { 266 => '13.1', 267 => '5.4', 268 => '0.1', 271 => '2.1', 272 => '3.1', 273 => '3.1', 275 => '10.1', 277 => '0.1', 279 => '5.5', 281 => '4.1' },
      -	'beeppitch' => { 276 => '3.1' },
      -	'beepvolume' => { 276 => '4.5' },
      -	'bestqualityscale' => { 116 => 0xc65c },
      -	'bestshotmode' => { 110 => 0x3007 },
      -	'bitdepth' => { 158 => 'BitDepth', 183 => 0x11, 227 => 0x41 },
      -	'bitspercomponent' => { 130 => 0x87 },
      -	'bitspersample' => { 116 => 0x102, 311 => 0xa, 484 => 'BitsPerSample' },
      -	'blackacquirerows' => { 134 => 0x18ba },
      -	'blacklevel' => { 116 => 0xc61a, 198 => 0x20, 219 => 0x3d, 288 => [0x401,0x1012], 350 => 0x21d },
      -	'blacklevel2' => { 287 => 0x600, 291 => 0x600 },
      -	'blacklevelblue' => { 311 => 0x1e },
      -	'blacklevelbottom' => { 134 => 0x3f0 },
      -	'blackleveldata' => { 350 => 0x223 },
      -	'blackleveldeltah' => { 116 => 0xc61b },
      -	'blackleveldeltav' => { 116 => 0xc61c },
      -	'blacklevelgreen' => { 311 => 0x1d },
      -	'blacklevelred' => { 311 => 0x1c },
      -	'blacklevelrepeatdim' => { 116 => 0xc619 },
      -	'blacklevelrough' => { 134 => 0x40e },
      -	'blacklevelroughafter' => { 134 => 0x416 },
      +	'autoaperture' => { 346 => '0.1' },
      +	'autobracket' => { 397 => 0x19 },
      +	'autobracketing' => { 127 => 0x1100, 355 => 0x18, 387 => 0x1007 },
      +	'autobracketingmode' => { 291 => '12.3' },
      +	'autobracketingset' => { 291 => '12.1' },
      +	'autobracketmodem' => { 279 => '21.2', 280 => '13.3', 282 => '13.2', 283 => '13.2', 288 => '26.2', 292 => '13.3', 293 => '13.2', 295 => 0x5f },
      +	'autobracketorder' => { 184 => 0x43, 279 => '21.3', 280 => '13.2', 282 => '13.1', 283 => '13.1', 288 => '26.3', 289 => '12.2', 290 => '2.2', 291 => '12.2', 292 => '13.2', 293 => '13.1', 294 => '13.2', 295 => 0x61 },
      +	'autobracketset' => { 279 => '21.1', 280 => '13.1', 284 => '11.1', 285 => '12.1', 286 => '12.1', 288 => '26.1', 289 => '12.1', 290 => '2.1', 292 => '13.1', 294 => '13.1' },
      +	'autobrightness' => { 477 => 'AutoBrightness', 479 => 'AutoBrightness' },
      +	'autocontrast' => { 477 => 'AutoContrast', 479 => 'AutoContrast' },
      +	'autodistortioncontrol' => { 206 => 0x4, 228 => 0x143 },
      +	'autodynamicrange' => { 127 => 0x140b },
      +	'autoexposure' => { 477 => 'AutoExposure', 479 => 'AutoExposure' },
      +	'autoexposurebracketing' => { 77 => 0x10 },
      +	'autoflashisosensitivity' => { 282 => '38.5', 283 => '38.5', 293 => '38.5', 295 => 0x5b },
      +	'autofocus' => { 300 => 0x209 },
      +	'autofocusmoderestrictions' => { 295 => 0x107 },
      +	'autofp' => { 290 => '7.3', 294 => '31.4' },
      +	'autoiso' => { 77 => 0x1, 113 => 0x3008, 229 => 0x142, 281 => '1.1', 290 => '1.1' },
      +	'autoisomax' => { 281 => '1.2', 290 => '1.2' },
      +	'autoisominshutterspeed' => { 281 => '1.3', 290 => '1.3' },
      +	'autolateralca' => { 477 => 'AutoLateralCA', 479 => 'AutoLateralCA' },
      +	'autolightingoptimizer' => { 16 => 0xbe, 17 => 0xbf, 20 => 0xbf, 62 => 0x2, 84 => 0x204, 103 => 0x20500, 109 => 0x6f },
      +	'autolightingoptimizeron' => { 103 => '0x20500.0', 109 => 0x6e },
      +	'autoportraitframed' => { 420 => 0x2016 },
      +	'autoredeye' => { 272 => 0xfe28a44f },
      +	'autorotate' => { 77 => 0x1b },
      +	'autoshadows' => { 477 => 'AutoShadows', 479 => 'AutoShadows' },
      +	'autotone' => { 477 => 'AutoTone', 479 => 'AutoTone' },
      +	'autotonedigest' => { 477 => 'AutoToneDigest', 479 => 'AutoToneDigest' },
      +	'autotonedigestnosat' => { 477 => 'AutoToneDigestNoSat', 479 => 'AutoToneDigestNoSat' },
      +	'autowhiteversion' => { 477 => 'AutoWhiteVersion', 479 => 'AutoWhiteVersion' },
      +	'auxiliarylens' => { 226 => 0x82 },
      +	'avaperturesetting' => { 336 => 0x13 },
      +	'averageblacklevel' => { 45 => 0xe7, 47 => 0xfb, 48 => 0x114, 49 => 0x146 },
      +	'averagelv' => { 187 => 0x38 },
      +	'avsettingwithoutlens' => { 84 => 0x707 },
      +	'azimuth' => { 165 => 'Azimuth' },
      +	'babyage' => { 320 => [0x8010,0x33] },
      +	'babyname' => { 320 => 0x66 },
      +	'backgroundalpha' => { 498 => 'bgalpha' },
      +	'balance' => { 374 => 'player.movie.audio.balance' },
      +	'baseexposurecompensation' => { 336 => 0x15 },
      +	'baseiso' => { 77 => 0x2, 97 => 0x101c, 138 => 0x903, 322 => 0x312a, 450 => 0x6 },
      +	'baseisodaylight' => { 138 => 0x910 },
      +	'baseisoflash' => { 138 => 0x913 },
      +	'baseisofluorescent' => { 138 => 0x912 },
      +	'baseisotungsten' => { 138 => 0x911 },
      +	'baselineexposure' => { 119 => 0xc62a },
      +	'baselineexposureoffset' => { 119 => 0xc7a5 },
      +	'baselinenoise' => { 119 => 0xc62b },
      +	'baselinesharpness' => { 119 => 0xc62c },
      +	'baseurl' => { 501 => 'BaseURL' },
      +	'bass' => { 374 => 'player.movie.audio.bass' },
      +	'batterylevel' => { 320 => 0x38, 407 => 0x51, 411 => 0xc, 412 => 0x4, 413 => 0x4, 451 => 0x7 },
      +	'batterylevelgrip1' => { 451 => 0x6 },
      +	'batterylevelgrip2' => { 451 => 0x8 },
      +	'batteryorder' => { 279 => '12.5', 288 => '13.2', 289 => '2.1', 292 => '3.1' },
      +	'batterystate' => { 184 => 0x60, 407 => 0x50, 413 => 0x14 },
      +	'batterytemperature' => { 411 => 0x1, 413 => 0x2, 451 => 0x5 },
      +	'batterytype' => { 64 => 0x38, 383 => 0x66 },
      +	'batteryunknown' => { 411 => 0x2, 413 => 0x0 },
      +	'batteryvoltage' => { 138 => 0x408, 381 => 0x2a, 382 => 0x49, 383 => 0x62, 411 => 0x8 },
      +	'batteryvoltage1' => { 413 => 0x6 },
      +	'batteryvoltage2' => { 413 => 0x8 },
      +	'batteryvoltageavg' => { 383 => 0x64 },
      +	'bayergreensplit' => { 119 => 0xc62d },
      +	'bayerpattern' => { 137 => 0xf902, 188 => 0x17 },
      +	'beatsperminute' => { 372 => 'tmpo' },
      +	'beatspliceparams' => { 503 => 'beatSpliceParams' },
      +	'beatspliceparamsriseindecibel' => { 503 => [\'beatSpliceParams','beatSpliceParamsRiseInDecibel'] },
      +	'beatspliceparamsriseintimeduration' => { 503 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDuration'] },
      +	'beatspliceparamsriseintimedurationscale' => { 503 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationScale'] },
      +	'beatspliceparamsriseintimedurationvalue' => { 503 => [\'beatSpliceParams','beatSpliceParamsRiseInTimeDurationValue'] },
      +	'beatspliceparamsusefilebeatsmarker' => { 503 => [\'beatSpliceParams','beatSpliceParamsUseFileBeatsMarker'] },
      +	'beep' => { 279 => '13.1', 280 => '5.4', 281 => '0.1', 284 => '2.1', 285 => '3.1', 286 => '3.1', 288 => '10.1', 290 => '0.1', 292 => '5.5', 294 => '4.1' },
      +	'beeppitch' => { 289 => '3.1' },
      +	'beepvolume' => { 289 => '4.5' },
      +	'bestqualityscale' => { 119 => 0xc65c },
      +	'bestshotmode' => { 113 => 0x3007 },
      +	'bitdepth' => { 162 => 'BitDepth', 188 => 0x11, 237 => 0x41 },
      +	'bitspercomponent' => { 133 => 0x87 },
      +	'bitspersample' => { 119 => 0x102, 325 => 0xa, 499 => 'BitsPerSample' },
      +	'blackacquirerows' => { 138 => 0x18ba },
      +	'blacklevel' => { 119 => 0xc61a, 204 => 0x20, 226 => 0x3d, 302 => [0x401,0x1012], 364 => 0x21d },
      +	'blacklevel2' => { 301 => 0x600, 305 => 0x600 },
      +	'blacklevelblue' => { 325 => 0x1e },
      +	'blacklevelbottom' => { 138 => 0x3f0 },
      +	'blackleveldata' => { 364 => 0x223 },
      +	'blackleveldeltah' => { 119 => 0xc61b },
      +	'blackleveldeltav' => { 119 => 0xc61c },
      +	'blacklevelgreen' => { 325 => 0x1d },
      +	'blacklevelred' => { 325 => 0x1c },
      +	'blacklevelrepeatdim' => { 119 => 0xc619 },
      +	'blacklevelrough' => { 138 => 0x40e },
      +	'blacklevelroughafter' => { 138 => 0x416 },
       	'blacklevels' => { 35 => 0x1d },
      -	'blackleveltop' => { 134 => 0x3ef },
      -	'blackpoint' => { 341 => 0x200 },
      -	'blacks2012' => { 462 => 'Blacks2012', 464 => 'Blacks2012' },
      -	'blacksadj' => { 439 => 0x9018 },
      -	'bleachbypasstoning' => { 341 => 0x7f },
      -	'blockshotafresponse' => { 269 => '1.5', 270 => '1.5', 280 => '1.5' },
      -	'blogtitle' => { 478 => 'blogTitle' },
      -	'blogurl' => { 478 => 'blogURL' },
      -	'bluebalance' => { 288 => 0x1018, 311 => 0x12, 341 => 0x1b },
      -	'bluecurvelimits' => { 105 => 0x1fe },
      -	'bluecurvepoints' => { 104 => 0x79, 105 => 0x1d4 },
      -	'bluehsl' => { 100 => 0x20915 },
      -	'bluehue' => { 462 => 'BlueHue', 464 => 'BlueHue' },
      -	'bluesaturation' => { 462 => 'BlueSaturation', 464 => 'BlueSaturation' },
      -	'bluratinfinity' => { 448 => 'BlurAtInfinity' },
      -	'blurcontrol' => { 341 => 0x82 },
      -	'blurwarning' => { 124 => 0x1300 },
      -	'bodybatteryadload' => { 320 => 0x3 },
      -	'bodybatteryadnoload' => { 320 => 0x2 },
      -	'bodybatterystate' => { 320 => '1.1' },
      -	'bodybatteryvoltage1' => { 320 => 0x2 },
      -	'bodybatteryvoltage2' => { 320 => 0x4 },
      -	'bodybatteryvoltage3' => { 320 => 0x6 },
      -	'bodybatteryvoltage4' => { 320 => 0x8 },
      -	'bodyfirmware' => { 374 => 0x0 },
      -	'bodyfirmwareversion' => { 284 => 0x104, 285 => 0x100, 288 => 0x104 },
      -	'bodyserialnumber' => { 374 => 0x10 },
      -	'bookedition' => { 478 => 'bookEdition' },
      -	'bootloaderversion' => { 368 => 0x26 },
      -	'bracketmode' => { 55 => 0x3 },
      -	'bracketsequence' => { 110 => 0x301d },
      -	'bracketsettings' => { 306 => 0x45 },
      -	'bracketshotnumber' => { 55 => 0x5, 322 => 0x9, 404 => 0x2b },
      -	'bracketshotnumber2' => { 404 => 0x2d },
      -	'bracketstep' => { 176 => 0xe },
      -	'bracketvalue' => { 55 => 0x4 },
      -	'brightness' => { 116 => 0xfe53, 152 => 'Brightness', 172 => 'Brightness', 176 => 0x2c, 221 => 0x34, 222 => 0x39, 223 => 0x41, 360 => 'player.movie.visual.brightness', 367 => 0x25, 369 => 0x54, 393 => 0x22, 406 => 0x2007, 462 => 'Brightness', 464 => 'Brightness' },
      -	'brightnessadj' => { 105 => 0x114, 252 => 0x0, 262 => 0x2d, 439 => 0x8018 },
      -	'brightnessvalue' => { 116 => 0x9203, 182 => [0x691,0x49c3], 288 => 0x1003, 411 => 0x1e, 414 => 0x1140, 415 => 0x1140, 416 => 0x111c, 417 => 0x1198, 418 => 0x1174, 419 => 0x102c, 420 => 0x224, 421 => 0x224, 422 => 0x219, 468 => 'BrightnessValue' },
      -	'buildnumber' => { 186 => 0x5500 },
      -	'bulbduration' => { 74 => 0x18 },
      -	'burstcount' => { 134 => 0x40d },
      -	'burstid' => { 445 => 'BurstID' },
      -	'burstmode' => { 136 => 0xa, 306 => 0x2a },
      -	'burstmode2' => { 136 => 0x18 },
      -	'burstprimary' => { 445 => 'BurstPrimary' },
      -	'burstshot' => { 383 => 0x34 },
      -	'burstspeed' => { 306 => 0x77 },
      +	'blackleveltop' => { 138 => 0x3ef },
      +	'blackpoint' => { 355 => 0x200 },
      +	'blacks2012' => { 477 => 'Blacks2012', 479 => 'Blacks2012' },
      +	'blacksadj' => { 454 => 0x9018 },
      +	'bleachbypasstoning' => { 355 => 0x7f },
      +	'blockshotafresponse' => { 282 => '1.5', 283 => '1.5', 293 => '1.5', 295 => 0x7 },
      +	'blogtitle' => { 493 => 'blogTitle' },
      +	'blogurl' => { 493 => 'blogURL' },
      +	'bluebalance' => { 302 => 0x1018, 325 => 0x12, 355 => 0x1b },
      +	'bluecurvelimits' => { 108 => 0x1fe },
      +	'bluecurvepoints' => { 107 => 0x79, 108 => 0x1d4 },
      +	'bluehsl' => { 103 => 0x20915 },
      +	'bluehue' => { 477 => 'BlueHue', 479 => 'BlueHue' },
      +	'bluesaturation' => { 477 => 'BlueSaturation', 479 => 'BlueSaturation' },
      +	'bluratinfinity' => { 463 => 'BlurAtInfinity' },
      +	'blurcontrol' => { 355 => 0x82 },
      +	'blurwarning' => { 127 => 0x1300 },
      +	'bodybatteryadload' => { 334 => 0x3 },
      +	'bodybatteryadnoload' => { 334 => 0x2 },
      +	'bodybatterystate' => { 334 => '1.1' },
      +	'bodybatteryvoltage1' => { 334 => 0x2 },
      +	'bodybatteryvoltage2' => { 334 => 0x4 },
      +	'bodybatteryvoltage3' => { 334 => 0x6 },
      +	'bodybatteryvoltage4' => { 334 => 0x8 },
      +	'bodyfirmware' => { 388 => 0x0 },
      +	'bodyfirmwareversion' => { 298 => 0x104, 299 => 0x100, 302 => 0x104 },
      +	'bodyserialnumber' => { 388 => 0x10 },
      +	'bookedition' => { 493 => 'bookEdition' },
      +	'bootloaderversion' => { 382 => 0x26 },
      +	'bracketincrement' => { 229 => 0x21a },
      +	'bracketmode' => { 57 => 0x3 },
      +	'bracketprogram' => { 229 => 0x218 },
      +	'bracketsequence' => { 113 => 0x301d },
      +	'bracketset' => { 229 => 0x216 },
      +	'bracketsettings' => { 320 => 0x45 },
      +	'bracketshotnumber' => { 57 => 0x5, 336 => 0x9, 418 => 0x2b },
      +	'bracketshotnumber2' => { 418 => 0x2d },
      +	'bracketstep' => { 181 => 0xe },
      +	'bracketvalue' => { 57 => 0x4 },
      +	'brightness' => { 119 => 0xfe53, 156 => 'Brightness', 176 => 'Brightness', 181 => 0x2c, 231 => 0x34, 232 => 0x39, 233 => 0x41, 374 => 'player.movie.visual.brightness', 381 => 0x25, 383 => 0x54, 407 => 0x22, 420 => 0x2007, 477 => 'Brightness', 479 => 'Brightness' },
      +	'brightnessadj' => { 108 => 0x114, 265 => 0x0, 275 => 0x2d, 454 => 0x8018 },
      +	'brightnessvalue' => { 119 => 0x9203, 187 => [0x691,0x49c3], 302 => 0x1003, 425 => 0x1e, 428 => 0x1140, 429 => 0x1140, 430 => 0x111c, 431 => 0x1198, 432 => 0x1174, 433 => 0x102c, 434 => 0x224, 435 => 0x224, 436 => 0x219, 483 => 'BrightnessValue' },
      +	'buildnumber' => { 191 => 0x5500 },
      +	'bulbduration' => { 77 => 0x18 },
      +	'burstcount' => { 138 => 0x40d },
      +	'burstid' => { 460 => 'BurstID' },
      +	'burstmode' => { 140 => 0xa, 320 => 0x2a },
      +	'burstmode2' => { 140 => 0x18 },
      +	'burstprimary' => { 460 => 'BurstPrimary' },
      +	'burstshot' => { 397 => 0x34 },
      +	'burstspeed' => { 320 => 0x77 },
       	'burstuuid' => { 1 => 0xb },
      -	'buttonfunctioncontroloff' => { 81 => 0x70a },
      -	'bwadjustment' => { 124 => 0x1049 },
      -	'bwfilter' => { 176 => 0x2a, 184 => 0x39 },
      -	'bwmode' => { 288 => 0x203 },
      -	'by-line' => { 128 => 0x50 },
      -	'by-linetitle' => { 128 => 0x55 },
      -	'bytecount' => { 478 => 'byteCount' },
      -	'c14configuration' => { 134 => 0x1964 },
      -	'cacheversion' => { 116 => 0xc7aa },
      -	'calibratedfocallength' => { 113 => 'CalibratedFocalLength' },
      -	'calibratedopticalcenterx' => { 113 => 'CalibratedOpticalCenterX' },
      -	'calibratedopticalcentery' => { 113 => 'CalibratedOpticalCenterY' },
      -	'calibration' => { 383 => [0x24,0x30] },
      -	'calibrationhistory' => { 134 => 0x9c9 },
      -	'calibrationilluminant1' => { 116 => 0xc65a },
      -	'calibrationilluminant2' => { 116 => 0xc65b },
      -	'calibrationversion' => { 134 => 0x9c6 },
      -	'callforimage' => { 452 => 'CallForImage' },
      -	'camera' => { 442 => [\'Cameras','CamerasCamera'] },
      -	'cameraangle' => { 366 => 'angl', 488 => 'cameraAngle' },
      -	'cameraappinfo' => { 442 => [\'Cameras','CamerasCameraAppInfo'] },
      -	'cameraappinfoapplication' => { 442 => [\'Cameras','CamerasCameraAppInfoApplication'] },
      -	'cameraappinfoitemuri' => { 442 => [\'Cameras','CamerasCameraAppInfoItemURI'] },
      -	'cameraappinfoversion' => { 442 => [\'Cameras','CamerasCameraAppInfoVersion'] },
      -	'cameraburstid' => { 446 => 'CameraBurstID' },
      -	'cameracalibration' => { 383 => 0x11f },
      -	'cameracalibration1' => { 116 => 0xc623 },
      -	'cameracalibration2' => { 116 => 0xc624 },
      -	'cameracalibrationsig' => { 116 => 0xc6f3 },
      +	'buttonfunctioncontroloff' => { 84 => 0x70a },
      +	'bwadjustment' => { 127 => 0x1049 },
      +	'bwfilter' => { 181 => 0x2a, 189 => 0x39 },
      +	'bwmode' => { 302 => 0x203 },
      +	'by-line' => { 131 => 0x50 },
      +	'by-linetitle' => { 131 => 0x55 },
      +	'bytecount' => { 493 => 'byteCount' },
      +	'c14configuration' => { 138 => 0x1964 },
      +	'cacheversion' => { 119 => 0xc7aa },
      +	'calibratedfocallength' => { 116 => 'CalibratedFocalLength' },
      +	'calibratedopticalcenterx' => { 116 => 'CalibratedOpticalCenterX' },
      +	'calibratedopticalcentery' => { 116 => 'CalibratedOpticalCenterY' },
      +	'calibration' => { 397 => [0x24,0x30] },
      +	'calibrationhistory' => { 138 => 0x9c9 },
      +	'calibrationilluminant1' => { 119 => 0xc65a },
      +	'calibrationilluminant2' => { 119 => 0xc65b },
      +	'calibrationilluminant3' => { 119 => 0xcd31 },
      +	'calibrationversion' => { 138 => 0x9c6 },
      +	'callforimage' => { 467 => 'CallForImage' },
      +	'camera' => { 457 => [\'Cameras','CamerasCamera'] },
      +	'cameraangle' => { 380 => 'angl', 503 => 'cameraAngle' },
      +	'cameraappinfo' => { 457 => [\'Cameras','CamerasCameraAppInfo'] },
      +	'cameraappinfoapplication' => { 457 => [\'Cameras','CamerasCameraAppInfoApplication'] },
      +	'cameraappinfoitemuri' => { 457 => [\'Cameras','CamerasCameraAppInfoItemURI'] },
      +	'cameraappinfoversion' => { 457 => [\'Cameras','CamerasCameraAppInfoVersion'] },
      +	'cameraburstid' => { 461 => 'CameraBurstID' },
      +	'cameracalibration' => { 397 => 0x11f },
      +	'cameracalibration1' => { 119 => 0xc623 },
      +	'cameracalibration2' => { 119 => 0xc624 },
      +	'cameracalibration3' => { 119 => 0xcd32 },
      +	'cameracalibrationsig' => { 119 => 0xc6f3 },
       	'cameracolorcalibration01' => { 36 => 0x0, 37 => 0x0 },
       	'cameracolorcalibration02' => { 36 => 0x4, 37 => 0x5 },
       	'cameracolorcalibration03' => { 36 => 0x8, 37 => 0xa },
      @@ -1191,5065 +1231,5852 @@
       	'cameracolorcalibration13' => { 36 => 0x30, 37 => 0x3c },
       	'cameracolorcalibration14' => { 36 => 0x34, 37 => 0x41 },
       	'cameracolorcalibration15' => { 36 => 0x38, 37 => 0x46 },
      -	'cameradepthmap' => { 442 => [\'Cameras','CamerasCameraDepthMap'] },
      -	'cameradepthmapconfidenceuri' => { 442 => [\'Cameras','CamerasCameraDepthMapConfidenceURI'] },
      -	'cameradepthmapdepthuri' => { 442 => [\'Cameras','CamerasCameraDepthMapDepthURI'] },
      -	'cameradepthmapfar' => { 442 => [\'Cameras','CamerasCameraDepthMapFar'] },
      -	'cameradepthmapfocaltable' => { 442 => [\'Cameras','CamerasCameraDepthMapFocalTable'] },
      -	'cameradepthmapfocaltableentrycount' => { 442 => [\'Cameras','CamerasCameraDepthMapFocalTableEntryCount'] },
      -	'cameradepthmapformat' => { 442 => [\'Cameras','CamerasCameraDepthMapFormat'] },
      -	'cameradepthmapitemsemantic' => { 442 => [\'Cameras','CamerasCameraDepthMapItemSemantic'] },
      -	'cameradepthmapmeasuretype' => { 442 => [\'Cameras','CamerasCameraDepthMapMeasureType'] },
      -	'cameradepthmapnear' => { 442 => [\'Cameras','CamerasCameraDepthMapNear'] },
      -	'cameradepthmapsoftware' => { 442 => [\'Cameras','CamerasCameraDepthMapSoftware'] },
      -	'cameradepthmapunits' => { 442 => [\'Cameras','CamerasCameraDepthMapUnits'] },
      -	'cameradirection' => { 360 => 'direction.facing' },
      -	'camerae-mountversion' => { 438 => 0xb },
      -	'cameraelevationangle' => { 116 => 0x9405, 469 => 'CameraElevationAngle' },
      -	'camerafilename' => { 452 => 'CameraFilename' },
      -	'cameraid' => { 288 => 0x209, 366 => 'cmid', 382 => 0x209 },
      -	'cameraidentifier' => { 360 => 'camera.identifier' },
      -	'cameraimage' => { 442 => [\'Cameras','CamerasCameraImage'] },
      -	'cameraimageitemsemantic' => { 442 => [\'Cameras','CamerasCameraImageItemSemantic'] },
      -	'cameraimageitemuri' => { 442 => [\'Cameras','CamerasCameraImageItemURI'] },
      -	'cameraimagingmodel' => { 442 => [\'Cameras','CamerasCameraImagingModel'] },
      -	'cameraimagingmodeldistortion' => { 442 => [\'Cameras','CamerasCameraImagingModelDistortion'] },
      -	'cameraimagingmodeldistortioncount' => { 442 => [\'Cameras','CamerasCameraImagingModelDistortionCount'] },
      -	'cameraimagingmodelfocallengthx' => { 442 => [\'Cameras','CamerasCameraImagingModelFocalLengthX'] },
      -	'cameraimagingmodelfocallengthy' => { 442 => [\'Cameras','CamerasCameraImagingModelFocalLengthY'] },
      -	'cameraimagingmodelimageheight' => { 442 => [\'Cameras','CamerasCameraImagingModelImageHeight'] },
      -	'cameraimagingmodelimagewidth' => { 442 => [\'Cameras','CamerasCameraImagingModelImageWidth'] },
      -	'cameraimagingmodelpixelaspectratio' => { 442 => [\'Cameras','CamerasCameraImagingModelPixelAspectRatio'] },
      -	'cameraimagingmodelprincipalpointx' => { 442 => [\'Cameras','CamerasCameraImagingModelPrincipalPointX'] },
      -	'cameraimagingmodelprincipalpointy' => { 442 => [\'Cameras','CamerasCameraImagingModelPrincipalPointY'] },
      -	'cameraimagingmodelskew' => { 442 => [\'Cameras','CamerasCameraImagingModelSkew'] },
      +	'cameradepthmap' => { 457 => [\'Cameras','CamerasCameraDepthMap'] },
      +	'cameradepthmapconfidenceuri' => { 457 => [\'Cameras','CamerasCameraDepthMapConfidenceURI'] },
      +	'cameradepthmapdepthuri' => { 457 => [\'Cameras','CamerasCameraDepthMapDepthURI'] },
      +	'cameradepthmapfar' => { 457 => [\'Cameras','CamerasCameraDepthMapFar'] },
      +	'cameradepthmapfocaltable' => { 457 => [\'Cameras','CamerasCameraDepthMapFocalTable'] },
      +	'cameradepthmapfocaltableentrycount' => { 457 => [\'Cameras','CamerasCameraDepthMapFocalTableEntryCount'] },
      +	'cameradepthmapformat' => { 457 => [\'Cameras','CamerasCameraDepthMapFormat'] },
      +	'cameradepthmapitemsemantic' => { 457 => [\'Cameras','CamerasCameraDepthMapItemSemantic'] },
      +	'cameradepthmapmeasuretype' => { 457 => [\'Cameras','CamerasCameraDepthMapMeasureType'] },
      +	'cameradepthmapnear' => { 457 => [\'Cameras','CamerasCameraDepthMapNear'] },
      +	'cameradepthmapsoftware' => { 457 => [\'Cameras','CamerasCameraDepthMapSoftware'] },
      +	'cameradepthmapunits' => { 457 => [\'Cameras','CamerasCameraDepthMapUnits'] },
      +	'cameradirection' => { 374 => 'direction.facing' },
      +	'camerae-mountversion' => { 453 => 0xb },
      +	'cameraelevationangle' => { 119 => 0x9405, 484 => 'CameraElevationAngle' },
      +	'camerafilename' => { 467 => 'CameraFilename' },
      +	'cameraid' => { 302 => 0x209, 380 => 'cmid', 396 => 0x209 },
      +	'cameraidentifier' => { 374 => 'camera.identifier' },
      +	'cameraimage' => { 457 => [\'Cameras','CamerasCameraImage'] },
      +	'cameraimageitemsemantic' => { 457 => [\'Cameras','CamerasCameraImageItemSemantic'] },
      +	'cameraimageitemuri' => { 457 => [\'Cameras','CamerasCameraImageItemURI'] },
      +	'cameraimagingmodel' => { 457 => [\'Cameras','CamerasCameraImagingModel'] },
      +	'cameraimagingmodeldistortion' => { 457 => [\'Cameras','CamerasCameraImagingModelDistortion'] },
      +	'cameraimagingmodeldistortioncount' => { 457 => [\'Cameras','CamerasCameraImagingModelDistortionCount'] },
      +	'cameraimagingmodelfocallengthx' => { 457 => [\'Cameras','CamerasCameraImagingModelFocalLengthX'] },
      +	'cameraimagingmodelfocallengthy' => { 457 => [\'Cameras','CamerasCameraImagingModelFocalLengthY'] },
      +	'cameraimagingmodelimageheight' => { 457 => [\'Cameras','CamerasCameraImagingModelImageHeight'] },
      +	'cameraimagingmodelimagewidth' => { 457 => [\'Cameras','CamerasCameraImagingModelImageWidth'] },
      +	'cameraimagingmodelpixelaspectratio' => { 457 => [\'Cameras','CamerasCameraImagingModelPixelAspectRatio'] },
      +	'cameraimagingmodelprincipalpointx' => { 457 => [\'Cameras','CamerasCameraImagingModelPrincipalPointX'] },
      +	'cameraimagingmodelprincipalpointy' => { 457 => [\'Cameras','CamerasCameraImagingModelPrincipalPointY'] },
      +	'cameraimagingmodelskew' => { 457 => [\'Cameras','CamerasCameraImagingModelSkew'] },
       	'cameraiso' => { 34 => 0x10 },
      -	'cameralabel' => { 116 => 0xc7a1, 488 => 'cameraLabel' },
      -	'cameralightestimate' => { 442 => [\'Cameras','CamerasCameraLightEstimate'] },
      -	'cameralightestimatecolorcorrectionb' => { 442 => [\'Cameras','CamerasCameraLightEstimateColorCorrectionB'] },
      -	'cameralightestimatecolorcorrectiong' => { 442 => [\'Cameras','CamerasCameraLightEstimateColorCorrectionG'] },
      -	'cameralightestimatecolorcorrectionr' => { 442 => [\'Cameras','CamerasCameraLightEstimateColorCorrectionR'] },
      -	'cameralightestimatepixelintensity' => { 442 => [\'Cameras','CamerasCameraLightEstimatePixelIntensity'] },
      -	'cameramakemodel' => { 452 => 'CameraMakeModel' },
      -	'cameramodel' => { 350 => 0x410, 488 => 'cameraModel' },
      -	'cameramodelid' => { 172 => 'CameraModelID' },
      -	'cameramotion' => { 360 => 'direction.motion' },
      -	'cameramove' => { 488 => 'cameraMove' },
      -	'cameraorientation' => { 7 => 0x30, 9 => 0x7d, 11 => 0x30, 13 => 0x35, 14 => 0x30, 15 => 0x30, 16 => 0x31, 17 => 0x31, 18 => 0x35, 19 => 0x27, 20 => 0x31, 21 => 0x7d, 22 => 0x38, 23 => 0x36, 24 => 0x7d, 25 => 0x83, 26 => 0x84, 28 => 0x35, 29 => 0x96, 306 => 0x8f, 345 => 0x1, 350 => 0x100, 399 => [0x16,0x18], 426 => 0x28, 427 => 0x24, 428 => 0x29 },
      -	'cameraowner' => { 137 => 0xc353 },
      -	'cameraparameters' => { 288 => 0x2050 },
      +	'cameralabel' => { 119 => 0xc7a1, 503 => 'cameraLabel' },
      +	'cameralightestimate' => { 457 => [\'Cameras','CamerasCameraLightEstimate'] },
      +	'cameralightestimatecolorcorrectionb' => { 457 => [\'Cameras','CamerasCameraLightEstimateColorCorrectionB'] },
      +	'cameralightestimatecolorcorrectiong' => { 457 => [\'Cameras','CamerasCameraLightEstimateColorCorrectionG'] },
      +	'cameralightestimatecolorcorrectionr' => { 457 => [\'Cameras','CamerasCameraLightEstimateColorCorrectionR'] },
      +	'cameralightestimatepixelintensity' => { 457 => [\'Cameras','CamerasCameraLightEstimatePixelIntensity'] },
      +	'cameramakemodel' => { 467 => 'CameraMakeModel' },
      +	'cameramodel' => { 364 => 0x410, 503 => 'cameraModel' },
      +	'cameramodelid' => { 176 => 'CameraModelID' },
      +	'cameramodelrestriction' => { 477 => 'CameraModelRestriction', 479 => 'CameraModelRestriction' },
      +	'cameramotion' => { 374 => 'direction.motion' },
      +	'cameramove' => { 503 => 'cameraMove' },
      +	'cameraorientation' => { 7 => 0x30, 9 => 0x7d, 11 => 0x30, 13 => 0x35, 14 => 0x30, 15 => 0x30, 16 => 0x31, 17 => 0x31, 18 => 0x35, 19 => 0x27, 20 => 0x31, 21 => 0x7d, 22 => 0x38, 23 => [0x36,0x3a], 24 => 0x7d, 25 => 0x83, 26 => 0x84, 27 => 0x96, 28 => 0x35, 29 => 0x96, 320 => 0x8f, 359 => 0x1, 364 => 0x100, 413 => [0x16,0x18], 441 => 0x28, 442 => 0x24, 443 => 0x29 },
      +	'cameraowner' => { 141 => 0xc353 },
      +	'cameraparameters' => { 302 => 0x2050 },
       	'camerapicturestyle' => { 28 => 0xaf },
      -	'camerapitch' => { 112 => 0x9, 366 => "\xa9gpt" },
      -	'camerapointcloud' => { 442 => [\'Cameras','CamerasCameraPointCloud'] },
      -	'camerapointcloudmetric' => { 442 => [\'Cameras','CamerasCameraPointCloudMetric'] },
      -	'camerapointcloudpointcloud' => { 442 => [\'Cameras','CamerasCameraPointCloudPointCloud'] },
      -	'camerapointcloudpoints' => { 442 => [\'Cameras','CamerasCameraPointCloudPoints'] },
      -	'camerapose' => { 442 => [\'Cameras','CamerasCameraPose'] },
      -	'cameraposepositionx' => { 442 => [\'Cameras','CamerasCameraPosePositionX'] },
      -	'cameraposepositiony' => { 442 => [\'Cameras','CamerasCameraPosePositionY'] },
      -	'cameraposepositionz' => { 442 => [\'Cameras','CamerasCameraPosePositionZ'] },
      -	'cameraposerotationw' => { 442 => [\'Cameras','CamerasCameraPoseRotationW'] },
      -	'cameraposerotationx' => { 442 => [\'Cameras','CamerasCameraPoseRotationX'] },
      -	'cameraposerotationy' => { 442 => [\'Cameras','CamerasCameraPoseRotationY'] },
      -	'cameraposerotationz' => { 442 => [\'Cameras','CamerasCameraPoseRotationZ'] },
      -	'cameraposetimestamp' => { 442 => [\'Cameras','CamerasCameraPoseTimestamp'] },
      -	'cameraprofile' => { 462 => 'CameraProfile', 464 => 'CameraProfile' },
      -	'cameraprofiledigest' => { 462 => 'CameraProfileDigest', 464 => 'CameraProfileDigest' },
      -	'camerarawcolortone' => { 106 => 0xe1 },
      -	'camerarawcontrast' => { 106 => 0xe3 },
      -	'camerarawhighlightpoint' => { 106 => 0xe6 },
      -	'camerarawlinear' => { 106 => 0xe4 },
      -	'camerarawoutputhighlightpoint' => { 106 => 0xe8 },
      -	'camerarawoutputshadowpoint' => { 106 => 0xe9 },
      -	'camerarawsaturation' => { 106 => 0xe2 },
      -	'camerarawshadowpoint' => { 106 => 0xe7 },
      -	'camerarawsharpness' => { 106 => 0xe5 },
      -	'cameraroll' => { 112 => 0xb, 366 => "\xa9grl" },
      -	'cameras' => { 442 => 'Cameras' },
      -	'cameraserialnumber' => { 116 => 0xc62f, 174 => 'CameraSerialNumber', 452 => 'CameraSerialNumber' },
      -	'camerasettingsversion' => { 283 => 0x0 },
      -	'cameratemperature' => { 7 => 0x18, 9 => 0x1b, 11 => 0x18, 13 => 0x19, 14 => 0x18, 15 => 0x18, 16 => 0x19, 17 => 0x19, 18 => 0x19, 19 => 0x17, 20 => 0x19, 21 => 0x1b, 22 => 0x19, 23 => 0x19, 24 => 0x1b, 25 => 0x1b, 26 => 0x1b, 27 => 0x1b, 28 => 0x19, 29 => 0x1b, 30 => [0x87,0x91], 31 => [0x99,0x9f,0xa4,0xa8,0x105], 33 => ['-3',0x64,0x47,0x53,0x5b,0x5c], 74 => 0xc, 134 => 0x406, 287 => 0x1306, 301 => 0x320, 308 => 0x3402, 341 => 0x47, 380 => 0x43, 430 => 0x5 },
      -	'cameratemperature4' => { 346 => 0x14 },
      -	'cameratemperature5' => { 346 => 0x16 },
      -	'cameratemperaturerangemax' => { 118 => 0x5 },
      -	'cameratemperaturerangemin' => { 118 => 0x6 },
      -	'cameratrait' => { 442 => [\'Cameras','CamerasCameraTrait'] },
      -	'cameratype' => { 74 => 0x1a, 288 => 0x207 },
      -	'cameratype2' => { 284 => 0x100 },
      -	'cameravendorinfo' => { 442 => [\'Cameras','CamerasCameraVendorInfo'] },
      -	'cameravendorinfomanufacturer' => { 442 => [\'Cameras','CamerasCameraVendorInfoManufacturer'] },
      -	'cameravendorinfomodel' => { 442 => [\'Cameras','CamerasCameraVendorInfoModel'] },
      -	'cameravendorinfonotes' => { 442 => [\'Cameras','CamerasCameraVendorInfoNotes'] },
      -	'camerayaw' => { 112 => 0xa, 366 => "\xa9gyw" },
      -	'camreverse' => { 113 => 'CamReverse' },
      -	'canondr4' => { 117 => 'CanonDR4' },
      +	'camerapitch' => { 115 => 0x9, 380 => "\xa9gpt" },
      +	'camerapointcloud' => { 457 => [\'Cameras','CamerasCameraPointCloud'] },
      +	'camerapointcloudmetric' => { 457 => [\'Cameras','CamerasCameraPointCloudMetric'] },
      +	'camerapointcloudpointcloud' => { 457 => [\'Cameras','CamerasCameraPointCloudPointCloud'] },
      +	'camerapointcloudpoints' => { 457 => [\'Cameras','CamerasCameraPointCloudPoints'] },
      +	'camerapose' => { 457 => [\'Cameras','CamerasCameraPose'] },
      +	'cameraposepositionx' => { 457 => [\'Cameras','CamerasCameraPosePositionX'] },
      +	'cameraposepositiony' => { 457 => [\'Cameras','CamerasCameraPosePositionY'] },
      +	'cameraposepositionz' => { 457 => [\'Cameras','CamerasCameraPosePositionZ'] },
      +	'cameraposerotationw' => { 457 => [\'Cameras','CamerasCameraPoseRotationW'] },
      +	'cameraposerotationx' => { 457 => [\'Cameras','CamerasCameraPoseRotationX'] },
      +	'cameraposerotationy' => { 457 => [\'Cameras','CamerasCameraPoseRotationY'] },
      +	'cameraposerotationz' => { 457 => [\'Cameras','CamerasCameraPoseRotationZ'] },
      +	'cameraposetimestamp' => { 457 => [\'Cameras','CamerasCameraPoseTimestamp'] },
      +	'cameraprofile' => { 477 => 'CameraProfile', 479 => 'CameraProfile' },
      +	'cameraprofiledigest' => { 477 => 'CameraProfileDigest', 479 => 'CameraProfileDigest' },
      +	'camerarawcolortone' => { 109 => 0xe1 },
      +	'camerarawcontrast' => { 109 => 0xe3 },
      +	'camerarawhighlightpoint' => { 109 => 0xe6 },
      +	'camerarawlinear' => { 109 => 0xe4 },
      +	'camerarawoutputhighlightpoint' => { 109 => 0xe8 },
      +	'camerarawoutputshadowpoint' => { 109 => 0xe9 },
      +	'camerarawsaturation' => { 109 => 0xe2 },
      +	'camerarawshadowpoint' => { 109 => 0xe7 },
      +	'camerarawsharpness' => { 109 => 0xe5 },
      +	'cameraroll' => { 115 => 0xb, 380 => "\xa9grl" },
      +	'cameras' => { 457 => 'Cameras' },
      +	'cameraserialnumber' => { 119 => 0xc62f, 178 => 'CameraSerialNumber', 467 => 'CameraSerialNumber' },
      +	'camerasettingsversion' => { 297 => 0x0 },
      +	'cameratemperature' => { 7 => 0x18, 9 => 0x1b, 11 => 0x18, 13 => 0x19, 14 => 0x18, 15 => 0x18, 16 => 0x19, 17 => 0x19, 18 => 0x19, 19 => 0x17, 20 => 0x19, 21 => 0x1b, 22 => 0x19, 23 => 0x19, 24 => 0x1b, 25 => 0x1b, 26 => 0x1b, 27 => 0x1b, 28 => 0x19, 29 => 0x1b, 30 => [0x87,0x91], 31 => [0x99,0x9f,0xa4,0xa8,0x105], 33 => ['-3',0x64,0x47,0x53,0x5b,0x5c], 77 => 0xc, 138 => 0x406, 301 => 0x1306, 315 => 0x320, 322 => 0x3402, 355 => 0x47, 394 => 0x43, 445 => 0x5 },
      +	'cameratemperature4' => { 360 => 0x14 },
      +	'cameratemperature5' => { 360 => 0x16 },
      +	'cameratemperaturerangemax' => { 121 => 0x5 },
      +	'cameratemperaturerangemin' => { 121 => 0x6 },
      +	'cameratrait' => { 457 => [\'Cameras','CamerasCameraTrait'] },
      +	'cameratype' => { 77 => 0x1a, 302 => 0x207 },
      +	'cameratype2' => { 298 => 0x100 },
      +	'cameravendorinfo' => { 457 => [\'Cameras','CamerasCameraVendorInfo'] },
      +	'cameravendorinfomanufacturer' => { 457 => [\'Cameras','CamerasCameraVendorInfoManufacturer'] },
      +	'cameravendorinfomodel' => { 457 => [\'Cameras','CamerasCameraVendorInfoModel'] },
      +	'cameravendorinfonotes' => { 457 => [\'Cameras','CamerasCameraVendorInfoNotes'] },
      +	'camerayaw' => { 115 => 0xa, 380 => "\xa9gyw" },
      +	'camreverse' => { 116 => 'CamReverse' },
      +	'canondr4' => { 120 => 'CanonDR4' },
       	'canonexposuremode' => { 34 => 0x14 },
      -	'canonfiledescription' => { 94 => 0x805 },
      -	'canonfilelength' => { 61 => 0xe },
      -	'canonfirmwareversion' => { 61 => 0x7, 94 => 0x80b },
      -	'canonflashinfo' => { 94 => 0x1028 },
      +	'canonfiledescription' => { 97 => 0x805 },
      +	'canonfilelength' => { 64 => 0xe },
      +	'canonfirmwareversion' => { 64 => 0x7, 97 => 0x80b },
      +	'canonflashinfo' => { 97 => 0x1028 },
       	'canonflashmode' => { 34 => 0x4 },
       	'canonimagesize' => { 10 => 0x39, 34 => 0xa },
      -	'canonimagetype' => { 61 => 0x6, 94 => 0x815 },
      -	'canonmodelid' => { 61 => 0x10, 94 => 0x1834 },
      -	'canonvrd' => { 117 => 'CanonVRD' },
      -	'caption' => { 457 => 'caption' },
      -	'caption-abstract' => { 128 => 0x78 },
      -	'captionsauthornames' => { 467 => 'CaptionsAuthorNames' },
      -	'captionsdatetimestamps' => { 467 => 'CaptionsDateTimeStamps' },
      -	'captionwriter' => { 476 => 'CaptionWriter' },
      -	'captureframerate' => { 110 => 0x4001 },
      -	'captureheightnormal' => { 134 => 0x1839 },
      -	'capturelook' => { 134 => 0xc48 },
      -	'capturemode' => { 360 => 'com.apple.photos.captureMode' },
      -	'capturesoftware' => { 450 => 'CaptureSoftware' },
      -	'capturewidthnormal' => { 134 => 0x1838 },
      -	'capturewidthtest' => { 134 => 0x1842 },
      -	'cardshutterlock' => { 179 => 0x49 },
      -	'casioimagesize' => { 110 => 0x9 },
      -	'catalogsets' => { 128 => 0xff, 443 => 'CatalogSets', 455 => 'CatalogSets' },
      -	'categories' => { 61 => 0x23, 457 => 'categories' },
      -	'category' => { 128 => 0xf, 282 => 0x30, 358 => 'catg', 476 => 'Category' },
      -	'cbcrgain' => { 380 => 0xa036 },
      -	'cbcrgaindefault' => { 380 => 0xa035 },
      -	'cbcrmatrix' => { 380 => 0xa034 },
      -	'cbcrmatrixdefault' => { 380 => 0xa033 },
      -	'ccdboardversion' => { 301 => 0x331 },
      -	'ccdscanmode' => { 288 => 0x1039 },
      -	'ccdsensitivity' => { 249 => 0x6 },
      -	'ccdversion' => { 301 => 0x330 },
      -	'cellglobalid' => { 461 => 'cgi' },
      -	'celllength' => { 116 => 0x109 },
      -	'cellr' => { 461 => 'r' },
      -	'celltowerid' => { 461 => 'cellid' },
      -	'cellwidth' => { 116 => 0x108 },
      -	'centerafarea' => { 277 => '15.1' },
      -	'centerfocuspoint' => { 281 => '2.2' },
      -	'centerpixel' => { 134 => 0x40c },
      -	'centerweightedareasize' => { 266 => '7.1', 267 => '8.1', 269 => '8.1', 270 => '8.1', 274 => '7.1', 275 => '5.1', 276 => '7.1', 277 => '6.3', 279 => '8.1', 280 => '8.1', 281 => '8.1' },
      -	'certificate' => { 492 => 'Certificate' },
      -	'cfainterpolationalgorithm' => { 134 => 0xe60 },
      -	'cfainterpolationmetric' => { 134 => 0xe61 },
      -	'cfaoffsetcols' => { 134 => 0xc71 },
      -	'cfaoffsetrows' => { 134 => 0xc6f },
      -	'cfapattern' => { 116 => 0xa302, 311 => 0x9, 468 => 'CFAPattern' },
      -	'cfapattern2' => { 116 => 0x828e },
      -	'cfapatterncolumns' => { 468 => [\'CFAPattern','CFAPatternColumns'] },
      -	'cfapatternrows' => { 468 => [\'CFAPattern','CFAPatternRows'] },
      -	'cfapatternvalues' => { 468 => [\'CFAPattern','CFAPatternValues'] },
      -	'cfarepeatpatterndim' => { 116 => 0x828d },
      -	'cfazipperfixthreshold' => { 134 => 0xe62 },
      -	'channel' => { 478 => 'channel' },
      -	'channela-lang' => { 478 => [\'channel','channelA-lang'] },
      -	'channelchannel' => { 478 => [\'channel','channelChannel'] },
      -	'channels' => { 151 => 'Channels' },
      -	'channelsubchannel1' => { 478 => [\'channel','channelSubchannel1'] },
      -	'channelsubchannel2' => { 478 => [\'channel','channelSubchannel2'] },
      -	'channelsubchannel3' => { 478 => [\'channel','channelSubchannel3'] },
      -	'channelsubchannel4' => { 478 => [\'channel','channelSubchannel4'] },
      -	'chapterlist' => { 366 => 'chpl' },
      -	'checkmark' => { 100 => 0x10101, 105 => 0x26a },
      -	'checkmark2' => { 106 => 0x8e },
      -	'childfontfiles' => { 493 => [\'Fonts','FontsChildFontFiles'] },
      -	'chmodeshootingspeed' => { 266 => '10.3', 267 => '11.2' },
      -	'chromablurradius' => { 116 => 0xc631 },
      -	'chromanoisecolorspace' => { 134 => 0xe6d },
      -	'chromanoiseedgemapthresh' => { 134 => 0xe6c },
      -	'chromanoisehighfthresh' => { 134 => 0xe6a },
      -	'chromanoiselowfthresh' => { 134 => 0xe6b },
      -	'chromaticaberration' => { 100 => 0x20703, 106 => 0x66, 380 => 0xa051 },
      -	'chromaticaberrationb' => { 462 => 'ChromaticAberrationB', 464 => 'ChromaticAberrationB' },
      -	'chromaticaberrationblue' => { 100 => 0x20708, 106 => 0x6b },
      -	'chromaticaberrationcorr' => { 76 => [0x4,0x5] },
      -	'chromaticaberrationcorrection' => { 116 => 0x7034, 331 => 0x1, 439 => 0x900d },
      -	'chromaticaberrationcorrparams' => { 116 => 0x7035, 434 => 0x66a, 435 => [0x37c,0x384,0x39c,0x3b0,0x3b8] },
      -	'chromaticaberrationon' => { 100 => '0x20703.0', 106 => 0x62 },
      -	'chromaticaberrationr' => { 462 => 'ChromaticAberrationR', 464 => 'ChromaticAberrationR' },
      -	'chromaticaberrationred' => { 100 => 0x20707, 106 => 0x6a },
      -	'chromaticaberrationsetting' => { 77 => 0x6 },
      -	'chrominancenoisereduction' => { 100 => 0x20601, 106 => 0x5e, 383 => 0x1a },
      -	'chrominancenr_tiff_jpeg' => { 106 => 0x60 },
      -	'circadatecreated' => { 474 => 'CircaDateCreated' },
      -	'circgradbasedcorractive' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionActive'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionActive'] },
      -	'circgradbasedcorramount' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionAmount'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionAmount'] },
      -	'circgradbasedcorrbrightness' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalBrightness'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalBrightness'] },
      -	'circgradbasedcorrclarity' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity'] },
      -	'circgradbasedcorrclarity2012' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity2012'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity2012'] },
      -	'circgradbasedcorrcontrast' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast'] },
      -	'circgradbasedcorrcontrast2012' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast2012'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast2012'] },
      -	'circgradbasedcorrdefringe' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalDefringe'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalDefringe'] },
      -	'circgradbasedcorrexposure' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure'] },
      -	'circgradbasedcorrexposure2012' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure2012'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure2012'] },
      -	'circgradbasedcorrhighlights2012' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalHighlights2012'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalHighlights2012'] },
      -	'circgradbasedcorrhue' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalToningHue'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalToningHue'] },
      -	'circgradbasedcorrluminancenoise' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalLuminanceNoise'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalLuminanceNoise'] },
      -	'circgradbasedcorrmaskalpha' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAlpha'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAlpha'] },
      -	'circgradbasedcorrmaskangle' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAngle'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAngle'] },
      -	'circgradbasedcorrmaskbottom' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksBottom'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksBottom'] },
      -	'circgradbasedcorrmaskcentervalue' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterValue'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterValue'] },
      -	'circgradbasedcorrmaskcenterweight' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterWeight'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterWeight'] },
      -	'circgradbasedcorrmaskdabs' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksDabs'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksDabs'] },
      -	'circgradbasedcorrmaskfeather' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFeather'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFeather'] },
      -	'circgradbasedcorrmaskflipped' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlipped'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlipped'] },
      -	'circgradbasedcorrmaskflow' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlow'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlow'] },
      -	'circgradbasedcorrmaskfullx' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullX'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullX'] },
      -	'circgradbasedcorrmaskfully' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullY'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullY'] },
      -	'circgradbasedcorrmaskleft' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksLeft'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksLeft'] },
      -	'circgradbasedcorrmaskmidpoint' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMidpoint'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMidpoint'] },
      -	'circgradbasedcorrmaskperimetervalue' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksPerimeterValue'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksPerimeterValue'] },
      -	'circgradbasedcorrmaskradius' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRadius'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRadius'] },
      -	'circgradbasedcorrmaskright' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRight'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRight'] },
      -	'circgradbasedcorrmaskroundness' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRoundness'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRoundness'] },
      -	'circgradbasedcorrmasks' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasks'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasks'] },
      -	'circgradbasedcorrmasksizex' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeX'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeX'] },
      -	'circgradbasedcorrmasksizey' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeY'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeY'] },
      -	'circgradbasedcorrmasktop' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksTop'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksTop'] },
      -	'circgradbasedcorrmaskvalue' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskValue'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskValue'] },
      -	'circgradbasedcorrmaskversion' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksVersion'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksVersion'] },
      -	'circgradbasedcorrmaskwhat' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksWhat'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksWhat'] },
      -	'circgradbasedcorrmaskx' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksX'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksX'] },
      -	'circgradbasedcorrmasky' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksY'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksY'] },
      -	'circgradbasedcorrmaskzerox' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroX'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroX'] },
      -	'circgradbasedcorrmaskzeroy' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroY'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroY'] },
      -	'circgradbasedcorrmoire' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalMoire'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalMoire'] },
      -	'circgradbasedcorrsaturation' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSaturation','CircularGradientBasedCorrectionsLocalToningSaturation'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSaturation','CircularGradientBasedCorrectionsLocalToningSaturation'] },
      -	'circgradbasedcorrshadows2012' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalShadows2012'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalShadows2012'] },
      -	'circgradbasedcorrsharpness' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSharpness'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSharpness'] },
      -	'circgradbasedcorrtemperature' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTemperature'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTemperature'] },
      -	'circgradbasedcorrtint' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTint'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTint'] },
      -	'circgradbasedcorrwhat' => { 462 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsWhat'], 464 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsWhat'] },
      -	'circulargradientbasedcorrections' => { 462 => 'CircularGradientBasedCorrections', 464 => 'CircularGradientBasedCorrections' },
      -	'city' => { 128 => 0x5a, 157 => 'City', 306 => 0x6d, 476 => 'City' },
      -	'city2' => { 306 => 0x80 },
      -	'clarity' => { 222 => 0x35, 223 => 0x3d, 462 => 'Clarity', 464 => 'Clarity' },
      -	'clarity2012' => { 462 => 'Clarity2012', 464 => 'Clarity2012' },
      -	'claritycontrol' => { 341 => 0x96 },
      -	'classifystate' => { 128 => 0xe1 },
      -	'clearretouch' => { 306 => 0x7c },
      -	'clearretouchvalue' => { 306 => 0xa3 },
      -	'client' => { 488 => 'client' },
      -	'clientname' => { 470 => 'ClientName' },
      -	'clipfilename' => { 366 => 'clfn' },
      -	'clipid' => { 366 => 'clid' },
      -	'clmodeshootingspeed' => { 266 => '10.2', 267 => '11.3', 269 => '11.2', 270 => '11.2', 275 => '11.2', 276 => '10.2', 279 => '11.2', 280 => '11.2', 281 => '11.1' },
      -	'cmcontrast' => { 291 => 0x2022 },
      -	'cmexposurecompensation' => { 291 => 0x2000 },
      -	'cmhue' => { 291 => 0x2021 },
      -	'cmsaturation' => { 291 => 0x2020 },
      -	'cmsharpness' => { 291 => 0x2023 },
      -	'cmwhitebalance' => { 291 => 0x2001 },
      -	'cmwhitebalancecomp' => { 291 => 0x2002 },
      -	'cmwhitebalancegraypoint' => { 291 => 0x2010 },
      -	'codec' => { 165 => 'Codec' },
      -	'codedcharacterset' => { 129 => 0x5a },
      -	'codeversion' => { 366 => 'cver' },
      -	'collection' => { 296 => 'Collection' },
      -	'collectionname' => { 166 => [\'Collections','CollectionsCollectionName'], 366 => 'coll' },
      -	'collections' => { 166 => 'Collections', 457 => 'collections' },
      -	'collectionuri' => { 166 => [\'Collections','CollectionsCollectionURI'] },
      -	'color' => { 360 => 'player.movie.visual.color', 477 => 'color' },
      -	'coloraberrationcontrol' => { 259 => 0xc89224b },
      -	'coloradjustment' => { 383 => 0x14 },
      -	'coloradjustmentmode' => { 382 => 0x210 },
      -	'coloranta' => { 493 => [\'Colorants','ColorantsA'] },
      -	'colorantb' => { 493 => [\'Colorants','ColorantsB'] },
      -	'colorantblack' => { 493 => [\'Colorants','ColorantsBlack'] },
      -	'colorantblue' => { 493 => [\'Colorants','ColorantsBlue'] },
      -	'colorantcyan' => { 493 => [\'Colorants','ColorantsCyan'] },
      -	'colorantgray' => { 493 => [\'Colorants','ColorantsGray'] },
      -	'colorantgreen' => { 493 => [\'Colorants','ColorantsGreen'] },
      -	'colorantl' => { 493 => [\'Colorants','ColorantsL'] },
      -	'colorantmagenta' => { 493 => [\'Colorants','ColorantsMagenta'] },
      -	'colorantmode' => { 493 => [\'Colorants','ColorantsMode'] },
      -	'colorantred' => { 493 => [\'Colorants','ColorantsRed'] },
      -	'colorants' => { 493 => 'Colorants' },
      -	'colorantswatchname' => { 493 => [\'Colorants','ColorantsSwatchName'] },
      -	'coloranttint' => { 493 => [\'Colorants','ColorantsTint'] },
      -	'coloranttype' => { 493 => [\'Colorants','ColorantsType'] },
      -	'colorantyellow' => { 493 => [\'Colorants','ColorantsYellow'] },
      -	'colorbalance' => { 152 => 'ColorBalance' },
      -	'colorbalanceadj' => { 259 => 0x76a43202 },
      -	'colorbalanceblue' => { 176 => 0x1e },
      -	'colorbalancegreen' => { 176 => 0x1d },
      -	'colorbalancered' => { 176 => 0x1c },
      -	'colorbalanceversion' => { 197 => 0x4, 198 => 0x4, 199 => 0x0 },
      -	'colorblur' => { 106 => 0x65 },
      -	'colorbluron' => { 100 => 0x20704 },
      -	'colorbooster' => { 259 => 0x5f0e7d23 },
      -	'colorboostlevel' => { 253 => 0x1 },
      -	'colorboosttype' => { 253 => 0x0 },
      -	'colorchromeeffect' => { 124 => 0x1048 },
      -	'colorchromefxblue' => { 124 => 0x104e },
      -	'colorclass' => { 352 => 0xde, 353 => 'ColorClass' },
      -	'colorcompensationfilter' => { 179 => [0x3a,0x5f], 181 => 0x111, 406 => 0xb022 },
      -	'colorcompensationfiltercustom' => { 393 => 0xd, 394 => 0xc },
      -	'colorcompensationfilterset' => { 393 => 0x8, 394 => 0x7, 395 => 0x18, 411 => 0xf },
      -	'colorcontrol' => { 288 => 0x102b },
      -	'colorcorrection' => { 439 => 0x8015 },
      -	'colorcreatoreffect' => { 283 => 0x532 },
      -	'colordataversion' => { 42 => 0x0, 43 => 0x0, 44 => 0x0, 45 => 0x0, 46 => 0x0, 47 => 0x0, 48 => 0x0 },
      -	'coloreffect' => { 306 => 0x28 },
      -	'colorfilter' => { 109 => 0x17, 110 => 0x3017, 176 => 0x29, 184 => [0x38,0x4d,0x4f], 348 => 0x17 },
      -	'colorgain' => { 227 => 0x51 },
      -	'colorhue' => { 100 => 0x20900, 219 => 0x8d },
      -	'colorimetricreference' => { 116 => 0xc6bf },
      -	'colorlabel' => { 467 => 'ColorLabel' },
      -	'colormatrix' => { 287 => 0x200, 288 => 0x1011, 380 => 0xa030 },
      -	'colormatrix1' => { 116 => 0xc621, 350 => 0x106 },
      -	'colormatrix2' => { 116 => 0xc622, 291 => 0x200, 350 => 0x226 },
      -	'colormatrixa' => { 341 => 0x203 },
      -	'colormatrixadobergb' => { 380 => 0xa032 },
      -	'colormatrixb' => { 341 => 0x204 },
      -	'colormatrixnumber' => { 288 => 0x1019 },
      -	'colormatrixsrgb' => { 380 => 0xa031 },
      -	'colormode' => { 110 => 0x3015, 124 => 0x1210, 136 => 0x66, 176 => 0x28, 179 => 0x16, 181 => 0x101, 182 => 0x36, 184 => 0x7, 219 => 0x3, 249 => 0x4, 306 => 0x32, 383 => 0x2c, 406 => 0xb029, 476 => 'ColorMode' },
      -	'colormoirereduction' => { 100 => 0x20670, 260 => 0x15 },
      -	'colormoirereductionmode' => { 260 => 0x5 },
      -	'colormoirereductionon' => { 100 => '0x20670.0' },
      -	'colornoisereduction' => { 439 => 0x8029, 462 => 'ColorNoiseReduction', 464 => 'ColorNoiseReduction' },
      -	'colornoisereductiondetail' => { 462 => 'ColorNoiseReductionDetail', 464 => 'ColorNoiseReductionDetail' },
      -	'colornoisereductionintensity' => { 260 => 0x18 },
      -	'colornoisereductionsharpness' => { 260 => 0x1c },
      -	'colornoisereductionsmoothness' => { 462 => 'ColorNoiseReductionSmoothness', 464 => 'ColorNoiseReductionSmoothness' },
      -	'colorplanes' => { 120 => 0x2 },
      -	'colorprofile' => { 176 => 0x33 },
      -	'colorprofilesettings' => { 283 => 0x539 },
      -	'colorrepresentation' => { 130 => 0x3c },
      -	'colorsaturationadj' => { 100 => 0x20305 },
      -	'colorsequence' => { 130 => 0x41 },
      -	'colorspace' => { 49 => 0x3, 61 => 0xb4, 94 => 0x10b4, 116 => 0xa001, 158 => 'ColorSpace', 177 => 0x2f, 178 => 0x25, 179 => 0x17, 219 => 0x1e, 283 => 0x507, 341 => 0x37, 380 => 0xa011, 383 => 0xb, 393 => 0x1b, 394 => 0x83, 395 => 0xe, 411 => 0x6, 468 => 'ColorSpace' },
      -	'colortempasshot' => { 38 => 0x4, 39 => 0x7, 40 => 0x1d, 41 => 0x26, 42 => 0x43, 45 => 0x43, 46 => 0x43, 47 => 0x43, 48 => 0x4b },
      -	'colortempauto' => { 38 => 0x9, 39 => 0xf, 40 => 0x22, 41 => 0x1c, 42 => 0x48, 45 => 0x48, 46 => 0x48, 47 => 0x48, 48 => 0x50 },
      -	'colortempcloudy' => { 38 => 0x22, 39 => 0x37, 40 => 0x31, 41 => 0x35, 42 => 0x5c, 45 => 0x75, 46 => 0x8e, 47 => 0x93, 48 => 0x96, 341 => 0x55 },
      -	'colortempcustom' => { 42 => 0x84 },
      +	'canonimagetype' => { 64 => 0x6, 97 => 0x815 },
      +	'canonlogversion' => { 63 => 0xb },
      +	'canonmodelid' => { 64 => 0x10, 97 => 0x1834 },
      +	'canonvrd' => { 120 => 'CanonVRD' },
      +	'caption' => { 472 => 'caption' },
      +	'caption-abstract' => { 131 => 0x78 },
      +	'captionsauthornames' => { 482 => 'CaptionsAuthorNames' },
      +	'captionsdatetimestamps' => { 482 => 'CaptionsDateTimeStamps' },
      +	'captionwriter' => { 491 => 'CaptionWriter' },
      +	'captureframerate' => { 113 => 0x4001 },
      +	'captureheightnormal' => { 138 => 0x1839 },
      +	'capturelook' => { 138 => 0xc48 },
      +	'capturemode' => { 374 => 'com.apple.photos.captureMode' },
      +	'capturesoftware' => { 465 => 'CaptureSoftware' },
      +	'capturewidthnormal' => { 138 => 0x1838 },
      +	'capturewidthtest' => { 138 => 0x1842 },
      +	'cardshutterlock' => { 184 => 0x49 },
      +	'casioimagesize' => { 113 => 0x9 },
      +	'catalogsets' => { 131 => 0xff, 458 => 'CatalogSets', 470 => 'CatalogSets' },
      +	'categories' => { 64 => 0x23, 472 => 'categories' },
      +	'category' => { 131 => 0xf, 179 => 'WM/Category', 296 => 0x30, 372 => 'catg', 491 => 'Category' },
      +	'cbcrgain' => { 394 => 0xa036 },
      +	'cbcrgaindefault' => { 394 => 0xa035 },
      +	'cbcrmatrix' => { 394 => 0xa034 },
      +	'cbcrmatrixdefault' => { 394 => 0xa033 },
      +	'ccdboardversion' => { 315 => 0x331 },
      +	'ccdscanmode' => { 302 => 0x1039 },
      +	'ccdsensitivity' => { 262 => 0x6 },
      +	'ccdversion' => { 315 => 0x330 },
      +	'cellglobalid' => { 476 => 'cgi' },
      +	'celllength' => { 119 => 0x109 },
      +	'cellr' => { 476 => 'r' },
      +	'celltowerid' => { 476 => 'cellid' },
      +	'cellwidth' => { 119 => 0x108 },
      +	'centerafarea' => { 290 => '15.1' },
      +	'centerfocuspoint' => { 294 => '2.2' },
      +	'centerpixel' => { 138 => 0x40c },
      +	'centerweightedareasize' => { 279 => '7.1', 280 => '8.1', 282 => '8.1', 283 => '8.1', 287 => '7.1', 288 => '5.1', 289 => '7.1', 290 => '6.3', 292 => '8.1', 293 => '8.1', 294 => '8.1', 295 => 0x1f },
      +	'certificate' => { 507 => 'Certificate' },
      +	'cfainterpolationalgorithm' => { 138 => 0xe60 },
      +	'cfainterpolationmetric' => { 138 => 0xe61 },
      +	'cfaoffsetcols' => { 138 => 0xc71 },
      +	'cfaoffsetrows' => { 138 => 0xc6f },
      +	'cfapattern' => { 119 => 0xa302, 325 => 0x9, 483 => 'CFAPattern' },
      +	'cfapattern2' => { 119 => 0x828e },
      +	'cfapatterncolumns' => { 483 => [\'CFAPattern','CFAPatternColumns'] },
      +	'cfapatternrows' => { 483 => [\'CFAPattern','CFAPatternRows'] },
      +	'cfapatternvalues' => { 483 => [\'CFAPattern','CFAPatternValues'] },
      +	'cfarepeatpatterndim' => { 119 => 0x828d },
      +	'cfazipperfixthreshold' => { 138 => 0xe62 },
      +	'channel' => { 493 => 'channel' },
      +	'channela-lang' => { 493 => [\'channel','channelA-lang'] },
      +	'channelchannel' => { 493 => [\'channel','channelChannel'] },
      +	'channels' => { 155 => 'Channels' },
      +	'channelsubchannel1' => { 493 => [\'channel','channelSubchannel1'] },
      +	'channelsubchannel2' => { 493 => [\'channel','channelSubchannel2'] },
      +	'channelsubchannel3' => { 493 => [\'channel','channelSubchannel3'] },
      +	'channelsubchannel4' => { 493 => [\'channel','channelSubchannel4'] },
      +	'chapterlist' => { 380 => 'chpl' },
      +	'checkmark' => { 103 => 0x10101, 108 => 0x26a },
      +	'checkmark2' => { 109 => 0x8e },
      +	'childfontfiles' => { 508 => [\'Fonts','FontsChildFontFiles'] },
      +	'chmodeshootingspeed' => { 279 => '10.3', 280 => '11.2', 295 => 0x10b },
      +	'chromablurradius' => { 119 => 0xc631 },
      +	'chromanoisecolorspace' => { 138 => 0xe6d },
      +	'chromanoiseedgemapthresh' => { 138 => 0xe6c },
      +	'chromanoisehighfthresh' => { 138 => 0xe6a },
      +	'chromanoiselowfthresh' => { 138 => 0xe6b },
      +	'chromaticaberration' => { 103 => 0x20703, 109 => 0x66, 394 => 0xa051 },
      +	'chromaticaberrationb' => { 477 => 'ChromaticAberrationB', 479 => 'ChromaticAberrationB' },
      +	'chromaticaberrationblue' => { 103 => 0x20708, 109 => 0x6b },
      +	'chromaticaberrationcorr' => { 79 => [0x4,0x5] },
      +	'chromaticaberrationcorrection' => { 119 => 0x7034, 345 => 0x1, 454 => 0x900d },
      +	'chromaticaberrationcorrparams' => { 119 => 0x7035, 449 => 0x66a, 450 => [0x37c,0x384,0x39c,0x3b0,0x3b8] },
      +	'chromaticaberrationon' => { 103 => '0x20703.0', 109 => 0x62 },
      +	'chromaticaberrationr' => { 477 => 'ChromaticAberrationR', 479 => 'ChromaticAberrationR' },
      +	'chromaticaberrationred' => { 103 => 0x20707, 109 => 0x6a },
      +	'chromaticaberrationsetting' => { 80 => 0x6 },
      +	'chrominancenoisereduction' => { 103 => 0x20601, 109 => 0x5e, 397 => 0x1a },
      +	'chrominancenr_tiff_jpeg' => { 109 => 0x60 },
      +	'circadatecreated' => { 489 => 'CircaDateCreated' },
      +	'circgradbasedcorractive' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionActive'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionActive'] },
      +	'circgradbasedcorramount' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionAmount'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionAmount'] },
      +	'circgradbasedcorrblacks2012' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalBlacks2012'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalBlacks2012'] },
      +	'circgradbasedcorrbrightness' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalBrightness'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalBrightness'] },
      +	'circgradbasedcorrclarity' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity'] },
      +	'circgradbasedcorrclarity2012' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity2012'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalClarity2012'] },
      +	'circgradbasedcorrcontrast' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast'] },
      +	'circgradbasedcorrcontrast2012' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast2012'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalContrast2012'] },
      +	'circgradbasedcorrcorrectionname' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionName'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionName'] },
      +	'circgradbasedcorrcorrectionsyncid' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionSyncID'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionSyncID'] },
      +	'circgradbasedcorrdefringe' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalDefringe'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalDefringe'] },
      +	'circgradbasedcorrdehaze' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalDehaze'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalDehaze'] },
      +	'circgradbasedcorrexposure' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure'] },
      +	'circgradbasedcorrexposure2012' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure2012'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalExposure2012'] },
      +	'circgradbasedcorrhighlights2012' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalHighlights2012'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalHighlights2012'] },
      +	'circgradbasedcorrhue' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalHue'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalHue'] },
      +	'circgradbasedcorrluminancenoise' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalLuminanceNoise'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalLuminanceNoise'] },
      +	'circgradbasedcorrmaskalpha' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAlpha'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAlpha'] },
      +	'circgradbasedcorrmaskangle' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAngle'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksAngle'] },
      +	'circgradbasedcorrmaskbottom' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksBottom'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksBottom'] },
      +	'circgradbasedcorrmaskcentervalue' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterValue'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterValue'] },
      +	'circgradbasedcorrmaskcenterweight' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterWeight'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCenterWeight'] },
      +	'circgradbasedcorrmaskdabs' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksDabs'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksDabs'] },
      +	'circgradbasedcorrmaskfeather' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFeather'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFeather'] },
      +	'circgradbasedcorrmaskflipped' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlipped'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlipped'] },
      +	'circgradbasedcorrmaskflow' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlow'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFlow'] },
      +	'circgradbasedcorrmaskfullx' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullX'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullX'] },
      +	'circgradbasedcorrmaskfully' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullY'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksFullY'] },
      +	'circgradbasedcorrmaskinputdigest' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksInputDigest'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksInputDigest'] },
      +	'circgradbasedcorrmaskleft' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksLeft'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksLeft'] },
      +	'circgradbasedcorrmaskmaskactive' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskActive'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskActive'] },
      +	'circgradbasedcorrmaskmaskblendmode' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskBlendMode'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskBlendMode'] },
      +	'circgradbasedcorrmaskmaskdigest' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskDigest'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskDigest'] },
      +	'circgradbasedcorrmaskmaskinverted' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskInverted'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskInverted'] },
      +	'circgradbasedcorrmaskmaskname' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskName'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskName'] },
      +	'circgradbasedcorrmaskmasks' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasks'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasks'] },
      +	'circgradbasedcorrmaskmasksalpha' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksAlpha'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksAlpha'] },
      +	'circgradbasedcorrmaskmasksangle' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksAngle'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksAngle'] },
      +	'circgradbasedcorrmaskmasksbottom' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksBottom'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksBottom'] },
      +	'circgradbasedcorrmaskmaskscentervalue' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksCenterValue'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksCenterValue'] },
      +	'circgradbasedcorrmaskmaskscenterweight' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksCenterWeight'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksCenterWeight'] },
      +	'circgradbasedcorrmaskmasksdabs' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksDabs'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksDabs'] },
      +	'circgradbasedcorrmaskmasksfeather' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksFeather'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksFeather'] },
      +	'circgradbasedcorrmaskmasksflipped' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksFlipped'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksFlipped'] },
      +	'circgradbasedcorrmaskmasksflow' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksFlow'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksFlow'] },
      +	'circgradbasedcorrmaskmasksfullx' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksFullX'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksFullX'] },
      +	'circgradbasedcorrmaskmasksfully' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksFullY'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksFullY'] },
      +	'circgradbasedcorrmaskmasksinputdigest' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksInputDigest'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksInputDigest'] },
      +	'circgradbasedcorrmaskmasksleft' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksLeft'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksLeft'] },
      +	'circgradbasedcorrmaskmasksmaskactive' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskActive'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskActive'] },
      +	'circgradbasedcorrmaskmasksmaskblendmode' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskBlendMode'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskBlendMode'] },
      +	'circgradbasedcorrmaskmasksmaskdigest' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskDigest'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskDigest'] },
      +	'circgradbasedcorrmaskmasksmaskinverted' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskInverted'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskInverted'] },
      +	'circgradbasedcorrmaskmasksmaskname' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskName'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskName'] },
      +	'circgradbasedcorrmaskmasksmasksubtype' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskSubType'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskSubType'] },
      +	'circgradbasedcorrmaskmasksmasksyncid' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskSyncID'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskSyncID'] },
      +	'circgradbasedcorrmaskmasksmaskversion' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskVersion'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskVersion'] },
      +	'circgradbasedcorrmaskmasksmidpoint' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMidpoint'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMidpoint'] },
      +	'circgradbasedcorrmaskmasksorigin' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksOrigin'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksOrigin'] },
      +	'circgradbasedcorrmaskmasksperimetervalue' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksPerimeterValue'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksPerimeterValue'] },
      +	'circgradbasedcorrmaskmasksradius' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksRadius'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksRadius'] },
      +	'circgradbasedcorrmaskmasksreferencepoint' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksReferencePoint'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksReferencePoint'] },
      +	'circgradbasedcorrmaskmasksright' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksRight'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksRight'] },
      +	'circgradbasedcorrmaskmasksroundness' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksRoundness'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksRoundness'] },
      +	'circgradbasedcorrmaskmaskssizex' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksSizeX'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksSizeX'] },
      +	'circgradbasedcorrmaskmaskssizey' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksSizeY'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksSizeY'] },
      +	'circgradbasedcorrmaskmaskstop' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksTop'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksTop'] },
      +	'circgradbasedcorrmaskmasksubtype' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskSubType'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskSubType'] },
      +	'circgradbasedcorrmaskmasksvalue' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskValue'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksMaskValue'] },
      +	'circgradbasedcorrmaskmasksversion' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksVersion'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksVersion'] },
      +	'circgradbasedcorrmaskmaskswhat' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksWhat'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksWhat'] },
      +	'circgradbasedcorrmaskmaskswholeimagearea' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksWholeImageArea'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksWholeImageArea'] },
      +	'circgradbasedcorrmaskmasksx' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksX'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksX'] },
      +	'circgradbasedcorrmaskmasksy' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksY'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksY'] },
      +	'circgradbasedcorrmaskmasksyncid' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskSyncID'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskSyncID'] },
      +	'circgradbasedcorrmaskmaskszerox' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksZeroX'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksZeroX'] },
      +	'circgradbasedcorrmaskmaskszeroy' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksZeroY'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMasksZeroY'] },
      +	'circgradbasedcorrmaskmaskversion' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskVersion'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskVersion'] },
      +	'circgradbasedcorrmaskmidpoint' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMidpoint'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMidpoint'] },
      +	'circgradbasedcorrmaskorigin' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksOrigin'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksOrigin'] },
      +	'circgradbasedcorrmaskperimetervalue' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksPerimeterValue'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksPerimeterValue'] },
      +	'circgradbasedcorrmaskradius' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRadius'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRadius'] },
      +	'circgradbasedcorrmaskrange' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMask'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMask'] },
      +	'circgradbasedcorrmaskrangeareamodels' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels'] },
      +	'circgradbasedcorrmaskrangeareamodelscolorsampleinfo' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'] },
      +	'circgradbasedcorrmaskrangeareamodelscomponents' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents'] },
      +	'circgradbasedcorrmaskrangecoloramount' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount'] },
      +	'circgradbasedcorrmaskrangedepthfeather' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather'] },
      +	'circgradbasedcorrmaskrangedepthmax' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax'] },
      +	'circgradbasedcorrmaskrangedepthmin' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin'] },
      +	'circgradbasedcorrmaskrangeinvert' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert'] },
      +	'circgradbasedcorrmaskrangelumfeather' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather'] },
      +	'circgradbasedcorrmaskrangeluminancedepthsampleinfo' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo'] },
      +	'circgradbasedcorrmaskrangelummax' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax'] },
      +	'circgradbasedcorrmaskrangelummin' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin'] },
      +	'circgradbasedcorrmaskrangelumrange' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange'] },
      +	'circgradbasedcorrmaskrangesampletype' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType'] },
      +	'circgradbasedcorrmaskrangetype' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskType'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskType'] },
      +	'circgradbasedcorrmaskrangeversion' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion'] },
      +	'circgradbasedcorrmaskreferencepoint' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksReferencePoint'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksReferencePoint'] },
      +	'circgradbasedcorrmaskright' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRight'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRight'] },
      +	'circgradbasedcorrmaskroundness' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRoundness'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksRoundness'] },
      +	'circgradbasedcorrmasks' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasks'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasks'] },
      +	'circgradbasedcorrmasksizex' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeX'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeX'] },
      +	'circgradbasedcorrmasksizey' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeY'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksSizeY'] },
      +	'circgradbasedcorrmasktop' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksTop'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksTop'] },
      +	'circgradbasedcorrmaskvalue' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskValue'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksMaskValue'] },
      +	'circgradbasedcorrmaskversion' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksVersion'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksVersion'] },
      +	'circgradbasedcorrmaskwhat' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksWhat'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksWhat'] },
      +	'circgradbasedcorrmaskwholeimagearea' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksWholeImageArea'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksWholeImageArea'] },
      +	'circgradbasedcorrmaskx' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksX'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksX'] },
      +	'circgradbasedcorrmasky' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksY'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksY'] },
      +	'circgradbasedcorrmaskzerox' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroX'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroX'] },
      +	'circgradbasedcorrmaskzeroy' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroY'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionMasksZeroY'] },
      +	'circgradbasedcorrmoire' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalMoire'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalMoire'] },
      +	'circgradbasedcorrrangemask' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMask'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMask'] },
      +	'circgradbasedcorrrangemaskareamodels' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModels'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModels'] },
      +	'circgradbasedcorrrangemaskareamodelscolorsampleinfo' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'] },
      +	'circgradbasedcorrrangemaskareamodelscomponents' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents'] },
      +	'circgradbasedcorrrangemaskcoloramount' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskColorAmount'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskColorAmount'] },
      +	'circgradbasedcorrrangemaskdepthfeather' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskDepthFeather'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskDepthFeather'] },
      +	'circgradbasedcorrrangemaskdepthmax' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskDepthMax'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskDepthMax'] },
      +	'circgradbasedcorrrangemaskdepthmin' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskDepthMin'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskDepthMin'] },
      +	'circgradbasedcorrrangemaskinvert' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskInvert'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskInvert'] },
      +	'circgradbasedcorrrangemasklumfeather' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskLumFeather'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskLumFeather'] },
      +	'circgradbasedcorrrangemaskluminancedepthsampleinfo' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo'] },
      +	'circgradbasedcorrrangemasklummax' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskLumMax'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskLumMax'] },
      +	'circgradbasedcorrrangemasklummin' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskLumMin'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskLumMin'] },
      +	'circgradbasedcorrrangemasklumrange' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskLumRange'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskLumRange'] },
      +	'circgradbasedcorrrangemasksampletype' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskSampleType'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskSampleType'] },
      +	'circgradbasedcorrrangemasktype' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskType'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskType'] },
      +	'circgradbasedcorrrangemaskversion' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskVersion'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsCorrectionRangeMaskVersion'] },
      +	'circgradbasedcorrsaturation' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSaturation'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSaturation'] },
      +	'circgradbasedcorrshadows2012' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalShadows2012'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalShadows2012'] },
      +	'circgradbasedcorrsharpness' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSharpness'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalSharpness'] },
      +	'circgradbasedcorrtemperature' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTemperature'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTemperature'] },
      +	'circgradbasedcorrtexture' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTexture'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTexture'] },
      +	'circgradbasedcorrtint' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTint'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalTint'] },
      +	'circgradbasedcorrtoninghue' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalToningHue'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalToningHue'] },
      +	'circgradbasedcorrtoningsaturation' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalToningSaturation'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalToningSaturation'] },
      +	'circgradbasedcorrwhat' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsWhat'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsWhat'] },
      +	'circgradbasedcorrwhites2012' => { 477 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalWhites2012'], 479 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalWhites2012'] },
      +	'circulargradientbasedcorrections' => { 477 => 'CircularGradientBasedCorrections', 479 => 'CircularGradientBasedCorrections' },
      +	'city' => { 131 => 0x5a, 161 => 'City', 320 => 0x6d, 491 => 'City' },
      +	'city2' => { 320 => 0x80 },
      +	'clarity' => { 232 => 0x35, 233 => 0x3d, 420 => 0x2036, 477 => 'Clarity', 479 => 'Clarity' },
      +	'clarity2012' => { 477 => 'Clarity2012', 479 => 'Clarity2012' },
      +	'claritycontrol' => { 355 => 0x96 },
      +	'classification' => { 380 => 'clsf' },
      +	'classifystate' => { 131 => 0xe1 },
      +	'clearretouch' => { 320 => 0x7c },
      +	'clearretouchvalue' => { 320 => 0xa3 },
      +	'client' => { 503 => 'client' },
      +	'clientname' => { 485 => 'ClientName' },
      +	'clipboardaspectratio' => { 477 => 'ClipboardAspectRatio', 479 => 'ClipboardAspectRatio' },
      +	'clipboardorientation' => { 477 => 'ClipboardOrientation', 479 => 'ClipboardOrientation' },
      +	'clipfilename' => { 380 => 'clfn' },
      +	'clipid' => { 380 => 'clid' },
      +	'clmodeshootingspeed' => { 279 => '10.2', 280 => '11.3', 282 => '11.2', 283 => '11.2', 288 => '11.2', 289 => '10.2', 292 => '11.2', 293 => '11.2', 294 => '11.1', 295 => 0x3b },
      +	'cluster' => { 477 => 'Cluster', 479 => 'Cluster' },
      +	'cmcontrast' => { 305 => 0x2022 },
      +	'cmddialsreverserotation' => { 295 => 0xba },
      +	'cmexposurecompensation' => { 305 => 0x2000 },
      +	'cmhue' => { 305 => 0x2021 },
      +	'cmsaturation' => { 305 => 0x2020 },
      +	'cmsharpness' => { 305 => 0x2023 },
      +	'cmwhitebalance' => { 305 => 0x2001 },
      +	'cmwhitebalancecomp' => { 305 => 0x2002 },
      +	'cmwhitebalancegraypoint' => { 305 => 0x2010 },
      +	'codec' => { 169 => 'Codec' },
      +	'codedcharacterset' => { 132 => 0x5a },
      +	'codeversion' => { 380 => 'cver' },
      +	'collection' => { 310 => 'Collection' },
      +	'collectionname' => { 170 => [\'Collections','CollectionsCollectionName'], 380 => 'coll' },
      +	'collections' => { 170 => 'Collections', 472 => 'collections' },
      +	'collectionuri' => { 170 => [\'Collections','CollectionsCollectionURI'] },
      +	'color' => { 374 => 'player.movie.visual.color', 492 => 'color' },
      +	'coloraberrationcontrol' => { 272 => 0xc89224b },
      +	'coloradjustment' => { 397 => 0x14 },
      +	'coloradjustmentmode' => { 396 => 0x210 },
      +	'coloranta' => { 508 => [\'Colorants','ColorantsA'] },
      +	'colorantb' => { 508 => [\'Colorants','ColorantsB'] },
      +	'colorantblack' => { 508 => [\'Colorants','ColorantsBlack'] },
      +	'colorantblue' => { 508 => [\'Colorants','ColorantsBlue'] },
      +	'colorantcyan' => { 508 => [\'Colorants','ColorantsCyan'] },
      +	'colorantgray' => { 508 => [\'Colorants','ColorantsGray'] },
      +	'colorantgreen' => { 508 => [\'Colorants','ColorantsGreen'] },
      +	'colorantl' => { 508 => [\'Colorants','ColorantsL'] },
      +	'colorantmagenta' => { 508 => [\'Colorants','ColorantsMagenta'] },
      +	'colorantmode' => { 508 => [\'Colorants','ColorantsMode'] },
      +	'colorantred' => { 508 => [\'Colorants','ColorantsRed'] },
      +	'colorants' => { 508 => 'Colorants' },
      +	'colorantswatchname' => { 508 => [\'Colorants','ColorantsSwatchName'] },
      +	'coloranttint' => { 508 => [\'Colorants','ColorantsTint'] },
      +	'coloranttype' => { 508 => [\'Colorants','ColorantsType'] },
      +	'colorantyellow' => { 508 => [\'Colorants','ColorantsYellow'] },
      +	'colorbalance' => { 156 => 'ColorBalance' },
      +	'colorbalanceadj' => { 272 => 0x76a43202 },
      +	'colorbalanceblue' => { 181 => 0x1e },
      +	'colorbalancegreen' => { 181 => 0x1d },
      +	'colorbalancered' => { 181 => 0x1c },
      +	'colorbalanceversion' => { 203 => 0x4, 204 => 0x4, 205 => 0x0 },
      +	'colorblur' => { 109 => 0x65 },
      +	'colorbluron' => { 103 => 0x20704 },
      +	'colorbooster' => { 272 => 0x5f0e7d23 },
      +	'colorboostlevel' => { 266 => 0x1 },
      +	'colorboosttype' => { 266 => 0x0 },
      +	'colorchromeeffect' => { 127 => 0x1048 },
      +	'colorchromefxblue' => { 127 => 0x104e },
      +	'colorclass' => { 366 => 0xde, 367 => 'ColorClass' },
      +	'colorcompensationfilter' => { 184 => [0x3a,0x5f], 186 => 0x111, 420 => 0xb022 },
      +	'colorcompensationfiltercustom' => { 407 => 0xd, 408 => 0xc },
      +	'colorcompensationfilterset' => { 407 => 0x8, 408 => 0x7, 409 => 0x18, 425 => 0xf },
      +	'colorcontrol' => { 302 => 0x102b },
      +	'colorcorrection' => { 454 => 0x8015 },
      +	'colorcreatoreffect' => { 297 => 0x532 },
      +	'colordataversion' => { 41 => 0x0, 42 => 0x0, 44 => 0x0, 45 => 0x0, 46 => 0x0, 47 => 0x0, 48 => 0x0, 49 => 0x0, 50 => 0x0 },
      +	'coloreffect' => { 320 => 0x28 },
      +	'colorfilter' => { 112 => 0x17, 113 => 0x3017, 181 => 0x29, 189 => [0x38,0x4d,0x4f], 362 => 0x17 },
      +	'colorgain' => { 237 => 0x51 },
      +	'colorgradeblending' => { 477 => 'ColorGradeBlending', 479 => 'ColorGradeBlending' },
      +	'colorgradeglobalhue' => { 477 => 'ColorGradeGlobalHue', 479 => 'ColorGradeGlobalHue' },
      +	'colorgradegloballum' => { 477 => 'ColorGradeGlobalLum', 479 => 'ColorGradeGlobalLum' },
      +	'colorgradeglobalsat' => { 477 => 'ColorGradeGlobalSat', 479 => 'ColorGradeGlobalSat' },
      +	'colorgradehighlightlum' => { 477 => 'ColorGradeHighlightLum', 479 => 'ColorGradeHighlightLum' },
      +	'colorgrademidtonehue' => { 477 => 'ColorGradeMidtoneHue', 479 => 'ColorGradeMidtoneHue' },
      +	'colorgrademidtonelum' => { 477 => 'ColorGradeMidtoneLum', 479 => 'ColorGradeMidtoneLum' },
      +	'colorgrademidtonesat' => { 477 => 'ColorGradeMidtoneSat', 479 => 'ColorGradeMidtoneSat' },
      +	'colorgradeshadowlum' => { 477 => 'ColorGradeShadowLum', 479 => 'ColorGradeShadowLum' },
      +	'colorhue' => { 103 => 0x20900, 226 => 0x8d },
      +	'colorimetricreference' => { 119 => 0xc6bf },
      +	'colorlabel' => { 482 => 'ColorLabel' },
      +	'colormatrix' => { 63 => 0xa, 301 => 0x200, 302 => 0x1011, 394 => 0xa030 },
      +	'colormatrix1' => { 119 => 0xc621, 364 => 0x106 },
      +	'colormatrix2' => { 119 => 0xc622, 305 => 0x200, 364 => 0x226 },
      +	'colormatrix3' => { 119 => 0xcd33 },
      +	'colormatrixa' => { 355 => 0x203 },
      +	'colormatrixa2' => { 355 => 0x21c },
      +	'colormatrixadobergb' => { 394 => 0xa032 },
      +	'colormatrixb' => { 355 => 0x204 },
      +	'colormatrixb2' => { 355 => 0x21d },
      +	'colormatrixnumber' => { 302 => 0x1019 },
      +	'colormatrixsrgb' => { 394 => 0xa031 },
      +	'colormode' => { 113 => 0x3015, 127 => 0x1210, 140 => 0x66, 181 => 0x28, 184 => 0x16, 186 => 0x101, 187 => 0x36, 189 => 0x7, 226 => 0x3, 262 => 0x4, 320 => 0x32, 397 => 0x2c, 420 => 0xb029, 491 => 'ColorMode' },
      +	'colormoirereduction' => { 103 => 0x20670, 273 => 0x15 },
      +	'colormoirereductionmode' => { 273 => 0x5 },
      +	'colormoirereductionon' => { 103 => '0x20670.0' },
      +	'colornoisereduction' => { 454 => 0x8029, 477 => 'ColorNoiseReduction', 479 => 'ColorNoiseReduction' },
      +	'colornoisereductiondetail' => { 477 => 'ColorNoiseReductionDetail', 479 => 'ColorNoiseReductionDetail' },
      +	'colornoisereductionintensity' => { 273 => 0x18 },
      +	'colornoisereductionsharpness' => { 273 => 0x1c },
      +	'colornoisereductionsmoothness' => { 477 => 'ColorNoiseReductionSmoothness', 479 => 'ColorNoiseReductionSmoothness' },
      +	'colorplanes' => { 123 => 0x2 },
      +	'colorprofile' => { 181 => 0x33 },
      +	'colorprofilesettings' => { 297 => 0x539 },
      +	'colorrepresentation' => { 133 => 0x3c },
      +	'colorsaturationadj' => { 103 => 0x20305 },
      +	'colorsequence' => { 133 => 0x41 },
      +	'colorspace' => { 51 => 0x3, 64 => 0xb4, 97 => 0x10b4, 119 => 0xa001, 135 => 0x3, 162 => 'ColorSpace', 182 => 0x2f, 183 => 0x25, 184 => 0x17, 226 => 0x1e, 297 => 0x507, 355 => 0x37, 394 => 0xa011, 397 => 0xb, 407 => 0x1b, 408 => 0x83, 409 => 0xe, 425 => 0x6, 483 => 'ColorSpace' },
      +	'colorspace2' => { 63 => 0x9 },
      +	'colorspecapproximation' => { 135 => 0x2 },
      +	'colorspecdata' => { 135 => 0x3 },
      +	'colorspecmethod' => { 135 => 0x0 },
      +	'colorspecprecedence' => { 135 => 0x1 },
      +	'colortempasshot' => { 38 => 0x4, 39 => 0x7, 40 => 0x1d, 41 => 0x59, 42 => 0x6d, 43 => 0x26, 44 => 0x43, 47 => 0x43, 48 => 0x43, 49 => 0x43, 50 => 0x4b },
      +	'colortempauto' => { 38 => 0x9, 39 => 0xf, 40 => 0x22, 41 => 0x5e, 42 => 0x72, 43 => 0x1c, 44 => 0x48, 47 => 0x48, 48 => 0x48, 49 => 0x48, 50 => 0x50 },
      +	'colortempcloudy' => { 38 => 0x22, 39 => 0x37, 40 => 0x31, 41 => 0xa4, 42 => 0xdb, 43 => 0x35, 44 => 0x5c, 47 => 0x75, 48 => 0x8e, 49 => 0x93, 50 => 0x96, 355 => 0x55 },
      +	'colortempcustom' => { 44 => 0x84 },
       	'colortempcustom1' => { 40 => 0x45 },
       	'colortempcustom2' => { 40 => 0x4a },
      -	'colortempdaylight' => { 38 => 0x18, 39 => 0x27, 40 => 0x27, 41 => 0x2b, 42 => 0x52, 45 => 0x6b, 46 => 0x84, 47 => 0x89, 48 => 0x8c, 341 => 0x53 },
      -	'colortemperature' => { 7 => 0x73, 8 => [0x48,0x4e], 9 => 0xc0, 10 => 0x37, 11 => 0x62, 12 => 0x37, 13 => 0x7c, 14 => 0x73, 15 => 0x73, 16 => 0x77, 17 => 0x73, 18 => 0x7c, 19 => 0x58, 20 => 0x73, 21 => 0xc0, 22 => 0x7f, 23 => 0x7d, 24 => 0xc0, 25 => 0xc6, 26 => 0xc7, 27 => 0x135, 28 => 0x7b, 29 => 0x13a, 61 => 0xae, 71 => 0x9, 94 => 0x10ae, 124 => 0x1005, 134 => 0x846, 152 => 'ColorTemperature', 177 => [0x6e,0x49], 178 => 0x3f, 179 => [0x39,0x5e], 181 => 0x10b, 184 => [0x3c,0x4c,0x4e], 301 => 0x321, 341 => 0x50, 373 => 0x1308, 406 => 0xb021, 462 => 'Temperature', 464 => 'Temperature' },
      -	'colortemperatureadj' => { 439 => 0x8013 },
      -	'colortemperatureauto' => { 219 => 0x4f },
      -	'colortemperaturebg' => { 288 => 0x1013 },
      -	'colortemperaturecustom' => { 393 => 0xc, 394 => 0xb },
      -	'colortemperaturerg' => { 288 => 0x1014 },
      -	'colortemperatureset' => { 393 => 0x7, 394 => 0x6 },
      -	'colortemperaturesetting' => { 179 => 0x25, 395 => 0x17, 411 => 0xe },
      -	'colortempflash' => { 38 => 0x36, 39 => 0x57, 40 => 0x40, 41 => 0x49, 42 => 0x70, 45 => 0x89, 46 => 0xa2, 47 => 0xa7, 48 => 0xaa, 341 => 0x5a },
      -	'colortempflashdata' => { 42 => 0x24a },
      -	'colortempfluorescent' => { 38 => 0x2c, 39 => 0x47, 40 => 0x3b, 41 => 0x3f, 42 => 0x66, 45 => 0x7f, 46 => 0x98, 47 => 0x9d, 48 => 0xa0 },
      -	'colortempfluorescentd' => { 341 => 0x57 },
      -	'colortempfluorescentn' => { 341 => 0x58 },
      -	'colortempfluorescentw' => { 341 => 0x59 },
      -	'colortempkelvin' => { 38 => 0x31, 39 => 0x4f, 41 => 0x44, 42 => 0x6b, 45 => 0x84, 46 => 0x9d, 47 => 0xa2, 48 => 0xa5, 306 => 0x44, 373 => 0x1307 },
      -	'colortempmeasured' => { 38 => 0xe, 39 => 0x17, 42 => 0x4d, 45 => 0x4d, 46 => 0x4d, 47 => 0x4d, 48 => 0x55 },
      -	'colortemppc1' => { 41 => 0x94, 42 => 0x75 },
      -	'colortemppc2' => { 41 => 0x99, 42 => 0x7a },
      -	'colortemppc3' => { 41 => 0x9e, 42 => 0x7f },
      -	'colortempshade' => { 38 => 0x1d, 39 => 0x2f, 40 => 0x2c, 41 => 0x30, 42 => 0x57, 45 => 0x70, 46 => 0x89, 47 => 0x8e, 48 => 0x91, 341 => 0x54 },
      -	'colortemptungsten' => { 38 => 0x27, 39 => 0x3f, 40 => 0x36, 41 => 0x3a, 42 => 0x61, 45 => 0x7a, 46 => 0x93, 47 => 0x98, 48 => 0x9b, 341 => 0x56 },
      -	'colortempunknown' => { 38 => 0x13, 39 => 0x1f, 41 => 0x21, 45 => 0x52, 46 => 0x52, 47 => 0x52, 48 => 0x5a },
      -	'colortempunknown10' => { 38 => 0x63, 39 => 0x9f, 41 => 0x76, 45 => 0xa2, 46 => 0x7f, 47 => 0x7f, 48 => 0x87 },
      -	'colortempunknown11' => { 38 => 0x68, 39 => 0xa7, 41 => 0x7b, 45 => 0xa7, 46 => 0xa7, 47 => 0x84, 48 => 0xaf },
      -	'colortempunknown12' => { 38 => 0x6d, 39 => 0xaf, 41 => 0x80, 45 => 0xac, 46 => 0xac, 47 => 0xac, 48 => 0xb4 },
      -	'colortempunknown13' => { 38 => 0x72, 39 => 0xb7, 41 => 0x85, 45 => 0xb1, 46 => 0xb1, 47 => 0xb1, 48 => 0xb9 },
      -	'colortempunknown14' => { 41 => 0x8a, 45 => 0xb6, 46 => 0xb6, 47 => 0xb6, 48 => 0xbe },
      -	'colortempunknown15' => { 41 => 0x8f, 45 => 0xbb, 46 => 0xbb, 47 => 0xbb, 48 => 0xc3 },
      -	'colortempunknown16' => { 41 => 0xa3, 46 => 0xc0, 47 => 0xc0, 48 => 0xc8 },
      -	'colortempunknown17' => { 46 => 0xc5, 47 => 0xc5, 48 => 0xcd },
      -	'colortempunknown18' => { 46 => 0xca, 47 => 0xca, 48 => 0xd2 },
      -	'colortempunknown19' => { 46 => 0xcf, 47 => 0xcf, 48 => 0xd7 },
      -	'colortempunknown2' => { 38 => 0x3b, 39 => 0x5f, 41 => 0x4e, 45 => 0x57, 46 => 0x57, 47 => 0x57, 48 => 0x5f },
      -	'colortempunknown20' => { 46 => 0xd4, 47 => 0xd4, 48 => 0xdc },
      -	'colortempunknown21' => { 47 => 0xd9, 48 => 0xe1 },
      -	'colortempunknown22' => { 47 => 0xde, 48 => 0xe6 },
      -	'colortempunknown23' => { 47 => 0xe3, 48 => 0xeb },
      -	'colortempunknown24' => { 47 => 0xe8, 48 => 0xf0 },
      -	'colortempunknown25' => { 47 => 0xed, 48 => 0xf5 },
      -	'colortempunknown26' => { 47 => 0xf2, 48 => 0xfa },
      -	'colortempunknown27' => { 47 => 0xf7, 48 => 0xff },
      -	'colortempunknown28' => { 47 => 0xfc, 48 => 0x104 },
      -	'colortempunknown29' => { 47 => 0x101, 48 => 0x109 },
      -	'colortempunknown3' => { 38 => 0x40, 39 => 0x67, 41 => 0x53, 45 => 0x5c, 46 => 0x5c, 47 => 0x5c, 48 => 0x64 },
      -	'colortempunknown30' => { 47 => 0x106 },
      -	'colortempunknown4' => { 38 => 0x45, 39 => 0x6f, 41 => 0x58, 45 => 0x61, 46 => 0x61, 47 => 0x61, 48 => 0x69 },
      -	'colortempunknown5' => { 38 => 0x4a, 39 => 0x77, 41 => 0x5d, 45 => 0x66, 46 => 0x66, 47 => 0x66, 48 => 0x6e },
      -	'colortempunknown6' => { 38 => 0x4f, 39 => 0x7f, 41 => 0x62, 45 => 0x8e, 46 => 0x6b, 47 => 0x6b, 48 => 0x73 },
      -	'colortempunknown7' => { 38 => 0x54, 39 => 0x87, 41 => 0x67, 45 => 0x93, 46 => 0x70, 47 => 0x70, 48 => 0x78 },
      -	'colortempunknown8' => { 38 => 0x59, 39 => 0x8f, 41 => 0x6c, 45 => 0x98, 46 => 0x75, 47 => 0x75, 48 => 0x7d },
      -	'colortempunknown9' => { 38 => 0x5e, 39 => 0x97, 41 => 0x71, 45 => 0x9d, 46 => 0x7a, 47 => 0x7a, 48 => 0x82 },
      -	'colortone' => { 10 => 0x6f, 12 => 0x77, 34 => 0x2a, 49 => 0x2 },
      -	'colortoneadj' => { 100 => 0x20304, 105 => 0x11e },
      -	'colortoneauto' => { 68 => 0x9c },
      -	'colortonefaithful' => { 19 => 0x107, 67 => 0x6c, 68 => 0x6c },
      -	'colortonelandscape' => { 19 => 0x105, 67 => 0x3c, 68 => 0x3c },
      -	'colortonemonochrome' => { 67 => 0x84, 68 => 0x84 },
      -	'colortoneneutral' => { 19 => 0x106, 67 => 0x54, 68 => 0x54 },
      -	'colortoneportrait' => { 19 => 0x104, 67 => 0x24, 68 => 0x24 },
      -	'colortonestandard' => { 19 => 0x103, 67 => 0xc, 68 => 0xc },
      -	'colortoneuserdef1' => { 19 => 0x109, 67 => 0x9c, 68 => 0xb4 },
      -	'colortoneuserdef2' => { 19 => 0x10a, 67 => 0xb4, 68 => 0xcc },
      -	'colortoneuserdef3' => { 19 => 0x10b, 67 => 0xcc, 68 => 0xe4 },
      -	'comlenblksize' => { 134 => 0xfde8 },
      -	'commanddials' => { 277 => '5.1' },
      -	'commanddialsaperturesetting' => { 266 => '17.3', 267 => '18.3', 269 => '18.3', 270 => '18.3', 275 => '33.3', 276 => '17.3', 279 => '18.3', 280 => '18.3' },
      -	'commanddialschangemainsub' => { 266 => '17.2', 267 => '18.1', 269 => '18.1', 270 => '18.1', 275 => '33.2', 276 => '17.2', 279 => '18.1', 280 => '18.1' },
      -	'commanddialsmenuandplayback' => { 266 => '17.4', 267 => '18.2', 269 => '18.2', 270 => '18.2', 275 => '33.4', 276 => '17.4', 279 => '18.2', 280 => '18.2' },
      -	'commanddialsreverserotation' => { 266 => '17.1', 267 => '6.4', 269 => '6.2', 270 => '6.2', 271 => '16.2', 272 => '17.2', 275 => '33.1', 276 => '17.1', 279 => '6.2', 280 => '6.2', 281 => '18.1' },
      -	'commanderchannel' => { 277 => '10.2', 278 => '25.2' },
      -	'commandergroupa_ttl-aacomp' => { 277 => '13.1', 278 => '31.1' },
      -	'commandergroupa_ttlcomp' => { 281 => '32.1' },
      -	'commandergroupamanualoutput' => { 277 => '13.2', 278 => '28.2' },
      -	'commandergroupamode' => { 277 => '11.2', 278 => '28.1' },
      -	'commandergroupb_ttl-aacomp' => { 277 => '14.1', 278 => '32.1' },
      -	'commandergroupb_ttlcomp' => { 281 => '33.1' },
      -	'commandergroupbmanualoutput' => { 277 => '14.2', 278 => '29.2' },
      -	'commandergroupbmode' => { 277 => '11.3', 278 => '29.1' },
      -	'commanderinternalflash' => { 277 => '11.1', 278 => '27.1' },
      -	'commanderinternalmanualoutput' => { 277 => '12.2', 278 => '27.2' },
      -	'commanderinternalttlchannel' => { 275 => '18.2' },
      -	'commanderinternalttlcomp' => { 277 => '12.1', 278 => '30.2', 281 => '31.2' },
      -	'commanderinternalttlcompbuiltin' => { 275 => '20.1', 276 => '26.1' },
      -	'commanderinternalttlcompgroupa' => { 275 => '21.1', 276 => '27.1' },
      -	'commanderinternalttlcompgroupb' => { 275 => '22.1', 276 => '28.1' },
      -	'comment' => { 0 => 0x2, 117 => 'Comment', 153 => 'Comment', 296 => 'Comment', 358 => "\xa9cmt", 360 => 'comment', 366 => "\xa9cmt" },
      -	'compass' => { 376 => 0x4 },
      -	'compilation' => { 358 => 'cpil' },
      -	'complianceprofile' => { 478 => 'complianceProfile' },
      -	'componentsconfiguration' => { 116 => 0x9101, 158 => 'Components', 468 => 'ComponentsConfiguration' },
      -	'componentversion' => { 94 => 0x80c },
      -	'composer' => { 358 => ["\xa9com","\xa9wrt"], 366 => ["\xa9com","\xa9wrt"], 488 => 'composer' },
      -	'composerkeywords' => { 366 => "\xa9cok" },
      -	'compositeimage' => { 116 => 0xa460 },
      -	'compositeimagecount' => { 116 => 0xa461 },
      -	'compositeimageexposuretimes' => { 116 => 0xa462 },
      -	'composition' => { 452 => 'Composition' },
      -	'compositionadjust' => { 340 => '0.1' },
      -	'compositionadjustrotation' => { 340 => 0x7 },
      -	'compositionadjustx' => { 340 => 0x5 },
      -	'compositionadjusty' => { 340 => 0x6 },
      -	'compressedbitsperpixel' => { 116 => 0x9102, 468 => 'CompressedBitsPerPixel' },
      -	'compressedimagesize' => { 181 => 0x40, 288 => 0x40 },
      -	'compression' => { 116 => 0x103, 311 => 0xb, 484 => 'Compression' },
      -	'compressionfactor' => { 283 => 0x50d },
      -	'compressionratio' => { 158 => 'Compression', 288 => 0x1034 },
      -	'compressorversion' => { 366 => 'CNCV' },
      -	'condadobvfactor' => { 134 => 0xf3e },
      -	'condadodaybvthresh' => { 134 => 0xf3c },
      -	'condadodayoffsets' => { 134 => 0xf42 },
      -	'condadofluoffsets' => { 134 => 0xf44 },
      -	'condadofluthresh' => { 134 => 0xf41 },
      -	'condadoillfactor' => { 134 => 0xf3f },
      -	'condadoneurange' => { 134 => 0xf3d },
      -	'condadotunoffsets' => { 134 => 0xf43 },
      -	'condadotunthresh' => { 134 => 0xf40 },
      -	'confidence' => { 447 => 'Confidence' },
      -	'confidencelevel' => { 458 => 'ConfidenceLevel' },
      -	'confidencemime' => { 447 => 'ConfidenceMime' },
      -	'constrainedcropheight' => { 105 => 0x266, 352 => 0xd6 },
      -	'constrainedcropwidth' => { 105 => 0x262, 352 => 0xd5 },
      -	'contact' => { 128 => 0x76 },
      -	'contactinfo' => { 477 => 'contactInfo' },
      -	'container' => { 442 => 'Container' },
      -	'containerdirectory' => { 442 => [\'Container','ContainerDirectory'] },
      -	'containerdirectoryitem' => { 442 => [\'Container','ContainerDirectoryItem'] },
      -	'containerdirectoryitemdatauri' => { 442 => [\'Container','ContainerDirectoryItemDataURI'] },
      -	'containerdirectoryitemlength' => { 442 => [\'Container','ContainerDirectoryItemLength'] },
      -	'containerdirectoryitemmime' => { 442 => [\'Container','ContainerDirectoryItemMime'] },
      -	'containerdirectoryitempadding' => { 442 => [\'Container','ContainerDirectoryItemPadding'] },
      -	'containerformat' => { 474 => 'ContainerFormat' },
      -	'containerformatidentifier' => { 474 => [\'ContainerFormat','ContainerFormatIdentifier'] },
      -	'containerformatname' => { 474 => [\'ContainerFormat','ContainerFormatName'] },
      -	'contentcreatedate' => { 358 => "\xa9day", 366 => "\xa9day" },
      -	'contentdistributorid' => { 366 => 'cdis' },
      -	'contentid' => { 366 => 'ccid' },
      -	'contentidentifier' => { 1 => 0x11 },
      -	'contentlocationcode' => { 128 => 0x1a },
      -	'contentlocationname' => { 128 => 0x1b },
      -	'contenttype' => { 478 => 'contentType' },
      -	'continuousbracketing' => { 179 => 0x20 },
      +	'colortempdaylight' => { 38 => 0x18, 39 => 0x27, 40 => 0x27, 41 => 0x9a, 42 => 0xd1, 43 => 0x2b, 44 => 0x52, 47 => 0x6b, 48 => 0x84, 49 => 0x89, 50 => 0x8c, 355 => 0x53 },
      +	'colortemperature' => { 7 => 0x73, 8 => [0x48,0x4e], 9 => 0xc0, 10 => 0x37, 11 => 0x62, 12 => 0x37, 13 => 0x7c, 14 => 0x73, 15 => 0x73, 16 => 0x77, 17 => 0x73, 18 => 0x7c, 19 => 0x58, 20 => 0x73, 21 => 0xc0, 22 => 0x7f, 23 => 0x7d, 24 => 0xc0, 25 => 0xc6, 26 => 0xc7, 27 => 0x135, 28 => 0x7b, 29 => 0x13a, 64 => 0xae, 74 => 0x9, 97 => 0x10ae, 127 => 0x1005, 138 => 0x846, 156 => 'ColorTemperature', 182 => [0x6e,0x49], 183 => 0x3f, 184 => [0x39,0x5e], 186 => 0x10b, 189 => [0x3c,0x4c,0x4e], 315 => 0x321, 355 => 0x50, 387 => 0x1308, 420 => 0xb021, 477 => 'Temperature', 479 => 'Temperature' },
      +	'colortemperatureadj' => { 454 => 0x8013 },
      +	'colortemperatureauto' => { 226 => 0x4f },
      +	'colortemperaturebg' => { 302 => 0x1013 },
      +	'colortemperaturecustom' => { 407 => 0xc, 408 => 0xb },
      +	'colortemperaturerg' => { 302 => 0x1014 },
      +	'colortemperatureset' => { 407 => 0x7, 408 => 0x6 },
      +	'colortemperaturesetting' => { 184 => 0x25, 409 => 0x17, 425 => 0xe },
      +	'colortempflash' => { 38 => 0x36, 39 => 0x57, 40 => 0x40, 41 => 0xb8, 42 => 0xef, 43 => 0x49, 44 => 0x70, 47 => 0x89, 48 => 0xa2, 49 => 0xa7, 50 => 0xaa, 355 => 0x5a },
      +	'colortempflashdata' => { 44 => 0x24a },
      +	'colortempfluorescent' => { 38 => 0x2c, 39 => 0x47, 40 => 0x3b, 41 => 0xae, 42 => 0xe5, 43 => 0x3f, 44 => 0x66, 47 => 0x7f, 48 => 0x98, 49 => 0x9d, 50 => 0xa0 },
      +	'colortempfluorescentd' => { 355 => 0x57 },
      +	'colortempfluorescentn' => { 355 => 0x58 },
      +	'colortempfluorescentw' => { 355 => 0x59 },
      +	'colortempkelvin' => { 38 => 0x31, 39 => 0x4f, 41 => 0xb3, 42 => 0xea, 43 => 0x44, 44 => 0x6b, 47 => 0x84, 48 => 0x9d, 49 => 0xa2, 50 => 0xa5, 320 => 0x44, 387 => 0x1307 },
      +	'colortempmeasured' => { 38 => 0xe, 39 => 0x17, 41 => 0x63, 42 => 0x77, 44 => 0x4d, 47 => 0x4d, 48 => 0x4d, 49 => 0x4d, 50 => 0x55 },
      +	'colortemppc1' => { 43 => 0x94, 44 => 0x75 },
      +	'colortemppc2' => { 43 => 0x99, 44 => 0x7a },
      +	'colortemppc3' => { 43 => 0x9e, 44 => 0x7f },
      +	'colortempshade' => { 38 => 0x1d, 39 => 0x2f, 40 => 0x2c, 41 => 0x9f, 42 => 0xd6, 43 => 0x30, 44 => 0x57, 47 => 0x70, 48 => 0x89, 49 => 0x8e, 50 => 0x91, 355 => 0x54 },
      +	'colortemptungsten' => { 38 => 0x27, 39 => 0x3f, 40 => 0x36, 41 => 0xa9, 42 => 0xe0, 43 => 0x3a, 44 => 0x61, 47 => 0x7a, 48 => 0x93, 49 => 0x98, 50 => 0x9b, 355 => 0x56 },
      +	'colortempunknown' => { 38 => 0x13, 39 => 0x1f, 41 => 0x68, 42 => 0x7c, 43 => 0x21, 47 => 0x52, 48 => 0x52, 49 => 0x52, 50 => 0x5a },
      +	'colortempunknown10' => { 38 => 0x63, 39 => 0x9f, 41 => 0x95, 42 => 0xa9, 43 => 0x76, 47 => 0xa2, 48 => 0x7f, 49 => 0x7f, 50 => 0x87 },
      +	'colortempunknown11' => { 38 => 0x68, 39 => 0xa7, 41 => 0xbd, 42 => [0xae,0xb3], 43 => 0x7b, 47 => 0xa7, 48 => 0xa7, 49 => 0x84, 50 => 0xaf },
      +	'colortempunknown12' => { 38 => 0x6d, 39 => 0xaf, 41 => 0xc2, 42 => 0xb8, 43 => 0x80, 47 => 0xac, 48 => 0xac, 49 => 0xac, 50 => 0xb4 },
      +	'colortempunknown13' => { 38 => 0x72, 39 => 0xb7, 41 => 0xc7, 42 => 0xbd, 43 => 0x85, 47 => 0xb1, 48 => 0xb1, 49 => 0xb1, 50 => 0xb9 },
      +	'colortempunknown14' => { 41 => 0xcc, 42 => 0xc2, 43 => 0x8a, 47 => 0xb6, 48 => 0xb6, 49 => 0xb6, 50 => 0xbe },
      +	'colortempunknown15' => { 41 => 0xd1, 42 => 0xc7, 43 => 0x8f, 47 => 0xbb, 48 => 0xbb, 49 => 0xbb, 50 => 0xc3 },
      +	'colortempunknown16' => { 41 => 0xd6, 42 => 0xcc, 43 => 0xa3, 48 => 0xc0, 49 => 0xc0, 50 => 0xc8 },
      +	'colortempunknown17' => { 41 => 0xdb, 42 => 0xf4, 48 => 0xc5, 49 => 0xc5, 50 => 0xcd },
      +	'colortempunknown18' => { 41 => 0xe0, 42 => 0xf9, 48 => 0xca, 49 => 0xca, 50 => 0xd2 },
      +	'colortempunknown19' => { 41 => 0xe5, 42 => 0xfe, 48 => 0xcf, 49 => 0xcf, 50 => 0xd7 },
      +	'colortempunknown2' => { 38 => 0x3b, 39 => 0x5f, 41 => 0x6d, 42 => 0x81, 43 => 0x4e, 47 => 0x57, 48 => 0x57, 49 => 0x57, 50 => 0x5f },
      +	'colortempunknown20' => { 41 => 0xea, 42 => 0x103, 48 => 0xd4, 49 => 0xd4, 50 => 0xdc },
      +	'colortempunknown21' => { 41 => 0xef, 42 => 0x108, 49 => 0xd9, 50 => 0xe1 },
      +	'colortempunknown22' => { 41 => 0xf4, 42 => 0x10d, 49 => 0xde, 50 => 0xe6 },
      +	'colortempunknown23' => { 41 => 0xf9, 42 => 0x112, 49 => 0xe3, 50 => 0xeb },
      +	'colortempunknown24' => { 41 => 0xfe, 42 => 0x117, 49 => 0xe8, 50 => 0xf0 },
      +	'colortempunknown25' => { 41 => 0x103, 42 => 0x11c, 49 => 0xed, 50 => 0xf5 },
      +	'colortempunknown26' => { 41 => 0x108, 42 => 0x121, 49 => 0xf2, 50 => 0xfa },
      +	'colortempunknown27' => { 41 => 0x10d, 42 => 0x126, 49 => 0xf7, 50 => 0xff },
      +	'colortempunknown28' => { 41 => 0x112, 49 => 0xfc, 50 => 0x104 },
      +	'colortempunknown29' => { 41 => 0x117, 49 => 0x101, 50 => 0x109 },
      +	'colortempunknown3' => { 38 => 0x40, 39 => 0x67, 41 => 0x72, 42 => 0x86, 43 => 0x53, 47 => 0x5c, 48 => 0x5c, 49 => 0x5c, 50 => 0x64 },
      +	'colortempunknown30' => { 49 => 0x106 },
      +	'colortempunknown4' => { 38 => 0x45, 39 => 0x6f, 41 => 0x77, 42 => 0x8b, 43 => 0x58, 47 => 0x61, 48 => 0x61, 49 => 0x61, 50 => 0x69 },
      +	'colortempunknown5' => { 38 => 0x4a, 39 => 0x77, 41 => 0x7c, 42 => 0x90, 43 => 0x5d, 47 => 0x66, 48 => 0x66, 49 => 0x66, 50 => 0x6e },
      +	'colortempunknown6' => { 38 => 0x4f, 39 => 0x7f, 41 => 0x81, 42 => 0x95, 43 => 0x62, 47 => 0x8e, 48 => 0x6b, 49 => 0x6b, 50 => 0x73 },
      +	'colortempunknown7' => { 38 => 0x54, 39 => 0x87, 41 => 0x86, 42 => 0x9a, 43 => 0x67, 47 => 0x93, 48 => 0x70, 49 => 0x70, 50 => 0x78 },
      +	'colortempunknown8' => { 38 => 0x59, 39 => 0x8f, 41 => 0x8b, 42 => 0x9f, 43 => 0x6c, 47 => 0x98, 48 => 0x75, 49 => 0x75, 50 => 0x7d },
      +	'colortempunknown9' => { 38 => 0x5e, 39 => 0x97, 41 => 0x90, 42 => 0xa4, 43 => 0x71, 47 => 0x9d, 48 => 0x7a, 49 => 0x7a, 50 => 0x82 },
      +	'colortint' => { 319 => 0x35c },
      +	'colortone' => { 10 => 0x6f, 12 => 0x77, 34 => 0x2a, 51 => 0x2, 63 => 0x8 },
      +	'colortoneadj' => { 103 => 0x20304, 108 => 0x11e },
      +	'colortoneauto' => { 71 => 0x9c },
      +	'colortonefaithful' => { 19 => 0x107, 70 => 0x6c, 71 => 0x6c },
      +	'colortonelandscape' => { 19 => 0x105, 70 => 0x3c, 71 => 0x3c },
      +	'colortonemonochrome' => { 70 => 0x84, 71 => 0x84 },
      +	'colortoneneutral' => { 19 => 0x106, 70 => 0x54, 71 => 0x54 },
      +	'colortoneportrait' => { 19 => 0x104, 70 => 0x24, 71 => 0x24 },
      +	'colortonestandard' => { 19 => 0x103, 70 => 0xc, 71 => 0xc },
      +	'colortoneuserdef1' => { 19 => 0x109, 70 => 0x9c, 71 => 0xb4 },
      +	'colortoneuserdef2' => { 19 => 0x10a, 70 => 0xb4, 71 => 0xcc },
      +	'colortoneuserdef3' => { 19 => 0x10b, 70 => 0xcc, 71 => 0xe4 },
      +	'comlenblksize' => { 138 => 0xfde8 },
      +	'commanddialplaybackmode' => { 295 => 0x1cb },
      +	'commanddials' => { 290 => '5.1' },
      +	'commanddialsaperturesetting' => { 279 => '17.3', 280 => '18.3', 282 => '18.3', 283 => '18.3', 288 => '33.3', 289 => '17.3', 292 => '18.3', 293 => '18.3' },
      +	'commanddialschangemainsub' => { 279 => '17.2', 280 => '18.1', 282 => '18.1', 283 => '18.1', 288 => '33.2', 289 => '17.2', 292 => '18.1', 293 => '18.1' },
      +	'commanddialsmenuandplayback' => { 279 => '17.4', 280 => '18.2', 282 => '18.2', 283 => '18.2', 288 => '33.4', 289 => '17.4', 292 => '18.2', 293 => '18.2' },
      +	'commanddialsreverserotation' => { 279 => '17.1', 280 => '6.4', 282 => '6.2', 283 => '6.2', 284 => '16.2', 285 => '17.2', 288 => '33.1', 289 => '17.1', 292 => '6.2', 293 => '6.2', 294 => '18.1' },
      +	'commanderchannel' => { 290 => '10.2', 291 => '25.2' },
      +	'commandergroupa_ttl-aacomp' => { 290 => '13.1', 291 => '31.1' },
      +	'commandergroupa_ttlcomp' => { 294 => '32.1' },
      +	'commandergroupamanualoutput' => { 290 => '13.2', 291 => '28.2' },
      +	'commandergroupamode' => { 290 => '11.2', 291 => '28.1' },
      +	'commandergroupb_ttl-aacomp' => { 290 => '14.1', 291 => '32.1' },
      +	'commandergroupb_ttlcomp' => { 294 => '33.1' },
      +	'commandergroupbmanualoutput' => { 290 => '14.2', 291 => '29.2' },
      +	'commandergroupbmode' => { 290 => '11.3', 291 => '29.1' },
      +	'commanderinternalflash' => { 290 => '11.1', 291 => '27.1' },
      +	'commanderinternalmanualoutput' => { 290 => '12.2', 291 => '27.2' },
      +	'commanderinternalttlchannel' => { 288 => '18.2' },
      +	'commanderinternalttlcomp' => { 290 => '12.1', 291 => '30.2', 294 => '31.2' },
      +	'commanderinternalttlcompbuiltin' => { 288 => '20.1', 289 => '26.1' },
      +	'commanderinternalttlcompgroupa' => { 288 => '21.1', 289 => '27.1' },
      +	'commanderinternalttlcompgroupb' => { 288 => '22.1', 289 => '28.1' },
      +	'comment' => { 0 => 0x2, 120 => 'Comment', 157 => 'Comment', 310 => 'Comment', 372 => "\xa9cmt", 374 => 'comment', 380 => "\xa9cmt" },
      +	'compass' => { 390 => 0x4 },
      +	'compatibleversion' => { 477 => 'CompatibleVersion', 479 => 'CompatibleVersion' },
      +	'compilation' => { 372 => 'cpil' },
      +	'compimageimagespersequence' => { 484 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesNumberOfImagesInSequences'] },
      +	'compimagemaxexposureall' => { 484 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesMaxExposureTimesOfAll'] },
      +	'compimagemaxexposureused' => { 484 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesMaxExposureTimesOfUsed'] },
      +	'compimageminexposureall' => { 484 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesMinExposureTimesOfAll'] },
      +	'compimageminexposureused' => { 484 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesMinExposureTimesOfUsed'] },
      +	'compimagenumsequences' => { 484 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesNumberOfSequences'] },
      +	'compimagesumexposureall' => { 484 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesSumOfExposureTimesOfAll'] },
      +	'compimagesumexposureused' => { 484 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesSumOfExposureTimesOfUsed'] },
      +	'compimagetotalexposureperiod' => { 484 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesTotalExposurePeriod'] },
      +	'compimagevalues' => { 484 => [\'CompositeImageExposureTimes','CompositeImageExposureTimesValues'] },
      +	'complianceprofile' => { 493 => 'complianceProfile' },
      +	'componentsconfiguration' => { 119 => 0x9101, 162 => 'Components', 483 => 'ComponentsConfiguration' },
      +	'componentversion' => { 97 => 0x80c },
      +	'composer' => { 179 => 'WM/Composer', 372 => ["\xa9com","\xa9wrt"], 380 => ["\xa9com","\xa9wrt"], 503 => 'composer' },
      +	'composerkeywords' => { 380 => "\xa9cok" },
      +	'compositeimage' => { 119 => 0xa460, 484 => 'CompositeImage' },
      +	'compositeimagecount' => { 119 => 0xa461, 484 => 'CompositeImageCount' },
      +	'compositeimageexposuretimes' => { 119 => 0xa462, 484 => 'CompositeImageExposureTimes' },
      +	'composition' => { 467 => 'Composition' },
      +	'compositionadjust' => { 354 => '0.1' },
      +	'compositionadjustrotation' => { 354 => 0x7 },
      +	'compositionadjustx' => { 354 => 0x5 },
      +	'compositionadjusty' => { 354 => 0x6 },
      +	'compressedbitsperpixel' => { 119 => 0x9102, 483 => 'CompressedBitsPerPixel' },
      +	'compressedimagesize' => { 186 => 0x40, 302 => 0x40 },
      +	'compression' => { 119 => 0x103, 325 => 0xb, 499 => 'Compression' },
      +	'compressionfactor' => { 297 => 0x50d },
      +	'compressionformat' => { 63 => 0x4 },
      +	'compressionratio' => { 162 => 'Compression', 302 => 0x1034 },
      +	'compressorversion' => { 380 => 'CNCV' },
      +	'condadobvfactor' => { 138 => 0xf3e },
      +	'condadodaybvthresh' => { 138 => 0xf3c },
      +	'condadodayoffsets' => { 138 => 0xf42 },
      +	'condadofluoffsets' => { 138 => 0xf44 },
      +	'condadofluthresh' => { 138 => 0xf41 },
      +	'condadoillfactor' => { 138 => 0xf3f },
      +	'condadoneurange' => { 138 => 0xf3d },
      +	'condadotunoffsets' => { 138 => 0xf43 },
      +	'condadotunthresh' => { 138 => 0xf40 },
      +	'conductor' => { 179 => 'WM/Conductor', 372 => "\xa9con" },
      +	'confidence' => { 462 => 'Confidence' },
      +	'confidencelevel' => { 473 => 'ConfidenceLevel' },
      +	'confidencemime' => { 462 => 'ConfidenceMime' },
      +	'constrainedcropheight' => { 108 => 0x266, 366 => 0xd6 },
      +	'constrainedcropwidth' => { 108 => 0x262, 366 => 0xd5 },
      +	'contact' => { 131 => 0x76 },
      +	'contactinfo' => { 477 => 'ContactInfo', 479 => 'ContactInfo', 492 => 'contactInfo' },
      +	'container' => { 457 => 'Container' },
      +	'containerdirectory' => { 457 => [\'Container','ContainerDirectory'] },
      +	'containerdirectoryitem' => { 457 => [\'Container','ContainerDirectoryItem'] },
      +	'containerdirectoryitemdatauri' => { 457 => [\'Container','ContainerDirectoryItemDataURI'] },
      +	'containerdirectoryitemlength' => { 457 => [\'Container','ContainerDirectoryItemLength'] },
      +	'containerdirectoryitemmime' => { 457 => [\'Container','ContainerDirectoryItemMime'] },
      +	'containerdirectoryitempadding' => { 457 => [\'Container','ContainerDirectoryItemPadding'] },
      +	'containerformat' => { 489 => 'ContainerFormat' },
      +	'containerformatidentifier' => { 489 => [\'ContainerFormat','ContainerFormatIdentifier'] },
      +	'containerformatname' => { 489 => [\'ContainerFormat','ContainerFormatName'] },
      +	'contentcreatedate' => { 372 => "\xa9day", 380 => ['@day',"\xa9day"] },
      +	'contentdistributor' => { 179 => 'WM/ContentDistributor' },
      +	'contentdistributorid' => { 380 => 'cdis' },
      +	'contentid' => { 380 => 'ccid' },
      +	'contentlocationcode' => { 131 => 0x1a },
      +	'contentlocationname' => { 131 => 0x1b },
      +	'contenttype' => { 493 => 'contentType' },
      +	'continuousbracketing' => { 184 => 0x20 },
       	'continuousdrive' => { 34 => 0x5 },
      -	'continuousmodeliveview' => { 280 => '77.2' },
      -	'continuousshootingspeed' => { 81 => 0x610 },
      -	'continuousshotlimit' => { 81 => 0x611 },
      -	'contrast' => { 10 => 0x73, 12 => 0x75, 34 => 0xd, 109 => 0xc, 110 => [0x3012,0x20], 116 => [0xa408,0xfe54], 124 => [0x1004,0x1006], 152 => 'Contrast', 172 => 'Contrast', 176 => 0x20, 177 => 0x31, 178 => 0x27, 179 => 0x19, 184 => 0x2, 221 => 0x33, 222 => 0x37, 223 => 0x3f, 288 => 0x1029, 306 => 0x39, 308 => 0x300a, 341 => 0x20, 348 => 0xc, 360 => 'player.movie.visual.contrast', 367 => 0x24, 369 => 0x52, 373 => 0x1012, 383 => 0xd, 393 => 0x1d, 394 => 0x1a, 406 => 0x2004, 462 => 'Contrast', 464 => 'Contrast', 468 => 'Contrast' },
      -	'contrast2012' => { 462 => 'Contrast2012', 464 => 'Contrast2012' },
      -	'contrastadj' => { 100 => 0x20303, 105 => 0x115, 262 => 0x2c, 439 => 0x8017 },
      -	'contrastauto' => { 68 => 0x90 },
      -	'contrastcurve' => { 219 => 0x8c },
      -	'contrastdetectaf' => { 188 => 0x4 },
      -	'contrastdetectafarea' => { 341 => 0x231 },
      -	'contrastdetectafinfocus' => { 188 => [0x1c,0x52] },
      -	'contrastfaithful' => { 19 => 0xec, 67 => 0x60, 68 => 0x60 },
      -	'contrasthighlight' => { 341 => 0x6d },
      -	'contrasthighlightshadowadj' => { 341 => 0x6f },
      -	'contrastlandscape' => { 19 => 0xea, 67 => 0x30, 68 => 0x30 },
      -	'contrastmode' => { 306 => 0x2c },
      -	'contrastmonochrome' => { 19 => 0xed, 67 => 0x78, 68 => 0x78 },
      -	'contrastneutral' => { 19 => 0xeb, 67 => 0x48, 68 => 0x48 },
      -	'contrastportrait' => { 19 => 0xe9, 67 => 0x18, 68 => 0x18 },
      -	'contrastsetting' => { 283 => 0x505, 291 => 0x1012, 395 => 0x10, 411 => 0x8 },
      -	'contrastshadow' => { 341 => 0x6e },
      -	'contraststandard' => { 19 => 0xe8, 67 => 0x0, 68 => 0x0 },
      -	'contrastuserdef1' => { 19 => 0xee, 67 => 0x90, 68 => 0xa8 },
      -	'contrastuserdef2' => { 19 => 0xef, 67 => 0xa8, 68 => 0xc0 },
      -	'contrastuserdef3' => { 19 => 0xf0, 67 => 0xc0, 68 => 0xd8 },
      -	'contributedmedia' => { 488 => 'contributedMedia' },
      -	'contributedmediaduration' => { 488 => [\'contributedMedia','contributedMediaDuration'] },
      -	'contributedmediadurationscale' => { 488 => [\'contributedMedia','contributedMediaDurationScale'] },
      -	'contributedmediadurationvalue' => { 488 => [\'contributedMedia','contributedMediaDurationValue'] },
      -	'contributedmediamanaged' => { 488 => [\'contributedMedia','contributedMediaManaged'] },
      -	'contributedmediapath' => { 488 => [\'contributedMedia','contributedMediaPath'] },
      -	'contributedmediastarttime' => { 488 => [\'contributedMedia','contributedMediaStartTime'] },
      -	'contributedmediastarttimescale' => { 488 => [\'contributedMedia','contributedMediaStartTimeScale'] },
      -	'contributedmediastarttimevalue' => { 488 => [\'contributedMedia','contributedMediaStartTimeValue'] },
      -	'contributedmediatrack' => { 488 => [\'contributedMedia','contributedMediaTrack'] },
      -	'contributedmediawebstatement' => { 488 => [\'contributedMedia','contributedMediaWebStatement'] },
      -	'contributor' => { 465 => 'contributor', 474 => 'Contributor' },
      -	'contributoridentifier' => { 474 => [\'Contributor','ContributorIdentifier'] },
      -	'contributorname' => { 474 => [\'Contributor','ContributorName'] },
      -	'contributorrole' => { 474 => [\'Contributor','ContributorRole'] },
      -	'contributors' => { 153 => 'Contributors' },
      -	'controldialset' => { 179 => 0x46 },
      -	'controlledvocabularyterm' => { 474 => 'CVterm' },
      -	'controllerboardversion' => { 301 => 0x332 },
      -	'controlmode' => { 74 => 0x12 },
      -	'controlringrotation' => { 81 => 0x712 },
      -	'conversionlens' => { 284 => 0x403, 306 => 0x35 },
      -	'converter' => { 116 => 0xfe4d, 249 => 0xb, 462 => 'Converter', 464 => 'Converter' },
      -	'converttograyscale' => { 462 => 'ConvertToGrayscale', 464 => 'ConvertToGrayscale' },
      -	'cookingequipment' => { 480 => 'cookingEquipment' },
      -	'cookingmethod' => { 480 => 'cookingMethod' },
      -	'copyright' => { 0 => 0x3, 116 => 0x8298, 153 => 'Copyright', 296 => 'Copyright', 341 => 0x22f, 357 => 'Copyright', 358 => ['cprt',"\xa9cpy"], 360 => 'copyright', 366 => ['cprt',"\xa9cpy"], 475 => 'Copyright', 481 => 'copyright', 484 => 'Copyright', 488 => 'copyright' },
      -	'copyrightflag' => { 355 => 0x40a },
      -	'copyrightnotice' => { 128 => 0x74 },
      -	'copyrightowner' => { 293 => 'CopyrightOwner' },
      -	'copyrightownerid' => { 293 => [\'CopyrightOwner','CopyrightOwnerCopyrightOwnerID'] },
      -	'copyrightownerimageid' => { 293 => 'CopyrightOwnerImageID' },
      -	'copyrightownername' => { 293 => [\'CopyrightOwner','CopyrightOwnerCopyrightOwnerName'] },
      -	'copyrightregistrationnumber' => { 293 => 'CopyrightRegistrationNumber' },
      -	'copyrightstatus' => { 293 => 'CopyrightStatus' },
      -	'copyrightyear' => { 474 => 'CopyrightYear', 478 => 'copyrightYear' },
      -	'coringfilter' => { 287 => 0x310, 288 => 0x102d, 291 => 0x310 },
      -	'coringvalues' => { 287 => 0x311, 291 => 0x311 },
      -	'corporateentity' => { 478 => 'corporateEntity' },
      -	'country' => { 157 => 'Country', 306 => 0x69, 476 => 'Country' },
      -	'country-primarylocationcode' => { 128 => 0x64 },
      -	'country-primarylocationname' => { 128 => 0x65 },
      -	'countrycode' => { 218 => 0x5, 353 => 'CountryCode', 473 => 'CountryCode' },
      -	'course' => { 480 => 'course' },
      -	'coverage' => { 465 => 'coverage' },
      -	'coverart' => { 358 => 'covr' },
      -	'coverdate' => { 478 => 'coverDate' },
      -	'coverdisplaydate' => { 478 => 'coverDisplayDate' },
      -	'coveruri' => { 366 => 'cvru' },
      -	'cpufirmwareversion' => { 341 => 0x28 },
      -	'crc32' => { 466 => 'crc32' },
      -	'createdate' => { 116 => 0x9004, 153 => 'CreateDate', 292 => 'CreationDate', 296 => 'create-date', 357 => 'CreationDate', 363 => 0x1, 486 => 'CreateDate' },
      -	'creationdate' => { 360 => 'creationdate', 475 => 'CreationDate', 478 => 'creationDate' },
      -	'creationtime' => { 296 => 'Creation Time' },
      -	'creativestyle' => { 393 => 0x1a, 394 => 0x18, 404 => 0x41, 406 => 0xb020, 435 => 0x4a },
      -	'creativestylesetting' => { 395 => 0xf, 411 => 0x7 },
      -	'creativestylewaschanged' => { 439 => 0x8001 },
      -	'creator' => { 292 => 'Creator', 357 => 'Creator', 465 => 'creator', 474 => 'Creator', 475 => 'Creator' },
      -	'creatoraddress' => { 473 => [\'CreatorContactInfo','CreatorContactInfoCiAdrExtadr'] },
      -	'creatorappid' => { 174 => 'CreatorAppId' },
      -	'creatorcity' => { 473 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCity'] },
      -	'creatorcontactinfo' => { 473 => 'CreatorContactInfo' },
      -	'creatorcountry' => { 473 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCtry'] },
      -	'creatoridentifier' => { 474 => [\'Creator','CreatorIdentifier'] },
      -	'creatorname' => { 474 => [\'Creator','CreatorName'] },
      -	'creatoropenwithuioptions' => { 174 => 'CreatorOpenWithUIOptions' },
      -	'creatorpostalcode' => { 473 => [\'CreatorContactInfo','CreatorContactInfoCiAdrPcode'] },
      -	'creatorregion' => { 473 => [\'CreatorContactInfo','CreatorContactInfoCiAdrRegion'] },
      -	'creatorrole' => { 474 => [\'Creator','CreatorRole'] },
      -	'creatortool' => { 486 => 'CreatorTool' },
      -	'creatorworkemail' => { 473 => [\'CreatorContactInfo','CreatorContactInfoCiEmailWork'] },
      -	'creatorworktelephone' => { 473 => [\'CreatorContactInfo','CreatorContactInfoCiTelWork'] },
      -	'creatorworkurl' => { 473 => [\'CreatorContactInfo','CreatorContactInfoCiUrlWork'] },
      -	'credit' => { 128 => 0x6e, 476 => 'Credit' },
      -	'creditline' => { 481 => 'creditLine' },
      -	'creditlinereq' => { 491 => 'CreditLineReq' },
      -	'creditlinerequired' => { 293 => 'CreditLineRequired' },
      -	'cropactive' => { 98 => 0x0, 105 => 0x244 },
      -	'cropangle' => { 462 => 'CropAngle', 464 => 'CropAngle' },
      -	'croparea' => { 219 => 0x45, 439 => 0x9011 },
      -	'cropaspectratio' => { 100 => 0x30101, 105 => 0x260 },
      -	'cropaspectratiocustom' => { 100 => 0x30102 },
      -	'cropbottom' => { 120 => 0x9, 254 => 0x36, 311 => 0x31, 352 => 0xdc, 462 => 'CropBottom', 464 => 'CropBottom' },
      -	'cropbottommargin' => { 51 => 0x3 },
      -	'cropcircleactive' => { 106 => 0xd6 },
      -	'cropcircleradius' => { 106 => 0xd9 },
      -	'cropcirclex' => { 106 => 0xd7 },
      -	'cropcircley' => { 106 => 0xd8 },
      -	'cropconstraintowarp' => { 462 => 'CropConstrainToWarp', 464 => 'CropConstrainToWarp' },
      -	'croph' => { 456 => 'CropH' },
      -	'cropheight' => { 98 => 0x6, 105 => 0x24c, 287 => 0x615, 291 => 0x615, 462 => 'CropHeight', 464 => 'CropHeight' },
      -	'crophispeed' => { 219 => 0x1b },
      -	'cropleft' => { 105 => 0x246, 120 => 0x6, 254 => 0x1e, 287 => 0x612, 291 => 0x612, 311 => 0x30, 352 => 0xd9, 462 => 'CropLeft', 464 => 'CropLeft' },
      -	'cropleftmargin' => { 51 => 0x0 },
      -	'cropmode' => { 124 => 0x104d, 373 => 0x1018 },
      -	'croporiginalheight' => { 98 => 0xb },
      -	'croporiginalwidth' => { 98 => 0xa },
      -	'cropoutputheight' => { 254 => 0xce },
      -	'cropoutputheightinches' => { 254 => 0x96 },
      -	'cropoutputpixels' => { 254 => 0xd6 },
      -	'cropoutputresolution' => { 254 => 0xb6 },
      -	'cropoutputscale' => { 254 => 0xbe },
      -	'cropoutputwidth' => { 254 => 0xc6 },
      -	'cropoutputwidthinches' => { 254 => 0x8e },
      -	'croppedareaimageheightpixels' => { 450 => 'CroppedAreaImageHeightPixels', 451 => 'CroppedAreaImageHeightPixels' },
      -	'croppedareaimagewidthpixels' => { 450 => 'CroppedAreaImageWidthPixels', 451 => 'CroppedAreaImageWidthPixels' },
      -	'croppedarealeftpixels' => { 450 => 'CroppedAreaLeftPixels', 451 => 'CroppedAreaLeftPixels' },
      -	'croppedareatoppixels' => { 450 => 'CroppedAreaTopPixels', 451 => 'CroppedAreaTopPixels' },
      -	'croppedimageheight' => { 5 => 0x2, 373 => 0x1604 },
      +	'continuousmodedisplay' => { 295 => 0x51 },
      +	'continuousmodeliveview' => { 293 => '77.2' },
      +	'continuousshootingspeed' => { 84 => 0x610 },
      +	'continuousshotlimit' => { 84 => 0x611 },
      +	'contrast' => { 10 => 0x73, 12 => 0x75, 34 => 0xd, 112 => 0xc, 113 => [0x3012,0x20], 119 => [0xa408,0xfe54], 127 => [0x1004,0x1006], 156 => 'Contrast', 176 => 'Contrast', 181 => 0x20, 182 => 0x31, 183 => 0x27, 184 => 0x19, 189 => 0x2, 231 => 0x33, 232 => 0x37, 233 => 0x3f, 302 => 0x1029, 320 => 0x39, 322 => 0x300a, 355 => 0x20, 362 => 0xc, 374 => 'player.movie.visual.contrast', 381 => 0x24, 383 => 0x52, 387 => 0x1012, 397 => 0xd, 407 => 0x1d, 408 => 0x1a, 420 => 0x2004, 477 => 'Contrast', 479 => 'Contrast', 483 => 'Contrast' },
      +	'contrast2012' => { 477 => 'Contrast2012', 479 => 'Contrast2012' },
      +	'contrastadj' => { 103 => 0x20303, 108 => 0x115, 275 => 0x2c, 454 => 0x8017 },
      +	'contrastauto' => { 71 => 0x90 },
      +	'contrastcurve' => { 226 => 0x8c },
      +	'contrastdetectaf' => { 193 => 0x4 },
      +	'contrastdetectafarea' => { 355 => 0x231 },
      +	'contrastdetectafinfocus' => { 193 => [0x1c,0x52] },
      +	'contrastfaithful' => { 19 => 0xec, 70 => 0x60, 71 => 0x60 },
      +	'contrasthighlight' => { 355 => 0x6d },
      +	'contrasthighlightshadowadj' => { 355 => 0x6f },
      +	'contrastlandscape' => { 19 => 0xea, 70 => 0x30, 71 => 0x30 },
      +	'contrastmode' => { 320 => 0x2c },
      +	'contrastmonochrome' => { 19 => 0xed, 70 => 0x78, 71 => 0x78 },
      +	'contrastneutral' => { 19 => 0xeb, 70 => 0x48, 71 => 0x48 },
      +	'contrastportrait' => { 19 => 0xe9, 70 => 0x18, 71 => 0x18 },
      +	'contrastsetting' => { 297 => 0x505, 305 => 0x1012, 409 => 0x10, 425 => 0x8 },
      +	'contrastshadow' => { 355 => 0x6e },
      +	'contraststandard' => { 19 => 0xe8, 70 => 0x0, 71 => 0x0 },
      +	'contrastuserdef1' => { 19 => 0xee, 70 => 0x90, 71 => 0xa8 },
      +	'contrastuserdef2' => { 19 => 0xef, 70 => 0xa8, 71 => 0xc0 },
      +	'contrastuserdef3' => { 19 => 0xf0, 70 => 0xc0, 71 => 0xd8 },
      +	'contributedmedia' => { 503 => 'contributedMedia' },
      +	'contributedmediaduration' => { 503 => [\'contributedMedia','contributedMediaDuration'] },
      +	'contributedmediadurationscale' => { 503 => [\'contributedMedia','contributedMediaDurationScale'] },
      +	'contributedmediadurationvalue' => { 503 => [\'contributedMedia','contributedMediaDurationValue'] },
      +	'contributedmediamanaged' => { 503 => [\'contributedMedia','contributedMediaManaged'] },
      +	'contributedmediapath' => { 503 => [\'contributedMedia','contributedMediaPath'] },
      +	'contributedmediastarttime' => { 503 => [\'contributedMedia','contributedMediaStartTime'] },
      +	'contributedmediastarttimescale' => { 503 => [\'contributedMedia','contributedMediaStartTimeScale'] },
      +	'contributedmediastarttimevalue' => { 503 => [\'contributedMedia','contributedMediaStartTimeValue'] },
      +	'contributedmediatrack' => { 503 => [\'contributedMedia','contributedMediaTrack'] },
      +	'contributedmediawebstatement' => { 503 => [\'contributedMedia','contributedMediaWebStatement'] },
      +	'contributor' => { 480 => 'contributor', 489 => 'Contributor' },
      +	'contributoridentifier' => { 489 => [\'Contributor','ContributorIdentifier'] },
      +	'contributorname' => { 489 => [\'Contributor','ContributorName'] },
      +	'contributorrole' => { 489 => [\'Contributor','ContributorRole'] },
      +	'contributors' => { 157 => 'Contributors' },
      +	'controldialset' => { 184 => 0x46 },
      +	'controlledvocabularyterm' => { 489 => 'CVterm' },
      +	'controllerboardversion' => { 315 => 0x332 },
      +	'controlmode' => { 77 => 0x12 },
      +	'controlringresponse' => { 295 => 0x1d5 },
      +	'controlringrotation' => { 84 => 0x712 },
      +	'conversionlens' => { 298 => 0x403, 320 => 0x35 },
      +	'converter' => { 119 => 0xfe4d, 262 => 0xb, 477 => 'Converter', 479 => 'Converter' },
      +	'converttograyscale' => { 477 => 'ConvertToGrayscale', 479 => 'ConvertToGrayscale' },
      +	'cookingequipment' => { 495 => 'cookingEquipment' },
      +	'cookingmethod' => { 495 => 'cookingMethod' },
      +	'copyright' => { 0 => 0x3, 119 => 0x8298, 157 => 'Copyright', 310 => 'Copyright', 355 => 0x22f, 371 => 'Copyright', 372 => ['cprt',"\xa9cpy"], 374 => 'copyright', 380 => ['cprt',"\xa9cpy"], 477 => 'Copyright', 479 => 'Copyright', 490 => 'Copyright', 496 => 'copyright', 499 => 'Copyright', 503 => 'copyright' },
      +	'copyrightflag' => { 369 => 0x40a },
      +	'copyrightnotice' => { 131 => 0x74 },
      +	'copyrightowner' => { 307 => 'CopyrightOwner' },
      +	'copyrightownerid' => { 307 => [\'CopyrightOwner','CopyrightOwnerCopyrightOwnerID'] },
      +	'copyrightownerimageid' => { 307 => 'CopyrightOwnerImageID' },
      +	'copyrightownername' => { 307 => [\'CopyrightOwner','CopyrightOwnerCopyrightOwnerName'] },
      +	'copyrightregistrationnumber' => { 307 => 'CopyrightRegistrationNumber' },
      +	'copyrightstatus' => { 307 => 'CopyrightStatus' },
      +	'copyrightyear' => { 489 => 'CopyrightYear', 493 => 'copyrightYear' },
      +	'coringfilter' => { 301 => 0x310, 302 => 0x102d, 305 => 0x310 },
      +	'coringvalues' => { 301 => 0x311, 305 => 0x311 },
      +	'corporateentity' => { 493 => 'corporateEntity' },
      +	'correlatedcolortemp' => { 319 => 0x35b },
      +	'country' => { 161 => 'Country', 320 => 0x69, 491 => 'Country' },
      +	'country-primarylocationcode' => { 131 => 0x64 },
      +	'country-primarylocationname' => { 131 => 0x65 },
      +	'countrycode' => { 225 => 0x5, 367 => 'CountryCode', 488 => 'CountryCode' },
      +	'course' => { 495 => 'course' },
      +	'coverage' => { 480 => 'coverage' },
      +	'coverart' => { 372 => 'covr' },
      +	'coverdate' => { 493 => 'coverDate' },
      +	'coverdisplaydate' => { 493 => 'coverDisplayDate' },
      +	'coveruri' => { 380 => 'cvru' },
      +	'cpufirmwareversion' => { 355 => 0x28 },
      +	'crc32' => { 481 => 'crc32' },
      +	'createdate' => { 119 => 0x9004, 157 => 'CreateDate', 306 => 'CreationDate', 310 => 'create-date', 371 => 'CreationDate', 377 => 0x1, 501 => 'CreateDate' },
      +	'creationdate' => { 374 => 'creationdate', 490 => 'CreationDate', 493 => 'creationDate' },
      +	'creationtime' => { 310 => 'Creation Time' },
      +	'creativestyle' => { 407 => 0x1a, 408 => 0x18, 418 => 0x41, 420 => 0xb020, 450 => 0x4a },
      +	'creativestylesetting' => { 409 => 0xf, 425 => 0x7 },
      +	'creativestylewaschanged' => { 454 => 0x8001 },
      +	'creator' => { 306 => 'Creator', 371 => 'Creator', 480 => 'creator', 489 => 'Creator', 490 => 'Creator' },
      +	'creatoraddress' => { 488 => [\'CreatorContactInfo','CreatorContactInfoCiAdrExtadr'] },
      +	'creatorappid' => { 178 => 'CreatorAppId' },
      +	'creatorcity' => { 488 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCity'] },
      +	'creatorcontactinfo' => { 488 => 'CreatorContactInfo' },
      +	'creatorcountry' => { 488 => [\'CreatorContactInfo','CreatorContactInfoCiAdrCtry'] },
      +	'creatoridentifier' => { 489 => [\'Creator','CreatorIdentifier'] },
      +	'creatorname' => { 489 => [\'Creator','CreatorName'] },
      +	'creatoropenwithuioptions' => { 178 => 'CreatorOpenWithUIOptions' },
      +	'creatorpostalcode' => { 488 => [\'CreatorContactInfo','CreatorContactInfoCiAdrPcode'] },
      +	'creatorregion' => { 488 => [\'CreatorContactInfo','CreatorContactInfoCiAdrRegion'] },
      +	'creatorrole' => { 489 => [\'Creator','CreatorRole'] },
      +	'creatortool' => { 501 => 'CreatorTool' },
      +	'creatorworkemail' => { 488 => [\'CreatorContactInfo','CreatorContactInfoCiEmailWork'] },
      +	'creatorworktelephone' => { 488 => [\'CreatorContactInfo','CreatorContactInfoCiTelWork'] },
      +	'creatorworkurl' => { 488 => [\'CreatorContactInfo','CreatorContactInfoCiUrlWork'] },
      +	'credit' => { 131 => 0x6e, 491 => 'Credit' },
      +	'creditline' => { 496 => 'creditLine' },
      +	'creditlinereq' => { 506 => 'CreditLineReq' },
      +	'creditlinerequired' => { 307 => 'CreditLineRequired' },
      +	'cropactive' => { 101 => 0x0, 108 => 0x244 },
      +	'cropangle' => { 477 => 'CropAngle', 479 => 'CropAngle' },
      +	'croparea' => { 226 => 0x45, 454 => 0x9011 },
      +	'cropaspectratio' => { 103 => 0x30101, 108 => 0x260 },
      +	'cropaspectratiocustom' => { 103 => 0x30102 },
      +	'cropbottom' => { 123 => 0x9, 267 => 0x36, 325 => 0x31, 366 => 0xdc, 477 => 'CropBottom', 479 => 'CropBottom' },
      +	'cropbottommargin' => { 53 => 0x3 },
      +	'cropcircleactive' => { 109 => 0xd6 },
      +	'cropcircleradius' => { 109 => 0xd9 },
      +	'cropcirclex' => { 109 => 0xd7 },
      +	'cropcircley' => { 109 => 0xd8 },
      +	'cropconstraintowarp' => { 477 => 'CropConstrainToWarp', 479 => 'CropConstrainToWarp' },
      +	'croph' => { 471 => 'CropH' },
      +	'cropheight' => { 101 => 0x6, 108 => 0x24c, 301 => 0x615, 305 => 0x615, 477 => 'CropHeight', 479 => 'CropHeight' },
      +	'crophispeed' => { 226 => 0x1b },
      +	'cropleft' => { 108 => 0x246, 123 => 0x6, 267 => 0x1e, 301 => 0x612, 305 => 0x612, 325 => 0x30, 366 => 0xd9, 477 => 'CropLeft', 479 => 'CropLeft' },
      +	'cropleftmargin' => { 53 => 0x0 },
      +	'cropmode' => { 127 => 0x104d, 387 => 0x1018 },
      +	'croporiginalheight' => { 101 => 0xb },
      +	'croporiginalwidth' => { 101 => 0xa },
      +	'cropoutputheight' => { 267 => 0xce },
      +	'cropoutputheightinches' => { 267 => 0x96 },
      +	'cropoutputpixels' => { 267 => 0xd6 },
      +	'cropoutputresolution' => { 267 => 0xb6 },
      +	'cropoutputscale' => { 267 => 0xbe },
      +	'cropoutputwidth' => { 267 => 0xc6 },
      +	'cropoutputwidthinches' => { 267 => 0x8e },
      +	'croppedareaimageheightpixels' => { 465 => 'CroppedAreaImageHeightPixels', 466 => 'CroppedAreaImageHeightPixels' },
      +	'croppedareaimagewidthpixels' => { 465 => 'CroppedAreaImageWidthPixels', 466 => 'CroppedAreaImageWidthPixels' },
      +	'croppedarealeftpixels' => { 465 => 'CroppedAreaLeftPixels', 466 => 'CroppedAreaLeftPixels' },
      +	'croppedareatoppixels' => { 465 => 'CroppedAreaTopPixels', 466 => 'CroppedAreaTopPixels' },
      +	'croppedimageheight' => { 5 => 0x2, 387 => 0x1604 },
       	'croppedimageleft' => { 5 => 0x3 },
       	'croppedimagetop' => { 5 => 0x4 },
      -	'croppedimagewidth' => { 5 => 0x1, 373 => 0x1603 },
      -	'cropping' => { 439 => 0x9010 },
      -	'cropright' => { 120 => 0x8, 254 => 0x2e, 311 => 0x32, 352 => 0xdb, 462 => 'CropRight', 464 => 'CropRight' },
      -	'croprightmargin' => { 51 => 0x1 },
      -	'croprotatedoriginalheight' => { 98 => 0x2 },
      -	'croprotatedoriginalwidth' => { 98 => 0x1 },
      -	'croprotation' => { 98 => 0x8, 120 => 0xb },
      -	'cropscaledresolution' => { 254 => 0x9e },
      -	'cropsourceresolution' => { 254 => 0xae },
      -	'croptop' => { 105 => 0x248, 120 => 0x7, 254 => 0x26, 287 => 0x613, 291 => 0x613, 311 => 0x2f, 352 => 0xda, 462 => 'CropTop', 464 => 'CropTop' },
      -	'croptopmargin' => { 51 => 0x2 },
      -	'cropunit' => { 462 => 'CropUnit', 464 => 'CropUnit' },
      -	'cropunits' => { 462 => 'CropUnits', 464 => 'CropUnits' },
      -	'cropw' => { 456 => 'CropW' },
      -	'cropwidth' => { 98 => 0x5, 105 => 0x24a, 287 => 0x614, 291 => 0x614, 462 => 'CropWidth', 464 => 'CropWidth' },
      -	'cropx' => { 98 => 0x3, 456 => 'CropX' },
      -	'cropy' => { 98 => 0x4, 456 => 'CropY' },
      -	'crossprocess' => { 341 => 0x7b },
      -	'crossprocessparams' => { 341 => 0x235 },
      -	'cuisine' => { 480 => 'cuisine' },
      -	'currenticcprofile' => { 116 => 0xc691 },
      -	'currentpreprofilematrix' => { 116 => 0xc692 },
      -	'currentversion' => { 439 => 0xd000 },
      -	'curve0x' => { 456 => 'Curve0x' },
      -	'curve0y' => { 456 => 'Curve0y' },
      -	'curve1x' => { 456 => 'Curve1x' },
      -	'curve1y' => { 456 => 'Curve1y' },
      -	'curve2x' => { 456 => 'Curve2x' },
      -	'curve2y' => { 456 => 'Curve2y' },
      -	'curve3x' => { 456 => 'Curve3x' },
      -	'curve3y' => { 456 => 'Curve3y' },
      -	'curve4x' => { 456 => 'Curve4x' },
      -	'curve4y' => { 456 => 'Curve4y' },
      -	'curves' => { 259 => 0x76a43201 },
      -	'custom1' => { 293 => 'Custom1' },
      -	'custom10' => { 293 => 'Custom10' },
      -	'custom2' => { 293 => 'Custom2' },
      -	'custom3' => { 293 => 'Custom3' },
      -	'custom4' => { 293 => 'Custom4' },
      -	'custom5' => { 293 => 'Custom5' },
      -	'custom6' => { 293 => 'Custom6' },
      -	'custom7' => { 293 => 'Custom7' },
      -	'custom8' => { 293 => 'Custom8' },
      -	'custom9' => { 293 => 'Custom9' },
      -	'customcolortone' => { 106 => 0x4c },
      -	'customcontrast' => { 106 => 0x4e },
      -	'customcontrols' => { 81 => 0x70c },
      -	'customdefaultunsharpfineness' => { 106 => 0xbe },
      -	'customdefaultunsharpstrength' => { 106 => 0xbc },
      -	'customdefaultunsharpthreshold' => { 106 => 0xc0 },
      -	'customilluminant' => { 134 => 0x405 },
      -	'customizedials' => { 81 => 0x715 },
      -	'customlinear' => { 106 => 0x4f },
      -	'customoutputhighlightpoint' => { 106 => 0x53 },
      -	'customoutputshadowpoint' => { 106 => 0x54 },
      -	'custompicturestyle' => { 100 => 0x10021 },
      -	'custompicturestyledata' => { 100 => 0xf0500 },
      -	'custompicturestylefilename' => { 61 => 0x4010 },
      -	'customrawhighlight' => { 106 => 0x7c },
      -	'customrawhighlightpoint' => { 106 => 0x51 },
      -	'customrawshadow' => { 106 => 0x85 },
      -	'customrawshadowpoint' => { 106 => 0x52 },
      -	'customrendered' => { 116 => 0xa401, 468 => 'CustomRendered' },
      -	'customsaturation' => { 106 => 0x4d, 283 => 0x503 },
      -	'customsettingsalldefault' => { 266 => '0.2', 275 => '0.2' },
      -	'customsettingsbank' => { 266 => '0.1', 267 => '0.1', 269 => '0.1', 270 => '0.1', 275 => '0.1', 279 => '0.2', 280 => '0.2' },
      -	'customsharpness' => { 106 => 0x50 },
      -	'customunsharpmaskfineness' => { 106 => 0xb8 },
      -	'customunsharpmaskstrength' => { 106 => 0xb6 },
      -	'customunsharpmaskthreshold' => { 106 => 0xba },
      -	'customwb_rblevels' => { 411 => 0x1a },
      -	'customwb_rgblevels' => { 394 => 0x8, 395 => 0x19 },
      -	'customwbbluelevel' => { 179 => 0x36 },
      -	'customwberror' => { 179 => 0x37 },
      -	'customwbgreenlevel' => { 179 => 0x35 },
      -	'customwbredlevel' => { 179 => 0x34 },
      -	'customwbsetting' => { 179 => 0x26 },
      -	'cx' => { 366 => '_cx_' },
      -	'cy' => { 366 => '_cy_' },
      -	'd-lightinghq' => { 259 => 0x2175eb78 },
      -	'd-lightinghqcolorboost' => { 255 => 0x2 },
      -	'd-lightinghqhighlight' => { 255 => 0x1 },
      -	'd-lightinghqselected' => { 259 => 0x6a6e36b6 },
      -	'd-lightinghqshadow' => { 255 => 0x0 },
      -	'd-lightinghs' => { 259 => 0xce5554aa },
      -	'd-lightinghsadjustment' => { 256 => 0x0 },
      -	'd-lightinghscolorboost' => { 256 => 0x1 },
      -	'd-rangeoptimizerhighlight' => { 439 => 0x8024 },
      -	'd-rangeoptimizermode' => { 439 => 0x8022 },
      -	'd-rangeoptimizershadow' => { 439 => 0x802d },
      -	'd-rangeoptimizervalue' => { 439 => 0x8023 },
      -	'darkblacksegrows' => { 134 => 0x18d8 },
      -	'darkfocusenvironment' => { 306 => 0x8003 },
      -	'darkframecountfactor' => { 134 => 0xc85 },
      -	'darkframelongexposure' => { 134 => 0xc84 },
      -	'darkframeshortexposure' => { 134 => 0xc83 },
      -	'darkpedestal' => { 134 => 0xc7f },
      -	'datacompressionmethod' => { 130 => 0x6e },
      -	'dataimprint' => { 176 => 0x34 },
      -	'dataonscreen' => { 474 => 'DataOnScreen' },
      -	'dataonscreenregion' => { 474 => [\'DataOnScreen','DataOnScreenRegion'] },
      -	'dataonscreenregiond' => { 474 => [\'DataOnScreen','DataOnScreenRegionD'] },
      -	'dataonscreenregionh' => { 474 => [\'DataOnScreen','DataOnScreenRegionH'] },
      -	'dataonscreenregiontext' => { 474 => [\'DataOnScreen','DataOnScreenRegionText'] },
      -	'dataonscreenregionunit' => { 474 => [\'DataOnScreen','DataOnScreenRegionUnit'] },
      -	'dataonscreenregionw' => { 474 => [\'DataOnScreen','DataOnScreenRegionW'] },
      -	'dataonscreenregionx' => { 474 => [\'DataOnScreen','DataOnScreenRegionX'] },
      -	'dataonscreenregiony' => { 474 => [\'DataOnScreen','DataOnScreenRegionY'] },
      -	'datascaling' => { 341 => 0x3d },
      -	'date' => { 341 => 0x6, 465 => 'date' },
      -	'dateacquired' => { 174 => 'DateAcquired' },
      -	'datecreated' => { 128 => 0x37, 476 => 'DateCreated' },
      -	'datedisplayformat' => { 251 => 0x3 },
      -	'dateidentified' => { 115 => [\'Identification','IdentificationDateIdentified'] },
      -	'dateimprint' => { 271 => '4.2' },
      -	'daterecieved' => { 478 => 'dateRecieved' },
      -	'datesent' => { 129 => 0x46 },
      -	'datestampmode' => { 61 => 0x1c, 219 => 0x9d },
      -	'datetime' => { 457 => 'datetime', 484 => 'DateTime' },
      -	'datetimedigitized' => { 468 => 'DateTimeDigitized' },
      -	'datetimeoriginal' => { 97 => 0x0, 116 => 0x9003, 150 => 0x14, 153 => 'OriginalDate', 361 => 'IDIT', 366 => 'date', 367 => 0xb, 368 => 0x3b, 369 => 0x3e, 468 => 'DateTimeOriginal' },
      -	'datetimestamp' => { 136 => 0x64 },
      -	'datetimeutc' => { 283 => 0x908 },
      -	'daylightsavings' => { 75 => 0x3, 251 => 0x2 },
      -	'dayofweek' => { 368 => 0x42, 369 => 0x4a },
      -	'dccontinent' => { 115 => [\'dctermsLocation','dctermsLocationContinent'] },
      -	'dccoordinateprecision' => { 115 => [\'dctermsLocation','dctermsLocationCoordinatePrecision'] },
      -	'dccoordinateuncertaintyinmeters' => { 115 => [\'dctermsLocation','dctermsLocationCoordinateUncertaintyInMeters'] },
      -	'dccountry' => { 115 => [\'dctermsLocation','dctermsLocationCountry'] },
      -	'dccountrycode' => { 115 => [\'dctermsLocation','dctermsLocationCountryCode'] },
      -	'dccounty' => { 115 => [\'dctermsLocation','dctermsLocationCounty'] },
      -	'dcdecimallatitude' => { 115 => [\'dctermsLocation','dctermsLocationDecimalLatitude'] },
      -	'dcdecimallongitude' => { 115 => [\'dctermsLocation','dctermsLocationDecimalLongitude'] },
      -	'dcevent' => { 115 => 'Event' },
      -	'dcfootprintspatialfit' => { 115 => [\'dctermsLocation','dctermsLocationFootprintSpatialFit'] },
      -	'dcfootprintsrs' => { 115 => [\'dctermsLocation','dctermsLocationFootprintSRS'] },
      -	'dcfootprintwkt' => { 115 => [\'dctermsLocation','dctermsLocationFootprintWKT'] },
      -	'dcgeodeticdatum' => { 115 => [\'dctermsLocation','dctermsLocationGeodeticDatum'] },
      -	'dcgeoreferencedby' => { 115 => [\'dctermsLocation','dctermsLocationGeoreferencedBy'] },
      -	'dcgeoreferenceddate' => { 115 => [\'dctermsLocation','dctermsLocationGeoreferencedDate'] },
      -	'dcgeoreferenceprotocol' => { 115 => [\'dctermsLocation','dctermsLocationGeoreferenceProtocol'] },
      -	'dcgeoreferenceremarks' => { 115 => [\'dctermsLocation','dctermsLocationGeoreferenceRemarks'] },
      -	'dcgeoreferencesources' => { 115 => [\'dctermsLocation','dctermsLocationGeoreferenceSources'] },
      -	'dcgeoreferenceverificationstatus' => { 115 => [\'dctermsLocation','dctermsLocationGeoreferenceVerificationStatus'] },
      -	'dchighergeography' => { 115 => [\'dctermsLocation','dctermsLocationHigherGeography'] },
      -	'dchighergeographyid' => { 115 => [\'dctermsLocation','dctermsLocationHigherGeographyID'] },
      -	'dcisland' => { 115 => [\'dctermsLocation','dctermsLocationIsland'] },
      -	'dcislandgroup' => { 115 => [\'dctermsLocation','dctermsLocationIslandGroup'] },
      -	'dclocality' => { 115 => [\'dctermsLocation','dctermsLocationLocality'] },
      -	'dclocationaccordingto' => { 115 => [\'dctermsLocation','dctermsLocationLocationAccordingTo'] },
      -	'dclocationid' => { 115 => [\'dctermsLocation','dctermsLocationLocationID'] },
      -	'dclocationremarks' => { 115 => [\'dctermsLocation','dctermsLocationLocationRemarks'] },
      -	'dcmaximumdepthinmeters' => { 115 => [\'dctermsLocation','dctermsLocationMaximumDepthInMeters'] },
      -	'dcmaximumdistanceabovesurfaceinmeters' => { 115 => [\'dctermsLocation','dctermsLocationMaximumDistanceAboveSurfaceInMeters'] },
      -	'dcmaximumelevationinmeters' => { 115 => [\'dctermsLocation','dctermsLocationMaximumElevationInMeters'] },
      -	'dcminimumdepthinmeters' => { 115 => [\'dctermsLocation','dctermsLocationMinimumDepthInMeters'] },
      -	'dcminimumdistanceabovesurfaceinmeters' => { 115 => [\'dctermsLocation','dctermsLocationMinimumDistanceAboveSurfaceInMeters'] },
      -	'dcminimumelevationinmeters' => { 115 => [\'dctermsLocation','dctermsLocationMinimumElevationInMeters'] },
      -	'dcmunicipality' => { 115 => [\'dctermsLocation','dctermsLocationMunicipality'] },
      -	'dcpointradiusspatialfit' => { 115 => [\'dctermsLocation','dctermsLocationPointRadiusSpatialFit'] },
      -	'dcstateprovince' => { 115 => [\'dctermsLocation','dctermsLocationStateProvince'] },
      -	'dctermslocation' => { 115 => 'dctermsLocation' },
      -	'dcverbatimcoordinates' => { 115 => [\'dctermsLocation','dctermsLocationVerbatimCoordinates'] },
      -	'dcverbatimcoordinatesystem' => { 115 => [\'dctermsLocation','dctermsLocationVerbatimCoordinateSystem'] },
      -	'dcverbatimdepth' => { 115 => [\'dctermsLocation','dctermsLocationVerbatimDepth'] },
      -	'dcverbatimelevation' => { 115 => [\'dctermsLocation','dctermsLocationVerbatimElevation'] },
      -	'dcverbatimlatitude' => { 115 => [\'dctermsLocation','dctermsLocationVerbatimLatitude'] },
      -	'dcverbatimlocality' => { 115 => [\'dctermsLocation','dctermsLocationVerbatimLocality'] },
      -	'dcverbatimlongitude' => { 115 => [\'dctermsLocation','dctermsLocationVerbatimLongitude'] },
      -	'dcverbatimsrs' => { 115 => [\'dctermsLocation','dctermsLocationVerbatimSRS'] },
      -	'dcwaterbody' => { 115 => [\'dctermsLocation','dctermsLocationWaterBody'] },
      -	'declination' => { 161 => 'Declination' },
      -	'decposition' => { 176 => 0x32 },
      -	'defaultautogray' => { 462 => 'DefaultAutoGray', 464 => 'DefaultAutoGray' },
      -	'defaultautotone' => { 462 => 'DefaultAutoTone', 464 => 'DefaultAutoTone' },
      -	'defaultblackrender' => { 116 => 0xc7a6 },
      -	'defaultcroporigin' => { 116 => 0xc61f },
      -	'defaultcropsize' => { 116 => 0xc620 },
      -	'defaulteraseoption' => { 81 => 0x813 },
      -	'defaultscale' => { 116 => 0xc61e },
      -	'defaultsspecifictoiso' => { 462 => 'DefaultsSpecificToISO', 464 => 'DefaultsSpecificToISO' },
      -	'defaultsspecifictoserial' => { 462 => 'DefaultsSpecificToSerial', 464 => 'DefaultsSpecificToSerial' },
      -	'defaultusercrop' => { 116 => 0xc7b5 },
      -	'defectisocode' => { 134 => 0x90f },
      -	'defringe' => { 462 => 'Defringe', 464 => 'Defringe' },
      -	'defringegreenamount' => { 462 => 'DefringeGreenAmount', 464 => 'DefringeGreenAmount' },
      -	'defringegreenhuehi' => { 462 => 'DefringeGreenHueHi', 464 => 'DefringeGreenHueHi' },
      -	'defringegreenhuelo' => { 462 => 'DefringeGreenHueLo', 464 => 'DefringeGreenHueLo' },
      -	'defringepurpleamount' => { 462 => 'DefringePurpleAmount', 464 => 'DefringePurpleAmount' },
      -	'defringepurplehuehi' => { 462 => 'DefringePurpleHueHi', 464 => 'DefringePurpleHueHi' },
      -	'defringepurplehuelo' => { 462 => 'DefringePurpleHueLo', 464 => 'DefringePurpleHueLo' },
      -	'dehaze' => { 462 => 'Dehaze', 464 => 'Dehaze' },
      -	'deletedimagecount' => { 219 => 0xa6, 228 => 0x6e },
      -	'deprecatedon' => { 460 => 'deprecatedOn' },
      -	'depthfar' => { 116 => 0xc7eb },
      -	'depthformat' => { 116 => 0xc7e9 },
      -	'depthimage' => { 447 => 'Data' },
      -	'depthmeasuretype' => { 116 => 0xc7ed },
      -	'depthnear' => { 116 => 0xc7ea },
      -	'depthunits' => { 116 => 0xc7ec },
      -	'derivedfrom' => { 489 => 'DerivedFrom' },
      -	'derivedfromalternatepaths' => { 489 => [\'DerivedFrom','DerivedFromAlternatePaths'] },
      -	'derivedfromdocumentid' => { 489 => [\'DerivedFrom','DerivedFromDocumentID'] },
      -	'derivedfromfilepath' => { 489 => [\'DerivedFrom','DerivedFromFilePath'] },
      -	'derivedfromfrompart' => { 489 => [\'DerivedFrom','DerivedFromFromPart'] },
      -	'derivedfrominstanceid' => { 489 => [\'DerivedFrom','DerivedFromInstanceID'] },
      -	'derivedfromlastmodifydate' => { 489 => [\'DerivedFrom','DerivedFromLastModifyDate'] },
      -	'derivedfromlasturl' => { 489 => [\'DerivedFrom','DerivedFromLastURL'] },
      -	'derivedfromlinkcategory' => { 489 => [\'DerivedFrom','DerivedFromLinkCategory'] },
      -	'derivedfromlinkform' => { 489 => [\'DerivedFrom','DerivedFromLinkForm'] },
      -	'derivedfrommanager' => { 489 => [\'DerivedFrom','DerivedFromManager'] },
      -	'derivedfrommanagervariant' => { 489 => [\'DerivedFrom','DerivedFromManagerVariant'] },
      -	'derivedfrommanageto' => { 489 => [\'DerivedFrom','DerivedFromManageTo'] },
      -	'derivedfrommanageui' => { 489 => [\'DerivedFrom','DerivedFromManageUI'] },
      -	'derivedfrommaskmarkers' => { 489 => [\'DerivedFrom','DerivedFromMaskMarkers'] },
      -	'derivedfromoriginaldocumentid' => { 489 => [\'DerivedFrom','DerivedFromOriginalDocumentID'] },
      -	'derivedfrompartmapping' => { 489 => [\'DerivedFrom','DerivedFromPartMapping'] },
      -	'derivedfromplacedresolutionunit' => { 489 => [\'DerivedFrom','DerivedFromPlacedResolutionUnit'] },
      -	'derivedfromplacedxresolution' => { 489 => [\'DerivedFrom','DerivedFromPlacedXResolution'] },
      -	'derivedfromplacedyresolution' => { 489 => [\'DerivedFrom','DerivedFromPlacedYResolution'] },
      -	'derivedfromrenditionclass' => { 489 => [\'DerivedFrom','DerivedFromRenditionClass'] },
      -	'derivedfromrenditionparams' => { 489 => [\'DerivedFrom','DerivedFromRenditionParams'] },
      -	'derivedfromtopart' => { 489 => [\'DerivedFrom','DerivedFromToPart'] },
      -	'derivedfromversionid' => { 489 => [\'DerivedFrom','DerivedFromVersionID'] },
      -	'description' => { 296 => 'Description', 358 => ['desc','dscp',"\xa9des"], 360 => 'description', 366 => 'dscp', 465 => 'description', 486 => 'Description' },
      -	'destination' => { 129 => 0x5 },
      -	'destinationcity' => { 341 => 0x24, 347 => 0x3 },
      -	'destinationcitycode' => { 348 => 0x1001 },
      -	'destinationdst' => { 341 => 0x26, 347 => '0.3' },
      -	'developmentdynamicrange' => { 124 => 0x1403 },
      -	'deviantmatrixcustom' => { 134 => 0x7de },
      -	'deviantmatrixdaylight' => { 134 => 0x7da },
      -	'deviantmatrixflash' => { 134 => 0x7dd },
      -	'deviantmatrixfluorescent' => { 134 => 0x7dc },
      -	'deviantmatrixtungsten' => { 134 => 0x7db },
      -	'deviantwhitecustom' => { 134 => 0x842 },
      -	'deviantwhitedaylight' => { 134 => 0x83e },
      -	'deviantwhiteflash' => { 134 => 0x841 },
      -	'deviantwhitefluorescent' => { 134 => 0x840 },
      -	'deviantwhitetungsten' => { 134 => 0x83f },
      -	'device' => { 478 => 'device' },
      -	'devicesettingdescription' => { 468 => 'DeviceSettingDescription' },
      -	'devicesettingdescriptioncolumns' => { 468 => [\'DeviceSettingDescription','DeviceSettingDescriptionColumns'] },
      -	'devicesettingdescriptionrows' => { 468 => [\'DeviceSettingDescription','DeviceSettingDescriptionRows'] },
      -	'devicesettingdescriptionsettings' => { 468 => [\'DeviceSettingDescription','DeviceSettingDescriptionSettings'] },
      -	'devicetype' => { 380 => 0x2 },
      -	'dewarpdata' => { 113 => 'DewarpData' },
      -	'dewarpflag' => { 113 => 'DewarpFlag' },
      -	'dialdirectiontvav' => { 81 => 0x706 },
      -	'dietaryneeds' => { 480 => 'dietaryNeeds' },
      -	'diffractioncorrection' => { 306 => 0xbc, 331 => 0x3 },
      -	'diffractioncorrectionon' => { 100 => 0x2070b },
      -	'digitalcreationdate' => { 128 => 0x3e },
      -	'digitalcreationtime' => { 128 => 0x3f },
      -	'digitaldeehighlightadj' => { 227 => 0x202 },
      -	'digitaldeeshadowadj' => { 227 => 0x200 },
      -	'digitaldeethreshold' => { 227 => 0x201 },
      -	'digitalfilter' => { 383 => 0x59 },
      -	'digitalfilter01' => { 328 => 0x5 },
      -	'digitalfilter02' => { 328 => 0x16 },
      -	'digitalfilter03' => { 328 => 0x27 },
      -	'digitalfilter04' => { 328 => 0x38 },
      -	'digitalfilter05' => { 328 => 0x49 },
      -	'digitalfilter06' => { 328 => 0x5a },
      -	'digitalfilter07' => { 328 => 0x6b },
      -	'digitalfilter08' => { 328 => 0x7c },
      -	'digitalfilter09' => { 328 => 0x8d },
      -	'digitalfilter10' => { 328 => 0x9e },
      -	'digitalfilter11' => { 328 => 0xaf },
      -	'digitalfilter12' => { 328 => 0xc0 },
      -	'digitalfilter13' => { 328 => 0xd1 },
      -	'digitalfilter14' => { 328 => 0xe2 },
      -	'digitalfilter15' => { 328 => 0xf3 },
      -	'digitalfilter16' => { 328 => 0x104 },
      -	'digitalfilter17' => { 328 => 0x115 },
      -	'digitalfilter18' => { 328 => 0x126 },
      -	'digitalfilter19' => { 328 => 0x137 },
      -	'digitalfilter20' => { 328 => 0x148 },
      -	'digitalgain' => { 71 => 0xb },
      -	'digitalgem' => { 208 => 0x0 },
      -	'digitalice' => { 227 => 0x100 },
      -	'digitalimageguid' => { 474 => 'DigImageGUID' },
      -	'digitalroc' => { 225 => 0x0 },
      -	'digitalsourcefiletype' => { 474 => 'DigitalSourcefileType' },
      -	'digitalsourcetype' => { 474 => 'DigitalSourceType' },
      -	'digitalzoom' => { 34 => 0xc, 109 => 0xa, 124 => 0x1044, 136 => 0x68, 147 => 0x22, 148 => 0x1e, 152 => 'DigitalZoom', 176 => 0xc, 219 => 0x86, 249 => 0xa, 288 => 0x204, 341 => 0x1e, 348 => 0xa, 382 => 0x204, 426 => 0x12, 427 => 0x12 },
      -	'digitalzoomon' => { 382 => 0x21b },
      -	'digitalzoomratio' => { 116 => 0xa404, 416 => 0x200, 418 => 0x21c, 468 => 'DigitalZoomRatio' },
      -	'director' => { 360 => 'director', 366 => "\xa9dir", 488 => 'director' },
      -	'directorphotography' => { 488 => 'directorPhotography' },
      -	'directory' => { 117 => 'Directory' },
      +	'croppedimagewidth' => { 5 => 0x1, 387 => 0x1603 },
      +	'cropping' => { 454 => 0x9010 },
      +	'cropright' => { 123 => 0x8, 267 => 0x2e, 325 => 0x32, 366 => 0xdb, 477 => 'CropRight', 479 => 'CropRight' },
      +	'croprightmargin' => { 53 => 0x1 },
      +	'croprotatedoriginalheight' => { 101 => 0x2 },
      +	'croprotatedoriginalwidth' => { 101 => 0x1 },
      +	'croprotation' => { 101 => 0x8, 123 => 0xb },
      +	'cropscaledresolution' => { 267 => 0x9e },
      +	'cropsourceresolution' => { 267 => 0xae },
      +	'croptop' => { 108 => 0x248, 123 => 0x7, 267 => 0x26, 301 => 0x613, 305 => 0x613, 325 => 0x2f, 366 => 0xda, 477 => 'CropTop', 479 => 'CropTop' },
      +	'croptopmargin' => { 53 => 0x2 },
      +	'cropunit' => { 477 => 'CropUnit', 479 => 'CropUnit' },
      +	'cropunits' => { 477 => 'CropUnits', 479 => 'CropUnits' },
      +	'cropw' => { 471 => 'CropW' },
      +	'cropwidth' => { 101 => 0x5, 108 => 0x24a, 301 => 0x614, 305 => 0x614, 477 => 'CropWidth', 479 => 'CropWidth' },
      +	'cropx' => { 101 => 0x3, 471 => 'CropX' },
      +	'cropy' => { 101 => 0x4, 471 => 'CropY' },
      +	'crossprocess' => { 355 => 0x7b },
      +	'crossprocessparams' => { 355 => 0x235 },
      +	'cuisine' => { 495 => 'cuisine' },
      +	'currenticcprofile' => { 119 => 0xc691 },
      +	'currentpreprofilematrix' => { 119 => 0xc692 },
      +	'currentversion' => { 454 => 0xd000 },
      +	'curve0x' => { 471 => 'Curve0x' },
      +	'curve0y' => { 471 => 'Curve0y' },
      +	'curve1x' => { 471 => 'Curve1x' },
      +	'curve1y' => { 471 => 'Curve1y' },
      +	'curve2x' => { 471 => 'Curve2x' },
      +	'curve2y' => { 471 => 'Curve2y' },
      +	'curve3x' => { 471 => 'Curve3x' },
      +	'curve3y' => { 471 => 'Curve3y' },
      +	'curve4x' => { 471 => 'Curve4x' },
      +	'curve4y' => { 471 => 'Curve4y' },
      +	'curves' => { 272 => 0x76a43201 },
      +	'custom1' => { 307 => 'Custom1' },
      +	'custom10' => { 307 => 'Custom10' },
      +	'custom2' => { 307 => 'Custom2' },
      +	'custom3' => { 307 => 'Custom3' },
      +	'custom4' => { 307 => 'Custom4' },
      +	'custom5' => { 307 => 'Custom5' },
      +	'custom6' => { 307 => 'Custom6' },
      +	'custom7' => { 307 => 'Custom7' },
      +	'custom8' => { 307 => 'Custom8' },
      +	'custom9' => { 307 => 'Custom9' },
      +	'customcolortone' => { 109 => 0x4c },
      +	'customcontrast' => { 109 => 0x4e },
      +	'customcontrols' => { 84 => 0x70c },
      +	'customdefaultunsharpfineness' => { 109 => 0xbe },
      +	'customdefaultunsharpstrength' => { 109 => 0xbc },
      +	'customdefaultunsharpthreshold' => { 109 => 0xc0 },
      +	'customilluminant' => { 138 => 0x405 },
      +	'customizedials' => { 84 => 0x715 },
      +	'customlinear' => { 109 => 0x4f },
      +	'customoutputhighlightpoint' => { 109 => 0x53 },
      +	'customoutputshadowpoint' => { 109 => 0x54 },
      +	'custompicturestyle' => { 103 => 0x10021 },
      +	'custompicturestyledata' => { 103 => 0xf0500 },
      +	'custompicturestylefilename' => { 64 => 0x4010 },
      +	'customrawhighlight' => { 109 => 0x7c },
      +	'customrawhighlightpoint' => { 109 => 0x51 },
      +	'customrawshadow' => { 109 => 0x85 },
      +	'customrawshadowpoint' => { 109 => 0x52 },
      +	'customrendered' => { 119 => 0xa401, 483 => 'CustomRendered' },
      +	'customsaturation' => { 109 => 0x4d, 297 => 0x503 },
      +	'customsettingsalldefault' => { 279 => '0.2', 288 => '0.2' },
      +	'customsettingsbank' => { 279 => '0.1', 280 => '0.1', 282 => '0.1', 283 => '0.1', 288 => '0.1', 292 => '0.2', 293 => '0.2', 295 => 0x1 },
      +	'customsharpness' => { 109 => 0x50 },
      +	'customunsharpmaskfineness' => { 109 => 0xb8 },
      +	'customunsharpmaskstrength' => { 109 => 0xb6 },
      +	'customunsharpmaskthreshold' => { 109 => 0xba },
      +	'customwb_rblevels' => { 425 => 0x1a },
      +	'customwb_rgblevels' => { 408 => 0x8, 409 => 0x19 },
      +	'customwbbluelevel' => { 184 => 0x36 },
      +	'customwberror' => { 184 => 0x37 },
      +	'customwbgreenlevel' => { 184 => 0x35 },
      +	'customwbredlevel' => { 184 => 0x34 },
      +	'customwbsetting' => { 184 => 0x26 },
      +	'cx' => { 380 => '_cx_' },
      +	'cy' => { 380 => '_cy_' },
      +	'd-lightinghq' => { 272 => 0x2175eb78 },
      +	'd-lightinghqcolorboost' => { 268 => 0x2 },
      +	'd-lightinghqhighlight' => { 268 => 0x1 },
      +	'd-lightinghqselected' => { 272 => 0x6a6e36b6 },
      +	'd-lightinghqshadow' => { 268 => 0x0 },
      +	'd-lightinghs' => { 272 => 0xce5554aa },
      +	'd-lightinghsadjustment' => { 269 => 0x0 },
      +	'd-lightinghscolorboost' => { 269 => 0x1 },
      +	'd-rangeoptimizerhighlight' => { 454 => 0x8024 },
      +	'd-rangeoptimizermode' => { 454 => 0x8022 },
      +	'd-rangeoptimizershadow' => { 454 => 0x802d },
      +	'd-rangeoptimizervalue' => { 454 => 0x8023 },
      +	'darkblacksegrows' => { 138 => 0x18d8 },
      +	'darkfocusenvironment' => { 320 => 0x8003 },
      +	'darkframecountfactor' => { 138 => 0xc85 },
      +	'darkframelongexposure' => { 138 => 0xc84 },
      +	'darkframeshortexposure' => { 138 => 0xc83 },
      +	'darkpedestal' => { 138 => 0xc7f },
      +	'datacompressionmethod' => { 133 => 0x6e },
      +	'dataimprint' => { 181 => 0x34 },
      +	'dataonscreen' => { 489 => 'DataOnScreen' },
      +	'dataonscreenregion' => { 489 => [\'DataOnScreen','DataOnScreenRegion'] },
      +	'dataonscreenregiond' => { 489 => [\'DataOnScreen','DataOnScreenRegionD'] },
      +	'dataonscreenregionh' => { 489 => [\'DataOnScreen','DataOnScreenRegionH'] },
      +	'dataonscreenregiontext' => { 489 => [\'DataOnScreen','DataOnScreenRegionText'] },
      +	'dataonscreenregionunit' => { 489 => [\'DataOnScreen','DataOnScreenRegionUnit'] },
      +	'dataonscreenregionw' => { 489 => [\'DataOnScreen','DataOnScreenRegionW'] },
      +	'dataonscreenregionx' => { 489 => [\'DataOnScreen','DataOnScreenRegionX'] },
      +	'dataonscreenregiony' => { 489 => [\'DataOnScreen','DataOnScreenRegionY'] },
      +	'datascaling' => { 355 => 0x3d },
      +	'date' => { 355 => 0x6, 480 => 'date' },
      +	'dateacquired' => { 178 => 'DateAcquired', 179 => '{2CBAA8F5-D81F-47CA-B17A-F8D822300131} 100' },
      +	'datecreated' => { 131 => 0x37, 491 => 'DateCreated' },
      +	'datedisplayformat' => { 264 => 0x3 },
      +	'dateidentified' => { 118 => [\'Identification','IdentificationDateIdentified'] },
      +	'dateimprint' => { 284 => '4.2' },
      +	'daterecieved' => { 493 => 'dateRecieved' },
      +	'datesent' => { 132 => 0x46 },
      +	'datestampmode' => { 64 => 0x1c, 226 => 0x9d },
      +	'datetime' => { 472 => 'datetime', 499 => 'DateTime' },
      +	'datetimedigitized' => { 483 => 'DateTimeDigitized' },
      +	'datetimeoriginal' => { 100 => 0x0, 119 => 0x9003, 154 => 0x14, 157 => 'OriginalDate', 375 => 'IDIT', 380 => 'date', 381 => 0xb, 382 => 0x3b, 383 => 0x3e, 483 => 'DateTimeOriginal' },
      +	'datetimestamp' => { 140 => 0x64 },
      +	'datetimeutc' => { 297 => 0x908 },
      +	'daylightsavings' => { 78 => 0x3, 264 => 0x2 },
      +	'dayofweek' => { 382 => 0x42, 383 => 0x4a },
      +	'dccontinent' => { 118 => [\'dctermsLocation','dctermsLocationContinent'] },
      +	'dccoordinateprecision' => { 118 => [\'dctermsLocation','dctermsLocationCoordinatePrecision'] },
      +	'dccoordinateuncertaintyinmeters' => { 118 => [\'dctermsLocation','dctermsLocationCoordinateUncertaintyInMeters'] },
      +	'dccountry' => { 118 => [\'dctermsLocation','dctermsLocationCountry'] },
      +	'dccountrycode' => { 118 => [\'dctermsLocation','dctermsLocationCountryCode'] },
      +	'dccounty' => { 118 => [\'dctermsLocation','dctermsLocationCounty'] },
      +	'dcdecimallatitude' => { 118 => [\'dctermsLocation','dctermsLocationDecimalLatitude'] },
      +	'dcdecimallongitude' => { 118 => [\'dctermsLocation','dctermsLocationDecimalLongitude'] },
      +	'dcevent' => { 118 => 'Event' },
      +	'dcfootprintspatialfit' => { 118 => [\'dctermsLocation','dctermsLocationFootprintSpatialFit'] },
      +	'dcfootprintsrs' => { 118 => [\'dctermsLocation','dctermsLocationFootprintSRS'] },
      +	'dcfootprintwkt' => { 118 => [\'dctermsLocation','dctermsLocationFootprintWKT'] },
      +	'dcgeodeticdatum' => { 118 => [\'dctermsLocation','dctermsLocationGeodeticDatum'] },
      +	'dcgeoreferencedby' => { 118 => [\'dctermsLocation','dctermsLocationGeoreferencedBy'] },
      +	'dcgeoreferenceddate' => { 118 => [\'dctermsLocation','dctermsLocationGeoreferencedDate'] },
      +	'dcgeoreferenceprotocol' => { 118 => [\'dctermsLocation','dctermsLocationGeoreferenceProtocol'] },
      +	'dcgeoreferenceremarks' => { 118 => [\'dctermsLocation','dctermsLocationGeoreferenceRemarks'] },
      +	'dcgeoreferencesources' => { 118 => [\'dctermsLocation','dctermsLocationGeoreferenceSources'] },
      +	'dcgeoreferenceverificationstatus' => { 118 => [\'dctermsLocation','dctermsLocationGeoreferenceVerificationStatus'] },
      +	'dchighergeography' => { 118 => [\'dctermsLocation','dctermsLocationHigherGeography'] },
      +	'dchighergeographyid' => { 118 => [\'dctermsLocation','dctermsLocationHigherGeographyID'] },
      +	'dcisland' => { 118 => [\'dctermsLocation','dctermsLocationIsland'] },
      +	'dcislandgroup' => { 118 => [\'dctermsLocation','dctermsLocationIslandGroup'] },
      +	'dclocality' => { 118 => [\'dctermsLocation','dctermsLocationLocality'] },
      +	'dclocationaccordingto' => { 118 => [\'dctermsLocation','dctermsLocationLocationAccordingTo'] },
      +	'dclocationid' => { 118 => [\'dctermsLocation','dctermsLocationLocationID'] },
      +	'dclocationremarks' => { 118 => [\'dctermsLocation','dctermsLocationLocationRemarks'] },
      +	'dcmaximumdepthinmeters' => { 118 => [\'dctermsLocation','dctermsLocationMaximumDepthInMeters'] },
      +	'dcmaximumdistanceabovesurfaceinmeters' => { 118 => [\'dctermsLocation','dctermsLocationMaximumDistanceAboveSurfaceInMeters'] },
      +	'dcmaximumelevationinmeters' => { 118 => [\'dctermsLocation','dctermsLocationMaximumElevationInMeters'] },
      +	'dcminimumdepthinmeters' => { 118 => [\'dctermsLocation','dctermsLocationMinimumDepthInMeters'] },
      +	'dcminimumdistanceabovesurfaceinmeters' => { 118 => [\'dctermsLocation','dctermsLocationMinimumDistanceAboveSurfaceInMeters'] },
      +	'dcminimumelevationinmeters' => { 118 => [\'dctermsLocation','dctermsLocationMinimumElevationInMeters'] },
      +	'dcmunicipality' => { 118 => [\'dctermsLocation','dctermsLocationMunicipality'] },
      +	'dcpointradiusspatialfit' => { 118 => [\'dctermsLocation','dctermsLocationPointRadiusSpatialFit'] },
      +	'dcstateprovince' => { 118 => [\'dctermsLocation','dctermsLocationStateProvince'] },
      +	'dctermslocation' => { 118 => 'dctermsLocation' },
      +	'dcverbatimcoordinates' => { 118 => [\'dctermsLocation','dctermsLocationVerbatimCoordinates'] },
      +	'dcverbatimcoordinatesystem' => { 118 => [\'dctermsLocation','dctermsLocationVerbatimCoordinateSystem'] },
      +	'dcverbatimdepth' => { 118 => [\'dctermsLocation','dctermsLocationVerbatimDepth'] },
      +	'dcverbatimelevation' => { 118 => [\'dctermsLocation','dctermsLocationVerbatimElevation'] },
      +	'dcverbatimlatitude' => { 118 => [\'dctermsLocation','dctermsLocationVerbatimLatitude'] },
      +	'dcverbatimlocality' => { 118 => [\'dctermsLocation','dctermsLocationVerbatimLocality'] },
      +	'dcverbatimlongitude' => { 118 => [\'dctermsLocation','dctermsLocationVerbatimLongitude'] },
      +	'dcverbatimsrs' => { 118 => [\'dctermsLocation','dctermsLocationVerbatimSRS'] },
      +	'dcwaterbody' => { 118 => [\'dctermsLocation','dctermsLocationWaterBody'] },
      +	'declination' => { 165 => 'Declination' },
      +	'decposition' => { 181 => 0x32 },
      +	'defaultautogray' => { 477 => 'DefaultAutoGray', 479 => 'DefaultAutoGray' },
      +	'defaultautotone' => { 477 => 'DefaultAutoTone', 479 => 'DefaultAutoTone' },
      +	'defaultblackrender' => { 119 => 0xc7a6 },
      +	'defaultcroporigin' => { 119 => 0xc61f },
      +	'defaultcropsize' => { 119 => 0xc620 },
      +	'defaulteraseoption' => { 84 => 0x813 },
      +	'defaultscale' => { 119 => 0xc61e },
      +	'defaultsspecifictoiso' => { 477 => 'DefaultsSpecificToISO', 479 => 'DefaultsSpecificToISO' },
      +	'defaultsspecifictoserial' => { 477 => 'DefaultsSpecificToSerial', 479 => 'DefaultsSpecificToSerial' },
      +	'defaultusercrop' => { 119 => 0xc7b5 },
      +	'defectisocode' => { 138 => 0x90f },
      +	'defringe' => { 477 => 'Defringe', 479 => 'Defringe' },
      +	'defringegreenamount' => { 477 => 'DefringeGreenAmount', 479 => 'DefringeGreenAmount' },
      +	'defringegreenhuehi' => { 477 => 'DefringeGreenHueHi', 479 => 'DefringeGreenHueHi' },
      +	'defringegreenhuelo' => { 477 => 'DefringeGreenHueLo', 479 => 'DefringeGreenHueLo' },
      +	'defringepurpleamount' => { 477 => 'DefringePurpleAmount', 479 => 'DefringePurpleAmount' },
      +	'defringepurplehuehi' => { 477 => 'DefringePurpleHueHi', 479 => 'DefringePurpleHueHi' },
      +	'defringepurplehuelo' => { 477 => 'DefringePurpleHueLo', 479 => 'DefringePurpleHueLo' },
      +	'dehaze' => { 477 => 'Dehaze', 479 => 'Dehaze' },
      +	'deletedimagecount' => { 226 => 0xa6, 238 => 0x6e },
      +	'deprecatedon' => { 475 => 'deprecatedOn' },
      +	'depthfar' => { 119 => 0xc7eb },
      +	'depthformat' => { 119 => 0xc7e9 },
      +	'depthimage' => { 462 => 'Data' },
      +	'depthmeasuretype' => { 119 => 0xc7ed },
      +	'depthnear' => { 119 => 0xc7ea },
      +	'depthunits' => { 119 => 0xc7ec },
      +	'derivedfrom' => { 504 => 'DerivedFrom' },
      +	'derivedfromalternatepaths' => { 504 => [\'DerivedFrom','DerivedFromAlternatePaths'] },
      +	'derivedfromdocumentid' => { 504 => [\'DerivedFrom','DerivedFromDocumentID'] },
      +	'derivedfromfilepath' => { 504 => [\'DerivedFrom','DerivedFromFilePath'] },
      +	'derivedfromfrompart' => { 504 => [\'DerivedFrom','DerivedFromFromPart'] },
      +	'derivedfrominstanceid' => { 504 => [\'DerivedFrom','DerivedFromInstanceID'] },
      +	'derivedfromlastmodifydate' => { 504 => [\'DerivedFrom','DerivedFromLastModifyDate'] },
      +	'derivedfromlasturl' => { 504 => [\'DerivedFrom','DerivedFromLastURL'] },
      +	'derivedfromlinkcategory' => { 504 => [\'DerivedFrom','DerivedFromLinkCategory'] },
      +	'derivedfromlinkform' => { 504 => [\'DerivedFrom','DerivedFromLinkForm'] },
      +	'derivedfrommanager' => { 504 => [\'DerivedFrom','DerivedFromManager'] },
      +	'derivedfrommanagervariant' => { 504 => [\'DerivedFrom','DerivedFromManagerVariant'] },
      +	'derivedfrommanageto' => { 504 => [\'DerivedFrom','DerivedFromManageTo'] },
      +	'derivedfrommanageui' => { 504 => [\'DerivedFrom','DerivedFromManageUI'] },
      +	'derivedfrommaskmarkers' => { 504 => [\'DerivedFrom','DerivedFromMaskMarkers'] },
      +	'derivedfromoriginaldocumentid' => { 504 => [\'DerivedFrom','DerivedFromOriginalDocumentID'] },
      +	'derivedfrompartmapping' => { 504 => [\'DerivedFrom','DerivedFromPartMapping'] },
      +	'derivedfromplacedresolutionunit' => { 504 => [\'DerivedFrom','DerivedFromPlacedResolutionUnit'] },
      +	'derivedfromplacedxresolution' => { 504 => [\'DerivedFrom','DerivedFromPlacedXResolution'] },
      +	'derivedfromplacedyresolution' => { 504 => [\'DerivedFrom','DerivedFromPlacedYResolution'] },
      +	'derivedfromrenditionclass' => { 504 => [\'DerivedFrom','DerivedFromRenditionClass'] },
      +	'derivedfromrenditionparams' => { 504 => [\'DerivedFrom','DerivedFromRenditionParams'] },
      +	'derivedfromtopart' => { 504 => [\'DerivedFrom','DerivedFromToPart'] },
      +	'derivedfromversionid' => { 504 => [\'DerivedFrom','DerivedFromVersionID'] },
      +	'description' => { 310 => 'Description', 372 => ['desc','dscp',"\xa9des"], 374 => 'description', 380 => 'dscp', 477 => 'Description', 479 => 'Description', 480 => 'description', 501 => 'Description' },
      +	'destination' => { 132 => 0x5 },
      +	'destinationcity' => { 355 => 0x24, 361 => 0x3 },
      +	'destinationcitycode' => { 362 => 0x1001 },
      +	'destinationdst' => { 355 => 0x26, 361 => '0.3' },
      +	'developmentdynamicrange' => { 127 => 0x1403 },
      +	'deviantmatrixcustom' => { 138 => 0x7de },
      +	'deviantmatrixdaylight' => { 138 => 0x7da },
      +	'deviantmatrixflash' => { 138 => 0x7dd },
      +	'deviantmatrixfluorescent' => { 138 => 0x7dc },
      +	'deviantmatrixtungsten' => { 138 => 0x7db },
      +	'deviantwhitecustom' => { 138 => 0x842 },
      +	'deviantwhitedaylight' => { 138 => 0x83e },
      +	'deviantwhiteflash' => { 138 => 0x841 },
      +	'deviantwhitefluorescent' => { 138 => 0x840 },
      +	'deviantwhitetungsten' => { 138 => 0x83f },
      +	'device' => { 493 => 'device' },
      +	'devicesettingdescription' => { 483 => 'DeviceSettingDescription' },
      +	'devicesettingdescriptioncolumns' => { 483 => [\'DeviceSettingDescription','DeviceSettingDescriptionColumns'] },
      +	'devicesettingdescriptionrows' => { 483 => [\'DeviceSettingDescription','DeviceSettingDescriptionRows'] },
      +	'devicesettingdescriptionsettings' => { 483 => [\'DeviceSettingDescription','DeviceSettingDescriptionSettings'] },
      +	'devicetype' => { 394 => 0x2 },
      +	'dewarpdata' => { 116 => 'DewarpData' },
      +	'dewarpflag' => { 116 => 'DewarpFlag' },
      +	'dialdirectiontvav' => { 84 => 0x706 },
      +	'dietaryneeds' => { 495 => 'dietaryNeeds' },
      +	'diffractioncompensation' => { 228 => 0x142, 229 => 0x1a2, 252 => 0xc4a0 },
      +	'diffractioncorrection' => { 320 => 0xbc, 345 => 0x3 },
      +	'diffractioncorrectionon' => { 103 => 0x2070b },
      +	'digitalcreationdate' => { 131 => 0x3e },
      +	'digitalcreationtime' => { 131 => 0x3f },
      +	'digitaldeehighlightadj' => { 237 => 0x202 },
      +	'digitaldeeshadowadj' => { 237 => 0x200 },
      +	'digitaldeethreshold' => { 237 => 0x201 },
      +	'digitalfilter' => { 397 => 0x59 },
      +	'digitalfilter01' => { 342 => 0x5 },
      +	'digitalfilter02' => { 342 => 0x16 },
      +	'digitalfilter03' => { 342 => 0x27 },
      +	'digitalfilter04' => { 342 => 0x38 },
      +	'digitalfilter05' => { 342 => 0x49 },
      +	'digitalfilter06' => { 342 => 0x5a },
      +	'digitalfilter07' => { 342 => 0x6b },
      +	'digitalfilter08' => { 342 => 0x7c },
      +	'digitalfilter09' => { 342 => 0x8d },
      +	'digitalfilter10' => { 342 => 0x9e },
      +	'digitalfilter11' => { 342 => 0xaf },
      +	'digitalfilter12' => { 342 => 0xc0 },
      +	'digitalfilter13' => { 342 => 0xd1 },
      +	'digitalfilter14' => { 342 => 0xe2 },
      +	'digitalfilter15' => { 342 => 0xf3 },
      +	'digitalfilter16' => { 342 => 0x104 },
      +	'digitalfilter17' => { 342 => 0x115 },
      +	'digitalfilter18' => { 342 => 0x126 },
      +	'digitalfilter19' => { 342 => 0x137 },
      +	'digitalfilter20' => { 342 => 0x148 },
      +	'digitalgain' => { 74 => 0xb },
      +	'digitalgem' => { 215 => 0x0 },
      +	'digitalice' => { 237 => 0x100 },
      +	'digitalimageguid' => { 489 => 'DigImageGUID' },
      +	'digitalroc' => { 235 => 0x0 },
      +	'digitalsourcefiletype' => { 489 => 'DigitalSourcefileType' },
      +	'digitalsourcetype' => { 489 => 'DigitalSourceType' },
      +	'digitalzoom' => { 34 => 0xc, 112 => 0xa, 127 => 0x1044, 140 => 0x68, 151 => 0x22, 152 => 0x1e, 156 => 'DigitalZoom', 181 => 0xc, 226 => 0x86, 262 => 0xa, 302 => 0x204, 355 => 0x1e, 362 => 0xa, 396 => 0x204, 441 => 0x12, 442 => 0x12 },
      +	'digitalzoomon' => { 396 => 0x21b },
      +	'digitalzoomratio' => { 119 => 0xa404, 430 => 0x200, 432 => 0x21c, 483 => 'DigitalZoomRatio' },
      +	'director' => { 179 => 'WM/Director', 372 => "\xa9dir", 374 => 'director', 380 => "\xa9dir", 503 => 'director' },
      +	'directorphotography' => { 503 => 'directorPhotography' },
      +	'directory' => { 120 => 'Directory' },
       	'directoryindex' => { 7 => 0x137, 9 => 0x2dc, 11 => 0x17e, 13 => 0x238, 14 => 0x13f, 15 => 0x133, 16 => 0x1df, 17 => 0x1a7, 18 => 0x1f0, 19 => 0xcc, 20 => 0x1c7, 21 => 0x298, 22 => 0x1e7, 23 => 0x1e5, 24 => [0x27c,0x280], 25 => 0x2b6, 26 => 0x2bf, 28 => 0x1f7, 29 => 0x4ba },
       	'directoryindex2' => { 21 => 0x29c },
      -	'directorynumber' => { 202 => 0x3, 369 => 0x12 },
      -	'disableautocreation' => { 445 => 'DisableAutoCreation' },
      -	'disclaimer' => { 296 => 'Disclaimer' },
      -	'discnumber' => { 488 => 'discNumber' },
      -	'dishtype' => { 480 => 'dishType' },
      -	'disknumber' => { 358 => 'disk' },
      -	'displayallafpoints' => { 81 => 0x514 },
      +	'directorynumber' => { 208 => 0x3, 383 => 0x12 },
      +	'disableautocreation' => { 460 => 'DisableAutoCreation' },
      +	'disclaimer' => { 310 => 'Disclaimer' },
      +	'discnumber' => { 503 => 'discNumber' },
      +	'dishtype' => { 495 => 'dishType' },
      +	'disknumber' => { 372 => 'disk' },
      +	'displayallafpoints' => { 84 => 0x514 },
       	'displayaperture' => { 34 => 0x23 },
      -	'displayedunitsx' => { 356 => 0x2 },
      -	'displayedunitsy' => { 356 => 0x6 },
      -	'displayname' => { 360 => 'displayname', 477 => 'displayName' },
      -	'distance1' => { 136 => 0x28 },
      -	'distance2' => { 136 => 0x2c },
      -	'distance3' => { 136 => 0x30 },
      -	'distance4' => { 136 => 0x34 },
      -	'distortion' => { 380 => 0xa050 },
      -	'distortioncompensation' => { 439 => 0x8040 },
      -	'distortioncontrol' => { 228 => 0x10 },
      -	'distortioncorrection' => { 76 => 0x3, 100 => 0x20705, 106 => 0x67, 116 => 0x7036, 283 => 0x50b, 310 => '7.1', 331 => 0x0, 434 => 0x601, 435 => 0x5b },
      -	'distortioncorrection2' => { 287 => 0x1011 },
      -	'distortioncorrectionalreadyapplied' => { 459 => 'DistortionCorrectionAlreadyApplied' },
      -	'distortioncorrectionon' => { 100 => '0x20705.0', 106 => 0x63 },
      -	'distortioncorrectionsetting' => { 77 => 0x7, 406 => 0x2013 },
      -	'distortioncorrectionvalue' => { 76 => 0x9 },
      -	'distortioncorrparams' => { 116 => 0x7037, 415 => 0x1a23, 418 => 0x1870, 420 => 0x189c, 421 => 0x18cc, 422 => 0x17d0, 434 => 0x6ca, 435 => 0x64 },
      -	'distortioncorrparamsnumber' => { 418 => 0x1899, 420 => 0x18c5, 421 => 0x18f5, 422 => 0x17f9 },
      -	'distortioncorrparamspresent' => { 418 => 0x1898, 420 => 0x18c4, 421 => 0x18f4, 422 => 0x17f8, 424 => 0x10b, 425 => 0x10b, 434 => 0x600, 435 => 0x5a },
      -	'distortioneffect' => { 100 => 0x20709 },
      -	'distortionn' => { 310 => 0xc },
      -	'distortionparam02' => { 310 => 0x2 },
      -	'distortionparam04' => { 310 => 0x4 },
      -	'distortionparam08' => { 310 => 0x8 },
      -	'distortionparam09' => { 310 => 0x9 },
      -	'distortionparam11' => { 310 => 0xb },
      -	'distortionscale' => { 310 => 0x5 },
      -	'distributor' => { 478 => 'distributor' },
      -	'distributorproductid' => { 477 => 'distributorProductID' },
      -	'dloon' => { 100 => '0x20706.0', 106 => 0xdc },
      -	'dlosetting' => { 100 => 0x20706, 106 => 0xdd },
      -	'dlosettingapplied' => { 99 => 0x4 },
      -	'dloshootingdistance' => { 106 => 0xde },
      -	'dloversion' => { 99 => 0x5 },
      -	'dmcomment' => { 488 => 'comment' },
      -	'dmdithermatrix' => { 134 => 0xc7a },
      -	'dmdithermatrixheight' => { 134 => 0xc7c },
      -	'dmdithermatrixwidth' => { 134 => 0xc7b },
      -	'dngadobedata' => { 116 => 0xc634 },
      -	'dngbackwardversion' => { 116 => 0xc613 },
      -	'dngignoresidecars' => { 462 => 'DNGIgnoreSidecars', 464 => 'DNGIgnoreSidecars' },
      -	'dnglensinfo' => { 116 => 0xc630 },
      -	'dngprivatedata' => { 116 => 0xc634 },
      -	'dngversion' => { 116 => 0xc612 },
      -	'document' => { 296 => 'Document' },
      -	'documentancestors' => { 476 => 'DocumentAncestors' },
      -	'documenthistory' => { 128 => 0xe7 },
      -	'documentid' => { 489 => 'DocumentID' },
      -	'documentname' => { 116 => 0x10d },
      -	'documentnotes' => { 128 => 0xe6 },
      -	'doi' => { 478 => 'doi' },
      -	'dopesheet' => { 474 => 'Dopesheet' },
      -	'dopesheetlink' => { 474 => 'DopesheetLink' },
      -	'dopesheetlinklink' => { 474 => [\'DopesheetLink','DopesheetLinkLink'] },
      -	'dopesheetlinklinkqualifier' => { 474 => [\'DopesheetLink','DopesheetLinkLinkQualifier'] },
      -	'doublingmicrovolts' => { 134 => 0xc82 },
      -	'dpp' => { 457 => 'dpp' },
      -	'dr4cameramodel' => { 101 => 0x3 },
      -	'drangepriority' => { 124 => 0x1443 },
      -	'drangepriorityauto' => { 124 => 0x1444 },
      -	'drangepriorityfixed' => { 124 => 0x1445 },
      -	'drivemode' => { 110 => 0x3103, 122 => '0.1', 176 => 0x6, 179 => 0x1e, 182 => 0xe, 283 => 0x600, 341 => 0x34, 373 => 0x1002, 383 => 0x3, 393 => 0x4, 394 => 0x7e, 395 => 0x34 },
      -	'drivemode2' => { 179 => 0xa, 322 => 0x7, 404 => 0xe, 411 => 0x1 },
      -	'drivemodesetting' => { 395 => 0x4 },
      -	'drivespeed' => { 122 => '0.2' },
      -	'dspfirmwareversion' => { 341 => 0x27 },
      -	'duration' => { 64 => 0x6a, 151 => 'Duration', 165 => 'Duration', 480 => 'duration', 488 => 'duration' },
      -	'durationscale' => { 488 => [\'duration','durationScale'] },
      -	'durationvalue' => { 488 => [\'duration','durationValue'] },
      -	'dustremovaldata' => { 61 => 0x97 },
      -	'dynamicafarea' => { 266 => '1.4', 275 => '1.4' },
      -	'dynamicareaafdisplay' => { 267 => '46.1', 269 => '47.1', 270 => '47.1', 279 => '47.1', 280 => '47.1' },
      -	'dynamicrange' => { 124 => 0x1400 },
      -	'dynamicrangeexpansion' => { 341 => 0x69, 373 => 0x100e },
      -	'dynamicrangemax' => { 105 => 0x7c },
      -	'dynamicrangemin' => { 105 => 0x7a },
      -	'dynamicrangeoptimizer' => { 179 => 0x15, 406 => [0xb025,0xb04f], 414 => 0x1144, 415 => [0x1144,0x324], 416 => [0x1120,0x300], 417 => [0x119c,0x37c], 418 => [0x1178,0x328], 419 => [0x1030,0x50], 420 => [0x228,0x50], 421 => [0x228,0x50], 422 => [0x21b,0x4e] },
      -	'dynamicrangeoptimizerbracket' => { 404 => 0x2e },
      -	'dynamicrangeoptimizerlevel' => { 393 => 0x19, 394 => 0x17, 395 => 0xd, 404 => 0x79, 411 => 0x5 },
      -	'dynamicrangeoptimizermode' => { 182 => 0x15, 393 => 0x18, 394 => 0x16, 404 => [0x77,0x15] },
      -	'dynamicrangeoptimizersetting' => { 179 => 0x27, 395 => 0xc, 411 => 0x4 },
      -	'dynamicrangesetting' => { 124 => 0x1402 },
      -	'e-dialinprogram' => { 322 => '1.3' },
      -	'earliestageorloweststage' => { 115 => [\'GeologicalContext','GeologicalContextEarliestAgeOrLowestStage'] },
      -	'earliesteonorlowesteonothem' => { 115 => [\'GeologicalContext','GeologicalContextEarliestEonOrLowestEonothem'] },
      -	'earliestepochorlowestseries' => { 115 => [\'GeologicalContext','GeologicalContextEarliestEpochOrLowestSeries'] },
      -	'earliesteraorlowesterathem' => { 115 => [\'GeologicalContext','GeologicalContextEarliestEraOrLowestErathem'] },
      -	'earliestperiodorlowestsystem' => { 115 => [\'GeologicalContext','GeologicalContextEarliestPeriodOrLowestSystem'] },
      -	'earthpos' => { 442 => 'EarthPos' },
      -	'earthposaltitude' => { 442 => [\'EarthPos','EarthPosAltitude'] },
      -	'earthposlatitude' => { 442 => [\'EarthPos','EarthPosLatitude'] },
      -	'earthposlongitude' => { 442 => [\'EarthPos','EarthPosLongitude'] },
      -	'earthposrotationw' => { 442 => [\'EarthPos','EarthPosRotationW'] },
      -	'earthposrotationx' => { 442 => [\'EarthPos','EarthPosRotationX'] },
      -	'earthposrotationy' => { 442 => [\'EarthPos','EarthPosRotationY'] },
      -	'earthposrotationz' => { 442 => [\'EarthPos','EarthPosRotationZ'] },
      -	'earthpostimestamp' => { 442 => [\'EarthPos','EarthPosTimestamp'] },
      -	'easyexposurecomp' => { 281 => '6.1' },
      -	'easyexposurecompensation' => { 266 => '6.4', 267 => '6.5', 269 => '6.3', 270 => '6.3', 274 => '5.1', 275 => '4.4', 276 => '5.2', 279 => '6.3', 280 => '6.3' },
      +	'displayedunitsx' => { 370 => 0x2 },
      +	'displayedunitsy' => { 370 => 0x6 },
      +	'displayname' => { 374 => 'displayname', 492 => 'displayName' },
      +	'distance1' => { 140 => 0x28 },
      +	'distance2' => { 140 => 0x2c },
      +	'distance3' => { 140 => 0x30 },
      +	'distance4' => { 140 => 0x34 },
      +	'distortion' => { 394 => 0xa050 },
      +	'distortioncompensation' => { 454 => 0x8040 },
      +	'distortioncontrol' => { 238 => 0x10 },
      +	'distortioncorrection' => { 79 => 0x3, 103 => 0x20705, 109 => 0x67, 119 => 0x7036, 297 => 0x50b, 324 => '7.1', 345 => 0x0, 449 => 0x601, 450 => 0x5b },
      +	'distortioncorrection2' => { 301 => 0x1011 },
      +	'distortioncorrectionalreadyapplied' => { 474 => 'DistortionCorrectionAlreadyApplied' },
      +	'distortioncorrectionon' => { 103 => '0x20705.0', 109 => 0x63 },
      +	'distortioncorrectionsetting' => { 80 => 0x7, 420 => 0x2013 },
      +	'distortioncorrectionvalue' => { 79 => 0x9 },
      +	'distortioncorrparams' => { 119 => 0x7037, 429 => 0x1a23, 432 => 0x1870, 434 => 0x189c, 435 => 0x18cc, 436 => 0x17d0, 449 => 0x6ca, 450 => 0x64 },
      +	'distortioncorrparamsnumber' => { 432 => 0x1899, 434 => 0x18c5, 435 => 0x18f5, 436 => 0x17f9 },
      +	'distortioncorrparamspresent' => { 432 => 0x1898, 434 => 0x18c4, 435 => 0x18f4, 436 => 0x17f8, 438 => 0x10b, 439 => 0x10b, 449 => 0x600, 450 => 0x5a },
      +	'distortioneffect' => { 103 => 0x20709 },
      +	'distortionn' => { 324 => 0xc },
      +	'distortionparam02' => { 324 => 0x2 },
      +	'distortionparam04' => { 324 => 0x4 },
      +	'distortionparam08' => { 324 => 0x8 },
      +	'distortionparam09' => { 324 => 0x9 },
      +	'distortionparam11' => { 324 => 0xb },
      +	'distortionscale' => { 324 => 0x5 },
      +	'distributor' => { 493 => 'distributor' },
      +	'distributorproductid' => { 492 => 'distributorProductID' },
      +	'dloon' => { 103 => '0x20706.0', 109 => 0xdc },
      +	'dlosetting' => { 103 => 0x20706, 109 => 0xdd },
      +	'dlosettingapplied' => { 102 => 0x4 },
      +	'dloshootingdistance' => { 109 => 0xde },
      +	'dloversion' => { 102 => 0x5 },
      +	'dmcomment' => { 503 => 'comment' },
      +	'dmdithermatrix' => { 138 => 0xc7a },
      +	'dmdithermatrixheight' => { 138 => 0xc7c },
      +	'dmdithermatrixwidth' => { 138 => 0xc7b },
      +	'dngadobedata' => { 119 => 0xc634 },
      +	'dngbackwardversion' => { 119 => 0xc613 },
      +	'dngignoresidecars' => { 477 => 'DNGIgnoreSidecars', 479 => 'DNGIgnoreSidecars' },
      +	'dnglensinfo' => { 119 => 0xc630 },
      +	'dngprivatedata' => { 119 => 0xc634 },
      +	'dngversion' => { 119 => 0xc612 },
      +	'document' => { 310 => 'Document' },
      +	'documentancestors' => { 491 => 'DocumentAncestors' },
      +	'documenthistory' => { 131 => 0xe7 },
      +	'documentid' => { 504 => 'DocumentID' },
      +	'documentname' => { 119 => 0x10d },
      +	'documentnotes' => { 131 => 0xe6 },
      +	'doi' => { 493 => 'doi' },
      +	'dopesheet' => { 489 => 'Dopesheet' },
      +	'dopesheetlink' => { 489 => 'DopesheetLink' },
      +	'dopesheetlinklink' => { 489 => [\'DopesheetLink','DopesheetLinkLink'] },
      +	'dopesheetlinklinkqualifier' => { 489 => [\'DopesheetLink','DopesheetLinkLinkQualifier'] },
      +	'doublingmicrovolts' => { 138 => 0xc82 },
      +	'dpp' => { 472 => 'dpp' },
      +	'dr4cameramodel' => { 104 => 0x3 },
      +	'drangepriority' => { 127 => 0x1443 },
      +	'drangepriorityauto' => { 127 => 0x1444 },
      +	'drangepriorityfixed' => { 127 => 0x1445 },
      +	'drivemode' => { 113 => 0x3103, 125 => '0.1', 181 => 0x6, 184 => 0x1e, 187 => 0xe, 297 => 0x600, 355 => 0x34, 387 => 0x1002, 397 => 0x3, 407 => 0x4, 408 => 0x7e, 409 => 0x34 },
      +	'drivemode2' => { 184 => 0xa, 336 => 0x7, 418 => 0xe, 425 => 0x1 },
      +	'drivemodesetting' => { 409 => 0x4 },
      +	'drivespeed' => { 125 => '0.2' },
      +	'dspfirmwareversion' => { 355 => 0x27 },
      +	'duration' => { 67 => 0x6a, 155 => 'Duration', 169 => 'Duration', 495 => 'duration', 503 => 'duration' },
      +	'durationscale' => { 503 => [\'duration','durationScale'] },
      +	'durationvalue' => { 503 => [\'duration','durationValue'] },
      +	'dustremovaldata' => { 64 => 0x97 },
      +	'dxcropalert' => { 229 => 0x23c },
      +	'dynamicafarea' => { 279 => '1.4', 288 => '1.4' },
      +	'dynamicareaafassist' => { 295 => 0x18 },
      +	'dynamicareaafdisplay' => { 280 => '46.1', 282 => '47.1', 283 => '47.1', 292 => '47.1', 293 => '47.1' },
      +	'dynamicrange' => { 127 => 0x1400 },
      +	'dynamicrangeexpansion' => { 355 => 0x69, 387 => 0x100e },
      +	'dynamicrangemax' => { 108 => 0x7c },
      +	'dynamicrangemin' => { 108 => 0x7a },
      +	'dynamicrangeoptimizer' => { 184 => 0x15, 420 => [0xb025,0xb04f], 428 => 0x1144, 429 => [0x1144,0x324], 430 => [0x1120,0x300], 431 => [0x119c,0x37c], 432 => [0x1178,0x328], 433 => [0x1030,0x50], 434 => [0x228,0x50], 435 => [0x228,0x50], 436 => [0x21b,0x4e] },
      +	'dynamicrangeoptimizerbracket' => { 418 => 0x2e },
      +	'dynamicrangeoptimizerlevel' => { 407 => 0x19, 408 => 0x17, 409 => 0xd, 418 => 0x79, 425 => 0x5 },
      +	'dynamicrangeoptimizermode' => { 187 => 0x15, 407 => 0x18, 408 => 0x16, 418 => [0x77,0x15] },
      +	'dynamicrangeoptimizersetting' => { 184 => 0x27, 409 => 0xc, 425 => 0x4 },
      +	'dynamicrangesetting' => { 127 => 0x1402 },
      +	'e-dialinprogram' => { 336 => '1.3' },
      +	'earliestageorloweststage' => { 118 => [\'GeologicalContext','GeologicalContextEarliestAgeOrLowestStage'] },
      +	'earliesteonorlowesteonothem' => { 118 => [\'GeologicalContext','GeologicalContextEarliestEonOrLowestEonothem'] },
      +	'earliestepochorlowestseries' => { 118 => [\'GeologicalContext','GeologicalContextEarliestEpochOrLowestSeries'] },
      +	'earliesteraorlowesterathem' => { 118 => [\'GeologicalContext','GeologicalContextEarliestEraOrLowestErathem'] },
      +	'earliestperiodorlowestsystem' => { 118 => [\'GeologicalContext','GeologicalContextEarliestPeriodOrLowestSystem'] },
      +	'earthpos' => { 457 => 'EarthPos' },
      +	'earthposaltitude' => { 457 => [\'EarthPos','EarthPosAltitude'] },
      +	'earthposlatitude' => { 457 => [\'EarthPos','EarthPosLatitude'] },
      +	'earthposlongitude' => { 457 => [\'EarthPos','EarthPosLongitude'] },
      +	'earthposrotationw' => { 457 => [\'EarthPos','EarthPosRotationW'] },
      +	'earthposrotationx' => { 457 => [\'EarthPos','EarthPosRotationX'] },
      +	'earthposrotationy' => { 457 => [\'EarthPos','EarthPosRotationY'] },
      +	'earthposrotationz' => { 457 => [\'EarthPos','EarthPosRotationZ'] },
      +	'earthpostimestamp' => { 457 => [\'EarthPos','EarthPosTimestamp'] },
      +	'easyexposurecomp' => { 294 => '6.1' },
      +	'easyexposurecompensation' => { 279 => '6.4', 280 => '6.5', 282 => '6.3', 283 => '6.3', 287 => '5.1', 288 => '4.4', 289 => '5.2', 292 => '6.3', 293 => '6.3', 295 => 0x1d },
       	'easymode' => { 34 => 0xb },
      -	'edgemapslope' => { 134 => 0x930 },
      -	'edgemapx1' => { 134 => 0x931 },
      -	'edgemapx2' => { 134 => 0x932 },
      -	'edgemapx3' => { 134 => 0x934 },
      -	'edgemapx4' => { 134 => 0x935 },
      -	'edgenoisereduction' => { 260 => 0x4, 439 => 0x8028 },
      -	'edit1' => { 366 => "\xa9ed1" },
      -	'edit2' => { 366 => "\xa9ed2" },
      -	'edit3' => { 366 => "\xa9ed3" },
      -	'edit4' => { 366 => "\xa9ed4" },
      -	'edit5' => { 366 => "\xa9ed5" },
      -	'edit6' => { 366 => "\xa9ed6" },
      -	'edit7' => { 366 => "\xa9ed7" },
      -	'edit8' => { 366 => "\xa9ed8" },
      -	'edit9' => { 366 => "\xa9ed9" },
      -	'edition' => { 478 => 'edition' },
      -	'editorialupdate' => { 128 => 0x8 },
      -	'editstatus' => { 128 => 0x7, 353 => 'EditStatus', 457 => 'EditStatus' },
      -	'editversionname' => { 259 => 0x3d136244 },
      -	'effectivelv' => { 341 => 0x2d },
      -	'effectivemaxaperture' => { 212 => 0x12, 213 => 0x13, 217 => 0x14 },
      -	'eissn' => { 478 => 'eIssn' },
      -	'electricalblackcolumns' => { 134 => 0x1810 },
      -	'electronicfront-curtainshutter' => { 269 => '5.2', 270 => '5.2', 279 => '5.3', 280 => '5.2' },
      -	'electronicfrontcurtainshutter' => { 406 => 0x201a },
      -	'elevation' => { 161 => 'Elevation' },
      -	'email' => { 153 => 'EMail' },
      -	'embargodate' => { 481 => 'embargoDate' },
      -	'embdencrightsexpr' => { 474 => 'EmbdEncRightsExpr' },
      -	'embeddedencodedrightsexpr' => { 474 => [\'EmbdEncRightsExpr','EmbdEncRightsExprEncRightsExpr'] },
      -	'embeddedencodedrightsexprlangid' => { 474 => [\'EmbdEncRightsExpr','EmbdEncRightsExprRightsExprLangId'] },
      -	'embeddedencodedrightsexprtype' => { 474 => [\'EmbdEncRightsExpr','EmbdEncRightsExprRightsExprEncType'] },
      -	'embeddedxmpdigest' => { 476 => 'EmbeddedXMPDigest' },
      -	'emissivity' => { 118 => 0x3 },
      -	'enablechromanoisereduction' => { 134 => 0xe6e },
      -	'enablesharpening' => { 134 => 0x92e },
      -	'encodedby' => { 358 => "\xa9enc" },
      -	'encodedwith' => { 360 => 'Encoded_With' },
      -	'encoder' => { 358 => "\xa9too", 366 => "\xa9too" },
      -	'encoderid' => { 366 => "\xa9enc" },
      -	'encryptionkey' => { 380 => 0xa020 },
      -	'endingpage' => { 478 => 'endingPage' },
      -	'enduser' => { 293 => 'EndUser' },
      -	'enduserid' => { 293 => [\'EndUser','EndUserEndUserID'] },
      -	'endusername' => { 293 => [\'EndUser','EndUserEndUserName'] },
      -	'engineer' => { 488 => 'engineer' },
      -	'enhancedarktones' => { 252 => 0x8 },
      -	'enhancement' => { 109 => 0x16, 110 => 0x3016 },
      -	'enhanceparams' => { 116 => 0xc7ee },
      -	'enhancer' => { 287 => 0x300 },
      -	'enhancervalues' => { 287 => 0x301 },
      -	'envelopenumber' => { 129 => 0x28 },
      -	'envelopepriority' => { 129 => 0x3c },
      -	'enveloperecordversion' => { 129 => 0x0 },
      -	'episode' => { 474 => 'Episode' },
      -	'episodeglobaluniqueid' => { 358 => 'egid' },
      -	'episodeidentifier' => { 474 => [\'Episode','EpisodeIdentifier'] },
      -	'episodename' => { 474 => [\'Episode','EpisodeName'] },
      -	'episodenumber' => { 474 => [\'Episode','EpisodeNumber'] },
      -	'epsonimageheight' => { 288 => 0x20c },
      -	'epsonimagewidth' => { 288 => 0x20b },
      -	'epsonsoftware' => { 288 => 0x20d },
      -	'equipmentinstitution' => { 441 => 'EquipmentInstitution' },
      -	'equipmentmanufacturer' => { 441 => 'EquipmentManufacturer' },
      -	'equipmentversion' => { 284 => 0x0 },
      -	'ettlii' => { 81 => 0x304, 82 => 0xd, 83 => 0xe, 84 => 0x7, 85 => 0x7, 86 => 0xe },
      -	'event' => { 443 => 'Event', 455 => 'Event', 474 => 'Event', 478 => 'event' },
      -	'eventalias' => { 477 => 'eventAlias' },
      -	'eventdate' => { 115 => [\'Event','EventEventDate'] },
      -	'eventday' => { 115 => [\'Event','EventDay'] },
      -	'eventearliestdate' => { 115 => [\'Event','EventEarliestDate'] },
      -	'eventend' => { 477 => 'eventEnd' },
      -	'eventenddayofyear' => { 115 => [\'Event','EventEndDayOfYear'] },
      -	'eventfieldnotes' => { 115 => [\'Event','EventFieldNotes'] },
      -	'eventfieldnumber' => { 115 => [\'Event','EventFieldNumber'] },
      -	'eventhabitat' => { 115 => [\'Event','EventHabitat'] },
      -	'eventid' => { 115 => [\'Event','EventEventID'] },
      -	'eventlatestdate' => { 115 => [\'Event','EventLatestDate'] },
      -	'eventmonth' => { 115 => [\'Event','EventMonth'] },
      -	'eventnumber' => { 367 => 0x9, 368 => 0x37, 369 => 0x3a },
      -	'eventparenteventid' => { 115 => [\'Event','EventParentEventID'] },
      -	'eventremarks' => { 115 => [\'Event','EventEventRemarks'] },
      -	'eventsamplesizeunit' => { 115 => [\'Event','EventSampleSizeUnit'] },
      -	'eventsamplesizevalue' => { 115 => [\'Event','EventSampleSizeValue'] },
      -	'eventsamplingeffort' => { 115 => [\'Event','EventSamplingEffort'] },
      -	'eventsamplingprotocol' => { 115 => [\'Event','EventSamplingProtocol'] },
      -	'eventstart' => { 477 => 'eventStart' },
      -	'eventstartdayofyear' => { 115 => [\'Event','EventStartDayOfYear'] },
      -	'eventsubtype' => { 477 => 'eventSubtype' },
      -	'eventtime' => { 115 => [\'Event','EventEventTime'] },
      -	'eventtype' => { 477 => 'eventType' },
      -	'eventverbatimeventdate' => { 115 => [\'Event','EventVerbatimEventDate'] },
      -	'eventyear' => { 115 => [\'Event','EventYear'] },
      -	'evsteps' => { 322 => '1.2', 324 => 0x0 },
      -	'evstepsize' => { 271 => '5.1', 272 => '6.1', 273 => '6.1', 277 => '0.7' },
      -	'exclusivecoverage' => { 452 => 'ExclusiveCoverage' },
      -	'exclusivityenddate' => { 481 => 'exclusivityEndDate' },
      -	'excursiontolerance' => { 130 => 0x82 },
      -	'exif' => { 117 => 'EXIF' },
      -	'exifbyteorder' => { 117 => 'ExifByteOrder' },
      -	'exifcamerainfo' => { 128 => 0xe8 },
      -	'exifimageheight' => { 116 => 0xa003, 468 => 'PixelYDimension' },
      -	'exifimagewidth' => { 116 => 0xa002, 468 => 'PixelXDimension' },
      -	'exifunicodebyteorder' => { 117 => 'ExifUnicodeByteOrder' },
      -	'exifversion' => { 116 => 0x9000, 468 => 'ExifVersion' },
      -	'exitpupilposition' => { 212 => 0x4, 213 => 0x4, 217 => 0x4 },
      -	'expirationdate' => { 128 => 0x25, 481 => 'expirationDate' },
      -	'expirationtime' => { 128 => 0x26 },
      -	'exposure' => { 116 => 0xfe51, 462 => 'Exposure', 464 => 'Exposure' },
      -	'exposure2012' => { 462 => 'Exposure2012', 464 => 'Exposure2012' },
      -	'exposureadj' => { 257 => 0x0 },
      -	'exposureadj2' => { 257 => 0x12 },
      -	'exposureadjust' => { 383 => 0xc },
      -	'exposurebracketingindicatorlast' => { 179 => 0x52 },
      -	'exposurebracketshotnumber' => { 182 => 0x2d, 404 => 0x2f },
      -	'exposurebracketstepsize' => { 322 => 0x8 },
      -	'exposurebracketvalue' => { 219 => 0x19 },
      -	'exposurecompautocancel' => { 81 => 0x113 },
      -	'exposurecompensation' => { 74 => 0x6, 90 => 0x0, 116 => 0x9204, 136 => 0x24, 152 => 'ExposureComp', 172 => 'ExposureCompensation', 176 => 0xd, 177 => 0x53, 178 => 0x1e, 182 => 0x49c0, 288 => 0x1006, 341 => 0x16, 350 => 0x402, 380 => 0xa013, 383 => [0xc,0x35,0x4d], 414 => 0x114c, 415 => 0x114c, 416 => 0x1128, 418 => 0x1180, 419 => 0x1038, 420 => 0x230, 421 => 0x230, 422 => 0x223, 468 => 'ExposureBiasValue' },
      -	'exposurecompensation2' => { 411 => [0x24,0x26,0x2a] },
      -	'exposurecompensationmode' => { 179 => 0x47, 182 => 0x2a },
      -	'exposurecompensationset' => { 393 => 0x3, 394 => 0x3, 395 => 0x3, 411 => 0x1e },
      -	'exposurecompensationsetting' => { 179 => 0x1 },
      -	'exposurecompstepsize' => { 266 => '6.3', 267 => '7.3', 269 => '7.3', 270 => '7.3', 275 => '4.3', 279 => '7.3', 280 => '7.3' },
      -	'exposurecontrolstep' => { 274 => '6.1', 276 => '6.1' },
      -	'exposurecontrolstepsize' => { 266 => '6.2', 267 => '7.1', 269 => '7.1', 270 => '7.1', 275 => '4.2', 279 => '7.1', 280 => '7.1', 281 => '7.1' },
      -	'exposurecount' => { 124 => 0x1032 },
      -	'exposuredelaymode' => { 266 => '10.1', 267 => '11.1', 269 => '11.1', 270 => '11.1', 271 => '9.1', 272 => '10.1', 273 => '10.1', 275 => '10.4', 276 => '10.1', 277 => '6.4', 279 => '11.1', 280 => '11.1', 281 => '11.2' },
      -	'exposuredifference' => { 219 => 0xe },
      -	'exposuregaincustom' => { 134 => 0x89c },
      -	'exposuregaindaylight' => { 134 => 0x898 },
      -	'exposuregainflash' => { 134 => 0x89b },
      -	'exposuregainfluorescent' => { 134 => 0x89a },
      -	'exposuregaintungsten' => { 134 => 0x899 },
      -	'exposureindex' => { 116 => 0xa215, 468 => 'ExposureIndex' },
      -	'exposureindicator' => { 179 => 0x50 },
      -	'exposurelevelincrements' => { 79 => 0x6, 80 => 0x6, 81 => 0x101, 82 => 0x5, 83 => 0x6, 84 => 0x5, 85 => 0x5, 86 => 0x6, 87 => 0x4, 393 => 0x58, 394 => 0x58 },
      -	'exposurelockused' => { 450 => 'ExposureLockUsed' },
      -	'exposuremode' => { 116 => 0xa402, 152 => 'ExposureMode', 176 => 0x1, 177 => 0xa, 178 => 0x0, 179 => 0x0, 182 => 0x34, 283 => 0x200, 303 => 0x40d, 383 => 0x8, 406 => 0xb041, 468 => 'ExposureMode' },
      -	'exposuremodeinmanual' => { 81 => 0x10b },
      -	'exposureprogram' => { 116 => 0x8822, 373 => 0x1001, 386 => [0x17e,0x43], 393 => 0x3c, 394 => 0x3c, 395 => 0x5, 399 => 0x14, 404 => 0x3f, 411 => 0x2, 414 => 0x1175, 415 => 0x1179, 416 => 0x1155, 417 => 0x11d1, 418 => 0x11ad, 419 => 0x1065, 420 => 0x25d, 421 => 0x25d, 422 => 0x24c, 431 => 0xb, 432 => 0xc, 433 => 0xb, 435 => 0x48, 468 => 'ExposureProgram' },
      -	'exposureshift' => { 283 => 0x203 },
      -	'exposurestandardadjustment' => { 406 => 0x202d },
      -	'exposuretime' => { 7 => 0x4, 8 => 0x4, 9 => 0x4, 10 => 0x4, 11 => 0x4, 12 => 0x4, 13 => 0x4, 14 => 0x4, 15 => 0x4, 16 => 0x4, 17 => 0x4, 18 => 0x4, 19 => 0x4, 20 => 0x4, 21 => 0x4, 22 => 0x4, 23 => 0x4, 24 => 0x4, 25 => 0x4, 26 => 0x4, 27 => 0x4, 28 => 0x4, 29 => 0x4, 30 => 0x6, 31 => 0x7, 74 => 0x16, 116 => 0x829a, 133 => 0xfd05, 136 => 0x20, 138 => 0xfa24, 140 => 0xf104, 143 => 0x12, 145 => 0x38, 147 => 0x14, 148 => 0x10, 150 => 0x10, 152 => 'ExposureTime', 176 => 0x9, 177 => 0x35, 178 => 0x48, 179 => 0x8, 182 => 0x49b8, 341 => 0x12, 380 => 0xa018, 383 => [0x32,0x4a], 393 => 0x0, 394 => 0x0, 411 => [0x21,0x23,0x27], 435 => 0x10, 468 => 'ExposureTime' },
      -	'exposuretime2' => { 383 => [0x33,0x4b] },
      -	'exposuretuning' => { 219 => 0x1c },
      -	'exposurevalue' => { 134 => 0x3 },
      -	'exposurewarning' => { 124 => 0x1302 },
      -	'exrauto' => { 124 => 0x1033 },
      -	'exrmode' => { 124 => 0x1034 },
      -	'extendedwbdetect' => { 283 => 0x902 },
      -	'extender' => { 284 => 0x301 },
      -	'extenderfirmwareversion' => { 284 => 0x304 },
      -	'extendermagnification' => { 154 => 'Magnification' },
      -	'extendermake' => { 154 => 'Make' },
      -	'extendermodel' => { 154 => 'Model', 284 => 0x303 },
      -	'extenderserialnumber' => { 154 => 'SerialNumber', 284 => 0x302 },
      -	'extenderstatus' => { 339 => 0x3 },
      -	'externalflash' => { 286 => 0x1201 },
      -	'externalflashae1' => { 288 => 0x101f },
      -	'externalflashae1_0' => { 288 => 0x101b },
      -	'externalflashae2' => { 288 => 0x1020 },
      -	'externalflashae2_0' => { 288 => 0x101c },
      -	'externalflashbounce' => { 286 => 0x1204, 288 => 0x1026, 329 => 0x1a },
      -	'externalflashcompensation' => { 205 => 0x1b },
      -	'externalflashexposurecomp' => { 219 => 0x17, 329 => 0x19 },
      -	'externalflashfirmware' => { 203 => 0x6, 204 => 0x6, 205 => 0x6, 206 => 0x6, 207 => 0x6 },
      -	'externalflashflags' => { 203 => 0x8, 204 => 0x8, 205 => 0x8, 206 => 0x8 },
      -	'externalflashguidenumber' => { 286 => 0x1203, 329 => '24.1' },
      -	'externalflashgvalue' => { 288 => 0x1025 },
      -	'externalflashmode' => { 288 => 0x1028, 329 => 0x2 },
      -	'externalflashreadystate' => { 207 => '9.1' },
      -	'externalflashstatus' => { 207 => '8.2' },
      -	'externalflashzoom' => { 286 => 0x1205, 288 => 0x1027 },
      -	'externalflashzoomoverride' => { 207 => '8.1' },
      -	'externalmetadatalink' => { 474 => 'ExternalMetadataLink' },
      -	'externalsensorbrightnessvalue' => { 301 => 0x311, 304 => 0x311, 305 => 0x311, 308 => 0x3408 },
      -	'extrainfoversion' => { 397 => 0x1a },
      -	'eyestartaf' => { 179 => 0x40 },
      -	'fac100per' => { 134 => 0xe94 },
      -	'fac170per' => { 134 => 0xe93 },
      -	'fac18per' => { 134 => 0xe92 },
      -	'face10position' => { 107 => 0x3f4, 108 => 0x1ec, 201 => 0x28, 326 => 0x12 },
      -	'face10size' => { 327 => 0x12 },
      -	'face11position' => { 201 => 0x2c, 326 => 0x14 },
      -	'face11size' => { 327 => 0x14 },
      -	'face12position' => { 201 => 0x30, 326 => 0x16 },
      -	'face12size' => { 327 => 0x16 },
      -	'face13position' => { 326 => 0x18 },
      -	'face13size' => { 327 => 0x18 },
      -	'face14position' => { 326 => 0x1a },
      -	'face14size' => { 327 => 0x1a },
      -	'face15position' => { 326 => 0x1c },
      -	'face15size' => { 327 => 0x1c },
      -	'face16position' => { 326 => 0x1e },
      -	'face16size' => { 327 => 0x1e },
      -	'face17position' => { 326 => 0x20 },
      -	'face17size' => { 327 => 0x20 },
      -	'face18position' => { 326 => 0x22 },
      -	'face18size' => { 327 => 0x22 },
      -	'face19position' => { 326 => 0x24 },
      -	'face19size' => { 327 => 0x24 },
      -	'face1position' => { 52 => 0x8, 107 => 0xd, 108 => 0x18, 201 => 0x4, 298 => 0x1, 326 => 0x0, 370 => 0xbc, 400 => 0x1, 401 => 0x0, 402 => 0x0, 403 => 0x5b },
      -	'face1size' => { 327 => 0x0 },
      -	'face20position' => { 326 => 0x26 },
      -	'face20size' => { 327 => 0x26 },
      -	'face21position' => { 326 => 0x28 },
      -	'face21size' => { 327 => 0x28 },
      -	'face22position' => { 326 => 0x2a },
      -	'face22size' => { 327 => 0x2a },
      -	'face23position' => { 326 => 0x2c },
      -	'face23size' => { 327 => 0x2c },
      -	'face24position' => { 326 => 0x2e },
      -	'face24size' => { 327 => 0x2e },
      -	'face25position' => { 326 => 0x30 },
      -	'face25size' => { 327 => 0x30 },
      -	'face26position' => { 326 => 0x32 },
      -	'face26size' => { 327 => 0x32 },
      -	'face27position' => { 326 => 0x34 },
      -	'face27size' => { 327 => 0x34 },
      -	'face28position' => { 326 => 0x36 },
      -	'face28size' => { 327 => 0x36 },
      -	'face29position' => { 326 => 0x38 },
      -	'face29size' => { 327 => 0x38 },
      -	'face2position' => { 52 => 0xa, 107 => 0x7c, 108 => 0x4c, 201 => 0x8, 298 => 0x5, 326 => 0x2, 370 => 0xc8, 400 => 0x6, 401 => 0x20, 402 => 0x25, 403 => 0x65 },
      -	'face2size' => { 327 => 0x2 },
      -	'face30position' => { 326 => 0x3a },
      -	'face30size' => { 327 => 0x3a },
      -	'face31position' => { 326 => 0x3c },
      -	'face31size' => { 327 => 0x3c },
      -	'face32position' => { 326 => 0x3e },
      -	'face32size' => { 327 => 0x3e },
      -	'face3position' => { 52 => 0xc, 107 => 0xeb, 108 => 0x80, 201 => 0xc, 298 => 0x9, 326 => 0x4, 370 => 0xd4, 400 => 0xb, 401 => 0x40, 402 => 0x4a, 403 => 0x6f },
      -	'face3size' => { 327 => 0x4 },
      -	'face4position' => { 52 => 0xe, 107 => 0x15a, 108 => 0xb4, 201 => 0x10, 298 => 0xd, 326 => 0x6, 370 => 0xe0, 400 => 0x10, 401 => 0x60, 402 => 0x6f, 403 => 0x79 },
      -	'face4size' => { 327 => 0x6 },
      -	'face5position' => { 52 => 0x10, 107 => 0x1c9, 108 => 0xe8, 201 => 0x14, 298 => 0x11, 326 => 0x8, 370 => 0xec, 400 => 0x15, 401 => 0x80, 402 => 0x94 },
      -	'face5size' => { 327 => 0x8 },
      -	'face6position' => { 52 => 0x12, 107 => 0x238, 108 => 0x11c, 201 => 0x18, 326 => 0xa, 370 => 0xf8, 400 => 0x1a, 401 => 0xa0, 402 => 0xb9 },
      -	'face6size' => { 327 => 0xa },
      -	'face7position' => { 52 => 0x14, 107 => 0x2a7, 108 => 0x150, 201 => 0x1c, 326 => 0xc, 370 => 0x104, 400 => 0x1f, 401 => 0xc0, 402 => 0xde },
      -	'face7size' => { 327 => 0xc },
      -	'face8position' => { 52 => 0x16, 107 => 0x316, 108 => 0x184, 201 => 0x20, 326 => 0xe, 370 => 0x110, 400 => 0x24, 401 => 0xe0, 402 => 0x103 },
      -	'face8size' => { 327 => 0xe },
      -	'face9position' => { 52 => 0x18, 107 => 0x385, 108 => 0x1b8, 201 => 0x24, 326 => 0x10 },
      -	'face9size' => { 327 => 0x10 },
      -	'facebalanceorigi' => { 456 => 'FaceBalanceOrigI' },
      -	'facebalanceorigq' => { 456 => 'FaceBalanceOrigQ' },
      -	'facebalancestrength' => { 456 => 'FaceBalanceStrength' },
      -	'facebalancewarmth' => { 456 => 'FaceBalanceWarmth' },
      -	'facedetect' => { 341 => 0x76, 380 => 0x100 },
      -	'facedetectarea' => { 287 => 0x1201 },
      -	'facedetectframecrop' => { 287 => 0x1207 },
      -	'facedetectframesize' => { 52 => 0x3, 107 => 0x1, 108 => 0x4, 201 => 0x1, 287 => 0x1203, 341 => 0x77, 370 => 0xb6 },
      -	'facedetection' => { 395 => 0x30, 411 => 0x19 },
      -	'faceelementpositions' => { 124 => 0x4203 },
      -	'faceelementselected' => { 124 => 0x4005 },
      -	'faceelementtypes' => { 124 => 0x4201 },
      -	'faceid' => { 458 => 'FaceID' },
      -	'faceinfounknown' => { 110 => 0x2089 },
      -	'facename' => { 380 => 0x123 },
      -	'faceorientation' => { 108 => 0x8 },
      -	'faceposition' => { 325 => 0x2, 381 => 0x4 },
      -	'facepositions' => { 124 => 0x4103 },
      -	'facerecognition' => { 380 => 0x120 },
      -	'facesdetected' => { 52 => 0x2, 53 => 0x2, 54 => 0x3, 107 => 0x0, 108 => 0x2, 110 => 0x211c, 124 => 0x4100, 201 => 0x3, 287 => 0x1200, 306 => 0x3f, 325 => 0x0, 370 => 0xb5, 381 => 0x0, 400 => 0x0, 403 => 0x3, 413 => 0x30 },
      -	'facesrecognized' => { 299 => 0x0 },
      -	'facewidth' => { 53 => 0x1 },
      -	'faithfuloutputhighlightpoint' => { 106 => 0x38 },
      -	'faithfuloutputshadowpoint' => { 106 => 0x39 },
      -	'faithfulrawcolortone' => { 106 => 0x31 },
      -	'faithfulrawcontrast' => { 106 => 0x33 },
      -	'faithfulrawhighlight' => { 106 => 0x79 },
      -	'faithfulrawhighlightpoint' => { 106 => 0x36 },
      -	'faithfulrawlinear' => { 106 => 0x34 },
      -	'faithfulrawsaturation' => { 106 => 0x32 },
      -	'faithfulrawshadow' => { 106 => 0x82 },
      -	'faithfulrawshadowpoint' => { 106 => 0x37 },
      -	'faithfulrawsharpness' => { 106 => 0x35 },
      -	'faithfulunsharpmaskfineness' => { 106 => 0xac },
      -	'faithfulunsharpmaskstrength' => { 106 => 0xaa },
      -	'faithfulunsharpmaskthreshold' => { 106 => 0xae },
      -	'far' => { 447 => 'Far' },
      -	'fastresetlinetime' => { 134 => 0x1860 },
      -	'feedidentifier' => { 474 => 'FeedIdentifier' },
      -	'femicroadjustment' => { 81 => 0x111 },
      -	'ffid' => { 466 => 'ffid' },
      -	'field' => { 477 => 'field' },
      -	'fieldcount' => { 288 => 0x103f },
      -	'fieldofview' => { 366 => "FOV\x00" },
      -	'fifoenonepixeldelay' => { 134 => 0x1901 },
      -	'filecreatedate' => { 117 => 'FileCreateDate' },
      -	'filedatarate' => { 488 => 'fileDataRate' },
      -	'fileformat' => { 92 => 0x0, 129 => 0x14, 383 => [0x22,0x26], 406 => 0xb000 },
      -	'filegroupid' => { 117 => 'FileGroupID' },
      -	'fileindex' => { 7 => 0x143, 9 => 0x2d0, 11 => 0x172, 13 => 0x22c, 14 => 0x133, 15 => 0x13f, 16 => 0x1d3, 17 => 0x19b, 18 => 0x1e4, 19 => 0xd0, 20 => 0x1bb, 21 => 0x28c, 22 => 0x1db, 23 => 0x1d9, 24 => [0x270,0x274], 25 => 0x2aa, 26 => 0x2b3, 28 => 0x1eb, 29 => 0x4ae, 307 => 0x0 },
      +	'edgemapslope' => { 138 => 0x930 },
      +	'edgemapx1' => { 138 => 0x931 },
      +	'edgemapx2' => { 138 => 0x932 },
      +	'edgemapx3' => { 138 => 0x934 },
      +	'edgemapx4' => { 138 => 0x935 },
      +	'edgenoisereduction' => { 273 => 0x4, 454 => 0x8028 },
      +	'edit1' => { 380 => "\xa9ed1" },
      +	'edit2' => { 380 => "\xa9ed2" },
      +	'edit3' => { 380 => "\xa9ed3" },
      +	'edit4' => { 380 => "\xa9ed4" },
      +	'edit5' => { 380 => "\xa9ed5" },
      +	'edit6' => { 380 => "\xa9ed6" },
      +	'edit7' => { 380 => "\xa9ed7" },
      +	'edit8' => { 380 => "\xa9ed8" },
      +	'edit9' => { 380 => "\xa9ed9" },
      +	'edition' => { 493 => 'edition' },
      +	'editorialupdate' => { 131 => 0x8 },
      +	'editstatus' => { 131 => 0x7, 367 => 'EditStatus', 472 => 'EditStatus' },
      +	'editversionname' => { 272 => 0x3d136244 },
      +	'effectivelv' => { 355 => 0x2d },
      +	'effectivemaxaperture' => { 219 => 0x12, 220 => 0x13, 224 => 0x14 },
      +	'eissn' => { 493 => 'eIssn' },
      +	'electricalblackcolumns' => { 138 => 0x1810 },
      +	'electronicfront-curtainshutter' => { 282 => '5.2', 283 => '5.2', 292 => '5.3', 293 => '5.2' },
      +	'electronicfrontcurtainshutter' => { 420 => 0x201a },
      +	'elevation' => { 165 => 'Elevation' },
      +	'email' => { 157 => 'EMail' },
      +	'embargodate' => { 496 => 'embargoDate' },
      +	'embdencrightsexpr' => { 489 => 'EmbdEncRightsExpr' },
      +	'embeddedencodedrightsexpr' => { 489 => [\'EmbdEncRightsExpr','EmbdEncRightsExprEncRightsExpr'] },
      +	'embeddedencodedrightsexprlangid' => { 489 => [\'EmbdEncRightsExpr','EmbdEncRightsExprRightsExprLangId'] },
      +	'embeddedencodedrightsexprtype' => { 489 => [\'EmbdEncRightsExpr','EmbdEncRightsExprRightsExprEncType'] },
      +	'embeddedxmpdigest' => { 491 => 'EmbeddedXMPDigest' },
      +	'emissivity' => { 121 => 0x3 },
      +	'emptyslotrelease' => { 229 => 0x625 },
      +	'enablechromanoisereduction' => { 138 => 0xe6e },
      +	'enablesharpening' => { 138 => 0x92e },
      +	'encodedby' => { 179 => 'WM/EncodedBy', 372 => "\xa9enc" },
      +	'encodedwith' => { 374 => 'Encoded_With' },
      +	'encoder' => { 372 => "\xa9too", 380 => "\xa9too" },
      +	'encoderid' => { 380 => "\xa9enc" },
      +	'encodingtime' => { 179 => 'WM/EncodingTime' },
      +	'encryptionkey' => { 394 => 0xa020 },
      +	'endingpage' => { 493 => 'endingPage' },
      +	'enduser' => { 307 => 'EndUser' },
      +	'enduserid' => { 307 => [\'EndUser','EndUserEndUserID'] },
      +	'endusername' => { 307 => [\'EndUser','EndUserEndUserName'] },
      +	'energysavingmode' => { 229 => 0x648 },
      +	'engineer' => { 503 => 'engineer' },
      +	'enhancedarktones' => { 265 => 0x8 },
      +	'enhancement' => { 112 => 0x16, 113 => 0x3016 },
      +	'enhanceparams' => { 119 => 0xc7ee },
      +	'enhancer' => { 301 => 0x300 },
      +	'enhancervalues' => { 301 => 0x301 },
      +	'envelopenumber' => { 132 => 0x28 },
      +	'envelopepriority' => { 132 => 0x3c },
      +	'enveloperecordversion' => { 132 => 0x0 },
      +	'episode' => { 489 => 'Episode' },
      +	'episodeglobaluniqueid' => { 372 => 'egid' },
      +	'episodeidentifier' => { 489 => [\'Episode','EpisodeIdentifier'] },
      +	'episodename' => { 489 => [\'Episode','EpisodeName'] },
      +	'episodenumber' => { 489 => [\'Episode','EpisodeNumber'] },
      +	'epsonimageheight' => { 302 => 0x20c },
      +	'epsonimagewidth' => { 302 => 0x20b },
      +	'epsonsoftware' => { 302 => 0x20d },
      +	'equipmentinstitution' => { 456 => 'EquipmentInstitution' },
      +	'equipmentmanufacturer' => { 456 => 'EquipmentManufacturer' },
      +	'equipmentversion' => { 298 => 0x0 },
      +	'ettlii' => { 84 => 0x304, 85 => 0xd, 86 => 0xe, 87 => 0x7, 88 => 0x7, 89 => 0xe },
      +	'event' => { 458 => 'Event', 470 => 'Event', 489 => 'Event', 493 => 'event' },
      +	'eventalias' => { 492 => 'eventAlias' },
      +	'eventdate' => { 118 => [\'Event','EventEventDate'] },
      +	'eventday' => { 118 => [\'Event','EventDay'] },
      +	'eventearliestdate' => { 118 => [\'Event','EventEarliestDate'] },
      +	'eventend' => { 492 => 'eventEnd' },
      +	'eventenddayofyear' => { 118 => [\'Event','EventEndDayOfYear'] },
      +	'eventfieldnotes' => { 118 => [\'Event','EventFieldNotes'] },
      +	'eventfieldnumber' => { 118 => [\'Event','EventFieldNumber'] },
      +	'eventhabitat' => { 118 => [\'Event','EventHabitat'] },
      +	'eventid' => { 118 => [\'Event','EventEventID'], 489 => 'EventId' },
      +	'eventlatestdate' => { 118 => [\'Event','EventLatestDate'] },
      +	'eventmonth' => { 118 => [\'Event','EventMonth'] },
      +	'eventnumber' => { 381 => 0x9, 382 => 0x37, 383 => 0x3a },
      +	'eventparenteventid' => { 118 => [\'Event','EventParentEventID'] },
      +	'eventremarks' => { 118 => [\'Event','EventEventRemarks'] },
      +	'eventsamplesizeunit' => { 118 => [\'Event','EventSampleSizeUnit'] },
      +	'eventsamplesizevalue' => { 118 => [\'Event','EventSampleSizeValue'] },
      +	'eventsamplingeffort' => { 118 => [\'Event','EventSamplingEffort'] },
      +	'eventsamplingprotocol' => { 118 => [\'Event','EventSamplingProtocol'] },
      +	'eventstart' => { 492 => 'eventStart' },
      +	'eventstartdayofyear' => { 118 => [\'Event','EventStartDayOfYear'] },
      +	'eventsubtype' => { 492 => 'eventSubtype' },
      +	'eventtime' => { 118 => [\'Event','EventEventTime'] },
      +	'eventtype' => { 492 => 'eventType' },
      +	'eventverbatimeventdate' => { 118 => [\'Event','EventVerbatimEventDate'] },
      +	'eventyear' => { 118 => [\'Event','EventYear'] },
      +	'evfgrid' => { 295 => 0x165 },
      +	'evfimageframe' => { 295 => 0x164 },
      +	'evfreleaseindicator' => { 295 => 0x24f },
      +	'evfwarmdisplaybrightness' => { 295 => 0x24d },
      +	'evfwarmdisplaymode' => { 295 => 0x24b },
      +	'evsteps' => { 336 => '1.2', 338 => 0x0 },
      +	'evstepsize' => { 284 => '5.1', 285 => '6.1', 286 => '6.1', 290 => '0.7' },
      +	'exclusivecoverage' => { 467 => 'ExclusiveCoverage' },
      +	'exclusivityenddate' => { 496 => 'exclusivityEndDate' },
      +	'excursiontolerance' => { 133 => 0x82 },
      +	'executiveproducer' => { 372 => "\xa9xpd" },
      +	'exif' => { 120 => 'EXIF' },
      +	'exifbyteorder' => { 120 => 'ExifByteOrder' },
      +	'exifcamerainfo' => { 131 => 0xe8 },
      +	'exifimageheight' => { 119 => 0xa003, 483 => 'PixelYDimension' },
      +	'exifimagewidth' => { 119 => 0xa002, 483 => 'PixelXDimension' },
      +	'exifunicodebyteorder' => { 120 => 'ExifUnicodeByteOrder' },
      +	'exifversion' => { 119 => 0x9000, 483 => 'ExifVersion' },
      +	'exitpupilposition' => { 219 => 0x4, 220 => 0x4, 224 => 0x4 },
      +	'expirationdate' => { 131 => 0x25, 496 => 'expirationDate' },
      +	'expirationtime' => { 131 => 0x26 },
      +	'exposure' => { 119 => 0xfe51, 477 => 'Exposure', 479 => 'Exposure' },
      +	'exposure2012' => { 477 => 'Exposure2012', 479 => 'Exposure2012' },
      +	'exposureadj' => { 270 => 0x0 },
      +	'exposureadj2' => { 270 => 0x12 },
      +	'exposureadjust' => { 397 => 0xc },
      +	'exposurebracketingindicatorlast' => { 184 => 0x52 },
      +	'exposurebracketshotnumber' => { 187 => 0x2d, 418 => 0x2f },
      +	'exposurebracketstepsize' => { 336 => 0x8 },
      +	'exposurebracketvalue' => { 226 => 0x19 },
      +	'exposurecompautocancel' => { 84 => 0x113 },
      +	'exposurecompensation' => { 77 => 0x6, 93 => 0x0, 119 => 0x9204, 140 => 0x24, 156 => 'ExposureComp', 176 => 'ExposureCompensation', 181 => 0xd, 182 => 0x53, 183 => 0x1e, 187 => 0x49c0, 302 => 0x1006, 355 => 0x16, 364 => 0x402, 394 => 0xa013, 397 => [0xc,0x35,0x4d], 428 => 0x114c, 429 => 0x114c, 430 => 0x1128, 432 => 0x1180, 433 => 0x1038, 434 => 0x230, 435 => 0x230, 436 => 0x223, 483 => 'ExposureBiasValue' },
      +	'exposurecompensation2' => { 425 => [0x24,0x26,0x2a] },
      +	'exposurecompensationmode' => { 184 => 0x47, 187 => 0x2a },
      +	'exposurecompensationset' => { 407 => 0x3, 408 => 0x3, 409 => 0x3, 425 => 0x1e },
      +	'exposurecompensationsetting' => { 184 => 0x1 },
      +	'exposurecompstepsize' => { 279 => '6.3', 280 => '7.3', 282 => '7.3', 283 => '7.3', 288 => '4.3', 292 => '7.3', 293 => '7.3' },
      +	'exposurecontrolstep' => { 287 => '6.1', 289 => '6.1' },
      +	'exposurecontrolstepsize' => { 279 => '6.2', 280 => '7.1', 282 => '7.1', 283 => '7.1', 288 => '4.2', 292 => '7.1', 293 => '7.1', 294 => '7.1', 295 => 0x1b },
      +	'exposurecount' => { 127 => 0x1032 },
      +	'exposuredelaymode' => { 279 => '10.1', 280 => '11.1', 282 => '11.1', 283 => '11.1', 284 => '9.1', 285 => '10.1', 286 => '10.1', 288 => '10.4', 289 => '10.1', 290 => '6.4', 292 => '11.1', 293 => '11.1', 294 => '11.2' },
      +	'exposuredifference' => { 226 => 0xe },
      +	'exposuregaincustom' => { 138 => 0x89c },
      +	'exposuregaindaylight' => { 138 => 0x898 },
      +	'exposuregainflash' => { 138 => 0x89b },
      +	'exposuregainfluorescent' => { 138 => 0x89a },
      +	'exposuregaintungsten' => { 138 => 0x899 },
      +	'exposureindex' => { 119 => 0xa215, 483 => 'ExposureIndex' },
      +	'exposureindicator' => { 184 => 0x50 },
      +	'exposurelevelincrements' => { 82 => 0x6, 83 => 0x6, 84 => 0x101, 85 => 0x5, 86 => 0x6, 87 => 0x5, 88 => 0x5, 89 => 0x6, 90 => 0x4, 407 => 0x58, 408 => 0x58 },
      +	'exposurelockused' => { 465 => 'ExposureLockUsed' },
      +	'exposuremode' => { 119 => 0xa402, 156 => 'ExposureMode', 181 => 0x1, 182 => 0xa, 183 => 0x0, 184 => 0x0, 187 => 0x34, 297 => 0x200, 317 => 0x40d, 397 => 0x8, 420 => 0xb041, 483 => 'ExposureMode' },
      +	'exposuremodeinmanual' => { 84 => 0x10b },
      +	'exposureprogram' => { 119 => 0x8822, 387 => 0x1001, 400 => [0x17e,0x43], 407 => 0x3c, 408 => 0x3c, 409 => 0x5, 413 => 0x14, 418 => 0x3f, 425 => 0x2, 428 => 0x1175, 429 => 0x1179, 430 => 0x1155, 431 => 0x11d1, 432 => 0x11ad, 433 => 0x1065, 434 => 0x25d, 435 => 0x25d, 436 => 0x24c, 446 => 0xb, 447 => 0xc, 448 => 0xb, 450 => 0x48, 483 => 'ExposureProgram' },
      +	'exposureshift' => { 297 => 0x203 },
      +	'exposurestandardadjustment' => { 420 => 0x202d },
      +	'exposuretime' => { 7 => 0x4, 8 => 0x4, 9 => 0x4, 10 => 0x4, 11 => 0x4, 12 => 0x4, 13 => 0x4, 14 => 0x4, 15 => 0x4, 16 => 0x4, 17 => 0x4, 18 => 0x4, 19 => 0x4, 20 => 0x4, 21 => 0x4, 22 => 0x4, 23 => 0x4, 24 => 0x4, 25 => 0x4, 26 => 0x4, 27 => 0x4, 28 => 0x4, 29 => 0x4, 30 => 0x6, 31 => 0x7, 77 => 0x16, 119 => 0x829a, 137 => 0xfd05, 140 => 0x20, 142 => 0xfa24, 144 => 0xf104, 147 => 0x12, 149 => 0x38, 151 => 0x14, 152 => 0x10, 154 => 0x10, 156 => 'ExposureTime', 181 => 0x9, 182 => 0x35, 183 => 0x48, 184 => 0x8, 187 => 0x49b8, 355 => 0x12, 394 => 0xa018, 397 => [0x32,0x4a], 407 => 0x0, 408 => 0x0, 425 => [0x21,0x23,0x27], 450 => 0x10, 483 => 'ExposureTime' },
      +	'exposuretime2' => { 397 => [0x33,0x4b] },
      +	'exposuretuning' => { 226 => 0x1c },
      +	'exposurevalue' => { 138 => 0x3 },
      +	'exposurewarning' => { 127 => 0x1302 },
      +	'exrauto' => { 127 => 0x1033 },
      +	'exrmode' => { 127 => 0x1034 },
      +	'extdescraccessibility' => { 488 => 'ExtDescrAccessibility' },
      +	'extendedmenubanks' => { 229 => 0x114 },
      +	'extendedshutterspeeds' => { 295 => 0x102 },
      +	'extendedwbdetect' => { 297 => 0x902 },
      +	'extender' => { 298 => 0x301 },
      +	'extenderfirmwareversion' => { 298 => 0x304 },
      +	'extendermagnification' => { 158 => 'Magnification' },
      +	'extendermake' => { 158 => 'Make' },
      +	'extendermodel' => { 158 => 'Model', 298 => 0x303 },
      +	'extenderserialnumber' => { 158 => 'SerialNumber', 298 => 0x302 },
      +	'extenderstatus' => { 353 => 0x3 },
      +	'externalflash' => { 300 => 0x1201 },
      +	'externalflashae1' => { 302 => 0x101f },
      +	'externalflashae1_0' => { 302 => 0x101b },
      +	'externalflashae2' => { 302 => 0x1020 },
      +	'externalflashae2_0' => { 302 => 0x101c },
      +	'externalflashbounce' => { 300 => 0x1204, 302 => 0x1026, 343 => 0x1a },
      +	'externalflashcompensation' => { 211 => 0x1b },
      +	'externalflashexposurecomp' => { 226 => 0x17, 343 => 0x19 },
      +	'externalflashfirmware' => { 209 => 0x6, 210 => 0x6, 211 => 0x6, 212 => 0x6, 213 => 0x6, 214 => 0x6 },
      +	'externalflashflags' => { 209 => 0x8, 210 => 0x8, 211 => 0x8, 212 => 0x8 },
      +	'externalflashguidenumber' => { 300 => 0x1203, 343 => '24.1' },
      +	'externalflashgvalue' => { 302 => 0x1025 },
      +	'externalflashmode' => { 302 => 0x1028, 343 => 0x2 },
      +	'externalflashreadystate' => { 213 => '9.1' },
      +	'externalflashstatus' => { 213 => '8.2' },
      +	'externalflashzoom' => { 300 => 0x1205, 302 => 0x1027 },
      +	'externalflashzoomoverride' => { 213 => '8.1' },
      +	'externalmetadatalink' => { 489 => 'ExternalMetadataLink' },
      +	'externalsensorbrightnessvalue' => { 315 => 0x311, 318 => 0x311, 319 => 0x311, 322 => 0x3408 },
      +	'extrainfoversion' => { 411 => 0x1a },
      +	'eyestartaf' => { 184 => 0x40 },
      +	'fac100per' => { 138 => 0xe94 },
      +	'fac170per' => { 138 => 0xe93 },
      +	'fac18per' => { 138 => 0xe92 },
      +	'face10position' => { 110 => 0x3f4, 111 => 0x1ec, 207 => 0x28, 340 => 0x12 },
      +	'face10size' => { 341 => 0x12 },
      +	'face11position' => { 207 => 0x2c, 340 => 0x14 },
      +	'face11size' => { 341 => 0x14 },
      +	'face12position' => { 207 => 0x30, 340 => 0x16 },
      +	'face12size' => { 341 => 0x16 },
      +	'face13position' => { 340 => 0x18 },
      +	'face13size' => { 341 => 0x18 },
      +	'face14position' => { 340 => 0x1a },
      +	'face14size' => { 341 => 0x1a },
      +	'face15position' => { 340 => 0x1c },
      +	'face15size' => { 341 => 0x1c },
      +	'face16position' => { 340 => 0x1e },
      +	'face16size' => { 341 => 0x1e },
      +	'face17position' => { 340 => 0x20 },
      +	'face17size' => { 341 => 0x20 },
      +	'face18position' => { 340 => 0x22 },
      +	'face18size' => { 341 => 0x22 },
      +	'face19position' => { 340 => 0x24 },
      +	'face19size' => { 341 => 0x24 },
      +	'face1position' => { 54 => 0x8, 110 => 0xd, 111 => 0x18, 207 => 0x4, 312 => 0x1, 340 => 0x0, 384 => 0xbc, 414 => 0x1, 415 => 0x0, 416 => 0x0, 417 => 0x5b },
      +	'face1size' => { 341 => 0x0 },
      +	'face20position' => { 340 => 0x26 },
      +	'face20size' => { 341 => 0x26 },
      +	'face21position' => { 340 => 0x28 },
      +	'face21size' => { 341 => 0x28 },
      +	'face22position' => { 340 => 0x2a },
      +	'face22size' => { 341 => 0x2a },
      +	'face23position' => { 340 => 0x2c },
      +	'face23size' => { 341 => 0x2c },
      +	'face24position' => { 340 => 0x2e },
      +	'face24size' => { 341 => 0x2e },
      +	'face25position' => { 340 => 0x30 },
      +	'face25size' => { 341 => 0x30 },
      +	'face26position' => { 340 => 0x32 },
      +	'face26size' => { 341 => 0x32 },
      +	'face27position' => { 340 => 0x34 },
      +	'face27size' => { 341 => 0x34 },
      +	'face28position' => { 340 => 0x36 },
      +	'face28size' => { 341 => 0x36 },
      +	'face29position' => { 340 => 0x38 },
      +	'face29size' => { 341 => 0x38 },
      +	'face2position' => { 54 => 0xa, 110 => 0x7c, 111 => 0x4c, 207 => 0x8, 312 => 0x5, 340 => 0x2, 384 => 0xc8, 414 => 0x6, 415 => 0x20, 416 => 0x25, 417 => 0x65 },
      +	'face2size' => { 341 => 0x2 },
      +	'face30position' => { 340 => 0x3a },
      +	'face30size' => { 341 => 0x3a },
      +	'face31position' => { 340 => 0x3c },
      +	'face31size' => { 341 => 0x3c },
      +	'face32position' => { 340 => 0x3e },
      +	'face32size' => { 341 => 0x3e },
      +	'face3position' => { 54 => 0xc, 110 => 0xeb, 111 => 0x80, 207 => 0xc, 312 => 0x9, 340 => 0x4, 384 => 0xd4, 414 => 0xb, 415 => 0x40, 416 => 0x4a, 417 => 0x6f },
      +	'face3size' => { 341 => 0x4 },
      +	'face4position' => { 54 => 0xe, 110 => 0x15a, 111 => 0xb4, 207 => 0x10, 312 => 0xd, 340 => 0x6, 384 => 0xe0, 414 => 0x10, 415 => 0x60, 416 => 0x6f, 417 => 0x79 },
      +	'face4size' => { 341 => 0x6 },
      +	'face5position' => { 54 => 0x10, 110 => 0x1c9, 111 => 0xe8, 207 => 0x14, 312 => 0x11, 340 => 0x8, 384 => 0xec, 414 => 0x15, 415 => 0x80, 416 => 0x94 },
      +	'face5size' => { 341 => 0x8 },
      +	'face6position' => { 54 => 0x12, 110 => 0x238, 111 => 0x11c, 207 => 0x18, 340 => 0xa, 384 => 0xf8, 414 => 0x1a, 415 => 0xa0, 416 => 0xb9 },
      +	'face6size' => { 341 => 0xa },
      +	'face7position' => { 54 => 0x14, 110 => 0x2a7, 111 => 0x150, 207 => 0x1c, 340 => 0xc, 384 => 0x104, 414 => 0x1f, 415 => 0xc0, 416 => 0xde },
      +	'face7size' => { 341 => 0xc },
      +	'face8position' => { 54 => 0x16, 110 => 0x316, 111 => 0x184, 207 => 0x20, 340 => 0xe, 384 => 0x110, 414 => 0x24, 415 => 0xe0, 416 => 0x103 },
      +	'face8size' => { 341 => 0xe },
      +	'face9position' => { 54 => 0x18, 110 => 0x385, 111 => 0x1b8, 207 => 0x24, 340 => 0x10 },
      +	'face9size' => { 341 => 0x10 },
      +	'facebalanceorigi' => { 471 => 'FaceBalanceOrigI' },
      +	'facebalanceorigq' => { 471 => 'FaceBalanceOrigQ' },
      +	'facebalancestrength' => { 471 => 'FaceBalanceStrength' },
      +	'facebalancewarmth' => { 471 => 'FaceBalanceWarmth' },
      +	'facedetect' => { 355 => 0x76, 394 => 0x100 },
      +	'facedetectarea' => { 301 => 0x1201 },
      +	'facedetectframecrop' => { 301 => 0x1207 },
      +	'facedetectframesize' => { 54 => 0x3, 110 => 0x1, 111 => 0x4, 207 => 0x1, 301 => 0x1203, 355 => 0x77, 384 => 0xb6 },
      +	'facedetection' => { 409 => 0x30, 425 => 0x19 },
      +	'faceelementpositions' => { 127 => 0x4203 },
      +	'faceelementselected' => { 127 => 0x4005 },
      +	'faceelementtypes' => { 127 => 0x4201 },
      +	'faceid' => { 473 => 'FaceID' },
      +	'faceinfounknown' => { 113 => 0x2089 },
      +	'facename' => { 394 => 0x123 },
      +	'faceorientation' => { 111 => 0x8 },
      +	'faceposition' => { 339 => 0x2, 395 => 0x4 },
      +	'facepositions' => { 127 => 0x4103 },
      +	'facerecognition' => { 394 => 0x120 },
      +	'facesdetected' => { 54 => 0x2, 55 => 0x2, 56 => 0x3, 110 => 0x0, 111 => 0x2, 113 => 0x211c, 127 => 0x4100, 207 => 0x3, 301 => 0x1200, 320 => 0x3f, 339 => 0x0, 384 => 0xb5, 395 => 0x0, 414 => 0x0, 417 => 0x3, 427 => 0x30 },
      +	'facesrecognized' => { 313 => 0x0 },
      +	'facewidth' => { 55 => 0x1 },
      +	'fade' => { 420 => 0x2034 },
      +	'faithfuloutputhighlightpoint' => { 109 => 0x38 },
      +	'faithfuloutputshadowpoint' => { 109 => 0x39 },
      +	'faithfulrawcolortone' => { 109 => 0x31 },
      +	'faithfulrawcontrast' => { 109 => 0x33 },
      +	'faithfulrawhighlight' => { 109 => 0x79 },
      +	'faithfulrawhighlightpoint' => { 109 => 0x36 },
      +	'faithfulrawlinear' => { 109 => 0x34 },
      +	'faithfulrawsaturation' => { 109 => 0x32 },
      +	'faithfulrawshadow' => { 109 => 0x82 },
      +	'faithfulrawshadowpoint' => { 109 => 0x37 },
      +	'faithfulrawsharpness' => { 109 => 0x35 },
      +	'faithfulunsharpmaskfineness' => { 109 => 0xac },
      +	'faithfulunsharpmaskstrength' => { 109 => 0xaa },
      +	'faithfulunsharpmaskthreshold' => { 109 => 0xae },
      +	'far' => { 462 => 'Far' },
      +	'fastresetlinetime' => { 138 => 0x1860 },
      +	'feedidentifier' => { 489 => 'FeedIdentifier' },
      +	'femicroadjustment' => { 84 => 0x111 },
      +	'ffid' => { 481 => 'ffid' },
      +	'field' => { 492 => 'field' },
      +	'fieldcount' => { 302 => 0x103f },
      +	'fieldofview' => { 380 => "FOV\x00" },
      +	'fifoenonepixeldelay' => { 138 => 0x1901 },
      +	'filecreatedate' => { 120 => 'FileCreateDate' },
      +	'filedatarate' => { 503 => 'fileDataRate' },
      +	'fileformat' => { 95 => 0x0, 132 => 0x14, 397 => [0x22,0x26], 420 => 0xb000 },
      +	'filegroupid' => { 120 => 'FileGroupID' },
      +	'fileindex' => { 7 => 0x143, 9 => 0x2d0, 11 => 0x172, 13 => 0x22c, 14 => 0x133, 15 => 0x13f, 16 => 0x1d3, 17 => 0x19b, 18 => 0x1e4, 19 => 0xd0, 20 => 0x1bb, 21 => 0x28c, 22 => 0x1db, 23 => 0x1d9, 24 => [0x270,0x274], 25 => 0x2aa, 26 => 0x2b3, 28 => 0x1eb, 29 => 0x4ae, 321 => 0x0 },
       	'fileindex2' => { 21 => 0x290 },
      -	'filemodifydate' => { 117 => 'FileModifyDate' },
      -	'filename' => { 117 => 'FileName' },
      -	'filenameasdelivered' => { 293 => 'FileNameAsDelivered' },
      -	'filenumber' => { 55 => 0x1, 61 => 0x8, 94 => 0x1817, 111 => 'Canon::FileNumber', 202 => 0x4, 369 => 0x10 },
      -	'filenumbermemory' => { 176 => 0x1a },
      -	'filenumbersequence' => { 266 => '12.2', 271 => '3.1', 272 => '4.1', 273 => '4.1', 275 => '11.1', 276 => '4.3', 281 => '5.2' },
      -	'filepermissions' => { 117 => 'FilePermissions' },
      -	'filesource' => { 116 => 0xa300, 124 => 0x8000, 468 => 'FileSource' },
      -	'fileuserid' => { 117 => 'FileUserID' },
      -	'fileversion' => { 129 => 0x16 },
      -	'fillflashautoreduction' => { 79 => 0xe, 80 => 0xe, 87 => 0xa },
      -	'filllight' => { 462 => 'FillLight', 464 => 'FillLight' },
      -	'fillorder' => { 116 => 0x10a },
      -	'filmgraineffect' => { 283 => 0x538 },
      -	'filmmode' => { 124 => 0x1401, 303 => 0x412, 306 => 0x42 },
      -	'filmtype' => { 227 => 0x2 },
      -	'filtereffect' => { 55 => 0xe, 221 => 0x37, 222 => 0x3f, 223 => 0x47 },
      -	'filtereffectauto' => { 68 => 0xa0 },
      -	'filtereffectfaithful' => { 67 => 0x70, 68 => 0x70 },
      -	'filtereffectlandscape' => { 67 => 0x40, 68 => 0x40 },
      -	'filtereffectmonochrome' => { 19 => 0xff, 67 => 0x88, 68 => 0x88 },
      -	'filtereffectneutral' => { 67 => 0x58, 68 => 0x58 },
      -	'filtereffectportrait' => { 67 => 0x28, 68 => 0x28 },
      -	'filtereffectstandard' => { 67 => 0x10, 68 => 0x10 },
      -	'filtereffectuserdef1' => { 67 => 0xa0, 68 => 0xb8 },
      -	'filtereffectuserdef2' => { 67 => 0xb8, 68 => 0xd0 },
      -	'filtereffectuserdef3' => { 67 => 0xd0, 68 => 0xe8 },
      -	'finderdisplayduringexposure' => { 80 => 0x1 },
      -	'finesharpness' => { 341 => 0x70 },
      -	'finetuneoptcenterweighted' => { 266 => '7.2', 267 => '9.1', 269 => '9.1', 270 => '9.1', 274 => '8.1', 279 => '9.1', 280 => '9.1', 281 => '9.1' },
      -	'finetuneopthighlightweighted' => { 269 => '46.1', 270 => '46.1', 279 => '46.1', 280 => '46.1' },
      -	'finetuneoptmatrixmetering' => { 266 => '8.1', 267 => '8.2', 269 => '8.2', 270 => '8.2', 274 => '7.2', 275 => '6.1', 279 => '8.2', 280 => '8.2', 281 => '8.2' },
      -	'finetuneoptspotmetering' => { 266 => '8.2', 267 => '9.2', 269 => '9.2', 270 => '9.2', 274 => '8.2', 275 => '6.2', 279 => '9.2', 280 => '9.2', 281 => '9.2' },
      -	'finishexposure' => { 134 => 0xdbd },
      -	'finishfiletype' => { 134 => 0xdb8 },
      -	'finishlook' => { 134 => 0xdbc },
      -	'finishnoise' => { 134 => 0xdba },
      -	'finishresolution' => { 134 => 0xdb9 },
      -	'finishsharpening' => { 134 => 0xdbb },
      -	'firmware' => { 288 => 0x405, 383 => [0x8c,0x17,0x3b], 459 => 'Firmware' },
      -	'firmware2' => { 383 => 0x57 },
      -	'firmwaredate' => { 109 => 0x15, 110 => 0x2001, 367 => 0x4, 369 => 0x30 },
      -	'firmwareid' => { 183 => 0x0 },
      -	'firmwarename' => { 380 => 0xa001 },
      -	'firmwarerevision' => { 19 => 0xa4, 61 => 0x1e, 371 => 0x0 },
      -	'firmwarerevision2' => { 371 => 0xc },
      -	'firmwareversion' => { 7 => 0x10b, 11 => 0x136, 14 => 0xff, 15 => 0x107, 134 => [0x415,0xce5], 150 => 0x57, 152 => 'FirmwareVersion', 304 => 0x320, 306 => 0x2, 308 => 0x3109, 341 => 0x230, 366 => ['CNFV','FIRM'], 368 => 0x18, 369 => 0x2a, 373 => 0x2 },
      -	'firmwareversions' => { 350 => 0x301 },
      -	'firstphotodate' => { 450 => 'FirstPhotoDate' },
      -	'firstpublicationdate' => { 293 => 'FirstPublicationDate' },
      -	'fixtureidentifier' => { 128 => 0x16, 457 => 'FixtureIdentifier' },
      -	'flash' => { 111 => 'XMP::Flash', 116 => 0x9209, 148 => 0x22, 177 => 0x1f, 178 => 0x15, 369 => 0x5a, 468 => 'Flash' },
      -	'flashaction' => { 393 => 0x3e, 394 => 0x3e, 406 => 0x2017, 411 => [0x2a,0x2c,0x30] },
      -	'flashaction2' => { 393 => 0x4c, 394 => 0x4c, 411 => 0x77 },
      -	'flashactionexternal' => { 411 => [0x78,0x7c] },
      +	'filemodifydate' => { 120 => 'FileModifyDate' },
      +	'filename' => { 120 => 'FileName' },
      +	'filenameasdelivered' => { 307 => 'FileNameAsDelivered' },
      +	'filenumber' => { 57 => 0x1, 64 => 0x8, 97 => 0x1817, 114 => 'Canon-FileNumber', 208 => 0x4, 383 => 0x10 },
      +	'filenumbermemory' => { 181 => 0x1a },
      +	'filenumbersequence' => { 279 => '12.2', 284 => '3.1', 285 => '4.1', 286 => '4.1', 288 => '11.1', 289 => '4.3', 294 => '5.2', 295 => 0x48 },
      +	'filepermissions' => { 120 => 'FilePermissions' },
      +	'filesource' => { 119 => 0xa300, 127 => 0x8000, 483 => 'FileSource' },
      +	'fileuserid' => { 120 => 'FileUserID' },
      +	'fileversion' => { 132 => 0x16 },
      +	'fillflashautoreduction' => { 82 => 0xe, 83 => 0xe, 90 => 0xa },
      +	'filllight' => { 477 => 'FillLight', 479 => 'FillLight' },
      +	'fillorder' => { 119 => 0x10a },
      +	'filmgraineffect' => { 297 => 0x538 },
      +	'filmmode' => { 127 => 0x1401, 317 => 0x412, 320 => 0x42 },
      +	'filmtype' => { 237 => 0x2 },
      +	'filtereffect' => { 57 => 0xe, 231 => 0x37, 232 => 0x3f, 233 => 0x47, 320 => 0xa1 },
      +	'filtereffectauto' => { 71 => 0xa0 },
      +	'filtereffectfaithful' => { 70 => 0x70, 71 => 0x70 },
      +	'filtereffectlandscape' => { 70 => 0x40, 71 => 0x40 },
      +	'filtereffectmonochrome' => { 19 => 0xff, 70 => 0x88, 71 => 0x88 },
      +	'filtereffectneutral' => { 70 => 0x58, 71 => 0x58 },
      +	'filtereffectportrait' => { 70 => 0x28, 71 => 0x28 },
      +	'filtereffectstandard' => { 70 => 0x10, 71 => 0x10 },
      +	'filtereffectuserdef1' => { 70 => 0xa0, 71 => 0xb8 },
      +	'filtereffectuserdef2' => { 70 => 0xb8, 71 => 0xd0 },
      +	'filtereffectuserdef3' => { 70 => 0xd0, 71 => 0xe8 },
      +	'finderdisplayduringexposure' => { 83 => 0x1 },
      +	'finesharpness' => { 355 => 0x70 },
      +	'finetuneoptcenterweighted' => { 279 => '7.2', 280 => '9.1', 282 => '9.1', 283 => '9.1', 287 => '8.1', 292 => '9.1', 293 => '9.1', 294 => '9.1', 295 => 0x23 },
      +	'finetuneopthighlightweighted' => { 282 => '46.1', 283 => '46.1', 292 => '46.1', 293 => '46.1', 295 => 0x27 },
      +	'finetuneoptmatrixmetering' => { 279 => '8.1', 280 => '8.2', 282 => '8.2', 283 => '8.2', 287 => '7.2', 288 => '6.1', 292 => '8.2', 293 => '8.2', 294 => '8.2', 295 => 0x21 },
      +	'finetuneoptspotmetering' => { 279 => '8.2', 280 => '9.2', 282 => '9.2', 283 => '9.2', 287 => '8.2', 288 => '6.2', 292 => '9.2', 293 => '9.2', 294 => '9.2', 295 => 0x25 },
      +	'finishexposure' => { 138 => 0xdbd },
      +	'finishfiletype' => { 138 => 0xdb8 },
      +	'finishlook' => { 138 => 0xdbc },
      +	'finishnoise' => { 138 => 0xdba },
      +	'finishresolution' => { 138 => 0xdb9 },
      +	'finishsharpening' => { 138 => 0xdbb },
      +	'firmware' => { 302 => 0x405, 397 => [0x8c,0x17,0x3b], 474 => 'Firmware' },
      +	'firmware2' => { 397 => 0x57 },
      +	'firmwaredate' => { 112 => 0x15, 113 => 0x2001, 381 => 0x4, 383 => 0x30 },
      +	'firmwareid' => { 188 => 0x0 },
      +	'firmwarename' => { 394 => 0xa001 },
      +	'firmwarerevision' => { 19 => 0xa4, 64 => 0x1e, 385 => 0x0 },
      +	'firmwarerevision2' => { 385 => 0xc },
      +	'firmwareversion' => { 7 => 0x10b, 11 => 0x136, 14 => 0xff, 15 => 0x107, 138 => [0x415,0xce5], 154 => 0x57, 156 => 'FirmwareVersion', 318 => 0x320, 320 => 0x2, 322 => 0x3109, 355 => 0x230, 380 => ['CNFV','FIRM'], 382 => 0x18, 383 => 0x2a, 387 => 0x2 },
      +	'firmwareversions' => { 364 => 0x301 },
      +	'firstphotodate' => { 465 => 'FirstPhotoDate' },
      +	'firstpublicationdate' => { 307 => 'FirstPublicationDate' },
      +	'fixtureidentifier' => { 131 => 0x16, 472 => 'FixtureIdentifier' },
      +	'flash' => { 114 => 'XMP-Flash', 119 => 0x9209, 152 => 0x22, 182 => 0x1f, 183 => 0x15, 383 => 0x5a, 483 => 'Flash' },
      +	'flashaction' => { 407 => 0x3e, 408 => 0x3e, 420 => 0x2017, 425 => [0x2a,0x2c,0x30] },
      +	'flashaction2' => { 407 => 0x4c, 408 => 0x4c, 425 => 0x77 },
      +	'flashactionexternal' => { 425 => [0x78,0x7c] },
       	'flashactivity' => { 34 => 0x1c },
      -	'flashbatterylevel' => { 42 => 0x249 },
      -	'flashbias' => { 306 => 0x24 },
      +	'flashbatterylevel' => { 44 => 0x249 },
      +	'flashbias' => { 320 => 0x24 },
       	'flashbits' => { 34 => 0x1d },
      -	'flashbuttonfunction' => { 81 => 0x70e },
      -	'flashchargelevel' => { 288 => 0x1010 },
      -	'flashcolorfilter' => { 205 => 0x10, 206 => 0x10 },
      -	'flashcommandermode' => { 203 => '9.1', 204 => '9.1', 205 => '9.1', 206 => '9.1' },
      -	'flashcompensation' => { 134 => 0x3f3, 203 => 0xa, 204 => 0xa, 205 => 0xa, 206 => 0x27, 207 => 0xa, 459 => 'FlashCompensation' },
      -	'flashcontrol' => { 393 => 0x23, 394 => 0x1f, 395 => 0x21 },
      -	'flashcontrolbuilt-in' => { 275 => '16.1', 276 => '23.1', 278 => '23.1', 279 => '24.1' },
      -	'flashcontrolmode' => { 203 => '9.2', 204 => '9.2', 205 => '9.2', 206 => '9.2', 283 => 0x404 },
      -	'flashcurtain' => { 306 => 0x48 },
      -	'flashdefault' => { 179 => 0x42 },
      -	'flashdevice' => { 288 => 0x1005 },
      -	'flashdistance' => { 110 => 0x2034 },
      -	'flashenergy' => { 116 => 0xa20b, 468 => 'FlashEnergy' },
      -	'flashexposurebracketvalue' => { 219 => 0x18 },
      -	'flashexposurecomp' => { 74 => 0xf, 124 => 0x1011, 155 => 'ExposureComp', 176 => 0x23, 181 => 0x104, 182 => 0x49c1, 219 => 0x12, 283 => 0x401, 288 => 0x1023, 341 => 0x4d, 373 => 0x100b, 383 => [0x3a,0x56], 406 => 0x104 },
      -	'flashexposurecomp2' => { 245 => 0x4d2 },
      -	'flashexposurecomp3' => { 205 => 0x1d },
      -	'flashexposurecomp4' => { 205 => 0x27 },
      -	'flashexposurecomparea' => { 267 => '38.4', 269 => '38.4', 270 => '38.4', 279 => '38.4', 280 => '38.4' },
      -	'flashexposurecompset' => { 179 => 0x10, 314 => 0xe, 393 => 0x14, 394 => 0x12, 395 => 0x23, 411 => 0x1f },
      -	'flashexposurecompset2' => { 411 => [0x26,0x2c] },
      -	'flashexposureindicator' => { 179 => 0x54 },
      -	'flashexposureindicatorlast' => { 179 => 0x56 },
      -	'flashexposureindicatornext' => { 179 => 0x55 },
      -	'flashexposurelock' => { 55 => 0x19 },
      -	'flashfired' => { 136 => 0x5d, 155 => 'Fired', 176 => 0x14, 244 => '590.3', 468 => [\'Flash','FlashFired'] },
      -	'flashfiring' => { 81 => 0x306, 82 => 0x6, 83 => 0x7, 86 => 0x7 },
      -	'flashfirmwareversion' => { 284 => 0x1002 },
      -	'flashfocallength' => { 203 => 0xb, 204 => 0xc, 205 => 0xc, 206 => 0xc, 207 => 0xc },
      -	'flashfunction' => { 182 => 0x31, 468 => [\'Flash','FlashFunction'] },
      -	'flashgndistance' => { 203 => 0xe, 204 => 0xf, 205 => 0xf, 206 => 0xf, 207 => 0xf },
      -	'flashgroupacompensation' => { 203 => 0x11, 204 => 0x12, 205 => 0x13, 206 => 0x28, 207 => 0x28 },
      -	'flashgroupacontrolmode' => { 203 => 0xf, 204 => '16.1', 205 => '17.1', 206 => '17.1', 207 => '17.1' },
      -	'flashgroupaoutput' => { 203 => 0x11, 204 => 0x12, 205 => 0x13, 206 => 0x28, 207 => 0x28 },
      -	'flashgroupbcompensation' => { 203 => 0x12, 204 => 0x13, 205 => 0x14, 206 => 0x29, 207 => 0x29 },
      -	'flashgroupbcontrolmode' => { 203 => 0x10, 204 => '17.1', 205 => '18.1', 206 => '18.1', 207 => '18.1' },
      -	'flashgroupboutput' => { 203 => 0x12, 204 => 0x13, 205 => 0x14, 206 => 0x29, 207 => 0x29 },
      -	'flashgroupccompensation' => { 204 => 0x14, 205 => 0x15, 206 => 0x2a, 207 => 0x2a },
      -	'flashgroupccontrolmode' => { 204 => '17.2', 205 => '18.2', 206 => '18.2', 207 => '18.2' },
      -	'flashgroupcoutput' => { 204 => 0x14, 205 => 0x15, 206 => 0x2a, 207 => 0x2a },
      -	'flashguidenumber' => { 74 => 0xd, 91 => 0x0, 155 => 'GuideNumber' },
      -	'flashintensity' => { 109 => [0x19,0x5], 283 => 0x405 },
      -	'flashlevel' => { 268 => 0x9, 406 => 0xb048 },
      -	'flashmake' => { 155 => 'Make' },
      -	'flashmanufacturer' => { 174 => 'FlashManufacturer' },
      -	'flashmetering' => { 176 => 0x3f, 179 => 0x1c },
      +	'flashburstpriority' => { 295 => 0x111 },
      +	'flashbuttonfunction' => { 84 => 0x70e },
      +	'flashchargelevel' => { 302 => 0x1010 },
      +	'flashcolorfilter' => { 211 => 0x10, 212 => 0x10 },
      +	'flashcommandermode' => { 209 => '9.1', 210 => '9.1', 211 => '9.1', 212 => '9.1' },
      +	'flashcompensation' => { 138 => 0x3f3, 209 => 0xa, 210 => 0xa, 211 => 0xa, 212 => 0x27, 213 => 0xa, 214 => 0xa, 474 => 'FlashCompensation' },
      +	'flashcontrol' => { 407 => 0x23, 408 => 0x1f, 409 => 0x21 },
      +	'flashcontrolbuilt-in' => { 288 => '16.1', 289 => '23.1', 291 => '23.1', 292 => '24.1' },
      +	'flashcontrolmode' => { 209 => '9.2', 210 => '9.2', 211 => '9.2', 212 => '9.2', 228 => 0x148, 229 => 0x1a8, 252 => 0xc4a6, 297 => 0x404 },
      +	'flashcurtain' => { 320 => 0x48 },
      +	'flashdefault' => { 184 => 0x42 },
      +	'flashdevice' => { 302 => 0x1005 },
      +	'flashdistance' => { 113 => 0x2034 },
      +	'flashenergy' => { 119 => 0xa20b, 483 => 'FlashEnergy' },
      +	'flashexposurebracketvalue' => { 226 => 0x18 },
      +	'flashexposurecomp' => { 77 => 0xf, 127 => 0x1011, 159 => 'ExposureComp', 181 => 0x23, 186 => 0x104, 187 => 0x49c1, 226 => 0x12, 297 => 0x401, 302 => 0x1023, 355 => 0x4d, 387 => 0x100b, 397 => [0x3a,0x56], 420 => 0x104 },
      +	'flashexposurecomp2' => { 256 => 0x4d2 },
      +	'flashexposurecomp3' => { 211 => 0x1d },
      +	'flashexposurecomp4' => { 211 => 0x27 },
      +	'flashexposurecomparea' => { 280 => '38.4', 282 => '38.4', 283 => '38.4', 292 => '38.4', 293 => '38.4', 295 => 0x59 },
      +	'flashexposurecompset' => { 184 => 0x10, 328 => 0xe, 407 => 0x14, 408 => 0x12, 409 => 0x23, 425 => 0x1f },
      +	'flashexposurecompset2' => { 425 => [0x26,0x2c] },
      +	'flashexposureindicator' => { 184 => 0x54 },
      +	'flashexposureindicatorlast' => { 184 => 0x56 },
      +	'flashexposureindicatornext' => { 184 => 0x55 },
      +	'flashexposurelock' => { 57 => 0x19 },
      +	'flashfired' => { 140 => 0x5d, 159 => 'Fired', 181 => 0x14, 255 => '590.3', 483 => [\'Flash','FlashFired'] },
      +	'flashfiring' => { 84 => 0x306, 85 => 0x6, 86 => 0x7, 89 => 0x7 },
      +	'flashfirmwareversion' => { 298 => 0x1002 },
      +	'flashfocallength' => { 209 => 0xb, 210 => 0xc, 211 => 0xc, 212 => 0xc, 213 => 0xc },
      +	'flashfunction' => { 187 => 0x31, 483 => [\'Flash','FlashFunction'] },
      +	'flashgndistance' => { 209 => 0xe, 210 => 0xf, 211 => 0xf, 212 => 0xf, 213 => 0xf, 228 => 0x14e, 229 => 0x1ae, 252 => 0xc4ac },
      +	'flashgroupacompensation' => { 209 => 0x11, 210 => 0x12, 211 => 0x13, 212 => 0x28, 213 => 0x28 },
      +	'flashgroupacontrolmode' => { 209 => 0xf, 210 => '16.1', 211 => '17.1', 212 => '17.1', 213 => '17.1' },
      +	'flashgroupaoutput' => { 209 => 0x11, 210 => 0x12, 211 => 0x13, 212 => 0x28, 213 => 0x28 },
      +	'flashgroupbcompensation' => { 209 => 0x12, 210 => 0x13, 211 => 0x14, 212 => 0x29, 213 => 0x29 },
      +	'flashgroupbcontrolmode' => { 209 => 0x10, 210 => '17.1', 211 => '18.1', 212 => '18.1', 213 => '18.1' },
      +	'flashgroupboutput' => { 209 => 0x12, 210 => 0x13, 211 => 0x14, 212 => 0x29, 213 => 0x29 },
      +	'flashgroupccompensation' => { 210 => 0x14, 211 => 0x15, 212 => 0x2a, 213 => 0x2a },
      +	'flashgroupccontrolmode' => { 210 => '17.2', 211 => '18.2', 212 => '18.2', 213 => '18.2' },
      +	'flashgroupcoutput' => { 210 => 0x14, 211 => 0x15, 212 => 0x2a, 213 => 0x2a },
      +	'flashguidenumber' => { 77 => 0xd, 94 => 0x0, 159 => 'GuideNumber' },
      +	'flashintensity' => { 112 => [0x19,0x5], 297 => 0x405 },
      +	'flashlevel' => { 281 => 0x9, 420 => 0xb048 },
      +	'flashmake' => { 159 => 'Make' },
      +	'flashmanufacturer' => { 178 => 'FlashManufacturer' },
      +	'flashmastercompensation' => { 228 => 0x162, 229 => 0x1aa, 252 => 0xc4c0 },
      +	'flashmastercontrolmode' => { 228 => 0x160, 252 => 0xc4be },
      +	'flashmasteroutput' => { 228 => 0x166, 252 => 0xc4c4 },
      +	'flashmetering' => { 181 => 0x3f, 184 => 0x1c },
       	'flashmeteringmode' => { 7 => 0x15, 13 => 0x15, 14 => 0x15, 15 => 0x15, 16 => 0x15, 17 => 0x15, 18 => 0x15, 20 => 0x15, 22 => 0x15, 28 => 0x15 },
      -	'flashmeteringsegments' => { 341 => 0x20a },
      -	'flashmode' => { 109 => 0x4, 134 => 0x3f2, 136 => 0x5c, 147 => 0x27, 155 => 'Mode', 176 => 0x2, 177 => 0x20, 178 => 0x16, 179 => 0xf, 219 => 0x87, 283 => 0x400, 288 => 0x1004, 341 => 0xc, 348 => 0x4, 372 => 0x20, 373 => 0x100a, 382 => 0x225, 393 => 0x13, 394 => 0x7f, 395 => 0x20, 411 => 0x10, 414 => 0x1138, 415 => 0x1138, 416 => 0x1114, 417 => 0x1190, 418 => 0x116c, 419 => 0x1024, 420 => 0x21c, 421 => 0x21c, 422 => 0x211, 468 => [\'Flash','FlashMode'] },
      -	'flashmodel' => { 155 => 'Model', 174 => 'FlashModel', 284 => 0x1001 },
      -	'flashoptions' => { 322 => 0x2 },
      -	'flashoptions2' => { 322 => 0x10 },
      -	'flashoutput' => { 42 => 0x248, 74 => 0x21, 203 => 0xa, 204 => 0xa, 205 => 0xa, 206 => 0x27 },
      -	'flashpixversion' => { 116 => 0xa000, 468 => 'FlashpixVersion' },
      -	'flashredeyemode' => { 468 => [\'Flash','FlashRedEyeMode'] },
      -	'flashremotecontrol' => { 283 => 0x403 },
      -	'flashreturn' => { 468 => [\'Flash','FlashReturn'] },
      -	'flashserialnumber' => { 155 => 'SerialNumber', 284 => 0x1003 },
      -	'flashsetting' => { 219 => 0x8 },
      -	'flashshutterspeed' => { 266 => '20.2', 267 => '23.2', 269 => '23.2', 270 => '23.2', 275 => '15.2', 276 => '22.2', 277 => '7.2', 278 => '22.2', 279 => '23.2', 280 => '23.2', 281 => '23.1' },
      -	'flashsource' => { 203 => 0x4, 204 => 0x4, 205 => 0x4, 206 => 0x4, 207 => 0x4 },
      -	'flashstatus' => { 329 => 0x0, 411 => [0x82,0x86], 424 => 0x31, 425 => 0x39 },
      -	'flashstatusbuilt-in' => { 395 => [0x87,0x287] },
      -	'flashstatusexternal' => { 395 => [0x88,0x288] },
      -	'flashsyncspeed' => { 266 => '20.1', 267 => '23.1', 269 => '23.1', 270 => '23.1', 275 => '15.1', 276 => '22.1', 278 => '22.1', 279 => '23.1', 280 => '23.1' },
      -	'flashsyncspeedav' => { 79 => 0x3, 81 => 0x10f, 82 => 0x2, 83 => 0x3, 84 => 0x2, 85 => 0x2, 86 => 0x3, 87 => 0x6 },
      -	'flashthreshold' => { 91 => 0x1 },
      -	'flashtype' => { 155 => 'Type', 179 => 0x59, 219 => 0x9, 284 => 0x1000 },
      -	'flashwarning' => { 276 => '30.1', 277 => '7.1', 281 => '31.1', 306 => 0x62 },
      -	'flexiblespotposition' => { 406 => 0x201d },
      -	'flickerreduce' => { 382 => 0x218 },
      -	'flickerreduction' => { 124 => 0x1446, 238 => 0xe84 },
      -	'flickerreductionindicator' => { 238 => 0x5e2 },
      -	'flightpitchdegree' => { 113 => 'FlightPitchDegree' },
      -	'flightrolldegree' => { 113 => 'FlightRollDegree' },
      -	'flightxspeed' => { 113 => 'FlightXSpeed' },
      -	'flightyawdegree' => { 113 => 'FlightYawDegree' },
      -	'flightyspeed' => { 113 => 'FlightYSpeed' },
      -	'flightzspeed' => { 113 => 'FlightZSpeed' },
      -	'fliphorizontal' => { 259 => 0x76a43206 },
      -	'fnumber' => { 7 => 0x3, 9 => 0x3, 11 => 0x3, 13 => 0x3, 14 => 0x3, 15 => 0x3, 16 => 0x3, 17 => 0x3, 18 => 0x3, 19 => 0x3, 20 => 0x3, 21 => 0x3, 22 => 0x3, 23 => 0x3, 24 => 0x3, 25 => 0x3, 26 => 0x3, 27 => 0x3, 28 => 0x3, 29 => 0x3, 30 => 0x5, 31 => 0x6, 74 => 0x15, 116 => 0x829d, 133 => 0xfd04, 136 => 0x1e, 138 => 0xfa23, 140 => 0xf103, 143 => 0x13, 145 => 0x3c, 147 => 0x1c, 148 => 0x18, 150 => 0xc, 159 => 'FNumber', 176 => 0xa, 177 => 0x36, 178 => 0x47, 179 => 0x9, 182 => 0x49c7, 217 => 0x38, 341 => 0x13, 380 => 0xa019, 383 => [0x31,0x49], 393 => 0x1, 394 => 0x1, 411 => [0x20,0x22,0x26], 468 => 'FNumber' },
      -	'focaldistance' => { 448 => 'FocalDistance' },
      -	'focallength' => { 7 => 0x1d, 8 => 0xa, 9 => 0x23, 10 => 0x9, 11 => 0x1d, 12 => 0x9, 13 => 0x1e, 14 => 0x1d, 15 => 0x1d, 16 => 0x1e, 17 => 0x1e, 18 => 0x1e, 19 => 0x28, 20 => 0x1e, 21 => 0x23, 22 => 0x1e, 23 => 0x1e, 24 => 0x23, 25 => 0x23, 26 => 0x23, 27 => 0x23, 28 => 0x1e, 29 => 0x23, 57 => 0x1, 110 => 0x1d, 116 => 0x920a, 143 => 0x1d, 159 => 'FocalLength', 176 => 0x12, 212 => 0xa, 213 => 0xb, 217 => [0xc,0x3c], 300 => 0x1, 341 => 0x1d, 350 => 0x403, 373 => 0x1500, 392 => 0xe, 418 => 0x1278, 419 => 0x1134, 420 => 0x32c, 421 => 0x32c, 422 => 0x30a, 468 => 'FocalLength' },
      -	'focallength2' => { 411 => [0x23,0x25,0x29] },
      -	'focallengthin35mmformat' => { 116 => 0xa405, 380 => 0xa01a, 468 => 'FocalLengthIn35mmFilm' },
      -	'focallengthtelezoom' => { 392 => 0x10 },
      -	'focalplaneafpointarea' => { 423 => 0x2 },
      -	'focalplaneafpointlocation1' => { 423 => 0x6 },
      -	'focalplaneafpointlocation10' => { 423 => 0x2a },
      -	'focalplaneafpointlocation11' => { 423 => 0x2e },
      -	'focalplaneafpointlocation12' => { 423 => 0x32 },
      -	'focalplaneafpointlocation13' => { 423 => 0x36 },
      -	'focalplaneafpointlocation14' => { 423 => 0x3a },
      -	'focalplaneafpointlocation15' => { 423 => 0x3e },
      -	'focalplaneafpointlocation2' => { 423 => 0xa },
      -	'focalplaneafpointlocation3' => { 423 => 0xe },
      -	'focalplaneafpointlocation4' => { 423 => 0x12 },
      -	'focalplaneafpointlocation5' => { 423 => 0x16 },
      -	'focalplaneafpointlocation6' => { 423 => 0x1a },
      -	'focalplaneafpointlocation7' => { 423 => 0x1e },
      -	'focalplaneafpointlocation8' => { 423 => 0x22 },
      -	'focalplaneafpointlocation9' => { 423 => 0x26 },
      -	'focalplaneafpointsused' => { 423 => 0x1 },
      -	'focalplanediagonal' => { 284 => 0x103, 288 => 0x205 },
      -	'focalplaneresolutionunit' => { 116 => 0xa210, 468 => 'FocalPlaneResolutionUnit' },
      -	'focalplanexresolution' => { 116 => 0xa20e, 468 => 'FocalPlaneXResolution' },
      -	'focalplanexsize' => { 57 => 0x2 },
      -	'focalplanexunknown' => { 57 => 0x2 },
      -	'focalplaneyresolution' => { 116 => 0xa20f, 468 => 'FocalPlaneYResolution' },
      -	'focalplaneysize' => { 57 => 0x3 },
      -	'focalplaneyunknown' => { 57 => 0x3 },
      -	'focalpointx' => { 448 => 'FocalPointX' },
      -	'focalpointy' => { 448 => 'FocalPointY' },
      -	'focaltype' => { 10 => 0x2d, 57 => 0x0 },
      +	'flashmeteringsegments' => { 355 => 0x20a },
      +	'flashmode' => { 112 => 0x4, 138 => 0x3f2, 140 => 0x5c, 151 => 0x27, 159 => 'Mode', 181 => 0x2, 182 => 0x20, 183 => 0x16, 184 => 0xf, 226 => 0x87, 297 => 0x400, 302 => 0x1004, 355 => 0xc, 362 => 0x4, 386 => 0x20, 387 => 0x100a, 396 => 0x225, 407 => 0x13, 408 => 0x7f, 409 => 0x20, 425 => 0x10, 428 => 0x1138, 429 => 0x1138, 430 => 0x1114, 431 => 0x1190, 432 => 0x116c, 433 => 0x1024, 434 => 0x21c, 435 => 0x21c, 436 => 0x211, 483 => [\'Flash','FlashMode'] },
      +	'flashmodel' => { 159 => 'Model', 178 => 'FlashModel', 298 => 0x1001 },
      +	'flashoptions' => { 336 => 0x2 },
      +	'flashoptions2' => { 336 => 0x10 },
      +	'flashoutput' => { 44 => 0x248, 77 => 0x21, 209 => 0xa, 210 => 0xa, 211 => 0xa, 212 => 0x27, 228 => 0x152, 229 => 0x1b2, 252 => 0xc4b0 },
      +	'flashpixversion' => { 119 => 0xa000, 483 => 'FlashpixVersion' },
      +	'flashredeyemode' => { 483 => [\'Flash','FlashRedEyeMode'] },
      +	'flashremotecontrol' => { 228 => 0x15c, 229 => 0x1bc, 252 => 0xc4ba, 297 => 0x403 },
      +	'flashreturn' => { 483 => [\'Flash','FlashReturn'] },
      +	'flashserialnumber' => { 159 => 'SerialNumber', 298 => 0x1003 },
      +	'flashsetting' => { 226 => 0x8 },
      +	'flashshutterspeed' => { 279 => '20.2', 280 => '23.2', 282 => '23.2', 283 => '23.2', 288 => '15.2', 289 => '22.2', 290 => '7.2', 291 => '22.2', 292 => '23.2', 293 => '23.2', 294 => '23.1', 295 => 0x57 },
      +	'flashsource' => { 209 => 0x4, 210 => 0x4, 211 => 0x4, 212 => 0x4, 213 => 0x4, 214 => 0x4 },
      +	'flashstatus' => { 343 => 0x0, 425 => [0x82,0x86], 438 => 0x31, 439 => 0x39, 440 => 0x39 },
      +	'flashstatusbuilt-in' => { 409 => [0x87,0x287] },
      +	'flashstatusexternal' => { 409 => [0x88,0x288] },
      +	'flashsyncspeed' => { 279 => '20.1', 280 => '23.1', 282 => '23.1', 283 => '23.1', 288 => '15.1', 289 => '22.1', 291 => '22.1', 292 => '23.1', 293 => '23.1', 295 => 0x53 },
      +	'flashsyncspeedav' => { 82 => 0x3, 84 => 0x10f, 85 => 0x2, 86 => 0x3, 87 => 0x2, 88 => 0x2, 89 => 0x3, 90 => 0x6 },
      +	'flashthreshold' => { 94 => 0x1 },
      +	'flashtype' => { 159 => 'Type', 184 => 0x59, 226 => 0x9, 298 => 0x1000 },
      +	'flashwarning' => { 289 => '30.1', 290 => '7.1', 294 => '31.1', 320 => 0x62 },
      +	'flashwirelessoption' => { 228 => 0x15a, 229 => 0x1c8, 252 => 0xc4c6 },
      +	'flexiblespotposition' => { 420 => 0x201d },
      +	'flickadvancedirection' => { 295 => 0x25f },
      +	'flickerreduce' => { 396 => 0x218 },
      +	'flickerreduction' => { 127 => 0x1446, 248 => 0xe84 },
      +	'flickerreductionindicator' => { 248 => 0x5e2 },
      +	'flickerreductionshooting' => { 229 => 0x1a4 },
      +	'flightpitchdegree' => { 116 => 'FlightPitchDegree' },
      +	'flightrolldegree' => { 116 => 'FlightRollDegree' },
      +	'flightxspeed' => { 116 => 'FlightXSpeed' },
      +	'flightyawdegree' => { 116 => 'FlightYawDegree' },
      +	'flightyspeed' => { 116 => 'FlightYSpeed' },
      +	'flightzspeed' => { 116 => 'FlightZSpeed' },
      +	'fliphorizontal' => { 272 => 0x76a43206 },
      +	'fnumber' => { 7 => 0x3, 9 => 0x3, 11 => 0x3, 13 => 0x3, 14 => 0x3, 15 => 0x3, 16 => 0x3, 17 => 0x3, 18 => 0x3, 19 => 0x3, 20 => 0x3, 21 => 0x3, 22 => 0x3, 23 => 0x3, 24 => 0x3, 25 => 0x3, 26 => 0x3, 27 => 0x3, 28 => 0x3, 29 => 0x3, 30 => 0x5, 31 => 0x6, 77 => 0x15, 119 => 0x829d, 137 => 0xfd04, 140 => 0x1e, 142 => 0xfa23, 144 => 0xf103, 147 => 0x13, 149 => 0x3c, 151 => 0x1c, 152 => 0x18, 154 => 0xc, 163 => 'FNumber', 181 => 0xa, 182 => 0x36, 183 => 0x47, 184 => 0x9, 187 => 0x49c7, 224 => 0x38, 319 => 0x35a, 355 => 0x13, 394 => 0xa019, 397 => [0x31,0x49], 407 => 0x1, 408 => 0x1, 425 => [0x20,0x22,0x26], 483 => 'FNumber' },
      +	'focaldistance' => { 463 => 'FocalDistance' },
      +	'focallength' => { 7 => 0x1d, 8 => 0xa, 9 => 0x23, 10 => 0x9, 11 => 0x1d, 12 => 0x9, 13 => 0x1e, 14 => 0x1d, 15 => 0x1d, 16 => 0x1e, 17 => 0x1e, 18 => 0x1e, 19 => 0x28, 20 => 0x1e, 21 => 0x23, 22 => 0x1e, 23 => 0x1e, 24 => 0x23, 25 => 0x23, 26 => 0x23, 27 => 0x23, 28 => 0x1e, 29 => 0x23, 59 => 0x1, 113 => 0x1d, 119 => 0x920a, 147 => 0x1d, 163 => 'FocalLength', 181 => 0x12, 219 => 0xa, 220 => 0xb, 224 => [0xc,0x3c], 314 => 0x1, 355 => 0x1d, 364 => 0x403, 387 => 0x1500, 406 => 0xe, 432 => 0x1278, 433 => 0x1134, 434 => 0x32c, 435 => 0x32c, 436 => 0x30a, 483 => 'FocalLength' },
      +	'focallength2' => { 425 => [0x23,0x25,0x29] },
      +	'focallengthin35mmformat' => { 119 => 0xa405, 394 => 0xa01a, 483 => 'FocalLengthIn35mmFilm' },
      +	'focallengthtelezoom' => { 406 => 0x10 },
      +	'focalplaneafpointarea' => { 437 => 0x2 },
      +	'focalplaneafpointlocation1' => { 437 => 0x6 },
      +	'focalplaneafpointlocation10' => { 437 => 0x2a },
      +	'focalplaneafpointlocation11' => { 437 => 0x2e },
      +	'focalplaneafpointlocation12' => { 437 => 0x32 },
      +	'focalplaneafpointlocation13' => { 437 => 0x36 },
      +	'focalplaneafpointlocation14' => { 437 => 0x3a },
      +	'focalplaneafpointlocation15' => { 437 => 0x3e },
      +	'focalplaneafpointlocation2' => { 437 => 0xa },
      +	'focalplaneafpointlocation3' => { 437 => 0xe },
      +	'focalplaneafpointlocation4' => { 437 => 0x12 },
      +	'focalplaneafpointlocation5' => { 437 => 0x16 },
      +	'focalplaneafpointlocation6' => { 437 => 0x1a },
      +	'focalplaneafpointlocation7' => { 437 => 0x1e },
      +	'focalplaneafpointlocation8' => { 437 => 0x22 },
      +	'focalplaneafpointlocation9' => { 437 => 0x26 },
      +	'focalplaneafpointsused' => { 437 => 0x1 },
      +	'focalplanediagonal' => { 298 => 0x103, 302 => 0x205 },
      +	'focalplaneresolutionunit' => { 119 => 0xa210, 483 => 'FocalPlaneResolutionUnit' },
      +	'focalplanexresolution' => { 119 => 0xa20e, 483 => 'FocalPlaneXResolution' },
      +	'focalplanexsize' => { 59 => 0x2 },
      +	'focalplanexunknown' => { 59 => 0x2 },
      +	'focalplaneyresolution' => { 119 => 0xa20f, 483 => 'FocalPlaneYResolution' },
      +	'focalplaneysize' => { 59 => 0x3 },
      +	'focalplaneyunknown' => { 59 => 0x3 },
      +	'focalpointx' => { 463 => 'FocalPointX' },
      +	'focalpointy' => { 463 => 'FocalPointY' },
      +	'focaltype' => { 10 => 0x2d, 59 => 0x0 },
       	'focalunits' => { 34 => 0x19 },
      -	'focus' => { 249 => 0x8 },
      -	'focusarea' => { 176 => 0x31 },
      -	'focusareaselection' => { 277 => '15.2' },
      +	'focus' => { 262 => 0x8 },
      +	'focusarea' => { 181 => 0x31 },
      +	'focusareaselection' => { 290 => '15.2' },
      +	'focusbracket' => { 320 => 0xbd },
      +	'focusbracketstepsize' => { 297 => 0x308 },
       	'focuscontinuous' => { 34 => 0x20 },
      -	'focusdisplayaiservoandmf' => { 81 => 0x515 },
      -	'focusdistance' => { 159 => 'FocusDistance', 176 => 0x13, 182 => 0x49bb, 212 => 0x9, 213 => 0xa, 217 => [0xb,0x4f], 286 => 0x305, 300 => 0x0, 304 => 0x304, 305 => 0x304 },
      -	'focusdistancelower' => { 7 => 0x45, 9 => 0x8e, 11 => 0x45, 13 => 0x56, 14 => 0x45, 15 => 0x45, 16 => 0x52, 17 => 0x52, 18 => 0x56, 20 => 0x52, 21 => 0x8e, 22 => 0x59, 23 => 0x57, 24 => 0x8e, 25 => 0x94, 26 => 0x95, 27 => 0xa7, 28 => 0x56, 29 => 0xa7, 55 => 0x15, 74 => 0x14 },
      -	'focusdistanceupper' => { 7 => 0x43, 9 => 0x8c, 11 => 0x43, 13 => 0x54, 14 => 0x43, 15 => 0x43, 16 => 0x50, 17 => 0x50, 18 => 0x54, 20 => 0x50, 21 => 0x8c, 22 => 0x57, 23 => 0x55, 24 => 0x8c, 25 => 0x92, 26 => 0x93, 27 => 0xa5, 28 => 0x54, 29 => 0xa5, 55 => 0x14, 74 => 0x13 },
      -	'focusholdbutton' => { 179 => 0x44 },
      -	'focusinfoversion' => { 286 => 0x0 },
      -	'focusingscreen' => { 80 => 0x0, 81 => 0x80b, 86 => 0x0 },
      -	'focuslocation' => { 406 => 0x2027 },
      -	'focuslocked' => { 175 => 0x14 },
      -	'focusmode' => { 34 => 0x7, 109 => 0x3, 110 => [0x3003,0xd], 124 => 0x1021, 134 => 0x3f5, 136 => 0x38, 152 => 'FocusMode', 176 => 0x30, 178 => 0xe, 179 => 0xc, 219 => 0x7, 283 => 0x301, 288 => 0x100b, 306 => 0x7, 341 => 0xd, 348 => 0x3, 373 => 0x1006, 386 => [0xb,0x5], 392 => [0x15,0x1d], 393 => 0x4d, 394 => 0x4d, 406 => [0xb042,0xb04e,0x201b], 411 => 0x13, 429 => 0x16 },
      -	'focusmode2' => { 123 => '0.1', 322 => '3.1', 411 => [0x2c,0x2e,0x32] },
      -	'focusmodesetting' => { 268 => '10.1', 390 => 0x14, 391 => 0x15, 393 => 0x10, 394 => 0xf, 395 => 0x6 },
      -	'focusmodeswitch' => { 179 => 0x58, 393 => 0x2e },
      -	'focuspixel' => { 124 => 0x1023 },
      -	'focuspointwrap' => { 266 => '2.2', 267 => '2.2', 269 => '2.1', 270 => '2.1', 274 => '1.1', 275 => '2.2', 276 => '1.1', 279 => '2.2', 280 => '2.1', 281 => '2.5' },
      -	'focusposition' => { 212 => 0x8, 213 => 0x8, 217 => 0x9, 341 => 0x10, 404 => 0x9bb },
      -	'focusposition2' => { 411 => [0x29,0x2b,0x2f], 429 => 0x2d, 432 => 0x20 },
      -	'focusprocess' => { 283 => 0x302 },
      -	'focusrange' => { 34 => 0x12, 288 => 0x100a },
      -	'focusrangeindex' => { 332 => '3.1' },
      -	'focusringrotation' => { 81 => 0x713 },
      -	'focussetting' => { 383 => 0x6 },
      -	'focusstatus' => { 392 => 0x19, 393 => 0x53, 394 => 0x53 },
      -	'focusstepcount' => { 286 => 0x301, 288 => 0x100e },
      -	'focusstepinfinity' => { 286 => 0x303, 288 => 0x103b },
      -	'focusstepnear' => { 286 => 0x304, 288 => 0x103c },
      -	'focustrackinglockon' => { 266 => ['1.5','4.1'], 267 => '1.4', 274 => '0.4', 275 => '3.1', 276 => '0.4', 279 => '1.4' },
      -	'focuswarning' => { 124 => 0x1301 },
      -	'foldername' => { 176 => 0x27 },
      -	'foldernumber' => { 393 => 0x9a, 395 => [0x402,0x114,0x316] },
      -	'fontcomposite' => { 493 => [\'Fonts','FontsComposite'] },
      -	'fontface' => { 493 => [\'Fonts','FontsFontFace'] },
      -	'fontfamily' => { 493 => [\'Fonts','FontsFontFamily'] },
      -	'fontfilename' => { 493 => [\'Fonts','FontsFontFileName'] },
      -	'fontname' => { 493 => [\'Fonts','FontsFontName'] },
      -	'fonts' => { 493 => 'Fonts' },
      -	'fonttype' => { 493 => [\'Fonts','FontsFontType'] },
      -	'fontversion' => { 493 => [\'Fonts','FontsVersionString'] },
      -	'for' => { 357 => 'For' },
      -	'forcewrite' => { 117 => 'ForceWrite' },
      -	'format' => { 366 => "\xa9fmt", 447 => 'Format', 465 => 'format', 486 => 'Format' },
      -	'forwardlock' => { 483 => 'forwardlock' },
      -	'forwardmatrix1' => { 116 => 0xc714 },
      -	'forwardmatrix2' => { 116 => 0xc715 },
      -	'fossilspecimen' => { 115 => 'FossilSpecimen' },
      -	'fossilspecimenmaterialsampleid' => { 115 => [\'FossilSpecimen','FossilSpecimenMaterialSampleID'] },
      -	'framecount' => { 64 => [0x2,0x4] },
      -	'frameheight' => { 124 => 0x3822 },
      -	'framenum' => { 352 => 0xd7 },
      -	'framenumber' => { 124 => 0x8003, 182 => 0x3c, 341 => 0x29 },
      -	'framerate' => { 64 => [0x1,0x6], 116 => 0xc764, 124 => 0x3820 },
      -	'framereadouttime' => { 360 => 'camera.framereadouttimeinmicroseconds' },
      -	'framewidth' => { 124 => 0x3821 },
      -	'framing' => { 477 => 'framing' },
      -	'freebytes' => { 94 => 0x1 },
      -	'freememorycardimages' => { 177 => [0x37,0x54], 178 => [0x2d,0x4a], 179 => 0x32 },
      -	'fujiflashmode' => { 124 => 0x1010 },
      -	'fullhdhighspeedrec' => { 124 => 0x3824 },
      -	'fullimagesize' => { 406 => 0xb02b },
      -	'fullpanoheightpixels' => { 450 => 'FullPanoHeightPixels', 451 => 'FullPanoHeightPixels' },
      -	'fullpanowidthpixels' => { 450 => 'FullPanoWidthPixels', 451 => 'FullPanoWidthPixels' },
      -	'fullpresssnap' => { 373 => 0x100d },
      -	'fullsizeimage' => { 158 => 'data' },
      -	'fullsizeimagename' => { 158 => '1Name' },
      -	'fullsizeimagetype' => { 158 => '0Type' },
      -	'func1button' => { 269 => '14.1', 270 => '14.1', 280 => '14.1' },
      -	'func1buttonplusdials' => { 269 => '42.1', 270 => '42.1', 280 => '42.1' },
      -	'func2button' => { 269 => '80.1', 270 => '80.1', 280 => '80.1' },
      -	'func2buttonplusdials' => { 269 => '81.1' },
      -	'func3button' => { 269 => '83.1' },
      -	'funcbutton' => { 266 => ['14.1','15.1'], 267 => '14.1', 275 => '28.1', 276 => '13.1', 279 => '14.1', 281 => '14.1' },
      -	'funcbuttonplusdials' => { 266 => ['14.2','15.2'], 267 => '14.2', 275 => '31.1', 279 => '42.1' },
      -	'functionbutton' => { 273 => '13.1', 277 => '5.2' },
      -	'gainbase' => { 287 => 0x610 },
      -	'gaincontrol' => { 116 => 0xa407, 468 => 'GainControl' },
      -	'gamma' => { 116 => 0xa500, 134 => 0x8fe, 311 => 0x11c, 469 => 'Gamma' },
      -	'gammablackpoint' => { 102 => 0xc },
      -	'gammacolortone' => { 102 => 0x3 },
      -	'gammacompensatedvalue' => { 130 => 0x91 },
      -	'gammacontrast' => { 102 => 0x2 },
      -	'gammacurveoutputrange' => { 102 => 0xf },
      -	'gammahighlight' => { 102 => 0xa },
      -	'gammalinear' => { 100 => 0x20200 },
      -	'gammamidpoint' => { 102 => 0xe },
      -	'gammasaturation' => { 102 => 0x4 },
      -	'gammashadow' => { 102 => 0x9 },
      -	'gammasharpnessstrength' => { 102 => 0x8 },
      -	'gammaunsharpmaskfineness' => { 102 => 0x6 },
      -	'gammaunsharpmaskstrength' => { 102 => 0x5 },
      -	'gammaunsharpmaskthreshold' => { 102 => 0x7 },
      -	'gammawhitepoint' => { 102 => 0xd },
      -	'gdalmetadata' => { 116 => 0xa480 },
      -	'gdalnodata' => { 116 => 0xa481 },
      -	'geimagesize' => { 124 => 0x1304 },
      -	'gemake' => { 126 => 0x300 },
      -	'gemodel' => { 126 => 0x207 },
      -	'genre' => { 358 => ['gnre',"\xa9gen"], 360 => 'genre', 366 => ['gnre',"\xa9gen"], 474 => 'Genre', 478 => 'genre', 488 => 'genre' },
      -	'genrecvid' => { 474 => [\'Genre','GenreCvId'] },
      -	'genrecvtermid' => { 474 => [\'Genre','GenreCvTermId'] },
      -	'genrecvtermname' => { 474 => [\'Genre','GenreCvTermName'] },
      -	'genrecvtermrefinedabout' => { 474 => [\'Genre','GenreCvTermRefinedAbout'] },
      -	'genreid' => { 358 => 'geID' },
      -	'geography' => { 479 => 'geography' },
      -	'geologicalcontext' => { 115 => 'GeologicalContext' },
      -	'geologicalcontextbed' => { 115 => [\'GeologicalContext','GeologicalContextBed'] },
      -	'geologicalcontextformation' => { 115 => [\'GeologicalContext','GeologicalContextFormation'] },
      -	'geologicalcontextgroup' => { 115 => [\'GeologicalContext','GeologicalContextGroup'] },
      -	'geologicalcontextid' => { 115 => [\'GeologicalContext','GeologicalContextGeologicalContextID'] },
      -	'geologicalcontextmember' => { 115 => [\'GeologicalContext','GeologicalContextMember'] },
      -	'geosync' => { 117 => 'Geosync' },
      -	'geotag' => { 117 => 'Geotag' },
      -	'geotiffasciiparams' => { 116 => 0x87b1 },
      -	'geotiffdirectory' => { 116 => 0x87af },
      -	'geotiffdoubleparams' => { 116 => 0x87b0 },
      -	'geotime' => { 117 => 'Geotime' },
      -	'giftftppriority' => { 452 => 'GIFTFtpPriority' },
      -	'gimbalpitchdegree' => { 113 => 'GimbalPitchDegree' },
      -	'gimbalreverse' => { 113 => 'GimbalReverse' },
      -	'gimbalrolldegree' => { 113 => 'GimbalRollDegree' },
      -	'gimbalyawdegree' => { 113 => 'GimbalYawDegree' },
      -	'globalaltitude' => { 355 => 0x419 },
      -	'globalangle' => { 355 => 0x40d },
      -	'good' => { 488 => 'good' },
      -	'googlehostheader' => { 358 => 'gshh' },
      -	'googlepingmessage' => { 358 => 'gspm' },
      -	'googlepingurl' => { 358 => 'gspu' },
      -	'googleplusuploadcode' => { 116 => 0x9009 },
      -	'googlesourcedata' => { 358 => 'gssd' },
      -	'googlestarttime' => { 358 => 'gsst' },
      -	'googletrackduration' => { 358 => 'gstd' },
      -	'goprotype' => { 366 => 'GoPr' },
      -	'gpsaltitude' => { 127 => 0x6, 156 => 'Altitude', 468 => 'GPSAltitude' },
      -	'gpsaltituderef' => { 127 => 0x5, 468 => 'GPSAltitudeRef' },
      -	'gpsareainformation' => { 127 => 0x1c, 468 => 'GPSAreaInformation' },
      -	'gpscoordinates' => { 360 => 'location.ISO6709', 366 => "\xa9xyz" },
      -	'gpsdatestamp' => { 127 => 0x1d },
      -	'gpsdatetime' => { 156 => 'DateTime', 468 => 'GPSTimeStamp' },
      -	'gpsdestbearing' => { 127 => 0x18, 156 => 'Bearing', 468 => 'GPSDestBearing' },
      -	'gpsdestbearingref' => { 127 => 0x17, 468 => 'GPSDestBearingRef' },
      -	'gpsdestdistance' => { 127 => 0x1a, 156 => 'Distance', 468 => 'GPSDestDistance' },
      -	'gpsdestdistanceref' => { 127 => 0x19, 468 => 'GPSDestDistanceRef' },
      -	'gpsdestlatitude' => { 127 => 0x14, 468 => 'GPSDestLatitude' },
      -	'gpsdestlatituderef' => { 127 => 0x13 },
      -	'gpsdestlongitude' => { 127 => 0x16, 468 => 'GPSDestLongitude' },
      -	'gpsdestlongituderef' => { 127 => 0x15 },
      -	'gpsdifferential' => { 127 => 0x1e, 156 => 'Differential', 468 => 'GPSDifferential' },
      -	'gpsdop' => { 127 => 0xb, 468 => 'GPSDOP' },
      -	'gpshpositioningerror' => { 127 => 0x1f, 468 => 'GPSHPositioningError' },
      -	'gpsimgdirection' => { 127 => 0x11, 468 => 'GPSImgDirection' },
      -	'gpsimgdirectionref' => { 127 => 0x10, 468 => 'GPSImgDirectionRef' },
      -	'gpslatitude' => { 113 => 'GpsLatitude', 127 => 0x2, 156 => 'Latitude', 468 => 'GPSLatitude' },
      -	'gpslatituderef' => { 127 => 0x1 },
      -	'gpslongitude' => { 113 => 'GpsLongitude', 127 => 0x4, 156 => 'Longitude', 468 => 'GPSLongitude' },
      -	'gpslongituderef' => { 127 => 0x3 },
      -	'gpslongtitude' => { 113 => 'GpsLongtitude' },
      -	'gpsmapdatum' => { 127 => 0x12, 156 => 'Datum', 468 => 'GPSMapDatum' },
      -	'gpsmeasuremode' => { 127 => 0xa, 156 => 'MeasureMode', 468 => 'GPSMeasureMode' },
      -	'gpsprocessingmethod' => { 127 => 0x1b, 468 => 'GPSProcessingMethod' },
      -	'gpssatellites' => { 127 => 0x8, 156 => 'Satellites', 468 => 'GPSSatellites' },
      -	'gpsspeed' => { 127 => 0xd, 156 => 'Speed', 468 => 'GPSSpeed' },
      -	'gpsspeedref' => { 127 => 0xc, 468 => 'GPSSpeedRef' },
      -	'gpsstatus' => { 127 => 0x9, 468 => 'GPSStatus' },
      -	'gpsstring' => { 134 => 0x402 },
      -	'gpstimestamp' => { 127 => 0x7 },
      -	'gpstrack' => { 127 => 0xf, 156 => 'Heading', 468 => 'GPSTrack' },
      -	'gpstrackref' => { 127 => 0xe, 468 => 'GPSTrackRef' },
      -	'gpsversionid' => { 127 => 0x0, 468 => 'GPSVersionID' },
      -	'gradation' => { 283 => 0x50f },
      -	'gradientbasedcorractive' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionActive'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionActive'] },
      -	'gradientbasedcorramount' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionAmount'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionAmount'] },
      -	'gradientbasedcorrbrightness' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalBrightness'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalBrightness'] },
      -	'gradientbasedcorrclarity' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity'] },
      -	'gradientbasedcorrclarity2012' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity2012'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity2012'] },
      -	'gradientbasedcorrcontrast' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast'] },
      -	'gradientbasedcorrcontrast2012' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast2012'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast2012'] },
      -	'gradientbasedcorrdefringe' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalDefringe'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalDefringe'] },
      -	'gradientbasedcorrections' => { 462 => 'GradientBasedCorrections', 464 => 'GradientBasedCorrections' },
      -	'gradientbasedcorrexposure' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure'] },
      -	'gradientbasedcorrexposure2012' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure2012'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure2012'] },
      -	'gradientbasedcorrhighlights2012' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalHighlights2012'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalHighlights2012'] },
      -	'gradientbasedcorrhue' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalToningHue'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalToningHue'] },
      -	'gradientbasedcorrluminancenoise' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalLuminanceNoise'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalLuminanceNoise'] },
      -	'gradientbasedcorrmaskalpha' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAlpha'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAlpha'] },
      -	'gradientbasedcorrmaskangle' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAngle'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAngle'] },
      -	'gradientbasedcorrmaskbottom' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksBottom'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksBottom'] },
      -	'gradientbasedcorrmaskcentervalue' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterValue'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterValue'] },
      -	'gradientbasedcorrmaskcenterweight' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterWeight'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterWeight'] },
      -	'gradientbasedcorrmaskdabs' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksDabs'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksDabs'] },
      -	'gradientbasedcorrmaskfeather' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFeather'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFeather'] },
      -	'gradientbasedcorrmaskflipped' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlipped'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlipped'] },
      -	'gradientbasedcorrmaskflow' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlow'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlow'] },
      -	'gradientbasedcorrmaskfullx' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullX'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullX'] },
      -	'gradientbasedcorrmaskfully' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullY'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullY'] },
      -	'gradientbasedcorrmaskleft' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksLeft'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksLeft'] },
      -	'gradientbasedcorrmaskmidpoint' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMidpoint'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMidpoint'] },
      -	'gradientbasedcorrmaskperimetervalue' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksPerimeterValue'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksPerimeterValue'] },
      -	'gradientbasedcorrmaskradius' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRadius'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRadius'] },
      -	'gradientbasedcorrmaskright' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRight'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRight'] },
      -	'gradientbasedcorrmaskroundness' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRoundness'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRoundness'] },
      -	'gradientbasedcorrmasks' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasks'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasks'] },
      -	'gradientbasedcorrmasksizex' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeX'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeX'] },
      -	'gradientbasedcorrmasksizey' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeY'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeY'] },
      -	'gradientbasedcorrmasktop' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksTop'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksTop'] },
      -	'gradientbasedcorrmaskvalue' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskValue'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskValue'] },
      -	'gradientbasedcorrmaskversion' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksVersion'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksVersion'] },
      -	'gradientbasedcorrmaskwhat' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksWhat'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksWhat'] },
      -	'gradientbasedcorrmaskx' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksX'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksX'] },
      -	'gradientbasedcorrmasky' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksY'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksY'] },
      -	'gradientbasedcorrmaskzerox' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroX'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroX'] },
      -	'gradientbasedcorrmaskzeroy' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroY'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroY'] },
      -	'gradientbasedcorrmoire' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalMoire'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalMoire'] },
      -	'gradientbasedcorrsaturation' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSaturation','GradientBasedCorrectionsLocalToningSaturation'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSaturation','GradientBasedCorrectionsLocalToningSaturation'] },
      -	'gradientbasedcorrshadows2012' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalShadows2012'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalShadows2012'] },
      -	'gradientbasedcorrsharpness' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSharpness'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSharpness'] },
      -	'gradientbasedcorrtemperature' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTemperature'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTemperature'] },
      -	'gradientbasedcorrtint' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTint'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTint'] },
      -	'gradientbasedcorrwhat' => { 462 => [\'GradientBasedCorrections','GradientBasedCorrectionsWhat'], 464 => [\'GradientBasedCorrections','GradientBasedCorrectionsWhat'] },
      -	'grainamount' => { 462 => 'GrainAmount', 464 => 'GrainAmount' },
      -	'graineffect' => { 124 => 0x1047 },
      -	'grainfrequency' => { 462 => 'GrainFrequency', 464 => 'GrainFrequency' },
      -	'grainsize' => { 462 => 'GrainSize', 464 => 'GrainSize' },
      -	'graymixeraqua' => { 462 => 'GrayMixerAqua', 464 => 'GrayMixerAqua' },
      -	'graymixerblue' => { 462 => 'GrayMixerBlue', 464 => 'GrayMixerBlue' },
      -	'graymixergreen' => { 462 => 'GrayMixerGreen', 464 => 'GrayMixerGreen' },
      -	'graymixermagenta' => { 462 => 'GrayMixerMagenta', 464 => 'GrayMixerMagenta' },
      -	'graymixerorange' => { 462 => 'GrayMixerOrange', 464 => 'GrayMixerOrange' },
      -	'graymixerpurple' => { 462 => 'GrayMixerPurple', 464 => 'GrayMixerPurple' },
      -	'graymixerred' => { 462 => 'GrayMixerRed', 464 => 'GrayMixerRed' },
      -	'graymixeryellow' => { 462 => 'GrayMixerYellow', 464 => 'GrayMixerYellow' },
      -	'graypoint' => { 439 => 0x8021 },
      -	'grayresponseunit' => { 116 => 0x122 },
      -	'greencurvelimits' => { 105 => 0x1c4 },
      -	'greencurvepoints' => { 104 => 0x53, 105 => 0x19a },
      -	'greenhsl' => { 100 => 0x20913 },
      -	'greenhue' => { 462 => 'GreenHue', 464 => 'GreenHue' },
      -	'greensaturation' => { 462 => 'GreenSaturation', 464 => 'GreenSaturation' },
      -	'griddisplay' => { 266 => '13.3', 267 => '4.3', 269 => '4.2', 270 => '4.2', 271 => '2.2', 275 => '10.5', 276 => '3.4', 277 => '6.1', 279 => '4.4', 280 => '4.2', 281 => '4.2' },
      -	'gripbatteryadload' => { 320 => 0x5 },
      -	'gripbatteryadnoload' => { 320 => 0x4 },
      -	'gripbatterystate' => { 320 => '1.2' },
      -	'groupareaafillumination' => { 267 => '46.4', 270 => '47.4', 279 => '47.4' },
      -	'grouping' => { 358 => ['grup',"\xa9grp"], 366 => "\xa9grp" },
      -	'guid' => { 358 => 'GUID' },
      -	'h2resetblackpixels' => { 134 => 0x18a6 },
      -	'h3resetblackcolumns' => { 134 => 0x18ce },
      -	'h3resetblackpixels' => { 134 => 0x18b0 },
      -	'halftonehints' => { 116 => 0x141 },
      -	'hardlink' => { 117 => 'HardLink' },
      -	'hasalternative' => { 478 => 'hasAlternative' },
      -	'hascorrection' => { 478 => 'hasCorrection' },
      -	'hascorrectiona-lang' => { 478 => [\'hasCorrection','hasCorrectionA-lang'] },
      -	'hascorrectiona-platform' => { 478 => [\'hasCorrection','hasCorrectionA-platform'] },
      -	'hascorrectiontext' => { 478 => [\'hasCorrection','hasCorrectionText'] },
      -	'hascrop' => { 462 => 'HasCrop', 464 => 'HasCrop' },
      -	'hasextendedxmp' => { 490 => 'HasExtendedXMP' },
      -	'hassettings' => { 462 => 'HasSettings', 464 => 'HasSettings' },
      -	'hastranslation' => { 478 => 'hasTranslation' },
      -	'hasvisibleoverprint' => { 493 => 'HasVisibleOverprint' },
      -	'hasvisibletransparency' => { 493 => 'HasVisibleTransparency' },
      -	'hdr' => { 58 => 0x1, 209 => 0x4, 306 => 0x9e, 341 => 0x85, 406 => 0x200a },
      -	'hdreffect' => { 58 => 0x2 },
      +	'focusdisplayaiservoandmf' => { 84 => 0x515 },
      +	'focusdistance' => { 163 => 'FocusDistance', 181 => 0x13, 187 => 0x49bb, 219 => 0x9, 220 => 0xa, 224 => [0xb,0x4f], 300 => 0x305, 314 => 0x0, 318 => 0x304, 319 => 0x304 },
      +	'focusdistancelower' => { 7 => 0x45, 9 => 0x8e, 11 => 0x45, 13 => 0x56, 14 => 0x45, 15 => 0x45, 16 => 0x52, 17 => 0x52, 18 => 0x56, 20 => 0x52, 21 => 0x8e, 22 => 0x59, 23 => 0x57, 24 => 0x8e, 25 => 0x94, 26 => 0x95, 27 => 0xa7, 28 => 0x56, 29 => 0xa7, 57 => 0x15, 77 => 0x14 },
      +	'focusdistanceupper' => { 7 => 0x43, 9 => 0x8c, 11 => 0x43, 13 => 0x54, 14 => 0x43, 15 => 0x43, 16 => 0x50, 17 => 0x50, 18 => 0x54, 20 => 0x50, 21 => 0x8c, 22 => 0x57, 23 => 0x55, 24 => 0x8c, 25 => 0x92, 26 => 0x93, 27 => 0xa5, 28 => 0x54, 29 => 0xa5, 57 => 0x14, 77 => 0x13 },
      +	'focusholdbutton' => { 184 => 0x44 },
      +	'focusinfoversion' => { 300 => 0x0 },
      +	'focusingscreen' => { 83 => 0x0, 84 => 0x80b, 89 => 0x0 },
      +	'focuslocation' => { 420 => 0x2027 },
      +	'focuslocked' => { 180 => 0x14 },
      +	'focusmode' => { 34 => 0x7, 112 => 0x3, 113 => [0x3003,0xd], 127 => 0x1021, 138 => 0x3f5, 140 => 0x38, 156 => 'FocusMode', 181 => 0x30, 183 => 0xe, 184 => 0xc, 226 => 0x7, 297 => 0x301, 302 => 0x100b, 320 => 0x7, 355 => 0xd, 362 => 0x3, 387 => 0x1006, 400 => [0xb,0x5], 406 => [0x15,0x1d], 407 => 0x4d, 408 => 0x4d, 420 => [0xb042,0xb04e,0x201b], 425 => 0x13, 444 => 0x16 },
      +	'focusmode2' => { 126 => '0.1', 336 => '3.1', 425 => [0x2c,0x2e,0x32] },
      +	'focusmodesetting' => { 281 => '10.1', 404 => 0x14, 405 => 0x15, 407 => 0x10, 408 => 0xf, 409 => 0x6 },
      +	'focusmodeswitch' => { 184 => 0x58, 407 => 0x2e },
      +	'focuspeakingdisplay' => { 295 => 0x235 },
      +	'focuspeakinghighlightcolor' => { 295 => 0x4b },
      +	'focuspeakinglevel' => { 295 => 0x49 },
      +	'focuspixel' => { 127 => 0x1023 },
      +	'focuspointlock' => { 295 => 0x1d3 },
      +	'focuspointpersistence' => { 295 => 0x105 },
      +	'focuspointwrap' => { 279 => '2.2', 280 => '2.2', 282 => '2.1', 283 => '2.1', 287 => '1.1', 288 => '2.2', 289 => '1.1', 292 => '2.2', 293 => '2.1', 294 => '2.5', 295 => 0x16 },
      +	'focusposition' => { 219 => 0x8, 220 => 0x8, 224 => 0x9, 355 => 0x10, 418 => 0x9bb },
      +	'focusposition2' => { 425 => [0x29,0x2b,0x2f], 444 => 0x2d, 447 => 0x20 },
      +	'focuspositionhorizontal' => { 194 => 0x43 },
      +	'focuspositionvertical' => { 194 => 0x45 },
      +	'focusprocess' => { 297 => 0x302 },
      +	'focusrange' => { 34 => 0x12, 302 => 0x100a },
      +	'focusrangeindex' => { 346 => '3.1' },
      +	'focusringrotation' => { 84 => 0x713 },
      +	'focussetting' => { 397 => 0x6 },
      +	'focusshiftexposurelock' => { 228 => 0xe8, 229 => 0xf4, 252 => 0xc446 },
      +	'focusshiftinterval' => { 228 => 0xe4, 229 => 0xf0, 252 => 0xc442 },
      +	'focusshiftnumbershots' => { 228 => 0xdc, 229 => 0xe8, 252 => 0xc43a },
      +	'focusshiftshooting' => { 261 => 0x7844 },
      +	'focusshiftstepwidth' => { 228 => 0xe0, 229 => 0xec, 252 => 0xc43e },
      +	'focusstatus' => { 406 => 0x19, 407 => 0x53, 408 => 0x53 },
      +	'focusstepcount' => { 300 => 0x301, 302 => 0x100e },
      +	'focusstepinfinity' => { 300 => 0x303, 302 => 0x103b },
      +	'focusstepnear' => { 300 => 0x304, 302 => 0x103c },
      +	'focustrackinglockon' => { 279 => ['1.5','4.1'], 280 => '1.4', 287 => '0.4', 288 => '3.1', 289 => '0.4', 292 => '1.4' },
      +	'focuswarning' => { 127 => 0x1301 },
      +	'foldername' => { 181 => 0x27 },
      +	'foldernumber' => { 407 => 0x9a, 409 => [0x402,0x114,0x316] },
      +	'fontcomposite' => { 508 => [\'Fonts','FontsComposite'] },
      +	'fontface' => { 508 => [\'Fonts','FontsFontFace'] },
      +	'fontfamily' => { 508 => [\'Fonts','FontsFontFamily'] },
      +	'fontfilename' => { 508 => [\'Fonts','FontsFontFileName'] },
      +	'fontname' => { 508 => [\'Fonts','FontsFontName'] },
      +	'fonts' => { 508 => 'Fonts' },
      +	'fonttype' => { 508 => [\'Fonts','FontsFontType'] },
      +	'fontversion' => { 508 => [\'Fonts','FontsVersionString'] },
      +	'for' => { 371 => 'For' },
      +	'forcewrite' => { 120 => 'ForceWrite' },
      +	'format' => { 380 => "\xa9fmt", 462 => 'Format', 480 => 'format', 501 => 'Format' },
      +	'forwardlock' => { 498 => 'forwardlock' },
      +	'forwardmatrix1' => { 119 => 0xc714 },
      +	'forwardmatrix2' => { 119 => 0xc715 },
      +	'forwardmatrix3' => { 119 => 0xcd34 },
      +	'fossilspecimen' => { 118 => 'FossilSpecimen' },
      +	'fossilspecimenmaterialsampleid' => { 118 => [\'FossilSpecimen','FossilSpecimenMaterialSampleID'] },
      +	'framecount' => { 67 => [0x2,0x4] },
      +	'frameheight' => { 127 => 0x3822 },
      +	'framenum' => { 366 => 0xd7 },
      +	'framenumber' => { 127 => 0x8003, 187 => 0x3c, 355 => 0x29 },
      +	'framerate' => { 67 => [0x1,0x6], 119 => 0xc764, 127 => 0x3820 },
      +	'framereadouttime' => { 374 => 'camera.framereadouttimeinmicroseconds' },
      +	'framewidth' => { 127 => 0x3821 },
      +	'framing' => { 492 => 'framing' },
      +	'freebytes' => { 97 => 0x1 },
      +	'freememorycardimages' => { 182 => [0x37,0x54], 183 => [0x2d,0x4a], 184 => 0x32 },
      +	'fujiflashmode' => { 127 => 0x1010 },
      +	'fullhdhighspeedrec' => { 127 => 0x3824 },
      +	'fullimagesize' => { 420 => 0xb02b },
      +	'fullpanoheightpixels' => { 465 => 'FullPanoHeightPixels', 466 => 'FullPanoHeightPixels' },
      +	'fullpanowidthpixels' => { 465 => 'FullPanoWidthPixels', 466 => 'FullPanoWidthPixels' },
      +	'fullpresssnap' => { 387 => 0x100d },
      +	'fullsizeimage' => { 162 => 'data' },
      +	'fullsizeimagename' => { 162 => '1Name' },
      +	'fullsizeimagetype' => { 162 => '0Type' },
      +	'func1button' => { 282 => '14.1', 283 => '14.1', 293 => '14.1', 295 => 0x63 },
      +	'func1buttonplaybackmode' => { 295 => 0x1a5 },
      +	'func1buttonplusdials' => { 282 => '42.1', 283 => '42.1', 293 => '42.1' },
      +	'func2button' => { 282 => '80.1', 283 => '80.1', 293 => '80.1', 295 => 0x73 },
      +	'func2buttonplaybackmode' => { 295 => 0x1a7 },
      +	'func2buttonplusdials' => { 282 => '81.1' },
      +	'func3button' => { 282 => '83.1', 295 => 0x119 },
      +	'func3buttonplaybackmode' => { 295 => 0x1a9 },
      +	'func4button' => { 295 => 0x175 },
      +	'func4buttonplaybackmode' => { 295 => 0x1af },
      +	'funcbutton' => { 279 => ['14.1','15.1'], 280 => '14.1', 288 => '28.1', 289 => '13.1', 292 => '14.1', 294 => '14.1' },
      +	'funcbuttonplusdials' => { 279 => ['14.2','15.2'], 280 => '14.2', 288 => '31.1', 292 => '42.1' },
      +	'functionbutton' => { 286 => '13.1', 290 => '5.2' },
      +	'gainbase' => { 301 => 0x610 },
      +	'gaincontrol' => { 119 => 0xa407, 483 => 'GainControl' },
      +	'gamma' => { 119 => 0xa500, 138 => 0x8fe, 308 => 'gAMA', 325 => 0x11c, 484 => 'Gamma' },
      +	'gammablackpoint' => { 105 => 0xc },
      +	'gammacolortone' => { 105 => 0x3 },
      +	'gammacompensatedvalue' => { 133 => 0x91 },
      +	'gammacontrast' => { 105 => 0x2 },
      +	'gammacurveoutputrange' => { 105 => 0xf },
      +	'gammahighlight' => { 105 => 0xa },
      +	'gammalinear' => { 103 => 0x20200 },
      +	'gammamidpoint' => { 105 => 0xe },
      +	'gammasaturation' => { 105 => 0x4 },
      +	'gammashadow' => { 105 => 0x9 },
      +	'gammasharpnessstrength' => { 105 => 0x8 },
      +	'gammaunsharpmaskfineness' => { 105 => 0x6 },
      +	'gammaunsharpmaskstrength' => { 105 => 0x5 },
      +	'gammaunsharpmaskthreshold' => { 105 => 0x7 },
      +	'gammawhitepoint' => { 105 => 0xd },
      +	'garminsettings' => { 380 => 'pmcc' },
      +	'garminsoftware' => { 380 => 'uuid' },
      +	'gdalmetadata' => { 119 => 0xa480 },
      +	'gdalnodata' => { 119 => 0xa481 },
      +	'geimagesize' => { 127 => 0x1304 },
      +	'gemake' => { 129 => 0x300 },
      +	'gemodel' => { 129 => 0x207 },
      +	'genre' => { 372 => ['gnre',"\xa9gen"], 374 => 'genre', 380 => ['gnre',"\xa9gen"], 489 => 'Genre', 493 => 'genre', 503 => 'genre' },
      +	'genrecvid' => { 489 => [\'Genre','GenreCvId'] },
      +	'genrecvtermid' => { 489 => [\'Genre','GenreCvTermId'] },
      +	'genrecvtermname' => { 489 => [\'Genre','GenreCvTermName'] },
      +	'genrecvtermrefinedabout' => { 489 => [\'Genre','GenreCvTermRefinedAbout'] },
      +	'genreid' => { 372 => 'geID' },
      +	'geography' => { 494 => 'geography' },
      +	'geologicalcontext' => { 118 => 'GeologicalContext' },
      +	'geologicalcontextbed' => { 118 => [\'GeologicalContext','GeologicalContextBed'] },
      +	'geologicalcontextformation' => { 118 => [\'GeologicalContext','GeologicalContextFormation'] },
      +	'geologicalcontextgroup' => { 118 => [\'GeologicalContext','GeologicalContextGroup'] },
      +	'geologicalcontextid' => { 118 => [\'GeologicalContext','GeologicalContextGeologicalContextID'] },
      +	'geologicalcontextmember' => { 118 => [\'GeologicalContext','GeologicalContextMember'] },
      +	'geosync' => { 120 => 'Geosync' },
      +	'geotag' => { 120 => 'Geotag' },
      +	'geotiffasciiparams' => { 119 => 0x87b1 },
      +	'geotiffdirectory' => { 119 => 0x87af },
      +	'geotiffdoubleparams' => { 119 => 0x87b0 },
      +	'geotime' => { 120 => 'Geotime' },
      +	'giftftppriority' => { 467 => 'GIFTFtpPriority' },
      +	'gimbalpitchdegree' => { 116 => 'GimbalPitchDegree' },
      +	'gimbalreverse' => { 116 => 'GimbalReverse' },
      +	'gimbalrolldegree' => { 116 => 'GimbalRollDegree' },
      +	'gimbalyawdegree' => { 116 => 'GimbalYawDegree' },
      +	'globalaltitude' => { 369 => 0x419 },
      +	'globalangle' => { 369 => 0x40d },
      +	'good' => { 503 => 'good' },
      +	'googlehostheader' => { 372 => 'gshh' },
      +	'googlepingmessage' => { 372 => 'gspm' },
      +	'googlepingurl' => { 372 => 'gspu' },
      +	'googleplusuploadcode' => { 119 => 0x9009 },
      +	'googlesourcedata' => { 372 => 'gssd' },
      +	'googlestarttime' => { 372 => 'gsst' },
      +	'googletrackduration' => { 372 => 'gstd' },
      +	'goprotype' => { 380 => 'GoPr' },
      +	'gpsaltitude' => { 130 => 0x6, 160 => 'Altitude', 483 => 'GPSAltitude' },
      +	'gpsaltituderef' => { 130 => 0x5, 483 => 'GPSAltitudeRef' },
      +	'gpsareainformation' => { 130 => 0x1c, 483 => 'GPSAreaInformation' },
      +	'gpscoordinates' => { 372 => "\xa9xyz", 374 => 'location.ISO6709', 380 => ['@xyz',"\xa9xyz"] },
      +	'gpsdatestamp' => { 130 => 0x1d },
      +	'gpsdatetime' => { 160 => 'DateTime', 483 => 'GPSTimeStamp' },
      +	'gpsdestbearing' => { 130 => 0x18, 160 => 'Bearing', 483 => 'GPSDestBearing' },
      +	'gpsdestbearingref' => { 130 => 0x17, 483 => 'GPSDestBearingRef' },
      +	'gpsdestdistance' => { 130 => 0x1a, 160 => 'Distance', 483 => 'GPSDestDistance' },
      +	'gpsdestdistanceref' => { 130 => 0x19, 483 => 'GPSDestDistanceRef' },
      +	'gpsdestlatitude' => { 130 => 0x14, 483 => 'GPSDestLatitude' },
      +	'gpsdestlatituderef' => { 130 => 0x13 },
      +	'gpsdestlongitude' => { 130 => 0x16, 483 => 'GPSDestLongitude' },
      +	'gpsdestlongituderef' => { 130 => 0x15 },
      +	'gpsdifferential' => { 130 => 0x1e, 160 => 'Differential', 483 => 'GPSDifferential' },
      +	'gpsdop' => { 130 => 0xb, 483 => 'GPSDOP' },
      +	'gpshpositioningerror' => { 130 => 0x1f, 483 => 'GPSHPositioningError' },
      +	'gpsimgdirection' => { 130 => 0x11, 483 => 'GPSImgDirection' },
      +	'gpsimgdirectionref' => { 130 => 0x10, 483 => 'GPSImgDirectionRef' },
      +	'gpslatitude' => { 116 => 'GpsLatitude', 130 => 0x2, 160 => 'Latitude', 483 => 'GPSLatitude' },
      +	'gpslatituderef' => { 130 => 0x1 },
      +	'gpslongitude' => { 116 => 'GpsLongitude', 130 => 0x4, 160 => 'Longitude', 483 => 'GPSLongitude' },
      +	'gpslongituderef' => { 130 => 0x3 },
      +	'gpslongtitude' => { 116 => 'GpsLongtitude' },
      +	'gpsmapdatum' => { 130 => 0x12, 160 => 'Datum', 483 => 'GPSMapDatum' },
      +	'gpsmeasuremode' => { 130 => 0xa, 160 => 'MeasureMode', 483 => 'GPSMeasureMode' },
      +	'gpsposition' => { 114 => 'Exif-GPSPosition' },
      +	'gpsprocessingmethod' => { 130 => 0x1b, 483 => 'GPSProcessingMethod' },
      +	'gpssatellites' => { 130 => 0x8, 160 => 'Satellites', 483 => 'GPSSatellites' },
      +	'gpsspeed' => { 130 => 0xd, 160 => 'Speed', 483 => 'GPSSpeed' },
      +	'gpsspeedref' => { 130 => 0xc, 483 => 'GPSSpeedRef' },
      +	'gpsstatus' => { 130 => 0x9, 483 => 'GPSStatus' },
      +	'gpsstring' => { 138 => 0x402 },
      +	'gpstimestamp' => { 130 => 0x7 },
      +	'gpstrack' => { 130 => 0xf, 160 => 'Heading', 483 => 'GPSTrack' },
      +	'gpstrackref' => { 130 => 0xe, 483 => 'GPSTrackRef' },
      +	'gpsversionid' => { 130 => 0x0, 483 => 'GPSVersionID' },
      +	'gradation' => { 297 => 0x50f },
      +	'gradientbasedcorractive' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionActive'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionActive'] },
      +	'gradientbasedcorramount' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionAmount'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionAmount'] },
      +	'gradientbasedcorrblacks2012' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalBlacks2012'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalBlacks2012'] },
      +	'gradientbasedcorrbrightness' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalBrightness'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalBrightness'] },
      +	'gradientbasedcorrclarity' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity'] },
      +	'gradientbasedcorrclarity2012' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity2012'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalClarity2012'] },
      +	'gradientbasedcorrcontrast' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast'] },
      +	'gradientbasedcorrcontrast2012' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast2012'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalContrast2012'] },
      +	'gradientbasedcorrcorrectionname' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionName'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionName'] },
      +	'gradientbasedcorrcorrectionsyncid' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionSyncID'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionSyncID'] },
      +	'gradientbasedcorrdefringe' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalDefringe'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalDefringe'] },
      +	'gradientbasedcorrdehaze' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalDehaze'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalDehaze'] },
      +	'gradientbasedcorrections' => { 477 => 'GradientBasedCorrections', 479 => 'GradientBasedCorrections' },
      +	'gradientbasedcorrexposure' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure'] },
      +	'gradientbasedcorrexposure2012' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure2012'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalExposure2012'] },
      +	'gradientbasedcorrhighlights2012' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalHighlights2012'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalHighlights2012'] },
      +	'gradientbasedcorrhue' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalHue'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalHue'] },
      +	'gradientbasedcorrluminancenoise' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalLuminanceNoise'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalLuminanceNoise'] },
      +	'gradientbasedcorrmaskalpha' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAlpha'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAlpha'] },
      +	'gradientbasedcorrmaskangle' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAngle'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksAngle'] },
      +	'gradientbasedcorrmaskbottom' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksBottom'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksBottom'] },
      +	'gradientbasedcorrmaskcentervalue' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterValue'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterValue'] },
      +	'gradientbasedcorrmaskcenterweight' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterWeight'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCenterWeight'] },
      +	'gradientbasedcorrmaskdabs' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksDabs'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksDabs'] },
      +	'gradientbasedcorrmaskfeather' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFeather'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFeather'] },
      +	'gradientbasedcorrmaskflipped' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlipped'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlipped'] },
      +	'gradientbasedcorrmaskflow' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlow'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFlow'] },
      +	'gradientbasedcorrmaskfullx' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullX'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullX'] },
      +	'gradientbasedcorrmaskfully' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullY'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksFullY'] },
      +	'gradientbasedcorrmaskinputdigest' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksInputDigest'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksInputDigest'] },
      +	'gradientbasedcorrmaskleft' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksLeft'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksLeft'] },
      +	'gradientbasedcorrmaskmaskactive' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskActive'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskActive'] },
      +	'gradientbasedcorrmaskmaskblendmode' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskBlendMode'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskBlendMode'] },
      +	'gradientbasedcorrmaskmaskdigest' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskDigest'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskDigest'] },
      +	'gradientbasedcorrmaskmaskinverted' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskInverted'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskInverted'] },
      +	'gradientbasedcorrmaskmaskname' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskName'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskName'] },
      +	'gradientbasedcorrmaskmasks' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasks'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasks'] },
      +	'gradientbasedcorrmaskmasksalpha' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksAlpha'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksAlpha'] },
      +	'gradientbasedcorrmaskmasksangle' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksAngle'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksAngle'] },
      +	'gradientbasedcorrmaskmasksbottom' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksBottom'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksBottom'] },
      +	'gradientbasedcorrmaskmaskscentervalue' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksCenterValue'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksCenterValue'] },
      +	'gradientbasedcorrmaskmaskscenterweight' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksCenterWeight'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksCenterWeight'] },
      +	'gradientbasedcorrmaskmasksdabs' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksDabs'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksDabs'] },
      +	'gradientbasedcorrmaskmasksfeather' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksFeather'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksFeather'] },
      +	'gradientbasedcorrmaskmasksflipped' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksFlipped'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksFlipped'] },
      +	'gradientbasedcorrmaskmasksflow' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksFlow'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksFlow'] },
      +	'gradientbasedcorrmaskmasksfullx' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksFullX'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksFullX'] },
      +	'gradientbasedcorrmaskmasksfully' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksFullY'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksFullY'] },
      +	'gradientbasedcorrmaskmasksinputdigest' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksInputDigest'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksInputDigest'] },
      +	'gradientbasedcorrmaskmasksleft' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksLeft'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksLeft'] },
      +	'gradientbasedcorrmaskmasksmaskactive' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskActive'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskActive'] },
      +	'gradientbasedcorrmaskmasksmaskblendmode' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskBlendMode'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskBlendMode'] },
      +	'gradientbasedcorrmaskmasksmaskdigest' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskDigest'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskDigest'] },
      +	'gradientbasedcorrmaskmasksmaskinverted' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskInverted'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskInverted'] },
      +	'gradientbasedcorrmaskmasksmaskname' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskName'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskName'] },
      +	'gradientbasedcorrmaskmasksmasksubtype' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskSubType'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskSubType'] },
      +	'gradientbasedcorrmaskmasksmasksyncid' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskSyncID'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskSyncID'] },
      +	'gradientbasedcorrmaskmasksmaskversion' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskVersion'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskVersion'] },
      +	'gradientbasedcorrmaskmasksmidpoint' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMidpoint'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMidpoint'] },
      +	'gradientbasedcorrmaskmasksorigin' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksOrigin'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksOrigin'] },
      +	'gradientbasedcorrmaskmasksperimetervalue' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksPerimeterValue'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksPerimeterValue'] },
      +	'gradientbasedcorrmaskmasksradius' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksRadius'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksRadius'] },
      +	'gradientbasedcorrmaskmasksreferencepoint' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksReferencePoint'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksReferencePoint'] },
      +	'gradientbasedcorrmaskmasksright' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksRight'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksRight'] },
      +	'gradientbasedcorrmaskmasksroundness' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksRoundness'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksRoundness'] },
      +	'gradientbasedcorrmaskmaskssizex' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksSizeX'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksSizeX'] },
      +	'gradientbasedcorrmaskmaskssizey' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksSizeY'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksSizeY'] },
      +	'gradientbasedcorrmaskmaskstop' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksTop'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksTop'] },
      +	'gradientbasedcorrmaskmasksubtype' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskSubType'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskSubType'] },
      +	'gradientbasedcorrmaskmasksvalue' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskValue'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksMaskValue'] },
      +	'gradientbasedcorrmaskmasksversion' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksVersion'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksVersion'] },
      +	'gradientbasedcorrmaskmaskswhat' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksWhat'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksWhat'] },
      +	'gradientbasedcorrmaskmaskswholeimagearea' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksWholeImageArea'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksWholeImageArea'] },
      +	'gradientbasedcorrmaskmasksx' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksX'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksX'] },
      +	'gradientbasedcorrmaskmasksy' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksY'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksY'] },
      +	'gradientbasedcorrmaskmasksyncid' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskSyncID'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskSyncID'] },
      +	'gradientbasedcorrmaskmaskszerox' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksZeroX'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksZeroX'] },
      +	'gradientbasedcorrmaskmaskszeroy' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksZeroY'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMasksZeroY'] },
      +	'gradientbasedcorrmaskmaskversion' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskVersion'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskVersion'] },
      +	'gradientbasedcorrmaskmidpoint' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMidpoint'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMidpoint'] },
      +	'gradientbasedcorrmaskorigin' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksOrigin'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksOrigin'] },
      +	'gradientbasedcorrmaskperimetervalue' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksPerimeterValue'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksPerimeterValue'] },
      +	'gradientbasedcorrmaskradius' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRadius'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRadius'] },
      +	'gradientbasedcorrmaskrange' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMask'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMask'] },
      +	'gradientbasedcorrmaskrangeareamodels' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels'] },
      +	'gradientbasedcorrmaskrangeareamodelscolorsampleinfo' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'] },
      +	'gradientbasedcorrmaskrangeareamodelscomponents' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents'] },
      +	'gradientbasedcorrmaskrangecoloramount' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount'] },
      +	'gradientbasedcorrmaskrangedepthfeather' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather'] },
      +	'gradientbasedcorrmaskrangedepthmax' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax'] },
      +	'gradientbasedcorrmaskrangedepthmin' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin'] },
      +	'gradientbasedcorrmaskrangeinvert' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert'] },
      +	'gradientbasedcorrmaskrangelumfeather' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather'] },
      +	'gradientbasedcorrmaskrangeluminancedepthsampleinfo' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo'] },
      +	'gradientbasedcorrmaskrangelummax' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax'] },
      +	'gradientbasedcorrmaskrangelummin' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin'] },
      +	'gradientbasedcorrmaskrangelumrange' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange'] },
      +	'gradientbasedcorrmaskrangesampletype' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType'] },
      +	'gradientbasedcorrmaskrangetype' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskType'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskType'] },
      +	'gradientbasedcorrmaskrangeversion' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion'] },
      +	'gradientbasedcorrmaskreferencepoint' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksReferencePoint'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksReferencePoint'] },
      +	'gradientbasedcorrmaskright' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRight'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRight'] },
      +	'gradientbasedcorrmaskroundness' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRoundness'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksRoundness'] },
      +	'gradientbasedcorrmasks' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasks'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasks'] },
      +	'gradientbasedcorrmasksizex' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeX'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeX'] },
      +	'gradientbasedcorrmasksizey' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeY'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksSizeY'] },
      +	'gradientbasedcorrmasktop' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksTop'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksTop'] },
      +	'gradientbasedcorrmaskvalue' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskValue'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksMaskValue'] },
      +	'gradientbasedcorrmaskversion' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksVersion'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksVersion'] },
      +	'gradientbasedcorrmaskwhat' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksWhat'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksWhat'] },
      +	'gradientbasedcorrmaskwholeimagearea' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksWholeImageArea'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksWholeImageArea'] },
      +	'gradientbasedcorrmaskx' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksX'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksX'] },
      +	'gradientbasedcorrmasky' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksY'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksY'] },
      +	'gradientbasedcorrmaskzerox' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroX'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroX'] },
      +	'gradientbasedcorrmaskzeroy' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroY'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionMasksZeroY'] },
      +	'gradientbasedcorrmoire' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalMoire'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalMoire'] },
      +	'gradientbasedcorrrangemask' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMask'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMask'] },
      +	'gradientbasedcorrrangemaskareamodels' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskAreaModels'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskAreaModels'] },
      +	'gradientbasedcorrrangemaskareamodelscolorsampleinfo' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'] },
      +	'gradientbasedcorrrangemaskareamodelscomponents' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents'] },
      +	'gradientbasedcorrrangemaskcoloramount' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskColorAmount'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskColorAmount'] },
      +	'gradientbasedcorrrangemaskdepthfeather' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskDepthFeather'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskDepthFeather'] },
      +	'gradientbasedcorrrangemaskdepthmax' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskDepthMax'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskDepthMax'] },
      +	'gradientbasedcorrrangemaskdepthmin' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskDepthMin'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskDepthMin'] },
      +	'gradientbasedcorrrangemaskinvert' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskInvert'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskInvert'] },
      +	'gradientbasedcorrrangemasklumfeather' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskLumFeather'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskLumFeather'] },
      +	'gradientbasedcorrrangemaskluminancedepthsampleinfo' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo'] },
      +	'gradientbasedcorrrangemasklummax' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskLumMax'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskLumMax'] },
      +	'gradientbasedcorrrangemasklummin' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskLumMin'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskLumMin'] },
      +	'gradientbasedcorrrangemasklumrange' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskLumRange'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskLumRange'] },
      +	'gradientbasedcorrrangemasksampletype' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskSampleType'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskSampleType'] },
      +	'gradientbasedcorrrangemasktype' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskType'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskType'] },
      +	'gradientbasedcorrrangemaskversion' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskVersion'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsCorrectionRangeMaskVersion'] },
      +	'gradientbasedcorrsaturation' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSaturation'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSaturation'] },
      +	'gradientbasedcorrshadows2012' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalShadows2012'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalShadows2012'] },
      +	'gradientbasedcorrsharpness' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSharpness'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalSharpness'] },
      +	'gradientbasedcorrtemperature' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTemperature'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTemperature'] },
      +	'gradientbasedcorrtexture' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTexture'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTexture'] },
      +	'gradientbasedcorrtint' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTint'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalTint'] },
      +	'gradientbasedcorrtoninghue' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalToningHue'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalToningHue'] },
      +	'gradientbasedcorrtoningsaturation' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalToningSaturation'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalToningSaturation'] },
      +	'gradientbasedcorrwhat' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsWhat'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsWhat'] },
      +	'gradientbasedcorrwhites2012' => { 477 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalWhites2012'], 479 => [\'GradientBasedCorrections','GradientBasedCorrectionsLocalWhites2012'] },
      +	'grainamount' => { 477 => 'GrainAmount', 479 => 'GrainAmount' },
      +	'graineffect' => { 127 => 0x1047 },
      +	'grainfrequency' => { 477 => 'GrainFrequency', 479 => 'GrainFrequency' },
      +	'grainseed' => { 477 => 'GrainSeed', 479 => 'GrainSeed' },
      +	'grainsize' => { 477 => 'GrainSize', 479 => 'GrainSize' },
      +	'graymixeraqua' => { 477 => 'GrayMixerAqua', 479 => 'GrayMixerAqua' },
      +	'graymixerblue' => { 477 => 'GrayMixerBlue', 479 => 'GrayMixerBlue' },
      +	'graymixergreen' => { 477 => 'GrayMixerGreen', 479 => 'GrayMixerGreen' },
      +	'graymixermagenta' => { 477 => 'GrayMixerMagenta', 479 => 'GrayMixerMagenta' },
      +	'graymixerorange' => { 477 => 'GrayMixerOrange', 479 => 'GrayMixerOrange' },
      +	'graymixerpurple' => { 477 => 'GrayMixerPurple', 479 => 'GrayMixerPurple' },
      +	'graymixerred' => { 477 => 'GrayMixerRed', 479 => 'GrayMixerRed' },
      +	'graymixeryellow' => { 477 => 'GrayMixerYellow', 479 => 'GrayMixerYellow' },
      +	'graypoint' => { 454 => 0x8021 },
      +	'grayresponseunit' => { 119 => 0x122 },
      +	'greencurvelimits' => { 108 => 0x1c4 },
      +	'greencurvepoints' => { 107 => 0x53, 108 => 0x19a },
      +	'greenhsl' => { 103 => 0x20913 },
      +	'greenhue' => { 477 => 'GreenHue', 479 => 'GreenHue' },
      +	'greensaturation' => { 477 => 'GreenSaturation', 479 => 'GreenSaturation' },
      +	'griddisplay' => { 279 => '13.3', 280 => '4.3', 282 => '4.2', 283 => '4.2', 284 => '2.2', 288 => '10.5', 289 => '3.4', 290 => '6.1', 292 => '4.4', 293 => '4.2', 294 => '4.2' },
      +	'gripbatteryadload' => { 334 => 0x5 },
      +	'gripbatteryadnoload' => { 334 => 0x4 },
      +	'gripbatterystate' => { 334 => '1.2' },
      +	'group' => { 477 => 'Group', 479 => 'Group' },
      +	'groupareaafillumination' => { 280 => '46.4', 283 => '47.4', 292 => '47.4' },
      +	'grouping' => { 372 => ['grup',"\xa9grp"], 380 => "\xa9grp" },
      +	'guid' => { 372 => 'GUID' },
      +	'h2resetblackpixels' => { 138 => 0x18a6 },
      +	'h3resetblackcolumns' => { 138 => 0x18ce },
      +	'h3resetblackpixels' => { 138 => 0x18b0 },
      +	'halftonehints' => { 119 => 0x141 },
      +	'hardlink' => { 120 => 'HardLink' },
      +	'hasalternative' => { 493 => 'hasAlternative' },
      +	'hascorrection' => { 493 => 'hasCorrection' },
      +	'hascorrectiona-lang' => { 493 => [\'hasCorrection','hasCorrectionA-lang'] },
      +	'hascorrectiona-platform' => { 493 => [\'hasCorrection','hasCorrectionA-platform'] },
      +	'hascorrectiontext' => { 493 => [\'hasCorrection','hasCorrectionText'] },
      +	'hascrop' => { 477 => 'HasCrop', 479 => 'HasCrop' },
      +	'hasextendedxmp' => { 505 => 'HasExtendedXMP' },
      +	'hassettings' => { 477 => 'HasSettings', 479 => 'HasSettings' },
      +	'hastranslation' => { 493 => 'hasTranslation' },
      +	'hasvisibleoverprint' => { 508 => 'HasVisibleOverprint' },
      +	'hasvisibletransparency' => { 508 => 'HasVisibleTransparency' },
      +	'hdmioutputn-log' => { 228 => 0x35a },
      +	'hdmioutputresolution' => { 229 => 0x610 },
      +	'hdmiviewassist' => { 295 => 0x20f },
      +	'hdr' => { 60 => 0x1, 216 => 0x4, 320 => 0x9e, 355 => 0x85, 420 => 0x200a },
      +	'hdreffect' => { 60 => 0x2 },
       	'hdrimagetype' => { 1 => 0xa },
      -	'hdrinfoversion' => { 209 => 0x0 },
      -	'hdrlevel' => { 209 => 0x5, 395 => 0x2e, 411 => 0x17 },
      -	'hdrlevel2' => { 209 => 0x7 },
      -	'hdrpmakernote' => { 445 => 'hdrp_makernote' },
      -	'hdrsetting' => { 395 => 0x2d, 411 => 0x16, 414 => 0x1148, 415 => 0x1148, 416 => 0x1124, 417 => 0x11a0, 418 => 0x117c, 419 => 0x1034, 420 => 0x22c, 421 => 0x22c, 422 => 0x21f },
      -	'hdrshot' => { 306 => 0x76 },
      -	'hdrsmoothing' => { 209 => 0x6 },
      -	'hdvideo' => { 358 => 'hdvd' },
      -	'headline' => { 128 => 0x69, 474 => 'Headline', 476 => 'Headline' },
      -	'hierarchicalkeywords' => { 167 => [\'Keywords','KeywordsHierarchy'] },
      -	'hierarchicalkeywords1' => { 167 => [\'Keywords','KeywordsHierarchyKeyword'] },
      -	'hierarchicalkeywords1applied' => { 167 => [\'Keywords','KeywordsHierarchyApplied'] },
      -	'hierarchicalkeywords1children' => { 167 => [\'Keywords','KeywordsHierarchyChildren'] },
      -	'hierarchicalkeywords2' => { 167 => [\'Keywords','KeywordsHierarchyChildrenKeyword'] },
      -	'hierarchicalkeywords2applied' => { 167 => [\'Keywords','KeywordsHierarchyChildrenApplied'] },
      -	'hierarchicalkeywords2children' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildren'] },
      -	'hierarchicalkeywords3' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildrenKeyword'] },
      -	'hierarchicalkeywords3applied' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildrenApplied'] },
      -	'hierarchicalkeywords3children' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildren'] },
      -	'hierarchicalkeywords4' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenKeyword'] },
      -	'hierarchicalkeywords4applied' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenApplied'] },
      -	'hierarchicalkeywords4children' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildren'] },
      -	'hierarchicalkeywords5' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenKeyword'] },
      -	'hierarchicalkeywords5applied' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenApplied'] },
      -	'hierarchicalkeywords5children' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenChildren'] },
      -	'hierarchicalkeywords6' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenChildrenKeyword'] },
      -	'hierarchicalkeywords6applied' => { 167 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenChildrenApplied'] },
      -	'hierarchicalsubject' => { 454 => 'hierarchicalSubject' },
      -	'highestbiostratigraphiczone' => { 115 => [\'GeologicalContext','GeologicalContextHighestBiostratigraphicZone'] },
      -	'highisomultiplierblue' => { 311 => 0x1a },
      -	'highisomultipliergreen' => { 311 => 0x19 },
      -	'highisomultiplierred' => { 311 => 0x18 },
      -	'highisonoisereduction' => { 16 => 0xbc, 17 => 0xbd, 20 => 0xbd, 28 => 0xc9, 60 => 0x5, 81 => 0x202, 219 => 0xb1, 341 => 0x71, 393 => 0x2c, 394 => 0x26, 395 => 0x26, 406 => 0x2009, 411 => 0x12, 435 => 0x42 },
      -	'highisonoisereduction2' => { 406 => 0xb050 },
      -	'highlight' => { 383 => 0xf },
      -	'highlight2012' => { 462 => 'Highlight2012', 464 => 'Highlight2012' },
      -	'highlightadj' => { 100 => 0x2030c },
      -	'highlightcolordistortreduct' => { 439 => 0x8026 },
      -	'highlightlinearitylimit' => { 380 => 0xa025 },
      -	'highlightprotection' => { 258 => 0x6 },
      -	'highlightrecovery' => { 462 => 'HighlightRecovery', 464 => 'HighlightRecovery' },
      -	'highlights' => { 456 => 'Highlights' },
      -	'highlights2012' => { 462 => 'Highlights2012', 464 => 'Highlights2012' },
      -	'highlightsadj' => { 439 => 0x9019 },
      -	'highlightshadow' => { 306 => 0xad },
      -	'highlighttone' => { 124 => 0x1041 },
      -	'highlighttonepriority' => { 13 => 0x7, 16 => 0x7, 17 => 0x7, 18 => 0x7, 20 => 0x7, 22 => 0x7, 28 => 0x7, 60 => 0x3, 81 => 0x203 },
      -	'highlightwarning' => { 306 => 0x8002 },
      -	'highlowkeyadj' => { 341 => 0x6c },
      -	'highspeedsync' => { 179 => 0x5, 393 => 0x2, 394 => 0x2 },
      -	'hintversion' => { 366 => 'hinv' },
      -	'histogramxml' => { 259 => 0x83a1a25 },
      -	'history' => { 476 => 'History', 489 => 'History' },
      -	'historyaction' => { 489 => [\'History','HistoryAction'] },
      -	'historychanged' => { 489 => [\'History','HistoryChanged'] },
      -	'historyinstanceid' => { 489 => [\'History','HistoryInstanceID'] },
      -	'historyparameters' => { 489 => [\'History','HistoryParameters'] },
      -	'historysoftwareagent' => { 489 => [\'History','HistorySoftwareAgent'] },
      -	'historywhen' => { 489 => [\'History','HistoryWhen'] },
      -	'holefilldarkdeltathreshold' => { 134 => 0xc88 },
      -	'holefilldeltathreshold' => { 134 => 0xc7e },
      -	'hometowncity' => { 110 => 0x3006, 341 => 0x23, 347 => 0x2 },
      -	'hometowncitycode' => { 348 => 0x1000 },
      -	'hometowndst' => { 341 => 0x25, 347 => '0.2' },
      -	'hostcomputer' => { 116 => 0x13c },
      -	'hostsoftwarerendering' => { 134 => 0xce7 },
      -	'hue' => { 184 => 0x3b, 222 => 0x3d, 223 => 0x45, 341 => 0x67 },
      -	'hueadj' => { 262 => 0x2f, 439 => 0x8019 },
      -	'hueadjust' => { 373 => 0x1016 },
      -	'hueadjustment' => { 177 => 0x4a, 178 => 0x40, 219 => 0x92, 221 => 0x36 },
      -	'hueadjustmentaqua' => { 462 => 'HueAdjustmentAqua', 464 => 'HueAdjustmentAqua' },
      -	'hueadjustmentblue' => { 462 => 'HueAdjustmentBlue', 464 => 'HueAdjustmentBlue' },
      -	'hueadjustmentgreen' => { 462 => 'HueAdjustmentGreen', 464 => 'HueAdjustmentGreen' },
      -	'hueadjustmentmagenta' => { 462 => 'HueAdjustmentMagenta', 464 => 'HueAdjustmentMagenta' },
      -	'hueadjustmentorange' => { 462 => 'HueAdjustmentOrange', 464 => 'HueAdjustmentOrange' },
      -	'hueadjustmentpurple' => { 462 => 'HueAdjustmentPurple', 464 => 'HueAdjustmentPurple' },
      -	'hueadjustmentred' => { 462 => 'HueAdjustmentRed', 464 => 'HueAdjustmentRed' },
      -	'hueadjustmentyellow' => { 462 => 'HueAdjustmentYellow', 464 => 'HueAdjustmentYellow' },
      -	'huesetting' => { 291 => 0x1011 },
      -	'humanobservation' => { 115 => 'HumanObservation' },
      -	'humanobservationday' => { 115 => [\'HumanObservation','HumanObservationDay'] },
      -	'humanobservationearliestdate' => { 115 => [\'HumanObservation','HumanObservationEarliestDate'] },
      -	'humanobservationenddayofyear' => { 115 => [\'HumanObservation','HumanObservationEndDayOfYear'] },
      -	'humanobservationeventdate' => { 115 => [\'HumanObservation','HumanObservationEventDate'] },
      -	'humanobservationeventid' => { 115 => [\'HumanObservation','HumanObservationEventID'] },
      -	'humanobservationeventremarks' => { 115 => [\'HumanObservation','HumanObservationEventRemarks'] },
      -	'humanobservationeventtime' => { 115 => [\'HumanObservation','HumanObservationEventTime'] },
      -	'humanobservationfieldnotes' => { 115 => [\'HumanObservation','HumanObservationFieldNotes'] },
      -	'humanobservationfieldnumber' => { 115 => [\'HumanObservation','HumanObservationFieldNumber'] },
      -	'humanobservationhabitat' => { 115 => [\'HumanObservation','HumanObservationHabitat'] },
      -	'humanobservationlatestdate' => { 115 => [\'HumanObservation','HumanObservationLatestDate'] },
      -	'humanobservationmonth' => { 115 => [\'HumanObservation','HumanObservationMonth'] },
      -	'humanobservationparenteventid' => { 115 => [\'HumanObservation','HumanObservationParentEventID'] },
      -	'humanobservationsamplesizeunit' => { 115 => [\'HumanObservation','HumanObservationSampleSizeUnit'] },
      -	'humanobservationsamplesizevalue' => { 115 => [\'HumanObservation','HumanObservationSampleSizeValue'] },
      -	'humanobservationsamplingeffort' => { 115 => [\'HumanObservation','HumanObservationSamplingEffort'] },
      -	'humanobservationsamplingprotocol' => { 115 => [\'HumanObservation','HumanObservationSamplingProtocol'] },
      -	'humanobservationstartdayofyear' => { 115 => [\'HumanObservation','HumanObservationStartDayOfYear'] },
      -	'humanobservationverbatimeventdate' => { 115 => [\'HumanObservation','HumanObservationVerbatimEventDate'] },
      -	'humanobservationyear' => { 115 => [\'HumanObservation','HumanObservationYear'] },
      -	'humidity' => { 116 => 0x9401, 469 => 'Humidity' },
      -	'icc_profile' => { 117 => 'ICC_Profile' },
      -	'iccprofilename' => { 476 => 'ICCProfile' },
      -	'iconuri' => { 366 => 'icnu' },
      -	'idccreativestyle' => { 439 => 0x8000 },
      -	'idcpreviewlength' => { 439 => 0x202 },
      -	'idcpreviewstart' => { 439 => 0x201 },
      -	'identification' => { 115 => 'Identification' },
      -	'identificationid' => { 115 => [\'Identification','IdentificationIdentificationID'] },
      -	'identificationqualifier' => { 115 => [\'Identification','IdentificationIdentificationQualifier'] },
      -	'identificationreferences' => { 115 => [\'Identification','IdentificationIdentificationReferences'] },
      -	'identificationremarks' => { 115 => [\'Identification','IdentificationIdentificationRemarks'] },
      -	'identificationverificationstatus' => { 115 => [\'Identification','IdentificationIdentificationVerificationStatus'] },
      -	'identifiedby' => { 115 => [\'Identification','IdentificationIdentifiedBy'] },
      -	'identifier' => { 465 => 'identifier', 486 => 'Identifier' },
      -	'ifcameramodel' => { 134 => 0x9c8 },
      -	'illumination' => { 277 => '0.5', 368 => 0x48 },
      -	'imageabsolutex' => { 134 => 0x3fe },
      -	'imageabsolutey' => { 134 => 0x3ff },
      -	'imageadjustment' => { 219 => 0x80, 249 => 0x5 },
      -	'imagealterationconstraints' => { 293 => 'ImageAlterationConstraints' },
      -	'imagearea' => { 232 => 0x10, 235 => 0x10 },
      -	'imageareaoffset' => { 341 => 0x38 },
      -	'imageauthentication' => { 219 => 0x20 },
      -	'imageboundary' => { 219 => 0x16 },
      -	'imagecount' => { 124 => 0x1438, 219 => 0xa5, 409 => 0x11b },
      -	'imagecreator' => { 293 => 'ImageCreator' },
      -	'imagecreatorid' => { 293 => [\'ImageCreator','ImageCreatorImageCreatorID'] },
      -	'imagecreatorimageid' => { 293 => 'ImageCreatorImageID' },
      -	'imagecreatorname' => { 293 => [\'ImageCreator','ImageCreatorImageCreatorName'] },
      -	'imagecropx' => { 134 => 0x41f },
      -	'imagecropy' => { 134 => 0x420 },
      -	'imagedata' => { 449 => 'Data' },
      -	'imagedatasize' => { 219 => 0xa2 },
      -	'imagedescription' => { 116 => 0x10e, 484 => 'ImageDescription' },
      -	'imageduplicationconstraints' => { 293 => 'ImageDuplicationConstraints' },
      -	'imagedustoff' => { 259 => 0xfe443a45 },
      -	'imageeditcount' => { 341 => 0x41 },
      -	'imageediting' => { 341 => 0x32 },
      -	'imageeffects' => { 373 => 0x1010 },
      -	'imagefileconstraints' => { 293 => 'ImageFileConstraints' },
      -	'imagefileformatasdelivered' => { 293 => 'ImageFileFormatAsDelivered' },
      -	'imagefilesizeasdelivered' => { 293 => 'ImageFileSizeAsDelivered' },
      -	'imagegeneration' => { 124 => 0x1436 },
      -	'imageheight' => { 116 => 0x101, 183 => 0xc, 350 => 0x10d, 447 => 'ImageHeight', 484 => 'ImageLength' },
      -	'imagehistory' => { 116 => 0x9213, 467 => 'ImageHistory' },
      -	'imageidnumber' => { 301 => 0x340 },
      -	'imagemimetype' => { 449 => 'Mime' },
      -	'imagenumber' => { 116 => 0x9211, 152 => 'ImageNumber', 177 => 0xae, 178 => 0x5e, 350 => 0x113, 393 => 0x9b, 395 => [0x400,'276.1',0x314], 459 => 'ImageNumber' },
      -	'imagenumber2' => { 178 => 0x62 },
      -	'imageoptimization' => { 219 => 0xa9 },
      -	'imageorientation' => { 128 => 0x83 },
      -	'imageprocessing' => { 219 => 0x1a },
      -	'imageprocessingfiledatecreated' => { 134 => 0xc81 },
      -	'imageprocessingfiletagsversionnumber' => { 134 => 0xc80 },
      -	'imageprocessingversion' => { 287 => 0x0 },
      -	'imagequality' => { 152 => 'ImageQuality', 234 => '723.2', 235 => '732.2', 244 => '708.1', 306 => 0x1 },
      -	'imagequality2' => { 283 => 0x603 },
      -	'imagerank' => { 452 => 'ImageRank' },
      -	'imagerbiassettlingdelaymsec' => { 134 => 0x600 },
      -	'imagerboardversion' => { 134 => 0x439 },
      -	'imagercols' => { 134 => 0x17d4 },
      -	'imageref' => { 472 => 'ImageRef' },
      -	'imageregion' => { 474 => 'ImageRegion' },
      -	'imageregionboundary' => { 474 => [\'ImageRegion','ImageRegionRegionBoundary'] },
      -	'imageregionboundaryh' => { 474 => [\'ImageRegion','ImageRegionRegionBoundaryRbH'] },
      -	'imageregionboundaryrx' => { 474 => [\'ImageRegion','ImageRegionRegionBoundaryRbRx'] },
      -	'imageregionboundaryshape' => { 474 => [\'ImageRegion','ImageRegionRegionBoundaryRbShape'] },
      -	'imageregionboundaryunit' => { 474 => [\'ImageRegion','ImageRegionRegionBoundaryRbUnit'] },
      -	'imageregionboundaryvertices' => { 474 => [\'ImageRegion','ImageRegionRegionBoundaryRbVertices'] },
      -	'imageregionboundaryverticesx' => { 474 => [\'ImageRegion','ImageRegionRegionBoundaryRbVerticesRbX'] },
      -	'imageregionboundaryverticesy' => { 474 => [\'ImageRegion','ImageRegionRegionBoundaryRbVerticesRbY'] },
      -	'imageregionboundaryw' => { 474 => [\'ImageRegion','ImageRegionRegionBoundaryRbW'] },
      -	'imageregionboundaryx' => { 474 => [\'ImageRegion','ImageRegionRegionBoundaryRbX'] },
      -	'imageregionboundaryy' => { 474 => [\'ImageRegion','ImageRegionRegionBoundaryRbY'] },
      -	'imageregionctype' => { 474 => [\'ImageRegion','ImageRegionRCtype'] },
      -	'imageregionctypeidentifier' => { 474 => [\'ImageRegion','ImageRegionRCtypeIdentifier'] },
      -	'imageregionctypename' => { 474 => [\'ImageRegion','ImageRegionRCtypeName'] },
      -	'imageregionid' => { 474 => [\'ImageRegion','ImageRegionRId'] },
      -	'imageregionname' => { 474 => [\'ImageRegion','ImageRegionName'] },
      -	'imageregionrole' => { 474 => [\'ImageRegion','ImageRegionRRole'] },
      -	'imageregionroleidentifier' => { 474 => [\'ImageRegion','ImageRegionRRoleIdentifier'] },
      -	'imageregionrolename' => { 474 => [\'ImageRegion','ImageRegionRRoleName'] },
      -	'imageresolution' => { 134 => 0x944 },
      -	'imageresolutionjpg' => { 134 => 0x945 },
      -	'imagereview' => { 268 => '0.4', 277 => '0.4' },
      -	'imagereviewmonitorofftime' => { 267 => '21.1', 269 => '21.1', 270 => '21.1', 274 => '20.1', 279 => '21.1', 280 => '21.1' },
      -	'imagereviewtime' => { 266 => '25.1', 268 => '2.1', 271 => '19.1', 272 => '20.1', 273 => '20.1', 275 => '9.2', 276 => '20.1', 281 => '21.2' },
      -	'imagerfiledatecreated' => { 134 => 0x9c5 },
      -	'imagerfileproductionlevel' => { 134 => 0x9c4 },
      -	'imagerfiletagsversionstandard' => { 134 => 0x9c7 },
      -	'imagerotated' => { 147 => 0x2a },
      -	'imagerpowerondelaymsec' => { 134 => 0x5fd },
      -	'imagerrows' => { 134 => 0x17de },
      -	'imagesegmentlines' => { 134 => 0x184d },
      -	'imagesegmentstartline' => { 134 => 0x184c },
      -	'imagesize' => { 158 => 'ImageSize' },
      -	'imagesizerestriction' => { 481 => 'imageSizeRestriction' },
      -	'imagesourcedata' => { 116 => 0x935c },
      -	'imagespace' => { 134 => 0x909 },
      -	'imagestabilization' => { 34 => 0x22, 110 => 0x3020, 124 => 0x1422, 152 => 'ImageStabilization', 177 => 0xbd, 178 => 0x71, 179 => 0x57, 180 => 0x0, 181 => [0x18,0x107,0x113], 182 => 0x49c2, 219 => 0xac, 283 => 0x604, 286 => 0x1600, 306 => 0x1a, 398 => 0x12, 399 => 0x11, 406 => 0xb026 },
      -	'imagestabilization2' => { 397 => 0xa },
      -	'imagestabilizationsetting' => { 182 => 0x14, 393 => 0x3d, 394 => 0x3d, 404 => 0x14 },
      -	'imagestyle' => { 393 => 0x2d, 394 => 0x27 },
      -	'imagesupplier' => { 293 => 'ImageSupplier' },
      -	'imagesupplierid' => { 293 => [\'ImageSupplier','ImageSupplierImageSupplierID'] },
      -	'imagesupplierimageid' => { 293 => 'ImageSupplierImageID' },
      -	'imagesuppliername' => { 293 => [\'ImageSupplier','ImageSupplierImageSupplierName'] },
      -	'imagetemperaturemax' => { 118 => 0x1 },
      -	'imagetemperaturemin' => { 118 => 0x2 },
      -	'imagetone' => { 341 => 0x4f },
      -	'imagetype' => { 128 => 0x82, 293 => 'ImageType' },
      -	'imageuniqueid' => { 1 => 0x15, 61 => 0x28, 116 => 0xa420, 467 => 'ImageUniqueID', 468 => 'ImageUniqueID' },
      -	'imagewidth' => { 116 => 0x100, 183 => 0xe, 350 => 0x10c, 447 => 'ImageWidth', 484 => 'ImageWidth' },
      -	'inclinationangle' => { 439 => 0x900f },
      -	'inclinationcorrection' => { 439 => 0x900e },
      -	'incrementaltemperature' => { 462 => 'IncrementalTemperature', 464 => 'IncrementalTemperature' },
      -	'incrementaltint' => { 462 => 'IncrementalTint', 464 => 'IncrementalTint' },
      -	'industry' => { 478 => 'industry', 479 => 'industry' },
      -	'infobuttonwhenshooting' => { 81 => 0x409 },
      -	'information' => { 360 => 'information', 366 => "\xa9inf" },
      -	'infourl' => { 366 => 'infu' },
      -	'infraredilluminator' => { 367 => 0x28 },
      -	'ingredientexclusion' => { 480 => 'ingredientExclusion' },
      -	'ingredients' => { 489 => 'Ingredients' },
      -	'ingredientsalternatepaths' => { 489 => [\'Ingredients','IngredientsAlternatePaths'] },
      -	'ingredientsdocumentid' => { 489 => [\'Ingredients','IngredientsDocumentID'] },
      -	'ingredientsfilepath' => { 489 => [\'Ingredients','IngredientsFilePath'] },
      -	'ingredientsfrompart' => { 489 => [\'Ingredients','IngredientsFromPart'] },
      -	'ingredientsinstanceid' => { 489 => [\'Ingredients','IngredientsInstanceID'] },
      -	'ingredientslastmodifydate' => { 489 => [\'Ingredients','IngredientsLastModifyDate'] },
      -	'ingredientslasturl' => { 489 => [\'Ingredients','IngredientsLastURL'] },
      -	'ingredientslinkcategory' => { 489 => [\'Ingredients','IngredientsLinkCategory'] },
      -	'ingredientslinkform' => { 489 => [\'Ingredients','IngredientsLinkForm'] },
      -	'ingredientsmanager' => { 489 => [\'Ingredients','IngredientsManager'] },
      -	'ingredientsmanagervariant' => { 489 => [\'Ingredients','IngredientsManagerVariant'] },
      -	'ingredientsmanageto' => { 489 => [\'Ingredients','IngredientsManageTo'] },
      -	'ingredientsmanageui' => { 489 => [\'Ingredients','IngredientsManageUI'] },
      -	'ingredientsmaskmarkers' => { 489 => [\'Ingredients','IngredientsMaskMarkers'] },
      -	'ingredientsoriginaldocumentid' => { 489 => [\'Ingredients','IngredientsOriginalDocumentID'] },
      -	'ingredientspartmapping' => { 489 => [\'Ingredients','IngredientsPartMapping'] },
      -	'ingredientsplacedresolutionunit' => { 489 => [\'Ingredients','IngredientsPlacedResolutionUnit'] },
      -	'ingredientsplacedxresolution' => { 489 => [\'Ingredients','IngredientsPlacedXResolution'] },
      -	'ingredientsplacedyresolution' => { 489 => [\'Ingredients','IngredientsPlacedYResolution'] },
      -	'ingredientsrenditionclass' => { 489 => [\'Ingredients','IngredientsRenditionClass'] },
      -	'ingredientsrenditionparams' => { 489 => [\'Ingredients','IngredientsRenditionParams'] },
      -	'ingredientstopart' => { 489 => [\'Ingredients','IngredientsToPart'] },
      -	'ingredientsversionid' => { 489 => [\'Ingredients','IngredientsVersionID'] },
      -	'initialafpointaiservoaf' => { 81 => 0x51e },
      +	'hdrinfoversion' => { 216 => 0x0 },
      +	'hdrlevel' => { 216 => 0x5, 409 => 0x2e, 425 => 0x17 },
      +	'hdrlevel2' => { 216 => 0x7 },
      +	'hdrpmakernote' => { 460 => 'hdrp_makernote' },
      +	'hdrsetting' => { 409 => 0x2d, 425 => 0x16, 428 => 0x1148, 429 => 0x1148, 430 => 0x1124, 431 => 0x11a0, 432 => 0x117c, 433 => 0x1034, 434 => 0x22c, 435 => 0x22c, 436 => 0x21f },
      +	'hdrshot' => { 320 => 0x76 },
      +	'hdrsmoothing' => { 216 => 0x6 },
      +	'hdvideo' => { 372 => 'hdvd' },
      +	'headline' => { 131 => 0x69, 489 => 'Headline', 491 => 'Headline' },
      +	'hierarchicalkeywords' => { 171 => [\'Keywords','KeywordsHierarchy'] },
      +	'hierarchicalkeywords1' => { 171 => [\'Keywords','KeywordsHierarchyKeyword'] },
      +	'hierarchicalkeywords1applied' => { 171 => [\'Keywords','KeywordsHierarchyApplied'] },
      +	'hierarchicalkeywords1children' => { 171 => [\'Keywords','KeywordsHierarchyChildren'] },
      +	'hierarchicalkeywords2' => { 171 => [\'Keywords','KeywordsHierarchyChildrenKeyword'] },
      +	'hierarchicalkeywords2applied' => { 171 => [\'Keywords','KeywordsHierarchyChildrenApplied'] },
      +	'hierarchicalkeywords2children' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildren'] },
      +	'hierarchicalkeywords3' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildrenKeyword'] },
      +	'hierarchicalkeywords3applied' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildrenApplied'] },
      +	'hierarchicalkeywords3children' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildren'] },
      +	'hierarchicalkeywords4' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenKeyword'] },
      +	'hierarchicalkeywords4applied' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenApplied'] },
      +	'hierarchicalkeywords4children' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildren'] },
      +	'hierarchicalkeywords5' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenKeyword'] },
      +	'hierarchicalkeywords5applied' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenApplied'] },
      +	'hierarchicalkeywords5children' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenChildren'] },
      +	'hierarchicalkeywords6' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenChildrenKeyword'] },
      +	'hierarchicalkeywords6applied' => { 171 => [\'Keywords','KeywordsHierarchyChildrenChildrenChildrenChildrenChildrenApplied'] },
      +	'hierarchicalsubject' => { 469 => 'hierarchicalSubject' },
      +	'highestbiostratigraphiczone' => { 118 => [\'GeologicalContext','GeologicalContextHighestBiostratigraphicZone'] },
      +	'highisomultiplierblue' => { 325 => 0x1a },
      +	'highisomultipliergreen' => { 325 => 0x19 },
      +	'highisomultiplierred' => { 325 => 0x18 },
      +	'highisonoisereduction' => { 16 => 0xbc, 17 => 0xbd, 20 => 0xbd, 28 => 0xc9, 62 => 0x5, 84 => 0x202, 226 => 0xb1, 355 => 0x71, 407 => 0x2c, 408 => 0x26, 409 => 0x26, 420 => 0x2009, 425 => 0x12, 450 => 0x42 },
      +	'highisonoisereduction2' => { 420 => 0xb050 },
      +	'highlight' => { 397 => 0xf },
      +	'highlight2012' => { 477 => 'Highlight2012', 479 => 'Highlight2012' },
      +	'highlightadj' => { 103 => 0x2030c },
      +	'highlightcolordistortreduct' => { 454 => 0x8026 },
      +	'highlightlinearitylimit' => { 394 => 0xa025 },
      +	'highlightprotection' => { 271 => 0x6 },
      +	'highlightrecovery' => { 477 => 'HighlightRecovery', 479 => 'HighlightRecovery' },
      +	'highlights' => { 420 => 0x2033, 471 => 'Highlights' },
      +	'highlights2012' => { 477 => 'Highlights2012', 479 => 'Highlights2012' },
      +	'highlightsadj' => { 454 => 0x9019 },
      +	'highlightshadow' => { 320 => 0xad },
      +	'highlighttone' => { 127 => 0x1041 },
      +	'highlighttonepriority' => { 13 => 0x7, 16 => 0x7, 17 => 0x7, 18 => 0x7, 20 => 0x7, 22 => 0x7, 28 => 0x7, 62 => 0x3, 84 => 0x203 },
      +	'highlightwarning' => { 320 => 0x8002 },
      +	'highlowkeyadj' => { 355 => 0x6c },
      +	'highspeedsync' => { 184 => 0x5, 295 => 0x55, 407 => 0x2, 408 => 0x2 },
      +	'hintversion' => { 380 => 'hinv' },
      +	'histogramxml' => { 272 => 0x83a1a25 },
      +	'history' => { 491 => 'History', 504 => 'History' },
      +	'historyaction' => { 504 => [\'History','HistoryAction'] },
      +	'historychanged' => { 504 => [\'History','HistoryChanged'] },
      +	'historyinstanceid' => { 504 => [\'History','HistoryInstanceID'] },
      +	'historyparameters' => { 504 => [\'History','HistoryParameters'] },
      +	'historysoftwareagent' => { 504 => [\'History','HistorySoftwareAgent'] },
      +	'historywhen' => { 504 => [\'History','HistoryWhen'] },
      +	'holefilldarkdeltathreshold' => { 138 => 0xc88 },
      +	'holefilldeltathreshold' => { 138 => 0xc7e },
      +	'hometowncity' => { 113 => 0x3006, 355 => 0x23, 361 => 0x2 },
      +	'hometowncitycode' => { 362 => 0x1000 },
      +	'hometowndst' => { 355 => 0x25, 361 => '0.2' },
      +	'hostcomputer' => { 119 => 0x13c },
      +	'hostsoftwarerendering' => { 138 => 0xce7 },
      +	'hue' => { 189 => 0x3b, 232 => 0x3d, 233 => 0x45, 355 => 0x67 },
      +	'hueadj' => { 275 => 0x2f, 454 => 0x8019 },
      +	'hueadjust' => { 387 => 0x1016 },
      +	'hueadjustment' => { 182 => 0x4a, 183 => 0x40, 226 => 0x92, 231 => 0x36 },
      +	'hueadjustmentaqua' => { 477 => 'HueAdjustmentAqua', 479 => 'HueAdjustmentAqua' },
      +	'hueadjustmentblue' => { 477 => 'HueAdjustmentBlue', 479 => 'HueAdjustmentBlue' },
      +	'hueadjustmentgreen' => { 477 => 'HueAdjustmentGreen', 479 => 'HueAdjustmentGreen' },
      +	'hueadjustmentmagenta' => { 477 => 'HueAdjustmentMagenta', 479 => 'HueAdjustmentMagenta' },
      +	'hueadjustmentorange' => { 477 => 'HueAdjustmentOrange', 479 => 'HueAdjustmentOrange' },
      +	'hueadjustmentpurple' => { 477 => 'HueAdjustmentPurple', 479 => 'HueAdjustmentPurple' },
      +	'hueadjustmentred' => { 477 => 'HueAdjustmentRed', 479 => 'HueAdjustmentRed' },
      +	'hueadjustmentyellow' => { 477 => 'HueAdjustmentYellow', 479 => 'HueAdjustmentYellow' },
      +	'huesetting' => { 305 => 0x1011 },
      +	'humanobservation' => { 118 => 'HumanObservation' },
      +	'humanobservationday' => { 118 => [\'HumanObservation','HumanObservationDay'] },
      +	'humanobservationearliestdate' => { 118 => [\'HumanObservation','HumanObservationEarliestDate'] },
      +	'humanobservationenddayofyear' => { 118 => [\'HumanObservation','HumanObservationEndDayOfYear'] },
      +	'humanobservationeventdate' => { 118 => [\'HumanObservation','HumanObservationEventDate'] },
      +	'humanobservationeventid' => { 118 => [\'HumanObservation','HumanObservationEventID'] },
      +	'humanobservationeventremarks' => { 118 => [\'HumanObservation','HumanObservationEventRemarks'] },
      +	'humanobservationeventtime' => { 118 => [\'HumanObservation','HumanObservationEventTime'] },
      +	'humanobservationfieldnotes' => { 118 => [\'HumanObservation','HumanObservationFieldNotes'] },
      +	'humanobservationfieldnumber' => { 118 => [\'HumanObservation','HumanObservationFieldNumber'] },
      +	'humanobservationhabitat' => { 118 => [\'HumanObservation','HumanObservationHabitat'] },
      +	'humanobservationlatestdate' => { 118 => [\'HumanObservation','HumanObservationLatestDate'] },
      +	'humanobservationmonth' => { 118 => [\'HumanObservation','HumanObservationMonth'] },
      +	'humanobservationparenteventid' => { 118 => [\'HumanObservation','HumanObservationParentEventID'] },
      +	'humanobservationsamplesizeunit' => { 118 => [\'HumanObservation','HumanObservationSampleSizeUnit'] },
      +	'humanobservationsamplesizevalue' => { 118 => [\'HumanObservation','HumanObservationSampleSizeValue'] },
      +	'humanobservationsamplingeffort' => { 118 => [\'HumanObservation','HumanObservationSamplingEffort'] },
      +	'humanobservationsamplingprotocol' => { 118 => [\'HumanObservation','HumanObservationSamplingProtocol'] },
      +	'humanobservationstartdayofyear' => { 118 => [\'HumanObservation','HumanObservationStartDayOfYear'] },
      +	'humanobservationverbatimeventdate' => { 118 => [\'HumanObservation','HumanObservationVerbatimEventDate'] },
      +	'humanobservationyear' => { 118 => [\'HumanObservation','HumanObservationYear'] },
      +	'humidity' => { 119 => 0x9401, 484 => 'Humidity' },
      +	'icc_profile' => { 120 => 'ICC_Profile' },
      +	'iccprofilename' => { 491 => 'ICCProfile' },
      +	'iconuri' => { 380 => 'icnu' },
      +	'idccreativestyle' => { 454 => 0x8000 },
      +	'idcpreviewlength' => { 454 => 0x202 },
      +	'idcpreviewstart' => { 454 => 0x201 },
      +	'identification' => { 118 => 'Identification' },
      +	'identificationid' => { 118 => [\'Identification','IdentificationIdentificationID'] },
      +	'identificationqualifier' => { 118 => [\'Identification','IdentificationIdentificationQualifier'] },
      +	'identificationreferences' => { 118 => [\'Identification','IdentificationIdentificationReferences'] },
      +	'identificationremarks' => { 118 => [\'Identification','IdentificationIdentificationRemarks'] },
      +	'identificationverificationstatus' => { 118 => [\'Identification','IdentificationIdentificationVerificationStatus'] },
      +	'identifiedby' => { 118 => [\'Identification','IdentificationIdentifiedBy'] },
      +	'identifier' => { 480 => 'identifier', 501 => 'Identifier' },
      +	'ifcameramodel' => { 138 => 0x9c8 },
      +	'illuminantdata1' => { 119 => 0xcd35 },
      +	'illuminantdata2' => { 119 => 0xcd36 },
      +	'illuminantdata3' => { 119 => 0xcd37 },
      +	'illumination' => { 290 => '0.5', 382 => 0x48 },
      +	'imageabsolutex' => { 138 => 0x3fe },
      +	'imageabsolutey' => { 138 => 0x3ff },
      +	'imageadjustment' => { 226 => 0x80, 262 => 0x5 },
      +	'imagealterationconstraints' => { 307 => 'ImageAlterationConstraints' },
      +	'imagearea' => { 242 => 0x10, 245 => 0x10 },
      +	'imageareaoffset' => { 355 => 0x38 },
      +	'imageauthentication' => { 226 => 0x20 },
      +	'imageboundary' => { 226 => 0x16 },
      +	'imagecount' => { 127 => 0x1438, 226 => 0xa5, 423 => 0x11b },
      +	'imagecreator' => { 307 => 'ImageCreator' },
      +	'imagecreatorid' => { 307 => [\'ImageCreator','ImageCreatorImageCreatorID'] },
      +	'imagecreatorimageid' => { 307 => 'ImageCreatorImageID' },
      +	'imagecreatorname' => { 307 => [\'ImageCreator','ImageCreatorImageCreatorName'] },
      +	'imagecropx' => { 138 => 0x41f },
      +	'imagecropy' => { 138 => 0x420 },
      +	'imagedata' => { 464 => 'Data' },
      +	'imagedatasize' => { 226 => 0xa2 },
      +	'imagedescription' => { 119 => 0x10e, 499 => 'ImageDescription' },
      +	'imageduplicationconstraints' => { 307 => 'ImageDuplicationConstraints' },
      +	'imagedustoff' => { 272 => 0xfe443a45 },
      +	'imageeditcount' => { 355 => 0x41 },
      +	'imageediting' => { 355 => 0x32 },
      +	'imageeffects' => { 387 => 0x1010 },
      +	'imagefileconstraints' => { 307 => 'ImageFileConstraints' },
      +	'imagefileformatasdelivered' => { 307 => 'ImageFileFormatAsDelivered' },
      +	'imagefilesizeasdelivered' => { 307 => 'ImageFileSizeAsDelivered' },
      +	'imagegeneration' => { 127 => 0x1436 },
      +	'imageheight' => { 119 => 0x101, 188 => 0xc, 364 => 0x10d, 462 => 'ImageHeight', 499 => 'ImageLength' },
      +	'imagehistory' => { 119 => 0x9213, 482 => 'ImageHistory' },
      +	'imageidnumber' => { 315 => 0x340 },
      +	'imagemimetype' => { 464 => 'Mime' },
      +	'imagenumber' => { 119 => 0x9211, 156 => 'ImageNumber', 182 => 0xae, 183 => 0x5e, 364 => 0x113, 407 => 0x9b, 409 => [0x400,'276.1',0x314], 474 => 'ImageNumber' },
      +	'imagenumber2' => { 183 => 0x62 },
      +	'imageoptimization' => { 226 => 0xa9 },
      +	'imageorientation' => { 131 => 0x83 },
      +	'imageprocessing' => { 226 => 0x1a },
      +	'imageprocessingfiledatecreated' => { 138 => 0xc81 },
      +	'imageprocessingfiletagsversionnumber' => { 138 => 0xc80 },
      +	'imageprocessingversion' => { 301 => 0x0 },
      +	'imagequality' => { 156 => 'ImageQuality', 244 => '723.2', 245 => '732.2', 255 => '708.1', 320 => 0x1 },
      +	'imagequality2' => { 297 => 0x603 },
      +	'imagerank' => { 467 => 'ImageRank' },
      +	'imagerbiassettlingdelaymsec' => { 138 => 0x600 },
      +	'imagerboardversion' => { 138 => 0x439 },
      +	'imagercols' => { 138 => 0x17d4 },
      +	'imageref' => { 487 => 'ImageRef' },
      +	'imageregion' => { 489 => 'ImageRegion' },
      +	'imageregionboundary' => { 489 => [\'ImageRegion','ImageRegionRegionBoundary'] },
      +	'imageregionboundaryh' => { 489 => [\'ImageRegion','ImageRegionRegionBoundaryRbH'] },
      +	'imageregionboundaryrx' => { 489 => [\'ImageRegion','ImageRegionRegionBoundaryRbRx'] },
      +	'imageregionboundaryshape' => { 489 => [\'ImageRegion','ImageRegionRegionBoundaryRbShape'] },
      +	'imageregionboundaryunit' => { 489 => [\'ImageRegion','ImageRegionRegionBoundaryRbUnit'] },
      +	'imageregionboundaryvertices' => { 489 => [\'ImageRegion','ImageRegionRegionBoundaryRbVertices'] },
      +	'imageregionboundaryverticesx' => { 489 => [\'ImageRegion','ImageRegionRegionBoundaryRbVerticesRbX'] },
      +	'imageregionboundaryverticesy' => { 489 => [\'ImageRegion','ImageRegionRegionBoundaryRbVerticesRbY'] },
      +	'imageregionboundaryw' => { 489 => [\'ImageRegion','ImageRegionRegionBoundaryRbW'] },
      +	'imageregionboundaryx' => { 489 => [\'ImageRegion','ImageRegionRegionBoundaryRbX'] },
      +	'imageregionboundaryy' => { 489 => [\'ImageRegion','ImageRegionRegionBoundaryRbY'] },
      +	'imageregionctype' => { 489 => [\'ImageRegion','ImageRegionRCtype'] },
      +	'imageregionctypeidentifier' => { 489 => [\'ImageRegion','ImageRegionRCtypeIdentifier'] },
      +	'imageregionctypename' => { 489 => [\'ImageRegion','ImageRegionRCtypeName'] },
      +	'imageregionid' => { 489 => [\'ImageRegion','ImageRegionRId'] },
      +	'imageregionname' => { 489 => [\'ImageRegion','ImageRegionName'] },
      +	'imageregionrole' => { 489 => [\'ImageRegion','ImageRegionRRole'] },
      +	'imageregionroleidentifier' => { 489 => [\'ImageRegion','ImageRegionRRoleIdentifier'] },
      +	'imageregionrolename' => { 489 => [\'ImageRegion','ImageRegionRRoleName'] },
      +	'imageresolution' => { 138 => 0x944 },
      +	'imageresolutionjpg' => { 138 => 0x945 },
      +	'imagereview' => { 281 => '0.4', 290 => '0.4' },
      +	'imagereviewmonitorofftime' => { 280 => '21.1', 282 => '21.1', 283 => '21.1', 287 => '20.1', 292 => '21.1', 293 => '21.1', 295 => 0x39 },
      +	'imagereviewtime' => { 279 => '25.1', 281 => '2.1', 284 => '19.1', 285 => '20.1', 286 => '20.1', 288 => '9.2', 289 => '20.1', 294 => '21.2' },
      +	'imagerfiledatecreated' => { 138 => 0x9c5 },
      +	'imagerfileproductionlevel' => { 138 => 0x9c4 },
      +	'imagerfiletagsversionstandard' => { 138 => 0x9c7 },
      +	'imagerotated' => { 151 => 0x2a },
      +	'imagerpowerondelaymsec' => { 138 => 0x5fd },
      +	'imagerrows' => { 138 => 0x17de },
      +	'imagesegmentlines' => { 138 => 0x184d },
      +	'imagesegmentstartline' => { 138 => 0x184c },
      +	'imagesize' => { 162 => 'ImageSize' },
      +	'imagesizeraw' => { 226 => 0x3e },
      +	'imagesizerestriction' => { 496 => 'imageSizeRestriction' },
      +	'imagesourcedata' => { 119 => 0x935c },
      +	'imagespace' => { 138 => 0x909 },
      +	'imagestabilization' => { 34 => 0x22, 113 => 0x3020, 127 => 0x1422, 156 => 'ImageStabilization', 182 => 0xbd, 183 => 0x71, 184 => 0x57, 185 => 0x0, 186 => [0x18,0x107,0x113], 187 => 0x49c2, 226 => 0xac, 297 => 0x604, 300 => 0x1600, 320 => 0x1a, 412 => 0x12, 413 => 0x11, 420 => 0xb026 },
      +	'imagestabilization2' => { 411 => 0xa },
      +	'imagestabilizationsetting' => { 187 => 0x14, 407 => 0x3d, 408 => 0x3d, 418 => 0x14 },
      +	'imagestyle' => { 407 => 0x2d, 408 => 0x27 },
      +	'imagesupplier' => { 307 => 'ImageSupplier' },
      +	'imagesupplierid' => { 307 => [\'ImageSupplier','ImageSupplierImageSupplierID'] },
      +	'imagesupplierimageid' => { 307 => 'ImageSupplierImageID' },
      +	'imagesuppliername' => { 307 => [\'ImageSupplier','ImageSupplierImageSupplierName'] },
      +	'imagetemperaturemax' => { 121 => 0x1 },
      +	'imagetemperaturemin' => { 121 => 0x2 },
      +	'imagetone' => { 355 => 0x4f },
      +	'imagetype' => { 131 => 0x82, 307 => 'ImageType' },
      +	'imageuniqueid' => { 1 => 0x15, 64 => 0x28, 119 => 0xa420, 482 => 'ImageUniqueID', 483 => 'ImageUniqueID' },
      +	'imagewidth' => { 119 => 0x100, 188 => 0xe, 364 => 0x10c, 462 => 'ImageWidth', 499 => 'ImageWidth' },
      +	'inclinationangle' => { 454 => 0x900f },
      +	'inclinationcorrection' => { 454 => 0x900e },
      +	'incrementaltemperature' => { 477 => 'IncrementalTemperature', 479 => 'IncrementalTemperature' },
      +	'incrementaltint' => { 477 => 'IncrementalTint', 479 => 'IncrementalTint' },
      +	'industry' => { 493 => 'industry', 494 => 'industry' },
      +	'infobuttonwhenshooting' => { 84 => 0x409 },
      +	'information' => { 374 => 'information', 380 => "\xa9inf" },
      +	'infourl' => { 380 => 'infu' },
      +	'infraredilluminator' => { 381 => 0x28 },
      +	'ingredientexclusion' => { 495 => 'ingredientExclusion' },
      +	'ingredients' => { 504 => 'Ingredients' },
      +	'ingredientsalternatepaths' => { 504 => [\'Ingredients','IngredientsAlternatePaths'] },
      +	'ingredientsdocumentid' => { 504 => [\'Ingredients','IngredientsDocumentID'] },
      +	'ingredientsfilepath' => { 504 => [\'Ingredients','IngredientsFilePath'] },
      +	'ingredientsfrompart' => { 504 => [\'Ingredients','IngredientsFromPart'] },
      +	'ingredientsinstanceid' => { 504 => [\'Ingredients','IngredientsInstanceID'] },
      +	'ingredientslastmodifydate' => { 504 => [\'Ingredients','IngredientsLastModifyDate'] },
      +	'ingredientslasturl' => { 504 => [\'Ingredients','IngredientsLastURL'] },
      +	'ingredientslinkcategory' => { 504 => [\'Ingredients','IngredientsLinkCategory'] },
      +	'ingredientslinkform' => { 504 => [\'Ingredients','IngredientsLinkForm'] },
      +	'ingredientsmanager' => { 504 => [\'Ingredients','IngredientsManager'] },
      +	'ingredientsmanagervariant' => { 504 => [\'Ingredients','IngredientsManagerVariant'] },
      +	'ingredientsmanageto' => { 504 => [\'Ingredients','IngredientsManageTo'] },
      +	'ingredientsmanageui' => { 504 => [\'Ingredients','IngredientsManageUI'] },
      +	'ingredientsmaskmarkers' => { 504 => [\'Ingredients','IngredientsMaskMarkers'] },
      +	'ingredientsoriginaldocumentid' => { 504 => [\'Ingredients','IngredientsOriginalDocumentID'] },
      +	'ingredientspartmapping' => { 504 => [\'Ingredients','IngredientsPartMapping'] },
      +	'ingredientsplacedresolutionunit' => { 504 => [\'Ingredients','IngredientsPlacedResolutionUnit'] },
      +	'ingredientsplacedxresolution' => { 504 => [\'Ingredients','IngredientsPlacedXResolution'] },
      +	'ingredientsplacedyresolution' => { 504 => [\'Ingredients','IngredientsPlacedYResolution'] },
      +	'ingredientsrenditionclass' => { 504 => [\'Ingredients','IngredientsRenditionClass'] },
      +	'ingredientsrenditionparams' => { 504 => [\'Ingredients','IngredientsRenditionParams'] },
      +	'ingredientstopart' => { 504 => [\'Ingredients','IngredientsToPart'] },
      +	'ingredientsversionid' => { 504 => [\'Ingredients','IngredientsVersionID'] },
      +	'initialafpointaiservoaf' => { 84 => 0x51e },
       	'initialafpointinservo' => { 2 => 0x13 },
      -	'initialcameradolly' => { 450 => 'InitialCameraDolly' },
      -	'initialhorizontalfovdegrees' => { 450 => 'InitialHorizontalFOVDegrees' },
      -	'initialviewheadingdegrees' => { 450 => 'InitialViewHeadingDegrees', 451 => 'InitialViewHeadingDegrees' },
      -	'initialviewpitchdegrees' => { 450 => 'InitialViewPitchDegrees', 451 => 'InitialViewPitchDegrees' },
      -	'initialviewrolldegrees' => { 450 => 'InitialViewRollDegrees', 451 => 'InitialViewRollDegrees' },
      -	'initialzoomliveview' => { 266 => '4.4' },
      -	'initialzoomsetting' => { 266 => '9.3', 275 => '27.3' },
      -	'inkset' => { 116 => 0x14c },
      -	'inputprofile' => { 134 => 0x1389 },
      -	'instanceid' => { 489 => 'InstanceID' },
      -	'instantplaybacksetup' => { 179 => 0x3e },
      -	'instantplaybacktime' => { 179 => 0x3d },
      -	'instructions' => { 476 => 'Instructions' },
      -	'instrument' => { 488 => 'instrument' },
      -	'integrationtime' => { 134 => 0x423 },
      -	'intellectualgenre' => { 473 => 'IntellectualGenre' },
      -	'intelligentauto' => { 406 => 0xb052, 431 => 0xd, 432 => 0xe, 433 => 0xd },
      -	'intelligentcontrast' => { 50 => 0x4 },
      -	'intelligentd-range' => { 306 => 0x79 },
      -	'intelligentexposure' => { 306 => 0x5d },
      -	'intelligentresolution' => { 306 => 0x70 },
      -	'interchangecolorspace' => { 130 => 0x40 },
      -	'intergraphmatrix' => { 116 => 0x8480 },
      -	'internalflash' => { 176 => 0x2b, 266 => '23.1', 268 => '8.1', 271 => '22.1', 273 => '23.1', 277 => '8.1', 281 => '24.1', 286 => 0x1208 },
      -	'internalflashae1' => { 288 => 0x1021 },
      -	'internalflashae1_0' => { 288 => 0x101d },
      -	'internalflashae2' => { 288 => 0x1022 },
      -	'internalflashae2_0' => { 288 => 0x101e },
      -	'internalflashmode' => { 329 => 0x1 },
      -	'internalflashstrength' => { 329 => 0x3 },
      -	'internalflashtable' => { 288 => 0x1024 },
      -	'internallensserialnumber' => { 380 => 0xa005 },
      -	'internalndfilter' => { 306 => 0x9d },
      -	'internalserialnumber' => { 61 => 0x96, 73 => 0x9, 124 => 0x10, 182 => 0x49dc, 282 => 0x18, 284 => 0x102, 303 => 0x500, 306 => 0x25, 321 => 0x4, 373 => 0x5, 424 => [0x7c,0xf0], 425 => 0x88 },
      -	'interopindex' => { 116 => 0x1, 469 => 'InteroperabilityIndex' },
      -	'interopversion' => { 116 => 0x2 },
      -	'intervallength' => { 176 => 0x10 },
      -	'intervalmode' => { 176 => 0x26 },
      -	'intervalnumber' => { 176 => 0x11 },
      -	'intervalshooting' => { 341 => 0x92 },
      -	'introtime' => { 488 => 'introTime' },
      -	'introtimescale' => { 488 => [\'introTime','introTimeScale'] },
      -	'introtimevalue' => { 488 => [\'introTime','introTimeValue'] },
      -	'ipaversion' => { 134 => 0xdae },
      -	'ipfcameramodel' => { 134 => 0xe4d },
      -	'iptc' => { 117 => 'IPTC' },
      -	'iptc-naa' => { 116 => 0x83bb, 311 => 0x83bb },
      -	'iptcbitspersample' => { 130 => 0x56 },
      -	'iptcdigest' => { 355 => 0x425 },
      -	'iptcimageheight' => { 130 => 0x1e },
      -	'iptcimagerotation' => { 130 => 0x66 },
      -	'iptcimagewidth' => { 130 => 0x14 },
      -	'iptclastedited' => { 474 => 'IptcLastEdited' },
      -	'iptcpicturenumber' => { 130 => 0xa },
      -	'iptcpixelheight' => { 130 => 0x32 },
      -	'iptcpixelwidth' => { 130 => 0x28 },
      -	'isalternativeof' => { 478 => 'isAlternativeOf' },
      -	'isbn' => { 478 => 'isbn' },
      -	'iscorrectionof' => { 478 => 'isCorrectionOf' },
      -	'iscustompicturestyle' => { 106 => 0x3 },
      -	'ismergedhdr' => { 459 => 'IsMergedHDR' },
      -	'ismergedpanorama' => { 459 => 'IsMergedPanorama' },
      -	'iso' => { 7 => 0x6, 9 => 0x6, 10 => 0x75, 11 => 0x6, 12 => 0x79, 13 => 0x6, 14 => 0x6, 15 => 0x6, 16 => 0x6, 17 => 0x6, 18 => 0x6, 19 => 0x6, 20 => 0x6, 21 => 0x6, 22 => 0x6, 23 => 0x6, 24 => 0x6, 25 => 0x6, 26 => 0x6, 27 => 0x6, 28 => 0x6, 29 => 0x6, 30 => 0x0, 31 => 0x1, 109 => 0x14, 110 => [0x3014,0x14], 116 => 0x8827, 133 => 0xfd06, 134 => 0x1784, 136 => 0x60, 138 => [0xfa2e,0xfa46], 139 => [0x27,0x28], 140 => 0xf105, 143 => 0x14, 145 => 0x4e, 147 => 0x1e, 148 => 0x1a, 150 => 0x34, 152 => 'ISO', 176 => 0x8, 182 => 0x49ba, 210 => 0x0, 219 => 0x2, 306 => 0xd1, 311 => 0x17, 341 => [0x8b,0x14], 348 => 0x14, 350 => 0x105, 380 => 0xa014, 383 => 0x86, 404 => 0x6f, 411 => [0x1f,0x21,0x25], 468 => 'ISOSpeedRatings' },
      -	'iso2' => { 210 => 0x6, 229 => 0x265, 230 => 0x25c, 231 => 0x265, 232 => 0x221, 233 => 0x25d, 234 => 0x256, 235 => 0x25d, 239 => 0x2b5, 242 => 0x265, 248 => 0x2b5 },
      -	'isoauto' => { 322 => '14.4' },
      -	'isoautohilimit' => { 237 => 0x18eb, 238 => 0xe82, 246 => 0x185d },
      -	'isoautomax' => { 405 => 0x4 },
      -	'isoautomin' => { 405 => 0x2 },
      -	'isoautoparameters' => { 341 => 0x7a },
      -	'isoautoshuttertime' => { 237 => 0x18ea, 238 => 0xe81, 246 => 0x185c },
      -	'isocalibrationgain' => { 134 => 0x89f },
      -	'isodisplay' => { 269 => '4.1', 270 => '4.1', 271 => '2.3', 272 => '3.3', 273 => '3.3', 276 => '3.3', 279 => '4.3', 280 => '4.1', 281 => '4.3' },
      -	'isoexpansion' => { 81 => 0x103, 82 => 0x7, 83 => 0x8, 86 => 0x8, 210 => 0x4 },
      -	'isoexpansion2' => { 210 => 0xa },
      -	'isofloor' => { 322 => 0x6 },
      -	'isoselection' => { 219 => 0xf },
      -	'isosensitivitystep' => { 274 => '6.2', 276 => '6.2' },
      -	'isosetting' => { 136 => 0x5e, 148 => 0x14, 152 => 'ISOSetting', 176 => 0x24, 177 => 0x26, 178 => 0x1c, 179 => 0x13, 184 => 0x6, 219 => 0x13, 322 => '17.3', 372 => 0x27, 393 => 0x16, 394 => 0x14, 395 => 0x2, 404 => 0x6d, 405 => 0x0 },
      -	'isospeed' => { 116 => 0x8833, 469 => 'ISOSpeed' },
      -	'isospeedexpansion' => { 80 => 0x3 },
      -	'isospeedincrements' => { 81 => 0x102 },
      -	'isospeedlatitudeyyy' => { 116 => 0x8834, 469 => 'ISOSpeedLatitudeyyy' },
      -	'isospeedlatitudezzz' => { 116 => 0x8835, 469 => 'ISOSpeedLatitudezzz' },
      -	'isospeedrange' => { 81 => 0x103 },
      -	'isostepsize' => { 266 => '6.1', 267 => '7.2', 269 => '7.2', 270 => '7.2', 275 => '4.1', 279 => '7.2', 280 => '7.2' },
      -	'isovalue' => { 288 => 0x1001 },
      -	'isrccode' => { 366 => "\xa9isr" },
      -	'issn' => { 478 => 'issn' },
      -	'issueidentifier' => { 478 => 'issueIdentifier' },
      -	'issuename' => { 478 => 'issueName' },
      -	'issueteaser' => { 478 => 'issueTeaser' },
      -	'issuetype' => { 478 => 'issueType' },
      -	'istranslationof' => { 478 => 'isTranslationOf' },
      -	'itemsubtype' => { 174 => 'ItemSubType' },
      -	'itunesu' => { 358 => 'itnu' },
      -	'jobid' => { 128 => 0xb8 },
      -	'jobname' => { 470 => 'JobName' },
      -	'jobref' => { 487 => 'JobRef' },
      -	'jobrefid' => { 487 => [\'JobRef','JobRefId'] },
      -	'jobrefname' => { 487 => [\'JobRef','JobRefName'] },
      -	'jobrefurl' => { 487 => [\'JobRef','JobRefUrl'] },
      -	'jobstatus' => { 470 => 'JobStatus' },
      -	'jpeghandling' => { 462 => 'JPEGHandling', 464 => 'JPEGHandling' },
      -	'jpegquality' => { 10 => 0x66, 306 => 0x43, 308 => 0x3034, 406 => 0xb047 },
      -	'jpegsize' => { 308 => 0x303a },
      -	'jpgcompression' => { 238 => 0x7d4 },
      -	'jpgfromraw' => { 94 => 0x2007, 111 => 'Exif::JpgFromRaw', 311 => 0x2e },
      -	'jpgfromrawlength' => { 116 => [0x117,0x202] },
      -	'jpgfromrawstart' => { 116 => [0x111,0x201] },
      -	'jpgrecordedpixels' => { 322 => '14.1' },
      -	'jurisdiction' => { 460 => 'jurisdiction' },
      -	'kelvinwb_01' => { 330 => 0x5 },
      -	'kelvinwb_02' => { 330 => 0x9 },
      -	'kelvinwb_03' => { 330 => 0xd },
      -	'kelvinwb_04' => { 330 => 0x11 },
      -	'kelvinwb_05' => { 330 => 0x15 },
      -	'kelvinwb_06' => { 330 => 0x19 },
      -	'kelvinwb_07' => { 330 => 0x1d },
      -	'kelvinwb_08' => { 330 => 0x21 },
      -	'kelvinwb_09' => { 330 => 0x25 },
      -	'kelvinwb_10' => { 330 => 0x29 },
      -	'kelvinwb_11' => { 330 => 0x2d },
      -	'kelvinwb_12' => { 330 => 0x31 },
      -	'kelvinwb_13' => { 330 => 0x35 },
      -	'kelvinwb_14' => { 330 => 0x39 },
      -	'kelvinwb_15' => { 330 => 0x3d },
      -	'kelvinwb_16' => { 330 => 0x41 },
      -	'kelvinwb_daylight' => { 330 => 0x1 },
      -	'kerneldenominators' => { 134 => 0x933 },
      -	'key' => { 488 => 'key' },
      -	'keystonecompensation' => { 287 => 0x1900 },
      -	'keystonedirection' => { 287 => 0x1901 },
      -	'keystonevalue' => { 287 => 0x1906 },
      -	'keyword' => { 358 => 'keyw', 478 => 'keyword' },
      -	'keywordinfo' => { 167 => 'Keywords' },
      -	'keywords' => { 128 => 0x19, 153 => 'Keywords', 292 => 'Keywords', 357 => 'Keywords', 360 => 'keywords', 457 => 'keywords', 475 => 'Keywords', 486 => 'Keywords' },
      -	'killdate' => { 478 => 'killDate' },
      -	'killdatea-platform' => { 478 => [\'killDate','killDateA-platform'] },
      -	'killdatedate' => { 478 => [\'killDate','killDateDate'] },
      -	'kodakimageheight' => { 133 => 0xf908, 136 => 0xe, 138 => [0xfa1e,0xfa52], 144 => 0x70 },
      -	'kodakimagewidth' => { 133 => 0xf907, 136 => 0xc, 138 => [0xfa1d,0xfa51], 144 => 0x6c },
      -	'kodakinfotype' => { 133 => 0xfa00 },
      -	'kodaklook' => { 134 => 0xe4c },
      -	'kodaklookprofile' => { 134 => 0x138a },
      -	'kodakmaker' => { 144 => 0x8 },
      -	'kodakmodel' => { 136 => 0x0, 144 => 0x28 },
      -	'kodaktag' => { 134 => 0x3ea },
      -	'kodakversion' => { 134 => 0x0 },
      -	'label' => { 296 => 'Label', 486 => 'Label' },
      -	'labelname1' => { 472 => [\'TagStructure','TagStructureLabelName'] },
      -	'labelname2' => { 472 => [\'TagStructure','TagStructureSubLabelsLabelName'] },
      -	'labelname3' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsLabelName'] },
      -	'labelname4' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsLabelName'] },
      -	'labelname5' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
      -	'labelname6' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
      -	'landmark' => { 306 => 0x6f },
      -	'landscapeoutputhighlightpoint' => { 106 => 0x26 },
      -	'landscapeoutputshadowpoint' => { 106 => 0x27 },
      -	'landscaperawcolortone' => { 106 => 0x1f },
      -	'landscaperawcontrast' => { 106 => 0x21 },
      -	'landscaperawhighlight' => { 106 => 0x77 },
      -	'landscaperawhighlightpoint' => { 106 => 0x24 },
      -	'landscaperawlinear' => { 106 => 0x22 },
      -	'landscaperawsaturation' => { 106 => 0x20 },
      -	'landscaperawshadow' => { 106 => 0x80 },
      -	'landscaperawshadowpoint' => { 106 => 0x25 },
      -	'landscaperawsharpness' => { 106 => 0x23 },
      -	'landscapeunsharpmaskfineness' => { 106 => 0xa0 },
      -	'landscapeunsharpmaskstrength' => { 106 => 0x9e },
      -	'landscapeunsharpmaskthreshold' => { 106 => 0xa2 },
      -	'language' => { 465 => 'language' },
      -	'languageidentifier' => { 128 => 0x87 },
      -	'largestvalidinteriorrectheight' => { 450 => 'LargestValidInteriorRectHeight' },
      -	'largestvalidinteriorrectleft' => { 450 => 'LargestValidInteriorRectLeft' },
      -	'largestvalidinteriorrecttop' => { 450 => 'LargestValidInteriorRectTop' },
      -	'largestvalidinteriorrectwidth' => { 450 => 'LargestValidInteriorRectWidth' },
      -	'lastfilenumber' => { 176 => 0x1b },
      -	'lastkeywordiptc' => { 174 => 'LastKeywordIPTC' },
      -	'lastkeywordxmp' => { 174 => 'LastKeywordXMP' },
      -	'lastphotodate' => { 450 => 'LastPhotoDate' },
      -	'lasturl' => { 489 => 'LastURL' },
      -	'lateralchromaticaberration' => { 406 => 0x2012 },
      -	'lateralchromaticaberrationcorrectionalreadyapplied' => { 459 => 'LateralChromaticAberrationCorrectionAlreadyApplied' },
      -	'latestageorhigheststage' => { 115 => [\'GeologicalContext','GeologicalContextLatestAgeOrHighestStage'] },
      -	'latesteonorhighesteonothem' => { 115 => [\'GeologicalContext','GeologicalContextLatestEonOrHighestEonothem'] },
      -	'latestepochorhighestseries' => { 115 => [\'GeologicalContext','GeologicalContextLatestEpochOrHighestSeries'] },
      -	'latesteraorhighesterathem' => { 115 => [\'GeologicalContext','GeologicalContextLatestEraOrHighestErathem'] },
      -	'latestperiodorhighestsystem' => { 115 => [\'GeologicalContext','GeologicalContextLatestPeriodOrHighestSystem'] },
      -	'latitude' => { 113 => 'Latitude' },
      -	'lc1' => { 332 => 0x2 },
      -	'lc10' => { 332 => 0xb },
      -	'lc11' => { 332 => 0xc },
      -	'lc12' => { 332 => 0xd },
      -	'lc14' => { 332 => 0xf },
      -	'lc15' => { 332 => 0x10 },
      -	'lc3' => { 332 => 0x4 },
      -	'lc4' => { 332 => 0x5 },
      -	'lc5' => { 332 => 0x6 },
      -	'lc6' => { 332 => 0x7 },
      -	'lc7' => { 332 => 0x8 },
      -	'lc8' => { 332 => 0x9 },
      -	'lcddisplayatpoweron' => { 81 => 0x811, 85 => 0xa },
      -	'lcddisplayreturntoshoot' => { 86 => 0x12 },
      -	'lcdillumination' => { 266 => '17.5', 267 => '5.2', 269 => '5.1', 270 => '5.1', 275 => '10.3', 276 => '4.2', 279 => '5.2', 280 => '5.1', 281 => '5.4' },
      -	'lcdilluminationduringbulb' => { 81 => 0x408 },
      -	'lcdmatrix' => { 134 => 0xe74 },
      -	'lcdmatrixchickfix' => { 134 => 0xe75 },
      -	'lcdmatrixmarvin' => { 134 => 0xe76 },
      -	'lcdpanels' => { 80 => 0x8 },
      -	'lcheditor' => { 259 => 0x8ae85e },
      -	'legacyiptcdigest' => { 476 => 'LegacyIPTCDigest' },
      -	'legalcode' => { 460 => 'legalcode' },
      -	'lens' => { 116 => 0xfdea, 219 => 0x84, 459 => 'Lens' },
      -	'lensafstopbutton' => { 79 => 0x11, 80 => 0x13, 81 => 0x506, 82 => 0x10, 83 => 0x12, 86 => 0x13, 87 => 0x9 },
      -	'lensaperturerange' => { 383 => [0x30,0x48] },
      -	'lenscorrectionsettings' => { 467 => 'LensCorrectionSettings' },
      -	'lensdistortinfo' => { 459 => 'LensDistortInfo' },
      -	'lensdistortionparams' => { 288 => 0x206 },
      -	'lensdrivenoaf' => { 81 => 0x505 },
      +	'initialcameradolly' => { 465 => 'InitialCameraDolly' },
      +	'initialhorizontalfovdegrees' => { 465 => 'InitialHorizontalFOVDegrees' },
      +	'initialkey' => { 179 => 'WM/InitialKey' },
      +	'initialverticalfovdegrees' => { 465 => 'InitialVerticalFOVDegrees' },
      +	'initialviewheadingdegrees' => { 465 => 'InitialViewHeadingDegrees', 466 => 'InitialViewHeadingDegrees' },
      +	'initialviewpitchdegrees' => { 465 => 'InitialViewPitchDegrees', 466 => 'InitialViewPitchDegrees' },
      +	'initialviewrolldegrees' => { 465 => 'InitialViewRollDegrees', 466 => 'InitialViewRollDegrees' },
      +	'initialzoomliveview' => { 279 => '4.4' },
      +	'initialzoomsetting' => { 279 => '9.3', 288 => '27.3' },
      +	'inkset' => { 119 => 0x14c },
      +	'inputprofile' => { 138 => 0x1389 },
      +	'instanceid' => { 504 => 'InstanceID' },
      +	'instantplaybacksetup' => { 184 => 0x3e },
      +	'instantplaybacktime' => { 184 => 0x3d },
      +	'instructions' => { 491 => 'Instructions' },
      +	'instrument' => { 503 => 'instrument' },
      +	'integrationtime' => { 138 => 0x423 },
      +	'intellectualgenre' => { 488 => 'IntellectualGenre' },
      +	'intelligentauto' => { 420 => 0xb052, 446 => 0xd, 447 => 0xe, 448 => 0xd },
      +	'intelligentcontrast' => { 52 => 0x4 },
      +	'intelligentd-range' => { 320 => 0x79 },
      +	'intelligentexposure' => { 320 => 0x5d },
      +	'intelligentresolution' => { 320 => 0x70 },
      +	'interchangecolorspace' => { 133 => 0x40 },
      +	'intergraphmatrix' => { 119 => 0x8480 },
      +	'internalflash' => { 181 => 0x2b, 279 => '23.1', 281 => '8.1', 284 => '22.1', 286 => '23.1', 290 => '8.1', 294 => '24.1', 300 => 0x1208 },
      +	'internalflashae1' => { 302 => 0x1021 },
      +	'internalflashae1_0' => { 302 => 0x101d },
      +	'internalflashae2' => { 302 => 0x1022 },
      +	'internalflashae2_0' => { 302 => 0x101e },
      +	'internalflashmode' => { 343 => 0x1 },
      +	'internalflashstrength' => { 343 => 0x3 },
      +	'internalflashtable' => { 302 => 0x1024 },
      +	'internallensserialnumber' => { 394 => 0xa005 },
      +	'internalndfilter' => { 320 => 0x9d },
      +	'internalserialnumber' => { 64 => 0x96, 76 => 0x9, 127 => 0x10, 187 => 0x49dc, 296 => 0x18, 298 => 0x102, 317 => 0x500, 320 => 0x25, 335 => 0x4, 387 => 0x5, 438 => [0x7c,0xf0], 439 => 0x88, 440 => [0x88,0x8a] },
      +	'interopindex' => { 119 => 0x1, 484 => 'InteroperabilityIndex' },
      +	'interopversion' => { 119 => 0x2 },
      +	'interval' => { 248 => 0xd0 },
      +	'intervaldurationhours' => { 228 => 0xa0 },
      +	'intervaldurationminutes' => { 228 => 0xa4 },
      +	'intervaldurationseconds' => { 228 => 0xa8 },
      +	'intervalexposuresmoothing' => { 228 => 0xb8, 252 => 0xc416 },
      +	'intervalframe' => { 248 => 0xd4 },
      +	'intervallength' => { 181 => 0x10 },
      +	'intervalmode' => { 181 => 0x26 },
      +	'intervalnumber' => { 181 => 0x11 },
      +	'intervalpriority' => { 228 => 0xba, 252 => 0xc418 },
      +	'intervals' => { 228 => 0xb0, 229 => 0xbc, 252 => 0xc40e },
      +	'intervalshooting' => { 252 => 0x760c, 260 => 0x760c, 261 => 0x6c98, 355 => 0x92 },
      +	'introtime' => { 503 => 'introTime' },
      +	'introtimescale' => { 503 => [\'introTime','introTimeScale'] },
      +	'introtimevalue' => { 503 => [\'introTime','introTimeValue'] },
      +	'ipaversion' => { 138 => 0xdae },
      +	'ipfcameramodel' => { 138 => 0xe4d },
      +	'iptc' => { 120 => 'IPTC' },
      +	'iptc-naa' => { 119 => 0x83bb, 325 => 0x83bb },
      +	'iptcbitspersample' => { 133 => 0x56 },
      +	'iptcdigest' => { 369 => 0x425 },
      +	'iptcimageheight' => { 133 => 0x1e },
      +	'iptcimagerotation' => { 133 => 0x66 },
      +	'iptcimagewidth' => { 133 => 0x14 },
      +	'iptclastedited' => { 489 => 'IptcLastEdited' },
      +	'iptcpicturenumber' => { 133 => 0xa },
      +	'iptcpixelheight' => { 133 => 0x32 },
      +	'iptcpixelwidth' => { 133 => 0x28 },
      +	'isalternativeof' => { 493 => 'isAlternativeOf' },
      +	'isbn' => { 493 => 'isbn' },
      +	'iscorrectionof' => { 493 => 'isCorrectionOf' },
      +	'iscustompicturestyle' => { 109 => 0x3 },
      +	'ismergedhdr' => { 474 => 'IsMergedHDR' },
      +	'ismergedpanorama' => { 474 => 'IsMergedPanorama' },
      +	'iso' => { 7 => 0x6, 9 => 0x6, 10 => 0x75, 11 => 0x6, 12 => 0x79, 13 => 0x6, 14 => 0x6, 15 => 0x6, 16 => 0x6, 17 => 0x6, 18 => 0x6, 19 => 0x6, 20 => 0x6, 21 => 0x6, 22 => 0x6, 23 => 0x6, 24 => 0x6, 25 => 0x6, 26 => 0x6, 27 => 0x6, 28 => 0x6, 29 => 0x6, 30 => 0x0, 31 => 0x1, 112 => 0x14, 113 => [0x3014,0x14], 119 => 0x8827, 137 => 0xfd06, 138 => 0x1784, 140 => 0x60, 142 => [0xfa2e,0xfa46], 143 => [0x27,0x28], 144 => 0xf105, 147 => 0x14, 149 => 0x4e, 151 => 0x1e, 152 => 0x1a, 154 => 0x34, 156 => 'ISO', 181 => 0x8, 187 => 0x49ba, 217 => 0x0, 226 => 0x2, 320 => 0xd1, 325 => 0x17, 355 => [0x8b,0x14], 362 => 0x14, 364 => 0x105, 394 => 0xa014, 397 => 0x86, 418 => 0x6f, 425 => [0x1f,0x21,0x25], 483 => 'ISOSpeedRatings' },
      +	'iso2' => { 217 => 0x6, 239 => 0x265, 240 => 0x25c, 241 => 0x265, 242 => 0x221, 243 => 0x25d, 244 => 0x256, 245 => 0x25d, 249 => 0x2b5, 253 => 0x265, 259 => 0x2b5 },
      +	'isoauto' => { 336 => '14.4' },
      +	'isoautoflashlimit' => { 229 => 0x146 },
      +	'isoautohilimit' => { 229 => 0x144, 247 => 0x18eb, 248 => 0xe82, 257 => 0x185d },
      +	'isoautomax' => { 419 => 0x4 },
      +	'isoautomin' => { 419 => 0x2 },
      +	'isoautoparameters' => { 355 => 0x7a },
      +	'isoautoshuttertime' => { 229 => 0x14e, 247 => 0x18ea, 248 => 0xe81, 257 => 0x185c },
      +	'isocalibrationgain' => { 138 => 0x89f },
      +	'isodisplay' => { 282 => '4.1', 283 => '4.1', 284 => '2.3', 285 => '3.3', 286 => '3.3', 289 => '3.3', 292 => '4.3', 293 => '4.1', 294 => '4.3' },
      +	'isoexpansion' => { 84 => 0x103, 85 => 0x7, 86 => 0x8, 89 => 0x8, 217 => 0x4 },
      +	'isoexpansion2' => { 217 => 0xa },
      +	'isofloor' => { 336 => 0x6 },
      +	'isoselected' => { 319 => 0x359 },
      +	'isoselection' => { 226 => 0xf },
      +	'isosensitivitystep' => { 287 => '6.2', 289 => '6.2' },
      +	'isosetting' => { 140 => 0x5e, 152 => 0x14, 156 => 'ISOSetting', 181 => 0x24, 182 => 0x26, 183 => 0x1c, 184 => 0x13, 189 => 0x6, 226 => 0x13, 336 => '17.3', 386 => 0x27, 407 => 0x16, 408 => 0x14, 409 => 0x2, 418 => 0x6d, 419 => 0x0 },
      +	'isospeed' => { 119 => 0x8833, 484 => 'ISOSpeed' },
      +	'isospeedexpansion' => { 83 => 0x3 },
      +	'isospeedincrements' => { 84 => 0x102 },
      +	'isospeedlatitudeyyy' => { 119 => 0x8834, 484 => 'ISOSpeedLatitudeyyy' },
      +	'isospeedlatitudezzz' => { 119 => 0x8835, 484 => 'ISOSpeedLatitudezzz' },
      +	'isospeedrange' => { 84 => 0x103 },
      +	'isostepsize' => { 279 => '6.1', 280 => '7.2', 282 => '7.2', 283 => '7.2', 288 => '4.1', 292 => '7.2', 293 => '7.2', 295 => 0x15d },
      +	'isovalue' => { 302 => 0x1001 },
      +	'isrccode' => { 380 => "\xa9isr" },
      +	'issn' => { 493 => 'issn' },
      +	'issueidentifier' => { 493 => 'issueIdentifier' },
      +	'issuename' => { 493 => 'issueName' },
      +	'issueteaser' => { 493 => 'issueTeaser' },
      +	'issuetype' => { 493 => 'issueType' },
      +	'istranslationof' => { 493 => 'isTranslationOf' },
      +	'itemsubtype' => { 178 => 'ItemSubType' },
      +	'itunesu' => { 372 => 'itnu' },
      +	'jobid' => { 131 => 0xb8 },
      +	'jobname' => { 485 => 'JobName' },
      +	'jobref' => { 502 => 'JobRef' },
      +	'jobrefid' => { 502 => [\'JobRef','JobRefId'] },
      +	'jobrefname' => { 502 => [\'JobRef','JobRefName'] },
      +	'jobrefurl' => { 502 => [\'JobRef','JobRefUrl'] },
      +	'jobstatus' => { 485 => 'JobStatus' },
      +	'jpeg-heifswitch' => { 420 => 0x2039 },
      +	'jpeghandling' => { 477 => 'JPEGHandling', 479 => 'JPEGHandling' },
      +	'jpegquality' => { 10 => 0x66, 320 => 0x43, 322 => 0x3034, 420 => 0xb047 },
      +	'jpegsize' => { 322 => 0x303a },
      +	'jpgcompression' => { 248 => 0x7d4 },
      +	'jpgfromraw' => { 97 => 0x2007, 114 => 'Exif-JpgFromRaw', 325 => 0x2e },
      +	'jpgfromrawlength' => { 119 => [0x117,0x202] },
      +	'jpgfromrawstart' => { 119 => [0x111,0x201] },
      +	'jpgrecordedpixels' => { 336 => '14.1' },
      +	'jurisdiction' => { 475 => 'jurisdiction' },
      +	'keepexposure' => { 295 => 0x237 },
      +	'kelvinwb_01' => { 344 => 0x5 },
      +	'kelvinwb_02' => { 344 => 0x9 },
      +	'kelvinwb_03' => { 344 => 0xd },
      +	'kelvinwb_04' => { 344 => 0x11 },
      +	'kelvinwb_05' => { 344 => 0x15 },
      +	'kelvinwb_06' => { 344 => 0x19 },
      +	'kelvinwb_07' => { 344 => 0x1d },
      +	'kelvinwb_08' => { 344 => 0x21 },
      +	'kelvinwb_09' => { 344 => 0x25 },
      +	'kelvinwb_10' => { 344 => 0x29 },
      +	'kelvinwb_11' => { 344 => 0x2d },
      +	'kelvinwb_12' => { 344 => 0x31 },
      +	'kelvinwb_13' => { 344 => 0x35 },
      +	'kelvinwb_14' => { 344 => 0x39 },
      +	'kelvinwb_15' => { 344 => 0x3d },
      +	'kelvinwb_16' => { 344 => 0x41 },
      +	'kelvinwb_daylight' => { 344 => 0x1 },
      +	'kerneldenominators' => { 138 => 0x933 },
      +	'key' => { 503 => 'key' },
      +	'keystonecompensation' => { 301 => 0x1900 },
      +	'keystonedirection' => { 301 => 0x1901 },
      +	'keystonevalue' => { 301 => 0x1906 },
      +	'keyword' => { 372 => 'keyw', 493 => 'keyword' },
      +	'keywordinfo' => { 171 => 'Keywords' },
      +	'keywords' => { 131 => 0x19, 157 => 'Keywords', 306 => 'Keywords', 371 => 'Keywords', 374 => 'keywords', 472 => 'keywords', 490 => 'Keywords', 501 => 'Keywords' },
      +	'killdate' => { 493 => 'killDate' },
      +	'killdatea-platform' => { 493 => [\'killDate','killDateA-platform'] },
      +	'killdatedate' => { 493 => [\'killDate','killDateDate'] },
      +	'kodakimageheight' => { 137 => 0xf908, 140 => 0xe, 142 => [0xfa1e,0xfa52], 148 => 0x70 },
      +	'kodakimagewidth' => { 137 => 0xf907, 140 => 0xc, 142 => [0xfa1d,0xfa51], 148 => 0x6c },
      +	'kodakinfotype' => { 137 => 0xfa00 },
      +	'kodaklook' => { 138 => 0xe4c },
      +	'kodaklookprofile' => { 138 => 0x138a },
      +	'kodakmaker' => { 148 => 0x8 },
      +	'kodakmodel' => { 140 => 0x0, 148 => 0x28 },
      +	'kodaktag' => { 138 => 0x3ea },
      +	'kodakversion' => { 138 => 0x0 },
      +	'label' => { 310 => 'Label', 501 => 'Label' },
      +	'labelname1' => { 487 => [\'TagStructure','TagStructureLabelName'] },
      +	'labelname2' => { 487 => [\'TagStructure','TagStructureSubLabelsLabelName'] },
      +	'labelname3' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsLabelName'] },
      +	'labelname4' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsLabelName'] },
      +	'labelname5' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
      +	'labelname6' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsLabelName'] },
      +	'landmark' => { 320 => 0x6f },
      +	'landscapeoutputhighlightpoint' => { 109 => 0x26 },
      +	'landscapeoutputshadowpoint' => { 109 => 0x27 },
      +	'landscaperawcolortone' => { 109 => 0x1f },
      +	'landscaperawcontrast' => { 109 => 0x21 },
      +	'landscaperawhighlight' => { 109 => 0x77 },
      +	'landscaperawhighlightpoint' => { 109 => 0x24 },
      +	'landscaperawlinear' => { 109 => 0x22 },
      +	'landscaperawsaturation' => { 109 => 0x20 },
      +	'landscaperawshadow' => { 109 => 0x80 },
      +	'landscaperawshadowpoint' => { 109 => 0x25 },
      +	'landscaperawsharpness' => { 109 => 0x23 },
      +	'landscapeunsharpmaskfineness' => { 109 => 0xa0 },
      +	'landscapeunsharpmaskstrength' => { 109 => 0x9e },
      +	'landscapeunsharpmaskthreshold' => { 109 => 0xa2 },
      +	'language' => { 229 => 0x592, 480 => 'language' },
      +	'languageidentifier' => { 131 => 0x87 },
      +	'largestvalidinteriorrectheight' => { 465 => 'LargestValidInteriorRectHeight' },
      +	'largestvalidinteriorrectleft' => { 465 => 'LargestValidInteriorRectLeft' },
      +	'largestvalidinteriorrecttop' => { 465 => 'LargestValidInteriorRectTop' },
      +	'largestvalidinteriorrectwidth' => { 465 => 'LargestValidInteriorRectWidth' },
      +	'lastfilenumber' => { 181 => 0x1b },
      +	'lastkeywordiptc' => { 178 => 'LastKeywordIPTC' },
      +	'lastkeywordxmp' => { 178 => 'LastKeywordXMP' },
      +	'lastphotodate' => { 465 => 'LastPhotoDate' },
      +	'lasturl' => { 504 => 'LastURL' },
      +	'lateralchromaticaberration' => { 420 => 0x2012 },
      +	'lateralchromaticaberrationcorrectionalreadyapplied' => { 474 => 'LateralChromaticAberrationCorrectionAlreadyApplied' },
      +	'latestageorhigheststage' => { 118 => [\'GeologicalContext','GeologicalContextLatestAgeOrHighestStage'] },
      +	'latesteonorhighesteonothem' => { 118 => [\'GeologicalContext','GeologicalContextLatestEonOrHighestEonothem'] },
      +	'latestepochorhighestseries' => { 118 => [\'GeologicalContext','GeologicalContextLatestEpochOrHighestSeries'] },
      +	'latesteraorhighesterathem' => { 118 => [\'GeologicalContext','GeologicalContextLatestEraOrHighestErathem'] },
      +	'latestperiodorhighestsystem' => { 118 => [\'GeologicalContext','GeologicalContextLatestPeriodOrHighestSystem'] },
      +	'latitude' => { 116 => 'Latitude' },
      +	'lc1' => { 346 => 0x2 },
      +	'lc10' => { 346 => 0xb },
      +	'lc11' => { 346 => 0xc },
      +	'lc12' => { 346 => 0xd },
      +	'lc14' => { 346 => 0xf },
      +	'lc15' => { 346 => 0x10 },
      +	'lc3' => { 346 => 0x4 },
      +	'lc4' => { 346 => 0x5 },
      +	'lc5' => { 346 => 0x6 },
      +	'lc6' => { 346 => 0x7 },
      +	'lc7' => { 346 => 0x8 },
      +	'lc8' => { 346 => 0x9 },
      +	'lcddisplayatpoweron' => { 84 => 0x811, 88 => 0xa },
      +	'lcddisplayreturntoshoot' => { 89 => 0x12 },
      +	'lcdillumination' => { 279 => '17.5', 280 => '5.2', 282 => '5.1', 283 => '5.1', 288 => '10.3', 289 => '4.2', 292 => '5.2', 293 => '5.1', 294 => '5.4', 295 => 0x101 },
      +	'lcdilluminationduringbulb' => { 84 => 0x408 },
      +	'lcdmatrix' => { 138 => 0xe74 },
      +	'lcdmatrixchickfix' => { 138 => 0xe75 },
      +	'lcdmatrixmarvin' => { 138 => 0xe76 },
      +	'lcdpanels' => { 83 => 0x8 },
      +	'lcheditor' => { 272 => 0x8ae85e },
      +	'legacyiptcdigest' => { 491 => 'LegacyIPTCDigest' },
      +	'legalcode' => { 475 => 'legalcode' },
      +	'lens' => { 119 => 0xfdea, 226 => 0x84, 474 => 'Lens' },
      +	'lensafstopbutton' => { 82 => 0x11, 83 => 0x13, 84 => 0x506, 85 => 0x10, 86 => 0x12, 89 => 0x13, 90 => 0x9 },
      +	'lensaperturerange' => { 397 => [0x30,0x48] },
      +	'lenscontrolring' => { 295 => 0xad },
      +	'lenscorrectionsettings' => { 482 => 'LensCorrectionSettings' },
      +	'lensdistortinfo' => { 474 => 'LensDistortInfo' },
      +	'lensdistortionparams' => { 302 => 0x206 },
      +	'lensdrivenoaf' => { 84 => 0x505 },
       	'lensdrivewhenafimpossible' => { 2 => 0xb },
      -	'lense-mountversion' => { 395 => 0x3f0, 438 => 0xd },
      -	'lensfirmware' => { 374 => 0x20, 380 => 0xa004 },
      -	'lensfirmwareversion' => { 284 => 0x204, 306 => 0x60, 395 => 0x3f3, 438 => 0x14 },
      -	'lensfocallength' => { 100 => 0xf0512, 332 => 0x9 },
      -	'lensfocalrange' => { 383 => [0xa,0x2a] },
      -	'lensfocusfunctionbuttons' => { 267 => '55.1', 269 => '52.1', 270 => '52.1', 279 => '52.1', 280 => '52.1' },
      -	'lensformat' => { 418 => 0x1891, 420 => 0x18bd, 421 => 0x18ed, 422 => 0x17f1, 424 => 0x106, 425 => 0x106, 434 => 0x603, 435 => 0x5d },
      -	'lensfstops' => { 211 => 0x7, 212 => 0xc, 213 => 0xd, 217 => 0xe, 219 => 0x8b, 332 => '0.3' },
      -	'lensid' => { 217 => 0x30, 459 => 'LensID' },
      -	'lensidnumber' => { 211 => 0x6, 212 => 0xb, 213 => 0xc, 217 => 0xd },
      -	'lensinfo' => { 116 => 0xa432, 338 => 0x2a, 459 => 'LensInfo', 469 => 'LensSpecification' },
      -	'lenskind' => { 332 => 0x1 },
      -	'lensmake' => { 116 => 0xa433, 159 => 'Make', 469 => 'LensMake' },
      -	'lensmanualdistortionamount' => { 462 => 'LensManualDistortionAmount', 464 => 'LensManualDistortionAmount' },
      -	'lensmanufacturer' => { 174 => 'LensManufacturer' },
      -	'lensmaxaperturerange' => { 383 => 0x2b },
      -	'lensmodel' => { 7 => 0x937, 14 => 0x92b, 15 => 0x933, 61 => 0x95, 116 => 0xa434, 159 => 'Model', 174 => 'LensModel', 214 => 0x18a, 215 => 0x18b, 216 => 0x2ac, 284 => 0x203, 338 => 0xc, 350 => 0x412, 469 => 'LensModel' },
      -	'lensmodulationoptimizer' => { 124 => 0x1045 },
      -	'lensmount' => { 395 => 0x99, 418 => 0x1892, 420 => 0x18be, 421 => 0x18ee, 422 => 0x17f2, 424 => 0x105, 425 => 0x105, 434 => 0x604, 435 => 0x5e },
      -	'lensmount2' => { 438 => 0x8 },
      -	'lensprofilechromaticaberrationscale' => { 462 => 'LensProfileChromaticAberrationScale', 464 => 'LensProfileChromaticAberrationScale' },
      -	'lensprofiledigest' => { 462 => 'LensProfileDigest', 464 => 'LensProfileDigest' },
      -	'lensprofiledistortionscale' => { 462 => 'LensProfileDistortionScale', 464 => 'LensProfileDistortionScale' },
      -	'lensprofileenable' => { 462 => 'LensProfileEnable', 464 => 'LensProfileEnable' },
      -	'lensprofilefilename' => { 462 => 'LensProfileFilename', 464 => 'LensProfileFilename' },
      -	'lensprofilematchkeycameramodelname' => { 462 => 'LensProfileMatchKeyCameraModelName', 464 => 'LensProfileMatchKeyCameraModelName' },
      -	'lensprofilematchkeyexifmake' => { 462 => 'LensProfileMatchKeyExifMake', 464 => 'LensProfileMatchKeyExifMake' },
      -	'lensprofilematchkeyexifmodel' => { 462 => 'LensProfileMatchKeyExifModel', 464 => 'LensProfileMatchKeyExifModel' },
      -	'lensprofilematchkeyisraw' => { 462 => 'LensProfileMatchKeyIsRaw', 464 => 'LensProfileMatchKeyIsRaw' },
      -	'lensprofilematchkeylensid' => { 462 => 'LensProfileMatchKeyLensID', 464 => 'LensProfileMatchKeyLensID' },
      -	'lensprofilematchkeylensinfo' => { 462 => 'LensProfileMatchKeyLensInfo', 464 => 'LensProfileMatchKeyLensInfo' },
      -	'lensprofilematchkeylensname' => { 462 => 'LensProfileMatchKeyLensName', 464 => 'LensProfileMatchKeyLensName' },
      -	'lensprofilematchkeysensorformatfactor' => { 462 => 'LensProfileMatchKeySensorFormatFactor', 464 => 'LensProfileMatchKeySensorFormatFactor' },
      -	'lensprofilename' => { 462 => 'LensProfileName', 464 => 'LensProfileName' },
      -	'lensprofilesetup' => { 462 => 'LensProfileSetup', 464 => 'LensProfileSetup' },
      -	'lensprofilevignettingscale' => { 462 => 'LensProfileVignettingScale', 464 => 'LensProfileVignettingScale' },
      -	'lensproperties' => { 284 => 0x20b },
      -	'lensserialnumber' => { 21 => 0x164, 32 => 0x16b, 59 => 0x0, 116 => 0xa435, 159 => 'SerialNumber', 284 => 0x202, 304 => 0x321, 306 => 0x52, 366 => 'LENS', 374 => 0x30, 459 => 'LensSerialNumber', 469 => 'LensSerialNumber' },
      -	'lensshutterlock' => { 179 => 0x4a },
      -	'lensspec' => { 390 => 0x0, 391 => 0x0, 392 => 0x0, 406 => 0xb02a },
      -	'lensspecfeatures' => { 424 => [0x115,0x116], 425 => [0x116,0x1ed,0x1f0,0x21c,0x21e] },
      -	'lenstemperature' => { 288 => 0x1008 },
      -	'lenstype' => { 7 => 0xe2, 8 => 0xd, 9 => 0x1a7, 10 => 0xc, 11 => 0x111, 12 => 0xc, 13 => 0x14f, 14 => 0xd6, 15 => 0xde, 16 => 0xf6, 17 => 0xea, 18 => 0xff, 19 => [0xc,0x97], 20 => 0xe6, 21 => 0x153, 22 => 0xea, 23 => 0xe8, 24 => 0x127, 25 => 0x161, 26 => 0x166, 27 => 0x184, 28 => 0x112, 29 => 0x189, 34 => 0x16, 181 => 0x10c, 182 => 0x49bd, 219 => 0x83, 284 => 0x201, 297 => 0x16, 301 => 0x310, 303 => 0x303, 304 => 0x303, 306 => 0x51, 308 => 0x3405, 333 => 0x0, 334 => 0x0, 335 => 0x1, 336 => 0x1, 337 => 0x1, 339 => 0x0, 380 => 0xa003, 383 => 0x27, 406 => 0xb027, 418 => 0x1896, 420 => 0x18c2, 421 => 0x18f2, 422 => 0x17f6, 424 => 0x109, 425 => 0x109, 434 => 0x608, 435 => 0x62 },
      -	'lenstype2' => { 395 => 0x3f7, 418 => 0x1893, 420 => 0x18bf, 421 => 0x18ef, 422 => 0x17f3, 424 => 0x107, 425 => 0x107, 434 => 0x605, 435 => 0x60 },
      -	'lenstype3' => { 438 => 0x9 },
      -	'lenszoomposition' => { 431 => 0x19, 432 => 0x1e, 435 => [0x342,0x34e,0x35a] },
      -	'levelindicator' => { 314 => 0x15 },
      -	'levelmeter' => { 366 => ['Lvlm','lvlm'] },
      -	'levelorientation' => { 340 => 0x0 },
      -	'license' => { 460 => 'license' },
      -	'licensee' => { 293 => 'Licensee' },
      -	'licenseeid' => { 293 => [\'Licensee','LicenseeLicenseeID'] },
      -	'licenseeimageid' => { 293 => 'LicenseeImageID' },
      -	'licenseeimagenotes' => { 293 => 'LicenseeImageNotes' },
      -	'licenseename' => { 293 => [\'Licensee','LicenseeLicenseeName'] },
      -	'licenseenddate' => { 293 => 'LicenseEndDate' },
      -	'licenseeprojectreference' => { 293 => 'LicenseeProjectReference' },
      -	'licenseetransactionid' => { 293 => 'LicenseeTransactionID' },
      -	'licenseid' => { 293 => 'LicenseID' },
      -	'licensestartdate' => { 293 => 'LicenseStartDate' },
      -	'licensetransactiondate' => { 293 => 'LicenseTransactionDate' },
      -	'licensetype' => { 466 => 'licensetype' },
      -	'licensor' => { 293 => 'Licensor' },
      -	'licensorcity' => { 293 => [\'Licensor','LicensorLicensorCity'] },
      -	'licensorcountry' => { 293 => [\'Licensor','LicensorLicensorCountry'] },
      -	'licensoremail' => { 293 => [\'Licensor','LicensorLicensorEmail'] },
      -	'licensorextendedaddress' => { 293 => [\'Licensor','LicensorLicensorExtendedAddress'] },
      -	'licensorid' => { 293 => [\'Licensor','LicensorLicensorID'] },
      -	'licensorimageid' => { 293 => 'LicensorImageID' },
      -	'licensorname' => { 293 => [\'Licensor','LicensorLicensorName'] },
      -	'licensornotes' => { 293 => 'LicensorNotes' },
      -	'licensorpostalcode' => { 293 => [\'Licensor','LicensorLicensorPostalCode'] },
      -	'licensorregion' => { 293 => [\'Licensor','LicensorLicensorRegion'] },
      -	'licensorstreetaddress' => { 293 => [\'Licensor','LicensorLicensorStreetAddress'] },
      -	'licensortelephone1' => { 293 => [\'Licensor','LicensorLicensorTelephone1'] },
      -	'licensortelephone2' => { 293 => [\'Licensor','LicensorLicensorTelephone2'] },
      -	'licensortelephonetype1' => { 293 => [\'Licensor','LicensorLicensorTelephoneType1'] },
      -	'licensortelephonetype2' => { 293 => [\'Licensor','LicensorLicensorTelephoneType2'] },
      -	'licensortransactionid' => { 293 => 'LicensorTransactionID' },
      -	'licensorurl' => { 293 => [\'Licensor','LicensorLicensorURL'] },
      -	'lightcondition' => { 288 => 0x1009 },
      -	'lightingmode' => { 110 => 0x302a },
      -	'lightreading' => { 341 => 0x15 },
      -	'lightsource' => { 116 => 0x9208, 219 => 0x90, 291 => 0x1000, 468 => 'LightSource' },
      -	'lightsourcespecial' => { 382 => 0x21d },
      -	'lightswitch' => { 279 => '0.1', 281 => '0.1' },
      -	'lightvaluecenter' => { 288 => 0x103d },
      -	'lightvalueperiphery' => { 288 => 0x103e },
      -	'limitafareamodeselection' => { 267 => '51.1', 269 => '49.1', 270 => '49.1', 279 => '49.1', 280 => '49.1' },
      -	'linearitylimitblue' => { 311 => 0x10 },
      -	'linearitylimitgreen' => { 311 => 0xf },
      -	'linearitylimitred' => { 311 => 0xe },
      -	'linearityuppermargin' => { 43 => [0x2ba,0x2d1,0x2d5], 45 => 0x1e5, 46 => [0x1fe,0x2de], 47 => [0x232,0x310], 48 => 0x31e },
      -	'linearizationtable' => { 116 => 0xc618 },
      -	'linearresponselimit' => { 116 => 0xc62e },
      -	'link' => { 478 => 'link' },
      -	'linkaetoafpoint' => { 322 => '14.2' },
      -	'linkedencodedrightsexpr' => { 474 => [\'LinkedEncRightsExpr','LinkedEncRightsExprLinkedRightsExpr'] },
      -	'linkedencodedrightsexprlangid' => { 474 => [\'LinkedEncRightsExpr','LinkedEncRightsExprRightsExprLangId'] },
      -	'linkedencodedrightsexprtype' => { 474 => [\'LinkedEncRightsExpr','LinkedEncRightsExprRightsExprEncType'] },
      -	'linkedencrightsexpr' => { 474 => 'LinkedEncRightsExpr' },
      -	'linlogcoring' => { 134 => 0x904 },
      -	'lithostratigraphicterms' => { 115 => [\'GeologicalContext','GeologicalContextLithostratigraphicTerms'] },
      -	'liveviewaf' => { 271 => '32.1', 281 => '34.1' },
      -	'liveviewafareamode' => { 276 => '34.1' },
      -	'liveviewafmethod' => { 411 => 0x20 },
      -	'liveviewafmode' => { 276 => '34.2' },
      -	'liveviewafsetting' => { 395 => 0x36 },
      -	'liveviewbuttonoptions' => { 267 => '50.2', 269 => '48.2', 270 => '48.2', 279 => '48.2', 280 => '48.2' },
      -	'liveviewexposuresimulation' => { 81 => 0x810 },
      -	'liveviewfocusmode' => { 395 => [0x8b,0x28b] },
      -	'liveviewmetering' => { 395 => [0x84,0x284] },
      -	'liveviewmonitorofftime' => { 267 => '21.2', 269 => '21.2', 270 => '21.2', 272 => '20.2', 273 => '20.2', 274 => '20.2', 276 => '20.2', 279 => '21.2', 280 => '21.2' },
      -	'liveviewshooting' => { 55 => 0x13 },
      -	'livingspecimen' => { 115 => 'LivingSpecimen' },
      -	'livingspecimenmaterialsampleid' => { 115 => [\'LivingSpecimen','LivingSpecimenMaterialSampleID'] },
      -	'localcaption' => { 128 => 0x79 },
      -	'localizedcameramodel' => { 116 => 0xc615 },
      -	'locallocationname' => { 380 => 0x30 },
      -	'location' => { 218 => 0x9, 306 => 0x67, 455 => 'Location', 473 => 'Location', 477 => 'location', 478 => 'location' },
      -	'locationareacode' => { 461 => 'lac' },
      -	'locationbody' => { 360 => 'location.body' },
      -	'locationcreated' => { 474 => 'LocationCreated' },
      -	'locationcreatedcity' => { 474 => [\'LocationCreated','LocationCreatedCity'] },
      -	'locationcreatedcountrycode' => { 474 => [\'LocationCreated','LocationCreatedCountryCode'] },
      -	'locationcreatedcountryname' => { 474 => [\'LocationCreated','LocationCreatedCountryName'] },
      -	'locationcreatedgpsaltitude' => { 474 => [\'LocationCreated','LocationCreatedGPSAltitude'] },
      -	'locationcreatedgpslatitude' => { 474 => [\'LocationCreated','LocationCreatedGPSLatitude'] },
      -	'locationcreatedgpslongitude' => { 474 => [\'LocationCreated','LocationCreatedGPSLongitude'] },
      -	'locationcreatedidentifier' => { 474 => [\'LocationCreated','LocationCreatedIdentifier'] },
      -	'locationcreatedlocationid' => { 474 => [\'LocationCreated','LocationCreatedLocationId'] },
      -	'locationcreatedlocationname' => { 474 => [\'LocationCreated','LocationCreatedLocationName'] },
      -	'locationcreatedprovincestate' => { 474 => [\'LocationCreated','LocationCreatedProvinceState'] },
      -	'locationcreatedsublocation' => { 474 => [\'LocationCreated','LocationCreatedSublocation'] },
      -	'locationcreatedworldregion' => { 474 => [\'LocationCreated','LocationCreatedWorldRegion'] },
      -	'locationdate' => { 360 => 'location.date' },
      -	'locationinfoversion' => { 218 => 0x0 },
      -	'locationname' => { 360 => 'location.name', 380 => 0x31 },
      -	'locationnote' => { 360 => 'location.note' },
      -	'locationrole' => { 360 => 'location.role' },
      -	'locationshown' => { 474 => 'LocationShown' },
      -	'locationshowncity' => { 474 => [\'LocationShown','LocationShownCity'] },
      -	'locationshowncountrycode' => { 474 => [\'LocationShown','LocationShownCountryCode'] },
      -	'locationshowncountryname' => { 474 => [\'LocationShown','LocationShownCountryName'] },
      -	'locationshowngpsaltitude' => { 474 => [\'LocationShown','LocationShownGPSAltitude'] },
      -	'locationshowngpslatitude' => { 474 => [\'LocationShown','LocationShownGPSLatitude'] },
      -	'locationshowngpslongitude' => { 474 => [\'LocationShown','LocationShownGPSLongitude'] },
      -	'locationshownidentifier' => { 474 => [\'LocationShown','LocationShownIdentifier'] },
      -	'locationshownlocationid' => { 474 => [\'LocationShown','LocationShownLocationId'] },
      -	'locationshownlocationname' => { 474 => [\'LocationShown','LocationShownLocationName'] },
      -	'locationshownprovincestate' => { 474 => [\'LocationShown','LocationShownProvinceState'] },
      -	'locationshownsublocation' => { 474 => [\'LocationShown','LocationShownSublocation'] },
      -	'locationshownworldregion' => { 474 => [\'LocationShown','LocationShownWorldRegion'] },
      -	'lockmicrophonebutton' => { 81 => 0x709 },
      -	'logcomment' => { 488 => 'logComment' },
      -	'logscale' => { 134 => 0x902 },
      -	'longdescription' => { 358 => 'ldes' },
      -	'longexposurenoisereduction' => { 60 => 0x4, 81 => 0x201, 82 => 0x1, 83 => 0x2, 84 => 0x1, 85 => 0x1, 86 => 0x2, 87 => 0x1, 306 => 0x49, 393 => 0x2b, 394 => 0x25, 395 => 0x25, 406 => 0x2008, 411 => 0x11, 435 => 0x44 },
      -	'longexposurenoisereduction2' => { 55 => 0x8 },
      -	'longitude' => { 113 => 'Longitude' },
      -	'look' => { 462 => 'Look', 464 => 'Look' },
      -	'lookname' => { 462 => [\'Look','LookName'], 464 => [\'Look','LookName'] },
      -	'loop' => { 488 => 'loop' },
      -	'loopstyle' => { 366 => 'LOOP' },
      -	'lowestbiostratigraphiczone' => { 115 => [\'GeologicalContext','GeologicalContextLowestBiostratigraphicZone'] },
      -	'luminanceadjustmentaqua' => { 462 => 'LuminanceAdjustmentAqua', 464 => 'LuminanceAdjustmentAqua' },
      -	'luminanceadjustmentblue' => { 462 => 'LuminanceAdjustmentBlue', 464 => 'LuminanceAdjustmentBlue' },
      -	'luminanceadjustmentgreen' => { 462 => 'LuminanceAdjustmentGreen', 464 => 'LuminanceAdjustmentGreen' },
      -	'luminanceadjustmentmagenta' => { 462 => 'LuminanceAdjustmentMagenta', 464 => 'LuminanceAdjustmentMagenta' },
      -	'luminanceadjustmentorange' => { 462 => 'LuminanceAdjustmentOrange', 464 => 'LuminanceAdjustmentOrange' },
      -	'luminanceadjustmentpurple' => { 462 => 'LuminanceAdjustmentPurple', 464 => 'LuminanceAdjustmentPurple' },
      -	'luminanceadjustmentred' => { 462 => 'LuminanceAdjustmentRed', 464 => 'LuminanceAdjustmentRed' },
      -	'luminanceadjustmentyellow' => { 462 => 'LuminanceAdjustmentYellow', 464 => 'LuminanceAdjustmentYellow' },
      -	'luminancecurvelimits' => { 105 => 0x150 },
      -	'luminancecurvepoints' => { 105 => 0x126 },
      -	'luminancenoisereduction' => { 100 => 0x20600, 106 => 0x5f, 383 => 0x1b },
      -	'luminancenoisereductioncontrast' => { 462 => 'LuminanceNoiseReductionContrast', 464 => 'LuminanceNoiseReductionContrast' },
      -	'luminancenoisereductiondetail' => { 462 => 'LuminanceNoiseReductionDetail', 464 => 'LuminanceNoiseReductionDetail' },
      -	'luminancenr_tiff_jpeg' => { 106 => 0x6d },
      -	'luminancesmoothing' => { 462 => 'LuminanceSmoothing', 464 => 'LuminanceSmoothing' },
      -	'lvshootingareadisplay' => { 81 => [0x40b,0x40c] },
      -	'lyrics' => { 358 => "\xa9lyr", 366 => "\xa9lyr", 488 => 'lyrics' },
      -	'lyricsuri' => { 366 => 'lrcu' },
      -	'm16cversion' => { 301 => 0x333 },
      -	'macatom' => { 463 => 'macAtom' },
      -	'macatomapplicationcode' => { 463 => [\'macAtom','macAtomApplicationCode'] },
      -	'macatominvocationappleevent' => { 463 => [\'macAtom','macAtomInvocationAppleEvent'] },
      -	'macatomposixprojectpath' => { 463 => [\'macAtom','macAtomPosixProjectPath'] },
      -	'machineobservation' => { 115 => 'MachineObservation' },
      -	'machineobservationday' => { 115 => [\'MachineObservation','MachineObservationDay'] },
      -	'machineobservationearliestdate' => { 115 => [\'MachineObservation','MachineObservationEarliestDate'] },
      -	'machineobservationenddayofyear' => { 115 => [\'MachineObservation','MachineObservationEndDayOfYear'] },
      -	'machineobservationeventdate' => { 115 => [\'MachineObservation','MachineObservationEventDate'] },
      -	'machineobservationeventid' => { 115 => [\'MachineObservation','MachineObservationEventID'] },
      -	'machineobservationeventremarks' => { 115 => [\'MachineObservation','MachineObservationEventRemarks'] },
      -	'machineobservationeventtime' => { 115 => [\'MachineObservation','MachineObservationEventTime'] },
      -	'machineobservationfieldnotes' => { 115 => [\'MachineObservation','MachineObservationFieldNotes'] },
      -	'machineobservationfieldnumber' => { 115 => [\'MachineObservation','MachineObservationFieldNumber'] },
      -	'machineobservationhabitat' => { 115 => [\'MachineObservation','MachineObservationHabitat'] },
      -	'machineobservationlatestdate' => { 115 => [\'MachineObservation','MachineObservationLatestDate'] },
      -	'machineobservationmonth' => { 115 => [\'MachineObservation','MachineObservationMonth'] },
      -	'machineobservationparenteventid' => { 115 => [\'MachineObservation','MachineObservationParentEventID'] },
      -	'machineobservationsamplesizeunit' => { 115 => [\'MachineObservation','MachineObservationSampleSizeUnit'] },
      -	'machineobservationsamplesizevalue' => { 115 => [\'MachineObservation','MachineObservationSampleSizeValue'] },
      -	'machineobservationsamplingeffort' => { 115 => [\'MachineObservation','MachineObservationSamplingEffort'] },
      -	'machineobservationsamplingprotocol' => { 115 => [\'MachineObservation','MachineObservationSamplingProtocol'] },
      -	'machineobservationstartdayofyear' => { 115 => [\'MachineObservation','MachineObservationStartDayOfYear'] },
      -	'machineobservationverbatimeventdate' => { 115 => [\'MachineObservation','MachineObservationVerbatimEventDate'] },
      -	'machineobservationyear' => { 115 => [\'MachineObservation','MachineObservationYear'] },
      -	'macro' => { 124 => 0x1020, 126 => 0x202, 147 => 0x2b, 288 => 0x202, 372 => 0x21, 382 => 0x202, 406 => 0xb040 },
      -	'macroled' => { 286 => 0x120a },
      -	'macromagnification' => { 7 => 0x1b, 11 => 0x1b, 14 => 0x1b, 15 => 0x1b, 19 => 0x1b, 20 => 0x1b, 55 => 0x10 },
      -	'macromode' => { 34 => 0x1, 176 => 0xb, 283 => 0x300, 306 => 0x1c, 373 => 0x1009 },
      -	'magentahsl' => { 100 => 0x20917 },
      -	'magicfilter' => { 283 => 0x52c },
      -	'magnifiedview' => { 83 => 0x11, 85 => 0x9 },
      -	'mainboardversion' => { 134 => 0x438 },
      -	'maindialexposurecomp' => { 277 => '0.6' },
      -	'mainingredient' => { 480 => 'mainIngredient' },
      -	'majorversion' => { 453 => 'MajorVersion' },
      -	'make' => { 95 => 0x0, 112 => 0x1, 116 => 0x10f, 152 => 'Make', 296 => 'Make', 311 => 0x10f, 360 => 'make', 366 => "\xa9mak", 477 => 'make', 484 => 'Make' },
      -	'makernote' => { 468 => 'MakerNote' },
      -	'makernoteapple' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotecanon' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotecasio' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotecasio2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotedji' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteflir' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotefujifilm' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotege' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotege2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotehasselblad' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotehp' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotehp2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotehp4' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotehp6' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteisl' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotejvc' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotejvctext' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak10' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak11' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak12' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak1a' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak1b' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak3' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak4' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak5' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak6a' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak6b' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak7' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak8a' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak8b' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak8c' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodak9' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekodakunknown' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotekyocera' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteleica' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteleica10' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteleica2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteleica3' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteleica4' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteleica5' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteleica6' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteleica7' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteleica8' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteleica9' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteminolta' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteminolta2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteminolta3' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotemotorola' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotenikon' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotenikon2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotenikon3' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotenintendo' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteoffset' => { 382 => 0xff },
      -	'makernoteolympus' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteolympus2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotepanasonic' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotepanasonic2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotepanasonic3' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotepentax' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotepentax2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotepentax3' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotepentax4' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotepentax5' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotepentax6' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotepentaxunknown' => { 366 => 'PXMN' },
      -	'makernotephaseone' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotereconyx' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotereconyx2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotereconyx3' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotericoh' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotericoh2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotericohpentax' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotericohtext' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesafety' => { 116 => 0xc635 },
      -	'makernotesamsung1a' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesamsung1b' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesamsung2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesanyo' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesanyoc4' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesanyopatch' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesigma' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesony' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesony2' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesony3' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesony4' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesony5' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesonyericsson' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotesonysrf' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernotetype' => { 373 => 0x1 },
      -	'makernoteunknown' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteunknownbinary' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteunknowntext' => { 114 => 'MakN', 116 => 0x927c },
      -	'makernoteversion' => { 181 => 0x0, 219 => 0x1, 288 => 0x0, 306 => 0x8000, 377 => 0x0, 380 => 0x1, 383 => [0x1d,0x1f], 396 => 0x2000 },
      -	'makerurl' => { 366 => "\xa9mal" },
      -	'managedfrom' => { 489 => 'ManagedFrom' },
      -	'managedfromalternatepaths' => { 489 => [\'ManagedFrom','ManagedFromAlternatePaths'] },
      -	'managedfromdocumentid' => { 489 => [\'ManagedFrom','ManagedFromDocumentID'] },
      -	'managedfromfilepath' => { 489 => [\'ManagedFrom','ManagedFromFilePath'] },
      -	'managedfromfrompart' => { 489 => [\'ManagedFrom','ManagedFromFromPart'] },
      -	'managedfrominstanceid' => { 489 => [\'ManagedFrom','ManagedFromInstanceID'] },
      -	'managedfromlastmodifydate' => { 489 => [\'ManagedFrom','ManagedFromLastModifyDate'] },
      -	'managedfromlasturl' => { 489 => [\'ManagedFrom','ManagedFromLastURL'] },
      -	'managedfromlinkcategory' => { 489 => [\'ManagedFrom','ManagedFromLinkCategory'] },
      -	'managedfromlinkform' => { 489 => [\'ManagedFrom','ManagedFromLinkForm'] },
      -	'managedfrommanager' => { 489 => [\'ManagedFrom','ManagedFromManager'] },
      -	'managedfrommanagervariant' => { 489 => [\'ManagedFrom','ManagedFromManagerVariant'] },
      -	'managedfrommanageto' => { 489 => [\'ManagedFrom','ManagedFromManageTo'] },
      -	'managedfrommanageui' => { 489 => [\'ManagedFrom','ManagedFromManageUI'] },
      -	'managedfrommaskmarkers' => { 489 => [\'ManagedFrom','ManagedFromMaskMarkers'] },
      -	'managedfromoriginaldocumentid' => { 489 => [\'ManagedFrom','ManagedFromOriginalDocumentID'] },
      -	'managedfrompartmapping' => { 489 => [\'ManagedFrom','ManagedFromPartMapping'] },
      -	'managedfromplacedresolutionunit' => { 489 => [\'ManagedFrom','ManagedFromPlacedResolutionUnit'] },
      -	'managedfromplacedxresolution' => { 489 => [\'ManagedFrom','ManagedFromPlacedXResolution'] },
      -	'managedfromplacedyresolution' => { 489 => [\'ManagedFrom','ManagedFromPlacedYResolution'] },
      -	'managedfromrenditionclass' => { 489 => [\'ManagedFrom','ManagedFromRenditionClass'] },
      -	'managedfromrenditionparams' => { 489 => [\'ManagedFrom','ManagedFromRenditionParams'] },
      -	'managedfromtopart' => { 489 => [\'ManagedFrom','ManagedFromToPart'] },
      -	'managedfromversionid' => { 489 => [\'ManagedFrom','ManagedFromVersionID'] },
      -	'manager' => { 489 => 'Manager' },
      -	'managervariant' => { 489 => 'ManagerVariant' },
      -	'manageto' => { 489 => 'ManageTo' },
      -	'manageui' => { 489 => 'ManageUI' },
      -	'manifest' => { 489 => 'Manifest' },
      -	'manifestlinkform' => { 489 => [\'Manifest','ManifestLinkForm'] },
      -	'manifestplacedresolutionunit' => { 489 => [\'Manifest','ManifestPlacedResolutionUnit'] },
      -	'manifestplacedxresolution' => { 489 => [\'Manifest','ManifestPlacedXResolution'] },
      -	'manifestplacedyresolution' => { 489 => [\'Manifest','ManifestPlacedYResolution'] },
      -	'manifestreference' => { 489 => [\'Manifest','ManifestReference'] },
      -	'manifestreferencealternatepaths' => { 489 => [\'Manifest','ManifestReferenceAlternatePaths'] },
      -	'manifestreferencedocumentid' => { 489 => [\'Manifest','ManifestReferenceDocumentID'] },
      -	'manifestreferencefilepath' => { 489 => [\'Manifest','ManifestReferenceFilePath'] },
      -	'manifestreferencefrompart' => { 489 => [\'Manifest','ManifestReferenceFromPart'] },
      -	'manifestreferenceinstanceid' => { 489 => [\'Manifest','ManifestReferenceInstanceID'] },
      -	'manifestreferencelastmodifydate' => { 489 => [\'Manifest','ManifestReferenceLastModifyDate'] },
      -	'manifestreferencelasturl' => { 489 => [\'Manifest','ManifestReferenceLastURL'] },
      -	'manifestreferencelinkcategory' => { 489 => [\'Manifest','ManifestReferenceLinkCategory'] },
      -	'manifestreferencelinkform' => { 489 => [\'Manifest','ManifestReferenceLinkForm'] },
      -	'manifestreferencemanager' => { 489 => [\'Manifest','ManifestReferenceManager'] },
      -	'manifestreferencemanagervariant' => { 489 => [\'Manifest','ManifestReferenceManagerVariant'] },
      -	'manifestreferencemanageto' => { 489 => [\'Manifest','ManifestReferenceManageTo'] },
      -	'manifestreferencemanageui' => { 489 => [\'Manifest','ManifestReferenceManageUI'] },
      -	'manifestreferencemaskmarkers' => { 489 => [\'Manifest','ManifestReferenceMaskMarkers'] },
      -	'manifestreferenceoriginaldocumentid' => { 489 => [\'Manifest','ManifestReferenceOriginalDocumentID'] },
      -	'manifestreferencepartmapping' => { 489 => [\'Manifest','ManifestReferencePartMapping'] },
      -	'manifestreferenceplacedresolutionunit' => { 489 => [\'Manifest','ManifestReferencePlacedResolutionUnit'] },
      -	'manifestreferenceplacedxresolution' => { 489 => [\'Manifest','ManifestReferencePlacedXResolution'] },
      -	'manifestreferenceplacedyresolution' => { 489 => [\'Manifest','ManifestReferencePlacedYResolution'] },
      -	'manifestreferencerenditionclass' => { 489 => [\'Manifest','ManifestReferenceRenditionClass'] },
      -	'manifestreferencerenditionparams' => { 489 => [\'Manifest','ManifestReferenceRenditionParams'] },
      -	'manifestreferencetopart' => { 489 => [\'Manifest','ManifestReferenceToPart'] },
      -	'manifestreferenceversionid' => { 489 => [\'Manifest','ManifestReferenceVersionID'] },
      -	'manometerpressure' => { 283 => 0x900, 306 => 0x86 },
      -	'manometerreading' => { 283 => 0x901 },
      -	'manualafpointselectpattern' => { 81 => 0x513 },
      +	'lense-mountversion' => { 409 => 0x3f0, 453 => 0xd },
      +	'lensfirmware' => { 388 => 0x20, 394 => 0xa004 },
      +	'lensfirmwareversion' => { 298 => 0x204, 320 => 0x60, 409 => 0x3f3, 453 => 0x14 },
      +	'lensfocallength' => { 103 => 0xf0512, 346 => 0x9 },
      +	'lensfocalrange' => { 397 => [0xa,0x2a] },
      +	'lensfocusfunctionbuttons' => { 280 => '55.1', 282 => '52.1', 283 => '52.1', 292 => '52.1', 293 => '52.1' },
      +	'lensformat' => { 432 => 0x1891, 434 => 0x18bd, 435 => 0x18ed, 436 => 0x17f1, 438 => 0x106, 439 => 0x106, 449 => 0x603, 450 => 0x5d },
      +	'lensfstops' => { 218 => 0x7, 219 => 0xc, 220 => 0xd, 224 => 0xe, 226 => 0x8b, 346 => '0.3' },
      +	'lensfunc1button' => { 295 => 0x9f },
      +	'lensfunc2button' => { 295 => 0xa7 },
      +	'lensid' => { 224 => 0x30, 474 => 'LensID' },
      +	'lensidnumber' => { 218 => 0x6, 219 => 0xb, 220 => 0xc, 224 => 0xd },
      +	'lensinfo' => { 119 => 0xa432, 352 => 0x2a, 474 => 'LensInfo', 484 => 'LensSpecification' },
      +	'lenskind' => { 346 => 0x1 },
      +	'lensmake' => { 119 => 0xa433, 163 => 'Make', 484 => 'LensMake' },
      +	'lensmanualdistortionamount' => { 477 => 'LensManualDistortionAmount', 479 => 'LensManualDistortionAmount' },
      +	'lensmanufacturer' => { 178 => 'LensManufacturer' },
      +	'lensmaxaperturerange' => { 397 => 0x2b },
      +	'lensmodel' => { 7 => 0x937, 14 => 0x92b, 15 => 0x933, 64 => 0x95, 119 => 0xa434, 163 => 'Model', 178 => 'LensModel', 221 => 0x18a, 222 => 0x18b, 223 => 0x2ac, 298 => 0x203, 352 => 0xc, 364 => 0x412, 484 => 'LensModel' },
      +	'lensmodulationoptimizer' => { 127 => 0x1045 },
      +	'lensmount' => { 409 => 0x99, 432 => 0x1892, 434 => 0x18be, 435 => 0x18ee, 436 => 0x17f2, 438 => 0x105, 439 => 0x105, 449 => 0x604, 450 => 0x5e },
      +	'lensmount2' => { 453 => 0x8 },
      +	'lensprofilechromaticaberrationscale' => { 477 => 'LensProfileChromaticAberrationScale', 479 => 'LensProfileChromaticAberrationScale' },
      +	'lensprofiledigest' => { 477 => 'LensProfileDigest', 479 => 'LensProfileDigest' },
      +	'lensprofiledistortionscale' => { 477 => 'LensProfileDistortionScale', 479 => 'LensProfileDistortionScale' },
      +	'lensprofileenable' => { 477 => 'LensProfileEnable', 479 => 'LensProfileEnable' },
      +	'lensprofilefilename' => { 477 => 'LensProfileFilename', 479 => 'LensProfileFilename' },
      +	'lensprofileisembedded' => { 477 => 'LensProfileIsEmbedded', 479 => 'LensProfileIsEmbedded' },
      +	'lensprofilematchkeycameramodelname' => { 477 => 'LensProfileMatchKeyCameraModelName', 479 => 'LensProfileMatchKeyCameraModelName' },
      +	'lensprofilematchkeyexifmake' => { 477 => 'LensProfileMatchKeyExifMake', 479 => 'LensProfileMatchKeyExifMake' },
      +	'lensprofilematchkeyexifmodel' => { 477 => 'LensProfileMatchKeyExifModel', 479 => 'LensProfileMatchKeyExifModel' },
      +	'lensprofilematchkeyisraw' => { 477 => 'LensProfileMatchKeyIsRaw', 479 => 'LensProfileMatchKeyIsRaw' },
      +	'lensprofilematchkeylensid' => { 477 => 'LensProfileMatchKeyLensID', 479 => 'LensProfileMatchKeyLensID' },
      +	'lensprofilematchkeylensinfo' => { 477 => 'LensProfileMatchKeyLensInfo', 479 => 'LensProfileMatchKeyLensInfo' },
      +	'lensprofilematchkeylensname' => { 477 => 'LensProfileMatchKeyLensName', 479 => 'LensProfileMatchKeyLensName' },
      +	'lensprofilematchkeysensorformatfactor' => { 477 => 'LensProfileMatchKeySensorFormatFactor', 479 => 'LensProfileMatchKeySensorFormatFactor' },
      +	'lensprofilename' => { 477 => 'LensProfileName', 479 => 'LensProfileName' },
      +	'lensprofilesetup' => { 477 => 'LensProfileSetup', 479 => 'LensProfileSetup' },
      +	'lensprofilevignettingscale' => { 477 => 'LensProfileVignettingScale', 479 => 'LensProfileVignettingScale' },
      +	'lensproperties' => { 298 => 0x20b },
      +	'lensserialnumber' => { 21 => 0x164, 32 => 0x16b, 61 => 0x0, 119 => 0xa435, 163 => 'SerialNumber', 298 => 0x202, 318 => 0x321, 320 => 0x52, 380 => 'LENS', 388 => 0x30, 474 => 'LensSerialNumber', 484 => 'LensSerialNumber' },
      +	'lensshutterlock' => { 184 => 0x4a },
      +	'lensspec' => { 404 => 0x0, 405 => 0x0, 406 => 0x0, 420 => 0xb02a },
      +	'lensspecfeatures' => { 438 => [0x115,0x116], 439 => [0x116,0x1ed,0x1f0,0x21c,0x21e] },
      +	'lenstemperature' => { 302 => 0x1008 },
      +	'lenstype' => { 7 => 0xe2, 8 => 0xd, 9 => 0x1a7, 10 => 0xc, 11 => 0x111, 12 => 0xc, 13 => 0x14f, 14 => 0xd6, 15 => 0xde, 16 => 0xf6, 17 => 0xea, 18 => 0xff, 19 => [0xc,0x97], 20 => 0xe6, 21 => 0x153, 22 => 0xea, 23 => 0xe8, 24 => 0x127, 25 => 0x161, 26 => 0x166, 27 => 0x184, 28 => 0x112, 29 => 0x189, 34 => 0x16, 186 => 0x10c, 187 => 0x49bd, 226 => 0x83, 298 => 0x201, 311 => 0x16, 315 => 0x310, 317 => 0x303, 318 => 0x303, 320 => 0x51, 322 => 0x3405, 347 => 0x0, 348 => 0x0, 349 => 0x1, 350 => 0x1, 351 => 0x1, 353 => 0x0, 394 => 0xa003, 397 => 0x27, 420 => 0xb027, 432 => 0x1896, 434 => 0x18c2, 435 => 0x18f2, 436 => 0x17f6, 438 => 0x109, 439 => 0x109, 449 => 0x608, 450 => 0x62 },
      +	'lenstype2' => { 409 => 0x3f7, 432 => 0x1893, 434 => 0x18bf, 435 => 0x18ef, 436 => 0x17f3, 438 => 0x107, 439 => 0x107, 449 => 0x605, 450 => 0x60 },
      +	'lenstype3' => { 453 => 0x9 },
      +	'lenstypemake' => { 320 => 0xc4 },
      +	'lenstypemodel' => { 320 => [0xc5,0xe4] },
      +	'lenszoomposition' => { 446 => 0x19, 447 => 0x1e, 450 => [0x342,0x34e,0x35a] },
      +	'levelindicator' => { 328 => 0x15 },
      +	'levelmeter' => { 380 => ['Lvlm','lvlm'] },
      +	'levelorientation' => { 354 => 0x0 },
      +	'license' => { 475 => 'license' },
      +	'licensee' => { 307 => 'Licensee' },
      +	'licenseeid' => { 307 => [\'Licensee','LicenseeLicenseeID'] },
      +	'licenseeimageid' => { 307 => 'LicenseeImageID' },
      +	'licenseeimagenotes' => { 307 => 'LicenseeImageNotes' },
      +	'licenseename' => { 307 => [\'Licensee','LicenseeLicenseeName'] },
      +	'licenseenddate' => { 307 => 'LicenseEndDate' },
      +	'licenseeprojectreference' => { 307 => 'LicenseeProjectReference' },
      +	'licenseetransactionid' => { 307 => 'LicenseeTransactionID' },
      +	'licenseid' => { 307 => 'LicenseID' },
      +	'licensestartdate' => { 307 => 'LicenseStartDate' },
      +	'licensetransactiondate' => { 307 => 'LicenseTransactionDate' },
      +	'licensetype' => { 481 => 'licensetype' },
      +	'licensor' => { 307 => 'Licensor' },
      +	'licensorcity' => { 307 => [\'Licensor','LicensorLicensorCity'] },
      +	'licensorcountry' => { 307 => [\'Licensor','LicensorLicensorCountry'] },
      +	'licensoremail' => { 307 => [\'Licensor','LicensorLicensorEmail'] },
      +	'licensorextendedaddress' => { 307 => [\'Licensor','LicensorLicensorExtendedAddress'] },
      +	'licensorid' => { 307 => [\'Licensor','LicensorLicensorID'] },
      +	'licensorimageid' => { 307 => 'LicensorImageID' },
      +	'licensorname' => { 307 => [\'Licensor','LicensorLicensorName'] },
      +	'licensornotes' => { 307 => 'LicensorNotes' },
      +	'licensorpostalcode' => { 307 => [\'Licensor','LicensorLicensorPostalCode'] },
      +	'licensorregion' => { 307 => [\'Licensor','LicensorLicensorRegion'] },
      +	'licensorstreetaddress' => { 307 => [\'Licensor','LicensorLicensorStreetAddress'] },
      +	'licensortelephone1' => { 307 => [\'Licensor','LicensorLicensorTelephone1'] },
      +	'licensortelephone2' => { 307 => [\'Licensor','LicensorLicensorTelephone2'] },
      +	'licensortelephonetype1' => { 307 => [\'Licensor','LicensorLicensorTelephoneType1'] },
      +	'licensortelephonetype2' => { 307 => [\'Licensor','LicensorLicensorTelephoneType2'] },
      +	'licensortransactionid' => { 307 => 'LicensorTransactionID' },
      +	'licensorurl' => { 307 => [\'Licensor','LicensorLicensorURL'] },
      +	'lightcondition' => { 302 => 0x1009 },
      +	'lightingmode' => { 113 => 0x302a },
      +	'lightreading' => { 355 => 0x15 },
      +	'lightsource' => { 119 => 0x9208, 226 => 0x90, 305 => 0x1000, 483 => 'LightSource' },
      +	'lightsourcespecial' => { 396 => 0x21d },
      +	'lightswitch' => { 292 => '0.1', 294 => '0.1' },
      +	'lightvaluecenter' => { 302 => 0x103d },
      +	'lightvalueperiphery' => { 302 => 0x103e },
      +	'limitaf-areamodesel3dtracking' => { 295 => 0x153 },
      +	'limitaf-areamodeseldynamic_l' => { 295 => 0x151 },
      +	'limitaf-areamodeseldynamic_m' => { 295 => 0x150 },
      +	'limitaf-areamodeseldynamic_s' => { 295 => 0x14f },
      +	'limitaf-areamodeselpinpoint' => { 295 => 0x11 },
      +	'limitaf-areamodeselwideaf_l' => { 295 => 0x14 },
      +	'limitaf-areamodeselwideaf_s' => { 295 => 0x13 },
      +	'limitafareamodeselauto' => { 295 => 0x15 },
      +	'limitafareamodeselection' => { 280 => '51.1', 282 => '49.1', 283 => '49.1', 292 => '49.1', 293 => '49.1' },
      +	'limitreleasemodeselc120' => { 295 => '269.4' },
      +	'limitreleasemodeselc30' => { 295 => '269.3' },
      +	'limitreleasemodeselch' => { 295 => '269.2' },
      +	'limitreleasemodeselcl' => { 295 => '269.1' },
      +	'limitreleasemodeselself' => { 295 => '269.5' },
      +	'limitselectableimagearea16to9' => { 295 => 0x47 },
      +	'limitselectableimagearea1to1' => { 295 => 0x46 },
      +	'limitselectableimageareadx' => { 295 => 0x45 },
      +	'linearitylimitblue' => { 325 => 0x10 },
      +	'linearitylimitgreen' => { 325 => 0xf },
      +	'linearitylimitred' => { 325 => 0xe },
      +	'linearityuppermargin' => { 41 => 0x32c, 42 => 0x282, 45 => [0x2ba,0x2d1,0x2d5], 47 => 0x1e5, 48 => [0x1fe,0x2de], 49 => [0x232,0x310], 50 => 0x31e },
      +	'linearizationtable' => { 119 => 0xc618 },
      +	'linearresponselimit' => { 119 => 0xc62e },
      +	'link' => { 493 => 'link' },
      +	'linkaetoafpoint' => { 336 => '14.2' },
      +	'linkedencodedrightsexpr' => { 489 => [\'LinkedEncRightsExpr','LinkedEncRightsExprLinkedRightsExpr'] },
      +	'linkedencodedrightsexprlangid' => { 489 => [\'LinkedEncRightsExpr','LinkedEncRightsExprRightsExprLangId'] },
      +	'linkedencodedrightsexprtype' => { 489 => [\'LinkedEncRightsExpr','LinkedEncRightsExprRightsExprEncType'] },
      +	'linkedencrightsexpr' => { 489 => 'LinkedEncRightsExpr' },
      +	'linlogcoring' => { 138 => 0x904 },
      +	'lithostratigraphicterms' => { 118 => [\'GeologicalContext','GeologicalContextLithostratigraphicTerms'] },
      +	'livephotoauto' => { 374 => 'live-photo.auto' },
      +	'livephotovitalityscore' => { 374 => 'live-photo.vitality-score' },
      +	'livephotovitalityscoringversion' => { 374 => 'live-photo.vitality-scoring-version' },
      +	'liveviewaf' => { 284 => '32.1', 294 => '34.1' },
      +	'liveviewafareamode' => { 289 => '34.1' },
      +	'liveviewafmethod' => { 425 => 0x20 },
      +	'liveviewafmode' => { 289 => '34.2' },
      +	'liveviewafsetting' => { 409 => 0x36 },
      +	'liveviewbuttonoptions' => { 280 => '50.2', 282 => '48.2', 283 => '48.2', 292 => '48.2', 293 => '48.2' },
      +	'liveviewexposuresimulation' => { 84 => 0x810 },
      +	'liveviewfocusmode' => { 409 => [0x8b,0x28b] },
      +	'liveviewmetering' => { 409 => [0x84,0x284] },
      +	'liveviewmonitorofftime' => { 280 => '21.2', 282 => '21.2', 283 => '21.2', 285 => '20.2', 286 => '20.2', 287 => '20.2', 289 => '20.2', 292 => '21.2', 293 => '21.2' },
      +	'liveviewshooting' => { 57 => 0x13 },
      +	'livingspecimen' => { 118 => 'LivingSpecimen' },
      +	'livingspecimenmaterialsampleid' => { 118 => [\'LivingSpecimen','LivingSpecimenMaterialSampleID'] },
      +	'localcaption' => { 131 => 0x79 },
      +	'localizedcameramodel' => { 119 => 0xc615 },
      +	'locallocationname' => { 394 => 0x30 },
      +	'location' => { 225 => 0x9, 320 => 0x67, 470 => 'Location', 488 => 'Location', 492 => 'location', 493 => 'location' },
      +	'locationaccuracyhorizontal' => { 374 => 'location.accuracy.horizontal' },
      +	'locationareacode' => { 476 => 'lac' },
      +	'locationbody' => { 374 => 'location.body' },
      +	'locationcreated' => { 489 => 'LocationCreated' },
      +	'locationcreatedcity' => { 489 => [\'LocationCreated','LocationCreatedCity'] },
      +	'locationcreatedcountrycode' => { 489 => [\'LocationCreated','LocationCreatedCountryCode'] },
      +	'locationcreatedcountryname' => { 489 => [\'LocationCreated','LocationCreatedCountryName'] },
      +	'locationcreatedgpsaltitude' => { 489 => [\'LocationCreated','LocationCreatedGPSAltitude'] },
      +	'locationcreatedgpslatitude' => { 489 => [\'LocationCreated','LocationCreatedGPSLatitude'] },
      +	'locationcreatedgpslongitude' => { 489 => [\'LocationCreated','LocationCreatedGPSLongitude'] },
      +	'locationcreatedidentifier' => { 489 => [\'LocationCreated','LocationCreatedIdentifier'] },
      +	'locationcreatedlocationid' => { 489 => [\'LocationCreated','LocationCreatedLocationId'] },
      +	'locationcreatedlocationname' => { 489 => [\'LocationCreated','LocationCreatedLocationName'] },
      +	'locationcreatedprovincestate' => { 489 => [\'LocationCreated','LocationCreatedProvinceState'] },
      +	'locationcreatedsublocation' => { 489 => [\'LocationCreated','LocationCreatedSublocation'] },
      +	'locationcreatedworldregion' => { 489 => [\'LocationCreated','LocationCreatedWorldRegion'] },
      +	'locationdate' => { 374 => 'location.date' },
      +	'locationinformation' => { 380 => 'loci' },
      +	'locationinfoversion' => { 225 => 0x0 },
      +	'locationname' => { 374 => 'location.name', 394 => 0x31 },
      +	'locationnote' => { 374 => 'location.note' },
      +	'locationrole' => { 374 => 'location.role' },
      +	'locationshown' => { 489 => 'LocationShown' },
      +	'locationshowncity' => { 489 => [\'LocationShown','LocationShownCity'] },
      +	'locationshowncountrycode' => { 489 => [\'LocationShown','LocationShownCountryCode'] },
      +	'locationshowncountryname' => { 489 => [\'LocationShown','LocationShownCountryName'] },
      +	'locationshowngpsaltitude' => { 489 => [\'LocationShown','LocationShownGPSAltitude'] },
      +	'locationshowngpslatitude' => { 489 => [\'LocationShown','LocationShownGPSLatitude'] },
      +	'locationshowngpslongitude' => { 489 => [\'LocationShown','LocationShownGPSLongitude'] },
      +	'locationshownidentifier' => { 489 => [\'LocationShown','LocationShownIdentifier'] },
      +	'locationshownlocationid' => { 489 => [\'LocationShown','LocationShownLocationId'] },
      +	'locationshownlocationname' => { 489 => [\'LocationShown','LocationShownLocationName'] },
      +	'locationshownprovincestate' => { 489 => [\'LocationShown','LocationShownProvinceState'] },
      +	'locationshownsublocation' => { 489 => [\'LocationShown','LocationShownSublocation'] },
      +	'locationshownworldregion' => { 489 => [\'LocationShown','LocationShownWorldRegion'] },
      +	'lockmicrophonebutton' => { 84 => 0x709 },
      +	'logcomment' => { 503 => 'logComment' },
      +	'logscale' => { 138 => 0x902 },
      +	'longdescription' => { 372 => 'ldes' },
      +	'longexposurenoisereduction' => { 62 => 0x4, 84 => 0x201, 85 => 0x1, 86 => 0x2, 87 => 0x1, 88 => 0x1, 89 => 0x2, 90 => 0x1, 320 => 0x49, 407 => 0x2b, 408 => 0x25, 409 => 0x25, 420 => 0x2008, 425 => 0x11, 450 => 0x44 },
      +	'longexposurenoisereduction2' => { 57 => 0x8 },
      +	'longexposurenrused' => { 320 => 0xbe },
      +	'longitude' => { 116 => 'Longitude' },
      +	'look' => { 477 => 'Look', 479 => 'Look' },
      +	'lookamount' => { 477 => [\'Look','LookAmount'], 479 => [\'Look','LookAmount'] },
      +	'lookcluster' => { 477 => [\'Look','LookCluster'], 479 => [\'Look','LookCluster'] },
      +	'lookcopyright' => { 477 => [\'Look','LookCopyright'], 479 => [\'Look','LookCopyright'] },
      +	'lookgroup' => { 477 => [\'Look','LookGroup'], 479 => [\'Look','LookGroup'] },
      +	'lookname' => { 477 => 'LookName', 479 => 'LookName' },
      +	'lookparameters' => { 477 => [\'Look','LookParameters'], 479 => [\'Look','LookParameters'] },
      +	'lookparameterscameraprofile' => { 477 => [\'Look','LookParametersCameraProfile'], 479 => [\'Look','LookParametersCameraProfile'] },
      +	'lookparametersclarity2012' => { 477 => [\'Look','LookParametersClarity2012'], 479 => [\'Look','LookParametersClarity2012'] },
      +	'lookparametersconverttograyscale' => { 477 => [\'Look','LookParametersConvertToGrayscale'], 479 => [\'Look','LookParametersConvertToGrayscale'] },
      +	'lookparameterslooktable' => { 477 => [\'Look','LookParametersLookTable'], 479 => [\'Look','LookParametersLookTable'] },
      +	'lookparametersprocessversion' => { 477 => [\'Look','LookParametersProcessVersion'], 479 => [\'Look','LookParametersProcessVersion'] },
      +	'lookparameterstonecurvepv2012' => { 477 => [\'Look','LookParametersToneCurvePV2012'], 479 => [\'Look','LookParametersToneCurvePV2012'] },
      +	'lookparameterstonecurvepv2012blue' => { 477 => [\'Look','LookParametersToneCurvePV2012Blue'], 479 => [\'Look','LookParametersToneCurvePV2012Blue'] },
      +	'lookparameterstonecurvepv2012green' => { 477 => [\'Look','LookParametersToneCurvePV2012Green'], 479 => [\'Look','LookParametersToneCurvePV2012Green'] },
      +	'lookparameterstonecurvepv2012red' => { 477 => [\'Look','LookParametersToneCurvePV2012Red'], 479 => [\'Look','LookParametersToneCurvePV2012Red'] },
      +	'lookparametersversion' => { 477 => [\'Look','LookParametersVersion'], 479 => [\'Look','LookParametersVersion'] },
      +	'looksupportsamount' => { 477 => [\'Look','LookSupportsAmount'], 479 => [\'Look','LookSupportsAmount'] },
      +	'looksupportsmonochrome' => { 477 => [\'Look','LookSupportsMonochrome'], 479 => [\'Look','LookSupportsMonochrome'] },
      +	'looksupportsoutputreferred' => { 477 => [\'Look','LookSupportsOutputReferred'], 479 => [\'Look','LookSupportsOutputReferred'] },
      +	'lookuuid' => { 477 => [\'Look','LookUUID'], 479 => [\'Look','LookUUID'] },
      +	'loop' => { 503 => 'loop' },
      +	'loopstyle' => { 380 => 'LOOP' },
      +	'lowestbiostratigraphiczone' => { 118 => [\'GeologicalContext','GeologicalContextLowestBiostratigraphicZone'] },
      +	'luminanceadjustmentaqua' => { 477 => 'LuminanceAdjustmentAqua', 479 => 'LuminanceAdjustmentAqua' },
      +	'luminanceadjustmentblue' => { 477 => 'LuminanceAdjustmentBlue', 479 => 'LuminanceAdjustmentBlue' },
      +	'luminanceadjustmentgreen' => { 477 => 'LuminanceAdjustmentGreen', 479 => 'LuminanceAdjustmentGreen' },
      +	'luminanceadjustmentmagenta' => { 477 => 'LuminanceAdjustmentMagenta', 479 => 'LuminanceAdjustmentMagenta' },
      +	'luminanceadjustmentorange' => { 477 => 'LuminanceAdjustmentOrange', 479 => 'LuminanceAdjustmentOrange' },
      +	'luminanceadjustmentpurple' => { 477 => 'LuminanceAdjustmentPurple', 479 => 'LuminanceAdjustmentPurple' },
      +	'luminanceadjustmentred' => { 477 => 'LuminanceAdjustmentRed', 479 => 'LuminanceAdjustmentRed' },
      +	'luminanceadjustmentyellow' => { 477 => 'LuminanceAdjustmentYellow', 479 => 'LuminanceAdjustmentYellow' },
      +	'luminancecurvelimits' => { 108 => 0x150 },
      +	'luminancecurvepoints' => { 108 => 0x126 },
      +	'luminancenoisereduction' => { 103 => 0x20600, 109 => 0x5f, 397 => 0x1b },
      +	'luminancenoisereductioncontrast' => { 477 => 'LuminanceNoiseReductionContrast', 479 => 'LuminanceNoiseReductionContrast' },
      +	'luminancenoisereductiondetail' => { 477 => 'LuminanceNoiseReductionDetail', 479 => 'LuminanceNoiseReductionDetail' },
      +	'luminancenr_tiff_jpeg' => { 109 => 0x6d },
      +	'luminancesmoothing' => { 477 => 'LuminanceSmoothing', 479 => 'LuminanceSmoothing' },
      +	'lvshootingareadisplay' => { 84 => [0x40b,0x40c] },
      +	'lyrics' => { 372 => "\xa9lyr", 380 => "\xa9lyr", 503 => 'lyrics' },
      +	'lyricsuri' => { 380 => 'lrcu' },
      +	'm16cversion' => { 315 => 0x333 },
      +	'macatom' => { 478 => 'macAtom' },
      +	'macatomapplicationcode' => { 478 => [\'macAtom','macAtomApplicationCode'] },
      +	'macatominvocationappleevent' => { 478 => [\'macAtom','macAtomInvocationAppleEvent'] },
      +	'macatomposixprojectpath' => { 478 => [\'macAtom','macAtomPosixProjectPath'] },
      +	'machineobservation' => { 118 => 'MachineObservation' },
      +	'machineobservationday' => { 118 => [\'MachineObservation','MachineObservationDay'] },
      +	'machineobservationearliestdate' => { 118 => [\'MachineObservation','MachineObservationEarliestDate'] },
      +	'machineobservationenddayofyear' => { 118 => [\'MachineObservation','MachineObservationEndDayOfYear'] },
      +	'machineobservationeventdate' => { 118 => [\'MachineObservation','MachineObservationEventDate'] },
      +	'machineobservationeventid' => { 118 => [\'MachineObservation','MachineObservationEventID'] },
      +	'machineobservationeventremarks' => { 118 => [\'MachineObservation','MachineObservationEventRemarks'] },
      +	'machineobservationeventtime' => { 118 => [\'MachineObservation','MachineObservationEventTime'] },
      +	'machineobservationfieldnotes' => { 118 => [\'MachineObservation','MachineObservationFieldNotes'] },
      +	'machineobservationfieldnumber' => { 118 => [\'MachineObservation','MachineObservationFieldNumber'] },
      +	'machineobservationhabitat' => { 118 => [\'MachineObservation','MachineObservationHabitat'] },
      +	'machineobservationlatestdate' => { 118 => [\'MachineObservation','MachineObservationLatestDate'] },
      +	'machineobservationmonth' => { 118 => [\'MachineObservation','MachineObservationMonth'] },
      +	'machineobservationparenteventid' => { 118 => [\'MachineObservation','MachineObservationParentEventID'] },
      +	'machineobservationsamplesizeunit' => { 118 => [\'MachineObservation','MachineObservationSampleSizeUnit'] },
      +	'machineobservationsamplesizevalue' => { 118 => [\'MachineObservation','MachineObservationSampleSizeValue'] },
      +	'machineobservationsamplingeffort' => { 118 => [\'MachineObservation','MachineObservationSamplingEffort'] },
      +	'machineobservationsamplingprotocol' => { 118 => [\'MachineObservation','MachineObservationSamplingProtocol'] },
      +	'machineobservationstartdayofyear' => { 118 => [\'MachineObservation','MachineObservationStartDayOfYear'] },
      +	'machineobservationverbatimeventdate' => { 118 => [\'MachineObservation','MachineObservationVerbatimEventDate'] },
      +	'machineobservationyear' => { 118 => [\'MachineObservation','MachineObservationYear'] },
      +	'macro' => { 127 => 0x1020, 129 => 0x202, 151 => 0x2b, 302 => 0x202, 386 => 0x21, 396 => 0x202, 420 => 0xb040 },
      +	'macroled' => { 300 => 0x120a },
      +	'macromagnification' => { 7 => 0x1b, 11 => 0x1b, 14 => 0x1b, 15 => 0x1b, 19 => 0x1b, 20 => 0x1b, 57 => 0x10 },
      +	'macromode' => { 34 => 0x1, 181 => 0xb, 297 => 0x300, 320 => 0x1c, 387 => 0x1009 },
      +	'magentahsl' => { 103 => 0x20917 },
      +	'magicfilter' => { 297 => 0x52c },
      +	'magnifiedview' => { 86 => 0x11, 88 => 0x9 },
      +	'mainboardversion' => { 138 => 0x438 },
      +	'maindialexposurecomp' => { 290 => '0.6' },
      +	'mainingredient' => { 495 => 'mainIngredient' },
      +	'majorversion' => { 468 => 'MajorVersion' },
      +	'make' => { 98 => 0x0, 115 => 0x1, 119 => 0x10f, 156 => 'Make', 310 => 'Make', 325 => 0x10f, 374 => 'make', 380 => ['@mak',"\xa9mak"], 492 => 'make', 499 => 'Make' },
      +	'makernote' => { 483 => 'MakerNote' },
      +	'makernoteapple' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotecanon' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotecasio' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotecasio2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotedji' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteflir' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotefujifilm' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotege' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotege2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotehasselblad' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotehp' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotehp2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotehp4' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotehp6' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteisl' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotejvc' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotejvctext' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak10' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak11' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak12' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak1a' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak1b' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak3' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak4' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak5' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak6a' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak6b' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak7' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak8a' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak8b' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak8c' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodak9' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekodakunknown' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotekyocera' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteleica' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteleica10' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteleica2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteleica3' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteleica4' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteleica5' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteleica6' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteleica7' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteleica8' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteleica9' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteminolta' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteminolta2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteminolta3' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotemotorola' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotenikon' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotenikon2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotenikon3' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotenintendo' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteoffset' => { 396 => 0xff },
      +	'makernoteolympus' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteolympus2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotepanasonic' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotepanasonic2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotepanasonic3' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotepentax' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotepentax2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotepentax3' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotepentax4' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotepentax5' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotepentax6' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotepentaxunknown' => { 380 => 'PXMN' },
      +	'makernotephaseone' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotereconyx' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotereconyx2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotereconyx3' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotericoh' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotericoh2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotericohpentax' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotericohtext' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesafety' => { 119 => 0xc635 },
      +	'makernotesamsung1a' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesamsung1b' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesamsung2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesanyo' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesanyoc4' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesanyopatch' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesigma' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesony' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesony2' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesony3' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesony4' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesony5' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesonyericsson' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotesonysrf' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernotetype' => { 387 => 0x1 },
      +	'makernoteunknown' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteunknownbinary' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteunknowntext' => { 117 => 'MakN', 119 => 0x927c },
      +	'makernoteversion' => { 186 => 0x0, 226 => 0x1, 302 => 0x0, 320 => 0x8000, 391 => 0x0, 394 => 0x1, 397 => [0x1d,0x1f], 410 => 0x2000 },
      +	'makerurl' => { 380 => "\xa9mal" },
      +	'managedfrom' => { 504 => 'ManagedFrom' },
      +	'managedfromalternatepaths' => { 504 => [\'ManagedFrom','ManagedFromAlternatePaths'] },
      +	'managedfromdocumentid' => { 504 => [\'ManagedFrom','ManagedFromDocumentID'] },
      +	'managedfromfilepath' => { 504 => [\'ManagedFrom','ManagedFromFilePath'] },
      +	'managedfromfrompart' => { 504 => [\'ManagedFrom','ManagedFromFromPart'] },
      +	'managedfrominstanceid' => { 504 => [\'ManagedFrom','ManagedFromInstanceID'] },
      +	'managedfromlastmodifydate' => { 504 => [\'ManagedFrom','ManagedFromLastModifyDate'] },
      +	'managedfromlasturl' => { 504 => [\'ManagedFrom','ManagedFromLastURL'] },
      +	'managedfromlinkcategory' => { 504 => [\'ManagedFrom','ManagedFromLinkCategory'] },
      +	'managedfromlinkform' => { 504 => [\'ManagedFrom','ManagedFromLinkForm'] },
      +	'managedfrommanager' => { 504 => [\'ManagedFrom','ManagedFromManager'] },
      +	'managedfrommanagervariant' => { 504 => [\'ManagedFrom','ManagedFromManagerVariant'] },
      +	'managedfrommanageto' => { 504 => [\'ManagedFrom','ManagedFromManageTo'] },
      +	'managedfrommanageui' => { 504 => [\'ManagedFrom','ManagedFromManageUI'] },
      +	'managedfrommaskmarkers' => { 504 => [\'ManagedFrom','ManagedFromMaskMarkers'] },
      +	'managedfromoriginaldocumentid' => { 504 => [\'ManagedFrom','ManagedFromOriginalDocumentID'] },
      +	'managedfrompartmapping' => { 504 => [\'ManagedFrom','ManagedFromPartMapping'] },
      +	'managedfromplacedresolutionunit' => { 504 => [\'ManagedFrom','ManagedFromPlacedResolutionUnit'] },
      +	'managedfromplacedxresolution' => { 504 => [\'ManagedFrom','ManagedFromPlacedXResolution'] },
      +	'managedfromplacedyresolution' => { 504 => [\'ManagedFrom','ManagedFromPlacedYResolution'] },
      +	'managedfromrenditionclass' => { 504 => [\'ManagedFrom','ManagedFromRenditionClass'] },
      +	'managedfromrenditionparams' => { 504 => [\'ManagedFrom','ManagedFromRenditionParams'] },
      +	'managedfromtopart' => { 504 => [\'ManagedFrom','ManagedFromToPart'] },
      +	'managedfromversionid' => { 504 => [\'ManagedFrom','ManagedFromVersionID'] },
      +	'manager' => { 504 => 'Manager' },
      +	'managervariant' => { 504 => 'ManagerVariant' },
      +	'manageto' => { 504 => 'ManageTo' },
      +	'manageui' => { 504 => 'ManageUI' },
      +	'manifest' => { 504 => 'Manifest' },
      +	'manifestlinkform' => { 504 => [\'Manifest','ManifestLinkForm'] },
      +	'manifestplacedresolutionunit' => { 504 => [\'Manifest','ManifestPlacedResolutionUnit'] },
      +	'manifestplacedxresolution' => { 504 => [\'Manifest','ManifestPlacedXResolution'] },
      +	'manifestplacedyresolution' => { 504 => [\'Manifest','ManifestPlacedYResolution'] },
      +	'manifestreference' => { 504 => [\'Manifest','ManifestReference'] },
      +	'manifestreferencealternatepaths' => { 504 => [\'Manifest','ManifestReferenceAlternatePaths'] },
      +	'manifestreferencedocumentid' => { 504 => [\'Manifest','ManifestReferenceDocumentID'] },
      +	'manifestreferencefilepath' => { 504 => [\'Manifest','ManifestReferenceFilePath'] },
      +	'manifestreferencefrompart' => { 504 => [\'Manifest','ManifestReferenceFromPart'] },
      +	'manifestreferenceinstanceid' => { 504 => [\'Manifest','ManifestReferenceInstanceID'] },
      +	'manifestreferencelastmodifydate' => { 504 => [\'Manifest','ManifestReferenceLastModifyDate'] },
      +	'manifestreferencelasturl' => { 504 => [\'Manifest','ManifestReferenceLastURL'] },
      +	'manifestreferencelinkcategory' => { 504 => [\'Manifest','ManifestReferenceLinkCategory'] },
      +	'manifestreferencelinkform' => { 504 => [\'Manifest','ManifestReferenceLinkForm'] },
      +	'manifestreferencemanager' => { 504 => [\'Manifest','ManifestReferenceManager'] },
      +	'manifestreferencemanagervariant' => { 504 => [\'Manifest','ManifestReferenceManagerVariant'] },
      +	'manifestreferencemanageto' => { 504 => [\'Manifest','ManifestReferenceManageTo'] },
      +	'manifestreferencemanageui' => { 504 => [\'Manifest','ManifestReferenceManageUI'] },
      +	'manifestreferencemaskmarkers' => { 504 => [\'Manifest','ManifestReferenceMaskMarkers'] },
      +	'manifestreferenceoriginaldocumentid' => { 504 => [\'Manifest','ManifestReferenceOriginalDocumentID'] },
      +	'manifestreferencepartmapping' => { 504 => [\'Manifest','ManifestReferencePartMapping'] },
      +	'manifestreferenceplacedresolutionunit' => { 504 => [\'Manifest','ManifestReferencePlacedResolutionUnit'] },
      +	'manifestreferenceplacedxresolution' => { 504 => [\'Manifest','ManifestReferencePlacedXResolution'] },
      +	'manifestreferenceplacedyresolution' => { 504 => [\'Manifest','ManifestReferencePlacedYResolution'] },
      +	'manifestreferencerenditionclass' => { 504 => [\'Manifest','ManifestReferenceRenditionClass'] },
      +	'manifestreferencerenditionparams' => { 504 => [\'Manifest','ManifestReferenceRenditionParams'] },
      +	'manifestreferencetopart' => { 504 => [\'Manifest','ManifestReferenceToPart'] },
      +	'manifestreferenceversionid' => { 504 => [\'Manifest','ManifestReferenceVersionID'] },
      +	'manometerpressure' => { 297 => 0x900, 320 => 0x86 },
      +	'manometerreading' => { 297 => 0x901 },
      +	'manualafpointselectpattern' => { 84 => 0x513 },
       	'manualafpointselpattern' => { 2 => 0xf },
      -	'manualflash' => { 286 => 0x1209 },
      -	'manualflashoutput' => { 34 => 0x29, 268 => '8.2', 271 => '22.2', 272 => '23.1', 273 => '23.2', 275 => '16.2', 276 => '23.2', 277 => '8.2', 278 => '23.2', 281 => '24.2', 373 => 0x100c },
      -	'manualflashstrength' => { 283 => 0x406 },
      -	'manualfocusdistance' => { 219 => 0x85, 288 => 0x100c, 382 => 0x223 },
      -	'manualtv' => { 80 => 0x5, 81 => 0x705 },
      -	'manufacturedate' => { 186 => 0x6705, 321 => 0x1 },
      -	'manufacturedate1' => { 375 => 0x4 },
      -	'manufacturedate2' => { 375 => 0x5 },
      -	'manufacturer' => { 447 => 'Manufacturer', 477 => 'manufacturer' },
      -	'mariahchromablursize' => { 134 => 0xf0d },
      -	'mariahmaphithreshold' => { 134 => 0xf0c },
      -	'mariahmaplothreshold' => { 134 => 0xf0b },
      -	'mariahsigmathreshold' => { 134 => 0xf0e },
      -	'mariahtexturethreshold' => { 134 => 0xf0a },
      -	'marked' => { 475 => 'Marked', 492 => 'Marked' },
      -	'markers' => { 488 => 'markers' },
      -	'markerscomment' => { 488 => [\'markers','markersComment'] },
      -	'markerscuepointparams' => { 488 => [\'markers','markersCuePointParams'] },
      -	'markerscuepointparamskey' => { 488 => [\'markers','markersCuePointParamsKey'] },
      -	'markerscuepointparamsvalue' => { 488 => [\'markers','markersCuePointParamsValue'] },
      -	'markerscuepointtype' => { 488 => [\'markers','markersCuePointType'] },
      -	'markersduration' => { 488 => [\'markers','markersDuration'] },
      -	'markerslocation' => { 488 => [\'markers','markersLocation'] },
      -	'markersname' => { 488 => [\'markers','markersName'] },
      -	'markersprobability' => { 488 => [\'markers','markersProbability'] },
      -	'markersspeaker' => { 488 => [\'markers','markersSpeaker'] },
      -	'markersstarttime' => { 488 => [\'markers','markersStartTime'] },
      -	'markerstarget' => { 488 => [\'markers','markersTarget'] },
      -	'markerstype' => { 488 => [\'markers','markersType'] },
      -	'maskedareas' => { 116 => 0xc68e },
      -	'masterdocumentid' => { 128 => 0xb9 },
      -	'mastergain' => { 227 => 0x50 },
      -	'materialsample' => { 115 => 'MaterialSample' },
      -	'materialsampleid' => { 115 => [\'MaterialSample','MaterialSampleMaterialSampleID'] },
      -	'matrixmetering' => { 267 => '50.1', 269 => '48.1', 270 => '48.1', 279 => '48.1', 280 => '48.1' },
      -	'matrixselectk' => { 134 => 0x91b },
      -	'matrixselectthreshold' => { 134 => 0x91a },
      -	'matrixselectthreshold1' => { 134 => 0x91e },
      -	'matrixselectthreshold2' => { 134 => 0x91f },
      -	'matrixstructure' => { 365 => 0xa },
      -	'maxaperture' => { 34 => 0x1a, 134 => 0x3f9, 140 => 0x6103, 159 => 'MaxAperture', 176 => 0x17, 182 => 0x49c5, 217 => 0x36, 284 => 0x20a, 332 => '14.1' },
      -	'maxapertureatmaxfocal' => { 124 => 0x1407, 159 => 'MaxApertureAtMaxFocal', 211 => 0xb, 212 => 0x10, 213 => 0x11, 217 => 0x12, 284 => 0x206 },
      -	'maxapertureatminfocal' => { 124 => 0x1406, 211 => 0xa, 212 => 0xf, 213 => 0x10, 217 => 0x11, 284 => 0x205 },
      -	'maxaperturevalue' => { 116 => 0x9205, 350 => 0x414, 468 => 'MaxApertureValue' },
      -	'maxavailheight' => { 474 => 'MaxAvailHeight' },
      -	'maxavailwidth' => { 474 => 'MaxAvailWidth' },
      -	'maxcontinuousrelease' => { 266 => 0xb, 267 => 0xc, 269 => '12.1', 270 => '12.1', 275 => 0xc, 276 => 0xb, 279 => '12.1', 280 => '12.1' },
      -	'maxfaces' => { 287 => 0x1202 },
      -	'maxfocallength' => { 7 => 0xe6, 8 => 0x10, 9 => 0x1ab, 10 => 0x13, 11 => 0x115, 12 => 0x13, 13 => 0x153, 14 => 0xda, 16 => 0xfa, 17 => 0xee, 18 => 0x103, 19 => 0x95, 20 => 0xea, 21 => 0x157, 22 => 0xee, 23 => 0xec, 24 => 0x12b, 25 => 0x165, 26 => 0x16a, 27 => 0x188, 28 => 0x116, 29 => 0x18d, 34 => 0x17, 124 => 0x1405, 159 => 'MaxFocalLength', 211 => 0x9, 212 => 0xe, 213 => 0xf, 217 => 0x10, 284 => 0x208, 418 => 0x127c, 419 => 0x1138, 420 => 0x330, 421 => 0x330, 422 => 0x30e },
      -	'maximumdensityrange' => { 130 => 0x8c },
      -	'maxpagesize' => { 493 => 'MaxPageSize' },
      -	'maxpagesizeh' => { 493 => [\'MaxPageSize','MaxPageSizeH'] },
      -	'maxpagesizeunit' => { 493 => [\'MaxPageSize','MaxPageSizeUnit'] },
      -	'maxpagesizew' => { 493 => [\'MaxPageSize','MaxPageSizeW'] },
      -	'maxpixelvaluethreshold' => { 134 => 0xc7d },
      -	'maxsamplevalue' => { 116 => 0x119 },
      -	'maxstorage' => { 483 => 'maxstorage' },
      -	'mb-d10batteries' => { 266 => '12.6' },
      -	'mb-d10batterytype' => { 275 => '13.3' },
      -	'mb-d11batterytype' => { 276 => '2.3' },
      -	'mb-d12batterytype' => { 279 => '3.2' },
      -	'mb-d80batteries' => { 277 => '6.5' },
      -	'mb-d80batterytype' => { 281 => '3.2' },
      -	'mcuversion' => { 211 => 0xc, 212 => 0x11, 213 => 0x12, 217 => 0x13 },
      -	'md5digest' => { 160 => 'zmd5' },
      -	'mditemfindercomment' => { 169 => 'MDItemFinderComment' },
      -	'mditemfscreationdate' => { 169 => 'MDItemFSCreationDate' },
      -	'mditemfslabel' => { 169 => 'MDItemFSLabel' },
      -	'mditemusertags' => { 169 => 'MDItemUserTags' },
      -	'meal' => { 480 => 'meal' },
      -	'measuredev' => { 28 => 0x9, 74 => 0x3, 94 => 0x1814, 152 => 'MeasuredEV' },
      -	'measuredev2' => { 13 => 0x8, 28 => 0x8, 74 => 0x17 },
      +	'manualflash' => { 300 => 0x1209 },
      +	'manualflashoutput' => { 34 => 0x29, 281 => '8.2', 284 => '22.2', 285 => '23.1', 286 => '23.2', 288 => '16.2', 289 => '23.2', 290 => '8.2', 291 => '23.2', 294 => '24.2', 387 => 0x100c },
      +	'manualflashstrength' => { 297 => 0x406 },
      +	'manualfocusdistance' => { 226 => 0x85, 302 => 0x100c, 396 => 0x223 },
      +	'manualfocuspointillumination' => { 295 => 0x17 },
      +	'manualfocusringinafmode' => { 295 => 0x1a },
      +	'manualtv' => { 83 => 0x5, 84 => 0x705 },
      +	'manufacturedate' => { 191 => 0x6705, 335 => 0x1 },
      +	'manufacturedate1' => { 389 => 0x4 },
      +	'manufacturedate2' => { 389 => 0x5 },
      +	'manufacturer' => { 462 => 'Manufacturer', 492 => 'manufacturer' },
      +	'mariahchromablursize' => { 138 => 0xf0d },
      +	'mariahmaphithreshold' => { 138 => 0xf0c },
      +	'mariahmaplothreshold' => { 138 => 0xf0b },
      +	'mariahsigmathreshold' => { 138 => 0xf0e },
      +	'mariahtexturethreshold' => { 138 => 0xf0a },
      +	'marked' => { 490 => 'Marked', 507 => 'Marked' },
      +	'markers' => { 503 => 'markers' },
      +	'markerscomment' => { 503 => [\'markers','markersComment'] },
      +	'markerscuepointparams' => { 503 => [\'markers','markersCuePointParams'] },
      +	'markerscuepointparamskey' => { 503 => [\'markers','markersCuePointParamsKey'] },
      +	'markerscuepointparamsvalue' => { 503 => [\'markers','markersCuePointParamsValue'] },
      +	'markerscuepointtype' => { 503 => [\'markers','markersCuePointType'] },
      +	'markersduration' => { 503 => [\'markers','markersDuration'] },
      +	'markerslocation' => { 503 => [\'markers','markersLocation'] },
      +	'markersname' => { 503 => [\'markers','markersName'] },
      +	'markersprobability' => { 503 => [\'markers','markersProbability'] },
      +	'markersspeaker' => { 503 => [\'markers','markersSpeaker'] },
      +	'markersstarttime' => { 503 => [\'markers','markersStartTime'] },
      +	'markerstarget' => { 503 => [\'markers','markersTarget'] },
      +	'markerstype' => { 503 => [\'markers','markersType'] },
      +	'maskedareas' => { 119 => 0xc68e },
      +	'maskgroupbasedcorractive' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionActive'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionActive'] },
      +	'maskgroupbasedcorramount' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionAmount'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionAmount'] },
      +	'maskgroupbasedcorrblacks2012' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalBlacks2012'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalBlacks2012'] },
      +	'maskgroupbasedcorrbrightness' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalBrightness'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalBrightness'] },
      +	'maskgroupbasedcorrclarity' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalClarity'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalClarity'] },
      +	'maskgroupbasedcorrclarity2012' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalClarity2012'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalClarity2012'] },
      +	'maskgroupbasedcorrcontrast' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalContrast'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalContrast'] },
      +	'maskgroupbasedcorrcontrast2012' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalContrast2012'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalContrast2012'] },
      +	'maskgroupbasedcorrcorrectionname' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionName'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionName'] },
      +	'maskgroupbasedcorrcorrectionsyncid' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionSyncID'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionSyncID'] },
      +	'maskgroupbasedcorrdefringe' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalDefringe'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalDefringe'] },
      +	'maskgroupbasedcorrdehaze' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalDehaze'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalDehaze'] },
      +	'maskgroupbasedcorrections' => { 477 => 'MaskGroupBasedCorrections', 479 => 'MaskGroupBasedCorrections' },
      +	'maskgroupbasedcorrexposure' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalExposure'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalExposure'] },
      +	'maskgroupbasedcorrexposure2012' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalExposure2012'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalExposure2012'] },
      +	'maskgroupbasedcorrhighlights2012' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalHighlights2012'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalHighlights2012'] },
      +	'maskgroupbasedcorrhue' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalHue'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalHue'] },
      +	'maskgroupbasedcorrluminancenoise' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalLuminanceNoise'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalLuminanceNoise'] },
      +	'maskgroupbasedcorrmask' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasks'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasks'] },
      +	'maskgroupbasedcorrmaskalpha' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksAlpha'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksAlpha'] },
      +	'maskgroupbasedcorrmaskangle' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksAngle'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksAngle'] },
      +	'maskgroupbasedcorrmaskbottom' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksBottom'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksBottom'] },
      +	'maskgroupbasedcorrmaskcentervalue' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCenterValue'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCenterValue'] },
      +	'maskgroupbasedcorrmaskcenterweight' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCenterWeight'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCenterWeight'] },
      +	'maskgroupbasedcorrmaskdabs' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksDabs'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksDabs'] },
      +	'maskgroupbasedcorrmaskfeather' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksFeather'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksFeather'] },
      +	'maskgroupbasedcorrmaskflipped' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksFlipped'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksFlipped'] },
      +	'maskgroupbasedcorrmaskflow' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksFlow'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksFlow'] },
      +	'maskgroupbasedcorrmaskfullx' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksFullX'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksFullX'] },
      +	'maskgroupbasedcorrmaskfully' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksFullY'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksFullY'] },
      +	'maskgroupbasedcorrmaskinputdigest' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksInputDigest'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksInputDigest'] },
      +	'maskgroupbasedcorrmaskleft' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksLeft'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksLeft'] },
      +	'maskgroupbasedcorrmaskmaskactive' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskActive'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskActive'] },
      +	'maskgroupbasedcorrmaskmaskblendmode' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskBlendMode'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskBlendMode'] },
      +	'maskgroupbasedcorrmaskmaskdigest' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskDigest'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskDigest'] },
      +	'maskgroupbasedcorrmaskmaskinverted' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskInverted'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskInverted'] },
      +	'maskgroupbasedcorrmaskmaskname' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskName'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskName'] },
      +	'maskgroupbasedcorrmaskmasks' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasks'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasks'] },
      +	'maskgroupbasedcorrmaskmasksalpha' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksAlpha'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksAlpha'] },
      +	'maskgroupbasedcorrmaskmasksangle' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksAngle'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksAngle'] },
      +	'maskgroupbasedcorrmaskmasksbottom' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksBottom'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksBottom'] },
      +	'maskgroupbasedcorrmaskmaskscentervalue' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksCenterValue'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksCenterValue'] },
      +	'maskgroupbasedcorrmaskmaskscenterweight' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksCenterWeight'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksCenterWeight'] },
      +	'maskgroupbasedcorrmaskmasksdabs' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksDabs'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksDabs'] },
      +	'maskgroupbasedcorrmaskmasksfeather' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksFeather'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksFeather'] },
      +	'maskgroupbasedcorrmaskmasksflipped' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksFlipped'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksFlipped'] },
      +	'maskgroupbasedcorrmaskmasksflow' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksFlow'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksFlow'] },
      +	'maskgroupbasedcorrmaskmasksfullx' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksFullX'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksFullX'] },
      +	'maskgroupbasedcorrmaskmasksfully' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksFullY'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksFullY'] },
      +	'maskgroupbasedcorrmaskmasksinputdigest' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksInputDigest'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksInputDigest'] },
      +	'maskgroupbasedcorrmaskmasksleft' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksLeft'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksLeft'] },
      +	'maskgroupbasedcorrmaskmasksmaskactive' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskActive'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskActive'] },
      +	'maskgroupbasedcorrmaskmasksmaskblendmode' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskBlendMode'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskBlendMode'] },
      +	'maskgroupbasedcorrmaskmasksmaskdigest' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskDigest'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskDigest'] },
      +	'maskgroupbasedcorrmaskmasksmaskinverted' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskInverted'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskInverted'] },
      +	'maskgroupbasedcorrmaskmasksmaskname' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskName'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskName'] },
      +	'maskgroupbasedcorrmaskmasksmasksubtype' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskSubType'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskSubType'] },
      +	'maskgroupbasedcorrmaskmasksmasksyncid' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskSyncID'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskSyncID'] },
      +	'maskgroupbasedcorrmaskmasksmaskversion' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskVersion'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskVersion'] },
      +	'maskgroupbasedcorrmaskmasksmidpoint' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMidpoint'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMidpoint'] },
      +	'maskgroupbasedcorrmaskmasksorigin' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksOrigin'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksOrigin'] },
      +	'maskgroupbasedcorrmaskmasksperimetervalue' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksPerimeterValue'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksPerimeterValue'] },
      +	'maskgroupbasedcorrmaskmasksradius' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksRadius'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksRadius'] },
      +	'maskgroupbasedcorrmaskmasksreferencepoint' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksReferencePoint'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksReferencePoint'] },
      +	'maskgroupbasedcorrmaskmasksright' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksRight'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksRight'] },
      +	'maskgroupbasedcorrmaskmasksroundness' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksRoundness'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksRoundness'] },
      +	'maskgroupbasedcorrmaskmaskssizex' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksSizeX'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksSizeX'] },
      +	'maskgroupbasedcorrmaskmaskssizey' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksSizeY'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksSizeY'] },
      +	'maskgroupbasedcorrmaskmaskstop' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksTop'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksTop'] },
      +	'maskgroupbasedcorrmaskmasksubtype' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskSubType'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskSubType'] },
      +	'maskgroupbasedcorrmaskmasksvalue' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskValue'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksMaskValue'] },
      +	'maskgroupbasedcorrmaskmasksversion' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksVersion'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksVersion'] },
      +	'maskgroupbasedcorrmaskmaskswhat' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksWhat'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksWhat'] },
      +	'maskgroupbasedcorrmaskmaskswholeimagearea' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksWholeImageArea'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksWholeImageArea'] },
      +	'maskgroupbasedcorrmaskmasksx' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksX'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksX'] },
      +	'maskgroupbasedcorrmaskmasksy' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksY'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksY'] },
      +	'maskgroupbasedcorrmaskmasksyncid' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskSyncID'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskSyncID'] },
      +	'maskgroupbasedcorrmaskmaskszerox' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksZeroX'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksZeroX'] },
      +	'maskgroupbasedcorrmaskmaskszeroy' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksZeroY'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMasksZeroY'] },
      +	'maskgroupbasedcorrmaskmaskversion' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskVersion'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskVersion'] },
      +	'maskgroupbasedcorrmaskmidpoint' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMidpoint'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMidpoint'] },
      +	'maskgroupbasedcorrmaskorigin' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksOrigin'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksOrigin'] },
      +	'maskgroupbasedcorrmaskperimetervalue' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksPerimeterValue'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksPerimeterValue'] },
      +	'maskgroupbasedcorrmaskradius' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksRadius'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksRadius'] },
      +	'maskgroupbasedcorrmaskrange' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMask'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMask'] },
      +	'maskgroupbasedcorrmaskrangeareamodels' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels'] },
      +	'maskgroupbasedcorrmaskrangeareamodelscolorsampleinfo' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'] },
      +	'maskgroupbasedcorrmaskrangeareamodelscomponents' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents'] },
      +	'maskgroupbasedcorrmaskrangecoloramount' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount'] },
      +	'maskgroupbasedcorrmaskrangedepthfeather' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather'] },
      +	'maskgroupbasedcorrmaskrangedepthmax' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax'] },
      +	'maskgroupbasedcorrmaskrangedepthmin' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin'] },
      +	'maskgroupbasedcorrmaskrangeinvert' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert'] },
      +	'maskgroupbasedcorrmaskrangelumfeather' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather'] },
      +	'maskgroupbasedcorrmaskrangeluminancedepthsampleinfo' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo'] },
      +	'maskgroupbasedcorrmaskrangelummax' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax'] },
      +	'maskgroupbasedcorrmaskrangelummin' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin'] },
      +	'maskgroupbasedcorrmaskrangelumrange' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange'] },
      +	'maskgroupbasedcorrmaskrangesampletype' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType'] },
      +	'maskgroupbasedcorrmaskrangetype' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskType'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskType'] },
      +	'maskgroupbasedcorrmaskrangeversion' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion'] },
      +	'maskgroupbasedcorrmaskreferencepoint' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksReferencePoint'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksReferencePoint'] },
      +	'maskgroupbasedcorrmaskright' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksRight'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksRight'] },
      +	'maskgroupbasedcorrmaskroundness' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksRoundness'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksRoundness'] },
      +	'maskgroupbasedcorrmasksizex' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksSizeX'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksSizeX'] },
      +	'maskgroupbasedcorrmasksizey' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksSizeY'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksSizeY'] },
      +	'maskgroupbasedcorrmasktop' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksTop'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksTop'] },
      +	'maskgroupbasedcorrmaskvalue' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskValue'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksMaskValue'] },
      +	'maskgroupbasedcorrmaskversion' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksVersion'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksVersion'] },
      +	'maskgroupbasedcorrmaskwhat' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksWhat'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksWhat'] },
      +	'maskgroupbasedcorrmaskwholeimagearea' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksWholeImageArea'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksWholeImageArea'] },
      +	'maskgroupbasedcorrmaskx' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksX'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksX'] },
      +	'maskgroupbasedcorrmasky' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksY'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksY'] },
      +	'maskgroupbasedcorrmaskzerox' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksZeroX'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksZeroX'] },
      +	'maskgroupbasedcorrmaskzeroy' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksZeroY'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionMasksZeroY'] },
      +	'maskgroupbasedcorrmoire' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalMoire'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalMoire'] },
      +	'maskgroupbasedcorrrangemask' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMask'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMask'] },
      +	'maskgroupbasedcorrrangemaskareamodels' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModels'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModels'] },
      +	'maskgroupbasedcorrrangemaskareamodelscolorsampleinfo' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'] },
      +	'maskgroupbasedcorrrangemaskareamodelscomponents' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents'] },
      +	'maskgroupbasedcorrrangemaskcoloramount' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskColorAmount'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskColorAmount'] },
      +	'maskgroupbasedcorrrangemaskdepthfeather' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskDepthFeather'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskDepthFeather'] },
      +	'maskgroupbasedcorrrangemaskdepthmax' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskDepthMax'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskDepthMax'] },
      +	'maskgroupbasedcorrrangemaskdepthmin' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskDepthMin'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskDepthMin'] },
      +	'maskgroupbasedcorrrangemaskinvert' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskInvert'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskInvert'] },
      +	'maskgroupbasedcorrrangemasklumfeather' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskLumFeather'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskLumFeather'] },
      +	'maskgroupbasedcorrrangemaskluminancedepthsampleinfo' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo'] },
      +	'maskgroupbasedcorrrangemasklummax' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskLumMax'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskLumMax'] },
      +	'maskgroupbasedcorrrangemasklummin' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskLumMin'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskLumMin'] },
      +	'maskgroupbasedcorrrangemasklumrange' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskLumRange'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskLumRange'] },
      +	'maskgroupbasedcorrrangemasksampletype' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskSampleType'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskSampleType'] },
      +	'maskgroupbasedcorrrangemasktype' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskType'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskType'] },
      +	'maskgroupbasedcorrrangemaskversion' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskVersion'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsCorrectionRangeMaskVersion'] },
      +	'maskgroupbasedcorrsaturation' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalSaturation'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalSaturation'] },
      +	'maskgroupbasedcorrshadows2012' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalShadows2012'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalShadows2012'] },
      +	'maskgroupbasedcorrsharpness' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalSharpness'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalSharpness'] },
      +	'maskgroupbasedcorrtemperature' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalTemperature'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalTemperature'] },
      +	'maskgroupbasedcorrtexture' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalTexture'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalTexture'] },
      +	'maskgroupbasedcorrtint' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalTint'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalTint'] },
      +	'maskgroupbasedcorrtoninghue' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalToningHue'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalToningHue'] },
      +	'maskgroupbasedcorrtoningsaturation' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalToningSaturation'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalToningSaturation'] },
      +	'maskgroupbasedcorrwhat' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsWhat'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsWhat'] },
      +	'maskgroupbasedcorrwhites2012' => { 477 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalWhites2012'], 479 => [\'MaskGroupBasedCorrections','MaskGroupBasedCorrectionsLocalWhites2012'] },
      +	'masterdocumentid' => { 131 => 0xb9 },
      +	'mastergain' => { 237 => 0x50 },
      +	'materialsample' => { 118 => 'MaterialSample' },
      +	'materialsampleid' => { 118 => [\'MaterialSample','MaterialSampleMaterialSampleID'] },
      +	'matrixmetering' => { 280 => '50.1', 282 => '48.1', 283 => '48.1', 292 => '48.1', 293 => '48.1', 295 => 0x233 },
      +	'matrixselectk' => { 138 => 0x91b },
      +	'matrixselectthreshold' => { 138 => 0x91a },
      +	'matrixselectthreshold1' => { 138 => 0x91e },
      +	'matrixselectthreshold2' => { 138 => 0x91f },
      +	'matrixstructure' => { 379 => 0xa },
      +	'maxaperture' => { 34 => 0x1a, 138 => 0x3f9, 144 => 0x6103, 163 => 'MaxAperture', 181 => 0x17, 187 => 0x49c5, 224 => 0x36, 298 => 0x20a, 346 => '14.1' },
      +	'maxapertureatmaxfocal' => { 127 => 0x1407, 163 => 'MaxApertureAtMaxFocal', 218 => 0xb, 219 => 0x10, 220 => 0x11, 224 => 0x12, 298 => 0x206 },
      +	'maxapertureatminfocal' => { 127 => 0x1406, 218 => 0xa, 219 => 0xf, 220 => 0x10, 224 => 0x11, 298 => 0x205 },
      +	'maxaperturevalue' => { 119 => 0x9205, 364 => 0x414, 483 => 'MaxApertureValue' },
      +	'maxavailheight' => { 489 => 'MaxAvailHeight' },
      +	'maxavailwidth' => { 489 => 'MaxAvailWidth' },
      +	'maxcontinuousrelease' => { 279 => 0xb, 280 => 0xc, 282 => '12.1', 283 => '12.1', 288 => 0xc, 289 => 0xb, 292 => '12.1', 293 => '12.1', 295 => 0x3d },
      +	'maxfaces' => { 301 => 0x1202 },
      +	'maxfocallength' => { 7 => 0xe6, 8 => 0x10, 9 => 0x1ab, 10 => 0x13, 11 => 0x115, 12 => 0x13, 13 => 0x153, 14 => 0xda, 16 => 0xfa, 17 => 0xee, 18 => 0x103, 19 => 0x95, 20 => 0xea, 21 => 0x157, 22 => 0xee, 23 => 0xec, 24 => 0x12b, 25 => 0x165, 26 => 0x16a, 27 => 0x188, 28 => 0x116, 29 => 0x18d, 34 => 0x17, 127 => 0x1405, 163 => 'MaxFocalLength', 218 => 0x9, 219 => 0xe, 220 => 0xf, 224 => 0x10, 298 => 0x208, 432 => 0x127c, 433 => 0x1138, 434 => 0x330, 435 => 0x330, 436 => 0x30e },
      +	'maximumdensityrange' => { 133 => 0x8c },
      +	'maxpagesize' => { 508 => 'MaxPageSize' },
      +	'maxpagesizeh' => { 508 => [\'MaxPageSize','MaxPageSizeH'] },
      +	'maxpagesizeunit' => { 508 => [\'MaxPageSize','MaxPageSizeUnit'] },
      +	'maxpagesizew' => { 508 => [\'MaxPageSize','MaxPageSizeW'] },
      +	'maxpixelvaluethreshold' => { 138 => 0xc7d },
      +	'maxsamplevalue' => { 119 => 0x119 },
      +	'maxstorage' => { 498 => 'maxstorage' },
      +	'mb-d10batteries' => { 279 => '12.6' },
      +	'mb-d10batterytype' => { 288 => '13.3' },
      +	'mb-d11batterytype' => { 289 => '2.3' },
      +	'mb-d12batterytype' => { 292 => '3.2' },
      +	'mb-d80batteries' => { 290 => '6.5' },
      +	'mb-d80batterytype' => { 294 => '3.2' },
      +	'mcuversion' => { 218 => 0xc, 219 => 0x11, 220 => 0x12, 224 => 0x13 },
      +	'md5digest' => { 164 => 'zmd5' },
      +	'mditemfindercomment' => { 173 => 'MDItemFinderComment' },
      +	'mditemfscreationdate' => { 173 => 'MDItemFSCreationDate' },
      +	'mditemfslabel' => { 173 => 'MDItemFSLabel' },
      +	'mditemusertags' => { 173 => 'MDItemUserTags' },
      +	'meal' => { 495 => 'meal' },
      +	'measuredev' => { 28 => 0x9, 77 => 0x3, 97 => 0x1814, 156 => 'MeasuredEV' },
      +	'measuredev2' => { 13 => 0x8, 28 => 0x8, 77 => 0x17 },
       	'measuredev3' => { 13 => 0x9 },
      -	'measuredlv' => { 182 => 0x690, 301 => 0x312, 304 => 0x312, 305 => 0x312, 308 => 0x3407 },
      -	'measuredrggb' => { 62 => 0x1 },
      -	'measuredrggbdata' => { 42 => 0x287 },
      -	'measurementaccuracy' => { 115 => [\'MeasurementOrFact','MeasurementOrFactMeasurementAccuracy'] },
      -	'measurementdeterminedby' => { 115 => [\'MeasurementOrFact','MeasurementOrFactMeasurementDeterminedBy'] },
      -	'measurementdetermineddate' => { 115 => [\'MeasurementOrFact','MeasurementOrFactMeasurementDeterminedDate'] },
      -	'measurementid' => { 115 => [\'MeasurementOrFact','MeasurementOrFactMeasurementID'] },
      -	'measurementmethod' => { 115 => [\'MeasurementOrFact','MeasurementOrFactMeasurementMethod'] },
      -	'measurementorfact' => { 115 => 'MeasurementOrFact' },
      -	'measurementremarks' => { 115 => [\'MeasurementOrFact','MeasurementOrFactMeasurementRemarks'] },
      -	'measurementtype' => { 115 => [\'MeasurementOrFact','MeasurementOrFactMeasurementType'] },
      -	'measurementunit' => { 115 => [\'MeasurementOrFact','MeasurementOrFactMeasurementUnit'] },
      -	'measurementvalue' => { 115 => [\'MeasurementOrFact','MeasurementOrFactMeasurementValue'] },
      -	'measuretype' => { 447 => 'MeasureType' },
      -	'mechanicalshuttercount' => { 219 => 0x37 },
      -	'mediaconstraints' => { 293 => 'MediaConstraints' },
      -	'mediacreatedate' => { 362 => 0x1 },
      -	'mediaeventiddate' => { 452 => 'MediaEventIdDate' },
      -	'mediamodifydate' => { 362 => 0x2 },
      -	'mediasummarycode' => { 293 => 'MediaSummaryCode' },
      -	'mediatype' => { 358 => 'stik' },
      -	'memoaudioquality' => { 81 => 0x812 },
      -	'memorycardconfiguration' => { 399 => 0x16 },
      -	'memorycardnumber' => { 202 => 0x2 },
      -	'menubuttondisplayposition' => { 79 => 0xb, 82 => 0xa, 83 => 0xb, 86 => 0xb },
      -	'menubuttonreturn' => { 87 => 0xb },
      -	'menumonitorofftime' => { 266 => '26.1', 267 => '22.1', 269 => '22.1', 270 => '22.1', 274 => '21.1', 275 => '8.2', 276 => '21.1', 279 => '22.1', 280 => '22.1', 281 => '22.1' },
      -	'metadatadate' => { 486 => 'MetadataDate' },
      -	'metadatamoddate' => { 488 => 'metadataModDate' },
      -	'metaversion' => { 413 => 0x34 },
      -	'meterinfo1row1' => { 407 => 0x0, 408 => 0x0 },
      -	'meterinfo1row2' => { 407 => 0x6c, 408 => 0x5a },
      -	'meterinfo1row3' => { 407 => 0xd8, 408 => 0xb4 },
      -	'meterinfo1row4' => { 407 => 0x144, 408 => 0x10e },
      -	'meterinfo1row5' => { 407 => 0x1b0, 408 => 0x168 },
      -	'meterinfo1row6' => { 407 => 0x21c, 408 => 0x1c2 },
      -	'meterinfo1row7' => { 407 => 0x288, 408 => 0x21c },
      -	'meterinfo2row1' => { 407 => 0x2f4, 408 => 0x276 },
      -	'meterinfo2row2' => { 407 => 0x378, 408 => 0x2e4 },
      -	'meterinfo2row3' => { 407 => 0x3fc, 408 => 0x352 },
      -	'meterinfo2row4' => { 407 => 0x480, 408 => 0x3c0 },
      -	'meterinfo2row5' => { 407 => 0x504, 408 => 0x42e },
      -	'meterinfo2row6' => { 407 => 0x588, 408 => 0x49c },
      -	'meterinfo2row7' => { 407 => 0x60c, 408 => 0x50a },
      -	'meterinfo2row8' => { 407 => 0x690, 408 => 0x578 },
      -	'meterinfo2row9' => { 407 => 0x714, 408 => 0x5e6 },
      -	'metering' => { 268 => '6.1' },
      -	'meteringmode' => { 34 => 0x11, 116 => 0x9207, 136 => 0x1c, 176 => 0x7, 177 => 0x25, 179 => 0x12, 283 => 0x202, 341 => 0x17, 383 => 0x9, 393 => 0x15, 394 => 0x13, 395 => 0x7, 411 => 0x3, 414 => 0x1174, 415 => 0x1178, 416 => 0x1154, 417 => 0x11d0, 418 => 0x11ac, 419 => 0x1064, 420 => 0x25c, 421 => 0x25c, 422 => 0x24b, 468 => 'MeteringMode' },
      -	'meteringmode2' => { 322 => '2.1', 406 => 0x202c },
      -	'meteringmode3' => { 322 => '16.1' },
      -	'meteringoffscaleindicator' => { 179 => 0x53 },
      -	'meteringtime' => { 266 => '22.2', 268 => '3.2', 271 => '17.1', 272 => '18.1', 275 => '7.3', 276 => '18.1', 277 => '3.2', 281 => '19.1' },
      -	'micro1version' => { 368 => 0x1f },
      -	'micro2version' => { 368 => 0x2d },
      -	'midrangesharpness' => { 223 => 0x3b },
      -	'mieversion' => { 160 => '0Vers' },
      -	'mime' => { 447 => 'Mime' },
      -	'minaperture' => { 34 => 0x1b, 134 => 0x3f8, 159 => 'MinAperture', 332 => '0.2' },
      -	'minaperturevalue' => { 350 => 0x415 },
      -	'minfocallength' => { 7 => 0xe4, 8 => 0xe, 9 => 0x1a9, 10 => 0x11, 11 => 0x113, 12 => 0x11, 13 => 0x151, 14 => 0xd8, 16 => 0xf8, 17 => 0xec, 18 => 0x101, 19 => 0x93, 20 => 0xe8, 21 => 0x155, 22 => 0xec, 23 => 0xea, 24 => 0x129, 25 => 0x163, 26 => 0x168, 27 => 0x186, 28 => 0x114, 29 => 0x18b, 34 => 0x18, 124 => 0x1404, 159 => 'MinFocalLength', 211 => 0x8, 212 => 0xd, 213 => 0xe, 217 => 0xf, 284 => 0x207, 418 => 0x127a, 419 => 0x1136, 420 => 0x32e, 421 => 0x32e, 422 => 0x30c },
      -	'minfocusdistance' => { 332 => 0x3 },
      -	'minintegrationrows' => { 134 => 0x1874 },
      -	'minoltadate' => { 176 => 0x15 },
      -	'minoltaimagesize' => { 176 => 0x4, 177 => 0xc, 178 => 0x2, 181 => 0x103 },
      -	'minoltamodelid' => { 176 => 0x25 },
      -	'minoltaquality' => { 176 => 0x5, 177 => 0xd, 178 => 0x3, 181 => [0x102,0x103] },
      -	'minoltatime' => { 176 => 0x16 },
      -	'minormodelagedisclosure' => { 293 => 'MinorModelAgeDisclosure' },
      -	'minorversion' => { 453 => 'MinorVersion' },
      -	'minsamplevalue' => { 116 => 0x118 },
      -	'mirrorlockup' => { 79 => 0xc, 80 => 0xc, 81 => 0x60f, 82 => 0xb, 83 => 0xc, 84 => 0x6, 85 => 0x6, 86 => 0xc, 87 => 0x3 },
      -	'mobilecountrycode' => { 461 => 'mcc' },
      -	'mobilenetworkcode' => { 461 => 'mnc' },
      -	'moddate' => { 296 => 'modify-date', 475 => 'ModDate' },
      -	'modedialposition' => { 399 => 0x14 },
      -	'model' => { 95 => 0x6, 116 => 0x110, 152 => 'Model', 296 => 'Model', 311 => 0x110, 341 => 0x23f, 360 => 'model', 366 => ['CNMN','cmnm',"\xa9mdl","\xa9mod"], 383 => 0x84, 447 => 'Model', 477 => 'model', 484 => 'Model' },
      -	'modelage' => { 474 => 'ModelAge' },
      -	'modelid' => { 282 => 0x0 },
      -	'modelingflash' => { 266 => '21.4', 267 => '31.1', 269 => '31.1', 270 => '31.1', 275 => '26.4', 276 => '30.2', 277 => '7.4', 278 => '30.1', 279 => '31.1', 280 => '31.1', 281 => '31.3' },
      -	'modelreleaseid' => { 293 => 'ModelReleaseID' },
      -	'modelreleasestatus' => { 293 => 'ModelReleaseStatus' },
      -	'modelreleaseyear' => { 426 => 0x52, 427 => 0x46, 428 => 0x53 },
      -	'modeltiepoint' => { 116 => 0x8482 },
      -	'modeltransform' => { 116 => 0x85d8 },
      -	'modelyear' => { 477 => 'modelYear' },
      -	'modificationdate' => { 478 => 'modificationDate' },
      -	'modifiedcolortemp' => { 63 => 0x9 },
      -	'modifieddigitalgain' => { 63 => 0xb },
      -	'modifiedparamflag' => { 56 => 0x1 },
      -	'modifiedpicturestyle' => { 63 => 0xa },
      -	'modifiedsaturation' => { 283 => 0x504 },
      -	'modifiedsensorbluelevel' => { 63 => 0x5 },
      -	'modifiedsensorredlevel' => { 63 => 0x4 },
      -	'modifiedsharpness' => { 63 => 0x2 },
      -	'modifiedsharpnessfreq' => { 63 => 0x3 },
      -	'modifiedtonecurve' => { 63 => 0x1 },
      -	'modifiedwhitebalance' => { 63 => 0x8 },
      -	'modifiedwhitebalanceblue' => { 63 => 0x7 },
      -	'modifiedwhitebalancered' => { 63 => 0x6 },
      -	'modifydate' => { 116 => 0x132, 153 => 'ModifyDate', 292 => 'ModDate', 294 => 'tIME', 357 => 'ModDate', 363 => 0x2, 486 => 'ModifyDate' },
      -	'moirefilter' => { 116 => 0xfe58, 462 => 'MoireFilter', 464 => 'MoireFilter' },
      -	'monitordisplayoff' => { 179 => 0x4c },
      -	'monitormatrix' => { 134 => 0x8fc },
      -	'monitorofftime' => { 266 => '18.2', 268 => '3.1', 277 => '3.1' },
      -	'monochromecolor' => { 283 => 0x53b },
      -	'monochromecontrast' => { 106 => 0x3c },
      -	'monochromefiltereffect' => { 100 => 0x20307, 106 => 0x3a, 341 => 0x73 },
      -	'monochromelinear' => { 106 => 0x3d },
      -	'monochromeoutputhighlightpoint' => { 106 => 0x41 },
      -	'monochromeoutputshadowpoint' => { 106 => 0x42 },
      -	'monochromeprofilesettings' => { 283 => 0x537 },
      -	'monochromerawhighlight' => { 106 => 0x7a },
      -	'monochromerawhighlightpoint' => { 106 => 0x3f },
      -	'monochromerawshadow' => { 106 => 0x83 },
      -	'monochromerawshadowpoint' => { 106 => 0x40 },
      -	'monochromesharpness' => { 106 => 0x3e },
      -	'monochrometoning' => { 341 => 0x74 },
      -	'monochrometoningeffect' => { 100 => 0x20306, 106 => 0x3b },
      -	'monochromeunsharpmaskfineness' => { 106 => 0xb2 },
      -	'monochromeunsharpmaskstrength' => { 106 => 0xb0 },
      -	'monochromeunsharpmaskthreshold' => { 106 => 0xb4 },
      -	'monochromevignetting' => { 283 => 0x53a },
      -	'monthdaycreated' => { 136 => 0x12, 145 => 0xe },
      -	'moonphase' => { 367 => 0x12, 368 => 0x43, 369 => 0x4c },
      -	'morepermissions' => { 460 => 'morePermissions' },
      -	'motionsensitivity' => { 367 => 0x29, 369 => 0x60 },
      -	'movieaelockbuttonassignment' => { 279 => '40.1' },
      -	'moviefunc1button' => { 269 => '41.1', 270 => '41.1', 280 => '41.1' },
      -	'moviefunctionbutton' => { 267 => '41.1', 279 => '41.1' },
      -	'moviefunctionbuttonplusdials' => { 267 => '52.1' },
      -	'moviepreviewbutton' => { 267 => '41.2', 269 => '41.2', 270 => '41.2', 279 => '41.2', 280 => '41.2' },
      -	'moviepreviewbuttonplusdials' => { 267 => '52.2' },
      -	'movieshutterbutton' => { 267 => '38.3', 269 => '38.3', 270 => '38.3', 279 => '38.3', 280 => '38.3' },
      -	'moviesubselectorassignment' => { 267 => '48.2' },
      -	'moviesubselectorassignmentplusdials' => { 267 => '53.1' },
      -	'multiburstimageheight' => { 406 => 0x1002 },
      -	'multiburstimagewidth' => { 406 => 0x1001 },
      -	'multiburstmode' => { 406 => 0x1000 },
      -	'multicontrollerwhilemetering' => { 81 => 0x517 },
      -	'multiexposure' => { 65 => 0x1, 306 => 0xb4 },
      -	'multiexposureautogain' => { 220 => 0x3 },
      -	'multiexposurecontrol' => { 65 => 0x2 },
      -	'multiexposuremode' => { 220 => 0x1 },
      -	'multiexposureshots' => { 65 => 0x3, 220 => 0x2 },
      -	'multiframenoisereduction' => { 395 => 0x35, 406 => 0x200b, 411 => 0x15 },
      -	'multiframenreffect' => { 406 => 0x2023 },
      -	'multifunctionlock' => { 81 => 0x70f },
      -	'multipleexposuremode' => { 287 => 0x101c },
      -	'multipleexposureset' => { 322 => '10.1' },
      -	'multisample' => { 227 => 0x40 },
      -	'multiselector' => { 266 => '9.4', 267 => '10.3', 269 => '10.3', 270 => '10.3', 275 => '27.4', 279 => '10.3', 280 => '10.3' },
      -	'multiselectorliveview' => { 266 => '4.3', 269 => '37.1', 270 => '37.1', 279 => '37.1', 280 => '37.1' },
      -	'multiselectorliveviewmode' => { 237 => 0x18c2 },
      -	'multiselectorplaybackmode' => { 266 => ['13.5','9.2'], 267 => '10.2', 270 => '10.2', 275 => '27.2', 279 => '10.2', 280 => '10.2' },
      -	'multiselectorshootmode' => { 266 => '9.1', 267 => '10.1', 269 => '10.1', 270 => '10.1', 275 => '27.1', 279 => '10.1', 280 => '10.1' },
      -	'multishot' => { 311 => 0x121 },
      -	'mute' => { 360 => 'player.movie.audio.mute' },
      -	'mycolormode' => { 66 => 0x2 },
      -	'name' => { 366 => 'name' },
      -	'narrator' => { 358 => "\xa9nrt" },
      -	'nationalcatalognumber' => { 478 => 'nationalCatalogNumber' },
      -	'nativedigest' => { 468 => 'NativeDigest', 484 => 'NativeDigest' },
      -	'ndfilter' => { 74 => 0x1c, 283 => 0x204, 373 => 0x1019 },
      -	'near' => { 447 => 'Near' },
      -	'nefbitdepth' => { 219 => 0xe22 },
      -	'nefcompression' => { 219 => 0x93 },
      -	'neflinearizationtable' => { 219 => 0x96 },
      -	'negativecachelargepreviewsize' => { 462 => 'NegativeCacheLargePreviewSize', 464 => 'NegativeCacheLargePreviewSize' },
      -	'negativecachemaximumsize' => { 462 => 'NegativeCacheMaximumSize', 464 => 'NegativeCacheMaximumSize' },
      -	'negativecachepath' => { 462 => 'NegativeCachePath', 464 => 'NegativeCachePath' },
      -	'neutraldensityfilter' => { 341 => 0x88 },
      -	'neutraloutputhighlightpoint' => { 106 => 0x2f },
      -	'neutraloutputshadowpoint' => { 106 => 0x30 },
      -	'neutralrawcolortone' => { 106 => 0x28 },
      -	'neutralrawcontrast' => { 106 => 0x2a },
      -	'neutralrawhighlight' => { 106 => 0x78 },
      -	'neutralrawhighlightpoint' => { 106 => 0x2d },
      -	'neutralrawlinear' => { 106 => 0x2b },
      -	'neutralrawsaturation' => { 106 => 0x29 },
      -	'neutralrawshadow' => { 106 => 0x81 },
      -	'neutralrawshadowpoint' => { 106 => 0x2e },
      -	'neutralrawsharpness' => { 106 => 0x2c },
      -	'neutralunsharpmaskfineness' => { 106 => 0xa6 },
      -	'neutralunsharpmaskthreshold' => { 106 => 0xa8 },
      -	'neutraunsharpmaskstrength' => { 106 => 0xa4 },
      -	'newrawimagedigest' => { 116 => 0xc7a7 },
      -	'newsphotoversion' => { 130 => 0x0 },
      -	'nickname' => { 486 => 'Nickname' },
      -	'nikoncapturedata' => { 219 => 0xe01 },
      -	'nikoncaptureeditversions' => { 219 => 0xe13 },
      -	'nikoncaptureoffsets' => { 219 => 0xe0e },
      -	'nikoncaptureoutput' => { 219 => 0xe1e },
      -	'nikoncaptureversion' => { 219 => 0xe09 },
      -	'nikoniccprofile' => { 219 => 0xe1d },
      -	'nikonimagesize' => { 234 => '723.1', 235 => '732.1', 244 => 0x2c4 },
      -	'nikonmeteringmode' => { 238 => 0x2ea4, 246 => 0x175e },
      -	'noisefilter' => { 283 => 0x527 },
      -	'noiseprofile' => { 116 => 0xc761 },
      -	'noisereduction' => { 124 => [0x100b,0x100e], 177 => 0xb0, 178 => 0x60, 179 => 0x3f, 219 => 0x95, 259 => 0x753dcbc0, 260 => 0x17, 283 => 0x50a, 288 => 0x103a, 306 => 0x2d, 341 => 0x49, 373 => 0x100f, 375 => 0x2a },
      -	'noisereduction2' => { 287 => 0x1010 },
      -	'noisereductionapplied' => { 116 => 0xc6f7 },
      -	'noisereductionintensity' => { 260 => 0x9 },
      -	'noisereductionmethod' => { 260 => 0x11 },
      -	'noisereductionmode' => { 439 => 0x801e },
      -	'noisereductionparametersatcapture' => { 134 => 0xe73 },
      -	'noisereductionparameterscamera' => { 134 => 0xe72 },
      -	'noisereductionparametershost3mp' => { 134 => 0xe71 },
      -	'noisereductionparametershost6mp' => { 134 => 0xe70 },
      -	'noisereductionparametershostrgb' => { 134 => 0xe6f },
      -	'noisereductionparameterskhufu3mp' => { 134 => 0xe65 },
      -	'noisereductionparameterskhufu6mp' => { 134 => 0xe64 },
      -	'noisereductionparameterskhufurgb' => { 134 => 0xe63 },
      -	'noisereductionparams' => { 311 => 0x1b },
      -	'noisereductionsharpness' => { 260 => 0xd },
      -	'noisereductionstrength' => { 306 => 0xd6 },
      -	'noisereductionvalue' => { 439 => 0x8027 },
      -	'nomemorycard' => { 266 => '22.1', 267 => '4.2', 268 => '0.3', 271 => '2.4', 272 => '3.2', 273 => '3.2', 275 => '33.7', 276 => '3.2', 277 => '0.3', 279 => '4.2', 281 => '4.5' },
      -	'nominalmaxaperture' => { 332 => 0xa },
      -	'nominalminaperture' => { 332 => '10.1' },
      -	'normallinetime' => { 134 => 0x186a },
      -	'normalwhitelevel' => { 43 => [0x2b8,0x2cf,0x2d3], 44 => 0x569, 45 => 0x1e3, 46 => [0x1fc,0x2dc], 47 => [0x230,0x30e], 48 => 0x31c },
      -	'notes' => { 440 => 'Notes', 457 => 'notes' },
      -	'npages' => { 493 => 'NPages' },
      -	'nullrecord' => { 94 => 0x0 },
      -	'numafpoints' => { 318 => 0x2 },
      -	'number' => { 478 => 'number' },
      -	'numberofbeats' => { 488 => 'numberOfBeats' },
      -	'numberoffocuspoints' => { 269 => '1.3', 270 => '1.3', 273 => '0.2', 274 => '0.3', 276 => '0.3' },
      -	'numfaceelements' => { 124 => 0x4200 },
      -	'numfacepositions' => { 298 => 0x0 },
      -	'numindexentries' => { 130 => 0x54 },
      -	'numwbentries' => { 312 => 0x0, 313 => 0x0 },
      -	'object' => { 478 => 'object' },
      -	'objectattributereference' => { 128 => 0x4 },
      -	'objectcycle' => { 128 => 0x4b, 457 => 'ObjectCycle' },
      -	'objectdescription' => { 477 => 'objectDescription' },
      -	'objectdistance' => { 109 => 0x6, 110 => 0x2022 },
      -	'objectname' => { 128 => 0x5 },
      -	'objectpreviewdata' => { 128 => 0xca },
      -	'objectpreviewfileformat' => { 128 => 0xc8 },
      -	'objectpreviewfileversion' => { 128 => 0xc9 },
      -	'objectsubtype' => { 477 => 'objectSubtype' },
      -	'objecttype' => { 477 => 'objectType' },
      -	'objecttypereference' => { 128 => 0x3 },
      -	'occurrence' => { 115 => 'Occurrence' },
      -	'occurrenceassociatedmedia' => { 115 => [\'Occurrence','OccurrenceAssociatedMedia'] },
      -	'occurrenceassociatedoccurrences' => { 115 => [\'Occurrence','OccurrenceAssociatedOccurrences'] },
      -	'occurrenceassociatedreferences' => { 115 => [\'Occurrence','OccurrenceAssociatedReferences'] },
      -	'occurrenceassociatedsequences' => { 115 => [\'Occurrence','OccurrenceAssociatedSequences'] },
      -	'occurrenceassociatedtaxa' => { 115 => [\'Occurrence','OccurrenceAssociatedTaxa'] },
      -	'occurrencebehavior' => { 115 => [\'Occurrence','OccurrenceBehavior'] },
      -	'occurrencecatalognumber' => { 115 => [\'Occurrence','OccurrenceCatalogNumber'] },
      -	'occurrencedetails' => { 115 => [\'Occurrence','OccurrenceOccurrenceDetails'] },
      -	'occurrencedisposition' => { 115 => [\'Occurrence','OccurrenceDisposition'] },
      -	'occurrenceestablishmentmeans' => { 115 => [\'Occurrence','OccurrenceEstablishmentMeans'] },
      -	'occurrenceid' => { 115 => [\'Occurrence','OccurrenceOccurrenceID'] },
      -	'occurrenceindividualcount' => { 115 => [\'Occurrence','OccurrenceIndividualCount'] },
      -	'occurrenceindividualid' => { 115 => [\'Occurrence','OccurrenceIndividualID'] },
      -	'occurrencelifestage' => { 115 => [\'Occurrence','OccurrenceLifeStage'] },
      -	'occurrenceorganismquantity' => { 115 => [\'Occurrence','OccurrenceOrganismQuantity'] },
      -	'occurrenceorganismquantitytype' => { 115 => [\'Occurrence','OccurrenceOrganismQuantityType'] },
      -	'occurrenceothercatalognumbers' => { 115 => [\'Occurrence','OccurrenceOtherCatalogNumbers'] },
      -	'occurrencepreparations' => { 115 => [\'Occurrence','OccurrencePreparations'] },
      -	'occurrencepreviousidentifications' => { 115 => [\'Occurrence','OccurrencePreviousIdentifications'] },
      -	'occurrencerecordedby' => { 115 => [\'Occurrence','OccurrenceRecordedBy'] },
      -	'occurrencerecordnumber' => { 115 => [\'Occurrence','OccurrenceRecordNumber'] },
      -	'occurrenceremarks' => { 115 => [\'Occurrence','OccurrenceOccurrenceRemarks'] },
      -	'occurrencereproductivecondition' => { 115 => [\'Occurrence','OccurrenceReproductiveCondition'] },
      -	'occurrencesex' => { 115 => [\'Occurrence','OccurrenceSex'] },
      -	'occurrencestatus' => { 115 => [\'Occurrence','OccurrenceOccurrenceStatus'] },
      -	'oecfcolumns' => { 468 => [\'OECF','OECFColumns'] },
      -	'oecfnames' => { 468 => [\'OECF','OECFNames'] },
      -	'oecfrows' => { 468 => [\'OECF','OECFRows'] },
      -	'oecfvalues' => { 468 => [\'OECF','OECFValues'] },
      -	'offsaledate' => { 478 => 'offSaleDate' },
      -	'offsaledatea-platform' => { 478 => [\'offSaleDate','offSaleDateA-platform'] },
      -	'offsaledatedate' => { 478 => [\'offSaleDate','offSaleDateDate'] },
      -	'offsetdacvalue' => { 134 => 0x190a },
      -	'offsetschema' => { 116 => 0xea1d },
      -	'offsettime' => { 116 => 0x9010 },
      -	'offsettimedigitized' => { 116 => 0x9012 },
      -	'offsettimeoriginal' => { 116 => 0x9011 },
      -	'okbutton' => { 276 => '15.1', 281 => '16.1' },
      -	'oldsubfiletype' => { 116 => 0xff },
      -	'olympusimageheight' => { 288 => 0x102f },
      -	'olympusimagewidth' => { 288 => 0x102e },
      -	'omenatcapturestrength' => { 134 => 0xa60 },
      -	'omenautostrength' => { 134 => 0xa5f },
      -	'omenearlystrength' => { 134 => 0xa5e },
      -	'omenfocallengthlimit' => { 134 => 0xa62 },
      -	'omeninitialipfstrength' => { 134 => 0xa5d },
      -	'omensurfaceindex' => { 134 => 0xa64 },
      +	'measuredlv' => { 187 => 0x690, 315 => 0x312, 318 => 0x312, 319 => 0x312, 322 => 0x3407 },
      +	'measuredrggb' => { 65 => 0x1 },
      +	'measuredrggbdata' => { 44 => 0x287 },
      +	'measurementaccuracy' => { 118 => [\'MeasurementOrFact','MeasurementOrFactMeasurementAccuracy'] },
      +	'measurementdeterminedby' => { 118 => [\'MeasurementOrFact','MeasurementOrFactMeasurementDeterminedBy'] },
      +	'measurementdetermineddate' => { 118 => [\'MeasurementOrFact','MeasurementOrFactMeasurementDeterminedDate'] },
      +	'measurementid' => { 118 => [\'MeasurementOrFact','MeasurementOrFactMeasurementID'] },
      +	'measurementmethod' => { 118 => [\'MeasurementOrFact','MeasurementOrFactMeasurementMethod'] },
      +	'measurementorfact' => { 118 => 'MeasurementOrFact' },
      +	'measurementremarks' => { 118 => [\'MeasurementOrFact','MeasurementOrFactMeasurementRemarks'] },
      +	'measurementtype' => { 118 => [\'MeasurementOrFact','MeasurementOrFactMeasurementType'] },
      +	'measurementunit' => { 118 => [\'MeasurementOrFact','MeasurementOrFactMeasurementUnit'] },
      +	'measurementvalue' => { 118 => [\'MeasurementOrFact','MeasurementOrFactMeasurementValue'] },
      +	'measuretype' => { 462 => 'MeasureType' },
      +	'mechanicalshuttercount' => { 226 => 0x37 },
      +	'mediaclassprimaryid' => { 179 => 'WM/MediaClassPrimaryID' },
      +	'mediaclasssecondaryid' => { 179 => 'WM/MediaClassSecondaryID' },
      +	'mediaconstraints' => { 307 => 'MediaConstraints' },
      +	'mediacreatedate' => { 376 => 0x1 },
      +	'mediaeventiddate' => { 467 => 'MediaEventIdDate' },
      +	'mediagroupuuid' => { 1 => 0x11 },
      +	'mediamodifydate' => { 376 => 0x2 },
      +	'mediasummarycode' => { 307 => 'MediaSummaryCode' },
      +	'mediatype' => { 372 => 'stik' },
      +	'memoaudioquality' => { 84 => 0x812 },
      +	'memorycardconfiguration' => { 413 => 0x16 },
      +	'memorycardnumber' => { 208 => 0x2 },
      +	'menubuttondisplayposition' => { 82 => 0xb, 85 => 0xa, 86 => 0xb, 89 => 0xb },
      +	'menubuttonreturn' => { 90 => 0xb },
      +	'menumonitorofftime' => { 279 => '26.1', 280 => '22.1', 282 => '22.1', 283 => '22.1', 287 => '21.1', 288 => '8.2', 289 => '21.1', 292 => '22.1', 293 => '22.1', 294 => '22.1', 295 => 0x35 },
      +	'menusettingsz7iioffset' => { 260 => 0xceb6 },
      +	'metadatadate' => { 501 => 'MetadataDate' },
      +	'metadatamoddate' => { 503 => 'metadataModDate' },
      +	'metaversion' => { 427 => 0x34 },
      +	'meterinfo1row1' => { 421 => 0x0, 422 => 0x0 },
      +	'meterinfo1row2' => { 421 => 0x6c, 422 => 0x5a },
      +	'meterinfo1row3' => { 421 => 0xd8, 422 => 0xb4 },
      +	'meterinfo1row4' => { 421 => 0x144, 422 => 0x10e },
      +	'meterinfo1row5' => { 421 => 0x1b0, 422 => 0x168 },
      +	'meterinfo1row6' => { 421 => 0x21c, 422 => 0x1c2 },
      +	'meterinfo1row7' => { 421 => 0x288, 422 => 0x21c },
      +	'meterinfo2row1' => { 421 => 0x2f4, 422 => 0x276 },
      +	'meterinfo2row2' => { 421 => 0x378, 422 => 0x2e4 },
      +	'meterinfo2row3' => { 421 => 0x3fc, 422 => 0x352 },
      +	'meterinfo2row4' => { 421 => 0x480, 422 => 0x3c0 },
      +	'meterinfo2row5' => { 421 => 0x504, 422 => 0x42e },
      +	'meterinfo2row6' => { 421 => 0x588, 422 => 0x49c },
      +	'meterinfo2row7' => { 421 => 0x60c, 422 => 0x50a },
      +	'meterinfo2row8' => { 421 => 0x690, 422 => 0x578 },
      +	'meterinfo2row9' => { 421 => 0x714, 422 => 0x5e6 },
      +	'metering' => { 281 => '6.1' },
      +	'meteringmode' => { 34 => 0x11, 119 => 0x9207, 140 => 0x1c, 181 => 0x7, 182 => 0x25, 184 => 0x12, 297 => 0x202, 355 => 0x17, 397 => 0x9, 407 => 0x15, 408 => 0x13, 409 => 0x7, 425 => 0x3, 428 => 0x1174, 429 => 0x1178, 430 => 0x1154, 431 => 0x11d0, 432 => 0x11ac, 433 => 0x1064, 434 => 0x25c, 435 => 0x25c, 436 => 0x24b, 483 => 'MeteringMode' },
      +	'meteringmode2' => { 336 => '2.1', 420 => 0x202c },
      +	'meteringmode3' => { 336 => '16.1' },
      +	'meteringoffscaleindicator' => { 184 => 0x53 },
      +	'meteringtime' => { 279 => '22.2', 281 => '3.2', 284 => '17.1', 285 => '18.1', 288 => '7.3', 289 => '18.1', 290 => '3.2', 294 => '19.1' },
      +	'micro1version' => { 382 => 0x1f },
      +	'micro2version' => { 382 => 0x2d },
      +	'microphoneattenuator' => { 229 => 0x2d2 },
      +	'microphonefrequencyresponse' => { 229 => 0x2d4 },
      +	'microphonejackpower' => { 229 => 0x2fa },
      +	'microphonesensitivity' => { 229 => 0x2d0 },
      +	'microvideo' => { 460 => 'MicroVideo' },
      +	'microvideooffset' => { 460 => 'MicroVideoOffset' },
      +	'microvideopresentationtimestampus' => { 460 => 'MicroVideoPresentationTimestampUs' },
      +	'microvideoversion' => { 460 => 'MicroVideoVersion' },
      +	'midrangesharpness' => { 233 => 0x3b },
      +	'mieversion' => { 164 => '0Vers' },
      +	'mime' => { 462 => 'Mime' },
      +	'minaperture' => { 34 => 0x1b, 138 => 0x3f8, 163 => 'MinAperture', 346 => '0.2' },
      +	'minaperturevalue' => { 364 => 0x415 },
      +	'minfocallength' => { 7 => 0xe4, 8 => 0xe, 9 => 0x1a9, 10 => 0x11, 11 => 0x113, 12 => 0x11, 13 => 0x151, 14 => 0xd8, 16 => 0xf8, 17 => 0xec, 18 => 0x101, 19 => 0x93, 20 => 0xe8, 21 => 0x155, 22 => 0xec, 23 => 0xea, 24 => 0x129, 25 => 0x163, 26 => 0x168, 27 => 0x186, 28 => 0x114, 29 => 0x18b, 34 => 0x18, 127 => 0x1404, 163 => 'MinFocalLength', 218 => 0x8, 219 => 0xd, 220 => 0xe, 224 => 0xf, 298 => 0x207, 432 => 0x127a, 433 => 0x1136, 434 => 0x32e, 435 => 0x32e, 436 => 0x30c },
      +	'minfocusdistance' => { 346 => 0x3 },
      +	'minintegrationrows' => { 138 => 0x1874 },
      +	'minoltadate' => { 181 => 0x15 },
      +	'minoltaimagesize' => { 181 => 0x4, 182 => 0xc, 183 => 0x2, 186 => 0x103 },
      +	'minoltamodelid' => { 181 => 0x25 },
      +	'minoltaquality' => { 181 => 0x5, 182 => 0xd, 183 => 0x3, 186 => [0x102,0x103] },
      +	'minoltatime' => { 181 => 0x16 },
      +	'minormodelagedisclosure' => { 307 => 'MinorModelAgeDisclosure' },
      +	'minorversion' => { 468 => 'MinorVersion' },
      +	'minsamplevalue' => { 119 => 0x118 },
      +	'mirrorlockup' => { 82 => 0xc, 83 => 0xc, 84 => 0x60f, 85 => 0xb, 86 => 0xc, 87 => 0x6, 88 => 0x6, 89 => 0xc, 90 => 0x3 },
      +	'mobilecountrycode' => { 476 => 'mcc' },
      +	'mobilenetworkcode' => { 476 => 'mnc' },
      +	'moddate' => { 310 => 'modify-date', 490 => 'ModDate' },
      +	'modedialposition' => { 413 => 0x14 },
      +	'model' => { 98 => 0x6, 119 => 0x110, 156 => 'Model', 310 => 'Model', 325 => 0x110, 355 => 0x23f, 374 => 'model', 380 => ['@mod','CNMN','cmnm',"\xa9mdl","\xa9mod"], 397 => 0x84, 462 => 'Model', 492 => 'model', 499 => 'Model' },
      +	'modelage' => { 489 => 'ModelAge' },
      +	'modelid' => { 296 => 0x0 },
      +	'modelingflash' => { 279 => '21.4', 280 => '31.1', 282 => '31.1', 283 => '31.1', 288 => '26.4', 289 => '30.2', 290 => '7.4', 291 => '30.1', 292 => '31.1', 293 => '31.1', 294 => '31.3', 295 => 0x5d },
      +	'modelreleaseid' => { 307 => 'ModelReleaseID' },
      +	'modelreleasestatus' => { 307 => 'ModelReleaseStatus' },
      +	'modelreleaseyear' => { 441 => 0x52, 442 => 0x46, 443 => 0x53 },
      +	'modeltiepoint' => { 119 => 0x8482 },
      +	'modeltransform' => { 119 => 0x85d8 },
      +	'modelyear' => { 492 => 'modelYear' },
      +	'modificationdate' => { 493 => 'modificationDate' },
      +	'modifiedcolortemp' => { 66 => 0x9 },
      +	'modifieddigitalgain' => { 66 => 0xb },
      +	'modifiedparamflag' => { 58 => 0x1 },
      +	'modifiedpicturestyle' => { 66 => 0xa },
      +	'modifiedsaturation' => { 297 => 0x504 },
      +	'modifiedsensorbluelevel' => { 66 => 0x5 },
      +	'modifiedsensorredlevel' => { 66 => 0x4 },
      +	'modifiedsharpness' => { 66 => 0x2 },
      +	'modifiedsharpnessfreq' => { 66 => 0x3 },
      +	'modifiedtonecurve' => { 66 => 0x1 },
      +	'modifiedwhitebalance' => { 66 => 0x8 },
      +	'modifiedwhitebalanceblue' => { 66 => 0x7 },
      +	'modifiedwhitebalancered' => { 66 => 0x6 },
      +	'modifydate' => { 119 => 0x132, 157 => 'ModifyDate', 306 => 'ModDate', 308 => 'tIME', 371 => 'ModDate', 377 => 0x2, 501 => 'ModifyDate' },
      +	'moirefilter' => { 119 => 0xfe58, 477 => 'MoireFilter', 479 => 'MoireFilter' },
      +	'monitorbrightness' => { 229 => 0x59a },
      +	'monitordisplayoff' => { 184 => 0x4c },
      +	'monitormatrix' => { 138 => 0x8fc },
      +	'monitorofftime' => { 279 => '18.2', 281 => '3.1', 290 => '3.1' },
      +	'monochromecolor' => { 297 => 0x53b },
      +	'monochromecontrast' => { 109 => 0x3c },
      +	'monochromefiltereffect' => { 103 => 0x20307, 109 => 0x3a, 320 => 0xac, 355 => 0x73 },
      +	'monochromegraineffect' => { 320 => 0xd2 },
      +	'monochromelinear' => { 109 => 0x3d },
      +	'monochromeoutputhighlightpoint' => { 109 => 0x41 },
      +	'monochromeoutputshadowpoint' => { 109 => 0x42 },
      +	'monochromeprofilesettings' => { 297 => 0x537 },
      +	'monochromerawhighlight' => { 109 => 0x7a },
      +	'monochromerawhighlightpoint' => { 109 => 0x3f },
      +	'monochromerawshadow' => { 109 => 0x83 },
      +	'monochromerawshadowpoint' => { 109 => 0x40 },
      +	'monochromesharpness' => { 109 => 0x3e },
      +	'monochrometoning' => { 355 => 0x74 },
      +	'monochrometoningeffect' => { 103 => 0x20306, 109 => 0x3b },
      +	'monochromeunsharpmaskfineness' => { 109 => 0xb2 },
      +	'monochromeunsharpmaskstrength' => { 109 => 0xb0 },
      +	'monochromeunsharpmaskthreshold' => { 109 => 0xb4 },
      +	'monochromevignetting' => { 297 => 0x53a },
      +	'monthdaycreated' => { 140 => 0x12, 149 => 0xe },
      +	'mood' => { 179 => 'WM/Mood' },
      +	'moonphase' => { 381 => 0x12, 382 => 0x43, 383 => 0x4c },
      +	'morepermissions' => { 475 => 'morePermissions' },
      +	'motionsensitivity' => { 381 => 0x29, 383 => 0x60 },
      +	'movementcount' => { 372 => "\xa9mvc" },
      +	'movementname' => { 372 => "\xa9mvn" },
      +	'movementnumber' => { 372 => "\xa9mvi" },
      +	'movieactived-lighting' => { 228 => 0x238, 229 => 0x2b8 },
      +	'movieaelockbuttonassignment' => { 292 => '40.1' },
      +	'movieaf-onbutton' => { 295 => 0xcb },
      +	'movieafareamode' => { 229 => 0x2c6, 295 => 0x203 },
      +	'movieafspeed' => { 295 => 0xdd },
      +	'movieafspeedapply' => { 295 => 0xdf },
      +	'movieaftrackingsensitivity' => { 295 => 0xe1 },
      +	'movieaperturelock' => { 295 => 0x259 },
      +	'movieautodistortioncontrol' => { 228 => 0x242 },
      +	'moviediffractioncompensation' => { 228 => 0x241 },
      +	'moviedxcropalert' => { 229 => 0x2fb },
      +	'movieelectronicvr' => { 229 => 0x2cc },
      +	'movieevfgrid' => { 295 => 0x21d },
      +	'movieflickerreduction' => { 229 => 0x2c0 },
      +	'moviefocusmode' => { 228 => 0x248, 229 => 0x2c4 },
      +	'moviefocuspointlock' => { 295 => 0x226 },
      +	'movieframerate' => { 228 => 0x1f8, 229 => 0x2f4 },
      +	'movieframesize' => { 228 => 0x1f6, 229 => 0x2f2 },
      +	'moviefunc1button' => { 282 => '41.1', 283 => '41.1', 293 => '41.1', 295 => 0xc3 },
      +	'moviefunc3button' => { 295 => 0x127 },
      +	'moviefunctionbutton' => { 280 => '41.1', 292 => '41.1' },
      +	'moviefunctionbuttonplusdials' => { 280 => '52.1' },
      +	'moviehighisonoisereduction' => { 228 => 0x23c, 229 => 0x2ba },
      +	'moviehighlightdisplaythreshold' => { 295 => 0x215 },
      +	'movieimagearea' => { 229 => 0x25c },
      +	'movieisoautocontrolmanualmode' => { 229 => 0x26a },
      +	'movieisoautohilimit' => { 229 => 0x268 },
      +	'movieisoautomanualmode' => { 228 => 0x204, 229 => 0x26c },
      +	'moviemeteringmode' => { 229 => 0x2c2 },
      +	'moviemidtonedisplayrange' => { 295 => 0x219 },
      +	'moviemidtonedisplayvalue' => { 295 => 0x217 },
      +	'moviemultiselector' => { 295 => 0xd9 },
      +	'moviepreviewbutton' => { 280 => '41.2', 282 => '41.2', 283 => '41.2', 292 => '41.2', 293 => '41.2' },
      +	'moviepreviewbuttonplusdials' => { 280 => '52.2' },
      +	'movierecordbuttonplaybackmode' => { 295 => 0x1b5 },
      +	'movieshutterbutton' => { 280 => '38.3', 282 => '38.3', 283 => '38.3', 292 => '38.3', 293 => '38.3' },
      +	'movieshutterspeedlock' => { 295 => 0x225 },
      +	'movieslowmotion' => { 228 => 0x1fa },
      +	'moviesoundrecording' => { 229 => 0x2ce },
      +	'moviesubjectdetection' => { 229 => 0x2fc },
      +	'moviesubselectorassignment' => { 280 => '48.2' },
      +	'moviesubselectorassignmentplusdials' => { 280 => '53.1' },
      +	'movietonemap' => { 229 => 0x2ec },
      +	'movietype' => { 228 => 0x1fe, 229 => 0x266, 252 => 0xc55c },
      +	'movievibrationreduction' => { 228 => 0x24e },
      +	'movievibrationreductionsameasphoto' => { 228 => 0x24f },
      +	'movievignettecontrol' => { 228 => 0x23e, 229 => 0x1a0 },
      +	'movievignettecontrolsameasphoto' => { 228 => 0x240 },
      +	'movievrmode' => { 229 => 0x2c8 },
      +	'moviezebrapattern' => { 295 => 0x213 },
      +	'multiburstimageheight' => { 420 => 0x1002 },
      +	'multiburstimagewidth' => { 420 => 0x1001 },
      +	'multiburstmode' => { 420 => 0x1000 },
      +	'multicontrollerwhilemetering' => { 84 => 0x517 },
      +	'multiexposure' => { 68 => 0x1, 320 => 0xb4 },
      +	'multiexposureautogain' => { 230 => 0x3 },
      +	'multiexposurecontrol' => { 68 => 0x2 },
      +	'multiexposuremode' => { 230 => 0x1 },
      +	'multiexposureshots' => { 68 => 0x3, 229 => 0x8e, 230 => 0x2 },
      +	'multiframenoisereduction' => { 409 => 0x35, 420 => 0x200b, 425 => 0x15 },
      +	'multiframenreffect' => { 420 => 0x2023 },
      +	'multifunctionlock' => { 84 => 0x70f },
      +	'multipleexposuremode' => { 229 => 0x8c, 301 => 0x101c },
      +	'multipleexposureset' => { 336 => '10.1' },
      +	'multisample' => { 237 => 0x40 },
      +	'multiselector' => { 279 => '9.4', 280 => '10.3', 282 => '10.3', 283 => '10.3', 288 => '27.4', 292 => '10.3', 293 => '10.3' },
      +	'multiselectorliveview' => { 279 => '4.3', 282 => '37.1', 283 => '37.1', 292 => '37.1', 293 => '37.1' },
      +	'multiselectorliveviewmode' => { 247 => 0x18c2 },
      +	'multiselectorplaybackmode' => { 279 => ['13.5','9.2'], 280 => '10.2', 283 => '10.2', 288 => '27.2', 292 => '10.2', 293 => '10.2', 295 => 0xb3 },
      +	'multiselectorshootmode' => { 279 => '9.1', 280 => '10.1', 282 => '10.1', 283 => '10.1', 288 => '27.1', 292 => '10.1', 293 => '10.1', 295 => 0xaf },
      +	'multishot' => { 325 => 0x121 },
      +	'mute' => { 374 => 'player.movie.audio.mute' },
      +	'mycolormode' => { 69 => 0x2 },
      +	'name' => { 380 => 'name', 477 => 'Name', 479 => 'Name' },
      +	'narrator' => { 372 => "\xa9nrt" },
      +	'nationalcatalognumber' => { 493 => 'nationalCatalogNumber' },
      +	'nativedigest' => { 483 => 'NativeDigest', 499 => 'NativeDigest' },
      +	'ndfilter' => { 77 => 0x1c, 297 => 0x204, 387 => 0x1019 },
      +	'near' => { 462 => 'Near' },
      +	'nefbitdepth' => { 226 => 0xe22 },
      +	'nefcompression' => { 226 => 0x93, 227 => 0xa },
      +	'neflinearizationtable' => { 226 => 0x96 },
      +	'negativecachelargepreviewsize' => { 477 => 'NegativeCacheLargePreviewSize', 479 => 'NegativeCacheLargePreviewSize' },
      +	'negativecachemaximumsize' => { 477 => 'NegativeCacheMaximumSize', 479 => 'NegativeCacheMaximumSize' },
      +	'negativecachepath' => { 477 => 'NegativeCachePath', 479 => 'NegativeCachePath' },
      +	'neutraldensityfactor' => { 474 => 'NeutralDensityFactor' },
      +	'neutraldensityfilter' => { 355 => 0x88 },
      +	'neutraloutputhighlightpoint' => { 109 => 0x2f },
      +	'neutraloutputshadowpoint' => { 109 => 0x30 },
      +	'neutralrawcolortone' => { 109 => 0x28 },
      +	'neutralrawcontrast' => { 109 => 0x2a },
      +	'neutralrawhighlight' => { 109 => 0x78 },
      +	'neutralrawhighlightpoint' => { 109 => 0x2d },
      +	'neutralrawlinear' => { 109 => 0x2b },
      +	'neutralrawsaturation' => { 109 => 0x29 },
      +	'neutralrawshadow' => { 109 => 0x81 },
      +	'neutralrawshadowpoint' => { 109 => 0x2e },
      +	'neutralrawsharpness' => { 109 => 0x2c },
      +	'neutralunsharpmaskfineness' => { 109 => 0xa6 },
      +	'neutralunsharpmaskthreshold' => { 109 => 0xa8 },
      +	'neutraunsharpmaskstrength' => { 109 => 0xa4 },
      +	'newrawimagedigest' => { 119 => 0xc7a7 },
      +	'newsphotoversion' => { 133 => 0x0 },
      +	'nickname' => { 501 => 'Nickname' },
      +	'nikoncapturedata' => { 226 => 0xe01 },
      +	'nikoncaptureeditversions' => { 226 => 0xe13 },
      +	'nikoncaptureoffsets' => { 226 => 0xe0e },
      +	'nikoncaptureoutput' => { 226 => 0xe1e },
      +	'nikoncaptureversion' => { 226 => 0xe09 },
      +	'nikoniccprofile' => { 226 => 0xe1d },
      +	'nikonimagesize' => { 244 => '723.1', 245 => '732.1', 255 => 0x2c4 },
      +	'nikonmeteringmode' => { 228 => 0x146, 248 => 0x2ea4, 257 => 0x175e },
      +	'nikonsettings' => { 226 => 0x4e },
      +	'noisefilter' => { 297 => 0x527 },
      +	'noiseprofile' => { 119 => 0xc761 },
      +	'noisereduction' => { 127 => [0x100b,0x100e], 182 => 0xb0, 183 => 0x60, 184 => 0x3f, 226 => 0x95, 272 => 0x753dcbc0, 273 => 0x17, 297 => 0x50a, 302 => 0x103a, 320 => 0x2d, 355 => 0x49, 387 => 0x100f, 389 => 0x2a },
      +	'noisereduction2' => { 301 => 0x1010 },
      +	'noisereductionapplied' => { 119 => 0xc6f7 },
      +	'noisereductionintensity' => { 273 => 0x9 },
      +	'noisereductionmethod' => { 273 => 0x11 },
      +	'noisereductionmode' => { 454 => 0x801e },
      +	'noisereductionparametersatcapture' => { 138 => 0xe73 },
      +	'noisereductionparameterscamera' => { 138 => 0xe72 },
      +	'noisereductionparametershost3mp' => { 138 => 0xe71 },
      +	'noisereductionparametershost6mp' => { 138 => 0xe70 },
      +	'noisereductionparametershostrgb' => { 138 => 0xe6f },
      +	'noisereductionparameterskhufu3mp' => { 138 => 0xe65 },
      +	'noisereductionparameterskhufu6mp' => { 138 => 0xe64 },
      +	'noisereductionparameterskhufurgb' => { 138 => 0xe63 },
      +	'noisereductionparams' => { 325 => 0x1b },
      +	'noisereductionsharpness' => { 273 => 0xd },
      +	'noisereductionstrength' => { 320 => 0xd6 },
      +	'noisereductionvalue' => { 454 => 0x8027 },
      +	'nomemorycard' => { 279 => '22.1', 280 => '4.2', 281 => '0.3', 284 => '2.4', 285 => '3.2', 286 => '3.2', 288 => '33.7', 289 => '3.2', 290 => '0.3', 292 => '4.2', 294 => '4.5' },
      +	'nominalmaxaperture' => { 346 => 0xa },
      +	'nominalminaperture' => { 346 => '10.1' },
      +	'normallinetime' => { 138 => 0x186a },
      +	'normalwhitelevel' => { 41 => 0x32a, 42 => 0x280, 45 => [0x2b8,0x2cf,0x2d3], 46 => 0x569, 47 => 0x1e3, 48 => [0x1fc,0x2dc], 49 => [0x230,0x30e], 50 => 0x31c },
      +	'notes' => { 455 => 'Notes', 472 => 'notes' },
      +	'npages' => { 508 => 'NPages' },
      +	'nullrecord' => { 97 => 0x0 },
      +	'numafpoints' => { 332 => 0x2 },
      +	'number' => { 493 => 'number' },
      +	'numberofbeats' => { 503 => 'numberOfBeats' },
      +	'numberoffocuspoints' => { 282 => '1.3', 283 => '1.3', 286 => '0.2', 287 => '0.3', 289 => '0.3' },
      +	'numfaceelements' => { 127 => 0x4200 },
      +	'numfacepositions' => { 312 => 0x0 },
      +	'numindexentries' => { 133 => 0x54 },
      +	'numwbentries' => { 326 => 0x0, 327 => 0x0 },
      +	'object' => { 493 => 'object' },
      +	'objectattributereference' => { 131 => 0x4 },
      +	'objectcycle' => { 131 => 0x4b, 472 => 'ObjectCycle' },
      +	'objectdescription' => { 492 => 'objectDescription' },
      +	'objectdistance' => { 112 => 0x6, 113 => 0x2022 },
      +	'objectname' => { 131 => 0x5 },
      +	'objectpreviewdata' => { 131 => 0xca },
      +	'objectpreviewfileformat' => { 131 => 0xc8 },
      +	'objectpreviewfileversion' => { 131 => 0xc9 },
      +	'objectsubtype' => { 492 => 'objectSubtype' },
      +	'objecttype' => { 492 => 'objectType' },
      +	'objecttypereference' => { 131 => 0x3 },
      +	'occurrence' => { 118 => 'Occurrence' },
      +	'occurrenceassociatedmedia' => { 118 => [\'Occurrence','OccurrenceAssociatedMedia'] },
      +	'occurrenceassociatedoccurrences' => { 118 => [\'Occurrence','OccurrenceAssociatedOccurrences'] },
      +	'occurrenceassociatedreferences' => { 118 => [\'Occurrence','OccurrenceAssociatedReferences'] },
      +	'occurrenceassociatedsequences' => { 118 => [\'Occurrence','OccurrenceAssociatedSequences'] },
      +	'occurrenceassociatedtaxa' => { 118 => [\'Occurrence','OccurrenceAssociatedTaxa'] },
      +	'occurrencebehavior' => { 118 => [\'Occurrence','OccurrenceBehavior'] },
      +	'occurrencecatalognumber' => { 118 => [\'Occurrence','OccurrenceCatalogNumber'] },
      +	'occurrencedetails' => { 118 => [\'Occurrence','OccurrenceOccurrenceDetails'] },
      +	'occurrencedisposition' => { 118 => [\'Occurrence','OccurrenceDisposition'] },
      +	'occurrenceestablishmentmeans' => { 118 => [\'Occurrence','OccurrenceEstablishmentMeans'] },
      +	'occurrenceid' => { 118 => [\'Occurrence','OccurrenceOccurrenceID'] },
      +	'occurrenceindividualcount' => { 118 => [\'Occurrence','OccurrenceIndividualCount'] },
      +	'occurrenceindividualid' => { 118 => [\'Occurrence','OccurrenceIndividualID'] },
      +	'occurrencelifestage' => { 118 => [\'Occurrence','OccurrenceLifeStage'] },
      +	'occurrenceorganismquantity' => { 118 => [\'Occurrence','OccurrenceOrganismQuantity'] },
      +	'occurrenceorganismquantitytype' => { 118 => [\'Occurrence','OccurrenceOrganismQuantityType'] },
      +	'occurrenceothercatalognumbers' => { 118 => [\'Occurrence','OccurrenceOtherCatalogNumbers'] },
      +	'occurrencepreparations' => { 118 => [\'Occurrence','OccurrencePreparations'] },
      +	'occurrencepreviousidentifications' => { 118 => [\'Occurrence','OccurrencePreviousIdentifications'] },
      +	'occurrencerecordedby' => { 118 => [\'Occurrence','OccurrenceRecordedBy'] },
      +	'occurrencerecordnumber' => { 118 => [\'Occurrence','OccurrenceRecordNumber'] },
      +	'occurrenceremarks' => { 118 => [\'Occurrence','OccurrenceOccurrenceRemarks'] },
      +	'occurrencereproductivecondition' => { 118 => [\'Occurrence','OccurrenceReproductiveCondition'] },
      +	'occurrencesex' => { 118 => [\'Occurrence','OccurrenceSex'] },
      +	'occurrencestatus' => { 118 => [\'Occurrence','OccurrenceOccurrenceStatus'] },
      +	'oecfcolumns' => { 483 => [\'OECF','OECFColumns'] },
      +	'oecfnames' => { 483 => [\'OECF','OECFNames'] },
      +	'oecfrows' => { 483 => [\'OECF','OECFRows'] },
      +	'oecfvalues' => { 483 => [\'OECF','OECFValues'] },
      +	'offsaledate' => { 493 => 'offSaleDate' },
      +	'offsaledatea-platform' => { 493 => [\'offSaleDate','offSaleDateA-platform'] },
      +	'offsaledatedate' => { 493 => [\'offSaleDate','offSaleDateDate'] },
      +	'offsetdacvalue' => { 138 => 0x190a },
      +	'offsetschema' => { 119 => 0xea1d },
      +	'offsettime' => { 119 => 0x9010 },
      +	'offsettimedigitized' => { 119 => 0x9012 },
      +	'offsettimeoriginal' => { 119 => 0x9011 },
      +	'okbutton' => { 289 => '15.1', 294 => '16.1' },
      +	'oldsubfiletype' => { 119 => 0xff },
      +	'olympusimageheight' => { 302 => 0x102f },
      +	'olympusimagewidth' => { 302 => 0x102e },
      +	'omenatcapturestrength' => { 138 => 0xa60 },
      +	'omenautostrength' => { 138 => 0xa5f },
      +	'omenearlystrength' => { 138 => 0xa5e },
      +	'omenfocallengthlimit' => { 138 => 0xa62 },
      +	'omeninitialipfstrength' => { 138 => 0xa5d },
      +	'omensurfaceindex' => { 138 => 0xa64 },
       	'oneshotafrelease' => { 2 => 0x9 },
      -	'onetouchwb' => { 288 => 0x302 },
      -	'onsaledate' => { 478 => 'onSaleDate' },
      -	'onsaledatea-platform' => { 478 => [\'onSaleDate','onSaleDateA-platform'] },
      -	'onsaledatedate' => { 478 => [\'onSaleDate','onSaleDateDate'] },
      -	'onsaleday' => { 478 => 'onSaleDay' },
      -	'onsaledaya-platform' => { 478 => [\'onSaleDay','onSaleDayA-platform'] },
      -	'onsaledayday' => { 478 => [\'onSaleDay','onSaleDayDay'] },
      -	'opcodelist1' => { 116 => 0xc740 },
      -	'opcodelist2' => { 116 => 0xc741 },
      -	'opcodelist3' => { 116 => 0xc74e },
      -	'opticalzoom' => { 138 => 0xfa3d, 140 => [0x6006,0xf006], 141 => 0x1000, 142 => 0xf, 145 => 0x1e, 147 => 0x20, 148 => 0x1c, 159 => 'OpticalZoom' },
      -	'opticalzoomcode' => { 74 => 0xa },
      -	'opticalzoommode' => { 306 => 0x34 },
      -	'opticalzoomon' => { 382 => 0x219 },
      -	'optionenddate' => { 481 => 'optionEndDate' },
      -	'opto-electricconvfactor' => { 468 => 'OECF' },
      -	'orangehsl' => { 100 => 0x20911 },
      -	'ordernumber' => { 124 => 0x8002 },
      -	'organisationinimagecode' => { 474 => 'OrganisationInImageCode' },
      -	'organisationinimagename' => { 474 => 'OrganisationInImageName' },
      -	'organism' => { 115 => 'Organism' },
      -	'organismassociatedoccurrences' => { 115 => [\'Organism','OrganismAssociatedOccurrences'] },
      -	'organismassociatedorganisms' => { 115 => [\'Organism','OrganismAssociatedOrganisms'] },
      -	'organismid' => { 115 => [\'Organism','OrganismOrganismID'] },
      -	'organismname' => { 115 => [\'Organism','OrganismOrganismName'] },
      -	'organismpreviousidentifications' => { 115 => [\'Organism','OrganismPreviousIdentifications'] },
      -	'organismremarks' => { 115 => [\'Organism','OrganismOrganismRemarks'] },
      -	'organismscope' => { 115 => [\'Organism','OrganismOrganismScope'] },
      -	'organization' => { 478 => 'organization' },
      -	'orientation' => { 116 => 0x112, 311 => 0x112, 477 => 'orientation', 484 => 'Orientation' },
      -	'orientation2' => { 411 => [0x28,0x2e] },
      +	'onetouchwb' => { 302 => 0x302 },
      +	'onsaledate' => { 493 => 'onSaleDate' },
      +	'onsaledatea-platform' => { 493 => [\'onSaleDate','onSaleDateA-platform'] },
      +	'onsaledatedate' => { 493 => [\'onSaleDate','onSaleDateDate'] },
      +	'onsaleday' => { 493 => 'onSaleDay' },
      +	'onsaledaya-platform' => { 493 => [\'onSaleDay','onSaleDayA-platform'] },
      +	'onsaledayday' => { 493 => [\'onSaleDay','onSaleDayDay'] },
      +	'opcodelist1' => { 119 => 0xc740 },
      +	'opcodelist2' => { 119 => 0xc741 },
      +	'opcodelist3' => { 119 => 0xc74e },
      +	'opticalzoom' => { 142 => 0xfa3d, 144 => [0x6006,0xf006], 145 => 0x1000, 146 => 0xf, 149 => 0x1e, 151 => 0x20, 152 => 0x1c, 163 => 'OpticalZoom' },
      +	'opticalzoomcode' => { 77 => 0xa },
      +	'opticalzoommode' => { 320 => 0x34 },
      +	'opticalzoomon' => { 396 => 0x219 },
      +	'optionenddate' => { 496 => 'optionEndDate' },
      +	'opto-electricconvfactor' => { 483 => 'OECF' },
      +	'orangehsl' => { 103 => 0x20911 },
      +	'ordernumber' => { 127 => 0x8002 },
      +	'organisationinimagecode' => { 489 => 'OrganisationInImageCode' },
      +	'organisationinimagename' => { 489 => 'OrganisationInImageName' },
      +	'organism' => { 118 => 'Organism' },
      +	'organismassociatedoccurrences' => { 118 => [\'Organism','OrganismAssociatedOccurrences'] },
      +	'organismassociatedorganisms' => { 118 => [\'Organism','OrganismAssociatedOrganisms'] },
      +	'organismid' => { 118 => [\'Organism','OrganismOrganismID'] },
      +	'organismname' => { 118 => [\'Organism','OrganismOrganismName'] },
      +	'organismpreviousidentifications' => { 118 => [\'Organism','OrganismPreviousIdentifications'] },
      +	'organismremarks' => { 118 => [\'Organism','OrganismOrganismRemarks'] },
      +	'organismscope' => { 118 => [\'Organism','OrganismOrganismScope'] },
      +	'organization' => { 493 => 'organization' },
      +	'orientation' => { 119 => 0x112, 325 => 0x112, 492 => 'orientation', 499 => 'Orientation' },
      +	'orientation2' => { 425 => [0x28,0x2e] },
       	'orientationlinkedaf' => { 2 => 0xe },
      -	'orientationlinkedafpoint' => { 81 => 0x516 },
      -	'originalbestqualitysize' => { 116 => 0xc792 },
      -	'originalcreatedatetime' => { 452 => 'OriginalCreateDateTime' },
      -	'originaldecisiondata' => { 111 => 'Canon::OriginalDecisionData' },
      -	'originaldecisiondataoffset' => { 61 => 0x83 },
      -	'originaldefaultcropsize' => { 116 => 0xc793 },
      -	'originaldefaultfinalsize' => { 116 => 0xc791 },
      -	'originaldirectory' => { 303 => 0x408 },
      -	'originaldocumentid' => { 489 => 'OriginalDocumentID' },
      -	'originalfilename' => { 94 => 0x816, 134 => 0x3e9, 146 => 0x20, 303 => 0x407, 452 => 'OriginalFilename' },
      -	'originalimageheight' => { 76 => 0xc, 120 => 0x1 },
      -	'originalimagewidth' => { 76 => 0xb, 120 => 0x0 },
      -	'originalrawfiledata' => { 116 => 0xc68c },
      -	'originalrawfiledigest' => { 116 => 0xc71d },
      -	'originalrawfilename' => { 116 => 0xc68b },
      -	'originaltransmissionreference' => { 128 => 0x67 },
      -	'originatingprogram' => { 128 => 0x41, 457 => 'OriginatingProgram' },
      -	'originplatform' => { 478 => 'originPlatform' },
      -	'os' => { 466 => 'os' },
      -	'otherconditions' => { 293 => 'OtherConditions' },
      -	'otherconstraints' => { 293 => 'OtherConstraints' },
      -	'otherimage' => { 111 => 'Exif::OtherImage' },
      -	'otherimageinfo' => { 293 => 'OtherImageInfo' },
      -	'otherimagelength' => { 116 => 0x202 },
      -	'otherimagestart' => { 116 => 0x201 },
      -	'otherlicensedocuments' => { 293 => 'OtherLicenseDocuments' },
      -	'otherlicenseinfo' => { 293 => 'OtherLicenseInfo' },
      -	'otherlicenserequirements' => { 293 => 'OtherLicenseRequirements' },
      -	'outcue' => { 488 => 'outCue' },
      -	'outcuescale' => { 488 => [\'outCue','outCueScale'] },
      -	'outcuevalue' => { 488 => [\'outCue','outCueValue'] },
      -	'outputimageheight' => { 191 => 0x3 },
      -	'outputimagewidth' => { 191 => 0x2 },
      -	'outputlut' => { 306 => 0xa7 },
      -	'outputprofile' => { 134 => 0x138b },
      -	'outputresolution' => { 191 => 0x4 },
      -	'overclockcols' => { 134 => 0x189c },
      -	'overclockrows' => { 134 => 0x18c4 },
      -	'overridelookvignette' => { 462 => 'OverrideLookVignette', 464 => 'OverrideLookVignette' },
      -	'owner' => { 492 => 'Owner' },
      -	'ownerid' => { 128 => 0xbc },
      -	'ownername' => { 15 => 0x10f, 61 => 0x9, 94 => 0x810, 116 => [0xa430,0xfde8], 152 => 'OwnerName', 459 => 'OwnerName', 469 => 'CameraOwnerName' },
      -	'padding' => { 116 => 0xea1c },
      -	'pagecount' => { 478 => 'pageCount' },
      -	'pageimage' => { 486 => [\'PageInfo','PageInfoImage'] },
      -	'pageimageformat' => { 486 => [\'PageInfo','PageInfoFormat'] },
      -	'pageimageheight' => { 486 => [\'PageInfo','PageInfoHeight'] },
      -	'pageimagepagenumber' => { 486 => [\'PageInfo','PageInfoPageNumber'] },
      -	'pageimagewidth' => { 486 => [\'PageInfo','PageInfoWidth'] },
      -	'pageinfo' => { 486 => 'PageInfo' },
      -	'pagename' => { 116 => 0x11d },
      -	'pagenumber' => { 116 => 0x129 },
      -	'pageprogressiondirection' => { 478 => 'pageProgressionDirection' },
      -	'pagerange' => { 478 => 'pageRange' },
      -	'paintbasedcorrectionmasks' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasks'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasks'] },
      -	'paintbasedcorrections' => { 462 => 'PaintBasedCorrections', 464 => 'PaintBasedCorrections' },
      -	'paintcorrectionactive' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionActive'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionActive'] },
      -	'paintcorrectionamount' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionAmount'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionAmount'] },
      -	'paintcorrectionbrightness' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalBrightness'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalBrightness'] },
      -	'paintcorrectionclarity' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity'] },
      -	'paintcorrectionclarity2012' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity2012'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity2012'] },
      -	'paintcorrectioncontrast' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast'] },
      -	'paintcorrectioncontrast2012' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast2012'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast2012'] },
      -	'paintcorrectiondefringe' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalDefringe'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalDefringe'] },
      -	'paintcorrectionexposure' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure'] },
      -	'paintcorrectionexposure2012' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure2012'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure2012'] },
      -	'paintcorrectionhighlights2012' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalHighlights2012'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalHighlights2012'] },
      -	'paintcorrectionhue' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalToningHue'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalToningHue'] },
      -	'paintcorrectionluminancenoise' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalLuminanceNoise'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalLuminanceNoise'] },
      -	'paintcorrectionmaskalpha' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAlpha'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAlpha'] },
      -	'paintcorrectionmaskangle' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAngle'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAngle'] },
      -	'paintcorrectionmaskbottom' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksBottom'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksBottom'] },
      -	'paintcorrectionmaskcentervalue' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterValue'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterValue'] },
      -	'paintcorrectionmaskcenterweight' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterWeight'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterWeight'] },
      -	'paintcorrectionmaskdabs' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksDabs'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksDabs'] },
      -	'paintcorrectionmaskfeather' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFeather'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFeather'] },
      -	'paintcorrectionmaskflipped' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlipped'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlipped'] },
      -	'paintcorrectionmaskflow' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlow'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlow'] },
      -	'paintcorrectionmaskfullx' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullX'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullX'] },
      -	'paintcorrectionmaskfully' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullY'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullY'] },
      -	'paintcorrectionmaskleft' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksLeft'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksLeft'] },
      -	'paintcorrectionmaskmidpoint' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMidpoint'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMidpoint'] },
      -	'paintcorrectionmaskperimetervalue' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksPerimeterValue'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksPerimeterValue'] },
      -	'paintcorrectionmaskradius' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRadius'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRadius'] },
      -	'paintcorrectionmaskright' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRight'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRight'] },
      -	'paintcorrectionmaskroundness' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRoundness'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRoundness'] },
      -	'paintcorrectionmasksizex' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeX'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeX'] },
      -	'paintcorrectionmasksizey' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeY'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeY'] },
      -	'paintcorrectionmasktop' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksTop'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksTop'] },
      -	'paintcorrectionmaskvalue' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskValue'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskValue'] },
      -	'paintcorrectionmaskversion' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksVersion'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksVersion'] },
      -	'paintcorrectionmaskwhat' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksWhat'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksWhat'] },
      -	'paintcorrectionmaskx' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksX'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksX'] },
      -	'paintcorrectionmasky' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksY'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksY'] },
      -	'paintcorrectionmaskzerox' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroX'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroX'] },
      -	'paintcorrectionmaskzeroy' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroY'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroY'] },
      -	'paintcorrectionmoire' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalMoire'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalMoire'] },
      -	'paintcorrectionsaturation' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSaturation','PaintBasedCorrectionsLocalToningSaturation'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSaturation','PaintBasedCorrectionsLocalToningSaturation'] },
      -	'paintcorrectionshadows2012' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalShadows2012'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalShadows2012'] },
      -	'paintcorrectionsharpness' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSharpness'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSharpness'] },
      -	'paintcorrectiontemperature' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTemperature'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTemperature'] },
      -	'paintcorrectiontint' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTint'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTint'] },
      -	'paintcorrectionwhat' => { 462 => [\'PaintBasedCorrections','PaintBasedCorrectionsWhat'], 464 => [\'PaintBasedCorrections','PaintBasedCorrectionsWhat'] },
      -	'panasonicdatetime' => { 309 => 0x0 },
      -	'panasonicexifversion' => { 306 => 0x26 },
      -	'panasonicimageheight' => { 306 => 0x4c },
      -	'panasonicimagewidth' => { 306 => 0x4b },
      -	'panasonicrawversion' => { 311 => 0x1 },
      -	'panasonictitle' => { 116 => 0xc6d2 },
      -	'panasonictitle2' => { 116 => 0xc6d3 },
      -	'panoramaangle' => { 124 => 0x1153 },
      -	'panoramacropbottom' => { 412 => 0x7 },
      -	'panoramacropleft' => { 412 => 0x4 },
      -	'panoramacropright' => { 412 => 0x6 },
      -	'panoramacroptop' => { 412 => 0x5 },
      -	'panoramadirection' => { 69 => 0x5, 124 => 0x1154, 412 => 0x3 },
      -	'panoramaframeheight' => { 412 => 0x9 },
      -	'panoramaframenumber' => { 69 => 0x2 },
      -	'panoramaframewidth' => { 412 => 0x8 },
      -	'panoramafullheight' => { 412 => 0x2 },
      -	'panoramafullwidth' => { 412 => 0x1 },
      -	'panoramamode' => { 136 => 0x3c, 283 => 0x601 },
      -	'panoramasize3d' => { 395 => 0x38 },
      -	'panoramasourceheight' => { 412 => 0xb },
      -	'panoramasourcewidth' => { 412 => 0xa },
      -	'panoramicstitchcameramotion' => { 172 => 'PanoramicStitchCameraMotion', 173 => 0x1 },
      -	'panoramicstitchmaptype' => { 172 => 'PanoramicStitchMapType', 173 => 0x2 },
      -	'panoramicstitchphi0' => { 172 => 'PanoramicStitchPhi0', 173 => 0x5 },
      -	'panoramicstitchphi1' => { 172 => 'PanoramicStitchPhi1', 173 => 0x6 },
      -	'panoramicstitchtheta0' => { 172 => 'PanoramicStitchTheta0', 173 => 0x3 },
      -	'panoramicstitchtheta1' => { 172 => 'PanoramicStitchTheta1', 173 => 0x4 },
      -	'panoramicstitchversion' => { 173 => 0x0 },
      -	'pantry' => { 489 => 'Pantry' },
      -	'pantryinstanceid' => { 489 => [\'Pantry','PantryInstanceID'] },
      -	'parallax' => { 124 => 0xb211, 282 => 0x28 },
      -	'parametricdarks' => { 462 => 'ParametricDarks', 464 => 'ParametricDarks' },
      -	'parametrichighlights' => { 462 => 'ParametricHighlights', 464 => 'ParametricHighlights' },
      -	'parametrichighlightsplit' => { 462 => 'ParametricHighlightSplit', 464 => 'ParametricHighlightSplit' },
      -	'parametriclights' => { 462 => 'ParametricLights', 464 => 'ParametricLights' },
      -	'parametricmidtonesplit' => { 462 => 'ParametricMidtoneSplit', 464 => 'ParametricMidtoneSplit' },
      -	'parametricshadows' => { 462 => 'ParametricShadows', 464 => 'ParametricShadows' },
      -	'parametricshadowsplit' => { 462 => 'ParametricShadowSplit', 464 => 'ParametricShadowSplit' },
      -	'parentmediaeventid' => { 452 => 'ParentMediaEventID' },
      -	'parentmeid' => { 452 => 'ParentMEID' },
      -	'parentproductid' => { 358 => '@ppi' },
      -	'parentreference1' => { 472 => [\'TagStructure','TagStructureParentReference'] },
      -	'parentreference2' => { 472 => [\'TagStructure','TagStructureSubLabelsParentReference'] },
      -	'parentreference3' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsParentReference'] },
      -	'parentreference4' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsParentReference'] },
      -	'parentreference5' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
      -	'parentreference6' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
      -	'parentshorttitle' => { 358 => '@PST' },
      -	'parenttitle' => { 358 => '@pti' },
      -	'partialactivecols1' => { 134 => 0x17e8 },
      -	'partialactivecols2' => { 134 => 0x17f2 },
      -	'partialactiverows1' => { 134 => 0x17fc },
      -	'partialactiverows2' => { 134 => 0x1806 },
      -	'partofcompilation' => { 488 => 'partOfCompilation' },
      -	'patientbirthdate' => { 441 => 'PatientDOB' },
      -	'patientid' => { 441 => 'PatientID' },
      -	'patientname' => { 441 => 'PatientName' },
      -	'patientsex' => { 441 => 'PatientSex' },
      -	'patternareaheight' => { 134 => 0x963 },
      -	'patternareawidth' => { 134 => 0x962 },
      -	'patterncorrectionfactorscale' => { 134 => 0x969 },
      -	'patterncropcols1' => { 134 => 0x96c },
      -	'patterncropcols2' => { 134 => 0x96d },
      -	'patterncroprows1' => { 134 => 0x96a },
      -	'patterncroprows2' => { 134 => 0x96b },
      -	'patternimagerheight' => { 134 => 0x961 },
      -	'patternimagerwidth' => { 134 => 0x960 },
      -	'patternx' => { 134 => 0x966 },
      -	'patterny' => { 134 => 0x967 },
      -	'pdfversion' => { 475 => 'PDFVersion' },
      -	'pentaximagesize' => { 341 => 0x9 },
      -	'pentaxmodelid' => { 321 => 0x0, 341 => 0x5 },
      -	'pentaxmodeltype' => { 341 => 0x1 },
      -	'pentaxversion' => { 341 => 0x0 },
      -	'people' => { 443 => 'People', 455 => 'People' },
      -	'perchannelblacklevel' => { 42 => 0xc4, 43 => [0x2b4,0x2cb,0x2cf], 44 => [0x108,0x14d], 45 => 0x1df, 46 => [0x1f8,0x2d8], 47 => [0x22c,0x30a], 48 => 0x149 },
      -	'performer' => { 358 => 'perf', 366 => 'perf' },
      -	'performerkeywords' => { 366 => "\xa9prk" },
      -	'performers' => { 366 => "\xa9prf" },
      -	'performerurl' => { 366 => "\xa9prl" },
      -	'peripheralillumcentralradius' => { 439 => 0x8030 },
      -	'peripheralillumcentralvalue' => { 439 => 0x8031 },
      -	'peripheralillumination' => { 100 => 0x20702, 106 => 0x68 },
      -	'peripheralilluminationcorr' => { 60 => 0x1, 331 => 0x2 },
      -	'peripheralilluminationon' => { 100 => '0x20702.0', 106 => 0x64 },
      -	'peripheralillumperiphvalue' => { 439 => 0x8032 },
      -	'peripherallighting' => { 76 => 0x2, 124 => 0x3804 },
      -	'peripherallightingsetting' => { 77 => 0x5 },
      -	'peripherallightingvalue' => { 76 => 0x6 },
      -	'permissions' => { 481 => 'permissions' },
      -	'permits' => { 460 => 'permits' },
      -	'person' => { 478 => 'person' },
      -	'personality' => { 452 => 'Personality' },
      -	'personheard' => { 474 => 'PersonHeard' },
      -	'personheardidentifier' => { 474 => [\'PersonHeard','PersonHeardIdentifier'] },
      -	'personheardname' => { 474 => [\'PersonHeard','PersonHeardName'] },
      -	'personinimage' => { 474 => 'PersonInImage' },
      -	'personinimagecharacteristic' => { 474 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristic'] },
      -	'personinimagecvtermcvid' => { 474 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvId'] },
      -	'personinimagecvtermid' => { 474 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermId'] },
      -	'personinimagecvtermname' => { 474 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermName'] },
      -	'personinimagecvtermrefinedabout' => { 474 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermRefinedAbout'] },
      -	'personinimagedescription' => { 474 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonDescription'] },
      -	'personinimageid' => { 474 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonId'] },
      -	'personinimagename' => { 474 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonName'] },
      -	'personinimagewdetails' => { 474 => 'PersonInImageWDetails' },
      -	'perspectiveaspect' => { 462 => 'PerspectiveAspect', 464 => 'PerspectiveAspect' },
      -	'perspectivehorizontal' => { 462 => 'PerspectiveHorizontal', 464 => 'PerspectiveHorizontal' },
      -	'perspectiverotate' => { 462 => 'PerspectiveRotate', 464 => 'PerspectiveRotate' },
      -	'perspectivescale' => { 462 => 'PerspectiveScale', 464 => 'PerspectiveScale' },
      -	'perspectiveupright' => { 462 => 'PerspectiveUpright', 464 => 'PerspectiveUpright' },
      -	'perspectivevertical' => { 462 => 'PerspectiveVertical', 464 => 'PerspectiveVertical' },
      -	'perspectivex' => { 462 => 'PerspectiveX', 464 => 'PerspectiveX' },
      -	'perspectivey' => { 462 => 'PerspectiveY', 464 => 'PerspectiveY' },
      -	'pf0customfuncregistration' => { 89 => 0x1 },
      -	'pf10retainprogramshift' => { 89 => 0xb },
      -	'pf13drivepriority' => { 89 => 0xe },
      -	'pf14disablefocussearch' => { 89 => 0xf },
      -	'pf15disableafassistbeam' => { 89 => 0x10 },
      -	'pf16autofocuspointshoot' => { 89 => 0x11 },
      -	'pf17disableafpointsel' => { 89 => 0x12 },
      -	'pf18enableautoafpointsel' => { 89 => 0x13 },
      -	'pf19continuousshootspeed' => { 89 => 0x14 },
      -	'pf19shootingspeedhigh' => { 88 => 0xa },
      -	'pf19shootingspeedlow' => { 88 => 0x9 },
      -	'pf1disableshootingmodes' => { 89 => 0x2 },
      -	'pf1value' => { 88 => 0x1 },
      -	'pf20limitcontinousshots' => { 89 => 0x15 },
      -	'pf20maxcontinousshots' => { 88 => 0xb },
      -	'pf21enablequietoperation' => { 89 => 0x16 },
      -	'pf23felocktime' => { 88 => 0xd },
      -	'pf23postreleasetime' => { 88 => 0xe },
      -	'pf23settimerlengths' => { 89 => 0x18 },
      -	'pf23shutterbuttontime' => { 88 => 0xc },
      -	'pf24lightlcdduringbulb' => { 89 => 0x19 },
      -	'pf25aemode' => { 88 => 0xf },
      -	'pf25afmode' => { 88 => 0x12 },
      -	'pf25afpointsel' => { 88 => 0x13 },
      -	'pf25colormatrix' => { 88 => 0x17 },
      -	'pf25defaultclearsettings' => { 89 => 0x1a },
      -	'pf25drivemode' => { 88 => 0x11 },
      -	'pf25imagesize' => { 88 => 0x14 },
      -	'pf25meteringmode' => { 88 => 0x10 },
      -	'pf25parameters' => { 88 => 0x16 },
      -	'pf25wbmode' => { 88 => 0x15 },
      -	'pf26shortenreleaselag' => { 89 => 0x1b },
      -	'pf27reversedialrotation' => { 89 => 0x1c },
      -	'pf27value' => { 88 => 0x18 },
      -	'pf28noquickdialexpcomp' => { 89 => 0x1d },
      -	'pf29quickdialswitchoff' => { 89 => 0x1e },
      -	'pf2disablemeteringmodes' => { 89 => 0x3 },
      -	'pf2value' => { 88 => 0x2 },
      -	'pf30enlargementmode' => { 89 => 0x1f },
      -	'pf31originaldecisiondata' => { 89 => 0x20 },
      -	'pf3manualexposuremetering' => { 89 => 0x4 },
      -	'pf3value' => { 88 => 0x3 },
      -	'pf4exposuretimelimits' => { 89 => 0x5 },
      -	'pf4exposuretimemax' => { 88 => 0x5 },
      -	'pf4exposuretimemin' => { 88 => 0x4 },
      -	'pf5aperturelimits' => { 89 => 0x6 },
      -	'pf5aperturemax' => { 88 => 0x7 },
      -	'pf5aperturemin' => { 88 => 0x6 },
      -	'pf6presetshootingmodes' => { 89 => 0x7 },
      -	'pf7bracketcontinuousshoot' => { 89 => 0x8 },
      -	'pf8bracketshots' => { 88 => 0x8 },
      -	'pf8setbracketshots' => { 89 => 0x9 },
      -	'pf9changebracketsequence' => { 89 => 0xa },
      -	'phasedetectaf' => { 188 => 0x6 },
      -	'phonenumber' => { 153 => 'Phone' },
      +	'orientationlinkedafpoint' => { 84 => 0x516 },
      +	'originalalbumtitle' => { 179 => 'WM/OriginalAlbumTitle' },
      +	'originalartist' => { 179 => 'WM/OriginalArtist', 372 => "\xa9ope" },
      +	'originalbestqualitysize' => { 119 => 0xc792 },
      +	'originalcreatedatetime' => { 467 => 'OriginalCreateDateTime' },
      +	'originaldecisiondata' => { 114 => 'Canon-OriginalDecisionData' },
      +	'originaldecisiondataoffset' => { 64 => 0x83 },
      +	'originaldefaultcropsize' => { 119 => 0xc793 },
      +	'originaldefaultfinalsize' => { 119 => 0xc791 },
      +	'originaldirectory' => { 317 => 0x408 },
      +	'originaldocumentid' => { 504 => 'OriginalDocumentID' },
      +	'originalfilename' => { 97 => 0x816, 138 => 0x3e9, 150 => 0x20, 317 => 0x407, 467 => 'OriginalFilename' },
      +	'originalimageheight' => { 79 => 0xc, 123 => 0x1 },
      +	'originalimagewidth' => { 79 => 0xb, 123 => 0x0 },
      +	'originallyricist' => { 179 => 'WM/OriginalLyricist' },
      +	'originalrawfiledata' => { 119 => 0xc68c },
      +	'originalrawfiledigest' => { 119 => 0xc71d },
      +	'originalrawfilename' => { 119 => 0xc68b },
      +	'originaltransmissionreference' => { 131 => 0x67 },
      +	'originatingprogram' => { 131 => 0x41, 472 => 'OriginatingProgram' },
      +	'originplatform' => { 493 => 'originPlatform' },
      +	'os' => { 481 => 'os' },
      +	'otherconditions' => { 307 => 'OtherConditions' },
      +	'otherconstraints' => { 307 => 'OtherConstraints' },
      +	'otherimage' => { 114 => 'Exif-OtherImage' },
      +	'otherimageinfo' => { 307 => 'OtherImageInfo' },
      +	'otherimagelength' => { 119 => 0x202 },
      +	'otherimagestart' => { 119 => 0x201 },
      +	'otherlicensedocuments' => { 307 => 'OtherLicenseDocuments' },
      +	'otherlicenseinfo' => { 307 => 'OtherLicenseInfo' },
      +	'otherlicenserequirements' => { 307 => 'OtherLicenseRequirements' },
      +	'outcue' => { 503 => 'outCue' },
      +	'outcuescale' => { 503 => [\'outCue','outCueScale'] },
      +	'outcuevalue' => { 503 => [\'outCue','outCueValue'] },
      +	'outputimageheight' => { 197 => 0x3 },
      +	'outputimagewidth' => { 197 => 0x2 },
      +	'outputlut' => { 320 => 0xa7 },
      +	'outputprofile' => { 138 => 0x138b },
      +	'outputresolution' => { 197 => 0x4 },
      +	'overclockcols' => { 138 => 0x189c },
      +	'overclockrows' => { 138 => 0x18c4 },
      +	'overridelookvignette' => { 477 => 'OverrideLookVignette', 479 => 'OverrideLookVignette' },
      +	'owner' => { 507 => 'Owner' },
      +	'ownerid' => { 131 => 0xbc },
      +	'ownername' => { 15 => 0x10f, 64 => 0x9, 97 => 0x810, 119 => [0xa430,0xfde8], 156 => 'OwnerName', 474 => 'OwnerName', 484 => 'CameraOwnerName' },
      +	'padding' => { 119 => 0xea1c },
      +	'pagecount' => { 493 => 'pageCount' },
      +	'pageimage' => { 501 => [\'PageInfo','PageInfoImage'] },
      +	'pageimageformat' => { 501 => [\'PageInfo','PageInfoFormat'] },
      +	'pageimageheight' => { 501 => [\'PageInfo','PageInfoHeight'] },
      +	'pageimagepagenumber' => { 501 => [\'PageInfo','PageInfoPageNumber'] },
      +	'pageimagewidth' => { 501 => [\'PageInfo','PageInfoWidth'] },
      +	'pageinfo' => { 501 => 'PageInfo' },
      +	'pagename' => { 119 => 0x11d },
      +	'pagenumber' => { 119 => 0x129 },
      +	'pageprogressiondirection' => { 493 => 'pageProgressionDirection' },
      +	'pagerange' => { 493 => 'pageRange' },
      +	'paintbasedcorrectionmasks' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasks'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasks'] },
      +	'paintbasedcorrections' => { 477 => 'PaintBasedCorrections', 479 => 'PaintBasedCorrections' },
      +	'paintcorrectionactive' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionActive'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionActive'] },
      +	'paintcorrectionamount' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionAmount'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionAmount'] },
      +	'paintcorrectionblacks2012' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalBlacks2012'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalBlacks2012'] },
      +	'paintcorrectionbrightness' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalBrightness'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalBrightness'] },
      +	'paintcorrectionclarity' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity'] },
      +	'paintcorrectionclarity2012' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity2012'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalClarity2012'] },
      +	'paintcorrectioncontrast' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast'] },
      +	'paintcorrectioncontrast2012' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast2012'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalContrast2012'] },
      +	'paintcorrectioncorrectionname' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionName'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionName'] },
      +	'paintcorrectioncorrectionsyncid' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionSyncID'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionSyncID'] },
      +	'paintcorrectiondefringe' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalDefringe'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalDefringe'] },
      +	'paintcorrectiondehaze' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalDehaze'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalDehaze'] },
      +	'paintcorrectionexposure' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure'] },
      +	'paintcorrectionexposure2012' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure2012'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalExposure2012'] },
      +	'paintcorrectionhighlights2012' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalHighlights2012'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalHighlights2012'] },
      +	'paintcorrectionhue' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalHue'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalHue'] },
      +	'paintcorrectionluminancenoise' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalLuminanceNoise'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalLuminanceNoise'] },
      +	'paintcorrectionmaskalpha' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAlpha'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAlpha'] },
      +	'paintcorrectionmaskangle' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAngle'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksAngle'] },
      +	'paintcorrectionmaskbottom' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksBottom'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksBottom'] },
      +	'paintcorrectionmaskcentervalue' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterValue'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterValue'] },
      +	'paintcorrectionmaskcenterweight' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterWeight'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCenterWeight'] },
      +	'paintcorrectionmaskdabs' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksDabs'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksDabs'] },
      +	'paintcorrectionmaskfeather' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFeather'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFeather'] },
      +	'paintcorrectionmaskflipped' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlipped'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlipped'] },
      +	'paintcorrectionmaskflow' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlow'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFlow'] },
      +	'paintcorrectionmaskfullx' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullX'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullX'] },
      +	'paintcorrectionmaskfully' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullY'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksFullY'] },
      +	'paintcorrectionmaskinputdigest' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksInputDigest'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksInputDigest'] },
      +	'paintcorrectionmaskleft' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksLeft'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksLeft'] },
      +	'paintcorrectionmaskmaskactive' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskActive'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskActive'] },
      +	'paintcorrectionmaskmaskblendmode' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskBlendMode'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskBlendMode'] },
      +	'paintcorrectionmaskmaskdigest' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskDigest'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskDigest'] },
      +	'paintcorrectionmaskmaskinverted' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskInverted'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskInverted'] },
      +	'paintcorrectionmaskmaskname' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskName'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskName'] },
      +	'paintcorrectionmaskmasks' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasks'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasks'] },
      +	'paintcorrectionmaskmasksalpha' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksAlpha'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksAlpha'] },
      +	'paintcorrectionmaskmasksangle' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksAngle'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksAngle'] },
      +	'paintcorrectionmaskmasksbottom' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksBottom'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksBottom'] },
      +	'paintcorrectionmaskmaskscentervalue' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksCenterValue'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksCenterValue'] },
      +	'paintcorrectionmaskmaskscenterweight' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksCenterWeight'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksCenterWeight'] },
      +	'paintcorrectionmaskmasksdabs' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksDabs'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksDabs'] },
      +	'paintcorrectionmaskmasksfeather' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksFeather'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksFeather'] },
      +	'paintcorrectionmaskmasksflipped' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksFlipped'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksFlipped'] },
      +	'paintcorrectionmaskmasksflow' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksFlow'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksFlow'] },
      +	'paintcorrectionmaskmasksfullx' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksFullX'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksFullX'] },
      +	'paintcorrectionmaskmasksfully' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksFullY'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksFullY'] },
      +	'paintcorrectionmaskmasksinputdigest' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksInputDigest'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksInputDigest'] },
      +	'paintcorrectionmaskmasksleft' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksLeft'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksLeft'] },
      +	'paintcorrectionmaskmasksmaskactive' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskActive'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskActive'] },
      +	'paintcorrectionmaskmasksmaskblendmode' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskBlendMode'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskBlendMode'] },
      +	'paintcorrectionmaskmasksmaskdigest' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskDigest'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskDigest'] },
      +	'paintcorrectionmaskmasksmaskinverted' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskInverted'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskInverted'] },
      +	'paintcorrectionmaskmasksmaskname' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskName'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskName'] },
      +	'paintcorrectionmaskmasksmasksubtype' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskSubType'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskSubType'] },
      +	'paintcorrectionmaskmasksmasksyncid' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskSyncID'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskSyncID'] },
      +	'paintcorrectionmaskmasksmaskversion' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskVersion'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskVersion'] },
      +	'paintcorrectionmaskmasksmidpoint' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMidpoint'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMidpoint'] },
      +	'paintcorrectionmaskmasksorigin' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksOrigin'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksOrigin'] },
      +	'paintcorrectionmaskmasksperimetervalue' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksPerimeterValue'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksPerimeterValue'] },
      +	'paintcorrectionmaskmasksradius' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksRadius'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksRadius'] },
      +	'paintcorrectionmaskmasksreferencepoint' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksReferencePoint'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksReferencePoint'] },
      +	'paintcorrectionmaskmasksright' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksRight'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksRight'] },
      +	'paintcorrectionmaskmasksroundness' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksRoundness'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksRoundness'] },
      +	'paintcorrectionmaskmaskssizex' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksSizeX'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksSizeX'] },
      +	'paintcorrectionmaskmaskssizey' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksSizeY'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksSizeY'] },
      +	'paintcorrectionmaskmaskstop' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksTop'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksTop'] },
      +	'paintcorrectionmaskmasksubtype' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskSubType'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskSubType'] },
      +	'paintcorrectionmaskmasksvalue' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskValue'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksMaskValue'] },
      +	'paintcorrectionmaskmasksversion' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksVersion'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksVersion'] },
      +	'paintcorrectionmaskmaskswhat' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksWhat'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksWhat'] },
      +	'paintcorrectionmaskmaskswholeimagearea' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksWholeImageArea'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksWholeImageArea'] },
      +	'paintcorrectionmaskmasksx' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksX'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksX'] },
      +	'paintcorrectionmaskmasksy' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksY'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksY'] },
      +	'paintcorrectionmaskmasksyncid' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskSyncID'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskSyncID'] },
      +	'paintcorrectionmaskmaskszerox' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksZeroX'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksZeroX'] },
      +	'paintcorrectionmaskmaskszeroy' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksZeroY'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMasksZeroY'] },
      +	'paintcorrectionmaskmaskversion' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskVersion'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskVersion'] },
      +	'paintcorrectionmaskmidpoint' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMidpoint'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMidpoint'] },
      +	'paintcorrectionmaskorigin' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksOrigin'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksOrigin'] },
      +	'paintcorrectionmaskperimetervalue' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksPerimeterValue'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksPerimeterValue'] },
      +	'paintcorrectionmaskradius' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRadius'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRadius'] },
      +	'paintcorrectionmaskrange' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMask'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMask'] },
      +	'paintcorrectionmaskrangeareamodels' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModels'] },
      +	'paintcorrectionmaskrangeareamodelscolorsampleinfo' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'] },
      +	'paintcorrectionmaskrangeareamodelscomponents' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskAreaModelsAreaComponents'] },
      +	'paintcorrectionmaskrangecoloramount' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskColorAmount'] },
      +	'paintcorrectionmaskrangedepthfeather' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthFeather'] },
      +	'paintcorrectionmaskrangedepthmax' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMax'] },
      +	'paintcorrectionmaskrangedepthmin' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskDepthMin'] },
      +	'paintcorrectionmaskrangeinvert' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskInvert'] },
      +	'paintcorrectionmaskrangelumfeather' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumFeather'] },
      +	'paintcorrectionmaskrangeluminancedepthsampleinfo' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLuminanceDepthSampleInfo'] },
      +	'paintcorrectionmaskrangelummax' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMax'] },
      +	'paintcorrectionmaskrangelummin' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumMin'] },
      +	'paintcorrectionmaskrangelumrange' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskLumRange'] },
      +	'paintcorrectionmaskrangesampletype' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskSampleType'] },
      +	'paintcorrectionmaskrangetype' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskType'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskType'] },
      +	'paintcorrectionmaskrangeversion' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksCorrectionRangeMaskVersion'] },
      +	'paintcorrectionmaskreferencepoint' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksReferencePoint'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksReferencePoint'] },
      +	'paintcorrectionmaskright' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRight'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRight'] },
      +	'paintcorrectionmaskroundness' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRoundness'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksRoundness'] },
      +	'paintcorrectionmasksizex' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeX'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeX'] },
      +	'paintcorrectionmasksizey' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeY'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksSizeY'] },
      +	'paintcorrectionmasktop' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksTop'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksTop'] },
      +	'paintcorrectionmaskvalue' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskValue'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksMaskValue'] },
      +	'paintcorrectionmaskversion' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksVersion'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksVersion'] },
      +	'paintcorrectionmaskwhat' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksWhat'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksWhat'] },
      +	'paintcorrectionmaskwholeimagearea' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksWholeImageArea'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksWholeImageArea'] },
      +	'paintcorrectionmaskx' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksX'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksX'] },
      +	'paintcorrectionmasky' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksY'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksY'] },
      +	'paintcorrectionmaskzerox' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroX'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroX'] },
      +	'paintcorrectionmaskzeroy' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroY'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionMasksZeroY'] },
      +	'paintcorrectionmoire' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalMoire'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalMoire'] },
      +	'paintcorrectionrangemask' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMask'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMask'] },
      +	'paintcorrectionrangemaskareamodels' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskAreaModels'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskAreaModels'] },
      +	'paintcorrectionrangemaskareamodelscolorsampleinfo' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'] },
      +	'paintcorrectionrangemaskareamodelscomponents' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskAreaModelsAreaComponents'] },
      +	'paintcorrectionrangemaskcoloramount' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskColorAmount'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskColorAmount'] },
      +	'paintcorrectionrangemaskdepthfeather' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskDepthFeather'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskDepthFeather'] },
      +	'paintcorrectionrangemaskdepthmax' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskDepthMax'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskDepthMax'] },
      +	'paintcorrectionrangemaskdepthmin' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskDepthMin'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskDepthMin'] },
      +	'paintcorrectionrangemaskinvert' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskInvert'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskInvert'] },
      +	'paintcorrectionrangemasklumfeather' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskLumFeather'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskLumFeather'] },
      +	'paintcorrectionrangemaskluminancedepthsampleinfo' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskLuminanceDepthSampleInfo'] },
      +	'paintcorrectionrangemasklummax' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskLumMax'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskLumMax'] },
      +	'paintcorrectionrangemasklummin' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskLumMin'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskLumMin'] },
      +	'paintcorrectionrangemasklumrange' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskLumRange'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskLumRange'] },
      +	'paintcorrectionrangemasksampletype' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskSampleType'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskSampleType'] },
      +	'paintcorrectionrangemasktype' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskType'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskType'] },
      +	'paintcorrectionrangemaskversion' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskVersion'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsCorrectionRangeMaskVersion'] },
      +	'paintcorrectionsaturation' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSaturation'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSaturation'] },
      +	'paintcorrectionshadows2012' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalShadows2012'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalShadows2012'] },
      +	'paintcorrectionsharpness' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSharpness'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalSharpness'] },
      +	'paintcorrectiontemperature' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTemperature'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTemperature'] },
      +	'paintcorrectiontexture' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTexture'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTexture'] },
      +	'paintcorrectiontint' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTint'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalTint'] },
      +	'paintcorrectiontoninghue' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalToningHue'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalToningHue'] },
      +	'paintcorrectiontoningsaturation' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalToningSaturation'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalToningSaturation'] },
      +	'paintcorrectionwhat' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsWhat'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsWhat'] },
      +	'paintcorrectionwhites2012' => { 477 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalWhites2012'], 479 => [\'PaintBasedCorrections','PaintBasedCorrectionsLocalWhites2012'] },
      +	'panasonicdatetime' => { 323 => 0x0 },
      +	'panasonicexifversion' => { 320 => 0x26 },
      +	'panasonicimageheight' => { 320 => 0x4c },
      +	'panasonicimagewidth' => { 320 => 0x4b },
      +	'panasonicrawversion' => { 325 => 0x1 },
      +	'panasonictitle' => { 119 => 0xc6d2 },
      +	'panasonictitle2' => { 119 => 0xc6d3 },
      +	'panoramaangle' => { 127 => 0x1153 },
      +	'panoramacropbottom' => { 426 => 0x7 },
      +	'panoramacropleft' => { 426 => 0x4 },
      +	'panoramacropright' => { 426 => 0x6 },
      +	'panoramacroptop' => { 426 => 0x5 },
      +	'panoramadirection' => { 72 => 0x5, 127 => 0x1154, 426 => 0x3 },
      +	'panoramaframeheight' => { 426 => 0x9 },
      +	'panoramaframenumber' => { 72 => 0x2 },
      +	'panoramaframewidth' => { 426 => 0x8 },
      +	'panoramafullheight' => { 426 => 0x2 },
      +	'panoramafullwidth' => { 426 => 0x1 },
      +	'panoramamode' => { 140 => 0x3c, 297 => 0x601 },
      +	'panoramasize3d' => { 409 => 0x38 },
      +	'panoramasourceheight' => { 426 => 0xb },
      +	'panoramasourcewidth' => { 426 => 0xa },
      +	'panoramicstitchcameramotion' => { 176 => 'PanoramicStitchCameraMotion', 177 => 0x1 },
      +	'panoramicstitchmaptype' => { 176 => 'PanoramicStitchMapType', 177 => 0x2 },
      +	'panoramicstitchphi0' => { 176 => 'PanoramicStitchPhi0', 177 => 0x5 },
      +	'panoramicstitchphi1' => { 176 => 'PanoramicStitchPhi1', 177 => 0x6 },
      +	'panoramicstitchtheta0' => { 176 => 'PanoramicStitchTheta0', 177 => 0x3 },
      +	'panoramicstitchtheta1' => { 176 => 'PanoramicStitchTheta1', 177 => 0x4 },
      +	'panoramicstitchversion' => { 177 => 0x0 },
      +	'pantry' => { 504 => 'Pantry' },
      +	'pantryinstanceid' => { 504 => [\'Pantry','PantryInstanceID'] },
      +	'parallax' => { 127 => 0xb211, 296 => 0x28 },
      +	'parametricdarks' => { 477 => 'ParametricDarks', 479 => 'ParametricDarks' },
      +	'parametrichighlights' => { 477 => 'ParametricHighlights', 479 => 'ParametricHighlights' },
      +	'parametrichighlightsplit' => { 477 => 'ParametricHighlightSplit', 479 => 'ParametricHighlightSplit' },
      +	'parametriclights' => { 477 => 'ParametricLights', 479 => 'ParametricLights' },
      +	'parametricmidtonesplit' => { 477 => 'ParametricMidtoneSplit', 479 => 'ParametricMidtoneSplit' },
      +	'parametricshadows' => { 477 => 'ParametricShadows', 479 => 'ParametricShadows' },
      +	'parametricshadowsplit' => { 477 => 'ParametricShadowSplit', 479 => 'ParametricShadowSplit' },
      +	'parentalrating' => { 179 => 'WM/ParentalRating' },
      +	'parentmediaeventid' => { 467 => 'ParentMediaEventID' },
      +	'parentmeid' => { 467 => 'ParentMEID' },
      +	'parentproductid' => { 372 => '@ppi' },
      +	'parentreference1' => { 487 => [\'TagStructure','TagStructureParentReference'] },
      +	'parentreference2' => { 487 => [\'TagStructure','TagStructureSubLabelsParentReference'] },
      +	'parentreference3' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsParentReference'] },
      +	'parentreference4' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsParentReference'] },
      +	'parentreference5' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
      +	'parentreference6' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsParentReference'] },
      +	'parentshorttitle' => { 372 => '@PST' },
      +	'parenttitle' => { 372 => '@pti' },
      +	'partialactivecols1' => { 138 => 0x17e8 },
      +	'partialactivecols2' => { 138 => 0x17f2 },
      +	'partialactiverows1' => { 138 => 0x17fc },
      +	'partialactiverows2' => { 138 => 0x1806 },
      +	'partofcompilation' => { 503 => 'partOfCompilation' },
      +	'patientbirthdate' => { 456 => 'PatientDOB' },
      +	'patientid' => { 456 => 'PatientID' },
      +	'patientname' => { 456 => 'PatientName' },
      +	'patientsex' => { 456 => 'PatientSex' },
      +	'patternareaheight' => { 138 => 0x963 },
      +	'patternareawidth' => { 138 => 0x962 },
      +	'patterncorrectionfactorscale' => { 138 => 0x969 },
      +	'patterncropcols1' => { 138 => 0x96c },
      +	'patterncropcols2' => { 138 => 0x96d },
      +	'patterncroprows1' => { 138 => 0x96a },
      +	'patterncroprows2' => { 138 => 0x96b },
      +	'patternimagerheight' => { 138 => 0x961 },
      +	'patternimagerwidth' => { 138 => 0x960 },
      +	'patternx' => { 138 => 0x966 },
      +	'patterny' => { 138 => 0x967 },
      +	'pdfversion' => { 490 => 'PDFVersion' },
      +	'pentaximagesize' => { 355 => 0x9 },
      +	'pentaxmodelid' => { 335 => 0x0, 355 => 0x5 },
      +	'pentaxmodeltype' => { 355 => 0x1 },
      +	'pentaxversion' => { 355 => 0x0 },
      +	'people' => { 458 => 'People', 470 => 'People' },
      +	'perchannelblacklevel' => { 41 => 0x157, 42 => 0x16b, 44 => 0xc4, 45 => [0x2b4,0x2cb,0x2cf], 46 => [0x108,0x14d], 47 => 0x1df, 48 => [0x1f8,0x2d8], 49 => [0x22c,0x30a], 50 => 0x149 },
      +	'performer' => { 372 => 'perf', 380 => 'perf' },
      +	'performerkeywords' => { 380 => "\xa9prk" },
      +	'performers' => { 380 => "\xa9prf" },
      +	'performerurl' => { 380 => "\xa9prl" },
      +	'period' => { 179 => 'WM/Period' },
      +	'peripheralillumcentralradius' => { 454 => 0x8030 },
      +	'peripheralillumcentralvalue' => { 454 => 0x8031 },
      +	'peripheralillumination' => { 103 => 0x20702, 109 => 0x68 },
      +	'peripheralilluminationcorr' => { 62 => 0x1, 345 => 0x2 },
      +	'peripheralilluminationon' => { 103 => '0x20702.0', 109 => 0x64 },
      +	'peripheralillumperiphvalue' => { 454 => 0x8032 },
      +	'peripherallighting' => { 79 => 0x2, 127 => 0x3804 },
      +	'peripherallightingsetting' => { 80 => 0x5 },
      +	'peripherallightingvalue' => { 79 => 0x6 },
      +	'permissions' => { 496 => 'permissions' },
      +	'permits' => { 475 => 'permits' },
      +	'person' => { 493 => 'person' },
      +	'personality' => { 467 => 'Personality' },
      +	'personheard' => { 489 => 'PersonHeard' },
      +	'personheardidentifier' => { 489 => [\'PersonHeard','PersonHeardIdentifier'] },
      +	'personheardname' => { 489 => [\'PersonHeard','PersonHeardName'] },
      +	'personinimage' => { 489 => 'PersonInImage' },
      +	'personinimagecharacteristic' => { 489 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristic'] },
      +	'personinimagecvtermcvid' => { 489 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvId'] },
      +	'personinimagecvtermid' => { 489 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermId'] },
      +	'personinimagecvtermname' => { 489 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermName'] },
      +	'personinimagecvtermrefinedabout' => { 489 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonCharacteristicCvTermRefinedAbout'] },
      +	'personinimagedescription' => { 489 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonDescription'] },
      +	'personinimageid' => { 489 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonId'] },
      +	'personinimagename' => { 489 => [\'PersonInImageWDetails','PersonInImageWDetailsPersonName'] },
      +	'personinimagewdetails' => { 489 => 'PersonInImageWDetails' },
      +	'perspectiveaspect' => { 477 => 'PerspectiveAspect', 479 => 'PerspectiveAspect' },
      +	'perspectivehorizontal' => { 477 => 'PerspectiveHorizontal', 479 => 'PerspectiveHorizontal' },
      +	'perspectiverotate' => { 477 => 'PerspectiveRotate', 479 => 'PerspectiveRotate' },
      +	'perspectivescale' => { 477 => 'PerspectiveScale', 479 => 'PerspectiveScale' },
      +	'perspectiveupright' => { 477 => 'PerspectiveUpright', 479 => 'PerspectiveUpright' },
      +	'perspectivevertical' => { 477 => 'PerspectiveVertical', 479 => 'PerspectiveVertical' },
      +	'perspectivex' => { 477 => 'PerspectiveX', 479 => 'PerspectiveX' },
      +	'perspectivey' => { 477 => 'PerspectiveY', 479 => 'PerspectiveY' },
      +	'pf0customfuncregistration' => { 92 => 0x1 },
      +	'pf10retainprogramshift' => { 92 => 0xb },
      +	'pf13drivepriority' => { 92 => 0xe },
      +	'pf14disablefocussearch' => { 92 => 0xf },
      +	'pf15disableafassistbeam' => { 92 => 0x10 },
      +	'pf16autofocuspointshoot' => { 92 => 0x11 },
      +	'pf17disableafpointsel' => { 92 => 0x12 },
      +	'pf18enableautoafpointsel' => { 92 => 0x13 },
      +	'pf19continuousshootspeed' => { 92 => 0x14 },
      +	'pf19shootingspeedhigh' => { 91 => 0xa },
      +	'pf19shootingspeedlow' => { 91 => 0x9 },
      +	'pf1disableshootingmodes' => { 92 => 0x2 },
      +	'pf1value' => { 91 => 0x1 },
      +	'pf20limitcontinousshots' => { 92 => 0x15 },
      +	'pf20maxcontinousshots' => { 91 => 0xb },
      +	'pf21enablequietoperation' => { 92 => 0x16 },
      +	'pf23felocktime' => { 91 => 0xd },
      +	'pf23postreleasetime' => { 91 => 0xe },
      +	'pf23settimerlengths' => { 92 => 0x18 },
      +	'pf23shutterbuttontime' => { 91 => 0xc },
      +	'pf24lightlcdduringbulb' => { 92 => 0x19 },
      +	'pf25aemode' => { 91 => 0xf },
      +	'pf25afmode' => { 91 => 0x12 },
      +	'pf25afpointsel' => { 91 => 0x13 },
      +	'pf25colormatrix' => { 91 => 0x17 },
      +	'pf25defaultclearsettings' => { 92 => 0x1a },
      +	'pf25drivemode' => { 91 => 0x11 },
      +	'pf25imagesize' => { 91 => 0x14 },
      +	'pf25meteringmode' => { 91 => 0x10 },
      +	'pf25parameters' => { 91 => 0x16 },
      +	'pf25wbmode' => { 91 => 0x15 },
      +	'pf26shortenreleaselag' => { 92 => 0x1b },
      +	'pf27reversedialrotation' => { 92 => 0x1c },
      +	'pf27value' => { 91 => 0x18 },
      +	'pf28noquickdialexpcomp' => { 92 => 0x1d },
      +	'pf29quickdialswitchoff' => { 92 => 0x1e },
      +	'pf2disablemeteringmodes' => { 92 => 0x3 },
      +	'pf2value' => { 91 => 0x2 },
      +	'pf30enlargementmode' => { 92 => 0x1f },
      +	'pf31originaldecisiondata' => { 92 => 0x20 },
      +	'pf3manualexposuremetering' => { 92 => 0x4 },
      +	'pf3value' => { 91 => 0x3 },
      +	'pf4exposuretimelimits' => { 92 => 0x5 },
      +	'pf4exposuretimemax' => { 91 => 0x5 },
      +	'pf4exposuretimemin' => { 91 => 0x4 },
      +	'pf5aperturelimits' => { 92 => 0x6 },
      +	'pf5aperturemax' => { 91 => 0x7 },
      +	'pf5aperturemin' => { 91 => 0x6 },
      +	'pf6presetshootingmodes' => { 92 => 0x7 },
      +	'pf7bracketcontinuousshoot' => { 92 => 0x8 },
      +	'pf8bracketshots' => { 91 => 0x8 },
      +	'pf8setbracketshots' => { 92 => 0x9 },
      +	'pf9changebracketsequence' => { 92 => 0xa },
      +	'phasedetectaf' => { 193 => 0x6 },
      +	'phonenumber' => { 157 => 'Phone' },
       	'photoeffect' => { 34 => 0x28 },
      -	'photoeffecthistoryxml' => { 259 => 0xe9651831 },
      -	'photoeffects' => { 259 => 0xab5eca5e },
      -	'photoeffectsblue' => { 261 => 0x8 },
      -	'photoeffectsgreen' => { 261 => 0x6 },
      -	'photoeffectsred' => { 261 => 0x4 },
      -	'photoeffectstype' => { 261 => 0x0 },
      -	'photographicsensitivity' => { 469 => 'PhotographicSensitivity' },
      -	'photoinfoplayback' => { 266 => '17.6', 275 => '33.6' },
      -	'photometricinterpretation' => { 116 => 0x106, 484 => 'PhotometricInterpretation' },
      -	'photoshootingmenubank' => { 238 => 0xe7d, 247 => 0xfbd },
      -	'photoshootingmenubankimagearea' => { 238 => '3716.1', 247 => 0x791 },
      -	'photoshopbgrthumbnail' => { 355 => 0x409 },
      -	'photoshopquality' => { 354 => 0x0 },
      -	'photoshopthumbnail' => { 355 => 0x40c },
      -	'photostyle' => { 306 => 0x89 },
      -	'picklabel' => { 467 => 'PickLabel' },
      -	'pictinfo' => { 382 => 0x208 },
      -	'picturecontrol' => { 259 => 0xe2173c47 },
      -	'picturecontrolactive' => { 262 => 0x0 },
      -	'picturecontroladjust' => { 221 => 0x30, 222 => 0x30, 223 => 0x36 },
      -	'picturecontrolbase' => { 221 => 0x18, 222 => 0x18, 223 => 0x1c },
      -	'picturecontroldata' => { 219 => [0xbd,0x23] },
      -	'picturecontrolmode' => { 262 => 0x13 },
      -	'picturecontrolname' => { 221 => 0x4, 222 => 0x4, 223 => 0x8 },
      -	'picturecontrolquickadjust' => { 221 => 0x31, 222 => 0x31, 223 => 0x37 },
      -	'pictureeffect' => { 406 => 0x200e },
      -	'pictureeffect2' => { 414 => 0x1163, 415 => 0x1167, 416 => 0x1143, 417 => 0x11bf, 418 => 0x119b, 419 => 0x1053, 420 => 0x24b, 421 => 0x24b, 422 => 0x23c, 435 => 0x46 },
      -	'picturefinish' => { 177 => 0x71 },
      -	'picturemode' => { 124 => 0x1031, 283 => 0x520, 341 => [0xb,0x33], 383 => 0x3d },
      -	'picturemode2' => { 322 => 0x0 },
      -	'picturemodebwfilter' => { 283 => 0x525 },
      -	'picturemodecontrast' => { 283 => 0x523 },
      -	'picturemodeeffect' => { 283 => 0x52d },
      -	'picturemodehue' => { 283 => 0x522 },
      -	'picturemodesaturation' => { 283 => 0x521 },
      -	'picturemodesharpness' => { 283 => 0x524 },
      -	'picturemodetone' => { 283 => 0x526 },
      -	'pictureprofile' => { 414 => [0x115e,0x115f], 415 => [0x1162,0x1163], 416 => [0x113e,0x113f], 417 => [0x11ba,0x11bb], 418 => [0x1196,0x1197], 419 => [0x104e,0x104f], 420 => [0x246,0x247], 421 => [0x246,0x247], 422 => [0x237,0x238] },
      -	'picturestyle' => { 8 => [0x4b,0x51], 9 => 0xf4, 10 => 0x6c, 11 => 0x86, 12 => 0x73, 16 => 0xab, 17 => 0xa7, 18 => 0xb0, 19 => 0x6c, 20 => 0xa7, 21 => 0xf4, 22 => 0xb3, 24 => 0xf4, 25 => 0xfa, 27 => 0x169, 71 => 0xa, 100 => 0x20301, 106 => 0x2 },
      -	'picturestylepc' => { 61 => 0x4009 },
      -	'picturestyleuserdef' => { 61 => 0x4008 },
      -	'picturewizard' => { 380 => 0x21 },
      -	'picturewizardcolor' => { 379 => 0x1 },
      -	'picturewizardcontrast' => { 379 => 0x4 },
      -	'picturewizardmode' => { 379 => 0x0 },
      -	'picturewizardsaturation' => { 379 => 0x2 },
      -	'picturewizardsharpness' => { 379 => 0x3 },
      -	'pipelineversion' => { 172 => 'PipelineVersion' },
      -	'pitch' => { 112 => 0x6, 267 => '4.1', 279 => '4.1', 366 => ['ptch',"\xa9fpt"] },
      -	'pitchangle' => { 237 => 0x350f, 238 => 0x2c28, 246 => 0x36f8, 283 => 0x904, 306 => 0x91, 340 => 0x2, 378 => 0x1 },
      -	'pitchshift' => { 360 => 'player.movie.audio.pitchshift' },
      -	'pixelaspectratio' => { 359 => 'pasp' },
      -	'pixelclockfrequency' => { 134 => 0x40b },
      -	'pixelcorrectionoffset' => { 134 => 0x972 },
      -	'pixelcorrectionscale' => { 134 => 0x971 },
      -	'pixelscale' => { 116 => 0x830e },
      -	'pixelshiftinfo' => { 406 => 0x202f },
      -	'pixelshiftresolution' => { 342 => 0x0 },
      -	'pixelsperunitx' => { 295 => 0x0 },
      -	'pixelsperunity' => { 295 => 0x4 },
      -	'pixelunits' => { 295 => 0x8 },
      -	'planarconfiguration' => { 116 => 0x11c, 484 => 'PlanarConfiguration' },
      -	'plane' => { 442 => [\'Planes','PlanesPlane'] },
      -	'planeboundary' => { 442 => [\'Planes','PlanesPlaneBoundary'] },
      -	'planeboundaryvertexcount' => { 442 => [\'Planes','PlanesPlaneBoundaryVertexCount'] },
      -	'planeextentx' => { 442 => [\'Planes','PlanesPlaneExtentX'] },
      -	'planeextentz' => { 442 => [\'Planes','PlanesPlaneExtentZ'] },
      -	'planepose' => { 442 => [\'Planes','PlanesPlanePose'] },
      -	'planeposepositionx' => { 442 => [\'Planes','PlanesPlanePosePositionX'] },
      -	'planeposepositiony' => { 442 => [\'Planes','PlanesPlanePosePositionY'] },
      -	'planeposepositionz' => { 442 => [\'Planes','PlanesPlanePosePositionZ'] },
      -	'planeposerotationw' => { 442 => [\'Planes','PlanesPlanePoseRotationW'] },
      -	'planeposerotationx' => { 442 => [\'Planes','PlanesPlanePoseRotationX'] },
      -	'planeposerotationy' => { 442 => [\'Planes','PlanesPlanePoseRotationY'] },
      -	'planeposerotationz' => { 442 => [\'Planes','PlanesPlanePoseRotationZ'] },
      -	'planeposetimestamp' => { 442 => [\'Planes','PlanesPlanePoseTimestamp'] },
      -	'planes' => { 442 => 'Planes' },
      -	'planningref' => { 474 => 'PlanningRef' },
      -	'planningrefidentifier' => { 474 => [\'PlanningRef','PlanningRefIdentifier'] },
      -	'planningrefname' => { 474 => [\'PlanningRef','PlanningRefName'] },
      -	'planningrefrole' => { 474 => [\'PlanningRef','PlanningRefRole'] },
      -	'platenames' => { 493 => 'PlateNames' },
      -	'platform' => { 478 => 'platform' },
      -	'playallframes' => { 366 => 'AllF' },
      -	'playbackmenustime' => { 271 => '20.1', 272 => '21.1', 273 => '21.1' },
      -	'playbackmonitorofftime' => { 266 => '25.2', 267 => '36.1', 269 => '36.1', 270 => '36.1', 274 => '35.1', 275 => '8.1', 276 => '35.1', 279 => '36.1', 280 => '36.1', 281 => '21.1' },
      -	'playbackzoom' => { 267 => '37.1' },
      -	'playdisplay' => { 179 => 0x4e },
      -	'playerversion' => { 360 => 'player.version' },
      -	'playgap' => { 358 => 'pgap' },
      -	'playlistid' => { 358 => 'plID' },
      -	'playmode' => { 366 => 'SDLN' },
      -	'playselection' => { 366 => 'SelO' },
      -	'plusversion' => { 293 => 'Version' },
      -	'pmversion' => { 353 => 'PMVersion' },
      -	'pngwarning' => { 296 => 'Warning' },
      -	'podcast' => { 358 => 'pcst' },
      -	'podcasturl' => { 358 => 'purl' },
      -	'poilevel' => { 218 => 0x8 },
      -	'portraitnote' => { 445 => 'PortraitNote' },
      -	'portraitoutputhighlightpoint' => { 106 => 0x1d },
      -	'portraitoutputshadowpoint' => { 106 => 0x1e },
      -	'portraitrawcolortone' => { 106 => 0x16 },
      -	'portraitrawcontrast' => { 106 => 0x18 },
      -	'portraitrawhighlight' => { 106 => 0x76 },
      -	'portraitrawhighlightpoint' => { 106 => 0x1b },
      -	'portraitrawlinear' => { 106 => 0x19 },
      -	'portraitrawsaturation' => { 106 => 0x17 },
      -	'portraitrawshadow' => { 106 => 0x7f },
      -	'portraitrawshadowpoint' => { 106 => 0x1c },
      -	'portraitrawsharpness' => { 106 => 0x1a },
      -	'portraitrefiner' => { 110 => 0x302b },
      -	'portraitrequest' => { 445 => 'PortraitRequest' },
      -	'portraitunsharpmaskfineness' => { 106 => 0x9a },
      -	'portraitunsharpmaskstrength' => { 106 => 0x98 },
      -	'portraitunsharpmaskthreshold' => { 106 => 0x9c },
      -	'portraitversion' => { 445 => 'PortraitVersion' },
      -	'pose' => { 442 => 'Pose' },
      -	'poseheadingdegrees' => { 450 => 'PoseHeadingDegrees' },
      -	'posepitchdegrees' => { 450 => 'PosePitchDegrees' },
      -	'posepositionx' => { 442 => [\'Pose','PosePositionX'] },
      -	'posepositiony' => { 442 => [\'Pose','PosePositionY'] },
      -	'posepositionz' => { 442 => [\'Pose','PosePositionZ'] },
      -	'poserolldegrees' => { 450 => 'PoseRollDegrees' },
      -	'poserotationw' => { 442 => [\'Pose','PoseRotationW'] },
      -	'poserotationx' => { 442 => [\'Pose','PoseRotationX'] },
      -	'poserotationy' => { 442 => [\'Pose','PoseRotationY'] },
      -	'poserotationz' => { 442 => [\'Pose','PoseRotationZ'] },
      -	'posetimestamp' => { 442 => [\'Pose','PoseTimestamp'] },
      -	'positiondescriptor' => { 477 => 'positionDescriptor' },
      -	'postalcode' => { 157 => 'PostalCode' },
      -	'postcropvignetteamount' => { 462 => 'PostCropVignetteAmount', 464 => 'PostCropVignetteAmount' },
      -	'postcropvignettefeather' => { 462 => 'PostCropVignetteFeather', 464 => 'PostCropVignetteFeather' },
      -	'postcropvignettehighlightcontrast' => { 462 => 'PostCropVignetteHighlightContrast', 464 => 'PostCropVignetteHighlightContrast' },
      -	'postcropvignettemidpoint' => { 462 => 'PostCropVignetteMidpoint', 464 => 'PostCropVignetteMidpoint' },
      -	'postcropvignetteroundness' => { 462 => 'PostCropVignetteRoundness', 464 => 'PostCropVignetteRoundness' },
      -	'postcropvignettestyle' => { 462 => 'PostCropVignetteStyle', 464 => 'PostCropVignetteStyle' },
      -	'potentialface1position' => { 403 => 0xb },
      -	'potentialface2position' => { 403 => 0x15 },
      -	'potentialface3position' => { 403 => 0x1f },
      -	'potentialface4position' => { 403 => 0x29 },
      -	'potentialface5position' => { 403 => 0x33 },
      -	'potentialface6position' => { 403 => 0x3d },
      -	'potentialface7position' => { 403 => 0x47 },
      -	'potentialface8position' => { 403 => 0x51 },
      -	'powersource' => { 320 => '0.1' },
      -	'poweruptime' => { 219 => 0xb6 },
      -	'precaptureframes' => { 288 => 0x300 },
      -	'predictor' => { 116 => 0x13d },
      -	'preflashreturnstrength' => { 235 => 0x28a },
      -	'prefs' => { 128 => 0xdd, 353 => 'Prefs' },
      -	'prereadfastresetcount' => { 134 => 0x187e },
      -	'preservedfilename' => { 489 => 'PreservedFileName' },
      -	'preservedspecimen' => { 115 => 'PreservedSpecimen' },
      -	'preservedspecimenmaterialsampleid' => { 115 => [\'PreservedSpecimen','PreservedSpecimenMaterialSampleID'] },
      -	'presetwhitebalance' => { 179 => 0x24, 439 => 0x8002 },
      -	'presetwhitebalanceadj' => { 439 => 0x8014 },
      -	'pressure' => { 116 => 0x9402, 469 => 'Pressure' },
      -	'previewapplicationname' => { 116 => 0xc716 },
      -	'previewapplicationversion' => { 116 => 0xc717 },
      -	'previewbutton' => { 266 => ['14.1','15.1'], 267 => '15.1', 269 => '15.1', 270 => '15.1', 275 => '29.1', 276 => '14.1', 279 => '15.1', 280 => '15.1' },
      -	'previewbuttonplusdials' => { 266 => ['14.2','15.2'], 267 => '15.2', 269 => '43.1', 270 => '43.1', 275 => '31.2', 279 => '43.1', 280 => '43.1' },
      -	'previewcolorspace' => { 116 => 0xc71a },
      -	'previewcropbottom' => { 352 => 0xef },
      -	'previewcropleft' => { 352 => 0xec },
      -	'previewcropright' => { 352 => 0xee },
      -	'previewcroptop' => { 352 => 0xed },
      -	'previewdate' => { 364 => 0x0 },
      -	'previewdatetime' => { 116 => 0xc71b },
      -	'previewimage' => { 110 => 0x2000, 111 => 'Exif::PreviewImage', 117 => 'PreviewImage', 119 => 0x4, 162 => 'data', 181 => 0x81, 288 => 0x280, 304 => 0x300, 406 => 0x2001 },
      -	'previewimageborders' => { 341 => 0x3e },
      -	'previewimageheight' => { 70 => 0x4, 138 => 0xfa58 },
      -	'previewimagelength' => { 70 => 0x2, 110 => 0x3, 116 => [0x117,0x202], 181 => 0x89, 224 => 0x202, 283 => 0x102, 288 => 0x1037, 341 => 0x3, 372 => 0x1e, 377 => 0x3, 383 => [0x1b,0x1d], 396 => 0x202 },
      -	'previewimagename' => { 162 => '1Name' },
      -	'previewimagesize' => { 110 => 0x2, 143 => 0x2, 162 => 'ImageSize', 341 => 0x2, 383 => [0x1c,0x1e], 406 => 0xb02c, 439 => 0x9012 },
      -	'previewimagestart' => { 70 => 0x5, 110 => 0x4, 116 => [0x111,0x201], 181 => 0x88, 224 => 0x201, 283 => 0x101, 288 => 0x1036, 341 => 0x4, 372 => 0x1c, 377 => 0x2, 383 => [0x1a,0x1c], 396 => 0x201 },
      -	'previewimagetype' => { 162 => '0Type' },
      -	'previewimagevalid' => { 283 => 0x100, 288 => 0x1035 },
      -	'previewimagewidth' => { 70 => 0x3, 138 => 0xfa57 },
      -	'previewquality' => { 70 => 0x1 },
      -	'previewsettingsdigest' => { 116 => 0xc719 },
      -	'previewsettingsname' => { 116 => 0xc718 },
      -	'primaryafpoint' => { 188 => [0x44,0x7] },
      -	'primarychromaticities' => { 116 => 0x13f, 484 => 'PrimaryChromaticities' },
      -	'primaryftp' => { 452 => 'PrimaryFTP' },
      -	'primaryslot' => { 238 => 0xe7f, 247 => 0xfbf },
      -	'printim' => { 116 => 0xc4a5 },
      -	'prioritysetinawb' => { 406 => 0x202b },
      -	'prioritysetupshutterrelease' => { 179 => 0x1d, 393 => 0x28 },
      -	'privatertkinfo' => { 454 => 'privateRTKInfo' },
      -	'processbordercolsleft' => { 134 => 0xc61 },
      -	'processbordercolsright' => { 134 => 0xc62 },
      -	'processborderrowsbottom' => { 134 => 0xc64 },
      -	'processborderrowstop' => { 134 => 0xc63 },
      -	'processingsoftware' => { 116 => 0xb },
      -	'processversion' => { 462 => 'ProcessVersion', 464 => 'ProcessVersion' },
      -	'producer' => { 292 => 'Producer', 360 => 'producer', 366 => "\xa9prd", 475 => 'Producer' },
      -	'producerkeywords' => { 366 => "\xa9pdk" },
      -	'productcode' => { 478 => 'productCode' },
      -	'productid' => { 129 => 0x32, 358 => 'prID', 477 => 'productID' },
      -	'productidtype' => { 477 => 'productIDType' },
      -	'productinimage' => { 474 => 'ProductInImage' },
      -	'productinimagedescription' => { 474 => [\'ProductInImage','ProductInImageProductDescription'] },
      -	'productinimagegtin' => { 474 => [\'ProductInImage','ProductInImageProductGTIN'] },
      -	'productinimagename' => { 474 => [\'ProductInImage','ProductInImageProductName'] },
      -	'productioncode' => { 321 => 0x2 },
      -	'productorserviceconstraints' => { 293 => 'ProductOrServiceConstraints' },
      -	'productversion' => { 358 => 'VERS' },
      -	'profession' => { 478 => 'profession' },
      -	'profile' => { 442 => [\'Profiles','ProfilesProfile'] },
      -	'profilecalibrationsig' => { 116 => 0xc6f4 },
      -	'profilecameraindices' => { 442 => [\'Profiles','ProfilesProfileCameraIndices'] },
      -	'profilecopyright' => { 116 => 0xc6fe },
      -	'profileembedpolicy' => { 116 => 0xc6fd },
      -	'profilehuesatmapdata1' => { 116 => 0xc6fa },
      -	'profilehuesatmapdata2' => { 116 => 0xc6fb },
      -	'profilehuesatmapdims' => { 116 => 0xc6f9 },
      -	'profilehuesatmapencoding' => { 116 => 0xc7a3 },
      -	'profilelooktabledata' => { 116 => 0xc726 },
      -	'profilelooktabledims' => { 116 => 0xc725 },
      -	'profilelooktableencoding' => { 116 => 0xc7a4 },
      -	'profilename' => { 116 => 0xc6f8 },
      -	'profiles' => { 442 => 'Profiles' },
      -	'profiletonecurve' => { 116 => 0xc6fc },
      -	'profiletype' => { 442 => [\'Profiles','ProfilesProfileType'] },
      -	'programiso' => { 306 => 0x3c },
      -	'programline' => { 322 => '1.1' },
      -	'programmode' => { 184 => 0x5 },
      -	'programshift' => { 219 => 0xd },
      -	'programversion' => { 128 => 0x46 },
      -	'prohibits' => { 460 => 'prohibits' },
      -	'projectiontype' => { 450 => 'ProjectionType', 451 => 'ProjectionType' },
      -	'projectname' => { 488 => 'projectName' },
      -	'projectref' => { 488 => 'projectRef' },
      -	'projectrefpath' => { 488 => [\'projectRef','projectRefPath'] },
      -	'projectreftype' => { 488 => [\'projectRef','projectRefType'] },
      -	'propertyreleaseid' => { 293 => 'PropertyReleaseID' },
      -	'propertyreleasestatus' => { 293 => 'PropertyReleaseStatus' },
      -	'province-state' => { 128 => 0x5f },
      -	'publicationdate' => { 478 => 'publicationDate' },
      -	'publicationdatea-platform' => { 478 => [\'publicationDate','publicationDateA-platform'] },
      -	'publicationdatedate' => { 478 => [\'publicationDate','publicationDateDate'] },
      -	'publicationdisplaydate' => { 478 => 'publicationDisplayDate' },
      -	'publicationdisplaydatea-platform' => { 478 => [\'publicationDisplayDate','publicationDisplayDateA-platform'] },
      -	'publicationdisplaydatedate' => { 478 => [\'publicationDisplayDate','publicationDisplayDateDate'] },
      -	'publicationevent' => { 474 => 'PublicationEvent' },
      -	'publicationeventdate' => { 474 => [\'PublicationEvent','PublicationEventDate'] },
      -	'publicationeventidentifier' => { 474 => [\'PublicationEvent','PublicationEventIdentifier'] },
      -	'publicationeventname' => { 474 => [\'PublicationEvent','PublicationEventName'] },
      -	'publicationname' => { 478 => 'publicationName' },
      -	'publisher' => { 358 => "\xa9pub", 360 => 'publisher', 465 => 'publisher' },
      -	'publishingfrequency' => { 478 => 'publishingFrequency' },
      -	'pulldown' => { 488 => 'pullDown' },
      -	'purchasedate' => { 358 => 'purd' },
      -	'purplehsl' => { 100 => 0x20916 },
      -	'pxshiftperiphedgenr' => { 439 => 0x9013 },
      -	'pxshiftperiphedgenrvalue' => { 439 => 0x9014 },
      -	'quality' => { 0 => 0x1, 34 => 0x3, 109 => 0x2, 110 => 0x3002, 124 => 0x1000, 136 => 0x9, 219 => 0x4, 249 => 0x3, 288 => 0x201, 301 => 0x300, 341 => 0x8, 348 => 0x2, 383 => 0x16, 393 => 0x56, 394 => 0x56, 395 => 0xb, 406 => [0x102,0x202e] },
      -	'quality2' => { 414 => 0x1170, 415 => 0x1174, 416 => 0x1150, 418 => 0x11a8, 419 => 0x1060, 420 => 0x258, 421 => 0x258, 422 => 0x247, 426 => 0x29, 427 => 0x25, 428 => 0x2a },
      -	'qualitymode' => { 110 => 0x8 },
      -	'quantizationmethod' => { 130 => 0x78 },
      -	'quickadjust' => { 262 => 0x2a },
      -	'quickcontroldialinmeter' => { 81 => 0x703 },
      -	'quickfix' => { 259 => 0x416391c6 },
      -	'quickshot' => { 382 => 0x213 },
      -	'quiettime' => { 134 => 0x188a },
      -	'rads' => { 366 => 'rads' },
      -	'rangefinder' => { 271 => '4.1', 272 => '5.1', 273 => '5.1' },
      -	'rasterizedcaption' => { 128 => 0x7d },
      -	'rating' => { 116 => 0x4746, 124 => 0x1431, 352 => 0xdf, 358 => 'rtng', 406 => 0x2002, 457 => 'rating', 466 => 'rating', 474 => 'Rating', 478 => 'rating', 486 => 'Rating' },
      -	'ratingpercent' => { 116 => 0x4749, 174 => 'Rating', 358 => 'rate' },
      -	'ratingregion' => { 474 => [\'Rating','RatingRatingRegion'] },
      -	'ratingregioncity' => { 474 => [\'Rating','RatingRatingRegionCity'] },
      -	'ratingregioncountrycode' => { 474 => [\'Rating','RatingRatingRegionCountryCode'] },
      -	'ratingregioncountryname' => { 474 => [\'Rating','RatingRatingRegionCountryName'] },
      -	'ratingregiongpsaltitude' => { 474 => [\'Rating','RatingRatingRegionGPSAltitude'] },
      -	'ratingregiongpslatitude' => { 474 => [\'Rating','RatingRatingRegionGPSLatitude'] },
      -	'ratingregiongpslongitude' => { 474 => [\'Rating','RatingRatingRegionGPSLongitude'] },
      -	'ratingregionidentifier' => { 474 => [\'Rating','RatingRatingRegionIdentifier'] },
      -	'ratingregionlocationid' => { 474 => [\'Rating','RatingRatingRegionLocationId'] },
      -	'ratingregionlocationname' => { 474 => [\'Rating','RatingRatingRegionLocationName'] },
      -	'ratingregionprovincestate' => { 474 => [\'Rating','RatingRatingRegionProvinceState'] },
      -	'ratingregionsublocation' => { 474 => [\'Rating','RatingRatingRegionSublocation'] },
      -	'ratingregionworldregion' => { 474 => [\'Rating','RatingRatingRegionWorldRegion'] },
      -	'ratingscalemaxvalue' => { 474 => [\'Rating','RatingRatingScaleMaxValue'] },
      -	'ratingscaleminvalue' => { 474 => [\'Rating','RatingRatingScaleMinValue'] },
      -	'ratingsourcelink' => { 474 => [\'Rating','RatingRatingSourceLink'] },
      -	'ratingvalue' => { 474 => [\'Rating','RatingRatingValue'] },
      -	'ratingvaluelogolink' => { 474 => [\'Rating','RatingRatingValueLogoLink'] },
      -	'rawandjpgrecording' => { 79 => 0x8, 181 => 0x109, 322 => 0xd },
      -	'rawbrightnessadj' => { 100 => 0x20001, 105 => 0x38 },
      -	'rawburstimagecount' => { 72 => 0x2 },
      -	'rawburstimagenum' => { 72 => 0x1 },
      -	'rawcoloradj' => { 105 => 0x2e },
      -	'rawcropbottom' => { 352 => 0xd4 },
      -	'rawcropleft' => { 352 => 0xd1 },
      -	'rawcropright' => { 352 => 0xd3 },
      -	'rawcroptop' => { 352 => 0xd2 },
      -	'rawcustomsaturation' => { 105 => 0x30 },
      -	'rawcustomtone' => { 105 => 0x34 },
      -	'rawdata' => { 380 => 0xa048 },
      -	'rawdatabyteorder' => { 380 => 0x40 },
      -	'rawdatacfapattern' => { 380 => 0x50 },
      -	'rawdatauniqueid' => { 116 => 0xc65d },
      -	'rawdepth' => { 183 => 0x10 },
      -	'rawdevartfilter' => { 290 => 0x121 },
      -	'rawdevautogradation' => { 290 => 0x119 },
      -	'rawdevcolorspace' => { 289 => 0x108, 290 => 0x109 },
      -	'rawdevcontrastvalue' => { 289 => 0x106, 290 => 0x105 },
      -	'rawdeveditstatus' => { 289 => 0x10b },
      -	'rawdevelopmentprocess' => { 341 => 0x62 },
      -	'rawdevengine' => { 289 => 0x109, 290 => 0x10b },
      -	'rawdevexposurebiasvalue' => { 289 => 0x100, 290 => 0x100 },
      -	'rawdevgradation' => { 290 => 0x112 },
      -	'rawdevgraypoint' => { 289 => 0x103, 290 => 0x104 },
      -	'rawdevmemorycoloremphasis' => { 289 => 0x105, 290 => 0x108 },
      -	'rawdevnoisereduction' => { 289 => 0x10a, 290 => 0x10a },
      -	'rawdevpicturemode' => { 290 => 0x10c },
      -	'rawdevpm_bwfilter' => { 290 => 0x110 },
      -	'rawdevpmcontrast' => { 290 => 0x10e },
      -	'rawdevpmnoisefilter' => { 290 => 0x120 },
      -	'rawdevpmpicturetone' => { 290 => 0x111 },
      -	'rawdevpmsaturation' => { 290 => 0x10d },
      -	'rawdevpmsharpness' => { 290 => 0x10f },
      -	'rawdevsaturation3' => { 290 => 0x113 },
      -	'rawdevsaturationemphasis' => { 289 => 0x104, 290 => 0x107 },
      -	'rawdevsettings' => { 289 => 0x10c },
      -	'rawdevsharpnessvalue' => { 289 => 0x107, 290 => 0x106 },
      -	'rawdevversion' => { 289 => 0x0, 290 => 0x0 },
      -	'rawdevwbfineadjustment' => { 289 => 0x102, 290 => 0x103 },
      -	'rawdevwhitebalance' => { 290 => 0x101 },
      -	'rawdevwhitebalancevalue' => { 289 => 0x101, 290 => 0x102 },
      -	'rawfile' => { 116 => 0xfe4c },
      -	'rawfilename' => { 462 => 'RawFileName', 464 => 'RawFileName' },
      -	'rawfiletype' => { 406 => 0x2029 },
      -	'rawformat' => { 311 => 0x2d, 350 => 0x10e },
      -	'rawimagecenter' => { 219 => 0x99 },
      -	'rawimagedigest' => { 116 => 0xc71c },
      -	'rawimagesize' => { 341 => 0x39 },
      -	'rawinfoversion' => { 291 => 0x0 },
      -	'rawjpgheight' => { 96 => 0x4 },
      -	'rawjpgquality' => { 55 => 0x6, 96 => 0x1 },
      -	'rawjpgsize' => { 55 => 0x7, 96 => 0x2 },
      -	'rawjpgwidth' => { 96 => 0x3 },
      -	'rawmeasuredrggb' => { 41 => 0x26a, 43 => 0x280, 45 => 0x194, 46 => [0x1ad,0x26b] },
      -	'rawrppused' => { 457 => 'rawrppused' },
      -	'rawtopreviewgain' => { 116 => 0xc7a8 },
      -	'readouttypeactual' => { 134 => 0x1903 },
      -	'readouttyperequested' => { 134 => 0x1902 },
      -	'reardisplay' => { 266 => '12.3', 267 => '6.2' },
      -	'recdevice' => { 474 => 'RecDevice' },
      -	'recdeviceattlensdescription' => { 474 => [\'RecDevice','RecDeviceAttLensDescription'] },
      -	'recdevicemanufacturer' => { 474 => [\'RecDevice','RecDeviceManufacturer'] },
      -	'recdevicemodelname' => { 474 => [\'RecDevice','RecDeviceModelName'] },
      -	'recdeviceownersdeviceid' => { 474 => [\'RecDevice','RecDeviceOwnersDeviceId'] },
      -	'recdeviceserialnumber' => { 474 => [\'RecDevice','RecDeviceSerialNumber'] },
      -	'recipeendingpage' => { 480 => 'recipeEndingPage' },
      -	'recipepagerange' => { 480 => 'recipePageRange' },
      -	'recipesource' => { 480 => 'recipeSource' },
      -	'recipestartingpage' => { 480 => 'recipeStartingPage' },
      -	'recipetitle' => { 480 => 'recipeTitle' },
      -	'recognizedface1age' => { 299 => 0x20 },
      -	'recognizedface1name' => { 299 => 0x4 },
      -	'recognizedface1position' => { 299 => 0x18 },
      -	'recognizedface2age' => { 299 => 0x50 },
      -	'recognizedface2name' => { 299 => 0x34 },
      -	'recognizedface2position' => { 299 => 0x48 },
      -	'recognizedface3age' => { 299 => 0x80 },
      -	'recognizedface3name' => { 299 => 0x64 },
      -	'recognizedface3position' => { 299 => 0x78 },
      -	'recognizedfaceflags' => { 306 => 0x63 },
      -	'recommendedexposureindex' => { 116 => 0x8832, 469 => 'RecommendedExposureIndex' },
      -	'record' => { 115 => 'Record' },
      -	'recordbasisofrecord' => { 115 => [\'Record','RecordBasisOfRecord'] },
      -	'recordcollectioncode' => { 115 => [\'Record','RecordCollectionCode'] },
      -	'recordcollectionid' => { 115 => [\'Record','RecordCollectionID'] },
      -	'recorddatageneralizations' => { 115 => [\'Record','RecordDataGeneralizations'] },
      -	'recorddatasetid' => { 115 => [\'Record','RecordDatasetID'] },
      -	'recorddatasetname' => { 115 => [\'Record','RecordDatasetName'] },
      -	'recorddisplay' => { 179 => 0x4d },
      -	'recorddynamicproperties' => { 115 => [\'Record','RecordDynamicProperties'] },
      -	'recordid' => { 94 => 0x1804 },
      -	'recordinformationwithheld' => { 115 => [\'Record','RecordInformationWithheld'] },
      -	'recordingcopyright' => { 366 => "\xa9phg" },
      -	'recordingformat' => { 373 => 0x1000 },
      -	'recordingmode' => { 109 => 0x1, 348 => 0x1 },
      -	'recordinstitutioncode' => { 115 => [\'Record','RecordInstitutionCode'] },
      -	'recordinstitutionid' => { 115 => [\'Record','RecordInstitutionID'] },
      -	'recordlabelname' => { 366 => "\xa9lab" },
      -	'recordlabelurl' => { 366 => "\xa9lal" },
      -	'recordmode' => { 34 => 0x9, 110 => 0x3000 },
      -	'recordownerinstitutioncode' => { 115 => [\'Record','RecordOwnerInstitutionCode'] },
      -	'recordshutterrelease' => { 382 => 0x217 },
      -	'redbalance' => { 288 => 0x1017, 311 => 0x11, 341 => 0x1c },
      -	'redcurvelimits' => { 105 => 0x18a },
      -	'redcurvepoints' => { 104 => 0x2d, 105 => 0x160 },
      -	'redeyecorrection' => { 263 => 0x0 },
      -	'redeyeinfo' => { 462 => 'RedEyeInfo', 464 => 'RedEyeInfo' },
      -	'redeyereduction' => { 179 => 0x41, 393 => 0x6a, 395 => 0x28 },
      -	'redeyeremoval' => { 306 => 0xb9 },
      -	'redhsl' => { 100 => 0x20910 },
      -	'redhue' => { 462 => 'RedHue', 464 => 'RedHue' },
      -	'redsaturation' => { 462 => 'RedSaturation', 464 => 'RedSaturation' },
      -	'reductionmatrix1' => { 116 => 0xc625 },
      -	'reductionmatrix2' => { 116 => 0xc626 },
      -	'reelname' => { 116 => 0xc789, 366 => 'reel' },
      -	'reference1' => { 472 => [\'TagStructure','TagStructureReference'] },
      -	'reference2' => { 472 => [\'TagStructure','TagStructureSubLabelsReference'] },
      -	'reference3' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsReference'] },
      -	'reference4' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsReference'] },
      -	'reference5' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
      -	'reference6' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
      -	'referenceblackwhite' => { 116 => 0x214, 484 => 'ReferenceBlackWhite' },
      -	'referencedate' => { 128 => 0x2f },
      -	'referencenumber' => { 128 => 0x32 },
      -	'references' => { 153 => 'References' },
      -	'referenceservice' => { 128 => 0x2d },
      -	'regionappliedtodimensions' => { 168 => [\'Regions','RegionsAppliedToDimensions'] },
      -	'regionappliedtodimensionsh' => { 168 => [\'Regions','RegionsAppliedToDimensionsH'] },
      -	'regionappliedtodimensionsunit' => { 168 => [\'Regions','RegionsAppliedToDimensionsUnit'] },
      -	'regionappliedtodimensionsw' => { 168 => [\'Regions','RegionsAppliedToDimensionsW'] },
      -	'regionarea' => { 168 => [\'Regions','RegionsRegionListArea'] },
      -	'regionaread' => { 168 => [\'Regions','RegionsRegionListAreaD'] },
      -	'regionareah' => { 168 => [\'Regions','RegionsRegionListAreaH'] },
      -	'regionareaunit' => { 168 => [\'Regions','RegionsRegionListAreaUnit'] },
      -	'regionareaw' => { 168 => [\'Regions','RegionsRegionListAreaW'] },
      -	'regionareax' => { 168 => [\'Regions','RegionsRegionListAreaX'] },
      -	'regionareay' => { 168 => [\'Regions','RegionsRegionListAreaY'] },
      -	'regionbarcodevalue' => { 168 => [\'Regions','RegionsRegionListBarCodeValue'] },
      -	'regionconstraints' => { 293 => 'RegionConstraints' },
      -	'regiondescription' => { 168 => [\'Regions','RegionsRegionListDescription'] },
      -	'regionextensions' => { 168 => [\'Regions','RegionsRegionListExtensions'] },
      -	'regionfocususage' => { 168 => [\'Regions','RegionsRegionListFocusUsage'] },
      -	'regioninfo' => { 168 => 'Regions' },
      -	'regioninfodateregionsvalid' => { 171 => [\'RegionInfo','RegionInfoDateRegionsValid'] },
      -	'regioninfomp' => { 171 => 'RegionInfo' },
      -	'regioninforegions' => { 171 => [\'RegionInfo','RegionInfoRegions'] },
      -	'regionlist' => { 168 => [\'Regions','RegionsRegionList'] },
      -	'regionname' => { 168 => [\'Regions','RegionsRegionListName'] },
      -	'regionpersondisplayname' => { 171 => [\'RegionInfo','RegionInfoRegionsPersonDisplayName'] },
      -	'regionpersonemaildigest' => { 171 => [\'RegionInfo','RegionInfoRegionsPersonEmailDigest'] },
      -	'regionpersonliveidcid' => { 171 => [\'RegionInfo','RegionInfoRegionsPersonLiveIdCID'] },
      -	'regionpersonsourceid' => { 171 => [\'RegionInfo','RegionInfoRegionsPersonSourceID'] },
      -	'regionrectangle' => { 171 => [\'RegionInfo','RegionInfoRegionsRectangle'] },
      -	'regionrotation' => { 168 => [\'Regions','RegionsRegionListRotation'] },
      -	'regionseealso' => { 168 => [\'Regions','RegionsRegionListSeeAlso'] },
      -	'regiontype' => { 168 => [\'Regions','RegionsRegionListType'] },
      -	'registryentryrole' => { 474 => [\'RegistryId','RegistryIdRegEntryRole'] },
      -	'registryid' => { 474 => 'RegistryId' },
      -	'registryitemid' => { 474 => [\'RegistryId','RegistryIdRegItemId'] },
      -	'registryorganisationid' => { 474 => [\'RegistryId','RegistryIdRegOrgId'] },
      -	'relatedaudiofile' => { 151 => 'data' },
      -	'relatedaudiofilename' => { 151 => '1Name' },
      -	'relatedaudiofiletype' => { 151 => '0Type' },
      -	'relatedimagefileformat' => { 116 => 0x1000 },
      -	'relatedimageheight' => { 116 => 0x1002 },
      -	'relatedimagewidth' => { 116 => 0x1001 },
      -	'relatedresourceid' => { 115 => [\'ResourceRelationship','ResourceRelationshipRelatedResourceID'] },
      -	'relatedsoundfile' => { 116 => 0xa004, 468 => 'RelatedSoundFile' },
      -	'relatedvideofile' => { 165 => 'data' },
      -	'relatedvideofilename' => { 165 => '1Name' },
      -	'relatedvideofiletype' => { 165 => '0Type' },
      -	'relation' => { 465 => 'relation' },
      -	'relationshipaccordingto' => { 115 => [\'ResourceRelationship','ResourceRelationshipRelationshipAccordingTo'] },
      -	'relationshipestablisheddate' => { 115 => [\'ResourceRelationship','ResourceRelationshipRelationshipEstablishedDate'] },
      -	'relationshipofresource' => { 115 => [\'ResourceRelationship','ResourceRelationshipRelationshipOfResource'] },
      -	'relationshipremarks' => { 115 => [\'ResourceRelationship','ResourceRelationshipRelationshipRemarks'] },
      -	'relativealtitude' => { 113 => 'RelativeAltitude' },
      -	'relativepeakaudiofilepath' => { 488 => 'relativePeakAudioFilePath' },
      -	'relativetimestamp' => { 488 => 'relativeTimestamp' },
      -	'relativetimestampscale' => { 488 => [\'relativeTimestamp','relativeTimestampScale'] },
      -	'relativetimestampvalue' => { 488 => [\'relativeTimestamp','relativeTimestampValue'] },
      -	'releasebuttontousedial' => { 266 => '17.8', 267 => '18.5', 269 => '18.4', 270 => '18.4', 275 => '33.8', 276 => '17.6', 279 => '18.5', 280 => '18.4' },
      -	'releasedate' => { 128 => 0x1e, 358 => 'rldt', 457 => 'ReleaseDate', 488 => 'releaseDate' },
      -	'releasemode' => { 110 => 0x3001, 237 => 0x184d, 406 => 0xb049 },
      -	'releasemode2' => { 414 => 0x112c, 415 => [0x112c,0x8], 416 => [0x1108,0x8], 417 => [0x1184,0x8], 418 => [0x1160,0x8], 419 => [0x4,0x1018], 420 => [0x4,0x210], 421 => [0x4,0x210], 422 => [0x4,0x208], 424 => [0x67,0x3f], 425 => [0x6b,0x6d,0x73,0x4b], 426 => 0x10, 427 => 0x10, 428 => 0x9, 435 => 0x34 },
      -	'releasemode3' => { 414 => 0x1128, 415 => 0x1128, 416 => 0x1104, 417 => 0x1180, 418 => 0x115c, 419 => 0x1014, 420 => 0x20c, 421 => 0x20c, 422 => 0x204 },
      -	'releaseready' => { 474 => 'ReleaseReady' },
      -	'releasesetting' => { 94 => 0x1016 },
      -	'releasetime' => { 128 => 0x23, 457 => 'ReleaseTime' },
      -	'remoteonduration' => { 268 => '3.4', 271 => '17.2', 272 => '18.2', 273 => '18.2', 274 => '18.2', 276 => '18.2', 277 => '4.3', 281 => '19.2' },
      -	'renditionclass' => { 489 => 'RenditionClass' },
      -	'renditionof' => { 489 => 'RenditionOf' },
      -	'renditionofalternatepaths' => { 489 => [\'RenditionOf','RenditionOfAlternatePaths'] },
      -	'renditionofdocumentid' => { 489 => [\'RenditionOf','RenditionOfDocumentID'] },
      -	'renditionoffilepath' => { 489 => [\'RenditionOf','RenditionOfFilePath'] },
      -	'renditionoffrompart' => { 489 => [\'RenditionOf','RenditionOfFromPart'] },
      -	'renditionofinstanceid' => { 489 => [\'RenditionOf','RenditionOfInstanceID'] },
      -	'renditionoflastmodifydate' => { 489 => [\'RenditionOf','RenditionOfLastModifyDate'] },
      -	'renditionoflasturl' => { 489 => [\'RenditionOf','RenditionOfLastURL'] },
      -	'renditionoflinkcategory' => { 489 => [\'RenditionOf','RenditionOfLinkCategory'] },
      -	'renditionoflinkform' => { 489 => [\'RenditionOf','RenditionOfLinkForm'] },
      -	'renditionofmanager' => { 489 => [\'RenditionOf','RenditionOfManager'] },
      -	'renditionofmanagervariant' => { 489 => [\'RenditionOf','RenditionOfManagerVariant'] },
      -	'renditionofmanageto' => { 489 => [\'RenditionOf','RenditionOfManageTo'] },
      -	'renditionofmanageui' => { 489 => [\'RenditionOf','RenditionOfManageUI'] },
      -	'renditionofmaskmarkers' => { 489 => [\'RenditionOf','RenditionOfMaskMarkers'] },
      -	'renditionoforiginaldocumentid' => { 489 => [\'RenditionOf','RenditionOfOriginalDocumentID'] },
      -	'renditionofpartmapping' => { 489 => [\'RenditionOf','RenditionOfPartMapping'] },
      -	'renditionofplacedresolutionunit' => { 489 => [\'RenditionOf','RenditionOfPlacedResolutionUnit'] },
      -	'renditionofplacedxresolution' => { 489 => [\'RenditionOf','RenditionOfPlacedXResolution'] },
      -	'renditionofplacedyresolution' => { 489 => [\'RenditionOf','RenditionOfPlacedYResolution'] },
      -	'renditionofrenditionclass' => { 489 => [\'RenditionOf','RenditionOfRenditionClass'] },
      -	'renditionofrenditionparams' => { 489 => [\'RenditionOf','RenditionOfRenditionParams'] },
      -	'renditionoftopart' => { 489 => [\'RenditionOf','RenditionOfToPart'] },
      -	'renditionofversionid' => { 489 => [\'RenditionOf','RenditionOfVersionID'] },
      -	'renditionparams' => { 489 => 'RenditionParams' },
      -	'repeatingflashcount' => { 203 => 0xd, 204 => 0xe, 205 => 0xe, 206 => 0xe, 207 => 0xe, 275 => '17.2', 276 => '24.2', 277 => '9.2', 278 => '24.2', 281 => '25.2' },
      -	'repeatingflashcountbuilt-in' => { 245 => 0x4db },
      -	'repeatingflashcountexternal' => { 245 => 0x4c3 },
      -	'repeatingflashoutput' => { 275 => '17.1', 276 => '24.1', 277 => '9.1', 278 => '24.1', 281 => '25.1' },
      -	'repeatingflashoutputexternal' => { 245 => 0x4c0 },
      -	'repeatingflashrate' => { 203 => 0xc, 204 => 0xd, 205 => 0xd, 206 => 0xd, 207 => 0xd, 275 => '18.1', 276 => '25.1', 277 => '10.1', 278 => '25.1', 281 => '26.1' },
      -	'repeatingflashratebuilt-in' => { 245 => 0x4da },
      -	'repeatingflashrateexternal' => { 245 => 0x4c2 },
      -	'requirements' => { 366 => "\xa9req" },
      -	'requires' => { 460 => 'requires' },
      -	'resampleparams' => { 488 => 'resampleParams' },
      -	'resampleparamsquality' => { 488 => [\'resampleParams','resampleParamsQuality'] },
      -	'resamplingkerneldenominators050' => { 134 => 0xe50 },
      -	'resamplingkerneldenominators067' => { 134 => 0xe4f },
      -	'resamplingkerneldenominators100' => { 134 => 0xe51 },
      -	'resaved' => { 382 => 0x21e },
      -	'resetblacksegrows' => { 134 => 0x181a },
      -	'resolution' => { 158 => 'Resolution' },
      -	'resolutionmode' => { 383 => [0x87,0x4] },
      -	'resolutionunit' => { 116 => 0x128, 131 => 0x2, 484 => 'ResolutionUnit' },
      -	'resourceid' => { 115 => [\'ResourceRelationship','ResourceRelationshipResourceID'] },
      -	'resourcerelationship' => { 115 => 'ResourceRelationship' },
      -	'resourcerelationshipid' => { 115 => [\'ResourceRelationship','ResourceRelationshipResourceRelationshipID'] },
      -	'restrictdrivemodes' => { 81 => 0x612 },
      -	'restrictions' => { 481 => 'restrictions' },
      -	'retouchareafeather' => { 462 => [\'RetouchAreas','RetouchAreasFeather'], 464 => [\'RetouchAreas','RetouchAreasFeather'] },
      -	'retouchareamaskalpha' => { 462 => [\'RetouchAreas','RetouchAreasMasksAlpha'], 464 => [\'RetouchAreas','RetouchAreasMasksAlpha'] },
      -	'retouchareamaskangle' => { 462 => [\'RetouchAreas','RetouchAreasMasksAngle'], 464 => [\'RetouchAreas','RetouchAreasMasksAngle'] },
      -	'retouchareamaskbottom' => { 462 => [\'RetouchAreas','RetouchAreasMasksBottom'], 464 => [\'RetouchAreas','RetouchAreasMasksBottom'] },
      -	'retouchareamaskcentervalue' => { 462 => [\'RetouchAreas','RetouchAreasMasksCenterValue'], 464 => [\'RetouchAreas','RetouchAreasMasksCenterValue'] },
      -	'retouchareamaskcenterweight' => { 462 => [\'RetouchAreas','RetouchAreasMasksCenterWeight'], 464 => [\'RetouchAreas','RetouchAreasMasksCenterWeight'] },
      -	'retouchareamaskdabs' => { 462 => [\'RetouchAreas','RetouchAreasMasksDabs'], 464 => [\'RetouchAreas','RetouchAreasMasksDabs'] },
      -	'retouchareamaskfeather' => { 462 => [\'RetouchAreas','RetouchAreasMasksFeather'], 464 => [\'RetouchAreas','RetouchAreasMasksFeather'] },
      -	'retouchareamaskflipped' => { 462 => [\'RetouchAreas','RetouchAreasMasksFlipped'], 464 => [\'RetouchAreas','RetouchAreasMasksFlipped'] },
      -	'retouchareamaskflow' => { 462 => [\'RetouchAreas','RetouchAreasMasksFlow'], 464 => [\'RetouchAreas','RetouchAreasMasksFlow'] },
      -	'retouchareamaskfullx' => { 462 => [\'RetouchAreas','RetouchAreasMasksFullX'], 464 => [\'RetouchAreas','RetouchAreasMasksFullX'] },
      -	'retouchareamaskfully' => { 462 => [\'RetouchAreas','RetouchAreasMasksFullY'], 464 => [\'RetouchAreas','RetouchAreasMasksFullY'] },
      -	'retouchareamaskleft' => { 462 => [\'RetouchAreas','RetouchAreasMasksLeft'], 464 => [\'RetouchAreas','RetouchAreasMasksLeft'] },
      -	'retouchareamaskmidpoint' => { 462 => [\'RetouchAreas','RetouchAreasMasksMidpoint'], 464 => [\'RetouchAreas','RetouchAreasMasksMidpoint'] },
      -	'retouchareamaskperimetervalue' => { 462 => [\'RetouchAreas','RetouchAreasMasksPerimeterValue'], 464 => [\'RetouchAreas','RetouchAreasMasksPerimeterValue'] },
      -	'retouchareamaskradius' => { 462 => [\'RetouchAreas','RetouchAreasMasksRadius'], 464 => [\'RetouchAreas','RetouchAreasMasksRadius'] },
      -	'retouchareamaskright' => { 462 => [\'RetouchAreas','RetouchAreasMasksRight'], 464 => [\'RetouchAreas','RetouchAreasMasksRight'] },
      -	'retouchareamaskroundness' => { 462 => [\'RetouchAreas','RetouchAreasMasksRoundness'], 464 => [\'RetouchAreas','RetouchAreasMasksRoundness'] },
      -	'retouchareamasks' => { 462 => [\'RetouchAreas','RetouchAreasMasks'], 464 => [\'RetouchAreas','RetouchAreasMasks'] },
      -	'retouchareamasksizex' => { 462 => [\'RetouchAreas','RetouchAreasMasksSizeX'], 464 => [\'RetouchAreas','RetouchAreasMasksSizeX'] },
      -	'retouchareamasksizey' => { 462 => [\'RetouchAreas','RetouchAreasMasksSizeY'], 464 => [\'RetouchAreas','RetouchAreasMasksSizeY'] },
      -	'retouchareamasktop' => { 462 => [\'RetouchAreas','RetouchAreasMasksTop'], 464 => [\'RetouchAreas','RetouchAreasMasksTop'] },
      -	'retouchareamaskvalue' => { 462 => [\'RetouchAreas','RetouchAreasMasksMaskValue'], 464 => [\'RetouchAreas','RetouchAreasMasksMaskValue'] },
      -	'retouchareamaskversion' => { 462 => [\'RetouchAreas','RetouchAreasMasksVersion'], 464 => [\'RetouchAreas','RetouchAreasMasksVersion'] },
      -	'retouchareamaskwhat' => { 462 => [\'RetouchAreas','RetouchAreasMasksWhat'], 464 => [\'RetouchAreas','RetouchAreasMasksWhat'] },
      -	'retouchareamaskx' => { 462 => [\'RetouchAreas','RetouchAreasMasksX'], 464 => [\'RetouchAreas','RetouchAreasMasksX'] },
      -	'retouchareamasky' => { 462 => [\'RetouchAreas','RetouchAreasMasksY'], 464 => [\'RetouchAreas','RetouchAreasMasksY'] },
      -	'retouchareamaskzerox' => { 462 => [\'RetouchAreas','RetouchAreasMasksZeroX'], 464 => [\'RetouchAreas','RetouchAreasMasksZeroX'] },
      -	'retouchareamaskzeroy' => { 462 => [\'RetouchAreas','RetouchAreasMasksZeroY'], 464 => [\'RetouchAreas','RetouchAreasMasksZeroY'] },
      -	'retouchareamethod' => { 462 => [\'RetouchAreas','RetouchAreasMethod'], 464 => [\'RetouchAreas','RetouchAreasMethod'] },
      -	'retouchareaoffsety' => { 462 => [\'RetouchAreas','RetouchAreasOffsetY'], 464 => [\'RetouchAreas','RetouchAreasOffsetY'] },
      -	'retouchareaopacity' => { 462 => [\'RetouchAreas','RetouchAreasOpacity'], 464 => [\'RetouchAreas','RetouchAreasOpacity'] },
      -	'retouchareas' => { 462 => 'RetouchAreas', 464 => 'RetouchAreas' },
      -	'retouchareaseed' => { 462 => [\'RetouchAreas','RetouchAreasSeed'], 464 => [\'RetouchAreas','RetouchAreasSeed'] },
      -	'retouchareasourcestate' => { 462 => [\'RetouchAreas','RetouchAreasSourceState'], 464 => [\'RetouchAreas','RetouchAreasSourceState'] },
      -	'retouchareasourcex' => { 462 => [\'RetouchAreas','RetouchAreasSourceX'], 464 => [\'RetouchAreas','RetouchAreasSourceX'] },
      -	'retouchareaspottype' => { 462 => [\'RetouchAreas','RetouchAreasSpotType'], 464 => [\'RetouchAreas','RetouchAreasSpotType'] },
      -	'retouchhistory' => { 219 => 0x9e },
      -	'retouchinfo' => { 462 => 'RetouchInfo', 464 => 'RetouchInfo' },
      -	'retouchnefprocessing' => { 226 => 0x5 },
      -	'retractlensonpoweroff' => { 81 => 0x814 },
      -	'reuse' => { 293 => 'Reuse' },
      -	'reuseallowed' => { 491 => 'ReuseAllowed' },
      -	'reuseprohibited' => { 481 => 'reuseProhibited' },
      -	'reverseexposurecompdial' => { 273 => '5.2' },
      -	'reverseindicators' => { 266 => '12.1', 267 => '6.1', 269 => '6.1', 270 => '6.1', 271 => '4.3', 272 => '5.2', 273 => '5.4', 275 => '33.5', 276 => '5.1', 279 => '6.1', 280 => '6.1', 281 => '6.2' },
      -	'reverseshutterspeedaperture' => { 273 => '5.3' },
      -	'revision' => { 466 => 'revision' },
      -	'rflensmffocusringsensitivity' => { 81 => 0x714 },
      -	'rgbcurvelimits' => { 105 => 0x238 },
      -	'rgbcurvepoints' => { 104 => 0x7, 105 => 0x20e },
      -	'richtextcomment' => { 471 => 'RichTextComment' },
      -	'ricohdate' => { 372 => 0x6 },
      -	'ricohimageheight' => { 372 => 0x2 },
      -	'ricohimagewidth' => { 372 => 0x0 },
      -	'rightalbedo' => { 453 => 'RightAlbedo' },
      -	'rightascension' => { 161 => 'RightAscension' },
      -	'rights' => { 465 => 'rights' },
      -	'rightsagent' => { 481 => 'rightsAgent' },
      -	'rightsowner' => { 481 => 'rightsOwner' },
      -	'roll' => { 112 => 0x8, 366 => ['roll',"\xa9frl"] },
      -	'rollangle' => { 237 => 0x350b, 238 => 0x2c24, 246 => 0x36f4, 283 => 0x903, 306 => 0x90, 340 => 0x1, 378 => 0x2 },
      -	'romoperationmode' => { 94 => 0x80d },
      -	'rotation' => { 30 => 0x17, 31 => 0x18, 93 => 0x3, 100 => 0x10002, 105 => 0x26e, 111 => 'QuickTime::Rotation', 120 => 0x4, 161 => 'Rotation', 177 => [0x65,0x50], 178 => 0x46, 179 => 0x5a, 182 => 0x10, 237 => 0x3693, 238 => 0xca, 244 => '590.1', 259 => 0x76a43207, 306 => 0x30, 322 => '17.2', 352 => 0xd8, 359 => 'irot', 393 => 0x3f, 394 => 0x3f, 404 => 0x10 },
      -	'routedto' => { 470 => 'RoutedTo' },
      -	'routing' => { 357 => 'Routing' },
      -	'routingdestinations' => { 452 => 'RoutingDestinations' },
      -	'routingexclusions' => { 452 => 'RoutingExclusions' },
      -	'routingnotes' => { 470 => 'RoutingNotes' },
      -	'rowsperstrip' => { 116 => 0x116 },
      -	'rpp' => { 457 => 'rpp' },
      -	'rtkflag' => { 113 => 'RtkFlag' },
      -	'rtkstdhgt' => { 113 => 'RtkStdHgt' },
      -	'rtkstdlat' => { 113 => 'RtkStdLat' },
      -	'rtkstdlon' => { 113 => 'RtkStdLon' },
      -	'safetyshift' => { 81 => 0x108 },
      -	'safetyshiftinavortv' => { 79 => 0x10, 80 => 0x10, 82 => 0xf, 83 => 0x10, 86 => 0x10 },
      -	'sameexposurefornewaperture' => { 81 => 0x112 },
      -	'samplebits' => { 151 => 'SampleBits' },
      -	'samplepagerange' => { 478 => 'samplePageRange' },
      -	'samplerate' => { 151 => 'SampleRate' },
      -	'samplesperpixel' => { 116 => 0x115, 311 => 0x8, 484 => 'SamplesPerPixel' },
      -	'samplestructure' => { 130 => 0x5a },
      -	'samsungmodelid' => { 380 => 0x3 },
      -	'sanyoquality' => { 382 => 0x201 },
      -	'sanyothumbnail' => { 382 => 0x100 },
      -	'saturation' => { 10 => 0x6e, 12 => 0x76, 34 => 0xe, 49 => 0x1, 109 => 0xd, 110 => [0x3013,0x1f], 116 => [0xa409,0xfe55], 124 => 0x1003, 152 => 'Saturation', 176 => 0x1f, 177 => 0x32, 178 => 0x28, 179 => 0x1a, 184 => 0x1, 219 => 0xaa, 221 => 0x35, 222 => 0x3b, 223 => 0x43, 306 => 0x40, 308 => 0x300d, 341 => 0x1f, 348 => 0xd, 367 => 0x27, 369 => 0x58, 372 => 0x28, 373 => 0x1013, 383 => 0x10, 393 => 0x1e, 394 => 0x1b, 406 => 0x2005, 462 => 'Saturation', 464 => 'Saturation', 468 => 'Saturation' },
      -	'saturationadj' => { 100 => 0x20901, 105 => 0x116, 219 => 0x94, 258 => 0x1, 262 => 0x2e, 439 => 0x8016 },
      -	'saturationadjustmentaqua' => { 462 => 'SaturationAdjustmentAqua', 464 => 'SaturationAdjustmentAqua' },
      -	'saturationadjustmentblue' => { 462 => 'SaturationAdjustmentBlue', 464 => 'SaturationAdjustmentBlue' },
      -	'saturationadjustmentgreen' => { 462 => 'SaturationAdjustmentGreen', 464 => 'SaturationAdjustmentGreen' },
      -	'saturationadjustmentmagenta' => { 462 => 'SaturationAdjustmentMagenta', 464 => 'SaturationAdjustmentMagenta' },
      -	'saturationadjustmentorange' => { 462 => 'SaturationAdjustmentOrange', 464 => 'SaturationAdjustmentOrange' },
      -	'saturationadjustmentpurple' => { 462 => 'SaturationAdjustmentPurple', 464 => 'SaturationAdjustmentPurple' },
      -	'saturationadjustmentred' => { 462 => 'SaturationAdjustmentRed', 464 => 'SaturationAdjustmentRed' },
      -	'saturationadjustmentyellow' => { 462 => 'SaturationAdjustmentYellow', 464 => 'SaturationAdjustmentYellow' },
      -	'saturationauto' => { 68 => 0x98 },
      -	'saturationfaithful' => { 19 => 0xfe, 67 => 0x68, 68 => 0x68 },
      -	'saturationlandscape' => { 19 => 0xfc, 67 => 0x38, 68 => 0x38 },
      -	'saturationmonochrome' => { 67 => 0x80, 68 => 0x80 },
      -	'saturationneutral' => { 19 => 0xfd, 67 => 0x50, 68 => 0x50 },
      -	'saturationportrait' => { 19 => 0xfb, 67 => 0x20, 68 => 0x20 },
      -	'saturationsetting' => { 291 => 0x1010, 395 => 0x11, 411 => 0x9 },
      -	'saturationstandard' => { 19 => 0xfa, 67 => 0x8, 68 => 0x8 },
      -	'saturationuserdef1' => { 19 => 0x100, 67 => 0x98, 68 => 0xb0 },
      -	'saturationuserdef2' => { 19 => 0x101, 67 => 0xb0, 68 => 0xc8 },
      -	'saturationuserdef3' => { 19 => 0x102, 67 => 0xc8, 68 => 0xe0 },
      -	'saveid' => { 489 => 'SaveID' },
      -	'sbaanalysiscomplete' => { 134 => 0xc35 },
      -	'sbablack' => { 134 => 0xc25 },
      -	'sbagmoffset' => { 134 => 0xc4a },
      -	'sbagray' => { 134 => 0xc26 },
      -	'sbagreenmagentabal' => { 134 => 0xc33 },
      -	'sbahighgray' => { 134 => 0xc46 },
      -	'sbailloffset' => { 134 => 0xc49 },
      -	'sbailluminantbal' => { 134 => 0xc34 },
      -	'sbalowgray' => { 134 => 0xc47 },
      -	'sbaneutralbal' => { 134 => 0xc32 },
      -	'sbawhite' => { 134 => 0xc27 },
      -	'scaletype' => { 488 => 'scaleType' },
      -	'scanimageenhancer' => { 227 => 0x60 },
      -	'scanningdirection' => { 130 => 0x64 },
      -	'scene' => { 366 => 'scen', 473 => 'Scene', 488 => 'scene' },
      -	'scenearea' => { 286 => 0x211, 288 => 0x1031 },
      -	'sceneassist' => { 219 => 0x9c },
      -	'scenecapturetype' => { 116 => 0xa406, 468 => 'SceneCaptureType' },
      -	'scenedetect' => { 286 => 0x210, 288 => 0x1030 },
      -	'scenedetectdata' => { 286 => 0x212, 288 => 0x1033 },
      -	'scenemode' => { 138 => 0xfa02, 181 => 0x100, 219 => 0x8f, 283 => 0x509, 288 => 0x403, 306 => 0x8001, 315 => 0xf, 406 => 0xb023 },
      -	'scenemodeused' => { 140 => [0x6002,0xf002] },
      -	'scenerecognition' => { 124 => 0x1425 },
      -	'sceneselect' => { 382 => 0x21f },
      -	'scenetype' => { 116 => 0xa301, 468 => 'SceneType' },
      -	'screentips' => { 266 => '12.7', 267 => '5.3', 275 => '13.1', 276 => '4.4', 279 => '5.4', 281 => '5.1' },
      -	'scriptversion' => { 134 => 0x1770 },
      -	'season' => { 474 => 'Season', 477 => 'season' },
      -	'seasonidentifier' => { 474 => [\'Season','SeasonIdentifier'] },
      -	'seasonname' => { 474 => [\'Season','SeasonName'] },
      -	'seasonnumber' => { 474 => [\'Season','SeasonNumber'] },
      -	'secondaryftp' => { 452 => 'SecondaryFTP' },
      -	'secondaryslotfunction' => { 237 => 0x1d0, 246 => 0x1d0 },
      -	'section' => { 478 => 'section' },
      -	'securityclassification' => { 116 => 0x9212 },
      -	'selectableafpoint' => { 81 => 0x509 },
      +	'photoeffecthistoryxml' => { 272 => 0xe9651831 },
      +	'photoeffects' => { 272 => 0xab5eca5e },
      +	'photoeffectsblue' => { 274 => 0x8 },
      +	'photoeffectsgreen' => { 274 => 0x6 },
      +	'photoeffectsred' => { 274 => 0x4 },
      +	'photoeffectstype' => { 274 => 0x0 },
      +	'photographicsensitivity' => { 484 => 'PhotographicSensitivity' },
      +	'photoinfoplayback' => { 279 => '17.6', 288 => '33.6' },
      +	'photometricinterpretation' => { 119 => 0x106, 499 => 'PhotometricInterpretation' },
      +	'photoshootingmenubank' => { 229 => 0x112, 248 => 0xe7d, 258 => 0xfbd },
      +	'photoshootingmenubankimagearea' => { 229 => 0x134, 248 => '3716.1', 258 => 0x791 },
      +	'photoshopbgrthumbnail' => { 369 => 0x409 },
      +	'photoshopquality' => { 368 => 0x0 },
      +	'photoshopthumbnail' => { 369 => 0x40c },
      +	'photostyle' => { 320 => 0x89 },
      +	'picklabel' => { 482 => 'PickLabel' },
      +	'pictinfo' => { 396 => 0x208 },
      +	'picturecontrol' => { 272 => 0xe2173c47 },
      +	'picturecontrolactive' => { 275 => 0x0 },
      +	'picturecontroladjust' => { 231 => 0x30, 232 => 0x30, 233 => 0x36 },
      +	'picturecontrolbase' => { 231 => 0x18, 232 => 0x18, 233 => 0x1c },
      +	'picturecontroldata' => { 226 => [0xbd,0x23] },
      +	'picturecontrolmode' => { 275 => 0x13 },
      +	'picturecontrolname' => { 231 => 0x4, 232 => 0x4, 233 => 0x8 },
      +	'picturecontrolquickadjust' => { 231 => 0x31, 232 => 0x31, 233 => 0x37 },
      +	'pictureeffect' => { 420 => 0x200e },
      +	'pictureeffect2' => { 428 => 0x1163, 429 => 0x1167, 430 => 0x1143, 431 => 0x11bf, 432 => 0x119b, 433 => 0x1053, 434 => 0x24b, 435 => 0x24b, 436 => 0x23c, 450 => 0x46 },
      +	'picturefinish' => { 182 => 0x71 },
      +	'picturemode' => { 127 => 0x1031, 297 => 0x520, 355 => [0xb,0x33], 397 => 0x3d },
      +	'picturemode2' => { 336 => 0x0 },
      +	'picturemodebwfilter' => { 297 => 0x525 },
      +	'picturemodecontrast' => { 297 => 0x523 },
      +	'picturemodeeffect' => { 297 => 0x52d },
      +	'picturemodehue' => { 297 => 0x522 },
      +	'picturemodesaturation' => { 297 => 0x521 },
      +	'picturemodesharpness' => { 297 => 0x524 },
      +	'picturemodetone' => { 297 => 0x526 },
      +	'pictureprofile' => { 428 => [0x115e,0x115f], 429 => [0x1162,0x1163], 430 => [0x113e,0x113f], 431 => [0x11ba,0x11bb], 432 => [0x1196,0x1197], 433 => [0x104e,0x104f], 434 => [0x246,0x247], 435 => [0x246,0x247], 436 => [0x237,0x238] },
      +	'picturestyle' => { 8 => [0x4b,0x51], 9 => 0xf4, 10 => 0x6c, 11 => 0x86, 12 => 0x73, 16 => 0xab, 17 => 0xa7, 18 => 0xb0, 19 => 0x6c, 20 => 0xa7, 21 => 0xf4, 22 => 0xb3, 24 => 0xf4, 25 => 0xfa, 27 => 0x169, 74 => 0xa, 103 => 0x20301, 109 => 0x2 },
      +	'picturestylepc' => { 64 => 0x4009 },
      +	'picturestyleuserdef' => { 64 => 0x4008 },
      +	'picturewizard' => { 394 => 0x21 },
      +	'picturewizardcolor' => { 393 => 0x1 },
      +	'picturewizardcontrast' => { 393 => 0x4 },
      +	'picturewizardmode' => { 393 => 0x0 },
      +	'picturewizardsaturation' => { 393 => 0x2 },
      +	'picturewizardsharpness' => { 393 => 0x3 },
      +	'pipelineversion' => { 176 => 'PipelineVersion' },
      +	'pitch' => { 115 => 0x6, 280 => '4.1', 292 => '4.1', 380 => ['ptch',"\xa9fpt"] },
      +	'pitchangle' => { 247 => 0x350f, 248 => 0x2c28, 252 => 0xc21e, 257 => 0x36f8, 258 => 0x2eff, 260 => 0xce36, 261 => 0xeaef, 297 => 0x904, 320 => 0x91, 354 => 0x2, 392 => 0x1 },
      +	'pitchshift' => { 374 => 'player.movie.audio.pitchshift' },
      +	'pixelaspectratio' => { 373 => 'pasp' },
      +	'pixelclockfrequency' => { 138 => 0x40b },
      +	'pixelcorrectionoffset' => { 138 => 0x972 },
      +	'pixelcorrectionscale' => { 138 => 0x971 },
      +	'pixelscale' => { 119 => 0x830e },
      +	'pixelshiftinfo' => { 420 => 0x202f },
      +	'pixelshiftoffset' => { 127 => 0x1106 },
      +	'pixelshiftresolution' => { 356 => 0x0 },
      +	'pixelshiftshots' => { 127 => 0x1105 },
      +	'pixelsperunitx' => { 309 => 0x0 },
      +	'pixelsperunity' => { 309 => 0x4 },
      +	'pixelunits' => { 309 => 0x8 },
      +	'planarconfiguration' => { 119 => 0x11c, 499 => 'PlanarConfiguration' },
      +	'plane' => { 457 => [\'Planes','PlanesPlane'] },
      +	'planeboundary' => { 457 => [\'Planes','PlanesPlaneBoundary'] },
      +	'planeboundaryvertexcount' => { 457 => [\'Planes','PlanesPlaneBoundaryVertexCount'] },
      +	'planeextentx' => { 457 => [\'Planes','PlanesPlaneExtentX'] },
      +	'planeextentz' => { 457 => [\'Planes','PlanesPlaneExtentZ'] },
      +	'planepose' => { 457 => [\'Planes','PlanesPlanePose'] },
      +	'planeposepositionx' => { 457 => [\'Planes','PlanesPlanePosePositionX'] },
      +	'planeposepositiony' => { 457 => [\'Planes','PlanesPlanePosePositionY'] },
      +	'planeposepositionz' => { 457 => [\'Planes','PlanesPlanePosePositionZ'] },
      +	'planeposerotationw' => { 457 => [\'Planes','PlanesPlanePoseRotationW'] },
      +	'planeposerotationx' => { 457 => [\'Planes','PlanesPlanePoseRotationX'] },
      +	'planeposerotationy' => { 457 => [\'Planes','PlanesPlanePoseRotationY'] },
      +	'planeposerotationz' => { 457 => [\'Planes','PlanesPlanePoseRotationZ'] },
      +	'planeposetimestamp' => { 457 => [\'Planes','PlanesPlanePoseTimestamp'] },
      +	'planes' => { 457 => 'Planes' },
      +	'planningref' => { 489 => 'PlanningRef' },
      +	'planningrefidentifier' => { 489 => [\'PlanningRef','PlanningRefIdentifier'] },
      +	'planningrefname' => { 489 => [\'PlanningRef','PlanningRefName'] },
      +	'planningrefrole' => { 489 => [\'PlanningRef','PlanningRefRole'] },
      +	'platenames' => { 508 => 'PlateNames' },
      +	'platform' => { 493 => 'platform' },
      +	'playallframes' => { 380 => 'AllF' },
      +	'playbackflickdown' => { 295 => 0x159 },
      +	'playbackflickup' => { 295 => 0x155 },
      +	'playbackmenustime' => { 284 => '20.1', 285 => '21.1', 286 => '21.1' },
      +	'playbackmonitorofftime' => { 279 => '25.2', 280 => '36.1', 282 => '36.1', 283 => '36.1', 287 => '35.1', 288 => '8.1', 289 => '35.1', 292 => '36.1', 293 => '36.1', 294 => '21.1', 295 => 0x33 },
      +	'playbackzoom' => { 280 => '37.1' },
      +	'playdisplay' => { 184 => 0x4e },
      +	'playerversion' => { 374 => 'player.version' },
      +	'playgap' => { 372 => 'pgap' },
      +	'playlistid' => { 372 => 'plID' },
      +	'playmode' => { 380 => 'SDLN' },
      +	'playselection' => { 380 => 'SelO' },
      +	'plusversion' => { 307 => 'Version' },
      +	'pmversion' => { 367 => 'PMVersion' },
      +	'pngwarning' => { 310 => 'Warning' },
      +	'podcast' => { 372 => 'pcst' },
      +	'podcasturl' => { 372 => 'purl' },
      +	'poilevel' => { 225 => 0x8 },
      +	'portraitimpressionbalance' => { 260 => 0x7fa0 },
      +	'portraitnote' => { 460 => 'PortraitNote' },
      +	'portraitoutputhighlightpoint' => { 109 => 0x1d },
      +	'portraitoutputshadowpoint' => { 109 => 0x1e },
      +	'portraitrawcolortone' => { 109 => 0x16 },
      +	'portraitrawcontrast' => { 109 => 0x18 },
      +	'portraitrawhighlight' => { 109 => 0x76 },
      +	'portraitrawhighlightpoint' => { 109 => 0x1b },
      +	'portraitrawlinear' => { 109 => 0x19 },
      +	'portraitrawsaturation' => { 109 => 0x17 },
      +	'portraitrawshadow' => { 109 => 0x7f },
      +	'portraitrawshadowpoint' => { 109 => 0x1c },
      +	'portraitrawsharpness' => { 109 => 0x1a },
      +	'portraitrefiner' => { 113 => 0x302b },
      +	'portraitrequest' => { 460 => 'PortraitRequest' },
      +	'portraitunsharpmaskfineness' => { 109 => 0x9a },
      +	'portraitunsharpmaskstrength' => { 109 => 0x98 },
      +	'portraitunsharpmaskthreshold' => { 109 => 0x9c },
      +	'portraitversion' => { 460 => 'PortraitVersion' },
      +	'pose' => { 457 => 'Pose' },
      +	'poseheadingdegrees' => { 465 => 'PoseHeadingDegrees' },
      +	'posepitchdegrees' => { 465 => 'PosePitchDegrees' },
      +	'posepositionx' => { 457 => [\'Pose','PosePositionX'] },
      +	'posepositiony' => { 457 => [\'Pose','PosePositionY'] },
      +	'posepositionz' => { 457 => [\'Pose','PosePositionZ'] },
      +	'poserolldegrees' => { 465 => 'PoseRollDegrees' },
      +	'poserotationw' => { 457 => [\'Pose','PoseRotationW'] },
      +	'poserotationx' => { 457 => [\'Pose','PoseRotationX'] },
      +	'poserotationy' => { 457 => [\'Pose','PoseRotationY'] },
      +	'poserotationz' => { 457 => [\'Pose','PoseRotationZ'] },
      +	'posetimestamp' => { 457 => [\'Pose','PoseTimestamp'] },
      +	'positiondescriptor' => { 492 => 'positionDescriptor' },
      +	'postalcode' => { 161 => 'PostalCode' },
      +	'postcropvignetteamount' => { 477 => 'PostCropVignetteAmount', 479 => 'PostCropVignetteAmount' },
      +	'postcropvignettefeather' => { 477 => 'PostCropVignetteFeather', 479 => 'PostCropVignetteFeather' },
      +	'postcropvignettehighlightcontrast' => { 477 => 'PostCropVignetteHighlightContrast', 479 => 'PostCropVignetteHighlightContrast' },
      +	'postcropvignettemidpoint' => { 477 => 'PostCropVignetteMidpoint', 479 => 'PostCropVignetteMidpoint' },
      +	'postcropvignetteroundness' => { 477 => 'PostCropVignetteRoundness', 479 => 'PostCropVignetteRoundness' },
      +	'postcropvignettestyle' => { 477 => 'PostCropVignetteStyle', 479 => 'PostCropVignetteStyle' },
      +	'postfocusmerging' => { 320 => 0xbf },
      +	'potentialface1position' => { 417 => 0xb },
      +	'potentialface2position' => { 417 => 0x15 },
      +	'potentialface3position' => { 417 => 0x1f },
      +	'potentialface4position' => { 417 => 0x29 },
      +	'potentialface5position' => { 417 => 0x33 },
      +	'potentialface6position' => { 417 => 0x3d },
      +	'potentialface7position' => { 417 => 0x47 },
      +	'potentialface8position' => { 417 => 0x51 },
      +	'powersource' => { 334 => '0.1' },
      +	'poweruptime' => { 226 => 0xb6 },
      +	'preaf' => { 126 => '0.2' },
      +	'precaptureframes' => { 302 => 0x300 },
      +	'predictor' => { 119 => 0x13d },
      +	'preflashreturnstrength' => { 245 => 0x28a },
      +	'prefs' => { 131 => 0xdd, 367 => 'Prefs' },
      +	'prereadfastresetcount' => { 138 => 0x187e },
      +	'preservedfilename' => { 504 => 'PreservedFileName' },
      +	'preservedspecimen' => { 118 => 'PreservedSpecimen' },
      +	'preservedspecimenmaterialsampleid' => { 118 => [\'PreservedSpecimen','PreservedSpecimenMaterialSampleID'] },
      +	'presettype' => { 477 => 'PresetType', 479 => 'PresetType' },
      +	'presetwhitebalance' => { 184 => 0x24, 454 => 0x8002 },
      +	'presetwhitebalanceadj' => { 454 => 0x8014 },
      +	'pressure' => { 119 => 0x9402, 484 => 'Pressure' },
      +	'previewapplicationname' => { 119 => 0xc716 },
      +	'previewapplicationversion' => { 119 => 0xc717 },
      +	'previewbutton' => { 279 => ['14.1','15.1'], 280 => '15.1', 282 => '15.1', 283 => '15.1', 288 => '29.1', 289 => '14.1', 292 => '15.1', 293 => '15.1' },
      +	'previewbuttonplusdials' => { 279 => ['14.2','15.2'], 280 => '15.2', 282 => '43.1', 283 => '43.1', 288 => '31.2', 292 => '43.1', 293 => '43.1' },
      +	'previewcolorspace' => { 119 => 0xc71a },
      +	'previewcropbottom' => { 366 => 0xef },
      +	'previewcropleft' => { 366 => 0xec },
      +	'previewcropright' => { 366 => 0xee },
      +	'previewcroptop' => { 366 => 0xed },
      +	'previewdate' => { 378 => 0x0 },
      +	'previewdatetime' => { 119 => 0xc71b },
      +	'previewimage' => { 113 => 0x2000, 114 => 'Exif-PreviewImage', 120 => 'PreviewImage', 122 => 0x4, 166 => 'data', 186 => 0x81, 302 => 0x280, 318 => 0x300, 380 => 'mcvr', 420 => 0x2001 },
      +	'previewimageborders' => { 355 => 0x3e },
      +	'previewimageheight' => { 73 => 0x4, 142 => 0xfa58 },
      +	'previewimagelength' => { 73 => 0x2, 113 => 0x3, 119 => [0x117,0x202], 186 => 0x89, 234 => 0x202, 297 => 0x102, 302 => 0x1037, 355 => 0x3, 386 => 0x1e, 391 => 0x3, 397 => [0x1b,0x1d], 410 => 0x202 },
      +	'previewimagename' => { 166 => '1Name' },
      +	'previewimagesize' => { 113 => 0x2, 147 => 0x2, 166 => 'ImageSize', 355 => 0x2, 397 => [0x1c,0x1e], 420 => 0xb02c, 454 => 0x9012 },
      +	'previewimagestart' => { 73 => 0x5, 113 => 0x4, 119 => [0x111,0x201], 186 => 0x88, 234 => 0x201, 297 => 0x101, 302 => 0x1036, 355 => 0x4, 386 => 0x1c, 391 => 0x2, 397 => [0x1a,0x1c], 410 => 0x201 },
      +	'previewimagetype' => { 166 => '0Type' },
      +	'previewimagevalid' => { 297 => 0x100, 302 => 0x1035 },
      +	'previewimagewidth' => { 73 => 0x3, 142 => 0xfa57 },
      +	'previewquality' => { 73 => 0x1 },
      +	'previewsettingsdigest' => { 119 => 0xc719 },
      +	'previewsettingsname' => { 119 => 0xc718 },
      +	'primaryafpoint' => { 193 => [0x38,0x44,0x7] },
      +	'primarychromaticities' => { 119 => 0x13f, 499 => 'PrimaryChromaticities' },
      +	'primaryftp' => { 467 => 'PrimaryFTP' },
      +	'primaryslot' => { 248 => 0xe7f, 258 => 0xfbf },
      +	'printim' => { 119 => 0xc4a5 },
      +	'prioritysetinawb' => { 420 => 0x202b },
      +	'prioritysetupshutterrelease' => { 184 => 0x1d, 407 => 0x28 },
      +	'privatertkinfo' => { 469 => 'privateRTKInfo' },
      +	'processbordercolsleft' => { 138 => 0xc61 },
      +	'processbordercolsright' => { 138 => 0xc62 },
      +	'processborderrowsbottom' => { 138 => 0xc64 },
      +	'processborderrowstop' => { 138 => 0xc63 },
      +	'processingsoftware' => { 119 => 0xb },
      +	'processversion' => { 477 => 'ProcessVersion', 479 => 'ProcessVersion' },
      +	'producer' => { 179 => 'WM/Producer', 306 => 'Producer', 372 => "\xa9prd", 374 => 'producer', 380 => "\xa9prd", 490 => 'Producer' },
      +	'producerkeywords' => { 380 => "\xa9pdk" },
      +	'productcode' => { 493 => 'productCode' },
      +	'productid' => { 132 => 0x32, 372 => 'prID', 492 => 'productID' },
      +	'productidtype' => { 492 => 'productIDType' },
      +	'productinimage' => { 489 => 'ProductInImage' },
      +	'productinimagedescription' => { 489 => [\'ProductInImage','ProductInImageProductDescription'] },
      +	'productinimagegtin' => { 489 => [\'ProductInImage','ProductInImageProductGTIN'] },
      +	'productinimagename' => { 489 => [\'ProductInImage','ProductInImageProductName'] },
      +	'productioncode' => { 335 => 0x2 },
      +	'productorserviceconstraints' => { 307 => 'ProductOrServiceConstraints' },
      +	'productversion' => { 372 => 'VERS' },
      +	'profession' => { 493 => 'profession' },
      +	'profile' => { 457 => [\'Profiles','ProfilesProfile'] },
      +	'profilecalibrationsig' => { 119 => 0xc6f4 },
      +	'profilecameraindices' => { 457 => [\'Profiles','ProfilesProfileCameraIndices'] },
      +	'profilecopyright' => { 119 => 0xc6fe },
      +	'profileembedpolicy' => { 119 => 0xc6fd },
      +	'profilegaintablemap' => { 119 => 0xcd2d },
      +	'profilehuesatmapdata1' => { 119 => 0xc6fa },
      +	'profilehuesatmapdata2' => { 119 => 0xc6fb },
      +	'profilehuesatmapdata3' => { 119 => 0xcd39 },
      +	'profilehuesatmapdims' => { 119 => 0xc6f9 },
      +	'profilehuesatmapencoding' => { 119 => 0xc7a3 },
      +	'profilelooktabledata' => { 119 => 0xc726 },
      +	'profilelooktabledims' => { 119 => 0xc725 },
      +	'profilelooktableencoding' => { 119 => 0xc7a4 },
      +	'profilename' => { 119 => 0xc6f8, 308 => 'iCCP-name' },
      +	'profiles' => { 457 => 'Profiles' },
      +	'profiletonecurve' => { 119 => 0xc6fc },
      +	'profiletype' => { 457 => [\'Profiles','ProfilesProfileType'] },
      +	'programiso' => { 320 => 0x3c },
      +	'programline' => { 336 => '1.1' },
      +	'programmode' => { 189 => 0x5 },
      +	'programshift' => { 226 => 0xd },
      +	'programversion' => { 131 => 0x46 },
      +	'prohibits' => { 475 => 'prohibits' },
      +	'projectiontype' => { 465 => 'ProjectionType', 466 => 'ProjectionType' },
      +	'projectname' => { 503 => 'projectName' },
      +	'projectref' => { 503 => 'projectRef' },
      +	'projectrefpath' => { 503 => [\'projectRef','projectRefPath'] },
      +	'projectreftype' => { 503 => [\'projectRef','projectRefType'] },
      +	'promotionurl' => { 179 => 'WM/PromotionURL' },
      +	'propertyreleaseid' => { 307 => 'PropertyReleaseID' },
      +	'propertyreleasestatus' => { 307 => 'PropertyReleaseStatus' },
      +	'provider' => { 179 => 'WM/Provider' },
      +	'province-state' => { 131 => 0x5f },
      +	'publicationdate' => { 493 => 'publicationDate' },
      +	'publicationdatea-platform' => { 493 => [\'publicationDate','publicationDateA-platform'] },
      +	'publicationdatedate' => { 493 => [\'publicationDate','publicationDateDate'] },
      +	'publicationdisplaydate' => { 493 => 'publicationDisplayDate' },
      +	'publicationdisplaydatea-platform' => { 493 => [\'publicationDisplayDate','publicationDisplayDateA-platform'] },
      +	'publicationdisplaydatedate' => { 493 => [\'publicationDisplayDate','publicationDisplayDateDate'] },
      +	'publicationevent' => { 489 => 'PublicationEvent' },
      +	'publicationeventdate' => { 489 => [\'PublicationEvent','PublicationEventDate'] },
      +	'publicationeventidentifier' => { 489 => [\'PublicationEvent','PublicationEventIdentifier'] },
      +	'publicationeventname' => { 489 => [\'PublicationEvent','PublicationEventName'] },
      +	'publicationname' => { 493 => 'publicationName' },
      +	'publisher' => { 179 => 'WM/Publisher', 372 => "\xa9pub", 374 => 'publisher', 480 => 'publisher' },
      +	'publishingfrequency' => { 493 => 'publishingFrequency' },
      +	'pulldown' => { 503 => 'pullDown' },
      +	'purchasedate' => { 372 => 'purd' },
      +	'purplehsl' => { 103 => 0x20916 },
      +	'pxshiftperiphedgenr' => { 454 => 0x9013 },
      +	'pxshiftperiphedgenrvalue' => { 454 => 0x9014 },
      +	'quality' => { 0 => 0x1, 34 => 0x3, 112 => 0x2, 113 => 0x3002, 127 => 0x1000, 140 => 0x9, 226 => 0x4, 262 => 0x3, 302 => 0x201, 315 => 0x300, 355 => 0x8, 362 => 0x2, 397 => 0x16, 407 => 0x56, 408 => 0x56, 409 => 0xb, 420 => [0x102,0x202e] },
      +	'quality2' => { 428 => 0x1170, 429 => 0x1174, 430 => 0x1150, 432 => 0x11a8, 433 => 0x1060, 434 => 0x258, 435 => 0x258, 436 => 0x247, 441 => 0x29, 442 => 0x25, 443 => 0x2a },
      +	'qualitybutton' => { 295 => 0x17d },
      +	'qualitybuttonplaybackmode' => { 295 => 0x1bf },
      +	'qualitymode' => { 113 => 0x8 },
      +	'quantizationmethod' => { 133 => 0x78 },
      +	'quickadjust' => { 275 => 0x2a },
      +	'quickcontroldialinmeter' => { 84 => 0x703 },
      +	'quickfix' => { 272 => 0x416391c6 },
      +	'quickshot' => { 396 => 0x213 },
      +	'quiettime' => { 138 => 0x188a },
      +	'rads' => { 380 => 'rads' },
      +	'rangefinder' => { 284 => '4.1', 285 => '5.1', 286 => '5.1' },
      +	'rangemask' => { 477 => 'RangeMaskMapInfo', 479 => 'RangeMaskMapInfo' },
      +	'rangemaskmapinfo' => { 477 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfo'], 479 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfo'] },
      +	'rangemaskmapinfolabmax' => { 477 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoLabMax'], 479 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoLabMax'] },
      +	'rangemaskmapinfolabmin' => { 477 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoLabMin'], 479 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoLabMin'] },
      +	'rangemaskmapinfolumeq' => { 477 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoLumEq'], 479 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoLumEq'] },
      +	'rangemaskmapinforgbmax' => { 477 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoRGBMax'], 479 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoRGBMax'] },
      +	'rangemaskmapinforgbmin' => { 477 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoRGBMin'], 479 => [\'RangeMaskMapInfo','RangeMaskMapInfoRangeMaskMapInfoRGBMin'] },
      +	'rasterizedcaption' => { 131 => 0x7d },
      +	'rating' => { 119 => 0x4746, 127 => 0x1431, 366 => 0xdf, 372 => 'rtng', 380 => 'rtng', 420 => 0x2002, 472 => 'rating', 481 => 'rating', 489 => 'Rating', 493 => 'rating', 501 => 'Rating' },
      +	'ratingpercent' => { 119 => 0x4749, 178 => 'Rating', 372 => 'rate', 501 => 'RatingPercent' },
      +	'ratingregion' => { 489 => [\'Rating','RatingRatingRegion'] },
      +	'ratingregioncity' => { 489 => [\'Rating','RatingRatingRegionCity'] },
      +	'ratingregioncountrycode' => { 489 => [\'Rating','RatingRatingRegionCountryCode'] },
      +	'ratingregioncountryname' => { 489 => [\'Rating','RatingRatingRegionCountryName'] },
      +	'ratingregiongpsaltitude' => { 489 => [\'Rating','RatingRatingRegionGPSAltitude'] },
      +	'ratingregiongpslatitude' => { 489 => [\'Rating','RatingRatingRegionGPSLatitude'] },
      +	'ratingregiongpslongitude' => { 489 => [\'Rating','RatingRatingRegionGPSLongitude'] },
      +	'ratingregionidentifier' => { 489 => [\'Rating','RatingRatingRegionIdentifier'] },
      +	'ratingregionlocationid' => { 489 => [\'Rating','RatingRatingRegionLocationId'] },
      +	'ratingregionlocationname' => { 489 => [\'Rating','RatingRatingRegionLocationName'] },
      +	'ratingregionprovincestate' => { 489 => [\'Rating','RatingRatingRegionProvinceState'] },
      +	'ratingregionsublocation' => { 489 => [\'Rating','RatingRatingRegionSublocation'] },
      +	'ratingregionworldregion' => { 489 => [\'Rating','RatingRatingRegionWorldRegion'] },
      +	'ratingscalemaxvalue' => { 489 => [\'Rating','RatingRatingScaleMaxValue'] },
      +	'ratingscaleminvalue' => { 489 => [\'Rating','RatingRatingScaleMinValue'] },
      +	'ratingsourcelink' => { 489 => [\'Rating','RatingRatingSourceLink'] },
      +	'ratingvalue' => { 489 => [\'Rating','RatingRatingValue'] },
      +	'ratingvaluelogolink' => { 489 => [\'Rating','RatingRatingValueLogoLink'] },
      +	'rawandjpgrecording' => { 82 => 0x8, 186 => 0x109, 336 => 0xd },
      +	'rawbrightnessadj' => { 103 => 0x20001, 108 => 0x38 },
      +	'rawburstimagecount' => { 75 => 0x2 },
      +	'rawburstimagenum' => { 75 => 0x1 },
      +	'rawcoloradj' => { 108 => 0x2e },
      +	'rawcropbottom' => { 366 => 0xd4 },
      +	'rawcropleft' => { 366 => 0xd1 },
      +	'rawcropright' => { 366 => 0xd3 },
      +	'rawcroptop' => { 366 => 0xd2 },
      +	'rawcustomsaturation' => { 108 => 0x30 },
      +	'rawcustomtone' => { 108 => 0x34 },
      +	'rawdata' => { 394 => 0xa048 },
      +	'rawdatabyteorder' => { 394 => 0x40 },
      +	'rawdatacfapattern' => { 394 => 0x50 },
      +	'rawdatauniqueid' => { 119 => 0xc65d },
      +	'rawdepth' => { 188 => 0x10 },
      +	'rawdevartfilter' => { 304 => 0x121 },
      +	'rawdevautogradation' => { 304 => 0x119 },
      +	'rawdevcolorspace' => { 303 => 0x108, 304 => 0x109 },
      +	'rawdevcontrastvalue' => { 303 => 0x106, 304 => 0x105 },
      +	'rawdeveditstatus' => { 303 => 0x10b },
      +	'rawdevelopmentprocess' => { 355 => 0x62 },
      +	'rawdevengine' => { 303 => 0x109, 304 => 0x10b },
      +	'rawdevexposurebiasvalue' => { 303 => 0x100, 304 => 0x100 },
      +	'rawdevgradation' => { 304 => 0x112 },
      +	'rawdevgraypoint' => { 303 => 0x103, 304 => 0x104 },
      +	'rawdevmemorycoloremphasis' => { 303 => 0x105, 304 => 0x108 },
      +	'rawdevnoisereduction' => { 303 => 0x10a, 304 => 0x10a },
      +	'rawdevpicturemode' => { 304 => 0x10c },
      +	'rawdevpm_bwfilter' => { 304 => 0x110 },
      +	'rawdevpmcontrast' => { 304 => 0x10e },
      +	'rawdevpmnoisefilter' => { 304 => 0x120 },
      +	'rawdevpmpicturetone' => { 304 => 0x111 },
      +	'rawdevpmsaturation' => { 304 => 0x10d },
      +	'rawdevpmsharpness' => { 304 => 0x10f },
      +	'rawdevsaturation3' => { 304 => 0x113 },
      +	'rawdevsaturationemphasis' => { 303 => 0x104, 304 => 0x107 },
      +	'rawdevsettings' => { 303 => 0x10c },
      +	'rawdevsharpnessvalue' => { 303 => 0x107, 304 => 0x106 },
      +	'rawdevversion' => { 303 => 0x0, 304 => 0x0 },
      +	'rawdevwbfineadjustment' => { 303 => 0x102, 304 => 0x103 },
      +	'rawdevwhitebalance' => { 304 => 0x101 },
      +	'rawdevwhitebalancevalue' => { 303 => 0x101, 304 => 0x102 },
      +	'rawfile' => { 119 => 0xfe4c },
      +	'rawfilename' => { 477 => 'RawFileName', 479 => 'RawFileName' },
      +	'rawfiletype' => { 420 => 0x2029 },
      +	'rawformat' => { 325 => 0x2d, 364 => 0x10e },
      +	'rawimagecenter' => { 226 => 0x99 },
      +	'rawimagedigest' => { 119 => 0xc71c },
      +	'rawimagesize' => { 355 => 0x39 },
      +	'rawinfoversion' => { 305 => 0x0 },
      +	'rawjpgheight' => { 99 => 0x4 },
      +	'rawjpgquality' => { 57 => 0x6, 99 => 0x1 },
      +	'rawjpgsize' => { 57 => 0x7, 99 => 0x2 },
      +	'rawjpgwidth' => { 99 => 0x3 },
      +	'rawmeasuredrggb' => { 43 => 0x26a, 45 => 0x280, 47 => 0x194, 48 => [0x1ad,0x26b] },
      +	'rawrppused' => { 472 => 'rawrppused' },
      +	'rawtopreviewgain' => { 119 => 0xc7a8 },
      +	'readouttypeactual' => { 138 => 0x1903 },
      +	'readouttyperequested' => { 138 => 0x1902 },
      +	'reardisplay' => { 279 => '12.3', 280 => '6.2' },
      +	'recdevice' => { 489 => 'RecDevice' },
      +	'recdeviceattlensdescription' => { 489 => [\'RecDevice','RecDeviceAttLensDescription'] },
      +	'recdevicemanufacturer' => { 489 => [\'RecDevice','RecDeviceManufacturer'] },
      +	'recdevicemodelname' => { 489 => [\'RecDevice','RecDeviceModelName'] },
      +	'recdeviceownersdeviceid' => { 489 => [\'RecDevice','RecDeviceOwnersDeviceId'] },
      +	'recdeviceserialnumber' => { 489 => [\'RecDevice','RecDeviceSerialNumber'] },
      +	'recipeendingpage' => { 495 => 'recipeEndingPage' },
      +	'recipepagerange' => { 495 => 'recipePageRange' },
      +	'recipesource' => { 495 => 'recipeSource' },
      +	'recipestartingpage' => { 495 => 'recipeStartingPage' },
      +	'recipetitle' => { 495 => 'recipeTitle' },
      +	'recognizedface1age' => { 313 => 0x20 },
      +	'recognizedface1name' => { 313 => 0x4 },
      +	'recognizedface1position' => { 313 => 0x18 },
      +	'recognizedface2age' => { 313 => 0x50 },
      +	'recognizedface2name' => { 313 => 0x34 },
      +	'recognizedface2position' => { 313 => 0x48 },
      +	'recognizedface3age' => { 313 => 0x80 },
      +	'recognizedface3name' => { 313 => 0x64 },
      +	'recognizedface3position' => { 313 => 0x78 },
      +	'recognizedfaceflags' => { 320 => 0x63 },
      +	'recommendedexposureindex' => { 119 => 0x8832, 484 => 'RecommendedExposureIndex' },
      +	'record' => { 118 => 'Record' },
      +	'recordbasisofrecord' => { 118 => [\'Record','RecordBasisOfRecord'] },
      +	'recordcollectioncode' => { 118 => [\'Record','RecordCollectionCode'] },
      +	'recordcollectionid' => { 118 => [\'Record','RecordCollectionID'] },
      +	'recorddatageneralizations' => { 118 => [\'Record','RecordDataGeneralizations'] },
      +	'recorddatasetid' => { 118 => [\'Record','RecordDatasetID'] },
      +	'recorddatasetname' => { 118 => [\'Record','RecordDatasetName'] },
      +	'recorddisplay' => { 184 => 0x4d },
      +	'recorddynamicproperties' => { 118 => [\'Record','RecordDynamicProperties'] },
      +	'recordid' => { 97 => 0x1804 },
      +	'recordinformationwithheld' => { 118 => [\'Record','RecordInformationWithheld'] },
      +	'recordingcopyright' => { 380 => "\xa9phg" },
      +	'recordingformat' => { 387 => 0x1000 },
      +	'recordingmode' => { 112 => 0x1, 362 => 0x1 },
      +	'recordinstitutioncode' => { 118 => [\'Record','RecordInstitutionCode'] },
      +	'recordinstitutionid' => { 118 => [\'Record','RecordInstitutionID'] },
      +	'recordlabelname' => { 380 => "\xa9lab" },
      +	'recordlabelurl' => { 380 => "\xa9lal" },
      +	'recordlocationdata' => { 229 => 0x660 },
      +	'recordmode' => { 34 => 0x9, 113 => 0x3000 },
      +	'recordownerinstitutioncode' => { 118 => [\'Record','RecordOwnerInstitutionCode'] },
      +	'recordshutterrelease' => { 396 => 0x217 },
      +	'redbalance' => { 302 => 0x1017, 325 => 0x11, 355 => 0x1c },
      +	'redcurvelimits' => { 108 => 0x18a },
      +	'redcurvepoints' => { 107 => 0x2d, 108 => 0x160 },
      +	'redeyecorrection' => { 276 => 0x0 },
      +	'redeyeinfo' => { 477 => 'RedEyeInfo', 479 => 'RedEyeInfo' },
      +	'redeyereduction' => { 184 => 0x41, 407 => 0x6a, 409 => 0x28 },
      +	'redeyeremoval' => { 320 => 0xb9 },
      +	'redhsl' => { 103 => 0x20910 },
      +	'redhue' => { 477 => 'RedHue', 479 => 'RedHue' },
      +	'redsaturation' => { 477 => 'RedSaturation', 479 => 'RedSaturation' },
      +	'reductionmatrix1' => { 119 => 0xc625 },
      +	'reductionmatrix2' => { 119 => 0xc626 },
      +	'reductionmatrix3' => { 119 => 0xcd3a },
      +	'reelname' => { 119 => 0xc789, 380 => 'reel' },
      +	'reference1' => { 487 => [\'TagStructure','TagStructureReference'] },
      +	'reference2' => { 487 => [\'TagStructure','TagStructureSubLabelsReference'] },
      +	'reference3' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsReference'] },
      +	'reference4' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsReference'] },
      +	'reference5' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
      +	'reference6' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabelsReference'] },
      +	'referenceblackwhite' => { 119 => 0x214, 499 => 'ReferenceBlackWhite' },
      +	'referencedate' => { 131 => 0x2f },
      +	'referencenumber' => { 131 => 0x32 },
      +	'references' => { 157 => 'References' },
      +	'referenceservice' => { 131 => 0x2d },
      +	'regionappliedtodimensions' => { 172 => [\'Regions','RegionsAppliedToDimensions'] },
      +	'regionappliedtodimensionsh' => { 172 => [\'Regions','RegionsAppliedToDimensionsH'] },
      +	'regionappliedtodimensionsunit' => { 172 => [\'Regions','RegionsAppliedToDimensionsUnit'] },
      +	'regionappliedtodimensionsw' => { 172 => [\'Regions','RegionsAppliedToDimensionsW'] },
      +	'regionarea' => { 172 => [\'Regions','RegionsRegionListArea'] },
      +	'regionaread' => { 172 => [\'Regions','RegionsRegionListAreaD'] },
      +	'regionareah' => { 172 => [\'Regions','RegionsRegionListAreaH'] },
      +	'regionareaunit' => { 172 => [\'Regions','RegionsRegionListAreaUnit'] },
      +	'regionareaw' => { 172 => [\'Regions','RegionsRegionListAreaW'] },
      +	'regionareax' => { 172 => [\'Regions','RegionsRegionListAreaX'] },
      +	'regionareay' => { 172 => [\'Regions','RegionsRegionListAreaY'] },
      +	'regionbarcodevalue' => { 172 => [\'Regions','RegionsRegionListBarCodeValue'] },
      +	'regionconstraints' => { 307 => 'RegionConstraints' },
      +	'regiondescription' => { 172 => [\'Regions','RegionsRegionListDescription'] },
      +	'regionextensions' => { 172 => [\'Regions','RegionsRegionListExtensions'] },
      +	'regionfocususage' => { 172 => [\'Regions','RegionsRegionListFocusUsage'] },
      +	'regioninfo' => { 172 => 'Regions' },
      +	'regioninfodateregionsvalid' => { 175 => [\'RegionInfo','RegionInfoDateRegionsValid'] },
      +	'regioninfomp' => { 175 => 'RegionInfo' },
      +	'regioninforegions' => { 175 => [\'RegionInfo','RegionInfoRegions'] },
      +	'regionlist' => { 172 => [\'Regions','RegionsRegionList'] },
      +	'regionname' => { 172 => [\'Regions','RegionsRegionListName'] },
      +	'regionpersondisplayname' => { 175 => [\'RegionInfo','RegionInfoRegionsPersonDisplayName'] },
      +	'regionpersonemaildigest' => { 175 => [\'RegionInfo','RegionInfoRegionsPersonEmailDigest'] },
      +	'regionpersonliveidcid' => { 175 => [\'RegionInfo','RegionInfoRegionsPersonLiveIdCID'] },
      +	'regionpersonsourceid' => { 175 => [\'RegionInfo','RegionInfoRegionsPersonSourceID'] },
      +	'regionrectangle' => { 175 => [\'RegionInfo','RegionInfoRegionsRectangle'] },
      +	'regionrotation' => { 172 => [\'Regions','RegionsRegionListRotation'] },
      +	'regionseealso' => { 172 => [\'Regions','RegionsRegionListSeeAlso'] },
      +	'regiontype' => { 172 => [\'Regions','RegionsRegionListType'] },
      +	'registryentryrole' => { 489 => [\'RegistryId','RegistryIdRegEntryRole'] },
      +	'registryid' => { 489 => 'RegistryId' },
      +	'registryitemid' => { 489 => [\'RegistryId','RegistryIdRegItemId'] },
      +	'registryorganisationid' => { 489 => [\'RegistryId','RegistryIdRegOrgId'] },
      +	'relatedaudiofile' => { 155 => 'data' },
      +	'relatedaudiofilename' => { 155 => '1Name' },
      +	'relatedaudiofiletype' => { 155 => '0Type' },
      +	'relatedimagefileformat' => { 119 => 0x1000 },
      +	'relatedimageheight' => { 119 => 0x1002 },
      +	'relatedimagewidth' => { 119 => 0x1001 },
      +	'relatedresourceid' => { 118 => [\'ResourceRelationship','ResourceRelationshipRelatedResourceID'] },
      +	'relatedsoundfile' => { 119 => 0xa004, 483 => 'RelatedSoundFile' },
      +	'relatedvideofile' => { 169 => 'data' },
      +	'relatedvideofilename' => { 169 => '1Name' },
      +	'relatedvideofiletype' => { 169 => '0Type' },
      +	'relation' => { 480 => 'relation' },
      +	'relationshipaccordingto' => { 118 => [\'ResourceRelationship','ResourceRelationshipRelationshipAccordingTo'] },
      +	'relationshipestablisheddate' => { 118 => [\'ResourceRelationship','ResourceRelationshipRelationshipEstablishedDate'] },
      +	'relationshipofresource' => { 118 => [\'ResourceRelationship','ResourceRelationshipRelationshipOfResource'] },
      +	'relationshipremarks' => { 118 => [\'ResourceRelationship','ResourceRelationshipRelationshipRemarks'] },
      +	'relativealtitude' => { 116 => 'RelativeAltitude' },
      +	'relativepeakaudiofilepath' => { 503 => 'relativePeakAudioFilePath' },
      +	'relativetimestamp' => { 503 => 'relativeTimestamp' },
      +	'relativetimestampscale' => { 503 => [\'relativeTimestamp','relativeTimestampScale'] },
      +	'relativetimestampvalue' => { 503 => [\'relativeTimestamp','relativeTimestampValue'] },
      +	'releasebuttontousedial' => { 279 => '17.8', 280 => '18.5', 282 => '18.4', 283 => '18.4', 288 => '33.8', 289 => '17.6', 292 => '18.5', 293 => '18.4' },
      +	'releasedate' => { 131 => 0x1e, 372 => 'rldt', 472 => 'ReleaseDate', 503 => 'releaseDate' },
      +	'releasemode' => { 113 => 0x3001, 247 => 0x184d, 420 => 0xb049 },
      +	'releasemode2' => { 428 => 0x112c, 429 => [0x112c,0x8], 430 => [0x1108,0x8], 431 => [0x1184,0x8], 432 => [0x1160,0x8], 433 => [0x4,0x1018], 434 => [0x4,0x210], 435 => [0x4,0x210], 436 => [0x4,0x208], 438 => [0x67,0x3f], 439 => [0x6b,0x6d,0x73,0x4b], 440 => [0x6b,0x4b], 441 => 0x10, 442 => 0x10, 443 => 0x9, 450 => 0x34 },
      +	'releasemode3' => { 428 => 0x1128, 429 => 0x1128, 430 => 0x1104, 431 => 0x1180, 432 => 0x115c, 433 => 0x1014, 434 => 0x20c, 435 => 0x20c, 436 => 0x204 },
      +	'releaseready' => { 489 => 'ReleaseReady' },
      +	'releasesetting' => { 97 => 0x1016 },
      +	'releasetime' => { 131 => 0x23, 472 => 'ReleaseTime' },
      +	'remoteonduration' => { 281 => '3.4', 284 => '17.2', 285 => '18.2', 286 => '18.2', 287 => '18.2', 289 => '18.2', 290 => '4.3', 294 => '19.2' },
      +	'renditionclass' => { 504 => 'RenditionClass' },
      +	'renditionof' => { 504 => 'RenditionOf' },
      +	'renditionofalternatepaths' => { 504 => [\'RenditionOf','RenditionOfAlternatePaths'] },
      +	'renditionofdocumentid' => { 504 => [\'RenditionOf','RenditionOfDocumentID'] },
      +	'renditionoffilepath' => { 504 => [\'RenditionOf','RenditionOfFilePath'] },
      +	'renditionoffrompart' => { 504 => [\'RenditionOf','RenditionOfFromPart'] },
      +	'renditionofinstanceid' => { 504 => [\'RenditionOf','RenditionOfInstanceID'] },
      +	'renditionoflastmodifydate' => { 504 => [\'RenditionOf','RenditionOfLastModifyDate'] },
      +	'renditionoflasturl' => { 504 => [\'RenditionOf','RenditionOfLastURL'] },
      +	'renditionoflinkcategory' => { 504 => [\'RenditionOf','RenditionOfLinkCategory'] },
      +	'renditionoflinkform' => { 504 => [\'RenditionOf','RenditionOfLinkForm'] },
      +	'renditionofmanager' => { 504 => [\'RenditionOf','RenditionOfManager'] },
      +	'renditionofmanagervariant' => { 504 => [\'RenditionOf','RenditionOfManagerVariant'] },
      +	'renditionofmanageto' => { 504 => [\'RenditionOf','RenditionOfManageTo'] },
      +	'renditionofmanageui' => { 504 => [\'RenditionOf','RenditionOfManageUI'] },
      +	'renditionofmaskmarkers' => { 504 => [\'RenditionOf','RenditionOfMaskMarkers'] },
      +	'renditionoforiginaldocumentid' => { 504 => [\'RenditionOf','RenditionOfOriginalDocumentID'] },
      +	'renditionofpartmapping' => { 504 => [\'RenditionOf','RenditionOfPartMapping'] },
      +	'renditionofplacedresolutionunit' => { 504 => [\'RenditionOf','RenditionOfPlacedResolutionUnit'] },
      +	'renditionofplacedxresolution' => { 504 => [\'RenditionOf','RenditionOfPlacedXResolution'] },
      +	'renditionofplacedyresolution' => { 504 => [\'RenditionOf','RenditionOfPlacedYResolution'] },
      +	'renditionofrenditionclass' => { 504 => [\'RenditionOf','RenditionOfRenditionClass'] },
      +	'renditionofrenditionparams' => { 504 => [\'RenditionOf','RenditionOfRenditionParams'] },
      +	'renditionoftopart' => { 504 => [\'RenditionOf','RenditionOfToPart'] },
      +	'renditionofversionid' => { 504 => [\'RenditionOf','RenditionOfVersionID'] },
      +	'renditionparams' => { 504 => 'RenditionParams' },
      +	'repeatingflashcount' => { 209 => 0xd, 210 => 0xe, 211 => 0xe, 212 => 0xe, 213 => 0xe, 288 => '17.2', 289 => '24.2', 290 => '9.2', 291 => '24.2', 294 => '25.2' },
      +	'repeatingflashcountbuilt-in' => { 256 => 0x4db },
      +	'repeatingflashcountexternal' => { 256 => 0x4c3 },
      +	'repeatingflashoutput' => { 288 => '17.1', 289 => '24.1', 290 => '9.1', 291 => '24.1', 294 => '25.1' },
      +	'repeatingflashoutputexternal' => { 256 => 0x4c0 },
      +	'repeatingflashrate' => { 209 => 0xc, 210 => 0xd, 211 => 0xd, 212 => 0xd, 213 => 0xd, 288 => '18.1', 289 => '25.1', 290 => '10.1', 291 => '25.1', 294 => '26.1' },
      +	'repeatingflashratebuilt-in' => { 256 => 0x4da },
      +	'repeatingflashrateexternal' => { 256 => 0x4c2 },
      +	'requirements' => { 380 => "\xa9req" },
      +	'requires' => { 475 => 'requires' },
      +	'resampleparams' => { 503 => 'resampleParams' },
      +	'resampleparamsquality' => { 503 => [\'resampleParams','resampleParamsQuality'] },
      +	'resamplingkerneldenominators050' => { 138 => 0xe50 },
      +	'resamplingkerneldenominators067' => { 138 => 0xe4f },
      +	'resamplingkerneldenominators100' => { 138 => 0xe51 },
      +	'resaved' => { 396 => 0x21e },
      +	'resetblacksegrows' => { 138 => 0x181a },
      +	'resolution' => { 162 => 'Resolution' },
      +	'resolutionmode' => { 397 => [0x87,0x4] },
      +	'resolutionunit' => { 119 => 0x128, 134 => 0x2, 499 => 'ResolutionUnit' },
      +	'resourceid' => { 118 => [\'ResourceRelationship','ResourceRelationshipResourceID'] },
      +	'resourcerelationship' => { 118 => 'ResourceRelationship' },
      +	'resourcerelationshipid' => { 118 => [\'ResourceRelationship','ResourceRelationshipResourceRelationshipID'] },
      +	'restrictdrivemodes' => { 84 => 0x612 },
      +	'restrictions' => { 496 => 'restrictions' },
      +	'retouchareafeather' => { 477 => [\'RetouchAreas','RetouchAreasFeather'], 479 => [\'RetouchAreas','RetouchAreasFeather'] },
      +	'retouchareamaskalpha' => { 477 => [\'RetouchAreas','RetouchAreasMasksAlpha'], 479 => [\'RetouchAreas','RetouchAreasMasksAlpha'] },
      +	'retouchareamaskangle' => { 477 => [\'RetouchAreas','RetouchAreasMasksAngle'], 479 => [\'RetouchAreas','RetouchAreasMasksAngle'] },
      +	'retouchareamaskbottom' => { 477 => [\'RetouchAreas','RetouchAreasMasksBottom'], 479 => [\'RetouchAreas','RetouchAreasMasksBottom'] },
      +	'retouchareamaskcentervalue' => { 477 => [\'RetouchAreas','RetouchAreasMasksCenterValue'], 479 => [\'RetouchAreas','RetouchAreasMasksCenterValue'] },
      +	'retouchareamaskcenterweight' => { 477 => [\'RetouchAreas','RetouchAreasMasksCenterWeight'], 479 => [\'RetouchAreas','RetouchAreasMasksCenterWeight'] },
      +	'retouchareamaskdabs' => { 477 => [\'RetouchAreas','RetouchAreasMasksDabs'], 479 => [\'RetouchAreas','RetouchAreasMasksDabs'] },
      +	'retouchareamaskfeather' => { 477 => [\'RetouchAreas','RetouchAreasMasksFeather'], 479 => [\'RetouchAreas','RetouchAreasMasksFeather'] },
      +	'retouchareamaskflipped' => { 477 => [\'RetouchAreas','RetouchAreasMasksFlipped'], 479 => [\'RetouchAreas','RetouchAreasMasksFlipped'] },
      +	'retouchareamaskflow' => { 477 => [\'RetouchAreas','RetouchAreasMasksFlow'], 479 => [\'RetouchAreas','RetouchAreasMasksFlow'] },
      +	'retouchareamaskfullx' => { 477 => [\'RetouchAreas','RetouchAreasMasksFullX'], 479 => [\'RetouchAreas','RetouchAreasMasksFullX'] },
      +	'retouchareamaskfully' => { 477 => [\'RetouchAreas','RetouchAreasMasksFullY'], 479 => [\'RetouchAreas','RetouchAreasMasksFullY'] },
      +	'retouchareamaskinputdigest' => { 477 => [\'RetouchAreas','RetouchAreasMasksInputDigest'], 479 => [\'RetouchAreas','RetouchAreasMasksInputDigest'] },
      +	'retouchareamaskleft' => { 477 => [\'RetouchAreas','RetouchAreasMasksLeft'], 479 => [\'RetouchAreas','RetouchAreasMasksLeft'] },
      +	'retouchareamaskmaskactive' => { 477 => [\'RetouchAreas','RetouchAreasMasksMaskActive'], 479 => [\'RetouchAreas','RetouchAreasMasksMaskActive'] },
      +	'retouchareamaskmaskblendmode' => { 477 => [\'RetouchAreas','RetouchAreasMasksMaskBlendMode'], 479 => [\'RetouchAreas','RetouchAreasMasksMaskBlendMode'] },
      +	'retouchareamaskmaskdigest' => { 477 => [\'RetouchAreas','RetouchAreasMasksMaskDigest'], 479 => [\'RetouchAreas','RetouchAreasMasksMaskDigest'] },
      +	'retouchareamaskmaskinverted' => { 477 => [\'RetouchAreas','RetouchAreasMasksMaskInverted'], 479 => [\'RetouchAreas','RetouchAreasMasksMaskInverted'] },
      +	'retouchareamaskmaskname' => { 477 => [\'RetouchAreas','RetouchAreasMasksMaskName'], 479 => [\'RetouchAreas','RetouchAreasMasksMaskName'] },
      +	'retouchareamaskmasks' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasks'], 479 => [\'RetouchAreas','RetouchAreasMasksMasks'] },
      +	'retouchareamaskmasksalpha' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksAlpha'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksAlpha'] },
      +	'retouchareamaskmasksangle' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksAngle'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksAngle'] },
      +	'retouchareamaskmasksbottom' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksBottom'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksBottom'] },
      +	'retouchareamaskmaskscentervalue' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksCenterValue'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksCenterValue'] },
      +	'retouchareamaskmaskscenterweight' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksCenterWeight'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksCenterWeight'] },
      +	'retouchareamaskmasksdabs' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksDabs'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksDabs'] },
      +	'retouchareamaskmasksfeather' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksFeather'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksFeather'] },
      +	'retouchareamaskmasksflipped' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksFlipped'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksFlipped'] },
      +	'retouchareamaskmasksflow' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksFlow'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksFlow'] },
      +	'retouchareamaskmasksfullx' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksFullX'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksFullX'] },
      +	'retouchareamaskmasksfully' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksFullY'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksFullY'] },
      +	'retouchareamaskmasksinputdigest' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksInputDigest'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksInputDigest'] },
      +	'retouchareamaskmasksleft' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksLeft'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksLeft'] },
      +	'retouchareamaskmasksmaskactive' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksMaskActive'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksMaskActive'] },
      +	'retouchareamaskmasksmaskblendmode' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksMaskBlendMode'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksMaskBlendMode'] },
      +	'retouchareamaskmasksmaskdigest' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksMaskDigest'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksMaskDigest'] },
      +	'retouchareamaskmasksmaskinverted' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksMaskInverted'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksMaskInverted'] },
      +	'retouchareamaskmasksmaskname' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksMaskName'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksMaskName'] },
      +	'retouchareamaskmasksmasksubtype' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksMaskSubType'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksMaskSubType'] },
      +	'retouchareamaskmasksmasksyncid' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksMaskSyncID'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksMaskSyncID'] },
      +	'retouchareamaskmasksmaskversion' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksMaskVersion'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksMaskVersion'] },
      +	'retouchareamaskmasksmidpoint' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksMidpoint'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksMidpoint'] },
      +	'retouchareamaskmasksorigin' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksOrigin'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksOrigin'] },
      +	'retouchareamaskmasksperimetervalue' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksPerimeterValue'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksPerimeterValue'] },
      +	'retouchareamaskmasksradius' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksRadius'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksRadius'] },
      +	'retouchareamaskmasksreferencepoint' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksReferencePoint'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksReferencePoint'] },
      +	'retouchareamaskmasksright' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksRight'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksRight'] },
      +	'retouchareamaskmasksroundness' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksRoundness'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksRoundness'] },
      +	'retouchareamaskmaskssizex' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksSizeX'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksSizeX'] },
      +	'retouchareamaskmaskssizey' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksSizeY'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksSizeY'] },
      +	'retouchareamaskmaskstop' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksTop'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksTop'] },
      +	'retouchareamaskmasksubtype' => { 477 => [\'RetouchAreas','RetouchAreasMasksMaskSubType'], 479 => [\'RetouchAreas','RetouchAreasMasksMaskSubType'] },
      +	'retouchareamaskmasksvalue' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksMaskValue'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksMaskValue'] },
      +	'retouchareamaskmasksversion' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksVersion'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksVersion'] },
      +	'retouchareamaskmaskswhat' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksWhat'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksWhat'] },
      +	'retouchareamaskmaskswholeimagearea' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksWholeImageArea'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksWholeImageArea'] },
      +	'retouchareamaskmasksx' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksX'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksX'] },
      +	'retouchareamaskmasksy' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksY'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksY'] },
      +	'retouchareamaskmasksyncid' => { 477 => [\'RetouchAreas','RetouchAreasMasksMaskSyncID'], 479 => [\'RetouchAreas','RetouchAreasMasksMaskSyncID'] },
      +	'retouchareamaskmaskszerox' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksZeroX'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksZeroX'] },
      +	'retouchareamaskmaskszeroy' => { 477 => [\'RetouchAreas','RetouchAreasMasksMasksZeroY'], 479 => [\'RetouchAreas','RetouchAreasMasksMasksZeroY'] },
      +	'retouchareamaskmaskversion' => { 477 => [\'RetouchAreas','RetouchAreasMasksMaskVersion'], 479 => [\'RetouchAreas','RetouchAreasMasksMaskVersion'] },
      +	'retouchareamaskmidpoint' => { 477 => [\'RetouchAreas','RetouchAreasMasksMidpoint'], 479 => [\'RetouchAreas','RetouchAreasMasksMidpoint'] },
      +	'retouchareamaskorigin' => { 477 => [\'RetouchAreas','RetouchAreasMasksOrigin'], 479 => [\'RetouchAreas','RetouchAreasMasksOrigin'] },
      +	'retouchareamaskperimetervalue' => { 477 => [\'RetouchAreas','RetouchAreasMasksPerimeterValue'], 479 => [\'RetouchAreas','RetouchAreasMasksPerimeterValue'] },
      +	'retouchareamaskradius' => { 477 => [\'RetouchAreas','RetouchAreasMasksRadius'], 479 => [\'RetouchAreas','RetouchAreasMasksRadius'] },
      +	'retouchareamaskrange' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMask'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMask'] },
      +	'retouchareamaskrangeareamodels' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskAreaModels'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskAreaModels'] },
      +	'retouchareamaskrangeareamodelscolorsampleinfo' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskAreaModelsColorRangeMaskAreaSampleInfo'] },
      +	'retouchareamaskrangeareamodelscomponents' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskAreaModelsAreaComponents'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskAreaModelsAreaComponents'] },
      +	'retouchareamaskrangecoloramount' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskColorAmount'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskColorAmount'] },
      +	'retouchareamaskrangedepthfeather' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskDepthFeather'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskDepthFeather'] },
      +	'retouchareamaskrangedepthmax' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskDepthMax'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskDepthMax'] },
      +	'retouchareamaskrangedepthmin' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskDepthMin'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskDepthMin'] },
      +	'retouchareamaskrangeinvert' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskInvert'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskInvert'] },
      +	'retouchareamaskrangelumfeather' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskLumFeather'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskLumFeather'] },
      +	'retouchareamaskrangeluminancedepthsampleinfo' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskLuminanceDepthSampleInfo'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskLuminanceDepthSampleInfo'] },
      +	'retouchareamaskrangelummax' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskLumMax'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskLumMax'] },
      +	'retouchareamaskrangelummin' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskLumMin'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskLumMin'] },
      +	'retouchareamaskrangelumrange' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskLumRange'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskLumRange'] },
      +	'retouchareamaskrangesampletype' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskSampleType'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskSampleType'] },
      +	'retouchareamaskrangetype' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskType'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskType'] },
      +	'retouchareamaskrangeversion' => { 477 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskVersion'], 479 => [\'RetouchAreas','RetouchAreasMasksCorrectionRangeMaskVersion'] },
      +	'retouchareamaskreferencepoint' => { 477 => [\'RetouchAreas','RetouchAreasMasksReferencePoint'], 479 => [\'RetouchAreas','RetouchAreasMasksReferencePoint'] },
      +	'retouchareamaskright' => { 477 => [\'RetouchAreas','RetouchAreasMasksRight'], 479 => [\'RetouchAreas','RetouchAreasMasksRight'] },
      +	'retouchareamaskroundness' => { 477 => [\'RetouchAreas','RetouchAreasMasksRoundness'], 479 => [\'RetouchAreas','RetouchAreasMasksRoundness'] },
      +	'retouchareamasks' => { 477 => [\'RetouchAreas','RetouchAreasMasks'], 479 => [\'RetouchAreas','RetouchAreasMasks'] },
      +	'retouchareamasksizex' => { 477 => [\'RetouchAreas','RetouchAreasMasksSizeX'], 479 => [\'RetouchAreas','RetouchAreasMasksSizeX'] },
      +	'retouchareamasksizey' => { 477 => [\'RetouchAreas','RetouchAreasMasksSizeY'], 479 => [\'RetouchAreas','RetouchAreasMasksSizeY'] },
      +	'retouchareamasktop' => { 477 => [\'RetouchAreas','RetouchAreasMasksTop'], 479 => [\'RetouchAreas','RetouchAreasMasksTop'] },
      +	'retouchareamaskvalue' => { 477 => [\'RetouchAreas','RetouchAreasMasksMaskValue'], 479 => [\'RetouchAreas','RetouchAreasMasksMaskValue'] },
      +	'retouchareamaskversion' => { 477 => [\'RetouchAreas','RetouchAreasMasksVersion'], 479 => [\'RetouchAreas','RetouchAreasMasksVersion'] },
      +	'retouchareamaskwhat' => { 477 => [\'RetouchAreas','RetouchAreasMasksWhat'], 479 => [\'RetouchAreas','RetouchAreasMasksWhat'] },
      +	'retouchareamaskwholeimagearea' => { 477 => [\'RetouchAreas','RetouchAreasMasksWholeImageArea'], 479 => [\'RetouchAreas','RetouchAreasMasksWholeImageArea'] },
      +	'retouchareamaskx' => { 477 => [\'RetouchAreas','RetouchAreasMasksX'], 479 => [\'RetouchAreas','RetouchAreasMasksX'] },
      +	'retouchareamasky' => { 477 => [\'RetouchAreas','RetouchAreasMasksY'], 479 => [\'RetouchAreas','RetouchAreasMasksY'] },
      +	'retouchareamaskzerox' => { 477 => [\'RetouchAreas','RetouchAreasMasksZeroX'], 479 => [\'RetouchAreas','RetouchAreasMasksZeroX'] },
      +	'retouchareamaskzeroy' => { 477 => [\'RetouchAreas','RetouchAreasMasksZeroY'], 479 => [\'RetouchAreas','RetouchAreasMasksZeroY'] },
      +	'retouchareamethod' => { 477 => [\'RetouchAreas','RetouchAreasMethod'], 479 => [\'RetouchAreas','RetouchAreasMethod'] },
      +	'retouchareaoffsety' => { 477 => [\'RetouchAreas','RetouchAreasOffsetY'], 479 => [\'RetouchAreas','RetouchAreasOffsetY'] },
      +	'retouchareaopacity' => { 477 => [\'RetouchAreas','RetouchAreasOpacity'], 479 => [\'RetouchAreas','RetouchAreasOpacity'] },
      +	'retouchareas' => { 477 => 'RetouchAreas', 479 => 'RetouchAreas' },
      +	'retouchareaseed' => { 477 => [\'RetouchAreas','RetouchAreasSeed'], 479 => [\'RetouchAreas','RetouchAreasSeed'] },
      +	'retouchareasourcestate' => { 477 => [\'RetouchAreas','RetouchAreasSourceState'], 479 => [\'RetouchAreas','RetouchAreasSourceState'] },
      +	'retouchareasourcex' => { 477 => [\'RetouchAreas','RetouchAreasSourceX'], 479 => [\'RetouchAreas','RetouchAreasSourceX'] },
      +	'retouchareaspottype' => { 477 => [\'RetouchAreas','RetouchAreasSpotType'], 479 => [\'RetouchAreas','RetouchAreasSpotType'] },
      +	'retouchhistory' => { 226 => 0x9e },
      +	'retouchinfo' => { 477 => 'RetouchInfo', 479 => 'RetouchInfo' },
      +	'retouchnefprocessing' => { 236 => 0x5 },
      +	'retractlensonpoweroff' => { 84 => 0x814 },
      +	'reuse' => { 307 => 'Reuse' },
      +	'reuseallowed' => { 506 => 'ReuseAllowed' },
      +	'reuseprohibited' => { 496 => 'reuseProhibited' },
      +	'reverseexposurecompdial' => { 286 => '5.2' },
      +	'reversefocusring' => { 295 => 0x163 },
      +	'reverseindicators' => { 279 => '12.1', 280 => '6.1', 282 => '6.1', 283 => '6.1', 284 => '4.3', 285 => '5.2', 286 => '5.4', 288 => '33.5', 289 => '5.1', 292 => '6.1', 293 => '6.1', 294 => '6.2', 295 => 0xc1 },
      +	'reverseshutterspeedaperture' => { 286 => '5.3' },
      +	'revision' => { 481 => 'revision' },
      +	'rflensmffocusringsensitivity' => { 84 => 0x714 },
      +	'rflenstype' => { 57 => 0x3d },
      +	'rgbcurvelimits' => { 108 => 0x238 },
      +	'rgbcurvepoints' => { 107 => 0x7, 108 => 0x20e },
      +	'rgbtables' => { 119 => 0xcd3b },
      +	'richtextcomment' => { 486 => 'RichTextComment' },
      +	'ricohdate' => { 386 => 0x6 },
      +	'ricohimageheight' => { 386 => 0x2 },
      +	'ricohimagewidth' => { 386 => 0x0 },
      +	'rightalbedo' => { 468 => 'RightAlbedo' },
      +	'rightascension' => { 165 => 'RightAscension' },
      +	'rights' => { 480 => 'rights' },
      +	'rightsagent' => { 496 => 'rightsAgent' },
      +	'rightsowner' => { 496 => 'rightsOwner' },
      +	'roll' => { 115 => 0x8, 380 => ['roll',"\xa9frl"] },
      +	'rollangle' => { 247 => 0x350b, 248 => 0x2c24, 252 => 0xc21a, 257 => 0x36f4, 258 => 0x2efb, 260 => 0xce32, 261 => 0xeaeb, 297 => 0x903, 320 => 0x90, 354 => 0x1, 392 => 0x2 },
      +	'romoperationmode' => { 97 => 0x80d },
      +	'rotation' => { 30 => 0x17, 31 => 0x18, 96 => 0x3, 103 => 0x10002, 108 => 0x26e, 114 => 'QuickTime-Rotation', 123 => 0x4, 165 => 'Rotation', 182 => [0x65,0x50], 183 => 0x46, 184 => 0x5a, 187 => 0x10, 247 => 0x3693, 248 => 0xca, 255 => '590.1', 272 => 0x76a43207, 320 => 0x30, 336 => '17.2', 366 => 0xd8, 373 => 'irot', 407 => 0x3f, 408 => 0x3f, 418 => 0x10 },
      +	'routedto' => { 485 => 'RoutedTo' },
      +	'routing' => { 371 => 'Routing' },
      +	'routingdestinations' => { 467 => 'RoutingDestinations' },
      +	'routingexclusions' => { 467 => 'RoutingExclusions' },
      +	'routingnotes' => { 485 => 'RoutingNotes' },
      +	'rowsperstrip' => { 119 => 0x116 },
      +	'rpp' => { 472 => 'rpp' },
      +	'rtkflag' => { 116 => 'RtkFlag' },
      +	'rtkstdhgt' => { 116 => 'RtkStdHgt' },
      +	'rtkstdlat' => { 116 => 'RtkStdLat' },
      +	'rtkstdlon' => { 116 => 'RtkStdLon' },
      +	'safetyshift' => { 84 => 0x108 },
      +	'safetyshiftinavortv' => { 82 => 0x10, 83 => 0x10, 85 => 0xf, 86 => 0x10, 89 => 0x10 },
      +	'sameexposurefornewaperture' => { 84 => 0x112 },
      +	'samplebits' => { 155 => 'SampleBits' },
      +	'samplepagerange' => { 493 => 'samplePageRange' },
      +	'samplerate' => { 155 => 'SampleRate' },
      +	'samplesperpixel' => { 119 => 0x115, 325 => 0x8, 499 => 'SamplesPerPixel' },
      +	'samplestructure' => { 133 => 0x5a },
      +	'samsungmodelid' => { 394 => 0x3 },
      +	'sanyoquality' => { 396 => 0x201 },
      +	'sanyothumbnail' => { 396 => 0x100 },
      +	'saturation' => { 10 => 0x6e, 12 => 0x76, 34 => 0xe, 51 => 0x1, 63 => 0x7, 112 => 0xd, 113 => [0x3013,0x1f], 119 => [0xa409,0xfe55], 127 => 0x1003, 156 => 'Saturation', 181 => 0x1f, 182 => 0x32, 183 => 0x28, 184 => 0x1a, 189 => 0x1, 226 => 0xaa, 231 => 0x35, 232 => 0x3b, 233 => 0x43, 320 => 0x40, 322 => 0x300d, 355 => 0x1f, 362 => 0xd, 381 => 0x27, 383 => 0x58, 386 => 0x28, 387 => 0x1013, 397 => 0x10, 407 => 0x1e, 408 => 0x1b, 420 => 0x2005, 477 => 'Saturation', 479 => 'Saturation', 483 => 'Saturation' },
      +	'saturationadj' => { 103 => 0x20901, 108 => 0x116, 226 => 0x94, 271 => 0x1, 275 => 0x2e, 454 => 0x8016 },
      +	'saturationadjustmentaqua' => { 477 => 'SaturationAdjustmentAqua', 479 => 'SaturationAdjustmentAqua' },
      +	'saturationadjustmentblue' => { 477 => 'SaturationAdjustmentBlue', 479 => 'SaturationAdjustmentBlue' },
      +	'saturationadjustmentgreen' => { 477 => 'SaturationAdjustmentGreen', 479 => 'SaturationAdjustmentGreen' },
      +	'saturationadjustmentmagenta' => { 477 => 'SaturationAdjustmentMagenta', 479 => 'SaturationAdjustmentMagenta' },
      +	'saturationadjustmentorange' => { 477 => 'SaturationAdjustmentOrange', 479 => 'SaturationAdjustmentOrange' },
      +	'saturationadjustmentpurple' => { 477 => 'SaturationAdjustmentPurple', 479 => 'SaturationAdjustmentPurple' },
      +	'saturationadjustmentred' => { 477 => 'SaturationAdjustmentRed', 479 => 'SaturationAdjustmentRed' },
      +	'saturationadjustmentyellow' => { 477 => 'SaturationAdjustmentYellow', 479 => 'SaturationAdjustmentYellow' },
      +	'saturationauto' => { 71 => 0x98 },
      +	'saturationfaithful' => { 19 => 0xfe, 70 => 0x68, 71 => 0x68 },
      +	'saturationlandscape' => { 19 => 0xfc, 70 => 0x38, 71 => 0x38 },
      +	'saturationmonochrome' => { 70 => 0x80, 71 => 0x80 },
      +	'saturationneutral' => { 19 => 0xfd, 70 => 0x50, 71 => 0x50 },
      +	'saturationportrait' => { 19 => 0xfb, 70 => 0x20, 71 => 0x20 },
      +	'saturationsetting' => { 305 => 0x1010, 409 => 0x11, 425 => 0x9 },
      +	'saturationstandard' => { 19 => 0xfa, 70 => 0x8, 71 => 0x8 },
      +	'saturationuserdef1' => { 19 => 0x100, 70 => 0x98, 71 => 0xb0 },
      +	'saturationuserdef2' => { 19 => 0x101, 70 => 0xb0, 71 => 0xc8 },
      +	'saturationuserdef3' => { 19 => 0x102, 70 => 0xc8, 71 => 0xe0 },
      +	'saveid' => { 504 => 'SaveID' },
      +	'sbaanalysiscomplete' => { 138 => 0xc35 },
      +	'sbablack' => { 138 => 0xc25 },
      +	'sbagmoffset' => { 138 => 0xc4a },
      +	'sbagray' => { 138 => 0xc26 },
      +	'sbagreenmagentabal' => { 138 => 0xc33 },
      +	'sbahighgray' => { 138 => 0xc46 },
      +	'sbailloffset' => { 138 => 0xc49 },
      +	'sbailluminantbal' => { 138 => 0xc34 },
      +	'sbalowgray' => { 138 => 0xc47 },
      +	'sbaneutralbal' => { 138 => 0xc32 },
      +	'sbawhite' => { 138 => 0xc27 },
      +	'scaletype' => { 503 => 'scaleType' },
      +	'scanimageenhancer' => { 237 => 0x60 },
      +	'scanningdirection' => { 133 => 0x64 },
      +	'scene' => { 380 => 'scen', 488 => 'Scene', 503 => 'scene' },
      +	'scenearea' => { 300 => 0x211, 302 => 0x1031 },
      +	'sceneassist' => { 226 => 0x9c },
      +	'scenecapturetype' => { 119 => 0xa406, 483 => 'SceneCaptureType' },
      +	'scenedetect' => { 300 => 0x210, 302 => 0x1030 },
      +	'scenedetectdata' => { 300 => 0x212, 302 => 0x1033 },
      +	'scenemode' => { 142 => 0xfa02, 186 => 0x100, 226 => 0x8f, 297 => 0x509, 302 => 0x403, 320 => 0x8001, 329 => 0xf, 420 => 0xb023 },
      +	'scenemodeused' => { 144 => [0x6002,0xf002] },
      +	'scenerecognition' => { 127 => 0x1425 },
      +	'sceneselect' => { 396 => 0x21f },
      +	'scenetype' => { 119 => 0xa301, 483 => 'SceneType' },
      +	'screentips' => { 279 => '12.7', 280 => '5.3', 288 => '13.1', 289 => '4.4', 292 => '5.4', 294 => '5.1' },
      +	'scriptversion' => { 138 => 0x1770 },
      +	'season' => { 489 => 'Season', 492 => 'season' },
      +	'seasonidentifier' => { 489 => [\'Season','SeasonIdentifier'] },
      +	'seasonname' => { 489 => [\'Season','SeasonName'] },
      +	'seasonnumber' => { 489 => [\'Season','SeasonNumber'] },
      +	'secondaryftp' => { 467 => 'SecondaryFTP' },
      +	'secondaryslotfunction' => { 229 => 0x22c, 247 => 0x1d0, 257 => 0x1d0 },
      +	'section' => { 493 => 'section' },
      +	'securityclassification' => { 119 => 0x9212 },
      +	'selectableafpoint' => { 84 => 0x509 },
       	'selectafareaselectionmode' => { 2 => 0xc },
      -	'selectafareaselectmode' => { 81 => 0x512 },
      -	'selfdata' => { 113 => 'SelfData' },
      -	'selftimer' => { 34 => 0x2, 306 => 0x2e, 382 => 0x214, 414 => 0x1134, 415 => 0x1134, 416 => 0x1110, 417 => 0x118c, 418 => 0x1168, 419 => 0x1020, 420 => 0x218, 421 => 0x218, 422 => 0x210 },
      -	'selftimer2' => { 74 => 0x1d },
      -	'selftimerinterval' => { 276 => '19.2' },
      -	'selftimermode' => { 116 => 0x882b },
      -	'selftimershotcount' => { 267 => '20.2', 269 => '20.3', 270 => '20.3', 271 => '18.2', 272 => '19.2', 273 => '19.2', 274 => '19.3', 276 => '19.3', 279 => '20.3', 280 => '20.3', 281 => '20.2' },
      -	'selftimershotinterval' => { 267 => '20.3', 269 => '20.2', 270 => '20.2', 274 => '19.2', 279 => '20.2', 280 => '20.2' },
      -	'selftimertime' => { 94 => 0x1806, 179 => 0x1f, 266 => '18.1', 267 => '20.1', 268 => '3.3', 269 => '20.1', 270 => '20.1', 271 => '18.1', 272 => '19.1', 273 => '19.1', 274 => '19.1', 275 => '7.2', 276 => '19.1', 277 => '3.3', 279 => '20.1', 280 => '20.1', 281 => '20.1' },
      -	'sellingagency' => { 478 => 'sellingAgency' },
      -	'seminfo' => { 116 => 0x8546 },
      -	'sensingmethod' => { 116 => 0xa217, 468 => 'SensingMethod' },
      -	'sensitivityadjust' => { 341 => 0x40 },
      -	'sensitivitysteps' => { 322 => ['14.3','17.4'], 324 => 0x1 },
      -	'sensitivitytype' => { 116 => 0x8830, 469 => 'SensitivityType' },
      -	'sensor' => { 186 => 0x665e },
      -	'sensorarea' => { 288 => 0x400 },
      -	'sensorareas' => { 380 => 0xa010 },
      -	'sensorbitdepth' => { 308 => 0x312d },
      -	'sensorbluelevel' => { 71 => 0x5 },
      -	'sensorcalibration' => { 287 => 0x805 },
      -	'sensorcleaning' => { 87 => 0xd },
      -	'sensorfullheight' => { 133 => 0xf904 },
      -	'sensorfullwidth' => { 133 => 0xf903 },
      -	'sensorheight' => { 133 => 0xf901, 138 => 0xfa21, 183 => 0x8, 308 => 0x312c, 350 => 0x109, 373 => 0x1602 },
      -	'sensorimageheight' => { 134 => 0x3ee },
      -	'sensorimagewidth' => { 134 => 0x3ed },
      -	'sensorleftborder' => { 134 => 0x3eb },
      -	'sensorleftmargin' => { 350 => 0x10a },
      -	'sensorpixelsize' => { 219 => 0x9a },
      -	'sensorredlevel' => { 71 => 0x4 },
      -	'sensorserialnumber' => { 134 => 0x9ce },
      -	'sensorsize' => { 152 => 'SensorSize', 341 => 0x35 },
      -	'sensortemperature' => { 286 => 0x1500, 288 => 0x1007, 346 => 0xc, 350 => 0x210, 383 => [0x39,0x55] },
      -	'sensortemperature2' => { 346 => 0xe, 350 => 0x211 },
      -	'sensortopborder' => { 134 => 0x3ec },
      -	'sensortopmargin' => { 350 => 0x10b },
      -	'sensorwidth' => { 133 => 0xf900, 138 => 0xfa20, 183 => 0xa, 308 => 0x312b, 350 => 0x108, 373 => 0x1601 },
      -	'sequence' => { 367 => 0x7, 368 => 0x35, 369 => 0x36 },
      -	'sequencefilenumber' => { 415 => 0x4, 416 => 0x4, 417 => 0x4, 418 => 0x4, 426 => 0xc, 427 => 0xc, 428 => 0x1a },
      -	'sequenceimagenumber' => { 415 => 0x0, 416 => 0x0, 417 => 0x0, 418 => 0x0, 426 => 0x8, 427 => 0x8, 428 => 0x12, 435 => 0x24 },
      -	'sequencelength' => { 426 => 0x22, 427 => 0x1e, 428 => [0x16,0x1e] },
      -	'sequencename' => { 477 => 'sequenceName' },
      -	'sequencenumber' => { 74 => 0x9, 110 => 0x301c, 124 => 0x1101, 136 => 0x1d, 245 => 0x51c, 306 => 0x2b, 395 => [0x10c,0x30c], 406 => 0xb04a, 477 => 'sequenceNumber' },
      -	'sequenceshotinterval' => { 382 => 0x224 },
      -	'sequencetotalnumber' => { 477 => 'sequenceTotalNumber' },
      -	'sequentialshot' => { 382 => 0x20e },
      -	'serialnumber' => { 61 => 0xc, 94 => 0x180b, 116 => [0xa431,0xfde9], 133 => 0xfa04, 135 => 0xfa00, 137 => 0xc354, 138 => 0xfa19, 149 => 0x0, 152 => 'SerialNumber', 186 => 0x5501, 219 => [0xa0,0x1d], 284 => 0x101, 288 => [0x404,0x101a], 301 => 0x303, 303 => 0x305, 308 => 0x3103, 341 => 0x229, 350 => 0x102, 351 => 0x407, 366 => ['SNum','slno'], 367 => 0x15, 368 => 0x4b, 369 => 0x7e, 373 => 0x5, 380 => 0xa002, 383 => 0x2, 406 => 0x2031, 459 => 'SerialNumber', 469 => 'BodySerialNumber' },
      -	'serialnumberformat' => { 61 => 0x15, 94 => 0x183b },
      -	'serialnumberhash' => { 366 => 'CAME' },
      -	'series' => { 474 => 'Series' },
      -	'seriesdatetime' => { 441 => 'SeriesDateTime' },
      -	'seriesdescription' => { 441 => 'SeriesDescription' },
      -	'seriesidentifier' => { 474 => [\'Series','SeriesIdentifier'] },
      -	'seriesmodality' => { 441 => 'SeriesModality' },
      -	'seriesname' => { 474 => [\'Series','SeriesName'] },
      -	'seriesnumber' => { 441 => 'SeriesNumber', 478 => 'seriesNumber' },
      -	'seriestitle' => { 478 => 'seriesTitle' },
      -	'serviceidentifier' => { 129 => 0x1e },
      -	'servingsize' => { 480 => 'servingSize' },
      -	'setbuttoncrosskeysfunc' => { 84 => 0x0, 85 => 0x0 },
      -	'setbuttonwhenshooting' => { 79 => 0x1, 81 => 0x704, 87 => 0xc },
      -	'setfunctionwhenshooting' => { 82 => 0x0, 83 => 0x1, 86 => 0x1 },
      -	'setting' => { 477 => 'setting' },
      -	'shadingcompensation' => { 283 => 0x50c, 306 => 0x8a },
      -	'shadingcompensation2' => { 287 => 0x1012 },
      -	'shadow' => { 383 => 0xe },
      -	'shadowadj' => { 100 => 0x2030b },
      -	'shadowcorrection' => { 341 => 0x79 },
      -	'shadowprotection' => { 258 => 0x0 },
      -	'shadows' => { 116 => 0xfe52, 456 => 'Shadows', 462 => 'Shadows', 464 => 'Shadows' },
      -	'shadows2012' => { 462 => 'Shadows2012', 464 => 'Shadows2012' },
      -	'shadowsadj' => { 439 => 0x901a },
      -	'shadowscale' => { 116 => 0xc633 },
      -	'shadowtint' => { 462 => 'ShadowTint', 464 => 'ShadowTint' },
      -	'shadowtone' => { 124 => 0x1040 },
      -	'shakereduction' => { 343 => 0x1, 344 => 0x1 },
      -	'sharpendetail' => { 462 => 'SharpenDetail', 464 => 'SharpenDetail' },
      -	'sharpenedgemasking' => { 462 => 'SharpenEdgeMasking', 464 => 'SharpenEdgeMasking' },
      -	'sharpening' => { 308 => 0x300b },
      -	'sharpeningadj' => { 262 => 0x2b },
      -	'sharpeningkernel' => { 134 => 0x92f },
      -	'sharpenradius' => { 462 => 'SharpenRadius', 464 => 'SharpenRadius' },
      -	'sharpness' => { 8 => [0x42,0x48], 10 => 0x72, 12 => 0x74, 34 => 0xf, 71 => 0x2, 109 => 0xb, 110 => [0x3011,0x21], 116 => [0xa40a,0xfe56], 124 => 0x1001, 136 => 0x6b, 145 => 0x37, 152 => 'Sharpness', 176 => 0x21, 177 => 0x30, 178 => 0x26, 179 => 0x18, 184 => 0x3, 219 => 0x6, 221 => 0x32, 222 => 0x33, 223 => 0x39, 288 => 0x100f, 306 => 0x41, 341 => 0x21, 348 => 0xb, 367 => 0x26, 369 => 0x56, 372 => 0x22, 373 => [0x1003,0x1014], 383 => 0x11, 393 => 0x1c, 394 => 0x19, 406 => 0x2006, 435 => 0x52, 462 => 'Sharpness', 464 => 'Sharpness', 468 => 'Sharpness' },
      -	'sharpnessadj' => { 100 => 0x20310, 105 => 0x25a, 439 => 0x801a },
      -	'sharpnessadjon' => { 100 => '0x20310.0' },
      -	'sharpnessauto' => { 68 => 0x94 },
      -	'sharpnessfactor' => { 288 => 0x102a },
      -	'sharpnessfaithful' => { 19 => 0xf5, 67 => 0x64, 68 => 0x64 },
      -	'sharpnessfrequency' => { 8 => [0x41,0x47], 71 => 0x3 },
      -	'sharpnesslandscape' => { 19 => 0xf3, 67 => 0x34, 68 => 0x34 },
      -	'sharpnessmonochrome' => { 19 => 0xf6, 67 => 0x7c, 68 => 0x7c },
      -	'sharpnessneutral' => { 19 => 0xf4, 67 => 0x4c, 68 => 0x4c },
      -	'sharpnessovershoot' => { 439 => 0x801b },
      -	'sharpnessportrait' => { 19 => 0xf2, 67 => 0x1c, 68 => 0x1c },
      -	'sharpnesssetting' => { 283 => 0x506, 291 => 0x1013, 395 => 0x12, 411 => 0xa },
      -	'sharpnessstandard' => { 19 => 0xf1, 67 => 0x4, 68 => 0x4 },
      -	'sharpnessstrength' => { 100 => 0x20311 },
      -	'sharpnessthreshold' => { 439 => 0x801d },
      -	'sharpnessundershoot' => { 439 => 0x801c },
      -	'sharpnessuserdef1' => { 19 => 0xf7, 67 => 0x94, 68 => 0xac },
      -	'sharpnessuserdef2' => { 19 => 0xf8, 67 => 0xac, 68 => 0xc4 },
      -	'sharpnessuserdef3' => { 19 => 0xf9, 67 => 0xc4, 68 => 0xdc },
      -	'shiftcols' => { 134 => 0xc70 },
      -	'shootid' => { 477 => 'shootID' },
      -	'shootingdistance' => { 100 => 0x20701 },
      -	'shootinginfodisplay' => { 266 => '13.2', 267 => '5.1', 275 => '10.2', 276 => '4.1', 279 => '5.1', 281 => '5.3' },
      -	'shootinginfomonitorofftime' => { 266 => '26.2', 267 => '22.2', 269 => '22.2', 270 => '22.2', 274 => '21.2', 275 => '9.1', 276 => '21.2', 279 => '22.2', 280 => '22.2', 281 => '22.2' },
      -	'shootingmode' => { 152 => 'ShootingMode', 219 => 0x89, 306 => 0x1f },
      -	'shootingmodesetting' => { 268 => '5.1' },
      -	'shortdescription' => { 466 => 'shortdescription' },
      -	'shortdocumentid' => { 128 => 0xba },
      +	'selectafareaselectmode' => { 84 => 0x512 },
      +	'selfdata' => { 116 => 'SelfData' },
      +	'selftimer' => { 34 => 0x2, 320 => 0x2e, 396 => 0x214, 428 => 0x1134, 429 => 0x1134, 430 => 0x1110, 431 => 0x118c, 432 => 0x1168, 433 => 0x1020, 434 => 0x218, 435 => 0x218, 436 => 0x210 },
      +	'selftimer2' => { 77 => 0x1d },
      +	'selftimerinterval' => { 289 => '19.2' },
      +	'selftimermode' => { 119 => 0x882b },
      +	'selftimershotcount' => { 280 => '20.2', 282 => '20.3', 283 => '20.3', 284 => '18.2', 285 => '19.2', 286 => '19.2', 287 => '19.3', 289 => '19.3', 292 => '20.3', 293 => '20.3', 294 => '20.2', 295 => 0x2d },
      +	'selftimershotinterval' => { 280 => '20.3', 282 => '20.2', 283 => '20.2', 287 => '19.2', 292 => '20.2', 293 => '20.2', 295 => 0x31 },
      +	'selftimertime' => { 97 => 0x1806, 184 => 0x1f, 279 => '18.1', 280 => '20.1', 281 => '3.3', 282 => '20.1', 283 => '20.1', 284 => '18.1', 285 => '19.1', 286 => '19.1', 287 => '19.1', 288 => '7.2', 289 => '19.1', 290 => '3.3', 292 => '20.1', 293 => '20.1', 294 => '20.1', 295 => 0x2b },
      +	'sellingagency' => { 493 => 'sellingAgency' },
      +	'seminfo' => { 119 => 0x8546 },
      +	'sensingmethod' => { 119 => 0xa217, 483 => 'SensingMethod' },
      +	'sensitivityadjust' => { 355 => 0x40 },
      +	'sensitivitysteps' => { 336 => ['14.3','17.4'], 338 => 0x1 },
      +	'sensitivitytype' => { 119 => 0x8830, 484 => 'SensitivityType' },
      +	'sensor' => { 191 => 0x665e },
      +	'sensorarea' => { 302 => 0x400 },
      +	'sensorareas' => { 394 => 0xa010 },
      +	'sensorbitdepth' => { 322 => 0x312d },
      +	'sensorbluelevel' => { 74 => 0x5 },
      +	'sensorcalibration' => { 301 => 0x805 },
      +	'sensorcleaning' => { 90 => 0xd },
      +	'sensorfullheight' => { 137 => 0xf904 },
      +	'sensorfullwidth' => { 137 => 0xf903 },
      +	'sensorheight' => { 137 => 0xf901, 142 => 0xfa21, 188 => 0x8, 322 => 0x312c, 364 => 0x109, 387 => 0x1602 },
      +	'sensorimageheight' => { 138 => 0x3ee },
      +	'sensorimagewidth' => { 138 => 0x3ed },
      +	'sensorleftborder' => { 138 => 0x3eb },
      +	'sensorleftmargin' => { 364 => 0x10a },
      +	'sensorpixelsize' => { 226 => 0x9a },
      +	'sensorredlevel' => { 74 => 0x4 },
      +	'sensorserialnumber' => { 138 => 0x9ce },
      +	'sensorshield' => { 229 => 0x66d },
      +	'sensorsize' => { 156 => 'SensorSize', 355 => 0x35 },
      +	'sensortemperature' => { 300 => 0x1500, 302 => 0x1007, 360 => 0xc, 364 => 0x210, 397 => [0x39,0x55] },
      +	'sensortemperature2' => { 360 => 0xe, 364 => 0x211 },
      +	'sensortopborder' => { 138 => 0x3ec },
      +	'sensortopmargin' => { 364 => 0x10b },
      +	'sensortype' => { 320 => 0xca },
      +	'sensorwidth' => { 137 => 0xf900, 142 => 0xfa20, 188 => 0xa, 322 => 0x312b, 364 => 0x108, 387 => 0x1601 },
      +	'sequence' => { 381 => 0x7, 382 => 0x35, 383 => 0x36 },
      +	'sequencefilenumber' => { 429 => 0x4, 430 => 0x4, 431 => 0x4, 432 => 0x4, 441 => 0xc, 442 => 0xc, 443 => 0x1a },
      +	'sequenceimagenumber' => { 429 => 0x0, 430 => 0x0, 431 => 0x0, 432 => 0x0, 441 => 0x8, 442 => 0x8, 443 => 0x12, 450 => 0x24 },
      +	'sequencelength' => { 441 => 0x22, 442 => 0x1e, 443 => [0x16,0x1e] },
      +	'sequencename' => { 492 => 'sequenceName' },
      +	'sequencenumber' => { 77 => 0x9, 113 => 0x301c, 127 => 0x1101, 140 => 0x1d, 256 => 0x51c, 320 => 0x2b, 409 => [0x10c,0x30c], 420 => 0xb04a, 492 => 'sequenceNumber' },
      +	'sequenceshotinterval' => { 396 => 0x224 },
      +	'sequencetotalnumber' => { 492 => 'sequenceTotalNumber' },
      +	'sequentialshot' => { 396 => 0x20e },
      +	'serialnumber' => { 64 => 0xc, 97 => 0x180b, 119 => [0xa431,0xfde9], 137 => 0xfa04, 139 => 0xfa00, 141 => 0xc354, 142 => 0xfa19, 153 => 0x0, 156 => 'SerialNumber', 191 => 0x5501, 226 => [0xa0,0x1d], 298 => 0x101, 302 => [0x404,0x101a], 315 => 0x303, 317 => 0x305, 322 => 0x3103, 355 => 0x229, 364 => 0x102, 365 => 0x407, 380 => ['SNum','slno'], 381 => 0x15, 382 => 0x4b, 383 => 0x7e, 387 => 0x5, 394 => 0xa002, 397 => 0x2, 420 => 0x2031, 474 => 'SerialNumber', 484 => 'BodySerialNumber' },
      +	'serialnumberformat' => { 64 => 0x15, 97 => 0x183b },
      +	'serialnumberhash' => { 380 => 'CAME' },
      +	'series' => { 489 => 'Series' },
      +	'seriesdatetime' => { 456 => 'SeriesDateTime' },
      +	'seriesdescription' => { 456 => 'SeriesDescription' },
      +	'seriesidentifier' => { 489 => [\'Series','SeriesIdentifier'] },
      +	'seriesmodality' => { 456 => 'SeriesModality' },
      +	'seriesname' => { 489 => [\'Series','SeriesName'] },
      +	'seriesnumber' => { 456 => 'SeriesNumber', 493 => 'seriesNumber' },
      +	'seriestitle' => { 493 => 'seriesTitle' },
      +	'serviceidentifier' => { 132 => 0x1e },
      +	'servingsize' => { 495 => 'servingSize' },
      +	'setbuttoncrosskeysfunc' => { 87 => 0x0, 88 => 0x0 },
      +	'setbuttonwhenshooting' => { 82 => 0x1, 84 => 0x704, 90 => 0xc },
      +	'setclockfromlocationdata' => { 229 => 0x61d },
      +	'setfunctionwhenshooting' => { 85 => 0x0, 86 => 0x1, 89 => 0x1 },
      +	'setting' => { 492 => 'setting' },
      +	'shadingcompensation' => { 297 => 0x50c, 320 => 0x8a },
      +	'shadingcompensation2' => { 301 => 0x1012 },
      +	'shadow' => { 397 => 0xe },
      +	'shadowadj' => { 103 => 0x2030b },
      +	'shadowcorrection' => { 355 => 0x79 },
      +	'shadowprotection' => { 271 => 0x0 },
      +	'shadows' => { 119 => 0xfe52, 420 => 0x2032, 471 => 'Shadows', 477 => 'Shadows', 479 => 'Shadows' },
      +	'shadows2012' => { 477 => 'Shadows2012', 479 => 'Shadows2012' },
      +	'shadowsadj' => { 454 => 0x901a },
      +	'shadowscale' => { 119 => 0xc633 },
      +	'shadowtint' => { 477 => 'ShadowTint', 479 => 'ShadowTint' },
      +	'shadowtone' => { 127 => 0x1040 },
      +	'shakereduction' => { 357 => 0x1, 358 => 0x1 },
      +	'shareduserrating' => { 179 => 'WM/SharedUserRating' },
      +	'sharpendetail' => { 477 => 'SharpenDetail', 479 => 'SharpenDetail' },
      +	'sharpenedgemasking' => { 477 => 'SharpenEdgeMasking', 479 => 'SharpenEdgeMasking' },
      +	'sharpening' => { 322 => 0x300b },
      +	'sharpeningadj' => { 275 => 0x2b },
      +	'sharpeningkernel' => { 138 => 0x92f },
      +	'sharpenradius' => { 477 => 'SharpenRadius', 479 => 'SharpenRadius' },
      +	'sharpness' => { 8 => [0x42,0x48], 10 => 0x72, 12 => 0x74, 34 => 0xf, 63 => 0x6, 74 => 0x2, 112 => 0xb, 113 => [0x3011,0x21], 119 => [0xa40a,0xfe56], 127 => 0x1001, 140 => 0x6b, 149 => 0x37, 156 => 'Sharpness', 181 => 0x21, 182 => 0x30, 183 => 0x26, 184 => 0x18, 189 => 0x3, 226 => 0x6, 231 => 0x32, 232 => 0x33, 233 => 0x39, 302 => 0x100f, 320 => 0x41, 355 => 0x21, 362 => 0xb, 381 => 0x26, 383 => 0x56, 386 => 0x22, 387 => [0x1003,0x1014], 397 => 0x11, 407 => 0x1c, 408 => 0x19, 420 => 0x2006, 450 => 0x52, 477 => 'Sharpness', 479 => 'Sharpness', 483 => 'Sharpness' },
      +	'sharpnessadj' => { 103 => 0x20310, 108 => 0x25a, 454 => 0x801a },
      +	'sharpnessadjon' => { 103 => '0x20310.0' },
      +	'sharpnessauto' => { 71 => 0x94 },
      +	'sharpnessfactor' => { 302 => 0x102a },
      +	'sharpnessfaithful' => { 19 => 0xf5, 70 => 0x64, 71 => 0x64 },
      +	'sharpnessfrequency' => { 8 => [0x41,0x47], 74 => 0x3 },
      +	'sharpnesslandscape' => { 19 => 0xf3, 70 => 0x34, 71 => 0x34 },
      +	'sharpnessmonochrome' => { 19 => 0xf6, 70 => 0x7c, 71 => 0x7c },
      +	'sharpnessneutral' => { 19 => 0xf4, 70 => 0x4c, 71 => 0x4c },
      +	'sharpnessovershoot' => { 454 => 0x801b },
      +	'sharpnessportrait' => { 19 => 0xf2, 70 => 0x1c, 71 => 0x1c },
      +	'sharpnessrange' => { 420 => 0x2035 },
      +	'sharpnesssetting' => { 297 => 0x506, 305 => 0x1013, 409 => 0x12, 425 => 0xa },
      +	'sharpnessstandard' => { 19 => 0xf1, 70 => 0x4, 71 => 0x4 },
      +	'sharpnessstrength' => { 103 => 0x20311 },
      +	'sharpnessthreshold' => { 454 => 0x801d },
      +	'sharpnessundershoot' => { 454 => 0x801c },
      +	'sharpnessuserdef1' => { 19 => 0xf7, 70 => 0x94, 71 => 0xac },
      +	'sharpnessuserdef2' => { 19 => 0xf8, 70 => 0xac, 71 => 0xc4 },
      +	'sharpnessuserdef3' => { 19 => 0xf9, 70 => 0xc4, 71 => 0xdc },
      +	'shiftcols' => { 138 => 0xc70 },
      +	'shootid' => { 492 => 'shootID' },
      +	'shootingdistance' => { 103 => 0x20701 },
      +	'shootinginfodisplay' => { 279 => '13.2', 280 => '5.1', 288 => '10.2', 289 => '4.1', 292 => '5.1', 294 => '5.3' },
      +	'shootinginfomonitorofftime' => { 279 => '26.2', 280 => '22.2', 282 => '22.2', 283 => '22.2', 287 => '21.2', 288 => '9.1', 289 => '21.2', 292 => '22.2', 293 => '22.2', 294 => '22.2', 295 => 0x37 },
      +	'shootingmode' => { 156 => 'ShootingMode', 226 => 0x89, 320 => 0x1f },
      +	'shootingmodesetting' => { 281 => '5.1' },
      +	'shortdescription' => { 481 => 'shortdescription' },
      +	'shortdocumentid' => { 131 => 0xba },
      +	'shortname' => { 477 => 'ShortName', 479 => 'ShortName' },
       	'shortownername' => { 19 => 0xac },
      -	'shortreleasetimelag' => { 81 => 0x80d },
      -	'shorttitle' => { 358 => '@sti' },
      -	'shotdate' => { 488 => 'shotDate' },
      -	'shotday' => { 488 => 'shotDay' },
      -	'shotlocation' => { 488 => 'shotLocation' },
      -	'shotname' => { 366 => 'shot', 488 => 'shotName' },
      -	'shotnumber' => { 488 => 'shotNumber' },
      -	'shotnumbersincepowerup' => { 410 => 0x44e, 426 => 0x1a, 427 => 0x16, 428 => 0xa },
      -	'shotnumbersincepowerup2' => { 395 => 0x200 },
      -	'shotsize' => { 488 => 'shotSize' },
      -	'shownevent' => { 474 => 'EventExt' },
      -	'showneventidentifier' => { 474 => [\'EventExt','EventExtIdentifier'] },
      -	'showneventname' => { 474 => [\'EventExt','EventExtName'] },
      -	'shutter' => { 424 => 0x20, 425 => 0x26 },
      -	'shutter-aelock' => { 79 => 0x4, 81 => 0x701, 82 => 0x3, 83 => 0x4, 84 => 0x3, 85 => 0x3, 86 => 0x4, 87 => 0x2 },
      -	'shutteraelbutton' => { 80 => 0x4 },
      -	'shutterbuttonafonbutton' => { 81 => 0x701 },
      -	'shuttercount' => { 11 => 0x176, 55 => 0x1, 219 => 0xa7, 228 => [0x6a,0x157,0x24d], 229 => 0x286, 230 => 0x279, 231 => 0x284, 232 => 0x242, 233 => 0x280, 234 => 0x276, 235 => [0x27d,0x27f], 236 => 0x246, 239 => 0x2d6, 240 => 0x321, 241 => 0xbd8, 242 => 0x287, 243 => 0x320, 244 => 0x24a, 245 => 0x5fb, 248 => 0x2d5, 341 => 0x5d, 404 => 0x846, 409 => [0x125,0x14a], 424 => 0x32, 425 => 0x3a },
      -	'shuttercount2' => { 424 => 0x4c, 425 => [0x50,0x52,0x58] },
      -	'shuttercount3' => { 424 => [0x1a0,0x1aa,0x1bd], 425 => [0x19f,0x1cb,0x1cd] },
      -	'shuttercurtainsync' => { 79 => 0xf, 80 => 0xf, 81 => 0x305, 82 => 0xe, 83 => 0xf, 84 => 0x8, 85 => 0x8, 86 => 0xf, 87 => 0x8 },
      -	'shuttermode' => { 136 => 0x1b, 219 => 0x34 },
      -	'shutterreleasebuttonae-l' => { 266 => '17.7', 267 => '18.4', 269 => '78.4', 270 => '78.4', 271 => '16.1', 272 => '17.1', 273 => '17.1', 274 => '17.1', 275 => '7.1', 276 => '17.5', 279 => '18.4', 280 => '78.4', 281 => '18.2' },
      -	'shutterreleasemethod' => { 94 => 0x1010 },
      -	'shutterreleasenocfcard' => { 79 => 0x2, 80 => 0x2, 87 => 0xf },
      -	'shutterreleasetiming' => { 94 => 0x1011 },
      -	'shutterreleasewithoutlens' => { 81 => 0x711 },
      -	'shutterspeedlock' => { 267 => '38.1', 269 => '38.1', 270 => '38.1', 279 => '38.1', 280 => '38.1' },
      -	'shutterspeedrange' => { 81 => 0x10c },
      -	'shutterspeedsetting' => { 179 => 0x6, 393 => 0x2f, 394 => 0x28, 395 => 0x0 },
      -	'shutterspeedvalue' => { 90 => 0x1, 116 => 0x9201, 288 => 0x1000, 350 => 0x400, 468 => 'ShutterSpeedValue' },
      -	'shuttertype' => { 124 => 0x1050, 306 => 0x9f },
      -	'sidecarforextension' => { 476 => 'SidecarForExtension' },
      -	'sigmaimpulseparameters' => { 134 => 0xe0d },
      -	'sigmascalingfactorcamera' => { 134 => 0xe0c },
      -	'sigmascalingfactorlowres' => { 134 => 0xe0b },
      -	'sigmasizetable' => { 134 => 0xe0f },
      -	'similarityindex' => { 128 => 0xe4 },
      -	'singleframebracketing' => { 179 => 0x21 },
      -	'skilllevel' => { 480 => 'skillLevel' },
      -	'skintonecorrection' => { 341 => 0x95 },
      -	'skiplinetime' => { 134 => 0x184e },
      -	'slaveflashmeteringsegments' => { 341 => 0x20b },
      -	'slideshowname' => { 477 => 'slideshowName' },
      -	'slideshownumber' => { 477 => 'slideshowNumber' },
      -	'slideshowtotalnumber' => { 477 => 'slideshowTotalNumber' },
      -	'slowshutter' => { 74 => 0x8 },
      -	'slowsync' => { 124 => 0x1030 },
      -	'smartalbumcolor' => { 380 => 0x20 },
      -	'smartrange' => { 380 => 0xa012 },
      -	'smileshutter' => { 395 => 0x31 },
      -	'smileshuttermode' => { 395 => 0x27 },
      -	'smoothness' => { 116 => 0xfe57, 462 => 'Smoothness', 464 => 'Smoothness' },
      -	'snapshot' => { 474 => 'SnapshotLink' },
      -	'snapshotformat' => { 474 => [\'SnapshotLink','SnapshotLinkFormat'] },
      -	'snapshotheightpixels' => { 474 => [\'SnapshotLink','SnapshotLinkHeightPixels'] },
      -	'snapshotimagerole' => { 474 => [\'SnapshotLink','SnapshotLinkImageRole'] },
      -	'snapshotlink' => { 474 => [\'SnapshotLink','SnapshotLinkLink'] },
      -	'snapshotlinkqualifier' => { 474 => [\'SnapshotLink','SnapshotLinkLinkQualifier'] },
      -	'snapshots' => { 457 => 'Snapshots' },
      -	'snapshotusedvideoframe' => { 474 => [\'SnapshotLink','SnapshotLinkUsedVideoFrame'] },
      -	'snapshotusedvideoframetimeformat' => { 474 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameTimeFormat'] },
      -	'snapshotusedvideoframetimevalue' => { 474 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameTimeValue'] },
      -	'snapshotusedvideoframevalue' => { 474 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameValue'] },
      -	'snapshotwidthpixels' => { 474 => [\'SnapshotLink','SnapshotLinkWidthPixels'] },
      -	'softskineffect' => { 406 => 0x200f },
      -	'software' => { 116 => 0x131, 153 => 'Software', 296 => 'Software', 350 => 0x203, 360 => 'software', 383 => 0x18, 447 => 'Software', 484 => 'Software' },
      -	'softwareversion' => { 366 => "\xa9swr", 382 => 0x207 },
      -	'songwriter' => { 366 => "\xa9swf" },
      -	'songwriterkeywords' => { 366 => "\xa9swk" },
      -	'sonycropsize' => { 116 => 0x74c8 },
      -	'sonycroptopleft' => { 116 => 0x74c7 },
      -	'sonydatetime' => { 413 => 0x6, 415 => 0x1b6, 416 => 0x210, 417 => 0x1fe, 418 => 0x22c },
      -	'sonydatetime2' => { 424 => 0x51 },
      -	'sonyexposuretime' => { 424 => 0x3a, 425 => 0x46 },
      -	'sonyexposuretime2' => { 435 => 0xe },
      -	'sonyfnumber' => { 424 => 0x3c, 425 => 0x48, 435 => 0x14 },
      -	'sonyimageheight' => { 413 => 0x1a, 426 => 0x44, 427 => 0x3f, 428 => 0x47 },
      -	'sonyimageheightmax' => { 435 => 0x40 },
      -	'sonyimagesize' => { 179 => 0x3b, 393 => 0x54, 394 => 0x54, 395 => 0x9 },
      -	'sonyimagewidth' => { 413 => 0x1c },
      -	'sonyimagewidthmax' => { 435 => 0x3e },
      -	'sonyiso' => { 415 => 0x1218, 416 => 0x11f4, 417 => 0x1270, 418 => [0x1254,0x1258,0x1280], 419 => 0x113c, 420 => 0x344, 421 => 0x346, 422 => 0x320, 435 => 0x4 },
      -	'sonymaxaperture' => { 424 => 0x0, 425 => 0x0 },
      -	'sonymaxaperturevalue' => { 435 => 0x16 },
      -	'sonyminaperture' => { 424 => 0x1, 425 => 0x1 },
      -	'sonymodelid' => { 406 => 0xb001 },
      -	'sonyquality' => { 179 => 0x3c },
      -	'sonytimeminsec' => { 425 => 0x61 },
      -	'sortalbum' => { 358 => 'soal' },
      -	'sortalbumartist' => { 358 => 'soaa' },
      -	'sortartist' => { 358 => 'soar' },
      -	'sortcomposer' => { 358 => 'soco' },
      -	'sortname' => { 358 => 'sonm' },
      -	'sortshow' => { 358 => 'sosn' },
      -	'source' => { 128 => 0x73, 296 => 'Source', 465 => 'source', 466 => 'source', 476 => 'Source' },
      -	'sourcecount' => { 451 => 'SourceCount' },
      -	'sourcecredits' => { 366 => "\xa9src" },
      -	'sourcedirectoryindex' => { 328 => 0x0 },
      -	'sourcefileindex' => { 328 => 0x2 },
      -	'sourcephotoscount' => { 450 => 'SourcePhotosCount' },
      -	'sourceprofileprefix' => { 134 => 0x1390 },
      -	'spatialfrequencyresponse' => { 468 => 'SpatialFrequencyResponse' },
      -	'spatialfrequencyresponsecolumns' => { 468 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseColumns'] },
      -	'spatialfrequencyresponsenames' => { 468 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseNames'] },
      -	'spatialfrequencyresponserows' => { 468 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseRows'] },
      -	'spatialfrequencyresponsevalues' => { 468 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseValues'] },
      -	'speakerplacement' => { 488 => 'speakerPlacement' },
      -	'specialeffectlevel' => { 110 => 0x3030 },
      -	'specialeffectmode' => { 110 => 0x2076 },
      -	'specialeffectsetting' => { 110 => 0x3031 },
      -	'specialinstructions' => { 128 => 0x28 },
      -	'specialmode' => { 288 => 0x200, 382 => 0x200 },
      -	'specialoccasion' => { 480 => 'specialOccasion' },
      -	'specialtypeid' => { 445 => 'SpecialTypeID' },
      -	'spectralsensitivity' => { 116 => 0x8824, 468 => 'SpectralSensitivity' },
      -	'specularwhitelevel' => { 43 => [0x2b9,0x2d0,0x2d4], 44 => 0x56a, 45 => 0x1e4, 46 => [0x1fd,0x2dd], 47 => [0x231,0x30f], 48 => 0x31d },
      -	'speedx' => { 112 => 0x3, 366 => "\xa9xsp" },
      -	'speedy' => { 112 => 0x4, 366 => "\xa9ysp" },
      -	'speedz' => { 112 => 0x5, 366 => "\xa9zsp" },
      -	'spherical' => { 451 => 'Spherical' },
      -	'splitcolumn' => { 350 => 0x222 },
      -	'splittoningbalance' => { 462 => 'SplitToningBalance', 464 => 'SplitToningBalance' },
      -	'splittoninghighlighthue' => { 462 => 'SplitToningHighlightHue', 464 => 'SplitToningHighlightHue' },
      -	'splittoninghighlightsaturation' => { 462 => 'SplitToningHighlightSaturation', 464 => 'SplitToningHighlightSaturation' },
      -	'splittoningshadowhue' => { 462 => 'SplitToningShadowHue', 464 => 'SplitToningShadowHue' },
      -	'splittoningshadowsaturation' => { 462 => 'SplitToningShadowSaturation', 464 => 'SplitToningShadowSaturation' },
      -	'sport' => { 478 => 'sport' },
      -	'spotfocuspointx' => { 176 => 0x2d },
      -	'spotfocuspointy' => { 176 => 0x2e },
      +	'shortreleasetimelag' => { 84 => 0x80d },
      +	'shorttitle' => { 372 => '@sti' },
      +	'shotdate' => { 503 => 'shotDate' },
      +	'shotday' => { 503 => 'shotDay' },
      +	'shotlocation' => { 503 => 'shotLocation' },
      +	'shotname' => { 380 => 'shot', 503 => 'shotName' },
      +	'shotnumber' => { 503 => 'shotNumber' },
      +	'shotnumbersincepowerup' => { 424 => 0x44e, 441 => 0x1a, 442 => 0x16, 443 => 0xa },
      +	'shotnumbersincepowerup2' => { 409 => 0x200 },
      +	'shotsize' => { 503 => 'shotSize' },
      +	'shotsperinterval' => { 228 => 0xb4, 229 => 0xc0, 252 => 0xc412 },
      +	'showmovement' => { 372 => 'shwm' },
      +	'shownevent' => { 489 => 'EventExt' },
      +	'showneventidentifier' => { 489 => [\'EventExt','EventExtIdentifier'] },
      +	'showneventname' => { 489 => [\'EventExt','EventExtName'] },
      +	'shutter' => { 438 => 0x20, 439 => 0x26, 440 => 0x26 },
      +	'shutter-aelock' => { 82 => 0x4, 84 => 0x701, 85 => 0x3, 86 => 0x4, 87 => 0x3, 88 => 0x3, 89 => 0x4, 90 => 0x2 },
      +	'shutteraelbutton' => { 83 => 0x4 },
      +	'shutterbuttonafonbutton' => { 84 => 0x701 },
      +	'shuttercount' => { 11 => 0x176, 57 => 0x1, 226 => 0xa7, 238 => [0x6a,0x157,0x24d], 239 => 0x286, 240 => 0x279, 241 => 0x284, 242 => 0x242, 243 => 0x280, 244 => 0x276, 245 => [0x27d,0x27f], 246 => 0x246, 249 => 0x2d6, 250 => 0x321, 251 => 0xbd8, 253 => 0x287, 254 => 0x320, 255 => 0x24a, 256 => 0x5fb, 259 => 0x2d5, 355 => 0x5d, 418 => 0x846, 423 => [0x125,0x14a], 438 => 0x32, 439 => 0x3a, 440 => 0x3a },
      +	'shuttercount2' => { 438 => 0x4c, 439 => [0x50,0x52,0x58], 440 => 0x50 },
      +	'shuttercount3' => { 438 => [0x1a0,0x1aa,0x1bd], 439 => [0x19f,0x1cb,0x1cd] },
      +	'shuttercurtainsync' => { 82 => 0xf, 83 => 0xf, 84 => 0x305, 85 => 0xe, 86 => 0xf, 87 => 0x8, 88 => 0x8, 89 => 0xf, 90 => 0x8 },
      +	'shuttermode' => { 57 => 0x17, 140 => 0x1b, 226 => 0x34 },
      +	'shutterreleasebuttonae-l' => { 279 => '17.7', 280 => '18.4', 282 => '78.4', 283 => '78.4', 284 => '16.1', 285 => '17.1', 286 => '17.1', 287 => '17.1', 288 => '7.1', 289 => '17.5', 292 => '18.4', 293 => '78.4', 294 => '18.2', 295 => 0x29 },
      +	'shutterreleasemethod' => { 97 => 0x1010 },
      +	'shutterreleasenocfcard' => { 82 => 0x2, 83 => 0x2, 90 => 0xf },
      +	'shutterreleasetiming' => { 97 => 0x1011 },
      +	'shutterreleasewithoutlens' => { 84 => 0x711 },
      +	'shutterspeedlock' => { 280 => '38.1', 282 => '38.1', 283 => '38.1', 292 => '38.1', 293 => '38.1', 295 => 0xb7 },
      +	'shutterspeedrange' => { 84 => 0x10c },
      +	'shutterspeedsetting' => { 184 => 0x6, 407 => 0x2f, 408 => 0x28, 409 => 0x0 },
      +	'shutterspeedvalue' => { 93 => 0x1, 119 => 0x9201, 302 => 0x1000, 364 => 0x400, 483 => 'ShutterSpeedValue' },
      +	'shuttertype' => { 127 => 0x1050, 320 => 0x9f, 355 => 0x87 },
      +	'sidecarforextension' => { 491 => 'SidecarForExtension' },
      +	'sigmaimpulseparameters' => { 138 => 0xe0d },
      +	'sigmascalingfactorcamera' => { 138 => 0xe0c },
      +	'sigmascalingfactorlowres' => { 138 => 0xe0b },
      +	'sigmasizetable' => { 138 => 0xe0f },
      +	'silentphotography' => { 226 => 0xbf },
      +	'similarityindex' => { 131 => 0xe4 },
      +	'singleframebracketing' => { 184 => 0x21 },
      +	'skilllevel' => { 495 => 'skillLevel' },
      +	'skintonecorrection' => { 355 => 0x95 },
      +	'skiplinetime' => { 138 => 0x184e },
      +	'slaveflashmeteringsegments' => { 355 => 0x20b },
      +	'slideshowname' => { 492 => 'slideshowName' },
      +	'slideshownumber' => { 492 => 'slideshowNumber' },
      +	'slideshowtotalnumber' => { 492 => 'slideshowTotalNumber' },
      +	'slowshutter' => { 77 => 0x8 },
      +	'slowsync' => { 127 => 0x1030 },
      +	'smartalbumcolor' => { 394 => 0x20 },
      +	'smartrange' => { 394 => 0xa012 },
      +	'smileshutter' => { 409 => 0x31 },
      +	'smileshuttermode' => { 409 => 0x27 },
      +	'smoothness' => { 119 => 0xfe57, 477 => 'Smoothness', 479 => 'Smoothness' },
      +	'snapshot' => { 489 => 'SnapshotLink' },
      +	'snapshotformat' => { 489 => [\'SnapshotLink','SnapshotLinkFormat'] },
      +	'snapshotheightpixels' => { 489 => [\'SnapshotLink','SnapshotLinkHeightPixels'] },
      +	'snapshotimagerole' => { 489 => [\'SnapshotLink','SnapshotLinkImageRole'] },
      +	'snapshotlink' => { 489 => [\'SnapshotLink','SnapshotLinkLink'] },
      +	'snapshotlinkqualifier' => { 489 => [\'SnapshotLink','SnapshotLinkLinkQualifier'] },
      +	'snapshots' => { 472 => 'Snapshots' },
      +	'snapshotusedvideoframe' => { 489 => [\'SnapshotLink','SnapshotLinkUsedVideoFrame'] },
      +	'snapshotusedvideoframetimeformat' => { 489 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameTimeFormat'] },
      +	'snapshotusedvideoframetimevalue' => { 489 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameTimeValue'] },
      +	'snapshotusedvideoframevalue' => { 489 => [\'SnapshotLink','SnapshotLinkUsedVideoFrameValue'] },
      +	'snapshotwidthpixels' => { 489 => [\'SnapshotLink','SnapshotLinkWidthPixels'] },
      +	'softskineffect' => { 420 => 0x200f },
      +	'software' => { 119 => 0x131, 157 => 'Software', 310 => 'Software', 364 => 0x203, 374 => 'software', 397 => 0x18, 462 => 'Software', 499 => 'Software' },
      +	'softwareversion' => { 380 => ['@swr',"\xa9swr"], 396 => 0x207 },
      +	'soloist' => { 372 => "\xa9sol" },
      +	'songwriter' => { 380 => "\xa9swf" },
      +	'songwriterkeywords' => { 380 => "\xa9swk" },
      +	'sonycropsize' => { 119 => 0x74c8 },
      +	'sonycroptopleft' => { 119 => 0x74c7 },
      +	'sonydatetime' => { 427 => 0x6, 429 => 0x1b6, 430 => 0x210, 431 => 0x1fe, 432 => 0x22c },
      +	'sonydatetime2' => { 438 => 0x51 },
      +	'sonyexposuretime' => { 438 => 0x3a, 439 => 0x46, 440 => [0x66,0x46] },
      +	'sonyexposuretime2' => { 450 => 0xe },
      +	'sonyfnumber' => { 438 => 0x3c, 439 => 0x48, 440 => [0x68,0x48], 450 => 0x14 },
      +	'sonyimageheight' => { 427 => 0x1a, 441 => 0x44, 442 => 0x3f, 443 => 0x47 },
      +	'sonyimageheightmax' => { 450 => 0x40 },
      +	'sonyimagesize' => { 184 => 0x3b, 407 => 0x54, 408 => 0x54, 409 => 0x9 },
      +	'sonyimagewidth' => { 427 => 0x1c },
      +	'sonyimagewidthmax' => { 450 => 0x3e },
      +	'sonyiso' => { 429 => 0x1218, 430 => 0x11f4, 431 => 0x1270, 432 => [0x1254,0x1258,0x1280], 433 => 0x113c, 434 => 0x344, 435 => 0x346, 436 => 0x320, 450 => 0x4 },
      +	'sonymaxaperture' => { 438 => 0x0, 439 => 0x0 },
      +	'sonymaxaperturevalue' => { 450 => 0x16 },
      +	'sonyminaperture' => { 438 => 0x1, 439 => 0x1 },
      +	'sonymodelid' => { 420 => 0xb001 },
      +	'sonyquality' => { 184 => 0x3c },
      +	'sonytimeminsec' => { 439 => 0x61 },
      +	'sortalbum' => { 372 => 'soal' },
      +	'sortalbumartist' => { 372 => 'soaa' },
      +	'sortartist' => { 372 => 'soar' },
      +	'sortcomposer' => { 372 => 'soco' },
      +	'sortname' => { 372 => 'sonm', 477 => 'SortName', 479 => 'SortName' },
      +	'sortshow' => { 372 => 'sosn' },
      +	'soundengineer' => { 372 => "\xa9sne" },
      +	'source' => { 131 => 0x73, 310 => 'Source', 480 => 'source', 481 => 'source', 491 => 'Source' },
      +	'sourcecount' => { 466 => 'SourceCount' },
      +	'sourcecredits' => { 380 => "\xa9src" },
      +	'sourcedirectoryindex' => { 342 => 0x0 },
      +	'sourcefileindex' => { 342 => 0x2 },
      +	'sourcephotoscount' => { 465 => 'SourcePhotosCount' },
      +	'sourceprofileprefix' => { 138 => 0x1390 },
      +	'spatialfrequencyresponse' => { 483 => 'SpatialFrequencyResponse' },
      +	'spatialfrequencyresponsecolumns' => { 483 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseColumns'] },
      +	'spatialfrequencyresponsenames' => { 483 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseNames'] },
      +	'spatialfrequencyresponserows' => { 483 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseRows'] },
      +	'spatialfrequencyresponsevalues' => { 483 => [\'SpatialFrequencyResponse','SpatialFrequencyResponseValues'] },
      +	'speakerplacement' => { 503 => 'speakerPlacement' },
      +	'specialeffectlevel' => { 113 => 0x3030 },
      +	'specialeffectmode' => { 113 => 0x2076 },
      +	'specialeffectsetting' => { 113 => 0x3031 },
      +	'specialinstructions' => { 131 => 0x28 },
      +	'specialmode' => { 302 => 0x200, 396 => 0x200 },
      +	'specialoccasion' => { 495 => 'specialOccasion' },
      +	'specialtypeid' => { 460 => 'SpecialTypeID' },
      +	'spectralsensitivity' => { 119 => 0x8824, 483 => 'SpectralSensitivity' },
      +	'specularwhitelevel' => { 41 => 0x32b, 42 => 0x281, 45 => [0x2b9,0x2d0,0x2d4], 46 => 0x56a, 47 => 0x1e4, 48 => [0x1fd,0x2dd], 49 => [0x231,0x30f], 50 => 0x31d },
      +	'speedx' => { 115 => 0x3, 380 => "\xa9xsp" },
      +	'speedy' => { 115 => 0x4, 380 => "\xa9ysp" },
      +	'speedz' => { 115 => 0x5, 380 => "\xa9zsp" },
      +	'spherical' => { 466 => 'Spherical' },
      +	'splitcolumn' => { 364 => 0x222 },
      +	'splittoningbalance' => { 477 => 'SplitToningBalance', 479 => 'SplitToningBalance' },
      +	'splittoninghighlighthue' => { 477 => 'SplitToningHighlightHue', 479 => 'SplitToningHighlightHue' },
      +	'splittoninghighlightsaturation' => { 477 => 'SplitToningHighlightSaturation', 479 => 'SplitToningHighlightSaturation' },
      +	'splittoningshadowhue' => { 477 => 'SplitToningShadowHue', 479 => 'SplitToningShadowHue' },
      +	'splittoningshadowsaturation' => { 477 => 'SplitToningShadowSaturation', 479 => 'SplitToningShadowSaturation' },
      +	'sport' => { 493 => 'sport' },
      +	'spotfocuspointx' => { 181 => 0x2d },
      +	'spotfocuspointy' => { 181 => 0x2e },
       	'spotmeteringmode' => { 34 => 0x27 },
      -	'spotmeterlinktoafpoint' => { 81 => 0x107 },
      -	'sractive' => { 322 => '17.1' },
      +	'spotmeterlinktoafpoint' => { 84 => 0x107 },
      +	'sractive' => { 336 => '17.1' },
       	'srawquality' => { 34 => 0x2e },
      -	'srfocallength' => { 343 => 0x3 },
      -	'srhalfpresstime' => { 343 => 0x2 },
      -	'srresult' => { 343 => 0x0, 344 => 0x0 },
      -	'stackedimage' => { 283 => 0x804 },
      -	'standardmatrixcustom' => { 134 => 0x7d4 },
      -	'standardmatrixdaylight' => { 134 => 0x7d0 },
      -	'standardmatrixflash' => { 134 => 0x7d3 },
      -	'standardmatrixfluorescent' => { 134 => 0x7d2 },
      -	'standardmatrixtungsten' => { 134 => 0x7d1 },
      -	'standardoutputhighlightpoint' => { 106 => 0x14 },
      -	'standardoutputsensitivity' => { 116 => 0x8831, 469 => 'StandardOutputSensitivity' },
      -	'standardoutputshadowpoint' => { 106 => 0x15 },
      -	'standardrawcolortone' => { 106 => 0xd },
      -	'standardrawcontrast' => { 106 => 0xf },
      -	'standardrawhighlight' => { 106 => 0x75 },
      -	'standardrawhighlightpoint' => { 106 => 0x12 },
      -	'standardrawlinear' => { 106 => 0x10 },
      -	'standardrawsaturation' => { 106 => 0xe },
      -	'standardrawshadow' => { 106 => 0x7e },
      -	'standardrawshadowpoint' => { 106 => 0x13 },
      -	'standardrawsharpness' => { 106 => 0x11 },
      -	'standardunsharpmaskfineness' => { 106 => 0x94 },
      -	'standardunsharpmaskstrength' => { 106 => 0x92 },
      -	'standardunsharpmaskthreshold' => { 106 => 0x96 },
      -	'standardwhitecustom' => { 134 => 0x838 },
      -	'standardwhitedaylight' => { 134 => 0x834 },
      -	'standardwhiteflash' => { 134 => 0x837 },
      -	'standardwhitefluorescent' => { 134 => 0x836 },
      -	'standardwhitetungsten' => { 134 => 0x835 },
      -	'standbytimer' => { 267 => '19.1', 269 => '19.1', 270 => '19.1', 273 => '18.1', 274 => '18.1', 279 => '19.1', 280 => '19.1' },
      -	'startingpage' => { 478 => 'startingPage' },
      -	'startmovieshooting' => { 81 => 0x70d },
      -	'starttimecode' => { 366 => "\xa9TIM", 488 => 'startTimecode' },
      -	'starttimecodetimeformat' => { 488 => [\'startTimecode','startTimecodeTimeFormat'] },
      -	'starttimecodetimevalue' => { 488 => [\'startTimecode','startTimecodeTimeValue'] },
      -	'starttimecodevalue' => { 488 => [\'startTimecode','startTimecodeValue'] },
      -	'starttimesamplesize' => { 366 => "\xa9TSZ", 488 => 'startTimeSampleSize' },
      -	'starttimescale' => { 366 => "\xa9TSC", 488 => 'startTimeScale' },
      -	'state' => { 157 => 'State', 306 => 0x6b, 476 => 'State' },
      -	'status' => { 443 => 'Status', 455 => 'Status' },
      -	'stereomode' => { 451 => 'StereoMode' },
      -	'stitched' => { 451 => 'Stitched' },
      -	'stitchingsoftware' => { 450 => 'StitchingSoftware', 451 => 'StitchingSoftware' },
      -	'stopsabovebaseiso' => { 414 => 0x113e, 415 => 0x113e, 416 => 0x111a, 417 => 0x1196, 418 => 0x1172, 419 => 0x102a, 420 => 0x222, 421 => 0x222, 422 => 0x217, 435 => 0xa },
      -	'storagemethod' => { 183 => 0x12 },
      -	'storebyorientation' => { 267 => '46.3', 269 => '47.3', 270 => '47.3', 279 => '47.3', 280 => '47.3' },
      -	'storylineidentifier' => { 474 => 'StorylineIdentifier' },
      -	'straightenangle' => { 259 => 0x2fc08431 },
      -	'streamready' => { 474 => 'StreamReady' },
      -	'streamtype' => { 172 => 'StreamType' },
      -	'stretchmode' => { 488 => 'stretchMode' },
      -	'studydatetime' => { 441 => 'StudyDateTime' },
      -	'studydescription' => { 441 => 'StudyDescription' },
      -	'studyid' => { 441 => 'StudyID' },
      -	'studyphysician' => { 441 => 'StudyPhysician' },
      -	'styleperiod' => { 474 => 'StylePeriod' },
      -	'sub-location' => { 128 => 0x5c },
      -	'subfiledata' => { 160 => 'data' },
      -	'subfiledirectory' => { 160 => '1Directory' },
      -	'subfilemimetype' => { 160 => '2MIME' },
      -	'subfilename' => { 160 => '1Name' },
      -	'subfileresource' => { 160 => 'rsrc' },
      -	'subfiletype' => { 116 => 0xfe, 160 => '0Type' },
      -	'subject' => { 292 => 'Subject', 357 => 'Subject', 465 => 'subject', 475 => 'Subject', 489 => 'subject' },
      -	'subjectarea' => { 116 => 0x9214, 468 => 'SubjectArea' },
      -	'subjectcode' => { 473 => 'SubjectCode' },
      -	'subjectdistance' => { 116 => 0x9206, 136 => 0x3e, 468 => 'SubjectDistance' },
      -	'subjectdistancerange' => { 116 => 0xa40c, 468 => 'SubjectDistanceRange' },
      -	'subjectlocation' => { 116 => 0xa214, 468 => 'SubjectLocation' },
      -	'subjectmotion' => { 269 => '78.2', 270 => '78.2', 280 => '78.2' },
      -	'subjectprogram' => { 176 => 0x22 },
      -	'subjectreference' => { 128 => 0xc },
      -	'sublabels1' => { 472 => [\'TagStructure','TagStructureSubLabels'] },
      -	'sublabels2' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabels'] },
      -	'sublabels3' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabels'] },
      -	'sublabels4' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabels'] },
      -	'sublabels5' => { 472 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabels'] },
      -	'subseccreatedate' => { 111 => 'Exif::SubSecCreateDate' },
      -	'subsecdatetimeoriginal' => { 111 => 'Exif::SubSecDateTimeOriginal' },
      -	'subsecmodifydate' => { 111 => 'Exif::SubSecModifyDate' },
      -	'subsectime' => { 116 => 0x9290 },
      -	'subsectimedigitized' => { 116 => 0x9292 },
      -	'subsectimeoriginal' => { 116 => 0x9291 },
      -	'subsection1' => { 478 => 'subsection1' },
      -	'subsection2' => { 478 => 'subsection2' },
      -	'subsection3' => { 478 => 'subsection3' },
      -	'subsection4' => { 478 => 'subsection4' },
      -	'subselector' => { 267 => '49.1', 269 => '71.1', 270 => '71.1', 280 => '71.1' },
      -	'subselectorassignment' => { 267 => '48.1' },
      -	'subselectorcenter' => { 269 => '72.1', 270 => '72.1', 280 => '72.1' },
      -	'subselectorplusdials' => { 267 => '49.2', 269 => '73.1', 270 => '73.1', 280 => '73.1' },
      -	'subtitle' => { 366 => "\xa9snm", 478 => 'subtitle' },
      -	'subtitlekeywords' => { 366 => "\xa9snk" },
      -	'subversionfilename' => { 472 => [\'SubVersions','SubVersionsFileName'] },
      -	'subversionreference' => { 472 => [\'SubVersions','SubVersionsVersRef'] },
      -	'subversions' => { 472 => 'SubVersions' },
      -	'superimposeddisplay' => { 79 => 0xa, 81 => 0x510, 82 => 0x9, 83 => 0xa, 86 => 0xa, 87 => 0xe },
      -	'supermacro' => { 61 => 0x1a },
      -	'supplementalcategories' => { 128 => 0x14, 476 => 'SupplementalCategories' },
      -	'supplementaltype' => { 130 => 0x37 },
      -	'supplementdisplayid' => { 478 => 'supplementDisplayID' },
      -	'supplementstartingpage' => { 478 => 'supplementStartingPage' },
      -	'supplementtitle' => { 478 => 'supplementTitle' },
      -	'supplychainsource' => { 474 => 'SupplyChainSource' },
      -	'supplychainsourceidentifier' => { 474 => [\'SupplyChainSource','SupplyChainSourceIdentifier'] },
      -	'supplychainsourcename' => { 474 => [\'SupplyChainSource','SupplyChainSourceName'] },
      -	'svisosetting' => { 322 => 0x14 },
      -	'swatchcoloranta' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsA'] },
      -	'swatchcolorantb' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsB'] },
      -	'swatchcolorantblack' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsBlack'] },
      -	'swatchcolorantblue' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsBlue'] },
      -	'swatchcolorantcyan' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsCyan'] },
      -	'swatchcolorantgray' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsGray'] },
      -	'swatchcolorantgreen' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsGreen'] },
      -	'swatchcolorantl' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsL'] },
      -	'swatchcolorantmagenta' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsMagenta'] },
      -	'swatchcolorantmode' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsMode'] },
      -	'swatchcolorantred' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsRed'] },
      -	'swatchcolorantswatchname' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsSwatchName'] },
      -	'swatchcoloranttint' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsTint'] },
      -	'swatchcoloranttype' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsType'] },
      -	'swatchcolorantyellow' => { 493 => [\'SwatchGroups','SwatchGroupsColorantsYellow'] },
      -	'swatchgroupname' => { 493 => [\'SwatchGroups','SwatchGroupsGroupName'] },
      -	'swatchgroups' => { 493 => 'SwatchGroups' },
      -	'swatchgroupscolorants' => { 493 => [\'SwatchGroups','SwatchGroupsColorants'] },
      -	'swatchgrouptype' => { 493 => [\'SwatchGroups','SwatchGroupsGroupType'] },
      -	'sweeppanoramadirection' => { 306 => 0x93, 395 => 0x33 },
      -	'sweeppanoramafieldofview' => { 306 => 0x94 },
      -	'sweeppanoramasize' => { 395 => 0x32 },
      -	'switchtoregisteredafpoint' => { 80 => 0x12, 81 => 0x50a },
      -	'symlink' => { 117 => 'SymLink' },
      -	'syncreleasemode' => { 269 => '77.1', 270 => '77.1', 280 => '77.1' },
      -	'system' => { 350 => 0x204 },
      -	'tagged' => { 352 => 0xdd, 353 => 'Tagged', 457 => 'tagged' },
      -	'tagslist' => { 467 => 'TagsList' },
      -	'tagstructure' => { 472 => 'TagStructure' },
      -	'takenumber' => { 488 => 'takeNumber' },
      -	'tapename' => { 488 => 'tapeName' },
      -	'targetaperture' => { 74 => 0x4 },
      -	'targetcompressionratio' => { 92 => 0x1 },
      -	'targetdistancesetting' => { 94 => 0x1807 },
      -	'targetexposuretime' => { 74 => 0x5 },
      -	'targetimagetype' => { 94 => 0x100a },
      -	'targetprinter' => { 116 => 0x151 },
      -	'taxon' => { 115 => 'Taxon' },
      -	'taxonacceptednameusage' => { 115 => [\'Taxon','TaxonAcceptedNameUsage'] },
      -	'taxonacceptednameusageid' => { 115 => [\'Taxon','TaxonAcceptedNameUsageID'] },
      -	'taxonclass' => { 115 => [\'Taxon','TaxonClass'] },
      -	'taxonconceptid' => { 115 => [\'Taxon','TaxonTaxonConceptID'] },
      -	'taxonfamily' => { 115 => [\'Taxon','TaxonFamily'] },
      -	'taxongenus' => { 115 => [\'Taxon','TaxonGenus'] },
      -	'taxonhigherclassification' => { 115 => [\'Taxon','TaxonHigherClassification'] },
      -	'taxonid' => { 115 => [\'Taxon','TaxonTaxonID'] },
      -	'taxoninfraspecificepithet' => { 115 => [\'Taxon','TaxonInfraspecificEpithet'] },
      -	'taxonkingdom' => { 115 => [\'Taxon','TaxonKingdom'] },
      -	'taxonnameaccordingto' => { 115 => [\'Taxon','TaxonNameAccordingTo'] },
      -	'taxonnameaccordingtoid' => { 115 => [\'Taxon','TaxonNameAccordingToID'] },
      -	'taxonnamepublishedin' => { 115 => [\'Taxon','TaxonNamePublishedIn'] },
      -	'taxonnamepublishedinid' => { 115 => [\'Taxon','TaxonNamePublishedInID'] },
      -	'taxonnamepublishedinyear' => { 115 => [\'Taxon','TaxonNamePublishedInYear'] },
      -	'taxonnomenclaturalcode' => { 115 => [\'Taxon','TaxonNomenclaturalCode'] },
      -	'taxonnomenclaturalstatus' => { 115 => [\'Taxon','TaxonNomenclaturalStatus'] },
      -	'taxonorder' => { 115 => [\'Taxon','TaxonOrder'] },
      -	'taxonoriginalnameusage' => { 115 => [\'Taxon','TaxonOriginalNameUsage'] },
      -	'taxonoriginalnameusageid' => { 115 => [\'Taxon','TaxonOriginalNameUsageID'] },
      -	'taxonparentnameusage' => { 115 => [\'Taxon','TaxonParentNameUsage'] },
      -	'taxonparentnameusageid' => { 115 => [\'Taxon','TaxonParentNameUsageID'] },
      -	'taxonphylum' => { 115 => [\'Taxon','TaxonPhylum'] },
      -	'taxonrank' => { 115 => [\'Taxon','TaxonTaxonRank'] },
      -	'taxonremarks' => { 115 => [\'Taxon','TaxonTaxonRemarks'] },
      -	'taxonscientificname' => { 115 => [\'Taxon','TaxonScientificName'] },
      -	'taxonscientificnameauthorship' => { 115 => [\'Taxon','TaxonScientificNameAuthorship'] },
      -	'taxonscientificnameid' => { 115 => [\'Taxon','TaxonScientificNameID'] },
      -	'taxonspecificepithet' => { 115 => [\'Taxon','TaxonSpecificEpithet'] },
      -	'taxonsubgenus' => { 115 => [\'Taxon','TaxonSubgenus'] },
      -	'taxontaxonomicstatus' => { 115 => [\'Taxon','TaxonTaxonomicStatus'] },
      -	'taxonverbatimtaxonrank' => { 115 => [\'Taxon','TaxonVerbatimTaxonRank'] },
      -	'taxonvernacularname' => { 115 => [\'Taxon','TaxonVernacularName'] },
      -	'tda1bandwidth' => { 134 => 0x196f },
      -	'tda1edgepolarity' => { 134 => 0x1971 },
      -	'tda1gain' => { 134 => 0x1970 },
      -	'tda1offset' => { 134 => 0x196e },
      -	'tda2bandwidth' => { 134 => 0x1979 },
      -	'tda2edgepolarity' => { 134 => 0x197b },
      -	'tda2gain' => { 134 => 0x197a },
      -	'tda2offset' => { 134 => 0x1978 },
      -	'tda3bandwidth' => { 134 => 0x1983 },
      -	'tda3edgepolarity' => { 134 => 0x1985 },
      -	'tda3gain' => { 134 => 0x1984 },
      -	'tda3offset' => { 134 => 0x1982 },
      -	'tda4bandwidth' => { 134 => 0x198d },
      -	'tda4edgepolarity' => { 134 => 0x198f },
      -	'tda4gain' => { 134 => 0x198e },
      -	'tda4offset' => { 134 => 0x198c },
      -	'teaser' => { 478 => 'teaser' },
      -	'teleconverter' => { 181 => 0x105, 406 => 0x105 },
      -	'tempampgainx100' => { 134 => 0x1914 },
      -	'tempo' => { 488 => 'tempo' },
      -	'temporalcoverage' => { 474 => 'TemporalCoverage' },
      -	'temporalcoveragefrom' => { 474 => [\'TemporalCoverage','TemporalCoverageTempCoverageFrom'] },
      -	'temporalcoverageto' => { 474 => [\'TemporalCoverage','TemporalCoverageTempCoverageTo'] },
      -	'termsandconditionstext' => { 293 => 'TermsAndConditionsText' },
      -	'termsandconditionsurl' => { 293 => 'TermsAndConditionsURL' },
      -	'testname' => { 117 => 'TestName' },
      -	'textencoding' => { 218 => 0x4 },
      -	'textlayername' => { 476 => [\'TextLayers','TextLayersLayerName'] },
      -	'textlayers' => { 476 => 'TextLayers' },
      -	'textlayertext' => { 476 => [\'TextLayers','TextLayersLayerText'] },
      -	'textstamp' => { 306 => [0x8008,0x8009,0x3b,0x3e] },
      -	'texture' => { 462 => 'Texture', 464 => 'Texture' },
      -	'three-dtrackingfacedetection' => { 269 => '1.4', 270 => '1.4', 280 => '1.4' },
      -	'three-dtrackingwatcharea' => { 269 => '78.1', 270 => '78.1', 280 => '78.1' },
      -	'thresholding' => { 116 => 0x107 },
      -	'thumbnailfilename' => { 94 => 0x817 },
      -	'thumbnailformat' => { 486 => [\'Thumbnails','ThumbnailsFormat'] },
      -	'thumbnailheight' => { 138 => 0xfa55, 486 => [\'Thumbnails','ThumbnailsHeight'] },
      -	'thumbnailimage' => { 6 => 'CNDA', 94 => 0x2008, 111 => 'Exif::ThumbnailImage', 119 => 0x3, 163 => 'data', 288 => 0x100, 366 => 'thmb', 486 => [\'Thumbnails','ThumbnailsImage'] },
      -	'thumbnailimagename' => { 163 => '1Name' },
      -	'thumbnailimagesize' => { 163 => 'ImageSize' },
      -	'thumbnailimagetype' => { 163 => '0Type' },
      -	'thumbnailimagevalidarea' => { 61 => 0x13 },
      -	'thumbnaillength' => { 116 => 0x202 },
      -	'thumbnailoffset' => { 116 => 0x201 },
      -	'thumbnailpng' => { 366 => 'thmb' },
      -	'thumbnails' => { 486 => 'Thumbnails' },
      -	'thumbnailwidth' => { 138 => 0xfa54, 486 => [\'Thumbnails','ThumbnailsWidth'] },
      -	'ticker' => { 478 => 'ticker' },
      -	'tiffhandling' => { 462 => 'TIFFHandling', 464 => 'TIFFHandling' },
      -	'tiffmeteringimage' => { 182 => 0x104c, 404 => 0x1110 },
      -	'tilelength' => { 116 => 0x143 },
      -	'tilewidth' => { 116 => 0x142 },
      -	'time' => { 134 => 0x401, 341 => 0x7 },
      -	'timecodes' => { 116 => 0xc763 },
      -	'timecreated' => { 128 => 0x3c, 136 => 0x14, 145 => 0x10, 353 => 'TimeCreated' },
      -	'timelapseshotnumber' => { 309 => 0x10 },
      -	'timeperiod' => { 478 => 'timePeriod' },
      -	'timerfunctionbutton' => { 268 => '5.2', 271 => '12.1', 272 => '13.1' },
      -	'timerlength' => { 81 => 0x80c },
      -	'timerrecording' => { 306 => 0x96 },
      -	'timescaleparams' => { 488 => 'timeScaleParams' },
      -	'timescaleparamsframeoverlappingpercentage' => { 488 => [\'timeScaleParams','timeScaleParamsFrameOverlappingPercentage'] },
      -	'timescaleparamsframesize' => { 488 => [\'timeScaleParams','timeScaleParamsFrameSize'] },
      -	'timescaleparamsquality' => { 488 => [\'timeScaleParams','timeScaleParamsQuality'] },
      -	'timesent' => { 129 => 0x50 },
      -	'timeshot' => { 452 => 'TimeShot' },
      -	'timesignature' => { 488 => 'timeSignature' },
      -	'timesincepoweron' => { 306 => 0x29 },
      -	'timestamp' => { 11 => 0x45e, 19 => 0x11c, 282 => 0x8, 296 => 'TimeStamp', 306 => 0xaf, 451 => 'Timestamp', 458 => 'Timestamp', 472 => 'TimeStamp' },
      +	'srfocallength' => { 357 => 0x3 },
      +	'srgbrendering' => { 308 => 'sRGB' },
      +	'srhalfpresstime' => { 357 => 0x2 },
      +	'srresult' => { 357 => 0x0, 358 => 0x0 },
      +	'stackedimage' => { 297 => 0x804 },
      +	'standardmatrixcustom' => { 138 => 0x7d4 },
      +	'standardmatrixdaylight' => { 138 => 0x7d0 },
      +	'standardmatrixflash' => { 138 => 0x7d3 },
      +	'standardmatrixfluorescent' => { 138 => 0x7d2 },
      +	'standardmatrixtungsten' => { 138 => 0x7d1 },
      +	'standardoutputhighlightpoint' => { 109 => 0x14 },
      +	'standardoutputsensitivity' => { 119 => 0x8831, 484 => 'StandardOutputSensitivity' },
      +	'standardoutputshadowpoint' => { 109 => 0x15 },
      +	'standardrawcolortone' => { 109 => 0xd },
      +	'standardrawcontrast' => { 109 => 0xf },
      +	'standardrawhighlight' => { 109 => 0x75 },
      +	'standardrawhighlightpoint' => { 109 => 0x12 },
      +	'standardrawlinear' => { 109 => 0x10 },
      +	'standardrawsaturation' => { 109 => 0xe },
      +	'standardrawshadow' => { 109 => 0x7e },
      +	'standardrawshadowpoint' => { 109 => 0x13 },
      +	'standardrawsharpness' => { 109 => 0x11 },
      +	'standardunsharpmaskfineness' => { 109 => 0x94 },
      +	'standardunsharpmaskstrength' => { 109 => 0x92 },
      +	'standardunsharpmaskthreshold' => { 109 => 0x96 },
      +	'standardwhitecustom' => { 138 => 0x838 },
      +	'standardwhitedaylight' => { 138 => 0x834 },
      +	'standardwhiteflash' => { 138 => 0x837 },
      +	'standardwhitefluorescent' => { 138 => 0x836 },
      +	'standardwhitetungsten' => { 138 => 0x835 },
      +	'standbytimer' => { 280 => '19.1', 282 => '19.1', 283 => '19.1', 286 => '18.1', 287 => '18.1', 292 => '19.1', 293 => '19.1' },
      +	'starlightview' => { 295 => 0x249 },
      +	'startingpage' => { 493 => 'startingPage' },
      +	'startmovieshooting' => { 84 => 0x70d },
      +	'starttimecode' => { 380 => "\xa9TIM", 503 => 'startTimecode' },
      +	'starttimecodetimeformat' => { 503 => [\'startTimecode','startTimecodeTimeFormat'] },
      +	'starttimecodetimevalue' => { 503 => [\'startTimecode','startTimecodeTimeValue'] },
      +	'starttimecodevalue' => { 503 => [\'startTimecode','startTimecodeValue'] },
      +	'starttimesamplesize' => { 380 => "\xa9TSZ", 503 => 'startTimeSampleSize' },
      +	'starttimescale' => { 380 => "\xa9TSC", 503 => 'startTimeScale' },
      +	'state' => { 161 => 'State', 320 => 0x6b, 491 => 'State' },
      +	'status' => { 458 => 'Status', 470 => 'Status' },
      +	'stereomode' => { 466 => 'StereoMode' },
      +	'stitched' => { 466 => 'Stitched' },
      +	'stitchingsoftware' => { 465 => 'StitchingSoftware', 466 => 'StitchingSoftware' },
      +	'stopsabovebaseiso' => { 428 => 0x113e, 429 => 0x113e, 430 => 0x111a, 431 => 0x1196, 432 => 0x1172, 433 => 0x102a, 434 => 0x222, 435 => 0x222, 436 => 0x217, 450 => 0xa },
      +	'storagemethod' => { 188 => 0x12 },
      +	'storebyorientation' => { 280 => '46.3', 282 => '47.3', 283 => '47.3', 292 => '47.3', 293 => '47.3', 295 => 0xd },
      +	'storedescription' => { 372 => 'sdes' },
      +	'storylineidentifier' => { 489 => 'StorylineIdentifier' },
      +	'straightenangle' => { 272 => 0x2fc08431 },
      +	'streamready' => { 489 => 'StreamReady' },
      +	'streamtype' => { 176 => 'StreamType' },
      +	'stretchmode' => { 503 => 'stretchMode' },
      +	'studydatetime' => { 456 => 'StudyDateTime' },
      +	'studydescription' => { 456 => 'StudyDescription' },
      +	'studyid' => { 456 => 'StudyID' },
      +	'studyphysician' => { 456 => 'StudyPhysician' },
      +	'styleperiod' => { 489 => 'StylePeriod' },
      +	'sub-location' => { 131 => 0x5c },
      +	'subcommanddialplaybackmode' => { 295 => 0x1cf },
      +	'subfiledata' => { 164 => 'data' },
      +	'subfiledirectory' => { 164 => '1Directory' },
      +	'subfilemimetype' => { 164 => '2MIME' },
      +	'subfilename' => { 164 => '1Name' },
      +	'subfileresource' => { 164 => 'rsrc' },
      +	'subfiletype' => { 119 => 0xfe, 164 => '0Type' },
      +	'subject' => { 306 => 'Subject', 371 => 'Subject', 480 => 'subject', 490 => 'Subject', 504 => 'subject' },
      +	'subjectarea' => { 119 => 0x9214, 483 => 'SubjectArea' },
      +	'subjectcode' => { 488 => 'SubjectCode' },
      +	'subjectdetection' => { 229 => 0x23e },
      +	'subjectdistance' => { 119 => 0x9206, 140 => 0x3e, 483 => 'SubjectDistance' },
      +	'subjectdistancerange' => { 119 => 0xa40c, 483 => 'SubjectDistanceRange' },
      +	'subjectlocation' => { 119 => 0xa214, 483 => 'SubjectLocation' },
      +	'subjectmotion' => { 282 => '78.2', 283 => '78.2', 293 => '78.2', 295 => 0x103 },
      +	'subjectprogram' => { 181 => 0x22 },
      +	'subjectreference' => { 131 => 0xc },
      +	'sublabels1' => { 487 => [\'TagStructure','TagStructureSubLabels'] },
      +	'sublabels2' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabels'] },
      +	'sublabels3' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabels'] },
      +	'sublabels4' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabels'] },
      +	'sublabels5' => { 487 => [\'TagStructure','TagStructureSubLabelsSubLabelsSubLabelsSubLabelsSubLabels'] },
      +	'subseccreatedate' => { 114 => 'Exif-SubSecCreateDate' },
      +	'subsecdatetimeoriginal' => { 114 => 'Exif-SubSecDateTimeOriginal' },
      +	'subsecmodifydate' => { 114 => 'Exif-SubSecModifyDate' },
      +	'subsectime' => { 119 => 0x9290 },
      +	'subsectimedigitized' => { 119 => 0x9292 },
      +	'subsectimeoriginal' => { 119 => 0x9291 },
      +	'subsection1' => { 493 => 'subsection1' },
      +	'subsection2' => { 493 => 'subsection2' },
      +	'subsection3' => { 493 => 'subsection3' },
      +	'subsection4' => { 493 => 'subsection4' },
      +	'subselector' => { 280 => '49.1', 282 => '71.1', 283 => '71.1', 293 => '71.1', 295 => 0x8f },
      +	'subselectorassignment' => { 280 => '48.1' },
      +	'subselectorcenter' => { 282 => '72.1', 283 => '72.1', 293 => '72.1' },
      +	'subselectorplusdials' => { 280 => '49.2', 282 => '73.1', 283 => '73.1', 293 => '73.1' },
      +	'subtitle' => { 179 => 'WM/SubTitle', 372 => "\xa9st3", 380 => "\xa9snm", 493 => 'subtitle' },
      +	'subtitlekeywords' => { 380 => "\xa9snk" },
      +	'subversionfilename' => { 487 => [\'SubVersions','SubVersionsFileName'] },
      +	'subversionreference' => { 487 => [\'SubVersions','SubVersionsVersRef'] },
      +	'subversions' => { 487 => 'SubVersions' },
      +	'superimposeddisplay' => { 82 => 0xa, 84 => 0x510, 85 => 0x9, 86 => 0xa, 89 => 0xa, 90 => 0xe },
      +	'supermacro' => { 64 => 0x1a },
      +	'supplementalcategories' => { 131 => 0x14, 491 => 'SupplementalCategories' },
      +	'supplementaltype' => { 133 => 0x37 },
      +	'supplementdisplayid' => { 493 => 'supplementDisplayID' },
      +	'supplementstartingpage' => { 493 => 'supplementStartingPage' },
      +	'supplementtitle' => { 493 => 'supplementTitle' },
      +	'supplychainsource' => { 489 => 'SupplyChainSource' },
      +	'supplychainsourceidentifier' => { 489 => [\'SupplyChainSource','SupplyChainSourceIdentifier'] },
      +	'supplychainsourcename' => { 489 => [\'SupplyChainSource','SupplyChainSourceName'] },
      +	'supportsamount' => { 477 => 'SupportsAmount', 479 => 'SupportsAmount' },
      +	'supportscolor' => { 477 => 'SupportsColor', 479 => 'SupportsColor' },
      +	'supportshighdynamicrange' => { 477 => 'SupportsHighDynamicRange', 479 => 'SupportsHighDynamicRange' },
      +	'supportsmonochrome' => { 477 => 'SupportsMonochrome', 479 => 'SupportsMonochrome' },
      +	'supportsnormaldynamicrange' => { 477 => 'SupportsNormalDynamicRange', 479 => 'SupportsNormalDynamicRange' },
      +	'supportsoutputreferred' => { 477 => 'SupportsOutputReferred', 479 => 'SupportsOutputReferred' },
      +	'supportsscenereferred' => { 477 => 'SupportsSceneReferred', 479 => 'SupportsSceneReferred' },
      +	'svisosetting' => { 336 => 0x14 },
      +	'swatchcoloranta' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsA'] },
      +	'swatchcolorantb' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsB'] },
      +	'swatchcolorantblack' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsBlack'] },
      +	'swatchcolorantblue' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsBlue'] },
      +	'swatchcolorantcyan' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsCyan'] },
      +	'swatchcolorantgray' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsGray'] },
      +	'swatchcolorantgreen' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsGreen'] },
      +	'swatchcolorantl' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsL'] },
      +	'swatchcolorantmagenta' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsMagenta'] },
      +	'swatchcolorantmode' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsMode'] },
      +	'swatchcolorantred' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsRed'] },
      +	'swatchcolorantswatchname' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsSwatchName'] },
      +	'swatchcoloranttint' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsTint'] },
      +	'swatchcoloranttype' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsType'] },
      +	'swatchcolorantyellow' => { 508 => [\'SwatchGroups','SwatchGroupsColorantsYellow'] },
      +	'swatchgroupname' => { 508 => [\'SwatchGroups','SwatchGroupsGroupName'] },
      +	'swatchgroups' => { 508 => 'SwatchGroups' },
      +	'swatchgroupscolorants' => { 508 => [\'SwatchGroups','SwatchGroupsColorants'] },
      +	'swatchgrouptype' => { 508 => [\'SwatchGroups','SwatchGroupsGroupType'] },
      +	'sweeppanoramadirection' => { 320 => 0x93, 409 => 0x33 },
      +	'sweeppanoramafieldofview' => { 320 => 0x94 },
      +	'sweeppanoramasize' => { 409 => 0x32 },
      +	'switchtoregisteredafpoint' => { 83 => 0x12, 84 => 0x50a },
      +	'symlink' => { 120 => 'SymLink' },
      +	'syncreleasemode' => { 282 => '77.1', 283 => '77.1', 293 => '77.1', 295 => 0x41 },
      +	'system' => { 364 => 0x204 },
      +	'tagged' => { 366 => 0xdd, 367 => 'Tagged', 472 => 'tagged' },
      +	'tagslist' => { 482 => 'TagsList' },
      +	'tagstructure' => { 487 => 'TagStructure' },
      +	'takenumber' => { 503 => 'takeNumber' },
      +	'tapename' => { 503 => 'tapeName' },
      +	'targetaperture' => { 77 => 0x4 },
      +	'targetcompressionratio' => { 95 => 0x1 },
      +	'targetdistancesetting' => { 97 => 0x1807 },
      +	'targetexposuretime' => { 77 => 0x5 },
      +	'targetimagetype' => { 97 => 0x100a },
      +	'targetprinter' => { 119 => 0x151 },
      +	'taxon' => { 118 => 'Taxon' },
      +	'taxonacceptednameusage' => { 118 => [\'Taxon','TaxonAcceptedNameUsage'] },
      +	'taxonacceptednameusageid' => { 118 => [\'Taxon','TaxonAcceptedNameUsageID'] },
      +	'taxonclass' => { 118 => [\'Taxon','TaxonClass'] },
      +	'taxonconceptid' => { 118 => [\'Taxon','TaxonTaxonConceptID'] },
      +	'taxonfamily' => { 118 => [\'Taxon','TaxonFamily'] },
      +	'taxongenus' => { 118 => [\'Taxon','TaxonGenus'] },
      +	'taxonhigherclassification' => { 118 => [\'Taxon','TaxonHigherClassification'] },
      +	'taxonid' => { 118 => [\'Taxon','TaxonTaxonID'] },
      +	'taxoninfraspecificepithet' => { 118 => [\'Taxon','TaxonInfraspecificEpithet'] },
      +	'taxonkingdom' => { 118 => [\'Taxon','TaxonKingdom'] },
      +	'taxonnameaccordingto' => { 118 => [\'Taxon','TaxonNameAccordingTo'] },
      +	'taxonnameaccordingtoid' => { 118 => [\'Taxon','TaxonNameAccordingToID'] },
      +	'taxonnamepublishedin' => { 118 => [\'Taxon','TaxonNamePublishedIn'] },
      +	'taxonnamepublishedinid' => { 118 => [\'Taxon','TaxonNamePublishedInID'] },
      +	'taxonnamepublishedinyear' => { 118 => [\'Taxon','TaxonNamePublishedInYear'] },
      +	'taxonnomenclaturalcode' => { 118 => [\'Taxon','TaxonNomenclaturalCode'] },
      +	'taxonnomenclaturalstatus' => { 118 => [\'Taxon','TaxonNomenclaturalStatus'] },
      +	'taxonorder' => { 118 => [\'Taxon','TaxonOrder'] },
      +	'taxonoriginalnameusage' => { 118 => [\'Taxon','TaxonOriginalNameUsage'] },
      +	'taxonoriginalnameusageid' => { 118 => [\'Taxon','TaxonOriginalNameUsageID'] },
      +	'taxonparentnameusage' => { 118 => [\'Taxon','TaxonParentNameUsage'] },
      +	'taxonparentnameusageid' => { 118 => [\'Taxon','TaxonParentNameUsageID'] },
      +	'taxonphylum' => { 118 => [\'Taxon','TaxonPhylum'] },
      +	'taxonrank' => { 118 => [\'Taxon','TaxonTaxonRank'] },
      +	'taxonremarks' => { 118 => [\'Taxon','TaxonTaxonRemarks'] },
      +	'taxonscientificname' => { 118 => [\'Taxon','TaxonScientificName'] },
      +	'taxonscientificnameauthorship' => { 118 => [\'Taxon','TaxonScientificNameAuthorship'] },
      +	'taxonscientificnameid' => { 118 => [\'Taxon','TaxonScientificNameID'] },
      +	'taxonspecificepithet' => { 118 => [\'Taxon','TaxonSpecificEpithet'] },
      +	'taxonsubgenus' => { 118 => [\'Taxon','TaxonSubgenus'] },
      +	'taxontaxonomicstatus' => { 118 => [\'Taxon','TaxonTaxonomicStatus'] },
      +	'taxonverbatimtaxonrank' => { 118 => [\'Taxon','TaxonVerbatimTaxonRank'] },
      +	'taxonvernacularname' => { 118 => [\'Taxon','TaxonVernacularName'] },
      +	'tda1bandwidth' => { 138 => 0x196f },
      +	'tda1edgepolarity' => { 138 => 0x1971 },
      +	'tda1gain' => { 138 => 0x1970 },
      +	'tda1offset' => { 138 => 0x196e },
      +	'tda2bandwidth' => { 138 => 0x1979 },
      +	'tda2edgepolarity' => { 138 => 0x197b },
      +	'tda2gain' => { 138 => 0x197a },
      +	'tda2offset' => { 138 => 0x1978 },
      +	'tda3bandwidth' => { 138 => 0x1983 },
      +	'tda3edgepolarity' => { 138 => 0x1985 },
      +	'tda3gain' => { 138 => 0x1984 },
      +	'tda3offset' => { 138 => 0x1982 },
      +	'tda4bandwidth' => { 138 => 0x198d },
      +	'tda4edgepolarity' => { 138 => 0x198f },
      +	'tda4gain' => { 138 => 0x198e },
      +	'tda4offset' => { 138 => 0x198c },
      +	'teaser' => { 493 => 'teaser' },
      +	'teleconverter' => { 186 => 0x105, 420 => 0x105 },
      +	'tempampgainx100' => { 138 => 0x1914 },
      +	'tempo' => { 503 => 'tempo' },
      +	'temporalcoverage' => { 489 => 'TemporalCoverage' },
      +	'temporalcoveragefrom' => { 489 => [\'TemporalCoverage','TemporalCoverageTempCoverageFrom'] },
      +	'temporalcoverageto' => { 489 => [\'TemporalCoverage','TemporalCoverageTempCoverageTo'] },
      +	'termsandconditionstext' => { 307 => 'TermsAndConditionsText' },
      +	'termsandconditionsurl' => { 307 => 'TermsAndConditionsURL' },
      +	'testname' => { 120 => 'TestName' },
      +	'textencoding' => { 225 => 0x4 },
      +	'textlayername' => { 491 => [\'TextLayers','TextLayersLayerName'] },
      +	'textlayers' => { 491 => 'TextLayers' },
      +	'textlayertext' => { 491 => [\'TextLayers','TextLayersLayerText'] },
      +	'textstamp' => { 320 => [0x8008,0x8009,0x3b,0x3e] },
      +	'texture' => { 477 => 'Texture', 479 => 'Texture' },
      +	'three-dtrackingfacedetection' => { 282 => '1.4', 283 => '1.4', 293 => '1.4' },
      +	'three-dtrackingwatcharea' => { 282 => '78.1', 283 => '78.1', 293 => '78.1' },
      +	'thresholding' => { 119 => 0x107 },
      +	'thumbnailfilename' => { 97 => 0x817 },
      +	'thumbnailformat' => { 501 => [\'Thumbnails','ThumbnailsFormat'] },
      +	'thumbnailheight' => { 142 => 0xfa55, 501 => [\'Thumbnails','ThumbnailsHeight'] },
      +	'thumbnailimage' => { 6 => 'CNDA', 97 => 0x2008, 114 => 'Exif-ThumbnailImage', 122 => 0x3, 167 => 'data', 302 => 0x100, 380 => 'thmb', 501 => [\'Thumbnails','ThumbnailsImage'] },
      +	'thumbnailimagename' => { 167 => '1Name' },
      +	'thumbnailimagesize' => { 167 => 'ImageSize' },
      +	'thumbnailimagetype' => { 167 => '0Type' },
      +	'thumbnailimagevalidarea' => { 64 => 0x13 },
      +	'thumbnaillength' => { 119 => 0x202 },
      +	'thumbnailoffset' => { 119 => 0x201 },
      +	'thumbnailpng' => { 380 => 'thmb' },
      +	'thumbnails' => { 501 => 'Thumbnails' },
      +	'thumbnailwidth' => { 142 => 0xfa54, 501 => [\'Thumbnails','ThumbnailsWidth'] },
      +	'ticker' => { 493 => 'ticker' },
      +	'tiffhandling' => { 477 => 'TIFFHandling', 479 => 'TIFFHandling' },
      +	'tiffmeteringimage' => { 187 => 0x104c, 418 => 0x1110 },
      +	'tilelength' => { 119 => 0x143 },
      +	'tilewidth' => { 119 => 0x142 },
      +	'time' => { 138 => 0x401, 355 => 0x7 },
      +	'timecodes' => { 119 => 0xc763 },
      +	'timecreated' => { 131 => 0x3c, 140 => 0x14, 149 => 0x10, 367 => 'TimeCreated' },
      +	'timelapseshotnumber' => { 323 => 0x10 },
      +	'timeperiod' => { 493 => 'timePeriod' },
      +	'timerfunctionbutton' => { 281 => '5.2', 284 => '12.1', 285 => '13.1' },
      +	'timerlength' => { 84 => 0x80c },
      +	'timerrecording' => { 320 => 0x96 },
      +	'timescaleparams' => { 503 => 'timeScaleParams' },
      +	'timescaleparamsframeoverlappingpercentage' => { 503 => [\'timeScaleParams','timeScaleParamsFrameOverlappingPercentage'] },
      +	'timescaleparamsframesize' => { 503 => [\'timeScaleParams','timeScaleParamsFrameSize'] },
      +	'timescaleparamsquality' => { 503 => [\'timeScaleParams','timeScaleParamsQuality'] },
      +	'timesent' => { 132 => 0x50 },
      +	'timeshot' => { 467 => 'TimeShot' },
      +	'timesignature' => { 503 => 'timeSignature' },
      +	'timesincepoweron' => { 320 => 0x29 },
      +	'timestamp' => { 11 => 0x45e, 19 => 0x11c, 296 => 0x8, 310 => 'TimeStamp', 320 => 0xaf, 466 => 'Timestamp', 473 => 'Timestamp', 487 => 'TimeStamp' },
       	'timestamp1' => { 11 => 0x45a },
      -	'timezone' => { 75 => 0x1, 251 => 0x0, 376 => 0xa },
      -	'timezonecity' => { 75 => 0x2 },
      -	'timezonecode' => { 97 => 0x1 },
      -	'timezoneinfo' => { 97 => 0x2 },
      -	'timezoneoffset' => { 116 => 0x882a },
      -	'tint' => { 360 => 'player.movie.visual.tint', 462 => 'Tint', 464 => 'Tint' },
      -	'title' => { 153 => 'Title', 292 => 'Title', 296 => 'Title', 306 => 0x65, 357 => 'Title', 358 => ['titl',"\xa9nam"], 360 => 'title', 366 => ['titl',"\xa9nam"], 465 => 'title', 475 => 'Title', 486 => 'Title' },
      -	'tonecomp' => { 219 => 0x81 },
      -	'tonecurve' => { 71 => 0x1, 341 => 0x402, 462 => 'ToneCurve', 464 => 'ToneCurve' },
      -	'tonecurveactive' => { 105 => 0x110 },
      -	'tonecurveadobergb' => { 380 => 0xa043 },
      -	'tonecurveadobergbdefault' => { 380 => 0xa041 },
      -	'tonecurveblue' => { 462 => 'ToneCurveBlue', 464 => 'ToneCurveBlue' },
      -	'tonecurvebluex' => { 439 => 0x9003 },
      -	'tonecurvebluey' => { 439 => 0x9007 },
      -	'tonecurvebrightness' => { 100 => 0x20410 },
      -	'tonecurvebrightnessx' => { 439 => 0x9000 },
      -	'tonecurvebrightnessy' => { 439 => 0x9004 },
      -	'tonecurvecolorspace' => { 104 => 0x0 },
      -	'tonecurvecontrast' => { 100 => 0x20411 },
      -	'tonecurvegreen' => { 462 => 'ToneCurveGreen', 464 => 'ToneCurveGreen' },
      -	'tonecurvegreenx' => { 439 => 0x9002 },
      -	'tonecurvegreeny' => { 439 => 0x9006 },
      -	'tonecurveinputrange' => { 104 => 0x3 },
      -	'tonecurveinterpolation' => { 105 => 0x159 },
      -	'tonecurvemode' => { 105 => 0x113 },
      -	'tonecurvename' => { 462 => 'ToneCurveName', 464 => 'ToneCurveName' },
      -	'tonecurvename2012' => { 462 => 'ToneCurveName2012', 464 => 'ToneCurveName2012' },
      -	'tonecurveoriginal' => { 100 => '0x20400.1' },
      -	'tonecurveoutputrange' => { 104 => 0x5 },
      -	'tonecurveprofilename' => { 134 => 0x1391 },
      -	'tonecurveproperty' => { 105 => 0x3c },
      -	'tonecurvepv2012' => { 462 => 'ToneCurvePV2012', 464 => 'ToneCurvePV2012' },
      -	'tonecurvepv2012blue' => { 462 => 'ToneCurvePV2012Blue', 464 => 'ToneCurvePV2012Blue' },
      -	'tonecurvepv2012green' => { 462 => 'ToneCurvePV2012Green', 464 => 'ToneCurvePV2012Green' },
      -	'tonecurvepv2012red' => { 462 => 'ToneCurvePV2012Red', 464 => 'ToneCurvePV2012Red' },
      -	'tonecurvered' => { 462 => 'ToneCurveRed', 464 => 'ToneCurveRed' },
      -	'tonecurveredx' => { 439 => 0x9001 },
      -	'tonecurveredy' => { 439 => 0x9005 },
      -	'tonecurves' => { 341 => 0x403 },
      -	'tonecurveshape' => { 104 => 0x1 },
      -	'tonecurvesrgb' => { 380 => 0xa042 },
      -	'tonecurvesrgbdefault' => { 380 => 0xa040 },
      -	'tonecurvex' => { 104 => 0xa },
      -	'tonecurvey' => { 104 => 0xb },
      -	'tonelevel' => { 283 => 0x52e },
      -	'tonemapstrength' => { 462 => 'ToneMapStrength', 464 => 'ToneMapStrength' },
      -	'toningeffect' => { 55 => 0xf, 219 => 0xb3, 221 => 0x38, 222 => 0x40, 223 => 0x48, 373 => 0x1015 },
      -	'toningeffectauto' => { 68 => 0xa4 },
      -	'toningeffectfaithful' => { 67 => 0x74, 68 => 0x74 },
      -	'toningeffectlandscape' => { 67 => 0x44, 68 => 0x44 },
      -	'toningeffectmonochrome' => { 19 => 0x108, 67 => 0x8c, 68 => 0x8c },
      -	'toningeffectneutral' => { 67 => 0x5c, 68 => 0x5c },
      -	'toningeffectportrait' => { 67 => 0x2c, 68 => 0x2c },
      -	'toningeffectstandard' => { 67 => 0x14, 68 => 0x14 },
      -	'toningeffectuserdef1' => { 67 => 0xa4, 68 => 0xbc },
      -	'toningeffectuserdef2' => { 67 => 0xbc, 68 => 0xd4 },
      -	'toningeffectuserdef3' => { 67 => 0xd4, 68 => 0xec },
      -	'toningsaturation' => { 221 => 0x39, 222 => 0x41, 223 => 0x49 },
      -	'totalzoom' => { 136 => 0x62 },
      -	'touchae' => { 306 => 0xab },
      -	'track' => { 358 => "\xa9trk", 366 => "\xa9trk" },
      -	'trackcreatedate' => { 365 => 0x1 },
      -	'trackmodifydate' => { 365 => 0x2 },
      -	'tracknumber' => { 358 => 'trkn', 488 => 'trackNumber' },
      -	'tracks' => { 488 => 'Tracks' },
      -	'tracksframerate' => { 488 => [\'Tracks','TracksFrameRate'] },
      -	'tracksmarkers' => { 488 => [\'Tracks','TracksMarkers'] },
      -	'tracksmarkerscomment' => { 488 => [\'Tracks','TracksMarkersComment'] },
      -	'tracksmarkerscuepointparams' => { 488 => [\'Tracks','TracksMarkersCuePointParams'] },
      -	'tracksmarkerscuepointparamskey' => { 488 => [\'Tracks','TracksMarkersCuePointParamsKey'] },
      -	'tracksmarkerscuepointparamsvalue' => { 488 => [\'Tracks','TracksMarkersCuePointParamsValue'] },
      -	'tracksmarkerscuepointtype' => { 488 => [\'Tracks','TracksMarkersCuePointType'] },
      -	'tracksmarkersduration' => { 488 => [\'Tracks','TracksMarkersDuration'] },
      -	'tracksmarkerslocation' => { 488 => [\'Tracks','TracksMarkersLocation'] },
      -	'tracksmarkersname' => { 488 => [\'Tracks','TracksMarkersName'] },
      -	'tracksmarkersprobability' => { 488 => [\'Tracks','TracksMarkersProbability'] },
      -	'tracksmarkersspeaker' => { 488 => [\'Tracks','TracksMarkersSpeaker'] },
      -	'tracksmarkersstarttime' => { 488 => [\'Tracks','TracksMarkersStartTime'] },
      -	'tracksmarkerstarget' => { 488 => [\'Tracks','TracksMarkersTarget'] },
      -	'tracksmarkerstype' => { 488 => [\'Tracks','TracksMarkersType'] },
      -	'trackstrackname' => { 488 => [\'Tracks','TracksTrackName'] },
      -	'trackstracktype' => { 488 => [\'Tracks','TracksTrackType'] },
      -	'tracktype' => { 366 => 'kgtt' },
      -	'trailer' => { 117 => 'Trailer' },
      -	'trailersignature' => { 160 => 'zmie' },
      -	'transcript' => { 474 => 'Transcript' },
      -	'transcriptlink' => { 474 => 'TranscriptLink' },
      -	'transcriptlinklink' => { 474 => [\'TranscriptLink','TranscriptLinkLink'] },
      -	'transcriptlinklinkqualifier' => { 474 => [\'TranscriptLink','TranscriptLinkLinkQualifier'] },
      -	'transferfunction' => { 116 => 0x12d, 484 => 'TransferFunction' },
      -	'transfertimenormal' => { 134 => 0x1888 },
      -	'transfertimetest' => { 134 => 0x1889 },
      -	'transform' => { 306 => [0x8012,0x59] },
      -	'transmissionreference' => { 476 => 'TransmissionReference' },
      -	'trapped' => { 292 => 'Trapped', 475 => 'Trapped' },
      -	'trashbuttonfunction' => { 81 => 0x710 },
      -	'travelday' => { 306 => 0x36 },
      -	'trebel' => { 360 => 'player.movie.audio.treble' },
      -	'triggermode' => { 367 => 0x6, 368 => 0x34, 369 => 0x34 },
      -	'tstop' => { 116 => 0xc772 },
      -	'ttl_da_adown' => { 329 => 0x5 },
      -	'ttl_da_aup' => { 329 => 0x4 },
      -	'ttl_da_bdown' => { 329 => 0x7 },
      -	'ttl_da_bup' => { 329 => 0x6 },
      -	'tungstenawb' => { 319 => 0x1 },
      -	'tvepisode' => { 358 => 'tves' },
      -	'tvepisodeid' => { 358 => 'tven' },
      -	'tvexposuretimesetting' => { 322 => 0x12 },
      -	'tvnetworkname' => { 358 => 'tvnn' },
      -	'tvseason' => { 358 => 'tvsn' },
      -	'tvshow' => { 358 => 'tvsh' },
      -	'type' => { 465 => 'type', 483 => 'type' },
      -	'typestatus' => { 115 => [\'Identification','IdentificationTypeStatus'] },
      -	'uniquecameramodel' => { 116 => 0xc614 },
      -	'uniquedocumentid' => { 128 => 0xbb },
      -	'uniquematrixauto' => { 134 => 0x7e9 },
      -	'uniquematrixcustom' => { 134 => 0x7e8 },
      -	'uniquematrixdaylight' => { 134 => 0x7e4 },
      -	'uniquematrixflash' => { 134 => 0x7e7 },
      -	'uniquematrixfluorescent' => { 134 => 0x7e6 },
      -	'uniquematrixtungsten' => { 134 => 0x7e5 },
      -	'uniqueobjectname' => { 129 => 0x64 },
      -	'units' => { 447 => 'Units' },
      -	'unknown_aacr' => { 358 => 'AACR' },
      -	'unknown_cdek' => { 358 => 'CDEK' },
      -	'unknown_cdet' => { 358 => 'CDET' },
      -	'unknownblock' => { 341 => 0x405 },
      -	'unknownblock1' => { 287 => 0x635 },
      -	'unknownblock2' => { 287 => 0x636 },
      -	'unknownblock3' => { 287 => 0x1103 },
      -	'unknownblock4' => { 287 => 0x1104 },
      -	'unknowncontrast' => { 106 => 0x45 },
      -	'unknowndate' => { 350 => 0x212 },
      -	'unknownev' => { 134 => 0x1 },
      -	'unknownlinear' => { 106 => 0x46 },
      -	'unknownnumber' => { 94 => 0x180b },
      -	'unknownoutputhighlightpoint' => { 106 => 0x4a },
      -	'unknownoutputshadowpoint' => { 106 => 0x4b },
      -	'unknownrawhighlight' => { 106 => 0x7b },
      -	'unknownrawhighlightpoint' => { 106 => 0x48 },
      -	'unknownrawshadow' => { 106 => 0x84 },
      -	'unknownrawshadowpoint' => { 106 => 0x49 },
      -	'unknownsharpness' => { 106 => 0x47 },
      -	'unknowntags' => { 366 => 'TAGS' },
      -	'unknowntemperature' => { 118 => 0x4 },
      -	'unknownthumbnail' => { 366 => 'thmb' },
      -	'unsharp1color' => { 264 => 0x13 },
      -	'unsharp1halowidth' => { 264 => 0x19 },
      -	'unsharp1intensity' => { 264 => 0x17 },
      -	'unsharp1threshold' => { 264 => 0x1b },
      -	'unsharp2color' => { 264 => 0x2e },
      -	'unsharp2halowidth' => { 264 => 0x34 },
      -	'unsharp2intensity' => { 264 => 0x32 },
      -	'unsharp2threshold' => { 264 => 0x36 },
      -	'unsharp3color' => { 264 => 0x49 },
      -	'unsharp3halowidth' => { 264 => 0x4f },
      -	'unsharp3intensity' => { 264 => 0x4d },
      -	'unsharp3threshold' => { 264 => 0x51 },
      -	'unsharp4color' => { 264 => 0x64 },
      -	'unsharp4halowidth' => { 264 => 0x6a },
      -	'unsharp4intensity' => { 264 => 0x68 },
      -	'unsharp4threshold' => { 264 => 0x6c },
      -	'unsharpcount' => { 264 => 0x0 },
      -	'unsharpmask' => { 106 => 0x90, 259 => 0x76a43200 },
      -	'unsharpmaskfineness' => { 100 => 0x20309 },
      -	'unsharpmaskstrength' => { 100 => 0x20308 },
      -	'unsharpmaskthreshold' => { 100 => 0x2030a },
      -	'uprightcentermode' => { 462 => 'UprightCenterMode', 464 => 'UprightCenterMode' },
      -	'uprightcenternormx' => { 462 => 'UprightCenterNormX', 464 => 'UprightCenterNormX' },
      -	'uprightcenternormy' => { 462 => 'UprightCenterNormY', 464 => 'UprightCenterNormY' },
      -	'uprightdependentdigest' => { 462 => 'UprightDependentDigest', 464 => 'UprightDependentDigest' },
      -	'uprightfocallength35mm' => { 462 => 'UprightFocalLength35mm', 464 => 'UprightFocalLength35mm' },
      -	'uprightfocalmode' => { 462 => 'UprightFocalMode', 464 => 'UprightFocalMode' },
      -	'uprightfoursegmentscount' => { 462 => 'UprightFourSegmentsCount', 464 => 'UprightFourSegmentsCount' },
      -	'uprightpreview' => { 462 => 'UprightPreview', 464 => 'UprightPreview' },
      -	'uprighttransform_0' => { 462 => 'UprightTransform_0', 464 => 'UprightTransform_0' },
      -	'uprighttransform_1' => { 462 => 'UprightTransform_1', 464 => 'UprightTransform_1' },
      -	'uprighttransform_2' => { 462 => 'UprightTransform_2', 464 => 'UprightTransform_2' },
      -	'uprighttransform_3' => { 462 => 'UprightTransform_3', 464 => 'UprightTransform_3' },
      -	'uprighttransform_4' => { 462 => 'UprightTransform_4', 464 => 'UprightTransform_4' },
      -	'uprighttransform_5' => { 462 => 'UprightTransform_5', 464 => 'UprightTransform_5' },
      -	'uprighttransformcount' => { 462 => 'UprightTransformCount', 464 => 'UprightTransformCount' },
      -	'uprightversion' => { 462 => 'UprightVersion', 464 => 'UprightVersion' },
      -	'urgency' => { 128 => 0xa, 476 => 'Urgency' },
      -	'url' => { 153 => 'URL', 296 => 'URL', 355 => 0x40b, 478 => 'url' },
      -	'url_list' => { 355 => 0x41e },
      -	'urla-platform' => { 478 => [\'url','urlA-platform'] },
      -	'urlurl' => { 478 => [\'url','urlUrl'] },
      -	'usablemeteringmodes' => { 81 => 0x10a },
      -	'usableshootingmodes' => { 81 => 0x109 },
      -	'usage' => { 479 => 'usage' },
      -	'usageterms' => { 492 => 'UsageTerms' },
      -	'useguidelines' => { 460 => 'useGuidelines' },
      -	'usepanoramaviewer' => { 450 => 'UsePanoramaViewer' },
      -	'usercollection' => { 360 => 'collection.user' },
      -	'usercomment' => { 94 => 0x805, 116 => 0x9286, 468 => 'UserComment' },
      -	'userdef1picturestyle' => { 19 => 0x10c, 67 => 0xd8, 68 => 0xf0 },
      -	'userdef2picturestyle' => { 19 => 0x10e, 67 => 0xda, 68 => 0xf2 },
      -	'userdef3picturestyle' => { 19 => 0x110, 67 => 0xdc, 68 => 0xf4 },
      -	'userfields' => { 455 => 'UserFields' },
      -	'userlabel' => { 367 => 0x2b, 368 => 0x5a, 369 => 0x68 },
      -	'userprofile' => { 301 => 0x302, 308 => 0x3038 },
      -	'userrating' => { 360 => 'rating.user' },
      -	'usmlenselectronicmf' => { 2 => 0x7, 80 => 0x7, 81 => 0x501 },
      -	'uspsnumber' => { 478 => 'uspsNumber' },
      -	'utmeasting' => { 164 => 'Easting' },
      -	'utmmapdatum' => { 164 => 'Datum' },
      -	'utmnorthing' => { 164 => 'Northing' },
      -	'utmzone' => { 164 => 'Zone' },
      -	'uv-irfiltercorrection' => { 301 => 0x325 },
      -	'validbits' => { 287 => 0x611, 288 => 0x102c },
      -	'validpixeldepth' => { 291 => 0x611 },
      -	'variablelowpassfilter' => { 406 => 0x2028 },
      -	'variousmodes' => { 136 => 0x26 },
      -	'variousmodes2' => { 136 => 0x3a },
      -	'variprogram' => { 219 => 0xab },
      -	'varraydacnominalvalues' => { 134 => 0x191e },
      -	'vendor' => { 366 => 'vndr' },
      -	'vendorinfo' => { 442 => 'VendorInfo' },
      -	'vendorinfomanufacturer' => { 442 => [\'VendorInfo','VendorInfoManufacturer'] },
      -	'vendorinfomodel' => { 442 => [\'VendorInfo','VendorInfoModel'] },
      -	'vendorinfonotes' => { 442 => [\'VendorInfo','VendorInfoNotes'] },
      -	'version' => { 124 => 0x0, 357 => 'Version', 360 => 'version', 462 => 'Version', 464 => 'Version' },
      -	'versioncreatedate' => { 439 => 0xd100 },
      -	'versionid' => { 489 => 'VersionID' },
      -	'versionidentifier' => { 478 => 'versionIdentifier' },
      -	'versionmodifydate' => { 439 => 0xd101 },
      -	'versions' => { 489 => 'Versions' },
      -	'versionscomments' => { 489 => [\'Versions','VersionsComments'] },
      -	'versionsevent' => { 489 => [\'Versions','VersionsEvent'] },
      -	'versionseventaction' => { 489 => [\'Versions','VersionsEventAction'] },
      -	'versionseventchanged' => { 489 => [\'Versions','VersionsEventChanged'] },
      -	'versionseventinstanceid' => { 489 => [\'Versions','VersionsEventInstanceID'] },
      -	'versionseventparameters' => { 489 => [\'Versions','VersionsEventParameters'] },
      -	'versionseventsoftwareagent' => { 489 => [\'Versions','VersionsEventSoftwareAgent'] },
      -	'versionseventwhen' => { 489 => [\'Versions','VersionsEventWhen'] },
      -	'versionsmodifier' => { 489 => [\'Versions','VersionsModifier'] },
      -	'versionsmodifydate' => { 489 => [\'Versions','VersionsModifyDate'] },
      -	'versionsversion' => { 489 => [\'Versions','VersionsVersion'] },
      -	'verticalafonbutton' => { 266 => '3.2', 267 => '47.2', 269 => '79.1' },
      -	'verticalclockoverlaps' => { 134 => 0x412 },
      -	'verticalfuncbutton' => { 267 => '42.2', 269 => '67.1' },
      -	'verticalfuncbuttonplusdials' => { 267 => '43.1' },
      -	'verticalfuncplusdials' => { 269 => '68.1' },
      -	'verticalmultiselector' => { 267 => '42.1', 269 => '66.1', 270 => '66.1', 280 => '66.1' },
      -	'vfdisplayillumination' => { 2 => 0x11, 81 => [0x510,0x51d] },
      -	'vibrance' => { 456 => 'Vibrance', 462 => 'Vibrance', 464 => 'Vibrance' },
      -	'vibrationreduction' => { 228 => [0x75,0x82,0x1ae], 236 => '586.1', 244 => '590.2', 250 => 0x4 },
      -	'videoalphamode' => { 488 => 'videoAlphaMode' },
      -	'videoalphapremultiplecolor' => { 488 => 'videoAlphaPremultipleColor' },
      -	'videoalphapremultiplecolora' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorA'] },
      -	'videoalphapremultiplecolorb' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorB'] },
      -	'videoalphapremultiplecolorblack' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlack'] },
      -	'videoalphapremultiplecolorblue' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlue'] },
      -	'videoalphapremultiplecolorcyan' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorCyan'] },
      -	'videoalphapremultiplecolorgray' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorGray'] },
      -	'videoalphapremultiplecolorgreen' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorGreen'] },
      -	'videoalphapremultiplecolorl' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorL'] },
      -	'videoalphapremultiplecolormagenta' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMagenta'] },
      -	'videoalphapremultiplecolormode' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMode'] },
      -	'videoalphapremultiplecolorred' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorRed'] },
      -	'videoalphapremultiplecolorswatchname' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorSwatchName'] },
      -	'videoalphapremultiplecolortint' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorTint'] },
      -	'videoalphapremultiplecolortype' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorType'] },
      -	'videoalphapremultiplecoloryellow' => { 488 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorYellow'] },
      -	'videoalphaunityistransparent' => { 488 => 'videoAlphaUnityIsTransparent' },
      -	'videobitrate' => { 474 => 'videoBitRate' },
      -	'videobitratemode' => { 474 => 'videoBitRateMode' },
      -	'videoburstmode' => { 306 => 0xbb },
      -	'videocodec' => { 64 => 0x74 },
      -	'videocolorspace' => { 488 => 'videoColorSpace' },
      -	'videocompression' => { 124 => 0x3806 },
      -	'videocompressor' => { 488 => 'videoCompressor' },
      -	'videodisplayaspectratio' => { 474 => 'videoDisplayAspectRatio' },
      -	'videoencodingprofile' => { 474 => 'videoEncodingProfile' },
      -	'videofieldorder' => { 488 => 'videoFieldOrder' },
      -	'videoframerate' => { 488 => 'videoFrameRate' },
      -	'videoframesize' => { 488 => 'videoFrameSize' },
      -	'videoframesizeh' => { 488 => [\'videoFrameSize','videoFrameSizeH'] },
      -	'videoframesizeunit' => { 488 => [\'videoFrameSize','videoFrameSizeUnit'] },
      -	'videoframesizew' => { 488 => [\'videoFrameSize','videoFrameSizeW'] },
      -	'videomoddate' => { 488 => 'videoModDate' },
      -	'videopixelaspectratio' => { 488 => 'videoPixelAspectRatio' },
      -	'videopixeldepth' => { 488 => 'videoPixelDepth' },
      -	'videoquality' => { 110 => 0x4003 },
      -	'videorecordingmode' => { 124 => 0x3803 },
      -	'videoshottype' => { 474 => 'VideoShotType' },
      -	'videoshottypeidentifier' => { 474 => [\'VideoShotType','VideoShotTypeIdentifier'] },
      -	'videoshottypename' => { 474 => [\'VideoShotType','VideoShotTypeName'] },
      -	'videostreamscount' => { 474 => 'videoStreamsCount' },
      -	'viewfinder' => { 350 => 0x455 },
      -	'viewfinderdisplay' => { 266 => '12.4', 267 => '6.3' },
      -	'viewfinderwarning' => { 266 => '13.4', 276 => '3.5', 277 => '6.2', 281 => '4.4' },
      -	'viewfinderwarnings' => { 81 => 0x40a },
      -	'viewinfoduringexposure' => { 81 => 0x407 },
      -	'viewingmode' => { 395 => 0x2f, 411 => 0x18 },
      -	'viewingmode2' => { 395 => [0x85,0x285] },
      -	'viewpoint' => { 477 => 'viewpoint' },
      -	'vignetteamount' => { 462 => 'VignetteAmount', 464 => 'VignetteAmount' },
      -	'vignettecontrol' => { 219 => 0x2a, 259 => 0x76a43205 },
      -	'vignettecontrolintensity' => { 259 => 0xac6bd5c0 },
      -	'vignettecorrectionalreadyapplied' => { 459 => 'VignetteCorrectionAlreadyApplied' },
      -	'vignettemidpoint' => { 462 => 'VignetteMidpoint', 464 => 'VignetteMidpoint' },
      -	'vignetting' => { 373 => 0x1011, 380 => 0xa052 },
      -	'vignettingcorrection' => { 116 => 0x7031, 380 => 0xa053, 406 => 0x2011 },
      -	'vignettingcorrparams' => { 116 => 0x7032, 434 => 0x64a, 435 => [0x34a,0x350,0x35c,0x368] },
      -	'vignettingsetting' => { 380 => 0xa054 },
      -	'visualcolor' => { 474 => 'VisualColour' },
      -	'visualtechnique' => { 477 => 'visualTechnique' },
      -	'voicememo' => { 382 => 0x216 },
      -	'volume' => { 478 => 'volume' },
      -	'vr_0x66' => { 228 => 0x66 },
      -	'vrdoffset' => { 61 => 0xd0 },
      -	'vrmode' => { 250 => 0x6 },
      -	'waterdepth' => { 116 => 0x9403, 469 => 'WaterDepth' },
      -	'wb_bluelevel3500k' => { 182 => 0x19a },
      -	'wb_bluelevel6500k' => { 182 => 0x18a },
      -	'wb_bluelevelcustom' => { 182 => 0x18e },
      -	'wb_bluelevelscloudy' => { 182 => 0x106 },
      -	'wb_bluelevelsdaylight' => { 182 => 0xea },
      -	'wb_bluelevelsflash' => { 182 => 0x122 },
      -	'wb_bluelevelsfluorescent' => { 182 => [0x40a,0x15a] },
      -	'wb_bluelevelskelvin' => { 182 => 0x254 },
      -	'wb_bluelevelsshade' => { 182 => 0x176 },
      -	'wb_bluelevelstungsten' => { 182 => 0xce },
      -	'wb_gbrglevels' => { 182 => 0xae, 185 => 0x4 },
      -	'wb_glevel' => { 287 => 0x11f },
      -	'wb_glevel3000k' => { 287 => 0x113 },
      -	'wb_glevel3300k' => { 287 => 0x114 },
      -	'wb_glevel3600k' => { 287 => 0x115 },
      -	'wb_glevel3900k' => { 287 => 0x116 },
      -	'wb_glevel4000k' => { 287 => 0x117 },
      -	'wb_glevel4300k' => { 287 => 0x118 },
      -	'wb_glevel4500k' => { 287 => 0x119 },
      -	'wb_glevel4800k' => { 287 => 0x11a },
      -	'wb_glevel5300k' => { 287 => 0x11b },
      -	'wb_glevel6000k' => { 287 => 0x11c },
      -	'wb_glevel6600k' => { 287 => 0x11d },
      -	'wb_glevel7500k' => { 287 => 0x11e },
      -	'wb_grbglevels' => { 195 => 0x0 },
      -	'wb_grgblevelsauto' => { 78 => 0x2 },
      -	'wb_grgblevelscloudy' => { 78 => 0x12 },
      -	'wb_grgblevelscustom1' => { 78 => 0x42 },
      -	'wb_grgblevelscustom2' => { 78 => 0x4a },
      -	'wb_grgblevelsdaylight' => { 78 => 0xa },
      -	'wb_grgblevelsflash' => { 78 => 0x32 },
      -	'wb_grgblevelsfluorescent' => { 78 => 0x22 },
      -	'wb_grgblevelsfluorhigh' => { 78 => 0x2a },
      -	'wb_grgblevelstungsten' => { 78 => 0x1a },
      -	'wb_grgblevelsunderwater' => { 78 => 0x3a },
      -	'wb_rbgglevels' => { 192 => 0x0 },
      -	'wb_rblevels' => { 196 => 0x270, 219 => 0xc, 287 => 0x100 },
      -	'wb_rblevels1' => { 312 => 0x2 },
      -	'wb_rblevels2' => { 312 => 0x5 },
      -	'wb_rblevels3' => { 312 => 0x8 },
      -	'wb_rblevels3000k' => { 287 => 0x102 },
      -	'wb_rblevels3300k' => { 287 => 0x103 },
      -	'wb_rblevels3500k' => { 182 => 0x430 },
      -	'wb_rblevels3600k' => { 287 => 0x104 },
      -	'wb_rblevels3900k' => { 287 => 0x105 },
      -	'wb_rblevels4' => { 312 => 0xb },
      -	'wb_rblevels4000k' => { 287 => 0x106 },
      -	'wb_rblevels4300k' => { 287 => 0x107 },
      -	'wb_rblevels4500k' => { 287 => 0x108 },
      -	'wb_rblevels4800k' => { 287 => 0x109 },
      -	'wb_rblevels5' => { 312 => 0xe },
      -	'wb_rblevels5300k' => { 287 => 0x10a },
      -	'wb_rblevels6' => { 312 => 0x11 },
      -	'wb_rblevels6000k' => { 287 => 0x10b },
      -	'wb_rblevels6500k' => { 182 => 0x420 },
      -	'wb_rblevels6600k' => { 287 => 0x10c },
      -	'wb_rblevels7' => { 312 => 0x14 },
      -	'wb_rblevels7500k' => { 287 => 0x10d },
      -	'wb_rblevelsauto' => { 196 => 0x272, 291 => 0x110 },
      -	'wb_rblevelscloudy' => { 182 => 0x3f0, 184 => 0x10, 196 => 0x296, 291 => 0x121 },
      -	'wb_rblevelscoolwhitef' => { 182 => 0x308, 184 => 0x14 },
      -	'wb_rblevelscoolwhitefluor' => { 291 => 0x132 },
      -	'wb_rblevelscustom' => { 182 => 0x424 },
      -	'wb_rblevelscwb1' => { 287 => 0x10e },
      -	'wb_rblevelscwb2' => { 287 => 0x10f },
      -	'wb_rblevelscwb3' => { 287 => 0x110 },
      -	'wb_rblevelscwb4' => { 287 => 0x111 },
      -	'wb_rblevelsdaylight' => { 182 => [0x3ec,0x528], 184 => 0xc, 196 => 0x274 },
      -	'wb_rblevelsdaylightf' => { 184 => 0x24 },
      -	'wb_rblevelsdaylightfluor' => { 291 => 0x130 },
      -	'wb_rblevelsdaywhitef' => { 184 => 0x28 },
      -	'wb_rblevelsdaywhitefluor' => { 291 => 0x131 },
      -	'wb_rblevelseveningsunlight' => { 291 => 0x124 },
      -	'wb_rblevelsfineweather' => { 291 => 0x122 },
      -	'wb_rblevelsflash' => { 182 => [0x3f4,0x304], 184 => 0x18, 196 => 0x2a4 },
      -	'wb_rblevelsfluorescent' => { 196 => 0x290 },
      -	'wb_rblevelsincandescent' => { 196 => 0x282 },
      -	'wb_rblevelsshade' => { 182 => 0x418, 184 => 0x20, 196 => 0x2b2, 291 => 0x120 },
      -	'wb_rblevelstungsten' => { 182 => 0x3e8, 184 => 0x8, 291 => 0x123 },
      -	'wb_rblevelsunknown' => { 184 => 0x1c },
      -	'wb_rblevelsused' => { 291 => 0x100 },
      -	'wb_rblevelswhitef' => { 184 => 0x2c },
      -	'wb_rblevelswhitefluorescent' => { 291 => 0x133 },
      -	'wb_redlevel3500k' => { 182 => 0x198 },
      -	'wb_redlevel6500k' => { 182 => 0x188 },
      -	'wb_redlevelcustom' => { 182 => 0x18c },
      -	'wb_redlevelscloudy' => { 182 => 0xf8 },
      -	'wb_redlevelsdaylight' => { 182 => 0xdc },
      -	'wb_redlevelsflash' => { 182 => 0x114 },
      -	'wb_redlevelsfluorescent' => { 182 => [0x3fc,0x14c] },
      -	'wb_redlevelskelvin' => { 182 => 0x1be },
      -	'wb_redlevelsshade' => { 182 => 0x168 },
      -	'wb_redlevelstungsten' => { 182 => 0xc0 },
      -	'wb_rgbglevels' => { 194 => 0x0 },
      -	'wb_rgblevels' => { 182 => [0x546,0x96], 302 => 0xd, 303 => 0x413, 308 => 0x3036, 350 => 0x107, 414 => 0x117c, 415 => 0x1180, 416 => 0x115c, 417 => 0x11d8, 418 => 0x11b4, 419 => 0x106c, 420 => 0x264, 421 => 0x264, 422 => 0x252 },
      -	'wb_rgblevels1' => { 313 => 0x2 },
      -	'wb_rgblevels2' => { 313 => 0x6 },
      -	'wb_rgblevels3' => { 313 => 0xa },
      -	'wb_rgblevels4' => { 313 => 0xe },
      -	'wb_rgblevels5' => { 313 => 0x12 },
      -	'wb_rgblevels6' => { 313 => 0x16 },
      -	'wb_rgblevels7' => { 313 => 0x1a },
      -	'wb_rgblevelsauto' => { 384 => 0x0 },
      -	'wb_rgblevelscustom1' => { 384 => 0x15 },
      -	'wb_rgblevelscustom2' => { 384 => 0x18 },
      -	'wb_rgblevelscustom3' => { 384 => 0x1b },
      -	'wb_rgblevelsdaylight' => { 384 => 0x3 },
      -	'wb_rgblevelsflash' => { 384 => 0x12 },
      -	'wb_rgblevelsfluorescent' => { 384 => 0xf },
      -	'wb_rgblevelsincandescent' => { 384 => 0xc },
      -	'wb_rgblevelsovercast' => { 384 => 0x9 },
      -	'wb_rgblevelsshade' => { 384 => 0x6 },
      -	'wb_rgblevelsunknown0' => { 385 => 0x0 },
      -	'wb_rgblevelsunknown1' => { 385 => 0x3 },
      -	'wb_rgblevelsunknown2' => { 385 => 0x6 },
      -	'wb_rgblevelsunknown3' => { 385 => 0x9 },
      -	'wb_rgblevelsunknown4' => { 385 => 0xc },
      -	'wb_rgblevelsunknown5' => { 385 => 0xf },
      -	'wb_rgblevelsunknown6' => { 385 => 0x12 },
      -	'wb_rgblevelsunknown7' => { 385 => 0x15 },
      -	'wb_rgblevelsunknown8' => { 385 => 0x18 },
      -	'wb_rgblevelsunknown9' => { 385 => 0x1b },
      -	'wb_rgbmuldaylight' => { 134 => 0x852 },
      -	'wb_rgbmulflash' => { 134 => 0x855 },
      -	'wb_rgbmulfluorescent' => { 134 => 0x854 },
      -	'wb_rgbmultungsten' => { 134 => 0x853 },
      +	'timezone' => { 78 => 0x1, 229 => 0x594, 264 => 0x0, 390 => 0xa },
      +	'timezonecity' => { 78 => 0x2 },
      +	'timezonecode' => { 100 => 0x1 },
      +	'timezoneinfo' => { 100 => 0x2 },
      +	'timezoneoffset' => { 119 => 0x882a },
      +	'tint' => { 374 => 'player.movie.visual.tint', 477 => 'Tint', 479 => 'Tint' },
      +	'title' => { 157 => 'Title', 306 => 'Title', 310 => 'Title', 320 => 0x65, 371 => 'Title', 372 => ['titl',"\xa9nam"], 374 => 'title', 380 => ['titl',"\xa9nam"], 480 => 'title', 490 => 'Title', 501 => 'Title' },
      +	'togglestyleamount' => { 477 => 'ToggleStyleAmount', 479 => 'ToggleStyleAmount' },
      +	'togglestyledigest' => { 477 => 'ToggleStyleDigest', 479 => 'ToggleStyleDigest' },
      +	'tonecomp' => { 226 => 0x81 },
      +	'tonecurve' => { 74 => 0x1, 355 => 0x402, 477 => 'ToneCurve', 479 => 'ToneCurve' },
      +	'tonecurveactive' => { 108 => 0x110 },
      +	'tonecurveadobergb' => { 394 => 0xa043 },
      +	'tonecurveadobergbdefault' => { 394 => 0xa041 },
      +	'tonecurveblue' => { 477 => 'ToneCurveBlue', 479 => 'ToneCurveBlue' },
      +	'tonecurvebluex' => { 454 => 0x9003 },
      +	'tonecurvebluey' => { 454 => 0x9007 },
      +	'tonecurvebrightness' => { 103 => 0x20410 },
      +	'tonecurvebrightnessx' => { 454 => 0x9000 },
      +	'tonecurvebrightnessy' => { 454 => 0x9004 },
      +	'tonecurvecolorspace' => { 107 => 0x0 },
      +	'tonecurvecontrast' => { 103 => 0x20411 },
      +	'tonecurvegreen' => { 477 => 'ToneCurveGreen', 479 => 'ToneCurveGreen' },
      +	'tonecurvegreenx' => { 454 => 0x9002 },
      +	'tonecurvegreeny' => { 454 => 0x9006 },
      +	'tonecurveinputrange' => { 107 => 0x3 },
      +	'tonecurveinterpolation' => { 108 => 0x159 },
      +	'tonecurvemode' => { 108 => 0x113 },
      +	'tonecurvename' => { 477 => 'ToneCurveName', 479 => 'ToneCurveName' },
      +	'tonecurvename2012' => { 477 => 'ToneCurveName2012', 479 => 'ToneCurveName2012' },
      +	'tonecurveoriginal' => { 103 => '0x20400.1' },
      +	'tonecurveoutputrange' => { 107 => 0x5 },
      +	'tonecurveprofilename' => { 138 => 0x1391 },
      +	'tonecurveproperty' => { 108 => 0x3c },
      +	'tonecurvepv2012' => { 477 => 'ToneCurvePV2012', 479 => 'ToneCurvePV2012' },
      +	'tonecurvepv2012blue' => { 477 => 'ToneCurvePV2012Blue', 479 => 'ToneCurvePV2012Blue' },
      +	'tonecurvepv2012green' => { 477 => 'ToneCurvePV2012Green', 479 => 'ToneCurvePV2012Green' },
      +	'tonecurvepv2012red' => { 477 => 'ToneCurvePV2012Red', 479 => 'ToneCurvePV2012Red' },
      +	'tonecurvered' => { 477 => 'ToneCurveRed', 479 => 'ToneCurveRed' },
      +	'tonecurveredx' => { 454 => 0x9001 },
      +	'tonecurveredy' => { 454 => 0x9005 },
      +	'tonecurves' => { 355 => 0x403 },
      +	'tonecurveshape' => { 107 => 0x1 },
      +	'tonecurvesrgb' => { 394 => 0xa042 },
      +	'tonecurvesrgbdefault' => { 394 => 0xa040 },
      +	'tonecurvex' => { 107 => 0xa },
      +	'tonecurvey' => { 107 => 0xb },
      +	'tonelevel' => { 297 => 0x52e },
      +	'tonemapstrength' => { 477 => 'ToneMapStrength', 479 => 'ToneMapStrength' },
      +	'toningeffect' => { 57 => 0xf, 226 => 0xb3, 231 => 0x38, 232 => 0x40, 233 => 0x48, 387 => 0x1015 },
      +	'toningeffectauto' => { 71 => 0xa4 },
      +	'toningeffectfaithful' => { 70 => 0x74, 71 => 0x74 },
      +	'toningeffectlandscape' => { 70 => 0x44, 71 => 0x44 },
      +	'toningeffectmonochrome' => { 19 => 0x108, 70 => 0x8c, 71 => 0x8c },
      +	'toningeffectneutral' => { 70 => 0x5c, 71 => 0x5c },
      +	'toningeffectportrait' => { 70 => 0x2c, 71 => 0x2c },
      +	'toningeffectstandard' => { 70 => 0x14, 71 => 0x14 },
      +	'toningeffectuserdef1' => { 70 => 0xa4, 71 => 0xbc },
      +	'toningeffectuserdef2' => { 70 => 0xbc, 71 => 0xd4 },
      +	'toningeffectuserdef3' => { 70 => 0xd4, 71 => 0xec },
      +	'toningsaturation' => { 231 => 0x39, 232 => 0x41, 233 => 0x49 },
      +	'totalzoom' => { 140 => 0x62 },
      +	'touchae' => { 320 => 0xab },
      +	'track' => { 372 => "\xa9trk", 380 => "\xa9trk" },
      +	'trackcreatedate' => { 379 => 0x1 },
      +	'trackmodifydate' => { 379 => 0x2 },
      +	'tracknumber' => { 372 => 'trkn', 503 => 'trackNumber' },
      +	'tracks' => { 503 => 'Tracks' },
      +	'tracksframerate' => { 503 => [\'Tracks','TracksFrameRate'] },
      +	'tracksmarkers' => { 503 => [\'Tracks','TracksMarkers'] },
      +	'tracksmarkerscomment' => { 503 => [\'Tracks','TracksMarkersComment'] },
      +	'tracksmarkerscuepointparams' => { 503 => [\'Tracks','TracksMarkersCuePointParams'] },
      +	'tracksmarkerscuepointparamskey' => { 503 => [\'Tracks','TracksMarkersCuePointParamsKey'] },
      +	'tracksmarkerscuepointparamsvalue' => { 503 => [\'Tracks','TracksMarkersCuePointParamsValue'] },
      +	'tracksmarkerscuepointtype' => { 503 => [\'Tracks','TracksMarkersCuePointType'] },
      +	'tracksmarkersduration' => { 503 => [\'Tracks','TracksMarkersDuration'] },
      +	'tracksmarkerslocation' => { 503 => [\'Tracks','TracksMarkersLocation'] },
      +	'tracksmarkersname' => { 503 => [\'Tracks','TracksMarkersName'] },
      +	'tracksmarkersprobability' => { 503 => [\'Tracks','TracksMarkersProbability'] },
      +	'tracksmarkersspeaker' => { 503 => [\'Tracks','TracksMarkersSpeaker'] },
      +	'tracksmarkersstarttime' => { 503 => [\'Tracks','TracksMarkersStartTime'] },
      +	'tracksmarkerstarget' => { 503 => [\'Tracks','TracksMarkersTarget'] },
      +	'tracksmarkerstype' => { 503 => [\'Tracks','TracksMarkersType'] },
      +	'trackstrackname' => { 503 => [\'Tracks','TracksTrackName'] },
      +	'trackstracktype' => { 503 => [\'Tracks','TracksTrackType'] },
      +	'tracktype' => { 380 => 'kgtt' },
      +	'trailer' => { 120 => 'Trailer' },
      +	'trailersignature' => { 164 => 'zmie' },
      +	'transcript' => { 489 => 'Transcript' },
      +	'transcriptlink' => { 489 => 'TranscriptLink' },
      +	'transcriptlinklink' => { 489 => [\'TranscriptLink','TranscriptLinkLink'] },
      +	'transcriptlinklinkqualifier' => { 489 => [\'TranscriptLink','TranscriptLinkLinkQualifier'] },
      +	'transferfunction' => { 119 => 0x12d, 499 => 'TransferFunction' },
      +	'transfertimenormal' => { 138 => 0x1888 },
      +	'transfertimetest' => { 138 => 0x1889 },
      +	'transform' => { 320 => [0x8012,0x59] },
      +	'transmissionreference' => { 491 => 'TransmissionReference' },
      +	'trapped' => { 306 => 'Trapped', 490 => 'Trapped' },
      +	'trashbuttonfunction' => { 84 => 0x710 },
      +	'travelday' => { 320 => 0x36 },
      +	'treble' => { 374 => 'player.movie.audio.treble' },
      +	'triggermode' => { 381 => 0x6, 382 => 0x34, 383 => 0x34 },
      +	'tstop' => { 119 => 0xc772 },
      +	'ttl_da_adown' => { 343 => 0x5 },
      +	'ttl_da_aup' => { 343 => 0x4 },
      +	'ttl_da_bdown' => { 343 => 0x7 },
      +	'ttl_da_bup' => { 343 => 0x6 },
      +	'tungstenawb' => { 333 => 0x1 },
      +	'tvepisode' => { 372 => 'tves' },
      +	'tvepisodeid' => { 372 => 'tven' },
      +	'tvexposuretimesetting' => { 336 => 0x12 },
      +	'tvnetworkname' => { 372 => 'tvnn' },
      +	'tvseason' => { 372 => 'tvsn' },
      +	'tvshow' => { 372 => 'tvsh' },
      +	'type' => { 480 => 'type', 498 => 'type' },
      +	'typestatus' => { 118 => [\'Identification','IdentificationTypeStatus'] },
      +	'uniquecameramodel' => { 119 => 0xc614 },
      +	'uniquedocumentid' => { 131 => 0xbb },
      +	'uniquematrixauto' => { 138 => 0x7e9 },
      +	'uniquematrixcustom' => { 138 => 0x7e8 },
      +	'uniquematrixdaylight' => { 138 => 0x7e4 },
      +	'uniquematrixflash' => { 138 => 0x7e7 },
      +	'uniquematrixfluorescent' => { 138 => 0x7e6 },
      +	'uniquematrixtungsten' => { 138 => 0x7e5 },
      +	'uniqueobjectname' => { 132 => 0x64 },
      +	'units' => { 462 => 'Units' },
      +	'unknown_aacr' => { 372 => 'AACR' },
      +	'unknown_cdek' => { 372 => 'CDEK' },
      +	'unknown_cdet' => { 372 => 'CDET' },
      +	'unknownblock' => { 355 => 0x405 },
      +	'unknownblock1' => { 301 => 0x635 },
      +	'unknownblock2' => { 301 => 0x636 },
      +	'unknownblock3' => { 301 => 0x1103 },
      +	'unknownblock4' => { 301 => 0x1104 },
      +	'unknowncontrast' => { 109 => 0x45 },
      +	'unknowndate' => { 364 => 0x212 },
      +	'unknownev' => { 138 => 0x1 },
      +	'unknownlinear' => { 109 => 0x46 },
      +	'unknownnumber' => { 97 => 0x180b },
      +	'unknownoutputhighlightpoint' => { 109 => 0x4a },
      +	'unknownoutputshadowpoint' => { 109 => 0x4b },
      +	'unknownrawhighlight' => { 109 => 0x7b },
      +	'unknownrawhighlightpoint' => { 109 => 0x48 },
      +	'unknownrawshadow' => { 109 => 0x84 },
      +	'unknownrawshadowpoint' => { 109 => 0x49 },
      +	'unknownsharpness' => { 109 => 0x47 },
      +	'unknowntags' => { 380 => 'TAGS' },
      +	'unknowntemperature' => { 121 => 0x4 },
      +	'unknownthumbnail' => { 380 => 'thmb' },
      +	'unsharp1color' => { 277 => 0x13 },
      +	'unsharp1halowidth' => { 277 => 0x19 },
      +	'unsharp1intensity' => { 277 => 0x17 },
      +	'unsharp1threshold' => { 277 => 0x1b },
      +	'unsharp2color' => { 277 => 0x2e },
      +	'unsharp2halowidth' => { 277 => 0x34 },
      +	'unsharp2intensity' => { 277 => 0x32 },
      +	'unsharp2threshold' => { 277 => 0x36 },
      +	'unsharp3color' => { 277 => 0x49 },
      +	'unsharp3halowidth' => { 277 => 0x4f },
      +	'unsharp3intensity' => { 277 => 0x4d },
      +	'unsharp3threshold' => { 277 => 0x51 },
      +	'unsharp4color' => { 277 => 0x64 },
      +	'unsharp4halowidth' => { 277 => 0x6a },
      +	'unsharp4intensity' => { 277 => 0x68 },
      +	'unsharp4threshold' => { 277 => 0x6c },
      +	'unsharpcount' => { 277 => 0x0 },
      +	'unsharpmask' => { 109 => 0x90, 272 => 0x76a43200 },
      +	'unsharpmaskfineness' => { 103 => 0x20309 },
      +	'unsharpmaskstrength' => { 103 => 0x20308 },
      +	'unsharpmaskthreshold' => { 103 => 0x2030a },
      +	'uprightcentermode' => { 477 => 'UprightCenterMode', 479 => 'UprightCenterMode' },
      +	'uprightcenternormx' => { 477 => 'UprightCenterNormX', 479 => 'UprightCenterNormX' },
      +	'uprightcenternormy' => { 477 => 'UprightCenterNormY', 479 => 'UprightCenterNormY' },
      +	'uprightdependentdigest' => { 477 => 'UprightDependentDigest', 479 => 'UprightDependentDigest' },
      +	'uprightfocallength35mm' => { 477 => 'UprightFocalLength35mm', 479 => 'UprightFocalLength35mm' },
      +	'uprightfocalmode' => { 477 => 'UprightFocalMode', 479 => 'UprightFocalMode' },
      +	'uprightfoursegmentscount' => { 477 => 'UprightFourSegmentsCount', 479 => 'UprightFourSegmentsCount' },
      +	'uprightpreview' => { 477 => 'UprightPreview', 479 => 'UprightPreview' },
      +	'uprighttransform_0' => { 477 => 'UprightTransform_0', 479 => 'UprightTransform_0' },
      +	'uprighttransform_1' => { 477 => 'UprightTransform_1', 479 => 'UprightTransform_1' },
      +	'uprighttransform_2' => { 477 => 'UprightTransform_2', 479 => 'UprightTransform_2' },
      +	'uprighttransform_3' => { 477 => 'UprightTransform_3', 479 => 'UprightTransform_3' },
      +	'uprighttransform_4' => { 477 => 'UprightTransform_4', 479 => 'UprightTransform_4' },
      +	'uprighttransform_5' => { 477 => 'UprightTransform_5', 479 => 'UprightTransform_5' },
      +	'uprighttransformcount' => { 477 => 'UprightTransformCount', 479 => 'UprightTransformCount' },
      +	'uprightversion' => { 477 => 'UprightVersion', 479 => 'UprightVersion' },
      +	'urgency' => { 131 => 0xa, 491 => 'Urgency' },
      +	'url' => { 157 => 'URL', 310 => 'URL', 369 => 0x40b, 493 => 'url' },
      +	'url_list' => { 369 => 0x41e },
      +	'urla-platform' => { 493 => [\'url','urlA-platform'] },
      +	'urlurl' => { 493 => [\'url','urlUrl'] },
      +	'usablemeteringmodes' => { 84 => 0x10a },
      +	'usableshootingmodes' => { 84 => 0x109 },
      +	'usage' => { 494 => 'usage' },
      +	'usageterms' => { 507 => 'UsageTerms' },
      +	'usbpowerdelivery' => { 229 => 0x664 },
      +	'usedialwithouthold' => { 295 => 0xbf },
      +	'useguidelines' => { 475 => 'useGuidelines' },
      +	'usepanoramaviewer' => { 465 => 'UsePanoramaViewer' },
      +	'usercollection' => { 374 => 'collection.user' },
      +	'usercomment' => { 97 => 0x805, 119 => 0x9286, 483 => 'UserComment' },
      +	'userdef1picturestyle' => { 19 => 0x10c, 70 => 0xd8, 71 => 0xf0 },
      +	'userdef2picturestyle' => { 19 => 0x10e, 70 => 0xda, 71 => 0xf2 },
      +	'userdef3picturestyle' => { 19 => 0x110, 70 => 0xdc, 71 => 0xf4 },
      +	'userfields' => { 470 => 'UserFields' },
      +	'userlabel' => { 381 => 0x2b, 382 => 0x5a, 383 => 0x68 },
      +	'userprofile' => { 315 => 0x302, 319 => 0x34c, 322 => 0x3038 },
      +	'userrating' => { 374 => 'rating.user', 380 => 'urat' },
      +	'usmlenselectronicmf' => { 2 => 0x7, 83 => 0x7, 84 => 0x501 },
      +	'uspsnumber' => { 493 => 'uspsNumber' },
      +	'utmeasting' => { 168 => 'Easting' },
      +	'utmmapdatum' => { 168 => 'Datum' },
      +	'utmnorthing' => { 168 => 'Northing' },
      +	'utmzone' => { 168 => 'Zone' },
      +	'uuid' => { 477 => 'UUID', 479 => 'UUID' },
      +	'uv-irfiltercorrection' => { 315 => 0x325 },
      +	'validbits' => { 301 => 0x611, 302 => 0x102c },
      +	'validpixeldepth' => { 305 => 0x611 },
      +	'variablelowpassfilter' => { 420 => 0x2028 },
      +	'variousmodes' => { 140 => 0x26 },
      +	'variousmodes2' => { 140 => 0x3a },
      +	'variprogram' => { 226 => 0xab },
      +	'varraydacnominalvalues' => { 138 => 0x191e },
      +	'vendor' => { 380 => 'vndr' },
      +	'vendorinfo' => { 457 => 'VendorInfo' },
      +	'vendorinfomanufacturer' => { 457 => [\'VendorInfo','VendorInfoManufacturer'] },
      +	'vendorinfomodel' => { 457 => [\'VendorInfo','VendorInfoModel'] },
      +	'vendorinfonotes' => { 457 => [\'VendorInfo','VendorInfoNotes'] },
      +	'version' => { 127 => 0x0, 371 => 'Version', 374 => 'version', 477 => 'Version', 479 => 'Version' },
      +	'versioncreatedate' => { 454 => 0xd100 },
      +	'versionid' => { 504 => 'VersionID' },
      +	'versionidentifier' => { 493 => 'versionIdentifier' },
      +	'versionmodifydate' => { 454 => 0xd101 },
      +	'versions' => { 504 => 'Versions' },
      +	'versionscomments' => { 504 => [\'Versions','VersionsComments'] },
      +	'versionsevent' => { 504 => [\'Versions','VersionsEvent'] },
      +	'versionseventaction' => { 504 => [\'Versions','VersionsEventAction'] },
      +	'versionseventchanged' => { 504 => [\'Versions','VersionsEventChanged'] },
      +	'versionseventinstanceid' => { 504 => [\'Versions','VersionsEventInstanceID'] },
      +	'versionseventparameters' => { 504 => [\'Versions','VersionsEventParameters'] },
      +	'versionseventsoftwareagent' => { 504 => [\'Versions','VersionsEventSoftwareAgent'] },
      +	'versionseventwhen' => { 504 => [\'Versions','VersionsEventWhen'] },
      +	'versionsmodifier' => { 504 => [\'Versions','VersionsModifier'] },
      +	'versionsmodifydate' => { 504 => [\'Versions','VersionsModifyDate'] },
      +	'versionsversion' => { 504 => [\'Versions','VersionsVersion'] },
      +	'verticalafonbutton' => { 279 => '3.2', 280 => '47.2', 282 => '79.1', 295 => 0x11d },
      +	'verticalclockoverlaps' => { 138 => 0x412 },
      +	'verticalfuncbutton' => { 280 => '42.2', 282 => '67.1', 295 => 0x115 },
      +	'verticalfuncbuttonplaybackmode' => { 295 => 0x1b7 },
      +	'verticalfuncbuttonplusdials' => { 280 => '43.1' },
      +	'verticalfuncplusdials' => { 282 => '68.1' },
      +	'verticalmovieafonbutton' => { 295 => 0x1f9 },
      +	'verticalmoviefuncbutton' => { 295 => 0x1e1 },
      +	'verticalmultiselector' => { 280 => '42.1', 282 => '66.1', 283 => '66.1', 293 => '66.1', 295 => 0x18f },
      +	'verticalmultiselectorplaybackmode' => { 295 => 0x125 },
      +	'vfdisplayillumination' => { 2 => 0x11, 84 => [0x510,0x51d] },
      +	'vibrance' => { 471 => 'Vibrance', 477 => 'Vibrance', 479 => 'Vibrance' },
      +	'vibrationreduction' => { 238 => [0x75,0x82,0x1ae], 246 => '586.1', 255 => '590.2', 263 => 0x4 },
      +	'videoalphamode' => { 503 => 'videoAlphaMode' },
      +	'videoalphapremultiplecolor' => { 503 => 'videoAlphaPremultipleColor' },
      +	'videoalphapremultiplecolora' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorA'] },
      +	'videoalphapremultiplecolorb' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorB'] },
      +	'videoalphapremultiplecolorblack' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlack'] },
      +	'videoalphapremultiplecolorblue' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorBlue'] },
      +	'videoalphapremultiplecolorcyan' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorCyan'] },
      +	'videoalphapremultiplecolorgray' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorGray'] },
      +	'videoalphapremultiplecolorgreen' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorGreen'] },
      +	'videoalphapremultiplecolorl' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorL'] },
      +	'videoalphapremultiplecolormagenta' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMagenta'] },
      +	'videoalphapremultiplecolormode' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorMode'] },
      +	'videoalphapremultiplecolorred' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorRed'] },
      +	'videoalphapremultiplecolorswatchname' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorSwatchName'] },
      +	'videoalphapremultiplecolortint' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorTint'] },
      +	'videoalphapremultiplecolortype' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorType'] },
      +	'videoalphapremultiplecoloryellow' => { 503 => [\'videoAlphaPremultipleColor','videoAlphaPremultipleColorYellow'] },
      +	'videoalphaunityistransparent' => { 503 => 'videoAlphaUnityIsTransparent' },
      +	'videobitrate' => { 489 => 'videoBitRate' },
      +	'videobitratemode' => { 489 => 'videoBitRateMode' },
      +	'videoburstmode' => { 320 => 0xbb },
      +	'videoburstresolution' => { 320 => 0xb3 },
      +	'videocodec' => { 67 => 0x74 },
      +	'videocolorspace' => { 503 => 'videoColorSpace' },
      +	'videocompression' => { 127 => 0x3806 },
      +	'videocompressor' => { 503 => 'videoCompressor' },
      +	'videodisplayaspectratio' => { 489 => 'videoDisplayAspectRatio' },
      +	'videoencodingprofile' => { 489 => 'videoEncodingProfile' },
      +	'videofieldorder' => { 503 => 'videoFieldOrder' },
      +	'videoframerate' => { 320 => 0x27, 503 => 'videoFrameRate' },
      +	'videoframesize' => { 503 => 'videoFrameSize' },
      +	'videoframesizeh' => { 503 => [\'videoFrameSize','videoFrameSizeH'] },
      +	'videoframesizeunit' => { 503 => [\'videoFrameSize','videoFrameSizeUnit'] },
      +	'videoframesizew' => { 503 => [\'videoFrameSize','videoFrameSizeW'] },
      +	'videomoddate' => { 503 => 'videoModDate' },
      +	'videopixelaspectratio' => { 503 => 'videoPixelAspectRatio' },
      +	'videopixeldepth' => { 503 => 'videoPixelDepth' },
      +	'videopreburst' => { 320 => 0xc1 },
      +	'videoquality' => { 113 => 0x4003 },
      +	'videorecordingmode' => { 127 => 0x3803 },
      +	'videoshottype' => { 489 => 'VideoShotType' },
      +	'videoshottypeidentifier' => { 489 => [\'VideoShotType','VideoShotTypeIdentifier'] },
      +	'videoshottypename' => { 489 => [\'VideoShotType','VideoShotTypeName'] },
      +	'videostreamscount' => { 489 => 'videoStreamsCount' },
      +	'viewfinder' => { 364 => 0x455 },
      +	'viewfinderdisplay' => { 279 => '12.4', 280 => '6.3' },
      +	'viewfinderwarning' => { 279 => '13.4', 289 => '3.5', 290 => '6.2', 294 => '4.4' },
      +	'viewfinderwarnings' => { 84 => 0x40a },
      +	'viewinfoduringexposure' => { 84 => 0x407 },
      +	'viewingmode' => { 409 => 0x2f, 425 => 0x18 },
      +	'viewingmode2' => { 409 => [0x85,0x285] },
      +	'viewpoint' => { 492 => 'viewpoint' },
      +	'vignetteamount' => { 477 => 'VignetteAmount', 479 => 'VignetteAmount' },
      +	'vignettecontrol' => { 226 => 0x2a, 272 => 0x76a43205 },
      +	'vignettecontrolintensity' => { 272 => 0xac6bd5c0 },
      +	'vignettecorrectionalreadyapplied' => { 474 => 'VignetteCorrectionAlreadyApplied' },
      +	'vignettemidpoint' => { 477 => 'VignetteMidpoint', 479 => 'VignetteMidpoint' },
      +	'vignetting' => { 387 => 0x1011, 394 => 0xa052 },
      +	'vignettingcorrection' => { 119 => 0x7031, 394 => 0xa053, 420 => 0x2011 },
      +	'vignettingcorrparams' => { 119 => 0x7032, 449 => 0x64a, 450 => [0x34a,0x350,0x35c,0x368] },
      +	'vignettingsetting' => { 394 => 0xa054 },
      +	'virtualhorizonstyle' => { 295 => 0x167 },
      +	'visualcolor' => { 489 => 'VisualColour' },
      +	'visualtechnique' => { 492 => 'visualTechnique' },
      +	'voicememo' => { 396 => 0x216 },
      +	'volume' => { 493 => 'volume' },
      +	'vr_0x66' => { 238 => 0x66 },
      +	'vrdoffset' => { 64 => 0xd0 },
      +	'vrmode' => { 229 => 0x212, 263 => 0x6 },
      +	'waterdepth' => { 119 => 0x9403, 484 => 'WaterDepth' },
      +	'wb_bluelevel3500k' => { 187 => 0x19a },
      +	'wb_bluelevel6500k' => { 187 => 0x18a },
      +	'wb_bluelevelcustom' => { 187 => 0x18e },
      +	'wb_bluelevelscloudy' => { 187 => 0x106 },
      +	'wb_bluelevelsdaylight' => { 187 => 0xea },
      +	'wb_bluelevelsflash' => { 187 => 0x122 },
      +	'wb_bluelevelsfluorescent' => { 187 => [0x40a,0x15a] },
      +	'wb_bluelevelskelvin' => { 187 => 0x254 },
      +	'wb_bluelevelsshade' => { 187 => 0x176 },
      +	'wb_bluelevelstungsten' => { 187 => 0xce },
      +	'wb_gbrglevels' => { 187 => 0xae, 190 => 0x4 },
      +	'wb_glevel' => { 301 => 0x11f },
      +	'wb_glevel3000k' => { 301 => 0x113 },
      +	'wb_glevel3300k' => { 301 => 0x114 },
      +	'wb_glevel3600k' => { 301 => 0x115 },
      +	'wb_glevel3900k' => { 301 => 0x116 },
      +	'wb_glevel4000k' => { 301 => 0x117 },
      +	'wb_glevel4300k' => { 301 => 0x118 },
      +	'wb_glevel4500k' => { 301 => 0x119 },
      +	'wb_glevel4800k' => { 301 => 0x11a },
      +	'wb_glevel5300k' => { 301 => 0x11b },
      +	'wb_glevel6000k' => { 301 => 0x11c },
      +	'wb_glevel6600k' => { 301 => 0x11d },
      +	'wb_glevel7500k' => { 301 => 0x11e },
      +	'wb_grbglevels' => { 201 => 0x0 },
      +	'wb_grgblevelsauto' => { 81 => 0x2 },
      +	'wb_grgblevelscloudy' => { 81 => 0x12 },
      +	'wb_grgblevelscustom1' => { 81 => 0x42 },
      +	'wb_grgblevelscustom2' => { 81 => 0x4a },
      +	'wb_grgblevelsdaylight' => { 81 => 0xa },
      +	'wb_grgblevelsflash' => { 81 => 0x32 },
      +	'wb_grgblevelsfluorescent' => { 81 => 0x22 },
      +	'wb_grgblevelsfluorhigh' => { 81 => 0x2a },
      +	'wb_grgblevelstungsten' => { 81 => 0x1a },
      +	'wb_grgblevelsunderwater' => { 81 => 0x3a },
      +	'wb_rbgglevels' => { 198 => 0x0 },
      +	'wb_rblevels' => { 202 => 0x270, 226 => 0xc, 301 => 0x100 },
      +	'wb_rblevels1' => { 326 => 0x2 },
      +	'wb_rblevels2' => { 326 => 0x5 },
      +	'wb_rblevels3' => { 326 => 0x8 },
      +	'wb_rblevels3000k' => { 301 => 0x102 },
      +	'wb_rblevels3300k' => { 301 => 0x103 },
      +	'wb_rblevels3500k' => { 187 => 0x430 },
      +	'wb_rblevels3600k' => { 301 => 0x104 },
      +	'wb_rblevels3900k' => { 301 => 0x105 },
      +	'wb_rblevels4' => { 326 => 0xb },
      +	'wb_rblevels4000k' => { 301 => 0x106 },
      +	'wb_rblevels4300k' => { 301 => 0x107 },
      +	'wb_rblevels4500k' => { 301 => 0x108 },
      +	'wb_rblevels4800k' => { 301 => 0x109 },
      +	'wb_rblevels5' => { 326 => 0xe },
      +	'wb_rblevels5300k' => { 301 => 0x10a },
      +	'wb_rblevels6' => { 326 => 0x11 },
      +	'wb_rblevels6000k' => { 301 => 0x10b },
      +	'wb_rblevels6500k' => { 187 => 0x420 },
      +	'wb_rblevels6600k' => { 301 => 0x10c },
      +	'wb_rblevels7' => { 326 => 0x14 },
      +	'wb_rblevels7500k' => { 301 => 0x10d },
      +	'wb_rblevelsauto' => { 202 => 0x272, 305 => 0x110 },
      +	'wb_rblevelscloudy' => { 187 => 0x3f0, 189 => 0x10, 202 => 0x296, 305 => 0x121 },
      +	'wb_rblevelscoolwhitef' => { 187 => 0x308, 189 => 0x14 },
      +	'wb_rblevelscoolwhitefluor' => { 305 => 0x132 },
      +	'wb_rblevelscustom' => { 187 => 0x424, 189 => 0x1c },
      +	'wb_rblevelscwb1' => { 301 => 0x10e },
      +	'wb_rblevelscwb2' => { 301 => 0x10f },
      +	'wb_rblevelscwb3' => { 301 => 0x110 },
      +	'wb_rblevelscwb4' => { 301 => 0x111 },
      +	'wb_rblevelsdaylight' => { 187 => [0x3ec,0x528], 189 => 0xc, 202 => 0x274 },
      +	'wb_rblevelsdaylightf' => { 189 => 0x24 },
      +	'wb_rblevelsdaylightfluor' => { 305 => 0x130 },
      +	'wb_rblevelsdaywhitef' => { 189 => 0x28 },
      +	'wb_rblevelsdaywhitefluor' => { 305 => 0x131 },
      +	'wb_rblevelseveningsunlight' => { 305 => 0x124 },
      +	'wb_rblevelsfineweather' => { 305 => 0x122 },
      +	'wb_rblevelsflash' => { 187 => [0x3f4,0x304], 189 => 0x18, 202 => 0x2a4 },
      +	'wb_rblevelsfluorescent' => { 202 => 0x290 },
      +	'wb_rblevelsincandescent' => { 202 => 0x282 },
      +	'wb_rblevelsshade' => { 187 => 0x418, 189 => 0x20, 202 => 0x2b2, 305 => 0x120 },
      +	'wb_rblevelstungsten' => { 187 => 0x3e8, 189 => 0x8, 305 => 0x123 },
      +	'wb_rblevelsused' => { 305 => 0x100 },
      +	'wb_rblevelswhitef' => { 189 => 0x2c },
      +	'wb_rblevelswhitefluorescent' => { 305 => 0x133 },
      +	'wb_redlevel3500k' => { 187 => 0x198 },
      +	'wb_redlevel6500k' => { 187 => 0x188 },
      +	'wb_redlevelcustom' => { 187 => 0x18c },
      +	'wb_redlevelscloudy' => { 187 => 0xf8 },
      +	'wb_redlevelsdaylight' => { 187 => 0xdc },
      +	'wb_redlevelsflash' => { 187 => 0x114 },
      +	'wb_redlevelsfluorescent' => { 187 => [0x3fc,0x14c] },
      +	'wb_redlevelskelvin' => { 187 => 0x1be },
      +	'wb_redlevelsshade' => { 187 => 0x168 },
      +	'wb_redlevelstungsten' => { 187 => 0xc0 },
      +	'wb_rgbglevels' => { 200 => 0x0 },
      +	'wb_rgblevels' => { 187 => [0x546,0x96], 316 => 0xd, 317 => 0x413, 322 => 0x3036, 364 => 0x107, 428 => 0x117c, 429 => 0x1180, 430 => 0x115c, 431 => 0x11d8, 432 => 0x11b4, 433 => 0x106c, 434 => 0x264, 435 => 0x264, 436 => 0x252 },
      +	'wb_rgblevels1' => { 327 => 0x2 },
      +	'wb_rgblevels2' => { 327 => 0x6 },
      +	'wb_rgblevels3' => { 327 => 0xa },
      +	'wb_rgblevels4' => { 327 => 0xe },
      +	'wb_rgblevels5' => { 327 => 0x12 },
      +	'wb_rgblevels6' => { 327 => 0x16 },
      +	'wb_rgblevels7' => { 327 => 0x1a },
      +	'wb_rgblevelsauto' => { 398 => 0x0 },
      +	'wb_rgblevelscustom1' => { 398 => 0x15 },
      +	'wb_rgblevelscustom2' => { 398 => 0x18 },
      +	'wb_rgblevelscustom3' => { 398 => 0x1b },
      +	'wb_rgblevelsdaylight' => { 398 => 0x3 },
      +	'wb_rgblevelsflash' => { 398 => 0x12 },
      +	'wb_rgblevelsfluorescent' => { 398 => 0xf },
      +	'wb_rgblevelsincandescent' => { 398 => 0xc },
      +	'wb_rgblevelsovercast' => { 398 => 0x9 },
      +	'wb_rgblevelsshade' => { 398 => 0x6 },
      +	'wb_rgblevelsunknown0' => { 399 => 0x0 },
      +	'wb_rgblevelsunknown1' => { 399 => 0x3 },
      +	'wb_rgblevelsunknown2' => { 399 => 0x6 },
      +	'wb_rgblevelsunknown3' => { 399 => 0x9 },
      +	'wb_rgblevelsunknown4' => { 399 => 0xc },
      +	'wb_rgblevelsunknown5' => { 399 => 0xf },
      +	'wb_rgblevelsunknown6' => { 399 => 0x12 },
      +	'wb_rgblevelsunknown7' => { 399 => 0x15 },
      +	'wb_rgblevelsunknown8' => { 399 => 0x18 },
      +	'wb_rgblevelsunknown9' => { 399 => 0x1b },
      +	'wb_rgbmuldaylight' => { 138 => 0x852 },
      +	'wb_rgbmulflash' => { 138 => 0x855 },
      +	'wb_rgbmulfluorescent' => { 138 => 0x854 },
      +	'wb_rgbmultungsten' => { 138 => 0x853 },
       	'wb_rggbblacklevels' => { 35 => 0x25 },
      -	'wb_rggblevels' => { 185 => 0x4, 193 => 0x0, 197 => 0x13e8, 198 => 0x38 },
      -	'wb_rggblevelsasshot' => { 38 => 0x0, 39 => 0x0, 40 => 0x19, 41 => 0x22, 42 => 0x3f, 45 => 0x3f, 46 => 0x3f, 47 => 0x3f, 48 => 0x47 },
      -	'wb_rggblevelsauto' => { 35 => 0x1, 38 => 0x5, 39 => 0x8, 40 => 0x1e, 41 => 0x18, 42 => 0x44, 45 => 0x44, 46 => 0x44, 47 => 0x44, 48 => 0x4c, 197 => 0x1478, 198 => 0x114, 380 => 0xa022 },
      -	'wb_rggblevelsblack' => { 380 => 0xa028 },
      -	'wb_rggblevelscloudy' => { 35 => 0xd, 38 => 0x1e, 39 => 0x30, 40 => 0x2d, 41 => 0x31, 42 => 0x58, 45 => 0x71, 46 => 0x8a, 47 => 0x8f, 48 => 0x92, 197 => 0x1408, 198 => 0x60, 341 => 0x20f, 349 => 0x14 },
      -	'wb_rggblevelscustom' => { 35 => 0x1d, 42 => 0x80, 197 => 0x1468, 198 => 0x100 },
      +	'wb_rggblevels' => { 190 => 0x4, 199 => 0x0, 203 => 0x13e8, 204 => 0x38 },
      +	'wb_rggblevelsasshot' => { 38 => 0x0, 39 => 0x0, 40 => 0x19, 41 => 0x55, 42 => 0x69, 43 => 0x22, 44 => 0x3f, 47 => 0x3f, 48 => 0x3f, 49 => 0x3f, 50 => 0x47 },
      +	'wb_rggblevelsauto' => { 35 => 0x1, 38 => 0x5, 39 => 0x8, 40 => 0x1e, 41 => 0x5a, 42 => 0x6e, 43 => 0x18, 44 => 0x44, 47 => 0x44, 48 => 0x44, 49 => 0x44, 50 => 0x4c, 203 => 0x1478, 204 => 0x114, 394 => 0xa022 },
      +	'wb_rggblevelsblack' => { 394 => 0xa028 },
      +	'wb_rggblevelscloudy' => { 35 => 0xd, 38 => 0x1e, 39 => 0x30, 40 => 0x2d, 41 => 0xa0, 42 => 0xd7, 43 => 0x31, 44 => 0x58, 47 => 0x71, 48 => 0x8a, 49 => 0x8f, 50 => 0x92, 203 => 0x1408, 204 => 0x60, 355 => 0x20f, 363 => 0x14 },
      +	'wb_rggblevelscustom' => { 35 => 0x1d, 44 => 0x80, 203 => 0x1468, 204 => 0x100 },
       	'wb_rggblevelscustom1' => { 40 => 0x41 },
       	'wb_rggblevelscustom2' => { 40 => 0x46 },
      -	'wb_rggblevelsdaylight' => { 35 => 0x5, 38 => 0x14, 39 => 0x20, 40 => 0x23, 41 => 0x27, 42 => 0x4e, 45 => 0x67, 46 => 0x80, 47 => 0x85, 48 => 0x88, 197 => 0x13f8, 198 => 0x4c, 341 => 0x20d, 349 => 0x2 },
      -	'wb_rggblevelsflash' => { 35 => 0x19, 38 => 0x32, 39 => 0x50, 40 => 0x3c, 41 => 0x45, 42 => 0x6c, 45 => 0x85, 46 => 0x9e, 47 => 0xa3, 48 => 0xa6, 197 => 0x1448, 341 => 0x214, 349 => 0x41 },
      -	'wb_rggblevelsfluorescent' => { 35 => 0x15, 38 => 0x28, 39 => 0x40, 40 => 0x37, 41 => 0x3b, 42 => 0x62, 45 => 0x7b, 46 => 0x94, 47 => 0x99, 48 => 0x9c },
      -	'wb_rggblevelsfluorescentd' => { 198 => 0xc4, 341 => 0x211, 349 => 0x26 },
      -	'wb_rggblevelsfluorescentl' => { 349 => 0x4a },
      -	'wb_rggblevelsfluorescentn' => { 198 => 0xb0, 341 => 0x212, 349 => 0x2f },
      -	'wb_rggblevelsfluorescentw' => { 197 => 0x1438, 198 => 0x9c, 341 => 0x213, 349 => 0x38 },
      -	'wb_rggblevelshtmercury' => { 198 => 0xd8 },
      -	'wb_rggblevelsilluminator1' => { 380 => 0xa023 },
      -	'wb_rggblevelsilluminator2' => { 380 => 0xa024 },
      -	'wb_rggblevelskelvin' => { 35 => 0x21, 38 => 0x2d, 39 => 0x48, 41 => 0x40, 42 => 0x67, 45 => 0x80, 46 => 0x99, 47 => 0x9e, 48 => 0xa1 },
      -	'wb_rggblevelsmeasured' => { 38 => 0xa, 39 => 0x10, 42 => 0x49, 45 => 0x49, 46 => 0x49, 47 => 0x49, 48 => 0x51 },
      -	'wb_rggblevelspc1' => { 41 => 0x90, 42 => 0x71 },
      -	'wb_rggblevelspc2' => { 41 => 0x95, 42 => 0x76 },
      -	'wb_rggblevelspc3' => { 41 => 0x9a, 42 => 0x7b },
      -	'wb_rggblevelsshade' => { 35 => 0x9, 38 => 0x19, 39 => 0x28, 40 => 0x28, 41 => 0x2c, 42 => 0x53, 45 => 0x6c, 46 => 0x85, 47 => 0x8a, 48 => 0x8d, 198 => 0x74, 341 => 0x20e, 349 => 0xb },
      -	'wb_rggblevelstungsten' => { 35 => 0x11, 38 => 0x23, 39 => 0x38, 40 => 0x32, 41 => 0x36, 42 => 0x5d, 45 => 0x76, 46 => 0x8f, 47 => 0x94, 48 => 0x97, 197 => 0x1428, 198 => 0x88, 341 => 0x210, 349 => 0x1d },
      -	'wb_rggblevelsuncorrected' => { 380 => 0xa021 },
      -	'wb_rggblevelsunknown' => { 38 => 0xf, 39 => 0x18, 41 => 0x1d, 45 => 0x4e, 46 => 0x4e, 47 => 0x4e, 48 => 0x56, 349 => 0x53 },
      -	'wb_rggblevelsunknown10' => { 38 => 0x5f, 39 => 0x98, 41 => 0x72, 45 => 0x9e, 46 => 0x7b, 47 => 0x7b, 48 => 0x83 },
      -	'wb_rggblevelsunknown11' => { 38 => 0x64, 39 => 0xa0, 41 => 0x77, 45 => 0xa3, 46 => 0xa3, 47 => 0x80, 48 => 0xab },
      -	'wb_rggblevelsunknown12' => { 38 => 0x69, 39 => 0xa8, 41 => 0x7c, 45 => 0xa8, 46 => 0xa8, 47 => 0xa8, 48 => 0xb0 },
      -	'wb_rggblevelsunknown13' => { 38 => 0x6e, 39 => 0xb0, 41 => 0x81, 45 => 0xad, 46 => 0xad, 47 => 0xad, 48 => 0xb5 },
      -	'wb_rggblevelsunknown14' => { 41 => 0x86, 45 => 0xb2, 46 => 0xb2, 47 => 0xb2, 48 => 0xba },
      -	'wb_rggblevelsunknown15' => { 41 => 0x8b, 45 => 0xb7, 46 => 0xb7, 47 => 0xb7, 48 => 0xbf },
      -	'wb_rggblevelsunknown16' => { 41 => 0x9f, 46 => 0xbc, 47 => 0xbc, 48 => 0xc4 },
      -	'wb_rggblevelsunknown17' => { 46 => 0xc1, 47 => 0xc1, 48 => 0xc9 },
      -	'wb_rggblevelsunknown18' => { 46 => 0xc6, 47 => 0xc6, 48 => 0xce },
      -	'wb_rggblevelsunknown19' => { 46 => 0xcb, 47 => 0xcb, 48 => 0xd3 },
      -	'wb_rggblevelsunknown2' => { 38 => 0x37, 39 => 0x58, 41 => 0x4a, 45 => 0x53, 46 => 0x53, 47 => 0x53, 48 => 0x5b },
      -	'wb_rggblevelsunknown20' => { 46 => 0xd0, 47 => 0xd0, 48 => 0xd8 },
      -	'wb_rggblevelsunknown21' => { 47 => 0xd5, 48 => 0xdd },
      -	'wb_rggblevelsunknown22' => { 47 => 0xda, 48 => 0xe2 },
      -	'wb_rggblevelsunknown23' => { 47 => 0xdf, 48 => 0xe7 },
      -	'wb_rggblevelsunknown24' => { 47 => 0xe4, 48 => 0xec },
      -	'wb_rggblevelsunknown25' => { 47 => 0xe9, 48 => 0xf1 },
      -	'wb_rggblevelsunknown26' => { 47 => 0xee, 48 => 0xf6 },
      -	'wb_rggblevelsunknown27' => { 47 => 0xf3, 48 => 0xfb },
      -	'wb_rggblevelsunknown28' => { 47 => 0xf8, 48 => 0x100 },
      -	'wb_rggblevelsunknown29' => { 47 => 0xfd, 48 => 0x105 },
      -	'wb_rggblevelsunknown3' => { 38 => 0x3c, 39 => 0x60, 41 => 0x4f, 45 => 0x58, 46 => 0x58, 47 => 0x58, 48 => 0x60 },
      -	'wb_rggblevelsunknown30' => { 47 => 0x102 },
      -	'wb_rggblevelsunknown4' => { 38 => 0x41, 39 => 0x68, 41 => 0x54, 45 => 0x5d, 46 => 0x5d, 47 => 0x5d, 48 => 0x65 },
      -	'wb_rggblevelsunknown5' => { 38 => 0x46, 39 => 0x70, 41 => 0x59, 45 => 0x62, 46 => 0x62, 47 => 0x62, 48 => 0x6a },
      -	'wb_rggblevelsunknown6' => { 38 => 0x4b, 39 => 0x78, 41 => 0x5e, 45 => 0x8a, 46 => 0x67, 47 => 0x67, 48 => 0x6f },
      -	'wb_rggblevelsunknown7' => { 38 => 0x50, 39 => 0x80, 41 => 0x63, 45 => 0x8f, 46 => 0x6c, 47 => 0x6c, 48 => 0x74 },
      -	'wb_rggblevelsunknown8' => { 38 => 0x55, 39 => 0x88, 41 => 0x68, 45 => 0x94, 46 => 0x71, 47 => 0x71, 48 => 0x79 },
      -	'wb_rggblevelsunknown9' => { 38 => 0x5a, 39 => 0x90, 41 => 0x6d, 45 => 0x99, 46 => 0x76, 47 => 0x76, 48 => 0x7e },
      -	'wb_rggblevelsuserselected' => { 349 => 0x5c },
      -	'wbadjblueamber' => { 100 => 0x20106 },
      -	'wbadjbluebalance' => { 265 => 0x8 },
      -	'wbadjcolortemp' => { 100 => 0x20102, 105 => 0x1a },
      -	'wbadjlighting' => { 265 => 0x14 },
      -	'wbadjmagentagreen' => { 100 => 0x20105 },
      -	'wbadjmode' => { 265 => 0x10 },
      -	'wbadjredbalance' => { 265 => 0x0 },
      -	'wbadjrggblevels' => { 100 => 0x20125, 105 => 0x6 },
      -	'wbadjtemperature' => { 265 => 0x18 },
      -	'wbadjtint' => { 265 => 0x25 },
      -	'wbbluelevel' => { 301 => 0x324, 306 => 0x8006, 311 => 0x26 },
      -	'wbbracketingsteps' => { 237 => 0x174d, 238 => 0x87c, 246 => 0x1757 },
      -	'wbbracketmode' => { 55 => 0x9 },
      -	'wbbracketshotnumber' => { 182 => 0x2b, 373 => 0x101a },
      -	'wbbracketvalueab' => { 55 => 0xc },
      -	'wbbracketvaluegm' => { 55 => 0xd },
      -	'wbfinetuneactive' => { 105 => 0x24 },
      -	'wbfinetunesaturation' => { 105 => 0x28 },
      -	'wbfinetunetone' => { 105 => 0x2c },
      -	'wbgreenlevel' => { 301 => 0x323, 306 => 0x8005, 311 => 0x25 },
      -	'wbmediaimagesizesetting' => { 81 => 0x708 },
      -	'wbmode' => { 184 => 0x4, 288 => 0x1015 },
      -	'wbredlevel' => { 301 => 0x322, 306 => 0x8004, 311 => 0x24 },
      -	'wbscale' => { 185 => 0x0 },
      -	'wbshiftab' => { 71 => 0xc, 306 => 0x46, 323 => 0x10 },
      -	'wbshiftab_gm' => { 406 => 0x2014 },
      -	'wbshiftab_gm_precise' => { 406 => 0x2026 },
      -	'wbshiftcreativecontrol' => { 306 => 0x92 },
      -	'wbshiftgm' => { 71 => 0xd, 306 => 0x47, 323 => 0x11 },
      -	'wbshiftintelligentauto' => { 306 => 0x8b },
      -	'wbtype1' => { 312 => 0x1, 313 => 0x1 },
      -	'wbtype2' => { 312 => 0x4, 313 => 0x5 },
      -	'wbtype3' => { 312 => 0x7, 313 => 0x9 },
      -	'wbtype4' => { 312 => 0xa, 313 => 0xd },
      -	'wbtype5' => { 312 => 0xd, 313 => 0x11 },
      -	'wbtype6' => { 312 => 0x10, 313 => 0x15 },
      -	'wbtype7' => { 312 => 0x13, 313 => 0x19 },
      -	'webstatement' => { 492 => 'WebStatement' },
      -	'what' => { 462 => 'What', 464 => 'What' },
      -	'whitebalance' => { 7 => 0x6f, 8 => [0x44,0x4a], 9 => 0xbc, 10 => 0x36, 11 => 0x5e, 12 => 0x36, 13 => 0x78, 14 => 0x6f, 15 => 0x6f, 16 => 0x73, 17 => 0x6f, 18 => 0x78, 19 => 0x54, 20 => 0x6f, 21 => 0xbc, 22 => 0x7b, 24 => 0xbc, 25 => 0xc2, 27 => 0x131, 28 => 0x77, 71 => 0x8, 74 => 0x7, 109 => 0x7, 110 => [0x19,0x2012], 116 => [0xa403,0xfe4e], 124 => 0x1002, 134 => 0x3fc, 135 => 0xfa0d, 136 => 0x40, 147 => 0x1a, 176 => 0x3, 177 => 0xe, 178 => 0x4, 179 => 0xb, 181 => 0x115, 219 => 0x5, 249 => 0x7, 301 => 0x304, 306 => 0x3, 308 => 0x3033, 341 => 0x19, 348 => 0x7, 372 => 0x26, 373 => 0x1003, 383 => [0x88,0x3c,0x7,0x58], 393 => 0xf, 394 => 0xe, 406 => [0x115,0xb054], 462 => 'WhiteBalance', 464 => 'WhiteBalance', 468 => 'WhiteBalance' },
      -	'whitebalance0' => { 172 => 'WhiteBalance0' },
      -	'whitebalance1' => { 172 => 'WhiteBalance1' },
      -	'whitebalance2' => { 172 => 'WhiteBalance2', 283 => 0x500 },
      -	'whitebalanceadj' => { 100 => 0x20101, 105 => 0x18, 259 => 0x76a43204 },
      -	'whitebalanceautoadjustment' => { 319 => 0x0 },
      -	'whitebalancebias' => { 110 => 0x2011, 288 => 0x304, 306 => 0x23 },
      -	'whitebalanceblue' => { 71 => 0x7 },
      -	'whitebalancebracket' => { 283 => 0x502, 288 => 0x303 },
      -	'whitebalancebracketing' => { 179 => 0x22, 182 => 0x2c, 404 => 0x2c },
      -	'whitebalancecomp' => { 291 => 0x1001 },
      -	'whitebalancedetected' => { 134 => 0x3fb },
      -	'whitebalancefinetune' => { 124 => 0x100a, 179 => 0x38, 181 => 0x112, 219 => 0xb, 373 => 0x1004, 393 => 0x6, 394 => 0x5, 406 => 0x112 },
      -	'whitebalancemode' => { 134 => 0x3fa, 341 => 0x1a },
      -	'whitebalancered' => { 71 => 0x6 },
      -	'whitebalanceset' => { 322 => 0xa },
      -	'whitebalancesetting' => { 179 => 0x23, 393 => 0x5, 394 => 0x4, 395 => 0x16, 411 => 0xd },
      -	'whitebalancesetup' => { 380 => 0x41 },
      -	'whitebalancetemperature' => { 283 => 0x501 },
      -	'whiteboard' => { 288 => 0x301 },
      -	'whitelevel' => { 116 => 0xc61d, 341 => 0x7e },
      -	'whitepoint' => { 116 => 0x13e, 341 => 0x201, 484 => 'WhitePoint' },
      -	'whites2012' => { 462 => 'Whites2012', 464 => 'Whites2012' },
      -	'whitesadj' => { 439 => 0x9017 },
      -	'wideadapter' => { 373 => 0x1017 },
      -	'widefocuszone' => { 176 => 0x2f },
      -	'widerange' => { 382 => 0x20f },
      -	'windmode' => { 134 => 0x3f4 },
      -	'windowlocation' => { 366 => 'WLOC' },
      -	'windowsatom' => { 463 => 'windowsAtom' },
      -	'windowsatomextension' => { 463 => [\'windowsAtom','windowsAtomExtension'] },
      -	'windowsatominvocationflags' => { 463 => [\'windowsAtom','windowsAtomInvocationFlags'] },
      -	'windowsatomuncprojectpath' => { 463 => [\'windowsAtom','windowsAtomUncProjectPath'] },
      -	'wordcount' => { 478 => 'wordCount' },
      -	'workcolorspace' => { 100 => 0x10200, 105 => 0x270 },
      -	'workflowtag' => { 474 => 'WorkflowTag' },
      -	'workflowtagcvid' => { 474 => [\'WorkflowTag','WorkflowTagCvId'] },
      -	'workflowtagcvtermid' => { 474 => [\'WorkflowTag','WorkflowTagCvTermId'] },
      -	'workflowtagcvtermname' => { 474 => [\'WorkflowTag','WorkflowTagCvTermName'] },
      -	'workflowtagcvtermrefinedabout' => { 474 => [\'WorkflowTag','WorkflowTagCvTermRefinedAbout'] },
      -	'worktodo' => { 470 => 'WorkToDo' },
      -	'worldtimelocation' => { 306 => 0x3a, 341 => 0x22, 347 => '0.1' },
      -	'writer-editor' => { 128 => 0x7a },
      -	'x3filllight' => { 383 => 0x12 },
      -	'xattrquarantine' => { 170 => 'com.apple.quarantine' },
      -	'xilinxversion' => { 134 => 0x414 },
      -	'xml' => { 132 => 'xml ' },
      -	'xmp' => { 103 => 0xffff00f6, 117 => 'XMP' },
      -	'xmptoolkit' => { 485 => 'xmptk' },
      -	'xpauthor' => { 116 => 0x9c9d },
      -	'xpcomment' => { 116 => 0x9c9c },
      -	'xpkeywords' => { 116 => 0x9c9e },
      -	'xposition' => { 116 => 0x11e },
      -	'xpsubject' => { 116 => 0x9c9f },
      -	'xptitle' => { 116 => 0x9c9b },
      -	'xresolution' => { 116 => 0x11a, 131 => 0x3, 356 => 0x0, 484 => 'XResolution' },
      -	'xyresolution' => { 120 => 0x3 },
      -	'yaw' => { 112 => 0x7, 366 => ['_yaw',"\xa9fyw"] },
      -	'yawangle' => { 237 => 0x3513, 238 => 0x2c2c, 246 => 0x36fc, 378 => 0x0 },
      -	'ycbcrcoefficients' => { 116 => 0x211, 484 => 'YCbCrCoefficients' },
      -	'ycbcrpositioning' => { 116 => 0x213, 484 => 'YCbCrPositioning' },
      -	'ycbcrsubsampling' => { 116 => 0x212, 484 => 'YCbCrSubSampling' },
      -	'year' => { 358 => 'yrrc', 360 => 'year' },
      -	'yearcreated' => { 136 => 0x10, 145 => 0xc },
      -	'yellowhsl' => { 100 => 0x20912 },
      -	'yield' => { 480 => 'yield' },
      -	'yposition' => { 116 => 0x11f },
      -	'yresolution' => { 116 => 0x11b, 131 => 0x5, 356 => 0x4, 484 => 'YResolution' },
      -	'zonematching' => { 181 => 0x10a, 184 => [0x3a,0x4a], 406 => 0xb024 },
      -	'zonematchingmode' => { 179 => 0x14 },
      -	'zonematchingon' => { 178 => 0x75 },
      -	'zonematchingvalue' => { 393 => 0x1f },
      -	'zoomedpreviewlength' => { 288 => 0xf05 },
      -	'zoomedpreviewsize' => { 288 => 0xf06 },
      -	'zoomedpreviewstart' => { 288 => 0xf04 },
      +	'wb_rggblevelsdaylight' => { 35 => 0x5, 38 => 0x14, 39 => 0x20, 40 => 0x23, 41 => 0x96, 42 => 0xcd, 43 => 0x27, 44 => 0x4e, 47 => 0x67, 48 => 0x80, 49 => 0x85, 50 => 0x88, 203 => 0x13f8, 204 => 0x4c, 355 => 0x20d, 363 => 0x2 },
      +	'wb_rggblevelsflash' => { 35 => 0x19, 38 => 0x32, 39 => 0x50, 40 => 0x3c, 41 => 0xb4, 42 => 0xeb, 43 => 0x45, 44 => 0x6c, 47 => 0x85, 48 => 0x9e, 49 => 0xa3, 50 => 0xa6, 203 => 0x1448, 355 => 0x214, 363 => 0x41 },
      +	'wb_rggblevelsfluorescent' => { 35 => 0x15, 38 => 0x28, 39 => 0x40, 40 => 0x37, 41 => 0xaa, 42 => 0xe1, 43 => 0x3b, 44 => 0x62, 47 => 0x7b, 48 => 0x94, 49 => 0x99, 50 => 0x9c },
      +	'wb_rggblevelsfluorescentd' => { 204 => 0xc4, 355 => 0x211, 363 => 0x26 },
      +	'wb_rggblevelsfluorescentl' => { 363 => 0x4a },
      +	'wb_rggblevelsfluorescentn' => { 204 => 0xb0, 355 => 0x212, 363 => 0x2f },
      +	'wb_rggblevelsfluorescentw' => { 203 => 0x1438, 204 => 0x9c, 355 => 0x213, 363 => 0x38 },
      +	'wb_rggblevelshtmercury' => { 204 => 0xd8 },
      +	'wb_rggblevelsilluminator1' => { 394 => 0xa023 },
      +	'wb_rggblevelsilluminator2' => { 394 => 0xa024 },
      +	'wb_rggblevelskelvin' => { 35 => 0x21, 38 => 0x2d, 39 => 0x48, 41 => 0xaf, 42 => 0xe6, 43 => 0x40, 44 => 0x67, 47 => 0x80, 48 => 0x99, 49 => 0x9e, 50 => 0xa1 },
      +	'wb_rggblevelsmeasured' => { 38 => 0xa, 39 => 0x10, 41 => 0x5f, 42 => 0x73, 44 => 0x49, 47 => 0x49, 48 => 0x49, 49 => 0x49, 50 => 0x51 },
      +	'wb_rggblevelspc1' => { 43 => 0x90, 44 => 0x71 },
      +	'wb_rggblevelspc2' => { 43 => 0x95, 44 => 0x76 },
      +	'wb_rggblevelspc3' => { 43 => 0x9a, 44 => 0x7b },
      +	'wb_rggblevelsshade' => { 35 => 0x9, 38 => 0x19, 39 => 0x28, 40 => 0x28, 41 => 0x9b, 42 => 0xd2, 43 => 0x2c, 44 => 0x53, 47 => 0x6c, 48 => 0x85, 49 => 0x8a, 50 => 0x8d, 204 => 0x74, 355 => 0x20e, 363 => 0xb },
      +	'wb_rggblevelstungsten' => { 35 => 0x11, 38 => 0x23, 39 => 0x38, 40 => 0x32, 41 => 0xa5, 42 => 0xdc, 43 => 0x36, 44 => 0x5d, 47 => 0x76, 48 => 0x8f, 49 => 0x94, 50 => 0x97, 203 => 0x1428, 204 => 0x88, 355 => 0x210, 363 => 0x1d },
      +	'wb_rggblevelsuncorrected' => { 394 => 0xa021 },
      +	'wb_rggblevelsunknown' => { 38 => 0xf, 39 => 0x18, 41 => 0x64, 42 => 0x78, 43 => 0x1d, 47 => 0x4e, 48 => 0x4e, 49 => 0x4e, 50 => 0x56, 363 => 0x53 },
      +	'wb_rggblevelsunknown10' => { 38 => 0x5f, 39 => 0x98, 41 => 0x91, 42 => 0xa5, 43 => 0x72, 47 => 0x9e, 48 => 0x7b, 49 => 0x7b, 50 => 0x83 },
      +	'wb_rggblevelsunknown11' => { 38 => 0x64, 39 => 0xa0, 41 => 0xb9, 42 => [0xaa,0xaf], 43 => 0x77, 47 => 0xa3, 48 => 0xa3, 49 => 0x80, 50 => 0xab },
      +	'wb_rggblevelsunknown12' => { 38 => 0x69, 39 => 0xa8, 41 => 0xbe, 42 => 0xb4, 43 => 0x7c, 47 => 0xa8, 48 => 0xa8, 49 => 0xa8, 50 => 0xb0 },
      +	'wb_rggblevelsunknown13' => { 38 => 0x6e, 39 => 0xb0, 41 => 0xc3, 42 => 0xb9, 43 => 0x81, 47 => 0xad, 48 => 0xad, 49 => 0xad, 50 => 0xb5 },
      +	'wb_rggblevelsunknown14' => { 41 => 0xc8, 42 => 0xbe, 43 => 0x86, 47 => 0xb2, 48 => 0xb2, 49 => 0xb2, 50 => 0xba },
      +	'wb_rggblevelsunknown15' => { 41 => 0xcd, 42 => 0xc3, 43 => 0x8b, 47 => 0xb7, 48 => 0xb7, 49 => 0xb7, 50 => 0xbf },
      +	'wb_rggblevelsunknown16' => { 41 => 0xd2, 42 => 0xc8, 43 => 0x9f, 48 => 0xbc, 49 => 0xbc, 50 => 0xc4 },
      +	'wb_rggblevelsunknown17' => { 41 => 0xd7, 42 => 0xf0, 48 => 0xc1, 49 => 0xc1, 50 => 0xc9 },
      +	'wb_rggblevelsunknown18' => { 41 => 0xdc, 42 => 0xf5, 48 => 0xc6, 49 => 0xc6, 50 => 0xce },
      +	'wb_rggblevelsunknown19' => { 41 => 0xe1, 42 => 0xfa, 48 => 0xcb, 49 => 0xcb, 50 => 0xd3 },
      +	'wb_rggblevelsunknown2' => { 38 => 0x37, 39 => 0x58, 41 => 0x69, 42 => 0x7d, 43 => 0x4a, 47 => 0x53, 48 => 0x53, 49 => 0x53, 50 => 0x5b },
      +	'wb_rggblevelsunknown20' => { 41 => 0xe6, 42 => 0xff, 48 => 0xd0, 49 => 0xd0, 50 => 0xd8 },
      +	'wb_rggblevelsunknown21' => { 41 => 0xeb, 42 => 0x104, 49 => 0xd5, 50 => 0xdd },
      +	'wb_rggblevelsunknown22' => { 41 => 0xf0, 42 => 0x109, 49 => 0xda, 50 => 0xe2 },
      +	'wb_rggblevelsunknown23' => { 41 => 0xf5, 42 => 0x10e, 49 => 0xdf, 50 => 0xe7 },
      +	'wb_rggblevelsunknown24' => { 41 => 0xfa, 42 => 0x113, 49 => 0xe4, 50 => 0xec },
      +	'wb_rggblevelsunknown25' => { 41 => 0xff, 42 => 0x118, 49 => 0xe9, 50 => 0xf1 },
      +	'wb_rggblevelsunknown26' => { 41 => 0x104, 42 => 0x11d, 49 => 0xee, 50 => 0xf6 },
      +	'wb_rggblevelsunknown27' => { 41 => 0x109, 42 => 0x122, 49 => 0xf3, 50 => 0xfb },
      +	'wb_rggblevelsunknown28' => { 41 => 0x10e, 49 => 0xf8, 50 => 0x100 },
      +	'wb_rggblevelsunknown29' => { 41 => 0x113, 49 => 0xfd, 50 => 0x105 },
      +	'wb_rggblevelsunknown3' => { 38 => 0x3c, 39 => 0x60, 41 => 0x6e, 42 => 0x82, 43 => 0x4f, 47 => 0x58, 48 => 0x58, 49 => 0x58, 50 => 0x60 },
      +	'wb_rggblevelsunknown30' => { 49 => 0x102 },
      +	'wb_rggblevelsunknown4' => { 38 => 0x41, 39 => 0x68, 41 => 0x73, 42 => 0x87, 43 => 0x54, 47 => 0x5d, 48 => 0x5d, 49 => 0x5d, 50 => 0x65 },
      +	'wb_rggblevelsunknown5' => { 38 => 0x46, 39 => 0x70, 41 => 0x78, 42 => 0x8c, 43 => 0x59, 47 => 0x62, 48 => 0x62, 49 => 0x62, 50 => 0x6a },
      +	'wb_rggblevelsunknown6' => { 38 => 0x4b, 39 => 0x78, 41 => 0x7d, 42 => 0x91, 43 => 0x5e, 47 => 0x8a, 48 => 0x67, 49 => 0x67, 50 => 0x6f },
      +	'wb_rggblevelsunknown7' => { 38 => 0x50, 39 => 0x80, 41 => 0x82, 42 => 0x96, 43 => 0x63, 47 => 0x8f, 48 => 0x6c, 49 => 0x6c, 50 => 0x74 },
      +	'wb_rggblevelsunknown8' => { 38 => 0x55, 39 => 0x88, 41 => 0x87, 42 => 0x9b, 43 => 0x68, 47 => 0x94, 48 => 0x71, 49 => 0x71, 50 => 0x79 },
      +	'wb_rggblevelsunknown9' => { 38 => 0x5a, 39 => 0x90, 41 => 0x8c, 42 => 0xa0, 43 => 0x6d, 47 => 0x99, 48 => 0x76, 49 => 0x76, 50 => 0x7e },
      +	'wb_rggblevelsuserselected' => { 363 => 0x5c },
      +	'wbadjblueamber' => { 103 => 0x20106 },
      +	'wbadjbluebalance' => { 278 => 0x8 },
      +	'wbadjcolortemp' => { 103 => 0x20102, 108 => 0x1a },
      +	'wbadjlighting' => { 278 => 0x14 },
      +	'wbadjmagentagreen' => { 103 => 0x20105 },
      +	'wbadjmode' => { 278 => 0x10 },
      +	'wbadjredbalance' => { 278 => 0x0 },
      +	'wbadjrggblevels' => { 103 => 0x20125, 108 => 0x6 },
      +	'wbadjtemperature' => { 278 => 0x18 },
      +	'wbadjtint' => { 278 => 0x25 },
      +	'wbbluelevel' => { 315 => 0x324, 320 => 0x8006, 325 => 0x26 },
      +	'wbbracketingsteps' => { 247 => 0x174d, 248 => 0x87c, 257 => 0x1757 },
      +	'wbbracketmode' => { 57 => 0x9 },
      +	'wbbracketshotnumber' => { 187 => 0x2b, 387 => 0x101a },
      +	'wbbracketvalueab' => { 57 => 0xc },
      +	'wbbracketvaluegm' => { 57 => 0xd },
      +	'wbfinetuneactive' => { 108 => 0x24 },
      +	'wbfinetunesaturation' => { 108 => 0x28 },
      +	'wbfinetunetone' => { 108 => 0x2c },
      +	'wbgreenlevel' => { 315 => 0x323, 320 => 0x8005, 325 => 0x25 },
      +	'wbmediaimagesizesetting' => { 84 => 0x708 },
      +	'wbmode' => { 189 => 0x4, 302 => 0x1015 },
      +	'wbredlevel' => { 315 => 0x322, 320 => 0x8004, 325 => 0x24 },
      +	'wbscale' => { 190 => 0x0 },
      +	'wbshiftab' => { 74 => 0xc, 320 => 0x46, 337 => 0x10 },
      +	'wbshiftab_gm' => { 420 => 0x2014 },
      +	'wbshiftab_gm_precise' => { 420 => 0x2026 },
      +	'wbshiftcreativecontrol' => { 320 => 0x92 },
      +	'wbshiftgm' => { 74 => 0xd, 320 => 0x47, 337 => 0x11 },
      +	'wbshiftintelligentauto' => { 320 => 0x8b },
      +	'wbtype1' => { 326 => 0x1, 327 => 0x1 },
      +	'wbtype2' => { 326 => 0x4, 327 => 0x5 },
      +	'wbtype3' => { 326 => 0x7, 327 => 0x9 },
      +	'wbtype4' => { 326 => 0xa, 327 => 0xd },
      +	'wbtype5' => { 326 => 0xd, 327 => 0x11 },
      +	'wbtype6' => { 326 => 0x10, 327 => 0x15 },
      +	'wbtype7' => { 326 => 0x13, 327 => 0x19 },
      +	'webstatement' => { 507 => 'WebStatement' },
      +	'weightedflatsubject' => { 469 => 'weightedFlatSubject' },
      +	'what' => { 477 => 'What', 479 => 'What' },
      +	'whitebalance' => { 7 => 0x6f, 8 => [0x44,0x4a], 9 => 0xbc, 10 => 0x36, 11 => 0x5e, 12 => 0x36, 13 => 0x78, 14 => 0x6f, 15 => 0x6f, 16 => 0x73, 17 => 0x6f, 18 => 0x78, 19 => 0x54, 20 => 0x6f, 21 => 0xbc, 22 => 0x7b, 24 => 0xbc, 25 => 0xc2, 27 => 0x131, 28 => 0x77, 74 => 0x8, 77 => 0x7, 112 => 0x7, 113 => [0x19,0x2012], 119 => [0xa403,0xfe4e], 127 => 0x1002, 138 => 0x3fc, 139 => 0xfa0d, 140 => 0x40, 151 => 0x1a, 181 => 0x3, 182 => 0xe, 183 => 0x4, 184 => 0xb, 186 => 0x115, 226 => 0x5, 262 => 0x7, 315 => 0x304, 320 => 0x3, 322 => 0x3033, 355 => 0x19, 362 => 0x7, 386 => 0x26, 387 => 0x1003, 397 => [0x88,0x3c,0x7,0x58], 407 => 0xf, 408 => 0xe, 420 => [0x115,0xb054], 477 => 'WhiteBalance', 479 => 'WhiteBalance', 483 => 'WhiteBalance' },
      +	'whitebalance0' => { 176 => 'WhiteBalance0' },
      +	'whitebalance1' => { 176 => 'WhiteBalance1' },
      +	'whitebalance2' => { 176 => 'WhiteBalance2', 297 => 0x500 },
      +	'whitebalanceadj' => { 103 => 0x20101, 108 => 0x18, 272 => 0x76a43204 },
      +	'whitebalanceautoadjustment' => { 333 => 0x0 },
      +	'whitebalancebias' => { 113 => 0x2011, 302 => 0x304, 320 => 0x23 },
      +	'whitebalanceblue' => { 74 => 0x7 },
      +	'whitebalancebracket' => { 297 => 0x502, 302 => 0x303 },
      +	'whitebalancebracketing' => { 184 => 0x22, 187 => 0x2c, 418 => 0x2c },
      +	'whitebalancebuttonplaybackmode' => { 295 => 0x1c5 },
      +	'whitebalancecomp' => { 305 => 0x1001 },
      +	'whitebalancedetected' => { 138 => 0x3fb },
      +	'whitebalancefinetune' => { 127 => 0x100a, 184 => 0x38, 186 => 0x112, 226 => 0xb, 387 => 0x1004, 407 => 0x6, 408 => 0x5, 420 => 0x112 },
      +	'whitebalancemode' => { 138 => 0x3fa, 355 => 0x1a },
      +	'whitebalancered' => { 74 => 0x6 },
      +	'whitebalanceset' => { 336 => 0xa },
      +	'whitebalancesetting' => { 184 => 0x23, 407 => 0x5, 408 => 0x4, 409 => 0x16, 425 => 0xd },
      +	'whitebalancesetup' => { 394 => 0x41 },
      +	'whitebalancetemperature' => { 297 => 0x501 },
      +	'whiteboard' => { 302 => 0x301 },
      +	'whitelevel' => { 119 => 0xc61d, 355 => 0x7e },
      +	'whitepoint' => { 119 => 0x13e, 319 => 0x35d, 355 => 0x201, 499 => 'WhitePoint' },
      +	'whites2012' => { 477 => 'Whites2012', 479 => 'Whites2012' },
      +	'whitesadj' => { 454 => 0x9017 },
      +	'wideadapter' => { 387 => 0x1017 },
      +	'widefocuszone' => { 181 => 0x2f },
      +	'widerange' => { 396 => 0x20f },
      +	'windmode' => { 138 => 0x3f4 },
      +	'windnoisereduction' => { 229 => 0x2d6 },
      +	'windowlocation' => { 380 => 'WLOC' },
      +	'windowsatom' => { 478 => 'windowsAtom' },
      +	'windowsatomextension' => { 478 => [\'windowsAtom','windowsAtomExtension'] },
      +	'windowsatominvocationflags' => { 478 => [\'windowsAtom','windowsAtomInvocationFlags'] },
      +	'windowsatomuncprojectpath' => { 478 => [\'windowsAtom','windowsAtomUncProjectPath'] },
      +	'wordcount' => { 493 => 'wordCount' },
      +	'work' => { 372 => "\xa9wrk" },
      +	'workcolorspace' => { 103 => 0x10200, 108 => 0x270 },
      +	'workflowtag' => { 489 => 'WorkflowTag' },
      +	'workflowtagcvid' => { 489 => [\'WorkflowTag','WorkflowTagCvId'] },
      +	'workflowtagcvtermid' => { 489 => [\'WorkflowTag','WorkflowTagCvTermId'] },
      +	'workflowtagcvtermname' => { 489 => [\'WorkflowTag','WorkflowTagCvTermName'] },
      +	'workflowtagcvtermrefinedabout' => { 489 => [\'WorkflowTag','WorkflowTagCvTermRefinedAbout'] },
      +	'worktodo' => { 485 => 'WorkToDo' },
      +	'worldtimelocation' => { 320 => 0x3a, 355 => 0x22, 361 => '0.1' },
      +	'writer' => { 179 => 'WM/Writer' },
      +	'writer-editor' => { 131 => 0x7a },
      +	'x3filllight' => { 397 => 0x12 },
      +	'xattrquarantine' => { 174 => 'com.apple.quarantine' },
      +	'xilinxversion' => { 138 => 0x414 },
      +	'xml' => { 136 => 'xml ' },
      +	'xmp' => { 106 => 0xffff00f6, 120 => 'XMP' },
      +	'xmptoolkit' => { 500 => 'xmptk' },
      +	'xpauthor' => { 119 => 0x9c9d },
      +	'xpcomment' => { 119 => 0x9c9c },
      +	'xpkeywords' => { 119 => 0x9c9e },
      +	'xposition' => { 119 => 0x11e },
      +	'xpsubject' => { 119 => 0x9c9f },
      +	'xptitle' => { 119 => 0x9c9b },
      +	'xresolution' => { 119 => 0x11a, 134 => 0x3, 370 => 0x0, 499 => 'XResolution' },
      +	'xyresolution' => { 123 => 0x3 },
      +	'yaw' => { 115 => 0x7, 380 => ['_yaw',"\xa9fyw"] },
      +	'yawangle' => { 247 => 0x3513, 248 => 0x2c2c, 252 => 0xc222, 257 => 0x36fc, 258 => 0x2f03, 260 => 0xce3a, 261 => 0xeaf3, 392 => 0x0 },
      +	'ycbcrcoefficients' => { 119 => 0x211, 499 => 'YCbCrCoefficients' },
      +	'ycbcrpositioning' => { 119 => 0x213, 499 => 'YCbCrPositioning' },
      +	'ycbcrsubsampling' => { 119 => 0x212, 499 => 'YCbCrSubSampling' },
      +	'year' => { 372 => 'yrrc', 374 => 'year', 380 => 'yrrc' },
      +	'yearcreated' => { 140 => 0x10, 149 => 0xc },
      +	'yellowhsl' => { 103 => 0x20912 },
      +	'yield' => { 495 => 'yield' },
      +	'yposition' => { 119 => 0x11f },
      +	'yresolution' => { 119 => 0x11b, 134 => 0x5, 370 => 0x4, 499 => 'YResolution' },
      +	'zebrapatterntonerange' => { 295 => 0x211 },
      +	'zoneidentifier' => { 120 => 'ZoneIdentifier' },
      +	'zonematching' => { 186 => 0x10a, 189 => [0x3a,0x4a], 420 => 0xb024 },
      +	'zonematchingmode' => { 184 => 0x14 },
      +	'zonematchingon' => { 183 => 0x75 },
      +	'zonematchingvalue' => { 407 => 0x1f },
      +	'zoomedpreviewlength' => { 302 => 0xf05 },
      +	'zoomedpreviewsize' => { 302 => 0xf06 },
      +	'zoomedpreviewstart' => { 302 => 0xf04 },
       	'zoomsourcewidth' => { 34 => 0x24 },
      -	'zoomstepcount' => { 286 => 0x300, 288 => 0x100d },
      +	'zoomstepcount' => { 300 => 0x300, 302 => 0x100d },
       	'zoomtargetwidth' => { 34 => 0x25 },
       );
       
      @@ -6263,9 +7090,12 @@
       	'abovecolor' => 1,
       	'abstract' => 1,
       	'abstractfilename' => 1,
      +	'accel360fly' => 1,
       	'acceldata' => 1,
      -	'accelerometerdata' => 1,
      +	'accelerometermatrix' => 1,
       	'accelerometertime' => 1,
      +	'accelmode' => 1,
      +	'accelypr' => 1,
       	'accessdate' => 1,
       	'accountname' => 1,
       	'acdsee' => 1,
      @@ -6291,6 +7121,7 @@
       	'actualscalemin' => 1,
       	'actualsoftpostpadding' => 1,
       	'actualsoftprepadding' => 1,
      +	'additionalinfo' => 1,
       	'adjustedtbnimageheight' => 1,
       	'adjustedtbnimagewidth' => 1,
       	'adobe_cm' => 1,
      @@ -6315,6 +7146,8 @@
       	'aeinfo2' => 1,
       	'aeinfo3' => 1,
       	'aeinfounknown' => 1,
      +	'af-cprioritysel' => 1,
      +	'af-sprioritysel' => 1,
       	'afarea' => 1,
       	'afareaheights' => 1,
       	'afareawidths' => 1,
      @@ -6356,12 +7189,10 @@
       	'aitargetresolution' => 1,
       	'album2' => 1,
       	'albumartistsortorder' => 1,
      -	'albumcoverurl' => 1,
       	'albumid' => 1,
       	'albumidalbumartist' => 1,
       	'albumname' => 1,
       	'albumsortorder' => 1,
      -	'albumtitle' => 1,
       	'albumtitlesortorder' => 1,
       	'aliaslayermetadata' => 1,
       	'alignment' => 1,
      @@ -6413,6 +7244,7 @@
       	'app14flags1' => 1,
       	'app1_profile' => 1,
       	'apple-fi' => 1,
      +	'appledataoffsets' => 1,
       	'applemaildatereceived' => 1,
       	'applemaildatesent' => 1,
       	'applemailflagged' => 1,
      @@ -6425,12 +7257,15 @@
       	'applicationdata' => 1,
       	'applicationmissingmsg' => 1,
       	'applicationversion' => 1,
      +	'applysettingstoliveview' => 1,
      +	'appname' => 1,
       	'archivallocation' => 1,
       	'archivedfilename' => 1,
       	'ardronefile' => 1,
       	'ardronetelemetry' => 1,
       	'artist2' => 1,
       	'artistlen' => 1,
      +	'artists' => 1,
       	'artisturl' => 1,
       	'ascender' => 1,
       	'ascent' => 1,
      @@ -6444,9 +7279,12 @@
       	'aspectratioy' => 1,
       	'assistantsname' => 1,
       	'assistantsphone' => 1,
      +	'associateddatalist' => 1,
      +	'associatedimagefile' => 1,
       	'association' => 1,
       	'assumeddisplaysize' => 1,
       	'assumeddistanceview' => 1,
      +	'ast' => 1,
       	'atmospherictemperature' => 1,
       	'atmospherictransalpha1' => 1,
       	'atmospherictransalpha2' => 1,
      @@ -6456,10 +7294,13 @@
       	'atob0' => 1,
       	'atob1' => 1,
       	'atob2' => 1,
      +	'atob3' => 1,
      +	'atom0' => 1,
       	'atsccontent' => 1,
       	'attachments' => 1,
       	'attitude' => 1,
       	'attitudetarget' => 1,
      +	'attr' => 1,
       	'attributes' => 1,
       	'audible_cvrx' => 1,
       	'audible_meta' => 1,
      @@ -6526,11 +7367,13 @@
       	'audiozeroframespadded' => 1,
       	'authenticationtime' => 1,
       	'authenticationtype' => 1,
      +	'authoridentifier' => 1,
       	'authoringsoftwarerelease' => 1,
       	'authorlen' => 1,
      +	'authorname' => 1,
       	'authorship' => 1,
       	'authorsortorder' => 1,
      -	'authorurl' => 1,
      +	'autoareaafstartingpoint' => 1,
       	'autoisomin' => 1,
       	'autolowlightduration' => 1,
       	'automationanimation' => 1,
      @@ -6540,6 +7383,7 @@
       	'autosaveformat' => 1,
       	'autosummary' => 1,
       	'aux' => 1,
      +	'auxiliaryimageref' => 1,
       	'auxiliaryimagetype' => 1,
       	'av1configuration' => 1,
       	'av1configurationversion' => 1,
      @@ -6560,6 +7404,8 @@
       	'axisdistancey' => 1,
       	'axisdistancez' => 1,
       	'axml' => 1,
      +	'b1' => 1,
      +	'b2' => 1,
       	'background' => 1,
       	'backgroundcolor' => 1,
       	'backgroundcolorindicator' => 1,
      @@ -6579,9 +7425,11 @@
       	'bannerimagetype' => 1,
       	'bannerimageurl' => 1,
       	'barcode' => 1,
      +	'barcodes' => 1,
       	'barometerinfo' => 1,
       	'barometerinfoversion' => 1,
       	'baselinelength' => 1,
      +	'basename' => 1,
       	'baseviewpointnum' => 1,
       	'basisobject' => 1,
       	'battery' => 1,
      @@ -6604,6 +7452,8 @@
       	'bikebroaccel' => 1,
       	'bikebrogps' => 1,
       	'billinginformation' => 1,
      +	'binarydata' => 1,
      +	'binarydatatype' => 1,
       	'binaryfilter' => 1,
       	'binaryxml' => 1,
       	'binning' => 1,
      @@ -6673,6 +7523,7 @@
       	'bottommag' => 1,
       	'boundaryorigin' => 1,
       	'boundingbox' => 1,
      +	'bracketingburstoptions' => 1,
       	'bracketingcounter' => 1,
       	'bracketingmode' => 1,
       	'bracketingstep' => 1,
      @@ -6680,6 +7531,38 @@
       	'brain' => 1,
       	'brandingimageid' => 1,
       	'brandingname' => 1,
      +	'brdfatob0' => 1,
      +	'brdfatob1' => 1,
      +	'brdfatob2' => 1,
      +	'brdfatob3' => 1,
      +	'brdfbtoa0' => 1,
      +	'brdfbtoa1' => 1,
      +	'brdfbtoa2' => 1,
      +	'brdfbtoa3' => 1,
      +	'brdfbtod0' => 1,
      +	'brdfbtod1' => 1,
      +	'brdfbtod2' => 1,
      +	'brdfbtod3' => 1,
      +	'brdfcolorimetricparam0' => 1,
      +	'brdfcolorimetricparam1' => 1,
      +	'brdfcolorimetricparam2' => 1,
      +	'brdfcolorimetricparam3' => 1,
      +	'brdfdtob0' => 1,
      +	'brdfdtob1' => 1,
      +	'brdfdtob2' => 1,
      +	'brdfdtob3' => 1,
      +	'brdfmtob0' => 1,
      +	'brdfmtob1' => 1,
      +	'brdfmtob2' => 1,
      +	'brdfmtob3' => 1,
      +	'brdfmtos0' => 1,
      +	'brdfmtos1' => 1,
      +	'brdfmtos2' => 1,
      +	'brdfmtos3' => 1,
      +	'brdfspectralparam0' => 1,
      +	'brdfspectralparam1' => 1,
      +	'brdfspectralparam2' => 1,
      +	'brdfspectralparam3' => 1,
       	'breakchar' => 1,
       	'brightdefectintegrationms' => 1,
       	'brightdefectisocode' => 1,
      @@ -6692,6 +7575,7 @@
       	'btoa0' => 1,
       	'btoa1' => 1,
       	'btoa2' => 1,
      +	'btoa3' => 1,
       	'btod0' => 1,
       	'btod1' => 1,
       	'btod2' => 1,
      @@ -6872,6 +7756,8 @@
       	'casioquality' => 1,
       	'casioqvmi' => 1,
       	'cast' => 1,
      +	'catalognumber' => 1,
      +	'cbordata' => 1,
       	'cc' => 1,
       	'ccaddresses' => 1,
       	'ccdrect' => 1,
      @@ -6974,7 +7860,6 @@
       	'cip3side' => 1,
       	'circleofconfusion' => 1,
       	'class' => 1,
      -	'classification' => 1,
       	'cleanaperture' => 1,
       	'cleanaperturedimensions' => 1,
       	'cleanapertureheight' => 1,
      @@ -6993,6 +7878,11 @@
       	'cloneobject' => 1,
       	'clonetype' => 1,
       	'closedcaptioning' => 1,
      +	'cmddialsaperturesetting' => 1,
      +	'cmddialschangemainsub' => 1,
      +	'cmddialschangemainsubexposure' => 1,
      +	'cmddialsmenuandplayback' => 1,
      +	'cmddialsreverserotexposurecomp' => 1,
       	'cmmflags' => 1,
       	'cmp1' => 1,
       	'cmykequivalent' => 1,
      @@ -7018,7 +7908,9 @@
       	'colorant3coordinates' => 1,
       	'colorant3name' => 1,
       	'colorantcount' => 1,
      +	'colorantinfoout' => 1,
       	'colorantorder' => 1,
      +	'colorantorderout' => 1,
       	'coloranttable' => 1,
       	'coloranttableout' => 1,
       	'coloraverages' => 1,
      @@ -7047,6 +7939,8 @@
       	'colorcoefs2' => 1,
       	'colorcomponents' => 1,
       	'colordata1' => 1,
      +	'colordata10' => 1,
      +	'colordata11' => 1,
       	'colordata2' => 1,
       	'colordata3' => 1,
       	'colordata4' => 1,
      @@ -7056,9 +7950,11 @@
       	'colordata8' => 1,
       	'colordata9' => 1,
       	'colordataunknown' => 1,
      +	'colorencodingparams' => 1,
       	'colorgroup' => 1,
       	'colorhalftoninginfo' => 1,
       	'colorimetricintentimagestate' => 1,
      +	'colorimetricspecification' => 1,
       	'colorimetry' => 1,
       	'colorinfo' => 1,
       	'colormap' => 1,
      @@ -7076,11 +7972,8 @@
       	'colorsamplersresource2' => 1,
       	'colorsetup' => 1,
       	'colorspacedata' => 1,
      -	'colorspecapproximation' => 1,
      -	'colorspecdata' => 1,
      +	'colorspacename' => 1,
       	'colorspecification' => 1,
      -	'colorspecmethod' => 1,
      -	'colorspecprecedence' => 1,
       	'colortable' => 1,
       	'colortemperatures' => 1,
       	'colortransferfuncs' => 1,
      @@ -7140,7 +8033,6 @@
       	'concreteflag' => 1,
       	'condition' => 1,
       	'conditionalfec' => 1,
      -	'conductor' => 1,
       	'conductors' => 1,
       	'confirmedobjectsize' => 1,
       	'connectionspaceilluminant' => 1,
      @@ -7158,7 +8050,6 @@
       	'contentdescription' => 1,
       	'contentdescriptionnotes' => 1,
       	'contentdisposition' => 1,
      -	'contentdistributor' => 1,
       	'contentdistributorduration' => 1,
       	'contentdistributortype' => 1,
       	'contentencryption' => 1,
      @@ -7200,6 +8091,7 @@
       	'cputype' => 1,
       	'cpuversions' => 1,
       	'cr2cfapattern' => 1,
      +	'crc' => 1,
       	'crcdevelparams' => 1,
       	'crd' => 1,
       	'crdinfo' => 1,
      @@ -7247,10 +8139,13 @@
       	'crossref' => 1,
       	'crs' => 1,
       	'crwparam' => 1,
      +	'cs0' => 1,
       	'cs1' => 1,
       	'ctmd' => 1,
       	'cubemapproj' => 1,
       	'cuepoint' => 1,
      +	'cuepointlabel' => 1,
      +	'cuepointnote' => 1,
       	'cuepoints' => 1,
       	'cuesheet' => 1,
       	'currentbitrate' => 1,
      @@ -7290,8 +8185,12 @@
       	'customsettingsd810' => 1,
       	'customsettingsd850' => 1,
       	'customsettingsd90' => 1,
      +	'customsettingsz9' => 1,
      +	'customtostandardpcc' => 1,
      +	'cxf' => 1,
       	'd-lightinghqdata' => 1,
       	'd-lightinghsdata' => 1,
      +	'd2' => 1,
       	'daccountspervolt' => 1,
       	'dacgainscoarse' => 1,
       	'dacgainscoarseadjpreif41' => 1,
      @@ -7358,6 +8257,7 @@
       	'daymat7' => 1,
       	'daymat8' => 1,
       	'daymat9' => 1,
      +	'db' => 1,
       	'dblcoldcacthres1' => 1,
       	'dblcoldcacthres2' => 1,
       	'dc' => 1,
      @@ -7405,12 +8305,14 @@
       	'depthhwheight' => 1,
       	'depthhwwidth' => 1,
       	'depthmapdata' => 1,
      +	'depthmapdata2' => 1,
       	'depthmapheight' => 1,
       	'depthmapname' => 1,
       	'depthmaptiff' => 1,
       	'depthmapwidth' => 1,
       	'depthswheight' => 1,
       	'depthswwidth' => 1,
      +	'derivedimageref' => 1,
       	'descender' => 1,
       	'designer' => 1,
       	'designerurl' => 1,
      @@ -7449,6 +8351,22 @@
       	'digitalimagebroker' => 1,
       	'digitalsignature' => 1,
       	'dimensions' => 1,
      +	'directionalatob0' => 1,
      +	'directionalatob1' => 1,
      +	'directionalatob2' => 1,
      +	'directionalatob3' => 1,
      +	'directionalbtoa0' => 1,
      +	'directionalbtoa1' => 1,
      +	'directionalbtoa2' => 1,
      +	'directionalbtoa3' => 1,
      +	'directionalbtod0' => 1,
      +	'directionalbtod1' => 1,
      +	'directionalbtod2' => 1,
      +	'directionalbtod3' => 1,
      +	'directionaldtob0' => 1,
      +	'directionaldtob1' => 1,
      +	'directionaldtob2' => 1,
      +	'directionaldtob3' => 1,
       	'directors' => 1,
       	'disableflagspresent' => 1,
       	'discardobjects' => 1,
      @@ -7473,6 +8391,7 @@
       	'distribution' => 1,
       	'dittokey' => 1,
       	'division' => 1,
      +	'dji_dtat' => 1,
       	'djvuversion' => 1,
       	'dlnaserverudn' => 1,
       	'dlnasourceuri' => 1,
      @@ -7567,6 +8486,7 @@
       	'dustinfo' => 1,
       	'dvdid' => 1,
       	'dwc' => 1,
      +	'dynamicranger128' => 1,
       	'e-mail2' => 1,
       	'e-mail3' => 1,
       	'e-mailaddress' => 1,
      @@ -7588,6 +8508,7 @@
       	'effecttype' => 1,
       	'eighteenpercentpoint' => 1,
       	'eighthlanguage' => 1,
      +	'electricalextendermagnification' => 1,
       	'electronicimagestabilization' => 1,
       	'electronicvr' => 1,
       	'elementarystreamtrack' => 1,
      @@ -7597,6 +8518,7 @@
       	'embeddedfilename' => 1,
       	'embeddedfileusagerights' => 1,
       	'embeddedimage' => 1,
      +	'embeddedimage2' => 1,
       	'embeddedimagecolorspace' => 1,
       	'embeddedimagefilter' => 1,
       	'embeddedimageheight' => 1,
      @@ -7622,10 +8544,10 @@
       	'encodingprocess' => 1,
       	'encodingscheme' => 1,
       	'encodingsettings' => 1,
      -	'encodingtime' => 1,
       	'encrypt' => 1,
       	'encryption' => 1,
       	'enddate' => 1,
      +	'endianness' => 1,
       	'endpoints' => 1,
       	'endtime' => 1,
       	'endtimecode' => 1,
      @@ -7702,11 +8624,14 @@
       	'expressionmedia' => 1,
       	'exrversion' => 1,
       	'extcache' => 1,
      +	'extendedalbumname' => 1,
      +	'extendedartistname' => 1,
       	'extendedaviheader' => 1,
       	'extendedcontentdescr' => 1,
       	'extendedcontentencryption' => 1,
       	'extendedinfo' => 1,
       	'extendedstreamprops' => 1,
      +	'extendedtracktitle' => 1,
       	'extendedxmp' => 1,
       	'extensionclassid' => 1,
       	'extensioncreatedate' => 1,
      @@ -7799,6 +8724,7 @@
       	'fileflagsmask' => 1,
       	'filefunctionflags' => 1,
       	'fileglobalprofile' => 1,
      +	'fileguid' => 1,
       	'filehardlinks' => 1,
       	'fileid' => 1,
       	'fileinfo' => 1,
      @@ -7836,10 +8762,14 @@
       	'filterinfo' => 1,
       	'filtering' => 1,
       	'filtermodel' => 1,
      +	'filterparametersbinary' => 1,
      +	'filterparameterscustomcustomdata' => 1,
      +	'filterparametersexportexportdata' => 1,
       	'filterpartnumber' => 1,
       	'filterserialnumber' => 1,
       	'finalflushsequence' => 1,
       	'finalframeblocks' => 1,
      +	'finetune' => 1,
       	'finishedfileprocessingrequest' => 1,
       	'finishipaversion' => 1,
       	'finishipfversion' => 1,
      @@ -7865,6 +8795,7 @@
       	'flashinfo0103' => 1,
       	'flashinfo0106' => 1,
       	'flashinfo0107' => 1,
      +	'flashinfo0300' => 1,
       	'flashinfounknown' => 1,
       	'flashinfoversion' => 1,
       	'flashmat0' => 1,
      @@ -7913,8 +8844,11 @@
       	'focalrange' => 1,
       	'focusdistance2' => 1,
       	'focusedgemap' => 1,
      +	'focusframesize' => 1,
       	'focusinfo' => 1,
       	'focusinfoifd' => 1,
      +	'focuspointbrightness' => 1,
      +	'focuspointselectionspeed' => 1,
       	'focuspos' => 1,
       	'focussettings' => 1,
       	'folder' => 1,
      @@ -7965,6 +8899,7 @@
       	'framesizemin' => 1,
       	'framespersecond' => 1,
       	'frameview' => 1,
      +	'framinggriddisplay' => 1,
       	'free' => 1,
       	'free-busystatus' => 1,
       	'freebytecounts' => 1,
      @@ -7981,6 +8916,9 @@
       	'fujilayout' => 1,
       	'fullname' => 1,
       	'fullscreen' => 1,
      +	'fusion360fly' => 1,
      +	'fusionmode' => 1,
      +	'fusionypr' => 1,
       	'gain' => 1,
       	'gaindeaddata' => 1,
       	'gaindeadmapimage' => 1,
      @@ -7993,6 +8931,10 @@
       	'gammared' => 1,
       	'gammatable' => 1,
       	'gamut' => 1,
      +	'gamutboundarydescription0' => 1,
      +	'gamutboundarydescription1' => 1,
      +	'gamutboundarydescription2' => 1,
      +	'gamutboundarydescription3' => 1,
       	'gapless' => 1,
       	'gaudio' => 1,
       	'gaussianweights' => 1,
      @@ -8057,10 +8999,15 @@
       	'gopro' => 1,
       	'goprogpmf' => 1,
       	'gpano' => 1,
      -	'gpmd' => 1,
      +	'gpmd_fmas' => 1,
      +	'gpmd_gopro' => 1,
      +	'gpmd_kingslim' => 1,
      +	'gpmd_rove' => 1,
       	'gps' => 1,
      +	'gps360fly' => 1,
       	'gpsaltituderaw' => 1,
       	'gpsdatalist' => 1,
      +	'gpsdatalist2' => 1,
       	'gpsdatetimeraw' => 1,
       	'gpsdestaltitude' => 1,
       	'gpsframingaltitude' => 1,
      @@ -8071,8 +9018,8 @@
       	'gpslatituderaw' => 1,
       	'gpslog' => 1,
       	'gpslongituderaw' => 1,
      +	'gpsmode' => 1,
       	'gpspos' => 1,
      -	'gpsposition' => 1,
       	'gpsraw' => 1,
       	'gpsspeed3d' => 1,
       	'gpsspeedaccuracy' => 1,
      @@ -8107,7 +9054,7 @@
       	'greenx' => 1,
       	'greeny' => 1,
       	'gridguidesinfo' => 1,
      -	'group' => 1,
      +	'groupareac1' => 1,
       	'groupcaption' => 1,
       	'groupmutualexclusion' => 1,
       	'groups' => 1,
      @@ -8116,7 +9063,10 @@
       	'gtcitation' => 1,
       	'gtmodeltype' => 1,
       	'gtrastertype' => 1,
      +	'gyro360fly' => 1,
      +	'gyromode' => 1,
       	'gyroscope' => 1,
      +	'gyroypr' => 1,
       	'handler' => 1,
       	'handlerclass' => 1,
       	'handlerdescription' => 1,
      @@ -8144,6 +9094,10 @@
       	'hasxfa' => 1,
       	'hcusage' => 1,
       	'hdcontent' => 1,
      +	'hdmibitdepth' => 1,
      +	'hdmiexternalrecorder' => 1,
      +	'hdmioutputhdr' => 1,
      +	'hdmioutputrange' => 1,
       	'hdrinfo' => 1,
       	'hdrl' => 1,
       	'hdrtoninginfo' => 1,
      @@ -8162,6 +9116,8 @@
       	'highisomode' => 1,
       	'highlightdata' => 1,
       	'highlightendpoints' => 1,
      +	'highnote' => 1,
      +	'highvelocity' => 1,
       	'hintformat' => 1,
       	'hintheader' => 1,
       	'hintinfo' => 1,
      @@ -8332,13 +9288,13 @@
       	'indexedcolortablecount' => 1,
       	'indexoffset' => 1,
       	'indexparameters' => 1,
      +	'indications' => 1,
       	'info' => 1,
       	'ingrreserved' => 1,
       	'initialdelaysamples' => 1,
       	'initialdisplayeffect' => 1,
       	'initializationvector' => 1,
       	'initializeddatasize' => 1,
      -	'initialkey' => 1,
       	'initialobjectdescriptor' => 1,
       	'initials' => 1,
       	'inknames' => 1,
      @@ -8346,6 +9302,8 @@
       	'inputdevicename' => 1,
       	'inputdeviceserialnumber' => 1,
       	'inputheight' => 1,
      +	'inputorientation' => 1,
      +	'inputuniformity' => 1,
       	'inputwidth' => 1,
       	'insertmode' => 1,
       	'insetnwpixelx' => 1,
      @@ -8477,11 +9435,32 @@
       	'jpegrestartinterval' => 1,
       	'jpegtables' => 1,
       	'jplcartoifd' => 1,
      +	'jps' => 1,
      +	'jpscomment' => 1,
      +	'jpsflags' => 1,
      +	'jpslayout' => 1,
      +	'jpsseparation' => 1,
      +	'jpstype' => 1,
      +	'jsondata' => 1,
       	'jsonmetadata' => 1,
      +	'jumbf' => 1,
      +	'jumbfbox' => 1,
      +	'jumbfdescr' => 1,
      +	'jumdid' => 1,
      +	'jumdlabel' => 1,
      +	'jumdsignature' => 1,
      +	'jumdtoggles' => 1,
      +	'jumdtype' => 1,
       	'jumptoxpep' => 1,
       	'junk' => 1,
      +	'jxlcodestream' => 1,
      +	'k1' => 1,
      +	'k2' => 1,
      +	'k3' => 1,
      +	'k4' => 1,
       	'kbytesize' => 1,
       	'kdc_ifd' => 1,
      +	'keepexposurewithteleconverter' => 1,
       	'keepuntil' => 1,
       	'kelvinwb' => 1,
       	'keycode' => 1,
      @@ -8489,6 +9468,7 @@
       	'keyframestimes' => 1,
       	'keyid' => 1,
       	'keys' => 1,
      +	'kf' => 1,
       	'kf8coveruri' => 1,
       	'khufui0thresholds' => 1,
       	'khufui1thresholds' => 1,
      @@ -8505,7 +9485,10 @@
       	'khufusigmascalingfactors6mp' => 1,
       	'khufuuspacec2mixingcoefficient' => 1,
       	'kids' => 1,
      +	'kilocalories' => 1,
       	'kinds' => 1,
      +	'kj' => 1,
      +	'kk' => 1,
       	'klut' => 1,
       	'klut12tolin12' => 1,
       	'knownfolderdata' => 1,
      @@ -8524,8 +9507,7 @@
       	'label1' => 1,
       	'label2' => 1,
       	'label3' => 1,
      -	'labelid' => 1,
      -	'labeltext' => 1,
      +	'labeledtext' => 1,
       	'lamebitrate' => 1,
       	'lameheader' => 1,
       	'lamelowpassfilter' => 1,
      @@ -8633,8 +9615,6 @@
       	'lensrec' => 1,
       	'lensshading' => 1,
       	'lenstableindex' => 1,
      -	'lenstypemake' => 1,
      -	'lenstypemodel' => 1,
       	'levelinfo' => 1,
       	'libraryid' => 1,
       	'libraryname' => 1,
      @@ -8645,6 +9625,23 @@
       	'lights' => 1,
       	'lightvalue' => 1,
       	'limage' => 1,
      +	'limitaf-areamodeselautoanimals' => 1,
      +	'limitaf-areamodeselautopeople' => 1,
      +	'limitaf-areamodeseldynamic' => 1,
      +	'limitaf-areamodeselwidelanimals' => 1,
      +	'limitaf-areamodeselwidelpeople' => 1,
      +	'limitafareamodesel3d' => 1,
      +	'limitafareamodeseld105' => 1,
      +	'limitafareamodeseld25' => 1,
      +	'limitafareamodeseld49' => 1,
      +	'limitafareamodeseld9' => 1,
      +	'limitafareamodeselgroup' => 1,
      +	'limitafareamodeselgroupc1' => 1,
      +	'limitafareamodeselgroupc2' => 1,
      +	'limitreleasemodeselmirror-up' => 1,
      +	'limitreleasemodeselq' => 1,
      +	'limitreleasemodeseltimer' => 1,
      +	'limitselectableimagearea5to4' => 1,
       	'lin12toklut12' => 1,
       	'lin12toklut8' => 1,
       	'linearitysplinetags' => 1,
      @@ -8673,9 +9670,9 @@
       	'localeindicator' => 1,
       	'localpositionned' => 1,
       	'locationinfo' => 1,
      -	'locationinformation' => 1,
       	'lockedpropertylist' => 1,
       	'locks' => 1,
      +	'loginfo' => 1,
       	'loglintable' => 1,
       	'logoiconurl' => 1,
       	'logourl' => 1,
      @@ -8697,8 +9694,12 @@
       	'lookmodtransform' => 1,
       	'lookuptable' => 1,
       	'lotus' => 1,
      +	'lowlightaf' => 1,
      +	'lownote' => 1,
      +	'lowvelocity' => 1,
       	'lr' => 1,
       	'lslv' => 1,
      +	'lucasjunk' => 1,
       	'luminance' => 1,
       	'luminanceconsts' => 1,
       	'lyricist' => 1,
      @@ -8707,8 +9708,11 @@
       	'machinetype' => 1,
       	'macintoshnsprintinfo' => 1,
       	'macintoshprintinfo' => 1,
      +	'mag360fly' => 1,
      +	'magmode' => 1,
       	'magneticfield' => 1,
       	'magnetometer' => 1,
      +	'magnetometerxyz' => 1,
       	'magnification' => 1,
       	'magnifyobject' => 1,
       	'mailingaddress' => 1,
      @@ -8737,6 +9741,9 @@
       	'marker' => 1,
       	'markerid' => 1,
       	'markinfo' => 1,
      +	'marl' => 1,
      +	'masksubarea' => 1,
      +	'mastergainadjustment' => 1,
       	'matrixworldtocamera' => 1,
       	'matrixworldtoscreen' => 1,
       	'mattcolor' => 1,
      @@ -8750,6 +9757,7 @@
       	'maximumimageindex' => 1,
       	'maximumobjectsize' => 1,
       	'maximumoperationindex' => 1,
      +	'maximumshutterangle' => 1,
       	'maximumtransformindex' => 1,
       	'maxjpegtableindex' => 1,
       	'maxpacketsize' => 1,
      @@ -8760,6 +9768,7 @@
       	'maxval' => 1,
       	'maxwidth' => 1,
       	'mc' => 1,
      +	'mccdata' => 1,
       	'mcdi' => 1,
       	'md5signature' => 1,
       	'md5sum' => 1,
      @@ -8903,13 +9912,12 @@
       	'measurementgeometry' => 1,
       	'measurementilluminant' => 1,
       	'measurementinfo' => 1,
      +	'measurementinputinfo' => 1,
       	'measurementobserver' => 1,
       	'measurementscale' => 1,
       	'mebx' => 1,
       	'media' => 1,
       	'mediablackpoint' => 1,
      -	'mediaclassprimaryid' => 1,
      -	'mediaclasssecondaryid' => 1,
       	'mediacolor' => 1,
       	'mediacontenttypes' => 1,
       	'mediacreated' => 1,
      @@ -8956,11 +9964,14 @@
       	'mediathumbwidth' => 1,
       	'mediatimescale' => 1,
       	'mediatrackbytes' => 1,
      +	'mediauniqueid' => 1,
       	'mediaweight' => 1,
       	'mediawhitepoint' => 1,
       	'medium' => 1,
       	'megapixels' => 1,
       	'melodicpolyphony' => 1,
      +	'menusettingsz7ii' => 1,
      +	'menusettingsz9' => 1,
       	'message' => 1,
       	'meta' => 1,
       	'metadata' => 1,
      @@ -8969,11 +9980,14 @@
       	'metadatalibrary' => 1,
       	'metadatanumber' => 1,
       	'metadatasource' => 1,
      +	'metadataversion' => 1,
       	'metaformat' => 1,
      +	'metaimagesize' => 1,
       	'metarelation' => 1,
       	'metasampledesc' => 1,
       	'metdata' => 1,
       	'meterinfo' => 1,
      +	'meteringbutton' => 1,
       	'meterlink' => 1,
       	'metermode' => 1,
       	'mett' => 1,
      @@ -8982,7 +9996,9 @@
       	'middlename' => 1,
       	'midicontrol' => 1,
       	'midicontrolversion' => 1,
      +	'midipitchfraction' => 1,
       	'midisong' => 1,
      +	'midiunitynote' => 1,
       	'mie' => 1,
       	'mileage' => 1,
       	'mimeencoding' => 1,
      @@ -9031,7 +10047,6 @@
       	'monouniquematrix' => 1,
       	'montage' => 1,
       	'month' => 1,
      -	'mood' => 1,
       	'moreinfo' => 1,
       	'moreinfo0201' => 1,
       	'moreinfo0401' => 1,
      @@ -9047,10 +10062,13 @@
       	'moviefragment' => 1,
       	'moviefragmentheader' => 1,
       	'moviefragmentsequence' => 1,
      +	'moviefunc2button' => 1,
       	'movieheader' => 1,
       	'movieheaderversion' => 1,
      +	'moviehighlightdisplaypattern' => 1,
       	'movieinfo' => 1,
       	'moviestreamname' => 1,
      +	'moviewhitebalancesameasphoto' => 1,
       	'mp' => 1,
       	'mp1' => 1,
       	'mpeg7binary' => 1,
      @@ -9070,9 +10088,20 @@
       	'msdocumenttextposition' => 1,
       	'mspropertysetstorage' => 1,
       	'msstereo' => 1,
      +	'mtoa0' => 1,
      +	'mtob0' => 1,
      +	'mtob1' => 1,
      +	'mtob2' => 1,
      +	'mtob3' => 1,
      +	'mtos0' => 1,
      +	'mtos1' => 1,
      +	'mtos2' => 1,
      +	'mtos3' => 1,
       	'multiexp' => 1,
       	'multiexposureversion' => 1,
       	'multimediatype' => 1,
      +	'multiplexdefaultvalues' => 1,
      +	'multiplextypearray' => 1,
       	'multiprofiles' => 1,
       	'multiquality' => 1,
       	'multishoton' => 1,
      @@ -9121,6 +10150,7 @@
       	'nifnonlinearity16bit' => 1,
       	'nifnonlinearityext' => 1,
       	'nikon' => 1,
      +	'nikonapp' => 1,
       	'nikondata' => 1,
       	'nikondatetime' => 1,
       	'nikonncdb' => 1,
      @@ -9129,6 +10159,8 @@
       	'nikonscanifd' => 1,
       	'nikontags' => 1,
       	'nikonvers' => 1,
      +	'nine' => 1,
      +	'nineedits' => 1,
       	'ninthlanguage' => 1,
       	'nitf' => 1,
       	'nitfversion' => 1,
      @@ -9176,6 +10208,7 @@
       	'numproperties' => 1,
       	'numrules' => 1,
       	'numsampleframes' => 1,
      +	'numsampleloops' => 1,
       	'numslices' => 1,
       	'numstreams' => 1,
       	'numtemporallayers' => 1,
      @@ -9261,6 +10294,14 @@
       	'omenroicoefficients' => 1,
       	'omenroicoordinates' => 1,
       	'omensmoothingkernel' => 1,
      +	'on1_settingsdata' => 1,
      +	'on1_settingsmetadatacreated' => 1,
      +	'on1_settingsmetadatamodified' => 1,
      +	'on1_settingsmetadataname' => 1,
      +	'on1_settingsmetadatapluginid' => 1,
      +	'on1_settingsmetadatatimestamp' => 1,
      +	'on1_settingsmetadatausage' => 1,
      +	'on1_settingsmetadatavisibletouser' => 1,
       	'onionskins' => 1,
       	'opacity' => 1,
       	'opcolor' => 1,
      @@ -9272,6 +10313,7 @@
       	'operationid' => 1,
       	'operationnumber' => 1,
       	'opiproxy' => 1,
      +	'opticalvr' => 1,
       	'optics' => 1,
       	'optimalbitrate' => 1,
       	'optionalattendeeaddresses' => 1,
      @@ -9283,15 +10325,13 @@
       	'organizername' => 1,
       	'orientationinfo' => 1,
       	'originalalbum' => 1,
      -	'originalalbumtitle' => 1,
      -	'originalartist' => 1,
      +	'originaldate' => 1,
       	'originaldocumentsize' => 1,
       	'originalfilesize' => 1,
       	'originalfiletype' => 1,
       	'originalformat' => 1,
       	'originalframerate' => 1,
       	'originalimagebroker' => 1,
      -	'originallyricist' => 1,
       	'originalmedia' => 1,
       	'originalmedium' => 1,
       	'originalrawcreator' => 1,
      @@ -9307,6 +10347,7 @@
       	'originalthmfiletype' => 1,
       	'originalthmimage' => 1,
       	'originalthmresource' => 1,
      +	'originalyear' => 1,
       	'originator' => 1,
       	'originatorreference' => 1,
       	'originpathinfo' => 1,
      @@ -9333,6 +10374,7 @@
       	'outputdataobjectlist' => 1,
       	'outputgain' => 1,
       	'outputheight' => 1,
      +	'outputorientation' => 1,
       	'outputresponse' => 1,
       	'outputwidth' => 1,
       	'overclockcolsright' => 1,
      @@ -9382,7 +10424,6 @@
       	'parameterinfo' => 1,
       	'parameters' => 1,
       	'parasites' => 1,
      -	'parentalrating' => 1,
       	'parentalratingreason' => 1,
       	'parrotautomation' => 1,
       	'parrotfollowme' => 1,
      @@ -9418,6 +10459,8 @@
       	'pdf' => 1,
       	'pdfx' => 1,
       	'peakbitrate' => 1,
      +	'peaklevelr128' => 1,
      +	'peaklevelsample' => 1,
       	'peakspectralsensitivity' => 1,
       	'peakvalue' => 1,
       	'pefversion' => 1,
      @@ -9434,7 +10477,6 @@
       	'percussivepolyphony' => 1,
       	'perfmode' => 1,
       	'performersortorder' => 1,
      -	'period' => 1,
       	'perms' => 1,
       	'perpicturenotes' => 1,
       	'personalfunctions' => 1,
      @@ -9487,6 +10529,7 @@
       	'pipy1' => 1,
       	'pipy2' => 1,
       	'pitchandfamily' => 1,
      +	'pitchrollyaw' => 1,
       	'pittasoft' => 1,
       	'pixelaspectratiox' => 1,
       	'pixelaspectratioy' => 1,
      @@ -9508,7 +10551,10 @@
       	'plancko' => 1,
       	'planckr1' => 1,
       	'planckr2' => 1,
      +	'playbackflickdownrating' => 1,
      +	'playbackflickuprating' => 1,
       	'playcounter' => 1,
      +	'playlist' => 1,
       	'playlistdelay' => 1,
       	'playlistindex' => 1,
       	'plus' => 1,
      @@ -9539,6 +10585,7 @@
       	'preferredrate' => 1,
       	'preferredsubfamily' => 1,
       	'preferredvolume' => 1,
      +	'prefersubselectorcenter' => 1,
       	'preroll' => 1,
       	'presentationformat' => 1,
       	'presentationtarget' => 1,
      @@ -9564,6 +10611,7 @@
       	'previewversion' => 1,
       	'previewwmf' => 1,
       	'primarye-mail' => 1,
      +	'primaryfileguid' => 1,
       	'primaryitemreference' => 1,
       	'primaryphone' => 1,
       	'primaryplatform' => 1,
      @@ -9623,6 +10671,7 @@
       	'profileifd' => 1,
       	'profilesequencedesc' => 1,
       	'profilesequenceidentifier' => 1,
      +	'profilesequenceinfo' => 1,
       	'profilesize' => 1,
       	'profileversion' => 1,
       	'progid' => 1,
      @@ -9662,7 +10711,6 @@
       	'projstdparallel2' => 1,
       	'projstraightvertpolelong' => 1,
       	'promoteparent' => 1,
      -	'promotionurl' => 1,
       	'prop' => 1,
       	'properties' => 1,
       	'propertysetidcodes' => 1,
      @@ -9674,7 +10722,6 @@
       	'protectioninfo' => 1,
       	'protectiontype' => 1,
       	'protune' => 1,
      -	'provider' => 1,
       	'providercopyright' => 1,
       	'providerlogourl' => 1,
       	'providerrating' => 1,
      @@ -9709,6 +10756,7 @@
       	'qualcomm' => 1,
       	'quickedit' => 1,
       	'quickmaskinfo' => 1,
      +	'quietshuttershootingspeed' => 1,
       	'quoting' => 1,
       	'qvci' => 1,
       	'ra3' => 1,
      @@ -9783,6 +10831,17 @@
       	'readstatus' => 1,
       	'real2ir' => 1,
       	'realtimestreamingprotocol' => 1,
      +	'rearcontropaneldisplay' => 1,
      +	'recallshootfuncaf-on' => 1,
      +	'recallshootfuncafareamode' => 1,
      +	'recallshootfuncaperture' => 1,
      +	'recallshootfuncexposurecomp' => 1,
      +	'recallshootfuncexposuremode' => 1,
      +	'recallshootfuncfocustracking' => 1,
      +	'recallshootfunciso' => 1,
      +	'recallshootfuncmeteringmode' => 1,
      +	'recallshootfuncshutterspeed' => 1,
      +	'recallshootfuncwhitebalance' => 1,
       	'receivedfrom' => 1,
       	'recengineer' => 1,
       	'recinfo' => 1,
      @@ -9817,14 +10876,17 @@
       	'reelnumber' => 1,
       	'reeltimecode' => 1,
       	'reference' => 1,
      +	'referencename' => 1,
       	'referencetemperature' => 1,
       	'reflectedapparenttemperature' => 1,
      +	'reflection' => 1,
       	'reflectionhardcopyorigcolorimetry' => 1,
       	'reflectionprintoutputcolorimetry' => 1,
       	'refresh' => 1,
       	'regionxformtackpoint' => 1,
       	'registerreadtiming' => 1,
       	'relatedimagefile' => 1,
      +	'relationship' => 1,
       	'relativeexposure' => 1,
       	'relativehumidity' => 1,
       	'relativelocation' => 1,
      @@ -9839,6 +10901,7 @@
       	'rembrandtportraittonescale' => 1,
       	'rembrandttonescale' => 1,
       	'remindertime' => 1,
      +	'remotefuncbutton' => 1,
       	'removehistoryduplicates' => 1,
       	'renderingintent' => 1,
       	'renderingtransform' => 1,
      @@ -9849,6 +10912,9 @@
       	'replaygainalbumpeak' => 1,
       	'replaygaintrackgain' => 1,
       	'replaygaintrackpeak' => 1,
      +	'replaytrackgain' => 1,
      +	'replaytrackpeak' => 1,
      +	'replayvolumelevel' => 1,
       	'replyto' => 1,
       	'representativedisparityfar' => 1,
       	'representativedisparitynear' => 1,
      @@ -9936,10 +11002,14 @@
       	'rollingshutterskewtime' => 1,
       	'root' => 1,
       	'rootdirectorycreatedate' => 1,
      +	'rot360fly' => 1,
       	'rotationangle' => 1,
      +	'rotationxyz' => 1,
      +	'rotmode' => 1,
       	'roundtripversion' => 1,
       	'rowcount' => 1,
       	'rowinterleavefactor' => 1,
      +	'rsrc' => 1,
       	'rtmd' => 1,
       	'rtptimescale' => 1,
       	'runtime' => 1,
      @@ -9953,13 +11023,18 @@
       	'rvmi_srev' => 1,
       	's2n' => 1,
       	'sampleblacksequence' => 1,
      +	'sampledatetime' => 1,
       	'sampledegradationpriority' => 1,
       	'sampleduration' => 1,
       	'sampleflag' => 1,
       	'sampleformat' => 1,
       	'samplegroupdescription' => 1,
       	'samplepaddingbits' => 1,
      +	'sampleperiod' => 1,
      +	'sampler' => 1,
       	'samplerate2' => 1,
      +	'samplerdata' => 1,
      +	'samplerdatalen' => 1,
       	'samplesize' => 1,
       	'samplesizes' => 1,
       	'sampletable' => 1,
      @@ -9978,12 +11053,14 @@
       	'samsungsmta' => 1,
       	'samsungsvss' => 1,
       	'samsungtags' => 1,
      +	'samsungtrailer' => 1,
       	'samsunguniqueid' => 1,
       	'sanyomov' => 1,
       	'sanyomp4' => 1,
       	'sap' => 1,
       	'saturationinfo' => 1,
       	'saturationrenderingintentgamut' => 1,
      +	'savefocus' => 1,
       	'saveobjbacktype' => 1,
       	'saveobjects' => 1,
       	'saveobjname' => 1,
      @@ -10044,7 +11121,9 @@
       	'screenwindowcenter' => 1,
       	'screenwindowwidth' => 1,
       	'screenwriters' => 1,
      +	'script' => 1,
       	'scriptcommand' => 1,
      +	'sdc' => 1,
       	'searchranking' => 1,
       	'secondarygenre' => 1,
       	'secondlanguage' => 1,
      @@ -10061,14 +11140,19 @@
       	'selobjname' => 1,
       	'selobjtype' => 1,
       	'selobjversion' => 1,
      +	'semanticinstanceifd' => 1,
      +	'semanticname' => 1,
       	'sendduration' => 1,
       	'senderaddress' => 1,
       	'sendername' => 1,
       	'sensitivity' => 1,
      +	'sensitivityvalue' => 1,
       	'sensorbottomborder' => 1,
      +	'sensordata' => 1,
       	'sensordefects' => 1,
       	'sensorid' => 1,
       	'sensorinfo' => 1,
      +	'sensorreadouttime' => 1,
       	'sensorrightborder' => 1,
       	'seqlevelidx0' => 1,
       	'seqprofile' => 1,
      @@ -10094,7 +11178,6 @@
       	'shared' => 1,
       	'shareddata' => 1,
       	'shareddoc' => 1,
      -	'shareduserrating' => 1,
       	'sharedwith' => 1,
       	'sharpenforthumbnail' => 1,
       	'sharpeningon' => 1,
      @@ -10134,6 +11217,7 @@
       	'shotinfod5000' => 1,
       	'shotinfod5100' => 1,
       	'shotinfod5200' => 1,
      +	'shotinfod6' => 1,
       	'shotinfod610' => 1,
       	'shotinfod700' => 1,
       	'shotinfod7000' => 1,
      @@ -10144,8 +11228,11 @@
       	'shotinfod90' => 1,
       	'shotinfounknown' => 1,
       	'shotinfoversion' => 1,
      +	'shotinfoz7ii' => 1,
      +	'shotinfoz9' => 1,
       	'showmode' => 1,
       	'showobjects' => 1,
      +	'shutterangle' => 1,
       	'shuttercurtainhack' => 1,
       	'shutterspeed' => 1,
       	'shutterspeeddisplayed' => 1,
      @@ -10188,6 +11275,8 @@
       	'slideshow' => 1,
       	'smaxsamplevalue' => 1,
       	'sminsamplevalue' => 1,
      +	'smpteformat' => 1,
      +	'smpteoffset' => 1,
       	'snapshotid' => 1,
       	'snapshotname' => 1,
       	'soctemperature' => 1,
      @@ -10196,6 +11285,8 @@
       	'softwarecomponents' => 1,
       	'softwarerelease' => 1,
       	'sony' => 1,
      +	'sony_0x9416' => 1,
      +	'sonyfnumber2' => 1,
       	'sonyrawfiletype' => 1,
       	'sonytonecurve' => 1,
       	'soundfile' => 1,
      @@ -10224,6 +11315,8 @@
       	'specialeffectsopticalfilter' => 1,
       	'specialfolderdata' => 1,
       	'specificationversion' => 1,
      +	'spectralviewingconditions' => 1,
      +	'spectralwhitepoint' => 1,
       	'speed' => 1,
       	'sphericalvideo' => 1,
       	'sphericalvideoxml' => 1,
      @@ -10241,9 +11334,10 @@
       	'srf2key' => 1,
       	'srf6offset' => 1,
       	'srfdataoffset' => 1,
      -	'srgbrendering' => 1,
       	'stampinfo' => 1,
       	'stamptoolcount' => 1,
      +	'standardtocustompcc' => 1,
      +	'standbymonitorofftime' => 1,
       	'starring' => 1,
       	'startdate' => 1,
       	'startedgecode' => 1,
      @@ -10319,6 +11413,13 @@
       	'structuretype' => 1,
       	'studio' => 1,
       	'sub-sampleinformation' => 1,
      +	'subdialframeadvance' => 1,
      +	'subdialframeadvancerating0' => 1,
      +	'subdialframeadvancerating1' => 1,
      +	'subdialframeadvancerating2' => 1,
      +	'subdialframeadvancerating3' => 1,
      +	'subdialframeadvancerating4' => 1,
      +	'subdialframeadvancerating5' => 1,
       	'subdir3000' => 1,
       	'subdir3100' => 1,
       	'subdir3400' => 1,
      @@ -10359,6 +11460,7 @@
       	'suggestedpalette' => 1,
       	'summary' => 1,
       	'summaryinfo' => 1,
      +	'surfacemap' => 1,
       	'surroundmode' => 1,
       	'surroundshotvideo' => 1,
       	'surroundshotvideoname' => 1,
      @@ -10405,6 +11507,7 @@
       	'tag900b' => 1,
       	'tag9050a' => 1,
       	'tag9050b' => 1,
      +	'tag9050c' => 1,
       	'tag9400a' => 1,
       	'tag9400b' => 1,
       	'tag9400c' => 1,
      @@ -10420,6 +11523,7 @@
       	'tag940a' => 1,
       	'tag940c' => 1,
       	'tag940e' => 1,
      +	'tag9416_0000' => 1,
       	'taggedpdf' => 1,
       	'taggingtime' => 1,
       	'take' => 1,
      @@ -10465,6 +11569,9 @@
       	'textureformat' => 1,
       	'theora' => 1,
       	'theoraversion' => 1,
      +	'thermalcalibration' => 1,
      +	'thermaldata' => 1,
      +	'thermalparams' => 1,
       	'thetasubdir' => 1,
       	'things' => 1,
       	'thirdlanguage' => 1,
      @@ -10474,8 +11581,11 @@
       	'thumbnailclip' => 1,
       	'thumbnailcompressiontable' => 1,
       	'thumbnailexpansiontable' => 1,
      +	'thumbnailhash' => 1,
      +	'thumbnailref' => 1,
       	'thumbnailresizeratio' => 1,
       	'thumbnailtiff' => 1,
      +	'thumbnailurl' => 1,
       	'tickspersecond' => 1,
       	'tiff' => 1,
       	'tiff-epstandardid' => 1,
      @@ -10496,6 +11606,7 @@
       	'timeoffset' => 1,
       	'timereference' => 1,
       	'timescale' => 1,
      +	'timestamplist' => 1,
       	'timestamprandomoffset' => 1,
       	'timetosampletable' => 1,
       	'title2' => 1,
      @@ -10582,6 +11693,7 @@
       	'trackvolume' => 1,
       	'trademark' => 1,
       	'transactionid' => 1,
      +	'transfercharacteristic' => 1,
       	'transferrange' => 1,
       	'transfersequence' => 1,
       	'transformation' => 1,
      @@ -10593,10 +11705,12 @@
       	'transformtitle' => 1,
       	'transparency' => 1,
       	'transparencyindicator' => 1,
      +	'transparentcolor' => 1,
       	'transparentindex' => 1,
       	'trapindicator' => 1,
       	'trashcolsright' => 1,
       	'trashrowsbottom' => 1,
      +	'trim' => 1,
       	'tty-ttdphone' => 1,
       	'tungmat0' => 1,
       	'tungmat1' => 1,
      @@ -10637,6 +11751,7 @@
       	'unknown_slmt' => 1,
       	'unknownd30' => 1,
       	'unknowndata' => 1,
      +	'unknownexif' => 1,
       	'unknowninfo' => 1,
       	'unknowninfo2' => 1,
       	'unknowninfo2version' => 1,
      @@ -10649,6 +11764,7 @@
       	'unknowntemperature1' => 1,
       	'unknowntemperature2' => 1,
       	'unsharpdata' => 1,
      +	'unshiftednote' => 1,
       	'untitled0' => 1,
       	'untitled1' => 1,
       	'untitled2' => 1,
      @@ -10689,6 +11805,7 @@
       	'userplaycountweekend' => 1,
       	'userselectgrouptitle' => 1,
       	'userservicerating' => 1,
      +	'usertext' => 1,
       	'userweburl' => 1,
       	'usingtransforms' => 1,
       	'usmparametershigh' => 1,
      @@ -10700,6 +11817,7 @@
       	'usptomiscellaneous' => 1,
       	'usptooriginalcontenttype' => 1,
       	'utm' => 1,
      +	'uuid-c2paclaimsignature' => 1,
       	'uuid-canon' => 1,
       	'uuid-canon2' => 1,
       	'uuid-exif' => 1,
      @@ -10711,6 +11829,7 @@
       	'uuid-iptc2' => 1,
       	'uuid-photoshop' => 1,
       	'uuid-prof' => 1,
      +	'uuid-signature' => 1,
       	'uuid-unknown' => 1,
       	'uuid-usmt' => 1,
       	'uuid-xmp' => 1,
      @@ -10740,6 +11859,7 @@
       	'versioninfo' => 1,
       	'versionrestrictions' => 1,
       	'versionyear' => 1,
      +	'verticalaf-onbutton' => 1,
       	'verticalcitation' => 1,
       	'verticalcstype' => 1,
       	'verticaldatum' => 1,
      @@ -10773,6 +11893,7 @@
       	'videoscantype' => 1,
       	'videosize' => 1,
       	'videostreamtype' => 1,
      +	'videotimestamp' => 1,
       	'videotrackid' => 1,
       	'videowidth' => 1,
       	'view' => 1,
      @@ -10811,6 +11932,7 @@
       	'volumeexpirationdate' => 1,
       	'volumeid' => 1,
       	'volumelabel' => 1,
      +	'volumelevelr128' => 1,
       	'volumemodifydate' => 1,
       	'volumename' => 1,
       	'volumenormalization' => 1,
      @@ -10951,7 +12073,6 @@
       	'worldtocamera' => 1,
       	'worldtondc' => 1,
       	'wrapmodes' => 1,
      -	'writer' => 1,
       	'writername' => 1,
       	'writers' => 1,
       	'writtenby' => 1,
      @@ -10975,6 +12096,7 @@
       	'xmethod' => 1,
       	'xmldata' => 1,
       	'xmlfiletype' => 1,
      +	'xmlpackets' => 1,
       	'xmp_profile' => 1,
       	'xmpbj' => 1,
       	'xmpdm' => 1,
      @@ -11000,10 +12122,12 @@
       	'zipcompressedsize' => 1,
       	'zipcompression' => 1,
       	'zipcrc' => 1,
      +	'zipfilecomment' => 1,
       	'zipfilename' => 1,
       	'zipmodifydate' => 1,
       	'ziprequiredversion' => 1,
       	'zipuncompressedsize' => 1,
      +	'zisrawversion' => 1,
       	'zoom' => 1,
       	'zoomedpreviewimage' => 1,
       	'zoompos' => 1,
      @@ -11016,6 +12140,7 @@
       my %compositeModules = (
       	'filenumber' => 'Image::ExifTool::Canon',
       	'flash' => 'Image::ExifTool::XMP',
      +	'gpsposition' => 'Image::ExifTool::Exif',
       	'jpgfromraw' => 'Image::ExifTool::Exif',
       	'originaldecisiondata' => 'Image::ExifTool::Canon',
       	'otherimage' => 'Image::ExifTool::Exif',
      @@ -11301,7 +12426,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/TagNames.pod libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/TagNames.pod
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/TagNames.pod	2020-02-20 14:43:38.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/TagNames.pod	2022-02-09 12:18:17.000000000 +0000
      @@ -12,7 +12,7 @@
       =head1 TAG TABLES
       
       The tables listed below give the names of all tags recognized by ExifTool.
      -They contain a total of 23338 tags, with 15293 unique tag names.
      +They contain a total of 25775 tags, with 16465 unique tag names.
       
       B, B or B is given in the first column of each
       table.  A B is the computer-readable equivalent of a tag name, and
      @@ -115,17 +115,22 @@
                      PreviewImage                     no
         'APP3'       Meta                             Kodak Meta
                      Stim                             Stim
      +               JPS                              JPEG JPS
      +               ThermalData                      no
                      PreviewImage                     no
         'APP4'       Scalado                          Scalado
                      FPXR                             FlashPix
      +               ThermalParams                    DJI ThermalParams
                      PreviewImage                     no
         'APP5'       RMETA                            Ricoh RMETA
                      SamsungUniqueID                  Samsung APP5
      +               ThermalCalibration               no
                      PreviewImage                     no
         'APP6'       EPPIM                            JPEG EPPIM
                      NITF                             JPEG NITF
                      HP_TDHD                          HP TDHD
                      GoPro                            GoPro GPMF
      +               DJI_DTAT                         no
         'APP7'       Pentax                           Pentax
                      Huawei                           Unknown
                      Qualcomm                         Qualcomm
      @@ -133,6 +138,7 @@
         'APP9'       MediaJukebox                     JPEG MediaJukebox
         'APP10'      Comment                          no
         'APP11'      JPEG-HDR                         JPEG HDR
      +               JUMBF                            Jpeg2000
         'APP12'      PictureInfo                      APP12 PictureInfo
                      Ducky                            APP12 Ducky
         'APP13'      Photoshop                        Photoshop
      @@ -150,6 +156,7 @@
                      Samsung                          Samsung Trailer
                      EmbeddedVideo                    no
                      Insta360                         no
      +               NikonApp                         no
                      PreviewImage                     yes
       
       =head3 JPEG AVI1 Tags
      @@ -169,6 +176,18 @@
         ------   --------                             --------
         'Rev'    OcadRevision                         no
       
      +=head3 JPEG JPS Tags
      +
      +Tags found in JPEG Stereo (JPS) images.
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +     10    JPSSeparation                        no
      +     11    JPSFlags                             no
      +     12    JPSLayout                            no
      +     13    JPSType                              no
      +     16    JPSComment                           no
      +
       =head3 JPEG EPPIM Tags
       
       APP6 is used in by the Toshiba PDR-M700 to store a TIFF structure containing
      @@ -907,6 +926,20 @@
         0xc7ec   DepthUnits                IFD0       int16u!
         0xc7ed   DepthMeasureType          IFD0       int16u!
         0xc7ee   EnhanceParams             IFD0       string!
      +  0xcd2d   ProfileGainTableMap       SubIFD     undef!
      +  0xcd2e   SemanticName              SubIFD     no
      +  0xcd30   SemanticInstanceIFD       SubIFD     no
      +  0xcd31   CalibrationIlluminant3    IFD0       int16u!
      +  0xcd32   CameraCalibration3        IFD0       rational64s[n]!
      +  0xcd33   ColorMatrix3              IFD0       rational64s[n]!
      +  0xcd34   ForwardMatrix3            IFD0       rational64s[n]!
      +  0xcd35   IlluminantData1           IFD0       undef!
      +  0xcd36   IlluminantData2           IFD0       undef!
      +  0xcd37   IlluminantData3           IFD0       undef!
      +  0xcd38   MaskSubArea               SubIFD     no
      +  0xcd39   ProfileHueSatMapData3     IFD0       float[n]!
      +  0xcd3a   ReductionMatrix3          IFD0       rational64s[n]!
      +  0xcd3b   RGBTables                 IFD0       undef!
         0xea1c   Padding                   ExifIFD    undef!
         0xea1d   OffsetSchema              ExifIFD    int32s!
         0xfde8   OwnerName                 ExifIFD    string/
      @@ -1152,15 +1185,16 @@
       C is a floating point number, C is entered as a floating
       point number but stored as two C strings separated by a '/'
       character, C is a date/time string entered in the format "YYYY:mm:dd
      -HH:MM:SS[.ss][+/-HH:MM]", C is either "True" or "False", C
      -indicates a structured tag, and C is a tag that supports alternate
      -languages.
      +HH:MM:SS[.ss][+/-HH:MM]", C is either "True" or "False" (but "true"
      +and "false" may be written as a ValueConv value for compatibility with
      +non-conforming applications), C indicates a structured tag, and
      +C is a tag that supports alternate languages.
       
       When reading, C tags are extracted only if the Struct (-struct)
       option is used.  Otherwise the corresponding I tags, indicated by
       an underline (C<_>) after the B type, are extracted.  When
       copying, by default both structured and flattened tags are available, but
      -the flattened tags are considered "unsafe" so they they aren't copied unless
      +the flattened tags are considered "unsafe" so they aren't copied unless
       specified explicitly.  The Struct option may be disabled by setting Struct
       to 0 via the API or with --struct on the command line to copy only flattened
       tags, or enabled by setting Struct to 1 via the API or with -struct on the
      @@ -1218,6 +1252,7 @@
         acdsee                                        XMP acdsee
         album                                         XMP Album
         apple-fi                                      XMP apple_fi
      +  ast                                           Nikon ast
         aux                                           XMP aux
         cc                                            XMP cc
         cell                                          XMP cell
      @@ -1257,6 +1292,7 @@
         mwg-coll                                      MWG Collections
         mwg-kw                                        MWG Keywords
         mwg-rs                                        MWG Regions
      +  nine                                          Nikon nine
         pdf                                           XMP pdf
         pdfx                                          XMP pdfx
         photomech                                     PhotoMechanic XMP
      @@ -1269,6 +1305,7 @@
         prm                                           XMP prm
         pur                                           XMP pur
         rdf                                           XMP rdf
      +  sdc                                           Nikon sdc
         swf                                           XMP swf
         tiff                                          XMP tiff
         x                                             XMP x
      @@ -1401,6 +1438,7 @@
         LensID                                        string
         LensInfo                                      string/
         LensSerialNumber                              string/
      +  NeutralDensityFactor                          string
         OwnerName                                     string/
         SerialNumber                                  string/
         VignetteCorrectionAlreadyApplied              boolean
      @@ -1457,11 +1495,14 @@
         AutoLateralCA                                 integer/
         AutoShadows                                   boolean/
         AutoTone                                      boolean/
      +  AutoToneDigest                                string/
      +  AutoToneDigestNoSat                           string/
         AutoWhiteVersion                              integer/
         Blacks2012                                    integer/
         BlueHue                                       integer/
         BlueSaturation                                integer/
         Brightness                                    integer/
      +  CameraModelRestriction                        string/
         CameraProfile                                 string/
         CameraProfileDigest                           string/
         ChromaticAberrationB                          integer/
      @@ -1475,17 +1516,85 @@
         CircGradBasedCorrMaskBottom                   real/_
         CircGradBasedCorrMaskCenterValue              real/_
         CircGradBasedCorrMaskCenterWeight             real/_
      +  CircGradBasedCorrMaskRange                    CorrRangeMask Struct_+
      +  CircGradBasedCorrMaskRangeAreaModels          AreaModels Struct_+
      +  CircGradBasedCorrMaskRangeAreaModelsComponents string/_+
      +  CircGradBasedCorrMaskRangeAreaModelsColorSampleInfo string/_+
      +  CircGradBasedCorrMaskRangeColorAmount         real/_+
      +  CircGradBasedCorrMaskRangeDepthFeather        real/_+
      +  CircGradBasedCorrMaskRangeDepthMax            real/_+
      +  CircGradBasedCorrMaskRangeDepthMin            real/_+
      +  CircGradBasedCorrMaskRangeInvert              boolean/_+
      +  CircGradBasedCorrMaskRangeLumFeather          real/_+
      +  CircGradBasedCorrMaskRangeLuminanceDepthSampleInfo string/_+
      +  CircGradBasedCorrMaskRangeLumMax              real/_+
      +  CircGradBasedCorrMaskRangeLumMin              real/_+
      +  CircGradBasedCorrMaskRangeLumRange            string/_+
      +  CircGradBasedCorrMaskRangeSampleType          integer/_+
      +  CircGradBasedCorrMaskRangeType                string/_+
      +  CircGradBasedCorrMaskRangeVersion             string/_+
         CircGradBasedCorrMaskDabs                     string/_
         CircGradBasedCorrMaskFeather                  real/_
         CircGradBasedCorrMaskFlipped                  boolean/_
         CircGradBasedCorrMaskFlow                     real/_
         CircGradBasedCorrMaskFullX                    real/_
         CircGradBasedCorrMaskFullY                    real/_
      +  CircGradBasedCorrMaskInputDigest              string/_
         CircGradBasedCorrMaskLeft                     real/_
      +  CircGradBasedCorrMaskMaskActive               boolean/_
      +  CircGradBasedCorrMaskMaskBlendMode            integer/_
      +  CircGradBasedCorrMaskMaskDigest               string/_
      +  CircGradBasedCorrMaskMaskInverted             boolean/_
      +  CircGradBasedCorrMaskMaskName                 string/_
      +  CircGradBasedCorrMaskMasks                    CorrectionMask Struct_+
      +  CircGradBasedCorrMaskMasksAlpha               real/_
      +  CircGradBasedCorrMaskMasksAngle               real/_
      +  CircGradBasedCorrMaskMasksBottom              real/_
      +  CircGradBasedCorrMaskMasksCenterValue         real/_
      +  CircGradBasedCorrMaskMasksCenterWeight        real/_
      +  CircGradBasedCorrMaskMasksDabs                string/_+
      +  CircGradBasedCorrMaskMasksFeather             real/_
      +  CircGradBasedCorrMaskMasksFlipped             boolean/_
      +  CircGradBasedCorrMaskMasksFlow                real/_
      +  CircGradBasedCorrMaskMasksFullX               real/_
      +  CircGradBasedCorrMaskMasksFullY               real/_
      +  CircGradBasedCorrMaskMasksInputDigest         string/_
      +  CircGradBasedCorrMaskMasksLeft                real/_
      +  CircGradBasedCorrMaskMasksMaskActive          boolean/_
      +  CircGradBasedCorrMaskMasksMaskBlendMode       integer/_
      +  CircGradBasedCorrMaskMasksMaskDigest          string/_
      +  CircGradBasedCorrMaskMasksMaskInverted        boolean/_
      +  CircGradBasedCorrMaskMasksMaskName            string/_
      +  CircGradBasedCorrMaskMasksMaskSubType         string/_
      +  CircGradBasedCorrMaskMasksMaskSyncID          string/_
      +  CircGradBasedCorrMaskMasksValue               real/_
      +  CircGradBasedCorrMaskMasksMaskVersion         string/_
      +  CircGradBasedCorrMaskMasksMidpoint            real/_
      +  CircGradBasedCorrMaskMasksOrigin              string/_
      +  CircGradBasedCorrMaskMasksPerimeterValue      real/_
      +  CircGradBasedCorrMaskMasksRadius              real/_
      +  CircGradBasedCorrMaskMasksReferencePoint      string/_
      +  CircGradBasedCorrMaskMasksRight               real/_
      +  CircGradBasedCorrMaskMasksRoundness           real/_
      +  CircGradBasedCorrMaskMasksSizeX               real/_
      +  CircGradBasedCorrMaskMasksSizeY               real/_
      +  CircGradBasedCorrMaskMasksTop                 real/_
      +  CircGradBasedCorrMaskMaskSubType              string/_
      +  CircGradBasedCorrMaskMasksVersion             integer/_
      +  CircGradBasedCorrMaskMasksWhat                string/_
      +  CircGradBasedCorrMaskMasksWholeImageArea      string/_
      +  CircGradBasedCorrMaskMasksX                   real/_
      +  CircGradBasedCorrMaskMasksY                   real/_
      +  CircGradBasedCorrMaskMaskSyncID               string/_
      +  CircGradBasedCorrMaskMasksZeroX               real/_
      +  CircGradBasedCorrMaskMasksZeroY               real/_
         CircGradBasedCorrMaskValue                    real/_
      +  CircGradBasedCorrMaskMaskVersion              string/_
         CircGradBasedCorrMaskMidpoint                 real/_
      +  CircGradBasedCorrMaskOrigin                   string/_
         CircGradBasedCorrMaskPerimeterValue           real/_
         CircGradBasedCorrMaskRadius                   real/_
      +  CircGradBasedCorrMaskReferencePoint           string/_
         CircGradBasedCorrMaskRight                    real/_
         CircGradBasedCorrMaskRoundness                real/_
         CircGradBasedCorrMaskSizeX                    real/_
      @@ -1493,38 +1602,78 @@
         CircGradBasedCorrMaskTop                      real/_
         CircGradBasedCorrMaskVersion                  integer/_
         CircGradBasedCorrMaskWhat                     string/_
      +  CircGradBasedCorrMaskWholeImageArea           string/_
         CircGradBasedCorrMaskX                        real/_
         CircGradBasedCorrMaskY                        real/_
         CircGradBasedCorrMaskZeroX                    real/_
         CircGradBasedCorrMaskZeroY                    real/_
      +  CircGradBasedCorrCorrectionName               string/_+
      +  CircGradBasedCorrRangeMask                    CorrRangeMask Struct_+
      +  CircGradBasedCorrRangeMaskAreaModels          AreaModels Struct_+
      +  CircGradBasedCorrRangeMaskAreaModelsComponents string/_+
      +  CircGradBasedCorrRangeMaskAreaModelsColorSampleInfo string/_+
      +  CircGradBasedCorrRangeMaskColorAmount         real/_+
      +  CircGradBasedCorrRangeMaskDepthFeather        real/_+
      +  CircGradBasedCorrRangeMaskDepthMax            real/_+
      +  CircGradBasedCorrRangeMaskDepthMin            real/_+
      +  CircGradBasedCorrRangeMaskInvert              boolean/_+
      +  CircGradBasedCorrRangeMaskLumFeather          real/_+
      +  CircGradBasedCorrRangeMaskLuminanceDepthSampleInfo string/_+
      +  CircGradBasedCorrRangeMaskLumMax              real/_+
      +  CircGradBasedCorrRangeMaskLumMin              real/_+
      +  CircGradBasedCorrRangeMaskLumRange            string/_+
      +  CircGradBasedCorrRangeMaskSampleType          integer/_+
      +  CircGradBasedCorrRangeMaskType                string/_+
      +  CircGradBasedCorrRangeMaskVersion             string/_+
      +  CircGradBasedCorrCorrectionSyncID             string/_+
      +  CircGradBasedCorrBlacks2012                   real/_
         CircGradBasedCorrBrightness                   real/_
         CircGradBasedCorrClarity                      real/_
         CircGradBasedCorrClarity2012                  real/_
         CircGradBasedCorrContrast                     real/_
         CircGradBasedCorrContrast2012                 real/_
         CircGradBasedCorrDefringe                     real/_
      +  CircGradBasedCorrDehaze                       real/_
         CircGradBasedCorrExposure                     real/_
         CircGradBasedCorrExposure2012                 real/_
         CircGradBasedCorrHighlights2012               real/_
      +  CircGradBasedCorrHue                          real/_
         CircGradBasedCorrLuminanceNoise               real/_
         CircGradBasedCorrMoire                        real/_
         CircGradBasedCorrSaturation                   real/_
         CircGradBasedCorrShadows2012                  real/_
         CircGradBasedCorrSharpness                    real/_
         CircGradBasedCorrTemperature                  real/_
      +  CircGradBasedCorrTexture                      real/_
         CircGradBasedCorrTint                         real/_
      -  CircGradBasedCorrHue                          real/_
      -  CircGradBasedCorrSaturation                   real/_
      +  CircGradBasedCorrToningHue                    real/_
      +  CircGradBasedCorrToningSaturation             real/_
      +  CircGradBasedCorrWhites2012                   real/_
         CircGradBasedCorrWhat                         string/_
         Clarity                                       integer/
         Clarity2012                                   integer/
      +  ClipboardAspectRatio                          integer/
      +  ClipboardOrientation                          integer/
      +  Cluster                                       string/
      +  ColorGradeBlending                            integer/
      +  ColorGradeGlobalHue                           integer/
      +  ColorGradeGlobalLum                           integer/
      +  ColorGradeGlobalSat                           integer/
      +  ColorGradeHighlightLum                        integer/
      +  ColorGradeMidtoneHue                          integer/
      +  ColorGradeMidtoneLum                          integer/
      +  ColorGradeMidtoneSat                          integer/
      +  ColorGradeShadowLum                           integer/
         ColorNoiseReduction                           integer/
         ColorNoiseReductionDetail                     integer/
         ColorNoiseReductionSmoothness                 integer/
      +  CompatibleVersion                             string/
      +  ContactInfo                                   string/
         Contrast                                      integer/
         Contrast2012                                  integer/
         Converter                                     string/
         ConvertToGrayscale                            boolean/
      +  Copyright                                     string/
         CropAngle                                     real/
         CropBottom                                    real/
         CropConstrainToWarp                           integer/
      @@ -1547,6 +1696,7 @@
         DefringePurpleHueHi                           integer/
         DefringePurpleHueLo                           integer/
         Dehaze                                        real/
      +  Description                                   lang-alt/
         DNGIgnoreSidecars                             boolean/
         Exposure                                      real/
         Exposure2012                                  real/
      @@ -1560,17 +1710,85 @@
         GradientBasedCorrMaskBottom                   real/_
         GradientBasedCorrMaskCenterValue              real/_
         GradientBasedCorrMaskCenterWeight             real/_
      +  GradientBasedCorrMaskRange                    CorrRangeMask Struct_+
      +  GradientBasedCorrMaskRangeAreaModels          AreaModels Struct_+
      +  GradientBasedCorrMaskRangeAreaModelsComponents string/_+
      +  GradientBasedCorrMaskRangeAreaModelsColorSampleInfo string/_+
      +  GradientBasedCorrMaskRangeColorAmount         real/_+
      +  GradientBasedCorrMaskRangeDepthFeather        real/_+
      +  GradientBasedCorrMaskRangeDepthMax            real/_+
      +  GradientBasedCorrMaskRangeDepthMin            real/_+
      +  GradientBasedCorrMaskRangeInvert              boolean/_+
      +  GradientBasedCorrMaskRangeLumFeather          real/_+
      +  GradientBasedCorrMaskRangeLuminanceDepthSampleInfo string/_+
      +  GradientBasedCorrMaskRangeLumMax              real/_+
      +  GradientBasedCorrMaskRangeLumMin              real/_+
      +  GradientBasedCorrMaskRangeLumRange            string/_+
      +  GradientBasedCorrMaskRangeSampleType          integer/_+
      +  GradientBasedCorrMaskRangeType                string/_+
      +  GradientBasedCorrMaskRangeVersion             string/_+
         GradientBasedCorrMaskDabs                     string/_
         GradientBasedCorrMaskFeather                  real/_
         GradientBasedCorrMaskFlipped                  boolean/_
         GradientBasedCorrMaskFlow                     real/_
         GradientBasedCorrMaskFullX                    real/_
         GradientBasedCorrMaskFullY                    real/_
      +  GradientBasedCorrMaskInputDigest              string/_
         GradientBasedCorrMaskLeft                     real/_
      +  GradientBasedCorrMaskMaskActive               boolean/_
      +  GradientBasedCorrMaskMaskBlendMode            integer/_
      +  GradientBasedCorrMaskMaskDigest               string/_
      +  GradientBasedCorrMaskMaskInverted             boolean/_
      +  GradientBasedCorrMaskMaskName                 string/_
      +  GradientBasedCorrMaskMasks                    CorrectionMask Struct_+
      +  GradientBasedCorrMaskMasksAlpha               real/_
      +  GradientBasedCorrMaskMasksAngle               real/_
      +  GradientBasedCorrMaskMasksBottom              real/_
      +  GradientBasedCorrMaskMasksCenterValue         real/_
      +  GradientBasedCorrMaskMasksCenterWeight        real/_
      +  GradientBasedCorrMaskMasksDabs                string/_+
      +  GradientBasedCorrMaskMasksFeather             real/_
      +  GradientBasedCorrMaskMasksFlipped             boolean/_
      +  GradientBasedCorrMaskMasksFlow                real/_
      +  GradientBasedCorrMaskMasksFullX               real/_
      +  GradientBasedCorrMaskMasksFullY               real/_
      +  GradientBasedCorrMaskMasksInputDigest         string/_
      +  GradientBasedCorrMaskMasksLeft                real/_
      +  GradientBasedCorrMaskMasksMaskActive          boolean/_
      +  GradientBasedCorrMaskMasksMaskBlendMode       integer/_
      +  GradientBasedCorrMaskMasksMaskDigest          string/_
      +  GradientBasedCorrMaskMasksMaskInverted        boolean/_
      +  GradientBasedCorrMaskMasksMaskName            string/_
      +  GradientBasedCorrMaskMasksMaskSubType         string/_
      +  GradientBasedCorrMaskMasksMaskSyncID          string/_
      +  GradientBasedCorrMaskMasksValue               real/_
      +  GradientBasedCorrMaskMasksMaskVersion         string/_
      +  GradientBasedCorrMaskMasksMidpoint            real/_
      +  GradientBasedCorrMaskMasksOrigin              string/_
      +  GradientBasedCorrMaskMasksPerimeterValue      real/_
      +  GradientBasedCorrMaskMasksRadius              real/_
      +  GradientBasedCorrMaskMasksReferencePoint      string/_
      +  GradientBasedCorrMaskMasksRight               real/_
      +  GradientBasedCorrMaskMasksRoundness           real/_
      +  GradientBasedCorrMaskMasksSizeX               real/_
      +  GradientBasedCorrMaskMasksSizeY               real/_
      +  GradientBasedCorrMaskMasksTop                 real/_
      +  GradientBasedCorrMaskMaskSubType              string/_
      +  GradientBasedCorrMaskMasksVersion             integer/_
      +  GradientBasedCorrMaskMasksWhat                string/_
      +  GradientBasedCorrMaskMasksWholeImageArea      string/_
      +  GradientBasedCorrMaskMasksX                   real/_
      +  GradientBasedCorrMaskMasksY                   real/_
      +  GradientBasedCorrMaskMaskSyncID               string/_
      +  GradientBasedCorrMaskMasksZeroX               real/_
      +  GradientBasedCorrMaskMasksZeroY               real/_
         GradientBasedCorrMaskValue                    real/_
      +  GradientBasedCorrMaskMaskVersion              string/_
         GradientBasedCorrMaskMidpoint                 real/_
      +  GradientBasedCorrMaskOrigin                   string/_
         GradientBasedCorrMaskPerimeterValue           real/_
         GradientBasedCorrMaskRadius                   real/_
      +  GradientBasedCorrMaskReferencePoint           string/_
         GradientBasedCorrMaskRight                    real/_
         GradientBasedCorrMaskRoundness                real/_
         GradientBasedCorrMaskSizeX                    real/_
      @@ -1578,31 +1796,57 @@
         GradientBasedCorrMaskTop                      real/_
         GradientBasedCorrMaskVersion                  integer/_
         GradientBasedCorrMaskWhat                     string/_
      +  GradientBasedCorrMaskWholeImageArea           string/_
         GradientBasedCorrMaskX                        real/_
         GradientBasedCorrMaskY                        real/_
         GradientBasedCorrMaskZeroX                    real/_
         GradientBasedCorrMaskZeroY                    real/_
      +  GradientBasedCorrCorrectionName               string/_+
      +  GradientBasedCorrRangeMask                    CorrRangeMask Struct_+
      +  GradientBasedCorrRangeMaskAreaModels          AreaModels Struct_+
      +  GradientBasedCorrRangeMaskAreaModelsComponents string/_+
      +  GradientBasedCorrRangeMaskAreaModelsColorSampleInfo string/_+
      +  GradientBasedCorrRangeMaskColorAmount         real/_+
      +  GradientBasedCorrRangeMaskDepthFeather        real/_+
      +  GradientBasedCorrRangeMaskDepthMax            real/_+
      +  GradientBasedCorrRangeMaskDepthMin            real/_+
      +  GradientBasedCorrRangeMaskInvert              boolean/_+
      +  GradientBasedCorrRangeMaskLumFeather          real/_+
      +  GradientBasedCorrRangeMaskLuminanceDepthSampleInfo string/_+
      +  GradientBasedCorrRangeMaskLumMax              real/_+
      +  GradientBasedCorrRangeMaskLumMin              real/_+
      +  GradientBasedCorrRangeMaskLumRange            string/_+
      +  GradientBasedCorrRangeMaskSampleType          integer/_+
      +  GradientBasedCorrRangeMaskType                string/_+
      +  GradientBasedCorrRangeMaskVersion             string/_+
      +  GradientBasedCorrCorrectionSyncID             string/_+
      +  GradientBasedCorrBlacks2012                   real/_
         GradientBasedCorrBrightness                   real/_
         GradientBasedCorrClarity                      real/_
         GradientBasedCorrClarity2012                  real/_
         GradientBasedCorrContrast                     real/_
         GradientBasedCorrContrast2012                 real/_
         GradientBasedCorrDefringe                     real/_
      +  GradientBasedCorrDehaze                       real/_
         GradientBasedCorrExposure                     real/_
         GradientBasedCorrExposure2012                 real/_
         GradientBasedCorrHighlights2012               real/_
      +  GradientBasedCorrHue                          real/_
         GradientBasedCorrLuminanceNoise               real/_
         GradientBasedCorrMoire                        real/_
         GradientBasedCorrSaturation                   real/_
         GradientBasedCorrShadows2012                  real/_
         GradientBasedCorrSharpness                    real/_
         GradientBasedCorrTemperature                  real/_
      +  GradientBasedCorrTexture                      real/_
         GradientBasedCorrTint                         real/_
      -  GradientBasedCorrHue                          real/_
      -  GradientBasedCorrSaturation                   real/_
      +  GradientBasedCorrToningHue                    real/_
      +  GradientBasedCorrToningSaturation             real/_
      +  GradientBasedCorrWhites2012                   real/_
         GradientBasedCorrWhat                         string/_
         GrainAmount                                   integer/
         GrainFrequency                                integer/
      +  GrainSeed                                     integer/
         GrainSize                                     integer/
         GrayMixerAqua                                 integer/
         GrayMixerBlue                                 integer/
      @@ -1614,6 +1858,7 @@
         GrayMixerYellow                               integer/
         GreenHue                                      integer/
         GreenSaturation                               integer/
      +  Group                                         lang-alt/
         HasCrop                                       boolean/
         HasSettings                                   boolean/
         Highlight2012                                 integer/
      @@ -1636,6 +1881,7 @@
         LensProfileDistortionScale                    integer/
         LensProfileEnable                             integer/
         LensProfileFilename                           string/
      +  LensProfileIsEmbedded                         boolean/
         LensProfileMatchKeyCameraModelName            string/
         LensProfileMatchKeyExifMake                   string/
         LensProfileMatchKeyExifModel                  string/
      @@ -1648,7 +1894,26 @@
         LensProfileSetup                              string/
         LensProfileVignettingScale                    integer/
         Look                                          Look Struct
      -  LookName                                      string/_
      +  LookAmount                                    string/_
      +  LookCluster                                   string/_
      +  LookCopyright                                 string/_
      +  LookGroup                                     lang-alt/_
      +  LookName                                      string/
      +  LookParameters                                LookParms Struct_
      +  LookParametersCameraProfile                   string/_
      +  LookParametersClarity2012                     string/_
      +  LookParametersConvertToGrayscale              string/_
      +  LookParametersLookTable                       string/_
      +  LookParametersProcessVersion                  string/_
      +  LookParametersToneCurvePV2012                 string/_+
      +  LookParametersToneCurvePV2012Blue             string/_+
      +  LookParametersToneCurvePV2012Green            string/_+
      +  LookParametersToneCurvePV2012Red              string/_+
      +  LookParametersVersion                         string/_
      +  LookSupportsAmount                            string/_
      +  LookSupportsMonochrome                        string/_
      +  LookSupportsOutputReferred                    string/_
      +  LookUUID                                      string/_
         LuminanceAdjustmentAqua                       integer/
         LuminanceAdjustmentBlue                       integer/
         LuminanceAdjustmentGreen                      integer/
      @@ -1660,7 +1925,151 @@
         LuminanceNoiseReductionContrast               integer/
         LuminanceNoiseReductionDetail                 integer/
         LuminanceSmoothing                            integer/
      +  MaskGroupBasedCorrections                     Correction Struct+
      +  MaskGroupBasedCorrActive                      boolean/_
      +  MaskGroupBasedCorrAmount                      real/_
      +  MaskGroupBasedCorrMask                        CorrectionMask Struct_+
      +  MaskGroupBasedCorrMaskAlpha                   real/_
      +  MaskGroupBasedCorrMaskAngle                   real/_
      +  MaskGroupBasedCorrMaskBottom                  real/_
      +  MaskGroupBasedCorrMaskCenterValue             real/_
      +  MaskGroupBasedCorrMaskCenterWeight            real/_
      +  MaskGroupBasedCorrMaskRange                   CorrRangeMask Struct_+
      +  MaskGroupBasedCorrMaskRangeAreaModels         AreaModels Struct_+
      +  MaskGroupBasedCorrMaskRangeAreaModelsComponents string/_+
      +  MaskGroupBasedCorrMaskRangeAreaModelsColorSampleInfo string/_+
      +  MaskGroupBasedCorrMaskRangeColorAmount        real/_+
      +  MaskGroupBasedCorrMaskRangeDepthFeather       real/_+
      +  MaskGroupBasedCorrMaskRangeDepthMax           real/_+
      +  MaskGroupBasedCorrMaskRangeDepthMin           real/_+
      +  MaskGroupBasedCorrMaskRangeInvert             boolean/_+
      +  MaskGroupBasedCorrMaskRangeLumFeather         real/_+
      +  MaskGroupBasedCorrMaskRangeLuminanceDepthSampleInfo string/_+
      +  MaskGroupBasedCorrMaskRangeLumMax             real/_+
      +  MaskGroupBasedCorrMaskRangeLumMin             real/_+
      +  MaskGroupBasedCorrMaskRangeLumRange           string/_+
      +  MaskGroupBasedCorrMaskRangeSampleType         integer/_+
      +  MaskGroupBasedCorrMaskRangeType               string/_+
      +  MaskGroupBasedCorrMaskRangeVersion            string/_+
      +  MaskGroupBasedCorrMaskDabs                    string/_+
      +  MaskGroupBasedCorrMaskFeather                 real/_
      +  MaskGroupBasedCorrMaskFlipped                 boolean/_
      +  MaskGroupBasedCorrMaskFlow                    real/_
      +  MaskGroupBasedCorrMaskFullX                   real/_
      +  MaskGroupBasedCorrMaskFullY                   real/_
      +  MaskGroupBasedCorrMaskInputDigest             string/_
      +  MaskGroupBasedCorrMaskLeft                    real/_
      +  MaskGroupBasedCorrMaskMaskActive              boolean/_
      +  MaskGroupBasedCorrMaskMaskBlendMode           integer/_
      +  MaskGroupBasedCorrMaskMaskDigest              string/_
      +  MaskGroupBasedCorrMaskMaskInverted            boolean/_
      +  MaskGroupBasedCorrMaskMaskName                string/_
      +  MaskGroupBasedCorrMaskMasks                   CorrectionMask Struct_+
      +  MaskGroupBasedCorrMaskMasksAlpha              real/_
      +  MaskGroupBasedCorrMaskMasksAngle              real/_
      +  MaskGroupBasedCorrMaskMasksBottom             real/_
      +  MaskGroupBasedCorrMaskMasksCenterValue        real/_
      +  MaskGroupBasedCorrMaskMasksCenterWeight       real/_
      +  MaskGroupBasedCorrMaskMasksDabs               string/_+
      +  MaskGroupBasedCorrMaskMasksFeather            real/_
      +  MaskGroupBasedCorrMaskMasksFlipped            boolean/_
      +  MaskGroupBasedCorrMaskMasksFlow               real/_
      +  MaskGroupBasedCorrMaskMasksFullX              real/_
      +  MaskGroupBasedCorrMaskMasksFullY              real/_
      +  MaskGroupBasedCorrMaskMasksInputDigest        string/_
      +  MaskGroupBasedCorrMaskMasksLeft               real/_
      +  MaskGroupBasedCorrMaskMasksMaskActive         boolean/_
      +  MaskGroupBasedCorrMaskMasksMaskBlendMode      integer/_
      +  MaskGroupBasedCorrMaskMasksMaskDigest         string/_
      +  MaskGroupBasedCorrMaskMasksMaskInverted       boolean/_
      +  MaskGroupBasedCorrMaskMasksMaskName           string/_
      +  MaskGroupBasedCorrMaskMasksMaskSubType        string/_
      +  MaskGroupBasedCorrMaskMasksMaskSyncID         string/_
      +  MaskGroupBasedCorrMaskMasksValue              real/_
      +  MaskGroupBasedCorrMaskMasksMaskVersion        string/_
      +  MaskGroupBasedCorrMaskMasksMidpoint           real/_
      +  MaskGroupBasedCorrMaskMasksOrigin             string/_
      +  MaskGroupBasedCorrMaskMasksPerimeterValue     real/_
      +  MaskGroupBasedCorrMaskMasksRadius             real/_
      +  MaskGroupBasedCorrMaskMasksReferencePoint     string/_
      +  MaskGroupBasedCorrMaskMasksRight              real/_
      +  MaskGroupBasedCorrMaskMasksRoundness          real/_
      +  MaskGroupBasedCorrMaskMasksSizeX              real/_
      +  MaskGroupBasedCorrMaskMasksSizeY              real/_
      +  MaskGroupBasedCorrMaskMasksTop                real/_
      +  MaskGroupBasedCorrMaskMaskSubType             string/_
      +  MaskGroupBasedCorrMaskMasksVersion            integer/_
      +  MaskGroupBasedCorrMaskMasksWhat               string/_
      +  MaskGroupBasedCorrMaskMasksWholeImageArea     string/_
      +  MaskGroupBasedCorrMaskMasksX                  real/_
      +  MaskGroupBasedCorrMaskMasksY                  real/_
      +  MaskGroupBasedCorrMaskMaskSyncID              string/_
      +  MaskGroupBasedCorrMaskMasksZeroX              real/_
      +  MaskGroupBasedCorrMaskMasksZeroY              real/_
      +  MaskGroupBasedCorrMaskValue                   real/_
      +  MaskGroupBasedCorrMaskMaskVersion             string/_
      +  MaskGroupBasedCorrMaskMidpoint                real/_
      +  MaskGroupBasedCorrMaskOrigin                  string/_
      +  MaskGroupBasedCorrMaskPerimeterValue          real/_
      +  MaskGroupBasedCorrMaskRadius                  real/_
      +  MaskGroupBasedCorrMaskReferencePoint          string/_
      +  MaskGroupBasedCorrMaskRight                   real/_
      +  MaskGroupBasedCorrMaskRoundness               real/_
      +  MaskGroupBasedCorrMaskSizeX                   real/_
      +  MaskGroupBasedCorrMaskSizeY                   real/_
      +  MaskGroupBasedCorrMaskTop                     real/_
      +  MaskGroupBasedCorrMaskVersion                 integer/_
      +  MaskGroupBasedCorrMaskWhat                    string/_
      +  MaskGroupBasedCorrMaskWholeImageArea          string/_
      +  MaskGroupBasedCorrMaskX                       real/_
      +  MaskGroupBasedCorrMaskY                       real/_
      +  MaskGroupBasedCorrMaskZeroX                   real/_
      +  MaskGroupBasedCorrMaskZeroY                   real/_
      +  MaskGroupBasedCorrCorrectionName              string/_+
      +  MaskGroupBasedCorrRangeMask                   CorrRangeMask Struct_+
      +  MaskGroupBasedCorrRangeMaskAreaModels         AreaModels Struct_+
      +  MaskGroupBasedCorrRangeMaskAreaModelsComponents string/_+
      +  MaskGroupBasedCorrRangeMaskAreaModelsColorSampleInfo string/_+
      +  MaskGroupBasedCorrRangeMaskColorAmount        real/_+
      +  MaskGroupBasedCorrRangeMaskDepthFeather       real/_+
      +  MaskGroupBasedCorrRangeMaskDepthMax           real/_+
      +  MaskGroupBasedCorrRangeMaskDepthMin           real/_+
      +  MaskGroupBasedCorrRangeMaskInvert             boolean/_+
      +  MaskGroupBasedCorrRangeMaskLumFeather         real/_+
      +  MaskGroupBasedCorrRangeMaskLuminanceDepthSampleInfo string/_+
      +  MaskGroupBasedCorrRangeMaskLumMax             real/_+
      +  MaskGroupBasedCorrRangeMaskLumMin             real/_+
      +  MaskGroupBasedCorrRangeMaskLumRange           string/_+
      +  MaskGroupBasedCorrRangeMaskSampleType         integer/_+
      +  MaskGroupBasedCorrRangeMaskType               string/_+
      +  MaskGroupBasedCorrRangeMaskVersion            string/_+
      +  MaskGroupBasedCorrCorrectionSyncID            string/_+
      +  MaskGroupBasedCorrBlacks2012                  real/_
      +  MaskGroupBasedCorrBrightness                  real/_
      +  MaskGroupBasedCorrClarity                     real/_
      +  MaskGroupBasedCorrClarity2012                 real/_
      +  MaskGroupBasedCorrContrast                    real/_
      +  MaskGroupBasedCorrContrast2012                real/_
      +  MaskGroupBasedCorrDefringe                    real/_
      +  MaskGroupBasedCorrDehaze                      real/_
      +  MaskGroupBasedCorrExposure                    real/_
      +  MaskGroupBasedCorrExposure2012                real/_
      +  MaskGroupBasedCorrHighlights2012              real/_
      +  MaskGroupBasedCorrHue                         real/_
      +  MaskGroupBasedCorrLuminanceNoise              real/_
      +  MaskGroupBasedCorrMoire                       real/_
      +  MaskGroupBasedCorrSaturation                  real/_
      +  MaskGroupBasedCorrShadows2012                 real/_
      +  MaskGroupBasedCorrSharpness                   real/_
      +  MaskGroupBasedCorrTemperature                 real/_
      +  MaskGroupBasedCorrTexture                     real/_
      +  MaskGroupBasedCorrTint                        real/_
      +  MaskGroupBasedCorrToningHue                   real/_
      +  MaskGroupBasedCorrToningSaturation            real/_
      +  MaskGroupBasedCorrWhites2012                  real/_
      +  MaskGroupBasedCorrWhat                        string/_
         MoireFilter                                   string/
      +  Name                                          lang-alt/
         NegativeCacheLargePreviewSize                 integer/
         NegativeCacheMaximumSize                      real/
         NegativeCachePath                             string/
      @@ -1674,17 +2083,85 @@
         PaintCorrectionMaskBottom                     real/_
         PaintCorrectionMaskCenterValue                real/_
         PaintCorrectionMaskCenterWeight               real/_
      +  PaintCorrectionMaskRange                      CorrRangeMask Struct_+
      +  PaintCorrectionMaskRangeAreaModels            AreaModels Struct_+
      +  PaintCorrectionMaskRangeAreaModelsComponents  string/_+
      +  PaintCorrectionMaskRangeAreaModelsColorSampleInfo string/_+
      +  PaintCorrectionMaskRangeColorAmount           real/_+
      +  PaintCorrectionMaskRangeDepthFeather          real/_+
      +  PaintCorrectionMaskRangeDepthMax              real/_+
      +  PaintCorrectionMaskRangeDepthMin              real/_+
      +  PaintCorrectionMaskRangeInvert                boolean/_+
      +  PaintCorrectionMaskRangeLumFeather            real/_+
      +  PaintCorrectionMaskRangeLuminanceDepthSampleInfo string/_+
      +  PaintCorrectionMaskRangeLumMax                real/_+
      +  PaintCorrectionMaskRangeLumMin                real/_+
      +  PaintCorrectionMaskRangeLumRange              string/_+
      +  PaintCorrectionMaskRangeSampleType            integer/_+
      +  PaintCorrectionMaskRangeType                  string/_+
      +  PaintCorrectionMaskRangeVersion               string/_+
         PaintCorrectionMaskDabs                       string/_
         PaintCorrectionMaskFeather                    real/_
         PaintCorrectionMaskFlipped                    boolean/_
         PaintCorrectionMaskFlow                       real/_
         PaintCorrectionMaskFullX                      real/_
         PaintCorrectionMaskFullY                      real/_
      +  PaintCorrectionMaskInputDigest                string/_
         PaintCorrectionMaskLeft                       real/_
      +  PaintCorrectionMaskMaskActive                 boolean/_
      +  PaintCorrectionMaskMaskBlendMode              integer/_
      +  PaintCorrectionMaskMaskDigest                 string/_
      +  PaintCorrectionMaskMaskInverted               boolean/_
      +  PaintCorrectionMaskMaskName                   string/_
      +  PaintCorrectionMaskMasks                      CorrectionMask Struct_+
      +  PaintCorrectionMaskMasksAlpha                 real/_
      +  PaintCorrectionMaskMasksAngle                 real/_
      +  PaintCorrectionMaskMasksBottom                real/_
      +  PaintCorrectionMaskMasksCenterValue           real/_
      +  PaintCorrectionMaskMasksCenterWeight          real/_
      +  PaintCorrectionMaskMasksDabs                  string/_+
      +  PaintCorrectionMaskMasksFeather               real/_
      +  PaintCorrectionMaskMasksFlipped               boolean/_
      +  PaintCorrectionMaskMasksFlow                  real/_
      +  PaintCorrectionMaskMasksFullX                 real/_
      +  PaintCorrectionMaskMasksFullY                 real/_
      +  PaintCorrectionMaskMasksInputDigest           string/_
      +  PaintCorrectionMaskMasksLeft                  real/_
      +  PaintCorrectionMaskMasksMaskActive            boolean/_
      +  PaintCorrectionMaskMasksMaskBlendMode         integer/_
      +  PaintCorrectionMaskMasksMaskDigest            string/_
      +  PaintCorrectionMaskMasksMaskInverted          boolean/_
      +  PaintCorrectionMaskMasksMaskName              string/_
      +  PaintCorrectionMaskMasksMaskSubType           string/_
      +  PaintCorrectionMaskMasksMaskSyncID            string/_
      +  PaintCorrectionMaskMasksValue                 real/_
      +  PaintCorrectionMaskMasksMaskVersion           string/_
      +  PaintCorrectionMaskMasksMidpoint              real/_
      +  PaintCorrectionMaskMasksOrigin                string/_
      +  PaintCorrectionMaskMasksPerimeterValue        real/_
      +  PaintCorrectionMaskMasksRadius                real/_
      +  PaintCorrectionMaskMasksReferencePoint        string/_
      +  PaintCorrectionMaskMasksRight                 real/_
      +  PaintCorrectionMaskMasksRoundness             real/_
      +  PaintCorrectionMaskMasksSizeX                 real/_
      +  PaintCorrectionMaskMasksSizeY                 real/_
      +  PaintCorrectionMaskMasksTop                   real/_
      +  PaintCorrectionMaskMaskSubType                string/_
      +  PaintCorrectionMaskMasksVersion               integer/_
      +  PaintCorrectionMaskMasksWhat                  string/_
      +  PaintCorrectionMaskMasksWholeImageArea        string/_
      +  PaintCorrectionMaskMasksX                     real/_
      +  PaintCorrectionMaskMasksY                     real/_
      +  PaintCorrectionMaskMaskSyncID                 string/_
      +  PaintCorrectionMaskMasksZeroX                 real/_
      +  PaintCorrectionMaskMasksZeroY                 real/_
         PaintCorrectionMaskValue                      real/_
      +  PaintCorrectionMaskMaskVersion                string/_
         PaintCorrectionMaskMidpoint                   real/_
      +  PaintCorrectionMaskOrigin                     string/_
         PaintCorrectionMaskPerimeterValue             real/_
         PaintCorrectionMaskRadius                     real/_
      +  PaintCorrectionMaskReferencePoint             string/_
         PaintCorrectionMaskRight                      real/_
         PaintCorrectionMaskRoundness                  real/_
         PaintCorrectionMaskSizeX                      real/_
      @@ -1692,28 +2169,53 @@
         PaintCorrectionMaskTop                        real/_
         PaintCorrectionMaskVersion                    integer/_
         PaintCorrectionMaskWhat                       string/_
      +  PaintCorrectionMaskWholeImageArea             string/_
         PaintCorrectionMaskX                          real/_
         PaintCorrectionMaskY                          real/_
         PaintCorrectionMaskZeroX                      real/_
         PaintCorrectionMaskZeroY                      real/_
      +  PaintCorrectionCorrectionName                 string/_+
      +  PaintCorrectionRangeMask                      CorrRangeMask Struct_+
      +  PaintCorrectionRangeMaskAreaModels            AreaModels Struct_+
      +  PaintCorrectionRangeMaskAreaModelsComponents  string/_+
      +  PaintCorrectionRangeMaskAreaModelsColorSampleInfo string/_+
      +  PaintCorrectionRangeMaskColorAmount           real/_+
      +  PaintCorrectionRangeMaskDepthFeather          real/_+
      +  PaintCorrectionRangeMaskDepthMax              real/_+
      +  PaintCorrectionRangeMaskDepthMin              real/_+
      +  PaintCorrectionRangeMaskInvert                boolean/_+
      +  PaintCorrectionRangeMaskLumFeather            real/_+
      +  PaintCorrectionRangeMaskLuminanceDepthSampleInfo string/_+
      +  PaintCorrectionRangeMaskLumMax                real/_+
      +  PaintCorrectionRangeMaskLumMin                real/_+
      +  PaintCorrectionRangeMaskLumRange              string/_+
      +  PaintCorrectionRangeMaskSampleType            integer/_+
      +  PaintCorrectionRangeMaskType                  string/_+
      +  PaintCorrectionRangeMaskVersion               string/_+
      +  PaintCorrectionCorrectionSyncID               string/_+
      +  PaintCorrectionBlacks2012                     real/_
         PaintCorrectionBrightness                     real/_
         PaintCorrectionClarity                        real/_
         PaintCorrectionClarity2012                    real/_
         PaintCorrectionContrast                       real/_
         PaintCorrectionContrast2012                   real/_
         PaintCorrectionDefringe                       real/_
      +  PaintCorrectionDehaze                         real/_
         PaintCorrectionExposure                       real/_
         PaintCorrectionExposure2012                   real/_
         PaintCorrectionHighlights2012                 real/_
      +  PaintCorrectionHue                            real/_
         PaintCorrectionLuminanceNoise                 real/_
         PaintCorrectionMoire                          real/_
         PaintCorrectionSaturation                     real/_
         PaintCorrectionShadows2012                    real/_
         PaintCorrectionSharpness                      real/_
         PaintCorrectionTemperature                    real/_
      +  PaintCorrectionTexture                        real/_
         PaintCorrectionTint                           real/_
      -  PaintCorrectionHue                            real/_
      -  PaintCorrectionSaturation                     real/_
      +  PaintCorrectionToningHue                      real/_
      +  PaintCorrectionToningSaturation               real/_
      +  PaintCorrectionWhites2012                     real/_
         PaintCorrectionWhat                           string/_
         ParametricDarks                               integer/
         ParametricHighlights                          integer/
      @@ -1736,7 +2238,15 @@
         PostCropVignetteMidpoint                      integer/
         PostCropVignetteRoundness                     integer/
         PostCropVignetteStyle                         integer/
      +  PresetType                                    string/
         ProcessVersion                                string/
      +  RangeMask                                     RangeMask Struct
      +  RangeMaskMapInfo                              MapInfo Struct_
      +  RangeMaskMapInfoLabMax                        string/_
      +  RangeMaskMapInfoLabMin                        string/_
      +  RangeMaskMapInfoLumEq                         string/_+
      +  RangeMaskMapInfoRGBMax                        string/_
      +  RangeMaskMapInfoRGBMin                        string/_
         RawFileName                                   string/
         RedEyeInfo                                    string/+
         RedHue                                        integer/
      @@ -1749,17 +2259,85 @@
         RetouchAreaMaskBottom                         real/_
         RetouchAreaMaskCenterValue                    real/_
         RetouchAreaMaskCenterWeight                   real/_
      +  RetouchAreaMaskRange                          CorrRangeMask Struct_+
      +  RetouchAreaMaskRangeAreaModels                AreaModels Struct_+
      +  RetouchAreaMaskRangeAreaModelsComponents      string/_+
      +  RetouchAreaMaskRangeAreaModelsColorSampleInfo string/_+
      +  RetouchAreaMaskRangeColorAmount               real/_+
      +  RetouchAreaMaskRangeDepthFeather              real/_+
      +  RetouchAreaMaskRangeDepthMax                  real/_+
      +  RetouchAreaMaskRangeDepthMin                  real/_+
      +  RetouchAreaMaskRangeInvert                    boolean/_+
      +  RetouchAreaMaskRangeLumFeather                real/_+
      +  RetouchAreaMaskRangeLuminanceDepthSampleInfo  string/_+
      +  RetouchAreaMaskRangeLumMax                    real/_+
      +  RetouchAreaMaskRangeLumMin                    real/_+
      +  RetouchAreaMaskRangeLumRange                  string/_+
      +  RetouchAreaMaskRangeSampleType                integer/_+
      +  RetouchAreaMaskRangeType                      string/_+
      +  RetouchAreaMaskRangeVersion                   string/_+
         RetouchAreaMaskDabs                           string/_
         RetouchAreaMaskFeather                        real/_
         RetouchAreaMaskFlipped                        boolean/_
         RetouchAreaMaskFlow                           real/_
         RetouchAreaMaskFullX                          real/_
         RetouchAreaMaskFullY                          real/_
      +  RetouchAreaMaskInputDigest                    string/_
         RetouchAreaMaskLeft                           real/_
      +  RetouchAreaMaskMaskActive                     boolean/_
      +  RetouchAreaMaskMaskBlendMode                  integer/_
      +  RetouchAreaMaskMaskDigest                     string/_
      +  RetouchAreaMaskMaskInverted                   boolean/_
      +  RetouchAreaMaskMaskName                       string/_
      +  RetouchAreaMaskMasks                          CorrectionMask Struct_+
      +  RetouchAreaMaskMasksAlpha                     real/_
      +  RetouchAreaMaskMasksAngle                     real/_
      +  RetouchAreaMaskMasksBottom                    real/_
      +  RetouchAreaMaskMasksCenterValue               real/_
      +  RetouchAreaMaskMasksCenterWeight              real/_
      +  RetouchAreaMaskMasksDabs                      string/_+
      +  RetouchAreaMaskMasksFeather                   real/_
      +  RetouchAreaMaskMasksFlipped                   boolean/_
      +  RetouchAreaMaskMasksFlow                      real/_
      +  RetouchAreaMaskMasksFullX                     real/_
      +  RetouchAreaMaskMasksFullY                     real/_
      +  RetouchAreaMaskMasksInputDigest               string/_
      +  RetouchAreaMaskMasksLeft                      real/_
      +  RetouchAreaMaskMasksMaskActive                boolean/_
      +  RetouchAreaMaskMasksMaskBlendMode             integer/_
      +  RetouchAreaMaskMasksMaskDigest                string/_
      +  RetouchAreaMaskMasksMaskInverted              boolean/_
      +  RetouchAreaMaskMasksMaskName                  string/_
      +  RetouchAreaMaskMasksMaskSubType               string/_
      +  RetouchAreaMaskMasksMaskSyncID                string/_
      +  RetouchAreaMaskMasksValue                     real/_
      +  RetouchAreaMaskMasksMaskVersion               string/_
      +  RetouchAreaMaskMasksMidpoint                  real/_
      +  RetouchAreaMaskMasksOrigin                    string/_
      +  RetouchAreaMaskMasksPerimeterValue            real/_
      +  RetouchAreaMaskMasksRadius                    real/_
      +  RetouchAreaMaskMasksReferencePoint            string/_
      +  RetouchAreaMaskMasksRight                     real/_
      +  RetouchAreaMaskMasksRoundness                 real/_
      +  RetouchAreaMaskMasksSizeX                     real/_
      +  RetouchAreaMaskMasksSizeY                     real/_
      +  RetouchAreaMaskMasksTop                       real/_
      +  RetouchAreaMaskMaskSubType                    string/_
      +  RetouchAreaMaskMasksVersion                   integer/_
      +  RetouchAreaMaskMasksWhat                      string/_
      +  RetouchAreaMaskMasksWholeImageArea            string/_
      +  RetouchAreaMaskMasksX                         real/_
      +  RetouchAreaMaskMasksY                         real/_
      +  RetouchAreaMaskMaskSyncID                     string/_
      +  RetouchAreaMaskMasksZeroX                     real/_
      +  RetouchAreaMaskMasksZeroY                     real/_
         RetouchAreaMaskValue                          real/_
      +  RetouchAreaMaskMaskVersion                    string/_
         RetouchAreaMaskMidpoint                       real/_
      +  RetouchAreaMaskOrigin                         string/_
         RetouchAreaMaskPerimeterValue                 real/_
         RetouchAreaMaskRadius                         real/_
      +  RetouchAreaMaskReferencePoint                 string/_
         RetouchAreaMaskRight                          real/_
         RetouchAreaMaskRoundness                      real/_
         RetouchAreaMaskSizeX                          real/_
      @@ -1767,6 +2345,7 @@
         RetouchAreaMaskTop                            real/_
         RetouchAreaMaskVersion                        integer/_
         RetouchAreaMaskWhat                           string/_
      +  RetouchAreaMaskWholeImageArea                 string/_
         RetouchAreaMaskX                              real/_
         RetouchAreaMaskY                              real/_
         RetouchAreaMaskZeroX                          real/_
      @@ -1795,16 +2374,27 @@
         SharpenEdgeMasking                            integer/
         SharpenRadius                                 real/
         Sharpness                                     integer/
      +  ShortName                                     lang-alt/
         Smoothness                                    integer/
      +  SortName                                      lang-alt/
         SplitToningBalance                            integer/
         SplitToningHighlightHue                       integer/
         SplitToningHighlightSaturation                integer/
         SplitToningShadowHue                          integer/
         SplitToningShadowSaturation                   integer/
      +  SupportsAmount                                boolean/
      +  SupportsColor                                 boolean/
      +  SupportsHighDynamicRange                      boolean/
      +  SupportsMonochrome                            boolean/
      +  SupportsNormalDynamicRange                    boolean/
      +  SupportsOutputReferred                        boolean/
      +  SupportsSceneReferred                         boolean/
         ColorTemperature                              integer/
         Texture                                       integer/
         TIFFHandling                                  string/
         Tint                                          integer/
      +  ToggleStyleAmount                             integer/
      +  ToggleStyleDigest                             string/
         ToneCurve                                     string/+
         ToneCurveBlue                                 string/+
         ToneCurveGreen                                string/+
      @@ -1832,6 +2422,7 @@
         UprightTransform_5                            string/
         UprightTransformCount                         integer/
         UprightVersion                                integer/
      +  UUID                                          string/
         Version                                       string/
         Vibrance                                      integer/
         VignetteAmount                                integer/
      @@ -1847,24 +2438,33 @@
         CorrectionActive                              boolean
         CorrectionAmount                              real
         CorrectionMasks                               CorrectionMask Struct+
      +  CorrectionName                                string
      +  CorrRangeMask                                 CorrRangeMask Struct
      +                                                -
      +  CorrectionSyncID                              string
      +  LocalBlacks2012                               real
         LocalBrightness                               real
         LocalClarity                                  real
         LocalClarity2012                              real
         LocalContrast                                 real
         LocalContrast2012                             real
         LocalDefringe                                 real
      +  LocalDehaze                                   real
         LocalExposure                                 real
         LocalExposure2012                             real
         LocalHighlights2012                           real
      +  LocalHue                                      real
         LocalLuminanceNoise                           real
         LocalMoire                                    real
         LocalSaturation                               real
         LocalShadows2012                              real
         LocalSharpness                                real
         LocalTemperature                              real
      +  LocalTexture                                  real
         LocalTint                                     real
         LocalToningHue                                real
         LocalToningSaturation                         real
      +  LocalWhites2012                               real
         What                                          string
       
       =head3 XMP CorrectionMask Struct
      @@ -1876,17 +2476,31 @@
         Bottom                                        real
         CenterValue                                   real
         CenterWeight                                  real
      +  CorrRangeMask                                 CorrRangeMask Struct
      +                                                -
         Dabs                                          string+
         Feather                                       real
         Flipped                                       boolean
         Flow                                          real
         FullX                                         real
         FullY                                         real
      +  InputDigest                                   string
         Left                                          real
      +  MaskActive                                    boolean
      +  MaskBlendMode                                 integer
      +  MaskDigest                                    string
      +  MaskInverted                                  boolean
      +  MaskName                                      string
      +  MaskSubType                                   string
      +  MaskSyncID                                    string
         MaskValue                                     real
      +  MaskVersion                                   string
      +  Masks                                         CorrectionMask Struct
         Midpoint                                      real
      +  Origin                                        string
         PerimeterValue                                real
         Radius                                        real
      +  ReferencePoint                                string
         Right                                         real
         Roundness                                     real
         SizeX                                         real
      @@ -1894,16 +2508,93 @@
         Top                                           real
         Version                                       integer
         What                                          string
      +  WholeImageArea                                string
         X                                             real
         Y                                             real
         ZeroX                                         real
         ZeroY                                         real
       
      +=head3 XMP CorrRangeMask Struct
      +
      +Called CorrectionRangeMask by the spec.
      +
      +  Field Name                                    Writable
      +  ----------                                    --------
      +  AreaModels                                    AreaModels Struct+
      +  ColorAmount                                   real
      +  DepthFeather                                  real
      +  DepthMax                                      real
      +  DepthMin                                      real
      +  Invert                                        boolean
      +  LumFeather                                    real
      +  LumMax                                        real
      +  LumMin                                        real
      +  LumRange                                      string
      +  LuminanceDepthSampleInfo                      string
      +  SampleType                                    integer
      +  Type                                          string
      +  Version                                       string
      +
      +=head3 XMP AreaModels Struct
      +
      +  Field Name                                    Writable
      +  ----------                                    --------
      +  AreaComponents                                string+
      +  ColorRangeMaskAreaSampleInfo                  string
      +
       =head3 XMP Look Struct
       
         Field Name                                    Writable
         ----------                                    --------
      +  Amount                                        string
      +  Cluster                                       string
      +  Copyright                                     string
      +  Group                                         lang-alt
         Name                                          string
      +  Parameters                                    LookParms Struct
      +  SupportsAmount                                string
      +  SupportsMonochrome                            string
      +  SupportsOutputReferred                        string
      +  UUID                                          string
      +
      +=head3 XMP LookParms Struct
      +
      +  Field Name                                    Writable
      +  ----------                                    --------
      +  CameraProfile                                 string
      +  Clarity2012                                   string
      +  ConvertToGrayscale                            string
      +  LookTable                                     string
      +  ProcessVersion                                string
      +  ToneCurvePV2012                               string+
      +  ToneCurvePV2012Blue                           string+
      +  ToneCurvePV2012Green                          string+
      +  ToneCurvePV2012Red                            string+
      +  Version                                       string
      +
      +=head3 XMP RangeMask Struct
      +
      +This structure is actually called RangeMaskMapInfo, but it only contains one
      +element which is a RangeMaskMapInfo structure (Yes, really!).  So these are
      +renamed to RangeMask and MapInfo respectively to avoid confusion and
      +redundancy in the tag names.
      +
      +  Field Name                                    Writable
      +  ----------                                    --------
      +  RangeMaskMapInfo                              MapInfo Struct
      +
      +=head3 XMP MapInfo Struct
      +
      +Called RangeMaskMapInfo by the specification, the same as the containing
      +structure.
      +
      +  Field Name                                    Writable
      +  ----------                                    --------
      +  LabMax                                        string
      +  LabMin                                        string
      +  LumEq                                         string+
      +  RGBMax                                        string
      +  RGBMin                                        string
       
       =head3 XMP RetouchArea Struct
       
      @@ -1984,11 +2675,14 @@
         AutoLateralCA                                 integer
         AutoShadows                                   boolean
         AutoTone                                      boolean
      +  AutoToneDigest                                string
      +  AutoToneDigestNoSat                           string
         AutoWhiteVersion                              integer
         Blacks2012                                    integer
         BlueHue                                       integer
         BlueSaturation                                integer
         Brightness                                    integer
      +  CameraModelRestriction                        string
         CameraProfile                                 string
         CameraProfileDigest                           string
         ChromaticAberrationB                          integer
      @@ -2002,17 +2696,85 @@
         CircGradBasedCorrMaskBottom                   real_
         CircGradBasedCorrMaskCenterValue              real_
         CircGradBasedCorrMaskCenterWeight             real_
      +  CircGradBasedCorrMaskRange                    CorrRangeMask Struct_+
      +  CircGradBasedCorrMaskRangeAreaModels          AreaModels Struct_+
      +  CircGradBasedCorrMaskRangeAreaModelsComponents string_+
      +  CircGradBasedCorrMaskRangeAreaModelsColorSampleInfo string_+
      +  CircGradBasedCorrMaskRangeColorAmount         real_+
      +  CircGradBasedCorrMaskRangeDepthFeather        real_+
      +  CircGradBasedCorrMaskRangeDepthMax            real_+
      +  CircGradBasedCorrMaskRangeDepthMin            real_+
      +  CircGradBasedCorrMaskRangeInvert              boolean_+
      +  CircGradBasedCorrMaskRangeLumFeather          real_+
      +  CircGradBasedCorrMaskRangeLuminanceDepthSampleInfo string_+
      +  CircGradBasedCorrMaskRangeLumMax              real_+
      +  CircGradBasedCorrMaskRangeLumMin              real_+
      +  CircGradBasedCorrMaskRangeLumRange            string_+
      +  CircGradBasedCorrMaskRangeSampleType          integer_+
      +  CircGradBasedCorrMaskRangeType                string_+
      +  CircGradBasedCorrMaskRangeVersion             string_+
         CircGradBasedCorrMaskDabs                     string_
         CircGradBasedCorrMaskFeather                  real_
         CircGradBasedCorrMaskFlipped                  boolean_
         CircGradBasedCorrMaskFlow                     real_
         CircGradBasedCorrMaskFullX                    real_
         CircGradBasedCorrMaskFullY                    real_
      +  CircGradBasedCorrMaskInputDigest              string_
         CircGradBasedCorrMaskLeft                     real_
      +  CircGradBasedCorrMaskMaskActive               boolean_
      +  CircGradBasedCorrMaskMaskBlendMode            integer_
      +  CircGradBasedCorrMaskMaskDigest               string_
      +  CircGradBasedCorrMaskMaskInverted             boolean_
      +  CircGradBasedCorrMaskMaskName                 string_
      +  CircGradBasedCorrMaskMasks                    CorrectionMask Struct_+
      +  CircGradBasedCorrMaskMasksAlpha               real_
      +  CircGradBasedCorrMaskMasksAngle               real_
      +  CircGradBasedCorrMaskMasksBottom              real_
      +  CircGradBasedCorrMaskMasksCenterValue         real_
      +  CircGradBasedCorrMaskMasksCenterWeight        real_
      +  CircGradBasedCorrMaskMasksDabs                string_+
      +  CircGradBasedCorrMaskMasksFeather             real_
      +  CircGradBasedCorrMaskMasksFlipped             boolean_
      +  CircGradBasedCorrMaskMasksFlow                real_
      +  CircGradBasedCorrMaskMasksFullX               real_
      +  CircGradBasedCorrMaskMasksFullY               real_
      +  CircGradBasedCorrMaskMasksInputDigest         string_
      +  CircGradBasedCorrMaskMasksLeft                real_
      +  CircGradBasedCorrMaskMasksMaskActive          boolean_
      +  CircGradBasedCorrMaskMasksMaskBlendMode       integer_
      +  CircGradBasedCorrMaskMasksMaskDigest          string_
      +  CircGradBasedCorrMaskMasksMaskInverted        boolean_
      +  CircGradBasedCorrMaskMasksMaskName            string_
      +  CircGradBasedCorrMaskMasksMaskSubType         string_
      +  CircGradBasedCorrMaskMasksMaskSyncID          string_
      +  CircGradBasedCorrMaskMasksValue               real_
      +  CircGradBasedCorrMaskMasksMaskVersion         string_
      +  CircGradBasedCorrMaskMasksMidpoint            real_
      +  CircGradBasedCorrMaskMasksOrigin              string_
      +  CircGradBasedCorrMaskMasksPerimeterValue      real_
      +  CircGradBasedCorrMaskMasksRadius              real_
      +  CircGradBasedCorrMaskMasksReferencePoint      string_
      +  CircGradBasedCorrMaskMasksRight               real_
      +  CircGradBasedCorrMaskMasksRoundness           real_
      +  CircGradBasedCorrMaskMasksSizeX               real_
      +  CircGradBasedCorrMaskMasksSizeY               real_
      +  CircGradBasedCorrMaskMasksTop                 real_
      +  CircGradBasedCorrMaskMaskSubType              string_
      +  CircGradBasedCorrMaskMasksVersion             integer_
      +  CircGradBasedCorrMaskMasksWhat                string_
      +  CircGradBasedCorrMaskMasksWholeImageArea      string_
      +  CircGradBasedCorrMaskMasksX                   real_
      +  CircGradBasedCorrMaskMasksY                   real_
      +  CircGradBasedCorrMaskMaskSyncID               string_
      +  CircGradBasedCorrMaskMasksZeroX               real_
      +  CircGradBasedCorrMaskMasksZeroY               real_
         CircGradBasedCorrMaskValue                    real_
      +  CircGradBasedCorrMaskMaskVersion              string_
         CircGradBasedCorrMaskMidpoint                 real_
      +  CircGradBasedCorrMaskOrigin                   string_
         CircGradBasedCorrMaskPerimeterValue           real_
         CircGradBasedCorrMaskRadius                   real_
      +  CircGradBasedCorrMaskReferencePoint           string_
         CircGradBasedCorrMaskRight                    real_
         CircGradBasedCorrMaskRoundness                real_
         CircGradBasedCorrMaskSizeX                    real_
      @@ -2020,38 +2782,78 @@
         CircGradBasedCorrMaskTop                      real_
         CircGradBasedCorrMaskVersion                  integer_
         CircGradBasedCorrMaskWhat                     string_
      +  CircGradBasedCorrMaskWholeImageArea           string_
         CircGradBasedCorrMaskX                        real_
         CircGradBasedCorrMaskY                        real_
         CircGradBasedCorrMaskZeroX                    real_
         CircGradBasedCorrMaskZeroY                    real_
      +  CircGradBasedCorrCorrectionName               string_+
      +  CircGradBasedCorrRangeMask                    CorrRangeMask Struct_+
      +  CircGradBasedCorrRangeMaskAreaModels          AreaModels Struct_+
      +  CircGradBasedCorrRangeMaskAreaModelsComponents string_+
      +  CircGradBasedCorrRangeMaskAreaModelsColorSampleInfo string_+
      +  CircGradBasedCorrRangeMaskColorAmount         real_+
      +  CircGradBasedCorrRangeMaskDepthFeather        real_+
      +  CircGradBasedCorrRangeMaskDepthMax            real_+
      +  CircGradBasedCorrRangeMaskDepthMin            real_+
      +  CircGradBasedCorrRangeMaskInvert              boolean_+
      +  CircGradBasedCorrRangeMaskLumFeather          real_+
      +  CircGradBasedCorrRangeMaskLuminanceDepthSampleInfo string_+
      +  CircGradBasedCorrRangeMaskLumMax              real_+
      +  CircGradBasedCorrRangeMaskLumMin              real_+
      +  CircGradBasedCorrRangeMaskLumRange            string_+
      +  CircGradBasedCorrRangeMaskSampleType          integer_+
      +  CircGradBasedCorrRangeMaskType                string_+
      +  CircGradBasedCorrRangeMaskVersion             string_+
      +  CircGradBasedCorrCorrectionSyncID             string_+
      +  CircGradBasedCorrBlacks2012                   real_
         CircGradBasedCorrBrightness                   real_
         CircGradBasedCorrClarity                      real_
         CircGradBasedCorrClarity2012                  real_
         CircGradBasedCorrContrast                     real_
         CircGradBasedCorrContrast2012                 real_
         CircGradBasedCorrDefringe                     real_
      +  CircGradBasedCorrDehaze                       real_
         CircGradBasedCorrExposure                     real_
         CircGradBasedCorrExposure2012                 real_
         CircGradBasedCorrHighlights2012               real_
      +  CircGradBasedCorrHue                          real_
         CircGradBasedCorrLuminanceNoise               real_
         CircGradBasedCorrMoire                        real_
         CircGradBasedCorrSaturation                   real_
         CircGradBasedCorrShadows2012                  real_
         CircGradBasedCorrSharpness                    real_
         CircGradBasedCorrTemperature                  real_
      +  CircGradBasedCorrTexture                      real_
         CircGradBasedCorrTint                         real_
      -  CircGradBasedCorrHue                          real_
      -  CircGradBasedCorrSaturation                   real_
      +  CircGradBasedCorrToningHue                    real_
      +  CircGradBasedCorrToningSaturation             real_
      +  CircGradBasedCorrWhites2012                   real_
         CircGradBasedCorrWhat                         string_
         Clarity                                       integer
         Clarity2012                                   integer
      +  ClipboardAspectRatio                          integer
      +  ClipboardOrientation                          integer
      +  Cluster                                       string
      +  ColorGradeBlending                            integer
      +  ColorGradeGlobalHue                           integer
      +  ColorGradeGlobalLum                           integer
      +  ColorGradeGlobalSat                           integer
      +  ColorGradeHighlightLum                        integer
      +  ColorGradeMidtoneHue                          integer
      +  ColorGradeMidtoneLum                          integer
      +  ColorGradeMidtoneSat                          integer
      +  ColorGradeShadowLum                           integer
         ColorNoiseReduction                           integer
         ColorNoiseReductionDetail                     integer
         ColorNoiseReductionSmoothness                 integer
      +  CompatibleVersion                             string
      +  ContactInfo                                   string
         Contrast                                      integer/
         Contrast2012                                  integer
         Converter                                     string
         ConvertToGrayscale                            boolean
      +  Copyright                                     string/
         CropAngle                                     real
         CropBottom                                    real
         CropConstrainToWarp                           integer
      @@ -2074,6 +2876,7 @@
         DefringePurpleHueHi                           integer
         DefringePurpleHueLo                           integer
         Dehaze                                        real
      +  Description                                   lang-alt/
         DNGIgnoreSidecars                             boolean
         Exposure                                      real
         Exposure2012                                  real
      @@ -2087,17 +2890,85 @@
         GradientBasedCorrMaskBottom                   real_
         GradientBasedCorrMaskCenterValue              real_
         GradientBasedCorrMaskCenterWeight             real_
      +  GradientBasedCorrMaskRange                    CorrRangeMask Struct_+
      +  GradientBasedCorrMaskRangeAreaModels          AreaModels Struct_+
      +  GradientBasedCorrMaskRangeAreaModelsComponents string_+
      +  GradientBasedCorrMaskRangeAreaModelsColorSampleInfo string_+
      +  GradientBasedCorrMaskRangeColorAmount         real_+
      +  GradientBasedCorrMaskRangeDepthFeather        real_+
      +  GradientBasedCorrMaskRangeDepthMax            real_+
      +  GradientBasedCorrMaskRangeDepthMin            real_+
      +  GradientBasedCorrMaskRangeInvert              boolean_+
      +  GradientBasedCorrMaskRangeLumFeather          real_+
      +  GradientBasedCorrMaskRangeLuminanceDepthSampleInfo string_+
      +  GradientBasedCorrMaskRangeLumMax              real_+
      +  GradientBasedCorrMaskRangeLumMin              real_+
      +  GradientBasedCorrMaskRangeLumRange            string_+
      +  GradientBasedCorrMaskRangeSampleType          integer_+
      +  GradientBasedCorrMaskRangeType                string_+
      +  GradientBasedCorrMaskRangeVersion             string_+
         GradientBasedCorrMaskDabs                     string_
         GradientBasedCorrMaskFeather                  real_
         GradientBasedCorrMaskFlipped                  boolean_
         GradientBasedCorrMaskFlow                     real_
         GradientBasedCorrMaskFullX                    real_
         GradientBasedCorrMaskFullY                    real_
      +  GradientBasedCorrMaskInputDigest              string_
         GradientBasedCorrMaskLeft                     real_
      +  GradientBasedCorrMaskMaskActive               boolean_
      +  GradientBasedCorrMaskMaskBlendMode            integer_
      +  GradientBasedCorrMaskMaskDigest               string_
      +  GradientBasedCorrMaskMaskInverted             boolean_
      +  GradientBasedCorrMaskMaskName                 string_
      +  GradientBasedCorrMaskMasks                    CorrectionMask Struct_+
      +  GradientBasedCorrMaskMasksAlpha               real_
      +  GradientBasedCorrMaskMasksAngle               real_
      +  GradientBasedCorrMaskMasksBottom              real_
      +  GradientBasedCorrMaskMasksCenterValue         real_
      +  GradientBasedCorrMaskMasksCenterWeight        real_
      +  GradientBasedCorrMaskMasksDabs                string_+
      +  GradientBasedCorrMaskMasksFeather             real_
      +  GradientBasedCorrMaskMasksFlipped             boolean_
      +  GradientBasedCorrMaskMasksFlow                real_
      +  GradientBasedCorrMaskMasksFullX               real_
      +  GradientBasedCorrMaskMasksFullY               real_
      +  GradientBasedCorrMaskMasksInputDigest         string_
      +  GradientBasedCorrMaskMasksLeft                real_
      +  GradientBasedCorrMaskMasksMaskActive          boolean_
      +  GradientBasedCorrMaskMasksMaskBlendMode       integer_
      +  GradientBasedCorrMaskMasksMaskDigest          string_
      +  GradientBasedCorrMaskMasksMaskInverted        boolean_
      +  GradientBasedCorrMaskMasksMaskName            string_
      +  GradientBasedCorrMaskMasksMaskSubType         string_
      +  GradientBasedCorrMaskMasksMaskSyncID          string_
      +  GradientBasedCorrMaskMasksValue               real_
      +  GradientBasedCorrMaskMasksMaskVersion         string_
      +  GradientBasedCorrMaskMasksMidpoint            real_
      +  GradientBasedCorrMaskMasksOrigin              string_
      +  GradientBasedCorrMaskMasksPerimeterValue      real_
      +  GradientBasedCorrMaskMasksRadius              real_
      +  GradientBasedCorrMaskMasksReferencePoint      string_
      +  GradientBasedCorrMaskMasksRight               real_
      +  GradientBasedCorrMaskMasksRoundness           real_
      +  GradientBasedCorrMaskMasksSizeX               real_
      +  GradientBasedCorrMaskMasksSizeY               real_
      +  GradientBasedCorrMaskMasksTop                 real_
      +  GradientBasedCorrMaskMaskSubType              string_
      +  GradientBasedCorrMaskMasksVersion             integer_
      +  GradientBasedCorrMaskMasksWhat                string_
      +  GradientBasedCorrMaskMasksWholeImageArea      string_
      +  GradientBasedCorrMaskMasksX                   real_
      +  GradientBasedCorrMaskMasksY                   real_
      +  GradientBasedCorrMaskMaskSyncID               string_
      +  GradientBasedCorrMaskMasksZeroX               real_
      +  GradientBasedCorrMaskMasksZeroY               real_
         GradientBasedCorrMaskValue                    real_
      +  GradientBasedCorrMaskMaskVersion              string_
         GradientBasedCorrMaskMidpoint                 real_
      +  GradientBasedCorrMaskOrigin                   string_
         GradientBasedCorrMaskPerimeterValue           real_
         GradientBasedCorrMaskRadius                   real_
      +  GradientBasedCorrMaskReferencePoint           string_
         GradientBasedCorrMaskRight                    real_
         GradientBasedCorrMaskRoundness                real_
         GradientBasedCorrMaskSizeX                    real_
      @@ -2105,31 +2976,57 @@
         GradientBasedCorrMaskTop                      real_
         GradientBasedCorrMaskVersion                  integer_
         GradientBasedCorrMaskWhat                     string_
      +  GradientBasedCorrMaskWholeImageArea           string_
         GradientBasedCorrMaskX                        real_
         GradientBasedCorrMaskY                        real_
         GradientBasedCorrMaskZeroX                    real_
         GradientBasedCorrMaskZeroY                    real_
      +  GradientBasedCorrCorrectionName               string_+
      +  GradientBasedCorrRangeMask                    CorrRangeMask Struct_+
      +  GradientBasedCorrRangeMaskAreaModels          AreaModels Struct_+
      +  GradientBasedCorrRangeMaskAreaModelsComponents string_+
      +  GradientBasedCorrRangeMaskAreaModelsColorSampleInfo string_+
      +  GradientBasedCorrRangeMaskColorAmount         real_+
      +  GradientBasedCorrRangeMaskDepthFeather        real_+
      +  GradientBasedCorrRangeMaskDepthMax            real_+
      +  GradientBasedCorrRangeMaskDepthMin            real_+
      +  GradientBasedCorrRangeMaskInvert              boolean_+
      +  GradientBasedCorrRangeMaskLumFeather          real_+
      +  GradientBasedCorrRangeMaskLuminanceDepthSampleInfo string_+
      +  GradientBasedCorrRangeMaskLumMax              real_+
      +  GradientBasedCorrRangeMaskLumMin              real_+
      +  GradientBasedCorrRangeMaskLumRange            string_+
      +  GradientBasedCorrRangeMaskSampleType          integer_+
      +  GradientBasedCorrRangeMaskType                string_+
      +  GradientBasedCorrRangeMaskVersion             string_+
      +  GradientBasedCorrCorrectionSyncID             string_+
      +  GradientBasedCorrBlacks2012                   real_
         GradientBasedCorrBrightness                   real_
         GradientBasedCorrClarity                      real_
         GradientBasedCorrClarity2012                  real_
         GradientBasedCorrContrast                     real_
         GradientBasedCorrContrast2012                 real_
         GradientBasedCorrDefringe                     real_
      +  GradientBasedCorrDehaze                       real_
         GradientBasedCorrExposure                     real_
         GradientBasedCorrExposure2012                 real_
         GradientBasedCorrHighlights2012               real_
      +  GradientBasedCorrHue                          real_
         GradientBasedCorrLuminanceNoise               real_
         GradientBasedCorrMoire                        real_
         GradientBasedCorrSaturation                   real_
         GradientBasedCorrShadows2012                  real_
         GradientBasedCorrSharpness                    real_
         GradientBasedCorrTemperature                  real_
      +  GradientBasedCorrTexture                      real_
         GradientBasedCorrTint                         real_
      -  GradientBasedCorrHue                          real_
      -  GradientBasedCorrSaturation                   real_
      +  GradientBasedCorrToningHue                    real_
      +  GradientBasedCorrToningSaturation             real_
      +  GradientBasedCorrWhites2012                   real_
         GradientBasedCorrWhat                         string_
         GrainAmount                                   integer
         GrainFrequency                                integer
      +  GrainSeed                                     integer
         GrainSize                                     integer
         GrayMixerAqua                                 integer
         GrayMixerBlue                                 integer
      @@ -2141,6 +3038,7 @@
         GrayMixerYellow                               integer
         GreenHue                                      integer
         GreenSaturation                               integer
      +  Group                                         lang-alt/
         HasCrop                                       boolean
         HasSettings                                   boolean
         Highlight2012                                 integer
      @@ -2163,6 +3061,7 @@
         LensProfileDistortionScale                    integer
         LensProfileEnable                             integer
         LensProfileFilename                           string
      +  LensProfileIsEmbedded                         boolean
         LensProfileMatchKeyCameraModelName            string
         LensProfileMatchKeyExifMake                   string
         LensProfileMatchKeyExifModel                  string
      @@ -2175,7 +3074,26 @@
         LensProfileSetup                              string
         LensProfileVignettingScale                    integer
         Look                                          Look Struct
      -  LookName                                      string_
      +  LookAmount                                    string_
      +  LookCluster                                   string_
      +  LookCopyright                                 string_
      +  LookGroup                                     lang-alt_
      +  LookName                                      string
      +  LookParameters                                LookParms Struct_
      +  LookParametersCameraProfile                   string_
      +  LookParametersClarity2012                     string_
      +  LookParametersConvertToGrayscale              string_
      +  LookParametersLookTable                       string_
      +  LookParametersProcessVersion                  string_
      +  LookParametersToneCurvePV2012                 string_+
      +  LookParametersToneCurvePV2012Blue             string_+
      +  LookParametersToneCurvePV2012Green            string_+
      +  LookParametersToneCurvePV2012Red              string_+
      +  LookParametersVersion                         string_
      +  LookSupportsAmount                            string_
      +  LookSupportsMonochrome                        string_
      +  LookSupportsOutputReferred                    string_
      +  LookUUID                                      string_
         LuminanceAdjustmentAqua                       integer
         LuminanceAdjustmentBlue                       integer
         LuminanceAdjustmentGreen                      integer
      @@ -2187,7 +3105,151 @@
         LuminanceNoiseReductionContrast               integer
         LuminanceNoiseReductionDetail                 integer
         LuminanceSmoothing                            integer
      +  MaskGroupBasedCorrections                     Correction Struct+
      +  MaskGroupBasedCorrActive                      boolean_
      +  MaskGroupBasedCorrAmount                      real_
      +  MaskGroupBasedCorrMask                        CorrectionMask Struct_+
      +  MaskGroupBasedCorrMaskAlpha                   real_
      +  MaskGroupBasedCorrMaskAngle                   real_
      +  MaskGroupBasedCorrMaskBottom                  real_
      +  MaskGroupBasedCorrMaskCenterValue             real_
      +  MaskGroupBasedCorrMaskCenterWeight            real_
      +  MaskGroupBasedCorrMaskRange                   CorrRangeMask Struct_+
      +  MaskGroupBasedCorrMaskRangeAreaModels         AreaModels Struct_+
      +  MaskGroupBasedCorrMaskRangeAreaModelsComponents string_+
      +  MaskGroupBasedCorrMaskRangeAreaModelsColorSampleInfo string_+
      +  MaskGroupBasedCorrMaskRangeColorAmount        real_+
      +  MaskGroupBasedCorrMaskRangeDepthFeather       real_+
      +  MaskGroupBasedCorrMaskRangeDepthMax           real_+
      +  MaskGroupBasedCorrMaskRangeDepthMin           real_+
      +  MaskGroupBasedCorrMaskRangeInvert             boolean_+
      +  MaskGroupBasedCorrMaskRangeLumFeather         real_+
      +  MaskGroupBasedCorrMaskRangeLuminanceDepthSampleInfo string_+
      +  MaskGroupBasedCorrMaskRangeLumMax             real_+
      +  MaskGroupBasedCorrMaskRangeLumMin             real_+
      +  MaskGroupBasedCorrMaskRangeLumRange           string_+
      +  MaskGroupBasedCorrMaskRangeSampleType         integer_+
      +  MaskGroupBasedCorrMaskRangeType               string_+
      +  MaskGroupBasedCorrMaskRangeVersion            string_+
      +  MaskGroupBasedCorrMaskDabs                    string_+
      +  MaskGroupBasedCorrMaskFeather                 real_
      +  MaskGroupBasedCorrMaskFlipped                 boolean_
      +  MaskGroupBasedCorrMaskFlow                    real_
      +  MaskGroupBasedCorrMaskFullX                   real_
      +  MaskGroupBasedCorrMaskFullY                   real_
      +  MaskGroupBasedCorrMaskInputDigest             string_
      +  MaskGroupBasedCorrMaskLeft                    real_
      +  MaskGroupBasedCorrMaskMaskActive              boolean_
      +  MaskGroupBasedCorrMaskMaskBlendMode           integer_
      +  MaskGroupBasedCorrMaskMaskDigest              string_
      +  MaskGroupBasedCorrMaskMaskInverted            boolean_
      +  MaskGroupBasedCorrMaskMaskName                string_
      +  MaskGroupBasedCorrMaskMasks                   CorrectionMask Struct_+
      +  MaskGroupBasedCorrMaskMasksAlpha              real_
      +  MaskGroupBasedCorrMaskMasksAngle              real_
      +  MaskGroupBasedCorrMaskMasksBottom             real_
      +  MaskGroupBasedCorrMaskMasksCenterValue        real_
      +  MaskGroupBasedCorrMaskMasksCenterWeight       real_
      +  MaskGroupBasedCorrMaskMasksDabs               string_+
      +  MaskGroupBasedCorrMaskMasksFeather            real_
      +  MaskGroupBasedCorrMaskMasksFlipped            boolean_
      +  MaskGroupBasedCorrMaskMasksFlow               real_
      +  MaskGroupBasedCorrMaskMasksFullX              real_
      +  MaskGroupBasedCorrMaskMasksFullY              real_
      +  MaskGroupBasedCorrMaskMasksInputDigest        string_
      +  MaskGroupBasedCorrMaskMasksLeft               real_
      +  MaskGroupBasedCorrMaskMasksMaskActive         boolean_
      +  MaskGroupBasedCorrMaskMasksMaskBlendMode      integer_
      +  MaskGroupBasedCorrMaskMasksMaskDigest         string_
      +  MaskGroupBasedCorrMaskMasksMaskInverted       boolean_
      +  MaskGroupBasedCorrMaskMasksMaskName           string_
      +  MaskGroupBasedCorrMaskMasksMaskSubType        string_
      +  MaskGroupBasedCorrMaskMasksMaskSyncID         string_
      +  MaskGroupBasedCorrMaskMasksValue              real_
      +  MaskGroupBasedCorrMaskMasksMaskVersion        string_
      +  MaskGroupBasedCorrMaskMasksMidpoint           real_
      +  MaskGroupBasedCorrMaskMasksOrigin             string_
      +  MaskGroupBasedCorrMaskMasksPerimeterValue     real_
      +  MaskGroupBasedCorrMaskMasksRadius             real_
      +  MaskGroupBasedCorrMaskMasksReferencePoint     string_
      +  MaskGroupBasedCorrMaskMasksRight              real_
      +  MaskGroupBasedCorrMaskMasksRoundness          real_
      +  MaskGroupBasedCorrMaskMasksSizeX              real_
      +  MaskGroupBasedCorrMaskMasksSizeY              real_
      +  MaskGroupBasedCorrMaskMasksTop                real_
      +  MaskGroupBasedCorrMaskMaskSubType             string_
      +  MaskGroupBasedCorrMaskMasksVersion            integer_
      +  MaskGroupBasedCorrMaskMasksWhat               string_
      +  MaskGroupBasedCorrMaskMasksWholeImageArea     string_
      +  MaskGroupBasedCorrMaskMasksX                  real_
      +  MaskGroupBasedCorrMaskMasksY                  real_
      +  MaskGroupBasedCorrMaskMaskSyncID              string_
      +  MaskGroupBasedCorrMaskMasksZeroX              real_
      +  MaskGroupBasedCorrMaskMasksZeroY              real_
      +  MaskGroupBasedCorrMaskValue                   real_
      +  MaskGroupBasedCorrMaskMaskVersion             string_
      +  MaskGroupBasedCorrMaskMidpoint                real_
      +  MaskGroupBasedCorrMaskOrigin                  string_
      +  MaskGroupBasedCorrMaskPerimeterValue          real_
      +  MaskGroupBasedCorrMaskRadius                  real_
      +  MaskGroupBasedCorrMaskReferencePoint          string_
      +  MaskGroupBasedCorrMaskRight                   real_
      +  MaskGroupBasedCorrMaskRoundness               real_
      +  MaskGroupBasedCorrMaskSizeX                   real_
      +  MaskGroupBasedCorrMaskSizeY                   real_
      +  MaskGroupBasedCorrMaskTop                     real_
      +  MaskGroupBasedCorrMaskVersion                 integer_
      +  MaskGroupBasedCorrMaskWhat                    string_
      +  MaskGroupBasedCorrMaskWholeImageArea          string_
      +  MaskGroupBasedCorrMaskX                       real_
      +  MaskGroupBasedCorrMaskY                       real_
      +  MaskGroupBasedCorrMaskZeroX                   real_
      +  MaskGroupBasedCorrMaskZeroY                   real_
      +  MaskGroupBasedCorrCorrectionName              string_+
      +  MaskGroupBasedCorrRangeMask                   CorrRangeMask Struct_+
      +  MaskGroupBasedCorrRangeMaskAreaModels         AreaModels Struct_+
      +  MaskGroupBasedCorrRangeMaskAreaModelsComponents string_+
      +  MaskGroupBasedCorrRangeMaskAreaModelsColorSampleInfo string_+
      +  MaskGroupBasedCorrRangeMaskColorAmount        real_+
      +  MaskGroupBasedCorrRangeMaskDepthFeather       real_+
      +  MaskGroupBasedCorrRangeMaskDepthMax           real_+
      +  MaskGroupBasedCorrRangeMaskDepthMin           real_+
      +  MaskGroupBasedCorrRangeMaskInvert             boolean_+
      +  MaskGroupBasedCorrRangeMaskLumFeather         real_+
      +  MaskGroupBasedCorrRangeMaskLuminanceDepthSampleInfo string_+
      +  MaskGroupBasedCorrRangeMaskLumMax             real_+
      +  MaskGroupBasedCorrRangeMaskLumMin             real_+
      +  MaskGroupBasedCorrRangeMaskLumRange           string_+
      +  MaskGroupBasedCorrRangeMaskSampleType         integer_+
      +  MaskGroupBasedCorrRangeMaskType               string_+
      +  MaskGroupBasedCorrRangeMaskVersion            string_+
      +  MaskGroupBasedCorrCorrectionSyncID            string_+
      +  MaskGroupBasedCorrBlacks2012                  real_
      +  MaskGroupBasedCorrBrightness                  real_
      +  MaskGroupBasedCorrClarity                     real_
      +  MaskGroupBasedCorrClarity2012                 real_
      +  MaskGroupBasedCorrContrast                    real_
      +  MaskGroupBasedCorrContrast2012                real_
      +  MaskGroupBasedCorrDefringe                    real_
      +  MaskGroupBasedCorrDehaze                      real_
      +  MaskGroupBasedCorrExposure                    real_
      +  MaskGroupBasedCorrExposure2012                real_
      +  MaskGroupBasedCorrHighlights2012              real_
      +  MaskGroupBasedCorrHue                         real_
      +  MaskGroupBasedCorrLuminanceNoise              real_
      +  MaskGroupBasedCorrMoire                       real_
      +  MaskGroupBasedCorrSaturation                  real_
      +  MaskGroupBasedCorrShadows2012                 real_
      +  MaskGroupBasedCorrSharpness                   real_
      +  MaskGroupBasedCorrTemperature                 real_
      +  MaskGroupBasedCorrTexture                     real_
      +  MaskGroupBasedCorrTint                        real_
      +  MaskGroupBasedCorrToningHue                   real_
      +  MaskGroupBasedCorrToningSaturation            real_
      +  MaskGroupBasedCorrWhites2012                  real_
      +  MaskGroupBasedCorrWhat                        string_
         MoireFilter                                   string
      +  Name                                          lang-alt/
         NegativeCacheLargePreviewSize                 integer
         NegativeCacheMaximumSize                      real
         NegativeCachePath                             string
      @@ -2201,17 +3263,85 @@
         PaintCorrectionMaskBottom                     real_
         PaintCorrectionMaskCenterValue                real_
         PaintCorrectionMaskCenterWeight               real_
      +  PaintCorrectionMaskRange                      CorrRangeMask Struct_+
      +  PaintCorrectionMaskRangeAreaModels            AreaModels Struct_+
      +  PaintCorrectionMaskRangeAreaModelsComponents  string_+
      +  PaintCorrectionMaskRangeAreaModelsColorSampleInfo string_+
      +  PaintCorrectionMaskRangeColorAmount           real_+
      +  PaintCorrectionMaskRangeDepthFeather          real_+
      +  PaintCorrectionMaskRangeDepthMax              real_+
      +  PaintCorrectionMaskRangeDepthMin              real_+
      +  PaintCorrectionMaskRangeInvert                boolean_+
      +  PaintCorrectionMaskRangeLumFeather            real_+
      +  PaintCorrectionMaskRangeLuminanceDepthSampleInfo string_+
      +  PaintCorrectionMaskRangeLumMax                real_+
      +  PaintCorrectionMaskRangeLumMin                real_+
      +  PaintCorrectionMaskRangeLumRange              string_+
      +  PaintCorrectionMaskRangeSampleType            integer_+
      +  PaintCorrectionMaskRangeType                  string_+
      +  PaintCorrectionMaskRangeVersion               string_+
         PaintCorrectionMaskDabs                       string_
         PaintCorrectionMaskFeather                    real_
         PaintCorrectionMaskFlipped                    boolean_
         PaintCorrectionMaskFlow                       real_
         PaintCorrectionMaskFullX                      real_
         PaintCorrectionMaskFullY                      real_
      +  PaintCorrectionMaskInputDigest                string_
         PaintCorrectionMaskLeft                       real_
      +  PaintCorrectionMaskMaskActive                 boolean_
      +  PaintCorrectionMaskMaskBlendMode              integer_
      +  PaintCorrectionMaskMaskDigest                 string_
      +  PaintCorrectionMaskMaskInverted               boolean_
      +  PaintCorrectionMaskMaskName                   string_
      +  PaintCorrectionMaskMasks                      CorrectionMask Struct_+
      +  PaintCorrectionMaskMasksAlpha                 real_
      +  PaintCorrectionMaskMasksAngle                 real_
      +  PaintCorrectionMaskMasksBottom                real_
      +  PaintCorrectionMaskMasksCenterValue           real_
      +  PaintCorrectionMaskMasksCenterWeight          real_
      +  PaintCorrectionMaskMasksDabs                  string_+
      +  PaintCorrectionMaskMasksFeather               real_
      +  PaintCorrectionMaskMasksFlipped               boolean_
      +  PaintCorrectionMaskMasksFlow                  real_
      +  PaintCorrectionMaskMasksFullX                 real_
      +  PaintCorrectionMaskMasksFullY                 real_
      +  PaintCorrectionMaskMasksInputDigest           string_
      +  PaintCorrectionMaskMasksLeft                  real_
      +  PaintCorrectionMaskMasksMaskActive            boolean_
      +  PaintCorrectionMaskMasksMaskBlendMode         integer_
      +  PaintCorrectionMaskMasksMaskDigest            string_
      +  PaintCorrectionMaskMasksMaskInverted          boolean_
      +  PaintCorrectionMaskMasksMaskName              string_
      +  PaintCorrectionMaskMasksMaskSubType           string_
      +  PaintCorrectionMaskMasksMaskSyncID            string_
      +  PaintCorrectionMaskMasksValue                 real_
      +  PaintCorrectionMaskMasksMaskVersion           string_
      +  PaintCorrectionMaskMasksMidpoint              real_
      +  PaintCorrectionMaskMasksOrigin                string_
      +  PaintCorrectionMaskMasksPerimeterValue        real_
      +  PaintCorrectionMaskMasksRadius                real_
      +  PaintCorrectionMaskMasksReferencePoint        string_
      +  PaintCorrectionMaskMasksRight                 real_
      +  PaintCorrectionMaskMasksRoundness             real_
      +  PaintCorrectionMaskMasksSizeX                 real_
      +  PaintCorrectionMaskMasksSizeY                 real_
      +  PaintCorrectionMaskMasksTop                   real_
      +  PaintCorrectionMaskMaskSubType                string_
      +  PaintCorrectionMaskMasksVersion               integer_
      +  PaintCorrectionMaskMasksWhat                  string_
      +  PaintCorrectionMaskMasksWholeImageArea        string_
      +  PaintCorrectionMaskMasksX                     real_
      +  PaintCorrectionMaskMasksY                     real_
      +  PaintCorrectionMaskMaskSyncID                 string_
      +  PaintCorrectionMaskMasksZeroX                 real_
      +  PaintCorrectionMaskMasksZeroY                 real_
         PaintCorrectionMaskValue                      real_
      +  PaintCorrectionMaskMaskVersion                string_
         PaintCorrectionMaskMidpoint                   real_
      +  PaintCorrectionMaskOrigin                     string_
         PaintCorrectionMaskPerimeterValue             real_
         PaintCorrectionMaskRadius                     real_
      +  PaintCorrectionMaskReferencePoint             string_
         PaintCorrectionMaskRight                      real_
         PaintCorrectionMaskRoundness                  real_
         PaintCorrectionMaskSizeX                      real_
      @@ -2219,28 +3349,53 @@
         PaintCorrectionMaskTop                        real_
         PaintCorrectionMaskVersion                    integer_
         PaintCorrectionMaskWhat                       string_
      +  PaintCorrectionMaskWholeImageArea             string_
         PaintCorrectionMaskX                          real_
         PaintCorrectionMaskY                          real_
         PaintCorrectionMaskZeroX                      real_
         PaintCorrectionMaskZeroY                      real_
      +  PaintCorrectionCorrectionName                 string_+
      +  PaintCorrectionRangeMask                      CorrRangeMask Struct_+
      +  PaintCorrectionRangeMaskAreaModels            AreaModels Struct_+
      +  PaintCorrectionRangeMaskAreaModelsComponents  string_+
      +  PaintCorrectionRangeMaskAreaModelsColorSampleInfo string_+
      +  PaintCorrectionRangeMaskColorAmount           real_+
      +  PaintCorrectionRangeMaskDepthFeather          real_+
      +  PaintCorrectionRangeMaskDepthMax              real_+
      +  PaintCorrectionRangeMaskDepthMin              real_+
      +  PaintCorrectionRangeMaskInvert                boolean_+
      +  PaintCorrectionRangeMaskLumFeather            real_+
      +  PaintCorrectionRangeMaskLuminanceDepthSampleInfo string_+
      +  PaintCorrectionRangeMaskLumMax                real_+
      +  PaintCorrectionRangeMaskLumMin                real_+
      +  PaintCorrectionRangeMaskLumRange              string_+
      +  PaintCorrectionRangeMaskSampleType            integer_+
      +  PaintCorrectionRangeMaskType                  string_+
      +  PaintCorrectionRangeMaskVersion               string_+
      +  PaintCorrectionCorrectionSyncID               string_+
      +  PaintCorrectionBlacks2012                     real_
         PaintCorrectionBrightness                     real_
         PaintCorrectionClarity                        real_
         PaintCorrectionClarity2012                    real_
         PaintCorrectionContrast                       real_
         PaintCorrectionContrast2012                   real_
         PaintCorrectionDefringe                       real_
      +  PaintCorrectionDehaze                         real_
         PaintCorrectionExposure                       real_
         PaintCorrectionExposure2012                   real_
         PaintCorrectionHighlights2012                 real_
      +  PaintCorrectionHue                            real_
         PaintCorrectionLuminanceNoise                 real_
         PaintCorrectionMoire                          real_
         PaintCorrectionSaturation                     real_
         PaintCorrectionShadows2012                    real_
         PaintCorrectionSharpness                      real_
         PaintCorrectionTemperature                    real_
      +  PaintCorrectionTexture                        real_
         PaintCorrectionTint                           real_
      -  PaintCorrectionHue                            real_
      -  PaintCorrectionSaturation                     real_
      +  PaintCorrectionToningHue                      real_
      +  PaintCorrectionToningSaturation               real_
      +  PaintCorrectionWhites2012                     real_
         PaintCorrectionWhat                           string_
         ParametricDarks                               integer
         ParametricHighlights                          integer
      @@ -2263,7 +3418,15 @@
         PostCropVignetteMidpoint                      integer
         PostCropVignetteRoundness                     integer
         PostCropVignetteStyle                         integer
      +  PresetType                                    string
         ProcessVersion                                string
      +  RangeMask                                     RangeMask Struct
      +  RangeMaskMapInfo                              MapInfo Struct_
      +  RangeMaskMapInfoLabMax                        string_
      +  RangeMaskMapInfoLabMin                        string_
      +  RangeMaskMapInfoLumEq                         string_+
      +  RangeMaskMapInfoRGBMax                        string_
      +  RangeMaskMapInfoRGBMin                        string_
         RawFileName                                   string
         RedEyeInfo                                    string+
         RedHue                                        integer
      @@ -2276,17 +3439,85 @@
         RetouchAreaMaskBottom                         real_
         RetouchAreaMaskCenterValue                    real_
         RetouchAreaMaskCenterWeight                   real_
      +  RetouchAreaMaskRange                          CorrRangeMask Struct_+
      +  RetouchAreaMaskRangeAreaModels                AreaModels Struct_+
      +  RetouchAreaMaskRangeAreaModelsComponents      string_+
      +  RetouchAreaMaskRangeAreaModelsColorSampleInfo string_+
      +  RetouchAreaMaskRangeColorAmount               real_+
      +  RetouchAreaMaskRangeDepthFeather              real_+
      +  RetouchAreaMaskRangeDepthMax                  real_+
      +  RetouchAreaMaskRangeDepthMin                  real_+
      +  RetouchAreaMaskRangeInvert                    boolean_+
      +  RetouchAreaMaskRangeLumFeather                real_+
      +  RetouchAreaMaskRangeLuminanceDepthSampleInfo  string_+
      +  RetouchAreaMaskRangeLumMax                    real_+
      +  RetouchAreaMaskRangeLumMin                    real_+
      +  RetouchAreaMaskRangeLumRange                  string_+
      +  RetouchAreaMaskRangeSampleType                integer_+
      +  RetouchAreaMaskRangeType                      string_+
      +  RetouchAreaMaskRangeVersion                   string_+
         RetouchAreaMaskDabs                           string_
         RetouchAreaMaskFeather                        real_
         RetouchAreaMaskFlipped                        boolean_
         RetouchAreaMaskFlow                           real_
         RetouchAreaMaskFullX                          real_
         RetouchAreaMaskFullY                          real_
      +  RetouchAreaMaskInputDigest                    string_
         RetouchAreaMaskLeft                           real_
      +  RetouchAreaMaskMaskActive                     boolean_
      +  RetouchAreaMaskMaskBlendMode                  integer_
      +  RetouchAreaMaskMaskDigest                     string_
      +  RetouchAreaMaskMaskInverted                   boolean_
      +  RetouchAreaMaskMaskName                       string_
      +  RetouchAreaMaskMasks                          CorrectionMask Struct_+
      +  RetouchAreaMaskMasksAlpha                     real_
      +  RetouchAreaMaskMasksAngle                     real_
      +  RetouchAreaMaskMasksBottom                    real_
      +  RetouchAreaMaskMasksCenterValue               real_
      +  RetouchAreaMaskMasksCenterWeight              real_
      +  RetouchAreaMaskMasksDabs                      string_+
      +  RetouchAreaMaskMasksFeather                   real_
      +  RetouchAreaMaskMasksFlipped                   boolean_
      +  RetouchAreaMaskMasksFlow                      real_
      +  RetouchAreaMaskMasksFullX                     real_
      +  RetouchAreaMaskMasksFullY                     real_
      +  RetouchAreaMaskMasksInputDigest               string_
      +  RetouchAreaMaskMasksLeft                      real_
      +  RetouchAreaMaskMasksMaskActive                boolean_
      +  RetouchAreaMaskMasksMaskBlendMode             integer_
      +  RetouchAreaMaskMasksMaskDigest                string_
      +  RetouchAreaMaskMasksMaskInverted              boolean_
      +  RetouchAreaMaskMasksMaskName                  string_
      +  RetouchAreaMaskMasksMaskSubType               string_
      +  RetouchAreaMaskMasksMaskSyncID                string_
      +  RetouchAreaMaskMasksValue                     real_
      +  RetouchAreaMaskMasksMaskVersion               string_
      +  RetouchAreaMaskMasksMidpoint                  real_
      +  RetouchAreaMaskMasksOrigin                    string_
      +  RetouchAreaMaskMasksPerimeterValue            real_
      +  RetouchAreaMaskMasksRadius                    real_
      +  RetouchAreaMaskMasksReferencePoint            string_
      +  RetouchAreaMaskMasksRight                     real_
      +  RetouchAreaMaskMasksRoundness                 real_
      +  RetouchAreaMaskMasksSizeX                     real_
      +  RetouchAreaMaskMasksSizeY                     real_
      +  RetouchAreaMaskMasksTop                       real_
      +  RetouchAreaMaskMaskSubType                    string_
      +  RetouchAreaMaskMasksVersion                   integer_
      +  RetouchAreaMaskMasksWhat                      string_
      +  RetouchAreaMaskMasksWholeImageArea            string_
      +  RetouchAreaMaskMasksX                         real_
      +  RetouchAreaMaskMasksY                         real_
      +  RetouchAreaMaskMaskSyncID                     string_
      +  RetouchAreaMaskMasksZeroX                     real_
      +  RetouchAreaMaskMasksZeroY                     real_
         RetouchAreaMaskValue                          real_
      +  RetouchAreaMaskMaskVersion                    string_
         RetouchAreaMaskMidpoint                       real_
      +  RetouchAreaMaskOrigin                         string_
         RetouchAreaMaskPerimeterValue                 real_
         RetouchAreaMaskRadius                         real_
      +  RetouchAreaMaskReferencePoint                 string_
         RetouchAreaMaskRight                          real_
         RetouchAreaMaskRoundness                      real_
         RetouchAreaMaskSizeX                          real_
      @@ -2294,6 +3525,7 @@
         RetouchAreaMaskTop                            real_
         RetouchAreaMaskVersion                        integer_
         RetouchAreaMaskWhat                           string_
      +  RetouchAreaMaskWholeImageArea                 string_
         RetouchAreaMaskX                              real_
         RetouchAreaMaskY                              real_
         RetouchAreaMaskZeroX                          real_
      @@ -2322,16 +3554,27 @@
         SharpenEdgeMasking                            integer
         SharpenRadius                                 real
         Sharpness                                     integer/
      +  ShortName                                     lang-alt
         Smoothness                                    integer
      +  SortName                                      lang-alt
         SplitToningBalance                            integer
         SplitToningHighlightHue                       integer
         SplitToningHighlightSaturation                integer
         SplitToningShadowHue                          integer
         SplitToningShadowSaturation                   integer
      +  SupportsAmount                                boolean
      +  SupportsColor                                 boolean
      +  SupportsHighDynamicRange                      boolean
      +  SupportsMonochrome                            boolean
      +  SupportsNormalDynamicRange                    boolean
      +  SupportsOutputReferred                        boolean
      +  SupportsSceneReferred                         boolean
         ColorTemperature                              integer
         Texture                                       integer
         TIFFHandling                                  string
         Tint                                          integer
      +  ToggleStyleAmount                             integer
      +  ToggleStyleDigest                             string
         ToneCurve                                     string+
         ToneCurveBlue                                 string+
         ToneCurveGreen                                string+
      @@ -2359,6 +3602,7 @@
         UprightTransform_5                            string
         UprightTransformCount                         integer
         UprightVersion                                integer
      +  UUID                                          string/
         Version                                       string
         Vibrance                                      integer
         VignetteAmount                                integer
      @@ -2886,8 +4130,8 @@
       
       =head3 XMP exifEX Tags
       
      -EXIF tags added by the EXIF 2.31 for XMP specification (see
      -L).
      +EXIF tags added by the EXIF 2.32 for XMP specification (see
      +L).
       
       These tags belong to the ExifTool XMP-exifEX family 1 group.
       
      @@ -2897,6 +4141,19 @@
         SerialNumber                                  string
         CameraElevationAngle                          rational
         OwnerName                                     string
      +  CompositeImage                                integer
      +  CompositeImageCount                           integer+
      +  CompositeImageExposureTimes                   CompImageExp Struct
      +  CompImageMaxExposureAll                       rational_
      +  CompImageMaxExposureUsed                      rational_
      +  CompImageMinExposureAll                       rational_
      +  CompImageMinExposureUsed                      rational_
      +  CompImageImagesPerSequence                    integer_
      +  CompImageNumSequences                         integer_
      +  CompImageSumExposureAll                       rational_
      +  CompImageSumExposureUsed                      rational_
      +  CompImageTotalExposurePeriod                  rational_
      +  CompImageValues                               rational_+
         Gamma                                         rational
         Humidity                                      rational
         InteropIndex                                  string
      @@ -2915,6 +4172,21 @@
         AmbientTemperature                            rational
         WaterDepth                                    rational
       
      +=head3 XMP CompImageExp Struct
      +
      +  Field Name                                    Writable
      +  ----------                                    --------
      +  MaxExposureTimesOfAll                         rational
      +  MaxExposureTimesOfUsed                        rational
      +  MinExposureTimesOfAll                         rational
      +  MinExposureTimesOfUsed                        rational
      +  NumberOfImagesInSequences                     integer
      +  NumberOfSequences                             integer
      +  SumOfExposureTimesOfAll                       rational
      +  SumOfExposureTimesOfUsed                      rational
      +  TotalExposurePeriod                           rational
      +  Values                                        rational+
      +
       =head3 XMP ExpressionMedia Tags
       
       Microsoft Expression Media namespace tags.  These tags are avoided when
      @@ -2978,6 +4250,10 @@
         BurstPrimary                                  string
         DisableAutoCreation                           string+
         HDRPMakerNote                                 string
      +  MicroVideo                                    integer
      +  MicroVideoOffset                              integer
      +  MicroVideoPresentationTimestampUs             integer
      +  MicroVideoVersion                             integer
         PortraitNote                                  string
         PortraitRequest                               string
         PortraitVersion                               string
      @@ -3090,6 +4366,7 @@
         FullPanoWidthPixels                           real
         InitialCameraDolly                            real
         InitialHorizontalFOVDegrees                   real
      +  InitialVerticalFOVDegrees                     real
         InitialViewHeadingDegrees                     real
         InitialViewPitchDegrees                       real
         InitialViewRollDegrees                        real
      @@ -3202,6 +4479,7 @@
       
         Tag Name                                      Writable
         --------                                      --------
      +  AltTextAccessibility                          lang-alt
         CountryCode                                   string
         CreatorContactInfo                            ContactInfo Struct
         CreatorCity                                   string_
      @@ -3212,6 +4490,7 @@
         CreatorWorkEmail                              string_
         CreatorWorkTelephone                          string_
         CreatorWorkURL                                string_
      +  ExtDescrAccessibility                         lang-alt
         IntellectualGenre                             string
         Location                                      string
         Scene                                         string+
      @@ -3232,9 +4511,10 @@
       
       =head3 XMP iptcExt Tags
       
      -This table contains tags defined by the IPTC Extension schema version 1.5.
      +This table contains tags defined by the IPTC Extension schema version 1.6.
       The actual namespace prefix is "Iptc4xmpExt", but ExifTool shortens this for
      -the family 1 group name. (see L)
      +the family 1 group name. (see
      +L)
       
       These tags belong to the ExifTool XMP-iptcExt family 1 group.
       
      @@ -3310,6 +4590,7 @@
         ShownEvent                                    Entity Struct+
         ShownEventIdentifier                          string_+
         ShownEventName                                lang-alt_+
      +  EventID                                       string+
         ExternalMetadataLink                          string+
         FeedIdentifier                                string
         Genre                                         CVTermDetails Struct+
      @@ -3615,7 +4896,6 @@
         GPSAltitude                                   rational
         GPSLatitude                                   string
         GPSLongitude                                  string
      -  GROUPS                                        string
         Identifier                                    string+
         LocationId                                    string+
         LocationName                                  lang-alt
      @@ -3733,6 +5013,7 @@
         --------                                      --------
         HierarchicalSubject                           string+
         PrivateRTKInfo                                string
      +  WeightedFlatSubject                           string+
       
       =head3 XMP MediaPro Tags
       
      @@ -4188,7 +5469,7 @@
         ImageWidth                                    integer
         Make                                          string
         Model                                         string
      -  NativeDigest                                  string
      +  NativeDigest                                  string/
         Orientation                                   integer
         PhotometricInterpretation                     integer
         PlanarConfiguration                           integer
      @@ -4248,6 +5529,7 @@
         PageImagePageNumber                           integer_+
         PageImageWidth                                integer_+
         Rating                                        real
      +  RatingPercent                                 real/
         Thumbnails                                    Thumbnail Struct+
         ThumbnailFormat                               string_+
         ThumbnailHeight                               integer_+
      @@ -5257,32 +6539,98 @@
         'A2B0'   AToB0                                no
         'A2B1'   AToB1                                no
         'A2B2'   AToB2                                no
      +  'A2B3'   AToB3                                no
      +  'A2M0'   AToM0                                no
         'B2A0'   BToA0                                no
         'B2A1'   BToA1                                no
         'B2A2'   BToA2                                no
      +  'B2A3'   BToA3                                no
         'B2D0'   BToD0                                no
         'B2D1'   BToD1                                no
         'B2D2'   BToD2                                no
         'B2D3'   BToD3                                no
      +  'CxF '   CXF                                  no
         'D2B0'   DToB0                                no
         'D2B1'   DToB1                                no
         'D2B2'   DToB2                                no
         'D2B3'   DToB3                                no
         'Header' ProfileHeader                        ICC_Profile Header
      +  'M2A0'   MToA0                                no
      +  'M2B0'   MToB0                                no
      +  'M2B1'   MToB1                                no
      +  'M2B2'   MToB2                                no
      +  'M2B3'   MToB3                                no
      +  'M2S0'   MToS0                                no
      +  'M2S1'   MToS1                                no
      +  'M2S2'   MToS2                                no
      +  'M2S3'   MToS3                                no
         'MS00'   WCSProfiles                          no
      +  'bAB0'   BRDFAToB0                            no
      +  'bAB1'   BRDFAToB1                            no
      +  'bAB2'   BRDFAToB2                            no
      +  'bAB3'   BRDFAToB3                            no
      +  'bBA0'   BRDFBToA0                            no
      +  'bBA1'   BRDFBToA1                            no
      +  'bBA2'   BRDFBToA2                            no
      +  'bBA3'   BRDFBToA3                            no
      +  'bBD0'   BRDFBToD0                            no
      +  'bBD1'   BRDFBToD1                            no
      +  'bBD2'   BRDFBToD2                            no
      +  'bBD3'   BRDFBToD3                            no
      +  'bDB0'   BRDFDToB0                            no
      +  'bDB1'   BRDFDToB1                            no
      +  'bDB2'   BRDFDToB2                            no
      +  'bDB3'   BRDFDToB3                            no
      +  'bMB0'   BRDFMToB0                            no
      +  'bMB1'   BRDFMToB1                            no
      +  'bMB2'   BRDFMToB2                            no
      +  'bMB3'   BRDFMToB3                            no
      +  'bMS0'   BRDFMToS0                            no
      +  'bMS1'   BRDFMToS1                            no
      +  'bMS2'   BRDFMToS2                            no
      +  'bMS3'   BRDFMToS3                            no
         'bTRC'   BlueTRC                              no
         'bXYZ'   BlueMatrixColumn                     no
      +  'bcp0'   BRDFColorimetricParam0               no
      +  'bcp1'   BRDFColorimetricParam1               no
      +  'bcp2'   BRDFColorimetricParam2               no
      +  'bcp3'   BRDFColorimetricParam3               no
         'bfd '   UCRBG                                no
         'bkpt'   MediaBlackPoint                      no
      +  'bsp0'   BRDFSpectralParam0                   no
      +  'bsp1'   BRDFSpectralParam1                   no
      +  'bsp2'   BRDFSpectralParam2                   no
      +  'bsp3'   BRDFSpectralParam3                   no
      +  'c2sp'   CustomToStandardPcc                  no
         'calt'   CalibrationDateTime                  no
      +  'cept'   ColorEncodingParams                  no
         'chad'   ChromaticAdaptation                  no
         'chrm'   Chromaticity                         ICC_Profile Chromaticity
         'ciis'   ColorimetricIntentImageState         no
      +  'clio'   ColorantInfoOut                      no
      +  'cloo'   ColorantOrderOut                     no
         'clot'   ColorantTableOut                     no
         'clro'   ColorantOrder                        no
         'clrt'   ColorantTable                        ICC_Profile ColorantTable
         'cprt'   ProfileCopyright                     no
         'crdi'   CRDInfo                              no
      +  'csnm'   ColorSpaceName                       no
      +  'dAB0'   DirectionalAToB0                     no
      +  'dAB1'   DirectionalAToB1                     no
      +  'dAB2'   DirectionalAToB2                     no
      +  'dAB3'   DirectionalAToB3                     no
      +  'dBA0'   DirectionalBToA0                     no
      +  'dBA1'   DirectionalBToA1                     no
      +  'dBA2'   DirectionalBToA2                     no
      +  'dBA3'   DirectionalBToA3                     no
      +  'dBD0'   DirectionalBToD0                     no
      +  'dBD1'   DirectionalBToD1                     no
      +  'dBD2'   DirectionalBToD2                     no
      +  'dBD3'   DirectionalBToD3                     no
      +  'dDB0'   DirectionalDToB0                     no
      +  'dDB1'   DirectionalDToB1                     no
      +  'dDB2'   DirectionalDToB2                     no
      +  'dDB3'   DirectionalDToB3                     no
         'desc'   ProfileDescription                   no
         'devs'   DeviceSettings                       no
         'dmdd'   DeviceModelDesc                      no
      @@ -5292,14 +6640,23 @@
         'gTRC'   GreenTRC                             no
         'gXYZ'   GreenMatrixColumn                    no
         'gamt'   Gamut                                no
      +  'gdb0'   GamutBoundaryDescription0            no
      +  'gdb1'   GamutBoundaryDescription1            no
      +  'gdb2'   GamutBoundaryDescription2            no
      +  'gdb3'   GamutBoundaryDescription3            no
         'kTRC'   GrayTRC                              no
         'lumi'   Luminance                            no
      +  'mcta'   MultiplexTypeArray                   no
      +  'mdv '   MultiplexDefaultValues               no
         'meas'   Measurement                          ICC_Profile Measurement
         'meta'   Metadata                             ICC_Profile Metadata
      +  'miin'   MeasurementInputInfo                 no
      +  'minf'   MeasurementInfo                      no
         'mmod'   MakeAndModel                         no
         'ncl2'   NamedColor2                          no
         'ncol'   NamedColor                           no
         'ndin'   NativeDisplayInfo                    no
      +  'nmcl'   NamedColor                           no
         'pre0'   Preview0                             no
         'pre1'   Preview1                             no
         'pre2'   Preview2                             no
      @@ -5311,18 +6668,24 @@
         'psd3'   PostScript2CRD3                      no
         'pseq'   ProfileSequenceDesc                  no
         'psid'   ProfileSequenceIdentifier            no
      +  'psin'   ProfileSequenceInfo                  no
         'psvm'   PS2CRDVMSize                         no
         'rTRC'   RedTRC                               no
         'rXYZ'   RedMatrixColumn                      no
         'resp'   OutputResponse                       no
      +  'rfnm'   ReferenceName                        no
         'rhoc'   ReflectionHardcopyOrigColorimetry    no
         'rig0'   PerceptualRenderingIntentGamut       no
         'rig2'   SaturationRenderingIntentGamut       no
         'rpoc'   ReflectionPrintOutputColorimetry     no
      +  's2cp'   StandardToCustomPcc                  no
         'sape'   SceneAppearanceEstimates             no
         'scoe'   SceneColorimetryEstimates            no
         'scrd'   ScreeningDesc                        no
         'scrn'   Screening                            no
      +  'smap'   SurfaceMap                           no
      +  'svcn'   SpectralViewingConditions            no
      +  'swpt'   SpectralWhitePoint                   no
         'targ'   CharTarget                           no
         'tech'   Technology                           no
         'vcgt'   VideoCardGamma                       no
      @@ -5615,7 +6978,7 @@
         0x0008   AccelerationVector                   rational64s[3]
         0x000a   HDRImageType                         int32s
         0x000b   BurstUUID                            string
      -  0x0011   ContentIdentifier                    string
      +  0x0011   MediaGroupUUID                       string
         0x0015   ImageUniqueID                        string
       
       =head3 Apple RunTime Tags
      @@ -5631,6 +6994,219 @@
         'timescale'          RunTimeScale             no
         'value'              RunTimeValue             no
       
      +=head2 NikonSettings Tags
      +
      +User settings for newer Nikon models.  A number of the tags are marked as
      +Unknown only to reduce the volume of the normal output.
      +
      +  Tag ID   Tag Name                             Writable
      +  ------   --------                             --------
      +  0x0001   ISOAutoHiLimit                       no
      +  0x0002   ISOAutoFlashLimit                    no
      +  0x0003   ISOAutoShutterTime                   no
      +  0x000b   FlickerReductionShooting             no
      +  0x000c   FlickerReductionIndicator            no
      +  0x000d   MovieISOAutoHiLimit                  no
      +  0x000e   MovieISOAutoControlManualMode        no
      +  0x000f   MovieWhiteBalanceSameAsPhoto         no
      +  0x001d   AF-CPrioritySel                      no
      +  0x001e   AF-SPrioritySel                      no
      +  0x0020   AFPointSel                           no
      +  0x0022   AFActivation                         no
      +  0x0023   FocusPointWrap                       no
      +  0x0025   ManualFocusPointIllumination         no
      +  0x0026   AF-AssistIlluminator                 no
      +  0x0027   ManualFocusRingInAFMode              no
      +  0x0029   ISOStepSize                          no
      +  0x002a   ExposureControlStepSize              no
      +  0x002b   EasyExposureCompensation             no
      +  0x002c   MatrixMetering                       no
      +  0x002d   CenterWeightedAreaSize               no
      +  0x002f   FineTuneOptMatrixMetering            no
      +  0x0030   FineTuneOptCenterWeighted            no
      +  0x0031   FineTuneOptSpotMetering              no
      +  0x0032   FineTuneOptHighlightWeighted         no
      +  0x0033   ShutterReleaseButtonAE-L             no
      +  0x0034   StandbyMonitorOffTime                no
      +  0x0035   SelfTimerTime                        no
      +  0x0036   SelfTimerShotCount                   no
      +  0x0037   SelfTimerShotInterval                no
      +  0x0038   PlaybackMonitorOffTime               no
      +  0x0039   MenuMonitorOffTime                   no
      +  0x003a   ShootingInfoMonitorOffTime           no
      +  0x003b   ImageReviewMonitorOffTime            no
      +  0x003c   LiveViewMonitorOffTime               no
      +  0x003e   CLModeShootingSpeed                  no
      +  0x003f   MaxContinuousRelease                 no
      +  0x0040   ExposureDelayMode                    no
      +  0x0041   ElectronicFront-CurtainShutter       no
      +  0x0042   FileNumberSequence                   no
      +  0x0043   FramingGridDisplay                   no
      +  0x0045   LCDIllumination                      no
      +  0x0046   OpticalVR                            no
      +  0x0047   FlashSyncSpeed                       no
      +  0x0048   FlashShutterSpeed                    no
      +  0x0049   FlashExposureCompArea                no
      +  0x004a   AutoFlashISOSensitivity              no
      +  0x0051   AssignBktButton                      no
      +  0x0052   AssignMovieRecordButton              no
      +  0x0053   MultiSelectorShootMode               no
      +  0x0054   MultiSelectorPlaybackMode            no
      +  0x0056   MultiSelectorLiveView                no
      +  0x0058   CmdDialsReverseRotExposureComp?      no
      +  0x0059   CmdDialsChangeMainSubExposure?       no
      +  0x005a   CmdDialsChangeMainSub                no
      +  0x005b   CmdDialsMenuAndPlayback              no
      +  0x005c   SubDialFrameAdvance                  no
      +  0x005d   ReleaseButtonToUseDial               no
      +  0x005e   ReverseIndicators                    no
      +  0x0062   MovieShutterButton                   no
      +  0x0063   Language                             no
      +  0x006c   ShootingInfoDisplay                  no
      +  0x0074   FlickAdvanceDirection                no
      +  0x0075   HDMIOutputResolution                 no
      +  0x0077   HDMIOutputRange                      no
      +  0x0080   RemoteFuncButton                     no
      +  0x008b   CmdDialsReverseRotation              no
      +  0x008d   FocusPeakingHighlightColor           no
      +  0x008e   ContinuousModeDisplay                no
      +  0x008f   ShutterSpeedLock                     no
      +  0x0090   ApertureLock                         no
      +  0x0091   MovieHighlightDisplayThreshold       no
      +  0x0092   HDMIExternalRecorder                 no
      +  0x0093   BlockShotAFResponse                  no
      +  0x0094   SubjectMotion                        no
      +  0x0095   Three-DTrackingFaceDetection         no
      +  0x0097   StoreByOrientation                   no
      +  0x0099   DynamicAreaAFAssist                  no
      +  0x009a   ExposureCompStepSize                 no
      +  0x009b   SyncReleaseMode                      no
      +  0x009c   ModelingFlash                        no
      +  0x009d   AutoBracketModeM                     no
      +  0x009e   PreviewButton                        no
      +  0x00a0   Func1Button                          no
      +  0x00a2   Func2Button                          no
      +  0x00a3   AF-OnButton                          no
      +  0x00a4   SubSelector                          no
      +  0x00a5   SubSelectorCenter                    no
      +  0x00a7   LensFunc1Button                      no
      +  0x00a8   CmdDialsApertureSetting              no
      +  0x00a9   MultiSelector                        no
      +  0x00aa   LiveViewButtonOptions                no
      +  0x00ab   LightSwitch                          no
      +  0x00b1   MoviePreviewButton                   no
      +           MovieFunc1Button                     no
      +  0x00b3   MovieFunc1Button                     no
      +           MovieFunc2Button                     no
      +  0x00b5   MovieFunc2Button                     no
      +  0x00b6   AssignMovieSubselector               no
      +  0x00b8   LimitAFAreaModeSelD9?                no
      +  0x00b9   LimitAFAreaModeSelD25?               no
      +  0x00bc   LimitAFAreaModeSel3D?                no
      +  0x00bd   LimitAFAreaModeSelGroup?             no
      +  0x00be   LimitAFAreaModeSelAuto?              no
      +  0x00c1   LimitSelectableImageArea5To4?        no
      +  0x00c2   LimitSelectableImageArea1To1?        no
      +  0x00d4   PhotoShootingMenuBank                no
      +  0x00d5   CustomSettingsBank                   no
      +  0x00d6   LimitAF-AreaModeSelPinpoint?         no
      +  0x00d7   LimitAF-AreaModeSelDynamic?          no
      +  0x00d8   LimitAF-AreaModeSelWideAF_S?         no
      +  0x00d9   LimitAF-AreaModeSelWideAF_L?         no
      +  0x00da   LowLightAF                           no
      +  0x00db   LimitSelectableImageAreaDX?          no
      +  0x00dc   LimitSelectableImageArea5To4?        no
      +  0x00dd   LimitSelectableImageArea1To1?        no
      +  0x00de   LimitSelectableImageArea16To9?       no
      +  0x00df   ApplySettingsToLiveView              no
      +  0x00e0   FocusPeakingLevel                    no
      +  0x00ea   LensControlRing                      no
      +  0x00ed   MovieMultiSelector                   no
      +  0x00ee   MovieAFSpeed                         no
      +  0x00ef   MovieAFSpeedApply                    no
      +  0x00f0   MovieAFTrackingSensitivity           no
      +  0x00f1   MovieHighlightDisplayPattern         no
      +  0x00f2   SubDialFrameAdvanceRating5?          no
      +  0x00f3   SubDialFrameAdvanceRating4?          no
      +  0x00f4   SubDialFrameAdvanceRating3?          no
      +  0x00f5   SubDialFrameAdvanceRating2?          no
      +  0x00f6   SubDialFrameAdvanceRating1?          no
      +  0x00f7   SubDialFrameAdvanceRating0?          no
      +  0x00f9   MovieAF-OnButton                     no
      +  0x00fb   SecondarySlotFunction                no
      +  0x00fc   SilentPhotography                    no
      +  0x00fd   ExtendedShutterSpeeds                no
      +  0x0102   HDMIBitDepth                         no
      +  0x0103   HDMIOutputHDR                        no
      +  0x0104   HDMIViewAssist                       no
      +  0x0109   BracketSet                           no
      +  0x010a   BracketProgram                       no
      +  0x010b   BracketIncrement                     no
      +  0x010c   BracketIncrement                     no
      +  0x010e   MonitorBrightness                    no
      +  0x0116   GroupAreaC1                          no
      +  0x0117   AutoAreaAFStartingPoint              no
      +  0x0118   FocusPointPersistence                no
      +  0x0119   LimitAFAreaModeSelD49?               no
      +  0x011a   LimitAFAreaModeSelD105?              no
      +  0x011b   LimitAFAreaModeSelGroupC1?           no
      +  0x011c   LimitAFAreaModeSelGroupC2?           no
      +  0x011d   AutoFocusModeRestrictions            no
      +  0x011e   FocusPointBrightness                 no
      +  0x011f   CHModeShootingSpeed                  no
      +  0x0120   CLModeShootingSpeed                  no
      +  0x0121   QuietShutterShootingSpeed            no
      +  0x0122   LimitReleaseModeSelCL?               no
      +  0x0123   LimitReleaseModeSelCH?               no
      +  0x0124   LimitReleaseModeSelQ?                no
      +  0x0125   LimitReleaseModeSelTimer?            no
      +  0x0126   LimitReleaseModeSelMirror-Up?        no
      +  0x0127   LimitSelectableImageArea16To9?       no
      +  0x0128   RearControPanelDisplay               no
      +  0x0129   FlashBurstPriority                   no
      +  0x012a   RecallShootFuncExposureMode          no
      +  0x012b   RecallShootFuncShutterSpeed          no
      +  0x012c   RecallShootFuncAperture              no
      +  0x012d   RecallShootFuncExposureComp          no
      +  0x012e   RecallShootFuncISO                   no
      +  0x012f   RecallShootFuncMeteringMode          no
      +  0x0130   RecallShootFuncWhiteBalance          no
      +  0x0131   RecallShootFuncAFAreaMode            no
      +  0x0132   RecallShootFuncFocusTracking         no
      +  0x0133   RecallShootFuncAF-On                 no
      +  0x0134   VerticalFuncButton                   no
      +  0x0135   Func3Button                          no
      +  0x0136   VerticalAF-OnButton                  no
      +  0x0137   VerticalMultiSelector                no
      +  0x0138   MeteringButton                       no
      +  0x0139   PlaybackFlickUp                      no
      +  0x013a   PlaybackFlickUpRating                no
      +  0x013b   PlaybackFlickDown                    no
      +  0x013c   PlaybackFlickDownRating              no
      +  0x013d   MovieFunc3Button                     no
      +  0x0150   ShutterType                          no
      +  0x0151   LensFunc2Button                      no
      +  0x0158   USBPowerDelivery                     no
      +  0x0159   EnergySavingMode                     no
      +  0x015c   BracketingBurstOptions               no
      +  0x015e   PrimarySlot                          no
      +  0x015f   ReverseFocusRing                     no
      +  0x0160   VerticalFuncButton                   no
      +  0x0161   VerticalAFOnButton                   no
      +  0x0162   VerticalMultiSelector                no
      +  0x0164   VerticalMovieFuncButton              no
      +  0x0165   VerticalMovieAFOnButton              no
      +  0x0169   LimitAF-AreaModeSelAutoPeople?       no
      +  0x016a   LimitAF-AreaModeSelAutoAnimals?      no
      +  0x016b   LimitAF-AreaModeSelWideLPeople?      no
      +  0x016c   LimitAF-AreaModeSelWideLAnimals?     no
      +  0x016d   SaveFocus                            no
      +  0x016e   AFAreaMode                           no
      +  0x016f   MovieAFAreaMode                      no
      +  0x0170   PreferSubSelectorCenter              no
      +  0x0171   KeepExposureWithTeleconverter        no
      +  0x0174   FocusPointSelectionSpeed             no
      +
       =head2 Canon Tags
       
         Tag ID   Tag Name                             Writable
      @@ -5748,6 +7324,8 @@
                  ColorData7                           Canon ColorData7
                  ColorData8                           Canon ColorData8
                  ColorData9                           Canon ColorData9
      +           ColorData10                          Canon ColorData10
      +           ColorData11                          Canon ColorData11
                  ColorDataUnknown                     Canon ColorDataUnknown
         0x4002   CRWParam?                            no
         0x4003   ColorInfo                            Canon ColorInfo
      @@ -5768,6 +7346,7 @@
         0x4021   MultiExp                             Canon MultiExp
         0x4024   FilterInfo                           Canon FilterInfo
         0x4025   HDRInfo                              Canon HDRInfo
      +  0x4026   LogInfo                              Canon LogInfo
         0x4028   AFConfig                             Canon AFConfig
         0x403f   RawBurstModeRoll                     Canon RawBurstInfo
       
      @@ -6408,6 +7987,7 @@
            25    CameraTemperature                    int8u
            30    FocalLength                          int16uRev
            54    CameraOrientation                    int8u
      +     58    CameraOrientation                    int8u
            85    FocusDistanceUpper                   int16uRev
            87    FocusDistanceLower                   int16uRev
           125    ColorTemperature                     int16u
      @@ -6445,7 +8025,7 @@
       
       =head3 Canon CameraInfo80D Tags
       
      -CameraInfo tags for the EOS 70D.
      +CameraInfo tags for the EOS 80D.
       
         Index1   Tag Name                             Writable
         ------   --------                             --------
      @@ -6613,6 +8193,7 @@
             6    ISO                                  int8u
            27    CameraTemperature                    int8u
            35    FocalLength                          int16uRev
      +    150    CameraOrientation                    int8u
           165    FocusDistanceUpper                   int16uRev
           167    FocusDistanceLower                   int16uRev
           305    WhiteBalance                         int16u
      @@ -6710,6 +8291,7 @@
         Index1   Tag Name                             Writable
         ------   --------                             --------
           363    LensSerialNumber                     undef[5]
      +   1473    FirmwareVersion                      no
       
       =head3 Canon MovieInfo Tags
       
      @@ -6866,7 +8448,9 @@
            19    LiveViewShooting                     int16s
            20    FocusDistanceUpper                   int16u
            21    FocusDistanceLower                   int16u
      +     23    ShutterMode                          int16s
            25    FlashExposureLock                    int16s
      +     61    RFLensType                           int16u
       
       =head3 Canon SerialInfo Tags
       
      @@ -7374,7 +8958,8 @@
       
       =head3 Canon ColorData7 Tags
       
      -These tags are used by the EOS 1DX, 5DmkIII, 6D, 100D, 650D, 700D, M and 7DmkII.
      +These tags are used by the EOS 1DX, 5DmkIII, 6D, 7DmkII, 100D, 650D, 700D,
      +8000D, M and M2.
       
         Index2   Tag Name                             Writable
         ------   --------                             --------
      @@ -7454,6 +9039,9 @@
       
       =head3 Canon ColorData8 Tags
       
      +These tags are used by the EOS 1DXmkII, 5DS, 5DSR, 5DmkIV, 6DmkII, 77D, 80D,
      +200D, 800D, 1300D, 2000D, 4000D and 9000D.
      +
         Index2   Tag Name                             Writable
         ------   --------                             --------
             0    ColorDataVersion                     int16s
      @@ -7550,6 +9138,8 @@
       
       =head3 Canon ColorData9 Tags
       
      +These tags are used by the M6mkII, M50, M200, EOS R, RP, 90D, 250D and 850D
      +
         Index2   Tag Name                             Writable
         ------   --------                             --------
             0    ColorDataVersion                     int16s
      @@ -7637,6 +9227,186 @@
           797    SpecularWhiteLevel                   int16u
           798    LinearityUpperMargin                 int16u
       
      +=head3 Canon ColorData10 Tags
      +
      +These tags are used by the R5, R5 and EOS 1DXmkIII.
      +
      +  Index2   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    ColorDataVersion                     int16s
      +     85    WB_RGGBLevelsAsShot                  int16s[4]
      +     89    ColorTempAsShot                      int16s
      +     90    WB_RGGBLevelsAuto                    int16s[4]
      +     94    ColorTempAuto                        int16s
      +     95    WB_RGGBLevelsMeasured                int16s[4]
      +     99    ColorTempMeasured                    int16s
      +    100    WB_RGGBLevelsUnknown?                int16s[4]
      +    104    ColorTempUnknown?                    int16s
      +    105    WB_RGGBLevelsUnknown2?               int16s[4]
      +    109    ColorTempUnknown2?                   int16s
      +    110    WB_RGGBLevelsUnknown3?               int16s[4]
      +    114    ColorTempUnknown3?                   int16s
      +    115    WB_RGGBLevelsUnknown4?               int16s[4]
      +    119    ColorTempUnknown4?                   int16s
      +    120    WB_RGGBLevelsUnknown5?               int16s[4]
      +    124    ColorTempUnknown5?                   int16s
      +    125    WB_RGGBLevelsUnknown6?               int16s[4]
      +    129    ColorTempUnknown6?                   int16s
      +    130    WB_RGGBLevelsUnknown7?               int16s[4]
      +    134    ColorTempUnknown7?                   int16s
      +    135    WB_RGGBLevelsUnknown8?               int16s[4]
      +    139    ColorTempUnknown8?                   int16s
      +    140    WB_RGGBLevelsUnknown9?               int16s[4]
      +    144    ColorTempUnknown9?                   int16s
      +    145    WB_RGGBLevelsUnknown10?              int16s[4]
      +    149    ColorTempUnknown10?                  int16s
      +    150    WB_RGGBLevelsDaylight                int16s[4]
      +    154    ColorTempDaylight                    int16s
      +    155    WB_RGGBLevelsShade                   int16s[4]
      +    159    ColorTempShade                       int16s
      +    160    WB_RGGBLevelsCloudy                  int16s[4]
      +    164    ColorTempCloudy                      int16s
      +    165    WB_RGGBLevelsTungsten                int16s[4]
      +    169    ColorTempTungsten                    int16s
      +    170    WB_RGGBLevelsFluorescent             int16s[4]
      +    174    ColorTempFluorescent                 int16s
      +    175    WB_RGGBLevelsKelvin                  int16s[4]
      +    179    ColorTempKelvin                      int16s
      +    180    WB_RGGBLevelsFlash                   int16s[4]
      +    184    ColorTempFlash                       int16s
      +    185    WB_RGGBLevelsUnknown11?              int16s[4]
      +    189    ColorTempUnknown11?                  int16s
      +    190    WB_RGGBLevelsUnknown12?              int16s[4]
      +    194    ColorTempUnknown12?                  int16s
      +    195    WB_RGGBLevelsUnknown13?              int16s[4]
      +    199    ColorTempUnknown13?                  int16s
      +    200    WB_RGGBLevelsUnknown14?              int16s[4]
      +    204    ColorTempUnknown14?                  int16s
      +    205    WB_RGGBLevelsUnknown15?              int16s[4]
      +    209    ColorTempUnknown15?                  int16s
      +    210    WB_RGGBLevelsUnknown16?              int16s[4]
      +    214    ColorTempUnknown16?                  int16s
      +    215    WB_RGGBLevelsUnknown17?              int16s[4]
      +    219    ColorTempUnknown17?                  int16s
      +    220    WB_RGGBLevelsUnknown18?              int16s[4]
      +    224    ColorTempUnknown18?                  int16s
      +    225    WB_RGGBLevelsUnknown19?              int16s[4]
      +    229    ColorTempUnknown19?                  int16s
      +    230    WB_RGGBLevelsUnknown20?              int16s[4]
      +    234    ColorTempUnknown20?                  int16s
      +    235    WB_RGGBLevelsUnknown21?              int16s[4]
      +    239    ColorTempUnknown21?                  int16s
      +    240    WB_RGGBLevelsUnknown22?              int16s[4]
      +    244    ColorTempUnknown22?                  int16s
      +    245    WB_RGGBLevelsUnknown23?              int16s[4]
      +    249    ColorTempUnknown23?                  int16s
      +    250    WB_RGGBLevelsUnknown24?              int16s[4]
      +    254    ColorTempUnknown24?                  int16s
      +    255    WB_RGGBLevelsUnknown25?              int16s[4]
      +    259    ColorTempUnknown25?                  int16s
      +    260    WB_RGGBLevelsUnknown26?              int16s[4]
      +    264    ColorTempUnknown26?                  int16s
      +    265    WB_RGGBLevelsUnknown27?              int16s[4]
      +    269    ColorTempUnknown27?                  int16s
      +    270    WB_RGGBLevelsUnknown28?              int16s[4]
      +    274    ColorTempUnknown28?                  int16s
      +    275    WB_RGGBLevelsUnknown29?              int16s[4]
      +    279    ColorTempUnknown29?                  int16s
      +    280    ColorCalib?                          Canon ColorCalib
      +    343    PerChannelBlackLevel                 int16u[4]
      +    810    NormalWhiteLevel                     int16u
      +    811    SpecularWhiteLevel                   int16u
      +    812    LinearityUpperMargin                 int16u
      +
      +=head3 Canon ColorData11 Tags
      +
      +These tags are used by the EOS R3
      +
      +  Index2   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    ColorDataVersion                     int16s
      +    105    WB_RGGBLevelsAsShot                  int16s[4]
      +    109    ColorTempAsShot                      int16s
      +    110    WB_RGGBLevelsAuto                    int16s[4]
      +    114    ColorTempAuto                        int16s
      +    115    WB_RGGBLevelsMeasured                int16s[4]
      +    119    ColorTempMeasured                    int16s
      +    120    WB_RGGBLevelsUnknown?                int16s[4]
      +    124    ColorTempUnknown?                    int16s
      +    125    WB_RGGBLevelsUnknown2?               int16s[4]
      +    129    ColorTempUnknown2?                   int16s
      +    130    WB_RGGBLevelsUnknown3?               int16s[4]
      +    134    ColorTempUnknown3?                   int16s
      +    135    WB_RGGBLevelsUnknown4?               int16s[4]
      +    139    ColorTempUnknown4?                   int16s
      +    140    WB_RGGBLevelsUnknown5?               int16s[4]
      +    144    ColorTempUnknown5?                   int16s
      +    145    WB_RGGBLevelsUnknown6?               int16s[4]
      +    149    ColorTempUnknown6?                   int16s
      +    150    WB_RGGBLevelsUnknown7?               int16s[4]
      +    154    ColorTempUnknown7?                   int16s
      +    155    WB_RGGBLevelsUnknown8?               int16s[4]
      +    159    ColorTempUnknown8?                   int16s
      +    160    WB_RGGBLevelsUnknown9?               int16s[4]
      +    164    ColorTempUnknown9?                   int16s
      +    165    WB_RGGBLevelsUnknown10?              int16s[4]
      +    169    ColorTempUnknown10?                  int16s
      +    170    WB_RGGBLevelsUnknown11?              int16s[4]
      +    174    ColorTempUnknown11?                  int16s
      +    175    WB_RGGBLevelsUnknown11?              int16s[4]
      +    179    ColorTempUnknown11?                  int16s
      +    180    WB_RGGBLevelsUnknown12?              int16s[4]
      +    184    ColorTempUnknown12?                  int16s
      +    185    WB_RGGBLevelsUnknown13?              int16s[4]
      +    189    ColorTempUnknown13?                  int16s
      +    190    WB_RGGBLevelsUnknown14?              int16s[4]
      +    194    ColorTempUnknown14?                  int16s
      +    195    WB_RGGBLevelsUnknown15?              int16s[4]
      +    199    ColorTempUnknown15?                  int16s
      +    200    WB_RGGBLevelsUnknown16?              int16s[4]
      +    204    ColorTempUnknown16?                  int16s
      +    205    WB_RGGBLevelsDaylight                int16s[4]
      +    209    ColorTempDaylight                    int16s
      +    210    WB_RGGBLevelsShade                   int16s[4]
      +    214    ColorTempShade                       int16s
      +    215    WB_RGGBLevelsCloudy                  int16s[4]
      +    219    ColorTempCloudy                      int16s
      +    220    WB_RGGBLevelsTungsten                int16s[4]
      +    224    ColorTempTungsten                    int16s
      +    225    WB_RGGBLevelsFluorescent             int16s[4]
      +    229    ColorTempFluorescent                 int16s
      +    230    WB_RGGBLevelsKelvin                  int16s[4]
      +    234    ColorTempKelvin                      int16s
      +    235    WB_RGGBLevelsFlash                   int16s[4]
      +    239    ColorTempFlash                       int16s
      +    240    WB_RGGBLevelsUnknown17?              int16s[4]
      +    244    ColorTempUnknown17?                  int16s
      +    245    WB_RGGBLevelsUnknown18?              int16s[4]
      +    249    ColorTempUnknown18?                  int16s
      +    250    WB_RGGBLevelsUnknown19?              int16s[4]
      +    254    ColorTempUnknown19?                  int16s
      +    255    WB_RGGBLevelsUnknown20?              int16s[4]
      +    259    ColorTempUnknown20?                  int16s
      +    260    WB_RGGBLevelsUnknown21?              int16s[4]
      +    264    ColorTempUnknown21?                  int16s
      +    265    WB_RGGBLevelsUnknown22?              int16s[4]
      +    269    ColorTempUnknown22?                  int16s
      +    270    WB_RGGBLevelsUnknown23?              int16s[4]
      +    274    ColorTempUnknown23?                  int16s
      +    275    WB_RGGBLevelsUnknown24?              int16s[4]
      +    279    ColorTempUnknown24?                  int16s
      +    280    WB_RGGBLevelsUnknown25?              int16s[4]
      +    284    ColorTempUnknown25?                  int16s
      +    285    WB_RGGBLevelsUnknown26?              int16s[4]
      +    289    ColorTempUnknown26?                  int16s
      +    290    WB_RGGBLevelsUnknown27?              int16s[4]
      +    294    ColorTempUnknown27?                  int16s
      +    300    ColorCalib?                          Canon ColorCalib
      +    363    PerChannelBlackLevel                 int16u[4]
      +    640    NormalWhiteLevel                     int16u
      +    641    SpecularWhiteLevel                   int16u
      +    642    LinearityUpperMargin                 int16u
      +
       =head3 Canon ColorDataUnknown Tags
       
         Index2   Tag Name                             Writable
      @@ -7746,6 +9516,18 @@
             1    HDR                                  int32s
             2    HDREffect                            int32s
       
      +=head3 Canon LogInfo Tags
      +
      +  Index4   Tag Name                             Writable
      +  ------   --------                             --------
      +      4    CompressionFormat                    int32s
      +      6    Sharpness                            int32s
      +      7    Saturation                           int32s
      +      8    ColorTone                            int32s
      +      9    ColorSpace2                          int32s
      +     10    ColorMatrix                          int32s
      +     11    CanonLogVersion                      int32s
      +
       =head3 Canon AFConfig Tags
       
         Index4   Tag Name                             Writable
      @@ -8157,8 +9939,10 @@
                  AEBShotCount                         int32s[2]
         0x0107   SpotMeterLinkToAFPoint               int32s
         0x0108   SafetyShift                          int32s
      -  0x0109   UsableShootingModes                  int32s[2]
      -  0x010a   UsableMeteringModes                  int32s[2]
      +  0x0109   UsableShootingModes                  int32s
      +           UsableShootingModes                  int32s[2]
      +  0x010a   UsableMeteringModes                  int32s
      +           UsableMeteringModes                  int32s[2]
         0x010b   ExposureModeInManual                 int32s
         0x010c   ShutterSpeedRange                    int32s[3]
                  ShutterSpeedRange                    int32s[4]
      @@ -8216,9 +10000,12 @@
         0x051d   VFDisplayIllumination                int32s
         0x051e   InitialAFPointAIServoAF              int32s
         0x060f   MirrorLockup                         int32s
      -  0x0610   ContinuousShootingSpeed              int32s[3]
      +  0x0610   ContinuousShootingSpeed              int32s[6]
      +           ContinuousShootingSpeed              int32s[5]
      +           ContinuousShootingSpeed              int32s[3]
         0x0611   ContinuousShotLimit                  int32s[2]
      -  0x0612   RestrictDriveModes                   int32s[2]
      +  0x0612   RestrictDriveModes                   int32s
      +           RestrictDriveModes                   int32s[2]
         0x0701   Shutter-AELock                       int32s
                  AFAndMeteringButtons                 int32s
                  ShutterButtonAFOnButton              int32s
      @@ -8243,7 +10030,8 @@
         0x0714   RFLensMFFocusRingSensitivity         int32s
         0x0715   CustomizeDials                       int32s
         0x080b   FocusingScreen                       int32s
      -  0x080c   TimerLength                          int32s[4]
      +  0x080c   TimerLength                          int32s[3]
      +           TimerLength                          int32s[4]
         0x080d   ShortReleaseTimeLag                  int32s
         0x080e   AddAspectRatioInfo                   int32s
         0x080f   AddOriginalDecisionData              int32s
      @@ -8862,6 +10650,29 @@
         RtkStdLon                                     real
         SelfData                                      string
       
      +=head3 DJI ThermalParams Tags
      +
      +Thermal parameters extracted from APP4 of DJI RJPEG files from the ZH20T.
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +     36    K1                                   no
      +     40    K2                                   no
      +     44    K3                                   no
      +     48    K4                                   no
      +     52    KF                                   no
      +     56    B1                                   no
      +     60    B2                                   no
      +     68    ObjectDistance                       no
      +     70    RelativeHumidity                     no
      +     72    Emissivity                           no
      +     74    Reflection                           no
      +     76    AmbientTemperature                   no
      +     80    D2                                   no
      +     84    KJ                                   no
      +     86    DB                                   no
      +     88    KK                                   no
      +
       =head2 FLIR Tags
       
       Information extracted from the maker notes of JPEG images from thermal
      @@ -8880,7 +10691,7 @@
       
       Information extracted from FLIR FFF images and the APP1 FLIR segment of JPEG
       images.  These tags may also be extracted from the first frame of an FLIR
      -SEQ file.
      +SEQ file, or all frames if the ExtractEmbedded option is used.
       
         Tag ID       Tag Name                         Writable
         ------       --------                         --------
      @@ -9090,8 +10901,10 @@
            64    GPSDOP                               no
            68    GPSSpeedRef                          no
            70    GPSTrackRef                          no
      +     72    GPSImgDirectionRef                   no
            76    GPSSpeed                             no
            80    GPSTrack                             no
      +     84    GPSImgDirection                      no
            88    GPSMapDatum                          no
       
       =head3 FLIR MeterLink Tags
      @@ -9339,6 +11152,8 @@
         0x1100   AutoBracketing                       int16u
         0x1101   SequenceNumber                       int16u
         0x1103   DriveSettings                        FujiFilm DriveSettings
      +  0x1105   PixelShiftShots                      int16u
      +  0x1106   PixelShiftOffset                     rational64s[2]
         0x1153   PanoramaAngle                        int16u
         0x1154   PanoramaDirection                    int16u
         0x1201   AdvancedFilter                       int32u
      @@ -9395,10 +11210,11 @@
       
         Index4   Tag Name                             Writable
         ------   --------                             --------
      -    0.1    FocusMode2                           int32u & 0xff
      -    0.2    AFAreaMode                           int32u & 0xf00
      -    0.3    AFAreaPointSize                      int32u & 0xf000
      -    0.4    AFAreaZoneSize                       int32u & 0xf0000
      +    0.1    FocusMode2                           int32u & 0x0f
      +    0.2    PreAF                                int32u & 0xf0
      +    0.3    AFAreaMode                           int32u & 0xf00
      +    0.4    AFAreaPointSize                      int32u & 0xf000
      +    0.5    AFAreaZoneSize                       int32u & 0xf0000
       
       =head3 FujiFilm AFCSettings Tags
       
      @@ -11656,7 +13472,9 @@
         0x0037   MechanicalShutterCount               int32u
         0x0039   LocationInfo                         Nikon LocationInfo
         0x003d   BlackLevel                           int16u[4]
      +  0x003e   ImageSizeRAW                         yes
         0x0045   CropArea                             int16u[4]
      +  0x004e   NikonSettings                        NikonSettings
         0x004f   ColorTemperatureAuto                 int16u
         0x0080   ImageAdjustment                      string
         0x0081   ToneComp                             string
      @@ -11696,7 +13514,10 @@
                  ShotInfoD4S                          Nikon ShotInfoD4S
                  ShotInfoD5                           Nikon ShotInfoD500
                  ShotInfoD500                         Nikon ShotInfoD500
      +           ShotInfoD6                           Nikon ShotInfoD6
                  ShotInfoD610                         Nikon ShotInfoD610
      +           ShotInfoZ7II                         Nikon ShotInfoZ7II
      +           ShotInfoZ9                           Nikon ShotInfoZ9
                  ShotInfo02xx                         Nikon ShotInfo
                  ShotInfoUnknown                      Nikon ShotInfo
         0x0092   HueAdjustment                        int16s
      @@ -11740,6 +13561,7 @@
                  FlashInfo0103                        Nikon FlashInfo0103
                  FlashInfo0106                        Nikon FlashInfo0106
                  FlashInfo0107                        Nikon FlashInfo0107
      +           FlashInfo0300                        Nikon FlashInfo0300
                  FlashInfoUnknown                     Nikon FlashInfoUnknown
         0x00a9   ImageOptimization                    string
         0x00aa   Saturation                           string
      @@ -11751,12 +13573,14 @@
         0x00b1   HighISONoiseReduction                int16u
         0x00b3   ToningEffect                         string
         0x00b6   PowerUpTime                          undef
      -  0x00b7   AFInfo2                              Nikon AFInfo2
      +  0x00b7   AFInfo2                              Nikon AFInfo2V0400
      +                                                Nikon AFInfo2
         0x00b8   FileInfo                             Nikon FileInfo
                                                       Nikon FileInfo
         0x00b9   AFTune                               Nikon AFTune
         0x00bb   RetouchInfo                          Nikon RetouchInfo
         0x00bd   PictureControlData                   Nikon PictureControl
      +  0x00bf   SilentPhotography                    yes
         0x00c3   BarometerInfo                        Nikon BarometerInfo
         0x0e00   PrintIM                              PrintIM
         0x0e01   NikonCaptureData                     NikonCapture
      @@ -11769,6 +13593,63 @@
         0x0e1e   NikonCaptureOutput                   Nikon CaptureOutput
         0x0e22   NEFBitDepth                          int16u[4]!
       
      +=head3 Nikon ast Tags
      +
      +Tags used by Nikon NX Studio in Nikon NKSC sidecar files and trailers.
      +
      +These tags belong to the ExifTool XMP-ast family 1 group.
      +
      +  Tag Name                                      Writable
      +  --------                                      --------
      +  About                                         no
      +  GPSAltitude                                   no
      +  GPSAltitudeRef                                no
      +  GPSImgDirection                               no
      +  GPSImgDirectionRef                            no
      +  GPSLatitude                                   no
      +  GPSLatitudeRef                                no
      +  GPSLongitude                                  no
      +  GPSLongitudeRef                               no
      +  GPSMapDatum                                   no
      +  GPSVersionID                                  no
      +  IPTC                                          IPTC
      +  Version                                       no
      +  XMLPackets                                    XMP
      +
      +=head3 Nikon nine Tags
      +
      +These tags belong to the ExifTool XMP-nine family 1 group.
      +
      +  Tag Name                                      Writable
      +  --------                                      --------
      +  About                                         no
      +  Label                                         no
      +  NineEdits                                     Nikon NineEdits
      +  Rating                                        no
      +  Trim                                          no
      +  Version                                       no
      +
      +=head3 Nikon NineEdits Tags
      +
      +XML-based tags used to store editing information.
      +
      +  Tag Name                                      Writable
      +  --------                                      --------
      +  FilterParametersBinary                        no
      +  FilterParametersCustomCustomData              no
      +  FilterParametersExportExportData              no
      +
      +=head3 Nikon sdc Tags
      +
      +These tags belong to the ExifTool XMP-sdc family 1 group.
      +
      +  Tag Name                                      Writable
      +  --------                                      --------
      +  About                                         no
      +  AppName                                       no
      +  AppVersion                                    no
      +  Version                                       no
      +
       =head3 Nikon PreviewIFD Tags
       
         Tag ID   Tag Name                             Writable
      @@ -11979,6 +13860,13 @@
             8    POILevel                             int8u
             9    Location                             undef[70]
       
      +=head3 Nikon MakerNotes0x51 Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    FirmwareVersion                      no
      +     10    NEFCompression                       int16u[0.5]
      +
       =head3 Nikon AFInfo Tags
       
         Index1   Tag Name                             Writable
      @@ -12189,6 +14077,9 @@
          4029    PhotoShootingMenuBank                int8u & 0x03
          4031    PrimarySlot                          int8u & 0x80
          4152    CustomSettingsD850                   NikonCustom SettingsD850
      +  12027    RollAngle                            fixed32u
      +  12031    PitchAngle                           fixed32u
      +  12035    YawAngle                             fixed32u
       
       =head3 Nikon ShotInfoD5000 Tags
       
      @@ -12274,6 +14165,8 @@
             0    ShotInfoVersion                      no
             4    FirmwareVersion                      no
           202    Rotation                             int8u & 0x03
      +    208    Interval                             int8u~
      +    212    IntervalFrame                        int8u~
          1506    FlickerReductionIndicator            int8u & 0x01
          2004    JPGCompression                       int8u & 0x01
          2171    AEBracketingSteps                    int8u & 0xff
      @@ -12293,6 +14186,37 @@
         11308    YawAngle                             fixed32u
         11940    NikonMeteringMode                    int8u & 0x03
       
      +=head3 Nikon ShotInfoD6 Tags
      +
      +These tags are extracted from encrypted data in images from the D6.
      +
      +   Index   Tag Name                             Writable
      +   -----   --------                             --------
      +      0    ShotInfoVersion                      no
      +      4    FirmwareVersion                      no
      +  30220    IntervalShooting                     int16u~
      +  49690    RollAngle                            fixed32u
      +  49694    PitchAngle                           fixed32u
      +  49698    YawAngle                             fixed32u
      +  50190    Intervals                            int32u
      +  50194    ShotsPerInterval                     int32u
      +  50198    IntervalExposureSmoothing            int8u
      +  50200    IntervalPriority                     int8u
      +  50234    FocusShiftNumberShots                int8u
      +  50238    FocusShiftStepWidth                  int8u
      +  50242    FocusShiftInterval                   int8u~
      +  50246    FocusShiftExposureLock               int8u
      +  50336    DiffractionCompensation              int8u
      +  50342    FlashControlMode                     int8u
      +  50348    FlashGNDistance?                     no
      +  50352    FlashOutput?                         int8u
      +  50362    FlashRemoteControl?                  int8u
      +  50366    FlashMasterControlMode               int8u
      +  50368    FlashMasterCompensation?             int8s
      +  50372    FlashMasterOutput?                   int8u
      +  50374    FlashWirelessOption?                 int8u
      +  50524    MovieType?                           int8u
      +
       =head3 Nikon ShotInfoD610 Tags
       
       These tags are extracted from encrypted data in images from the D610.
      @@ -12303,6 +14227,157 @@
             4    FirmwareVersion                      no
          1999    CustomSettingsD610                   NikonCustom SettingsD610
       
      +=head3 Nikon ShotInfoZ7II Tags
      +
      +These tags are extracted from encrypted data in images from the Z7II.
      +
      +   Index   Tag Name                             Writable
      +   -----   --------                             --------
      +      0    ShotInfoVersion                      no
      +      4    FirmwareVersion                      no
      +  30220    IntervalShooting                     int16u~
      +  32672    PortraitImpressionBalance            int8u[2]~
      +  52786    RollAngle                            fixed32u
      +  52790    PitchAngle                           fixed32u
      +  52794    YawAngle                             fixed32u
      +  52918    MenuSettingsZ7IIOffset               int8u
      +  52920    MenuSettingsZ7II                     Nikon MenuSettingsZ7II
      +
      +=head3 Nikon MenuSettingsZ7II Tags
      +
      +These tags are used by the Z5, Z6, Z7, Z6II, Z7II, Z50 and Zfc.
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +    160    IntervalDurationHours                int32u
      +    164    IntervalDurationMinutes              int32u
      +    168    IntervalDurationSeconds              int32u
      +    176    Intervals                            int32u
      +    180    ShotsPerInterval                     int32u
      +    184    IntervalExposureSmoothing            int8u
      +    186    IntervalPriority                     int8u
      +    220    FocusShiftNumberShots                int8u
      +    224    FocusShiftStepWidth                  int8u
      +    228    FocusShiftInterval                   int8u~
      +    232    FocusShiftExposureLock               int8u
      +    322    DiffractionCompensation              int8u
      +    323    AutoDistortionControl                int8u
      +    326    NikonMeteringMode                    int8u
      +    328    FlashControlMode                     int8u
      +    334    FlashGNDistance?                     no
      +    338    FlashOutput?                         int8u
      +    346    FlashWirelessOption?                 int8u
      +    348    FlashRemoteControl?                  int8u
      +    352    FlashMasterControlMode               int8u
      +    354    FlashMasterCompensation?             int8s
      +    358    FlashMasterOutput?                   int8u
      +    502    MovieFrameSize?                      int8u
      +    504    MovieFrameRate?                      int8u
      +    506    MovieSlowMotion?                     int8u
      +    510    MovieType?                           int8u
      +    516    MovieISOAutoManualMode?              int16u
      +    568    MovieActiveD-Lighting?               int8u
      +    572    MovieHighISONoiseReduction?          int8u
      +    574    MovieVignetteControl?                int8u
      +    576    MovieVignetteControlSameAsPhoto?     int8u
      +    577    MovieDiffractionCompensation?        int8u
      +    578    MovieAutoDistortionControl?          int8u
      +    584    MovieFocusMode?                      int8u
      +    590    MovieVibrationReduction?             int8u
      +    591    MovieVibrationReductionSameAsPhoto?  int8u
      +    858    HDMIOutputN-Log?                     int8u
      +
      +=head3 Nikon ShotInfoZ9 Tags
      +
      +These tags are extracted from encrypted data in images from the Z9.
      +
      +   Index   Tag Name                             Writable
      +   -----   --------                             --------
      +      0    ShotInfoVersion                      no
      +      4    FirmwareVersion                      no
      +  27800    IntervalShooting                     int16u~
      +  30788    FocusShiftShooting                   int8u~
      +  60139    RollAngle                            fixed32u
      +  60143    PitchAngle                           fixed32u
      +  60147    YawAngle                             fixed32u
      +  60491    MenuSettingsZ9                       Nikon MenuSettingsZ9
      +
      +=head3 Nikon MenuSettingsZ9 Tags
      +
      +These tags are used by the Z9.
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +    140    MultipleExposureMode                 int8u
      +    142    MultiExposureShots                   int8u
      +    188    Intervals                            int32u
      +    192    ShotsPerInterval                     int32u
      +    232    FocusShiftNumberShots                int8u
      +    236    FocusShiftStepWidth                  int8u
      +    240    FocusShiftInterval                   int8u~
      +    244    FocusShiftExposureLock?              int8u
      +    274    PhotoShootingMenuBank                int8u
      +    276    ExtendedMenuBanks                    int8u
      +    308    PhotoShootingMenuBankImageArea       int8u
      +    322    AutoISO                              int8u
      +    324    ISOAutoHiLimit?                      int16u
      +    326    ISOAutoFlashLimit?                   int16u
      +    334    ISOAutoShutterTime                   no
      +    416    MovieVignetteControl?                int8u
      +    418    DiffractionCompensation              int8u
      +    420    FlickerReductionShooting             int8u
      +    424    FlashControlMode                     int8u
      +    426    FlashMasterCompensation?             int8s
      +    430    FlashGNDistance?                     no
      +    434    FlashOutput?                         int8u
      +    444    FlashRemoteControl?                  int8u
      +    456    FlashWirelessOption?                 int8u
      +    528    AFAreaMode                           int8u
      +    530    VRMode                               int8u
      +    534    BracketSet                           int8u
      +    536    BracketProgram                       int8u
      +    538    BracketIncrement                     int8u
      +    556    SecondarySlotFunction                int8u
      +    572    DXCropAlert                          int8u
      +    574    SubjectDetection                     int8u
      +    604    MovieImageArea?                      int8u & 0x01
      +    614    MovieType?                           int8u
      +    616    MovieISOAutoHiLimit?                 int16u
      +    618    MovieISOAutoControlManualMode?       int8u
      +    620    MovieISOAutoManualMode?              int16u
      +    696    MovieActiveD-Lighting?               int8u
      +    698    MovieHighISONoiseReduction?          int8u
      +    704    MovieFlickerReduction                int8u
      +    706    MovieMeteringMode?                   int8u
      +    708    MovieFocusMode?                      int8u
      +    710    MovieAFAreaMode                      int8u
      +    712    MovieVRMode?                         int8u
      +    716    MovieElectronicVR?                   int8u
      +    718    MovieSoundRecording?                 int8u
      +    720    MicrophoneSensitivity?               int8u
      +    722    MicrophoneAttenuator?                int8u
      +    724    MicrophoneFrequencyResponse?         int8u
      +    726    WindNoiseReduction?                  int8u
      +    748    MovieToneMap?                        int8u
      +    754    MovieFrameSize?                      int8u
      +    756    MovieFrameRate?                      int8u
      +    762    MicrophoneJackPower?                 int8u
      +    763    MovieDXCropAlert?                    int8u
      +    764    MovieSubjectDetection?               int8u
      +    799    CustomSettingsZ9                     NikonCustom SettingsZ9
      +   1426    Language?                            int8u
      +   1428    TimeZone                             int8u
      +   1434    MonitorBrightness?                   no
      +   1456    AFFineTune?                          int8u
      +   1552    HDMIOutputResolution                 int8u
      +   1565    SetClockFromLocationData?            int8u
      +   1572    AirplaneMode?                        int8u
      +   1573    EmptySlotRelease?                    int8u
      +   1608    EnergySavingMode?                    int8u
      +   1632    RecordLocationData?                  int8u
      +   1636    USBPowerDelivery?                    int8u
      +   1645    SensorShield?                        int8u
      +
       =head3 Nikon ShotInfo Tags
       
       This information is encrypted for ShotInfoVersion 02xx, and some tags are
      @@ -12620,6 +14695,15 @@
            42    FlashGroupCOutput                    int8u
                  FlashGroupCCompensation              int8s
       
      +=head3 Nikon FlashInfo0300 Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    FlashInfoVersion                     no
      +      4    FlashSource                          int8u
      +      6    ExternalFlashFirmware                int8u[2]
      +     10    FlashCompensation                    int8s
      +
       =head3 Nikon FlashInfoUnknown Tags
       
         Index1   Tag Name                             Writable
      @@ -12635,6 +14719,18 @@
             2    MultiExposureShots                   int32u
             3    MultiExposureAutoGain                int32u
       
      +=head3 Nikon AFInfo2V0400 Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    AFInfo2Version                       no
      +     62    AFImageWidth                         int16u
      +     64    AFImageHeight                        int16u
      +     67    FocusPositionHorizontal              int8u~
      +     69    FocusPositionVertical                int8u~
      +     70    AFAreaWidth                          int16u
      +     72    AFAreaHeight                         int16u
      +
       =head3 Nikon AFInfo2 Tags
       
       These tags are written by Nikon DSLR's which have the live view feature.
      @@ -12653,8 +14749,9 @@
                  AFPointsUsed                         undef[21]
                  AFPointsUsed                         undef[29]
                  AFPointsUsed                         undef[20]
      -           AFPointsUsed                         undef[62]
      +           AFPointsUsed                         undef[13]
                  AFPointsUsed                         undef[7]
      +     10    AFPointsUsed                         undef[14]
            16    AFImageWidth                         int16u
            18    AFImageHeight                        int16u
            20    AFAreaXPosition                      int16u
      @@ -12662,12 +14759,17 @@
            24    AFAreaWidth                          int16u
            26    AFAreaHeight                         int16u
            28    ContrastDetectAFInFocus              int8u
      +           AFPointsSelected                     undef[20]
            42    AFImageWidth                         int16u
            44    AFImageHeight                        int16u
            46    AFAreaXPosition                      int16u
      +     47    AFFocusPointXPosition                int8u~
            48    AFAreaYPosition                      int16u
      +           AFPointsInFocus                      undef[20]
      +     49    AFFocusPointYPosition                int8u~
            50    AFAreaWidth                          int16u
            52    AFAreaHeight                         int16u
      +     56    PrimaryAFPoint                       int8u
            68    PrimaryAFPoint                       int8u
            70    AFImageWidth                         int16u
            72    AFImageHeight                        int16u
      @@ -12693,6 +14795,7 @@
             0    AFFineTune                           int8u
             1    AFFineTuneIndex                      int8u
             2    AFFineTuneAdj                        int8s
      +      3    AFFineTuneAdjTele                    int8s
       
       =head3 Nikon RetouchInfo Tags
       
      @@ -13979,6 +16082,151 @@
          21.2    ShootingInfoMonitorOffTime           int8u & 0x1c
          35.1    PlaybackMonitorOffTime               int8u & 0xe0
       
      +=head3 NikonCustom SettingsZ9 Tags
      +
      +Custom settings for the Z9.
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      1    CustomSettingsBank                   int8u
      +      3    AF-CPrioritySelection                int8u
      +      5    AF-SPrioritySelection                int8u
      +      7    BlockShotAFResponse                  int8u
      +     11    AFPointSel                           int8u
      +     13    StoreByOrientation                   int8u
      +     15    AFActivation                         int8u
      +     16    AF-OnOutOfFocusRelease?              int8u
      +     17    LimitAF-AreaModeSelPinpoint?         int8u
      +     19    LimitAF-AreaModeSelWideAF_S?         int8u
      +     20    LimitAF-AreaModeSelWideAF_L?         int8u
      +     21    LimitAFAreaModeSelAuto?              int8u
      +     22    FocusPointWrap?                      int8u
      +     23    ManualFocusPointIllumination?        int8u
      +     24    DynamicAreaAFAssist?                 int8u
      +     25    AF-AssistIlluminator                 int8u
      +     26    ManualFocusRingInAFMode              int8u
      +     27    ExposureControlStepSize              int8u
      +     29    EasyExposureCompensation             int8u
      +     31    CenterWeightedAreaSize               int8u
      +     33    FineTuneOptMatrixMetering            int8s
      +     35    FineTuneOptCenterWeighted            int8s
      +     37    FineTuneOptSpotMetering              int8s
      +     39    FineTuneOptHighlightWeighted         int8s
      +     41    ShutterReleaseButtonAE-L             int8u
      +     43    SelfTimerTime                        int8u
      +     45    SelfTimerShotCount                   int8u
      +     49    SelfTimerShotInterval                int8u
      +     51    PlaybackMonitorOffTime               int8u
      +     53    MenuMonitorOffTime                   int8u
      +     55    ShootingInfoMonitorOffTime           int8u
      +     57    ImageReviewMonitorOffTime            int8u
      +     59    CLModeShootingSpeed                  int8u
      +     61    MaxContinuousRelease                 no
      +     65    SyncReleaseMode?                     int8u
      +     69    LimitSelectableImageAreaDX?          int8u
      +     70    LimitSelectableImageArea1To1?        int8u
      +     71    LimitSelectableImageArea16To9?       int8u
      +     72    FileNumberSequence                   int8u
      +     73    FocusPeakingLevel?                   int8u
      +     75    FocusPeakingHighlightColor?          int8u
      +     81    ContinuousModeDisplay                int8u
      +     83    FlashSyncSpeed                       no
      +     85    HighSpeedSync                        int8u
      +     87    FlashShutterSpeed                    no
      +     89    FlashExposureCompArea                int8u
      +     91    AutoFlashISOSensitivity              int8u
      +     93    ModelingFlash                        int8u
      +     95    AutoBracketModeM                     int8u
      +     97    AutoBracketOrder                     int8u
      +     99    Func1Button                          int8u
      +    115    Func2Button                          int8u
      +    131    AFOnButton                           int8u
      +    143    SubSelector?                         int8u
      +    155    AssignMovieRecordButton?             int8u
      +    159    LensFunc1Button                      int8u
      +    167    LensFunc2Button                      int8u
      +    173    LensControlRing                      int8u
      +    175    MultiSelectorShootMode               int8u
      +    179    MultiSelectorPlaybackMode            int8u
      +    183    ShutterSpeedLock                     int8u
      +    184    ApertureLock                         int8u
      +    186    CmdDialsReverseRotation              int8u
      +    191    UseDialWithoutHold?                  int8u
      +    193    ReverseIndicators?                   int8u
      +    195    MovieFunc1Button                     int8u
      +    203    MovieAF-OnButton                     int8u
      +    217    MovieMultiSelector?                  int8u
      +    221    MovieAFSpeed                         int8u
      +    223    MovieAFSpeedApply                    int8u
      +    225    MovieAFTrackingSensitivity           int8u
      +    257    LCDIllumination?                     int8u
      +    258    ExtendedShutterSpeeds                int8u
      +    259    SubjectMotion                        int8u
      +    261    FocusPointPersistence                int8u
      +    263    AutoFocusModeRestrictions?           int8u
      +    267    CHModeShootingSpeed                  int8u
      +  269.1    LimitReleaseModeSelCL?               int8u & 0x02
      +  269.2    LimitReleaseModeSelCH?               int8u & 0x04
      +  269.3    LimitReleaseModeSelC30?              int8u & 0x10
      +  269.4    LimitReleaseModeSelC120?             int8u & 0x40
      +  269.5    LimitReleaseModeSelSelf?             int8u & 0x80
      +    273    FlashBurstPriority?                  int8u
      +    277    VerticalFuncButton                   int8u
      +    281    Func3Button                          int8u
      +    285    VerticalAFOnButton                   int8u
      +    293    VerticalMultiSelectorPlaybackMode?   int8u
      +    295    MovieFunc3Button                     int8u
      +    335    LimitAF-AreaModeSelDynamic_S?        int8u
      +    336    LimitAF-AreaModeSelDynamic_M?        int8u
      +    337    LimitAF-AreaModeSelDynamic_L?        int8u
      +    339    LimitAF-AreaModeSel3DTracking?       int8u
      +    341    PlaybackFlickUp?                     int8u
      +    345    PlaybackFlickDown?                   int8u
      +    349    ISOStepSize                          int8u
      +    355    ReverseFocusRing                     int8u
      +    356    EVFImageFrame?                       int8u
      +    357    EVFGrid?                             int8u
      +    359    VirtualHorizonStyle?                 int8u
      +    373    Func4Button?                         int8u
      +    379    AudioButton?                         int8u
      +    381    QualityButton?                       int8u
      +    399    VerticalMultiSelector?               int8u
      +    421    Func1ButtonPlaybackMode?             int8u
      +    423    Func2ButtonPlaybackMode?             int8u
      +    425    Func3ButtonPlaybackMode?             int8u
      +    431    Func4ButtonPlaybackMode?             int8u
      +    437    MovieRecordButtonPlaybackMode?       int8u
      +    439    VerticalFuncButtonPlaybackMode?      int8u
      +    441    AudioButtonPlaybackMode?             int8u
      +    447    QualityButtonPlaybackMode?           int8u
      +    453    WhiteBalanceButtonPlaybackMode?      int8u
      +    459    CommandDialPlaybackMode?             int8u
      +    463    SubCommandDialPlaybackMode?          int8u
      +    467    FocusPointLock?                      int8u
      +    469    ControlRingResponse                  int8u
      +    481    VerticalMovieFuncButton?             int8u
      +    505    VerticalMovieAFOnButton?             int8u
      +    515    MovieAFAreaMode?                     int8u
      +    527    HDMIViewAssist?                      int8u
      +    529    ZebraPatternToneRange?               int8u
      +    531    MovieZebraPattern?                   int8u
      +    533    MovieHighlightDisplayThreshold?      int8u
      +    535    MovieMidtoneDisplayValue?            int8u
      +    537    MovieMidtoneDisplayRange?            int8u~
      +    541    MovieEVFGrid?                        int8u
      +    549    MovieShutterSpeedLock?               int8u
      +    550    MovieFocusPointLock?                 int8u
      +    563    MatrixMetering?                      int8u
      +    564    AF-CFocusDisplay                     int8u
      +    565    FocusPeakingDisplay?                 int8u
      +    567    KeepExposure                         int8u
      +    585    StarlightView?                       int8u
      +    587    EVFWarmDisplayMode?                  int8u
      +    589    EVFWarmDisplayBrightness?            int8s
      +    591    EVFReleaseIndicator?                 int8u
      +    601    MovieApertureLock?                   int8u
      +    607    FlickAdvanceDirection?               int8u
      +
       =head2 NikonCapture Tags
       
       This information is written by the Nikon Capture software in tag 0x0e01 of
      @@ -14391,6 +16639,7 @@
         0x0305   AFPointSelected                      rational64s[5]
         0x0306   AFFineTune                           int8u
         0x0307   AFFineTuneAdj                        int16s[3]
      +  0x0308   FocusBracketStepSize                 int8u
         0x0400   FlashMode                            int16u
         0x0401   FlashExposureComp                    rational64s
         0x0403   FlashRemoteControl                   int16u
      @@ -14749,6 +16998,7 @@
            44    Model                                no
           131    DateTime1                            no
           157    DateTime2                            no
      +    383    LensModel                            no
       
       =head3 Olympus scrn2 Tags
       
      @@ -14860,6 +17110,7 @@
         0x0024   FlashBias                            int16s
         0x0025   InternalSerialNumber                 undef[16]
         0x0026   PanasonicExifVersion                 undef
      +  0x0027   VideoFrameRate                       int16u
         0x0028   ColorEffect                          int16u
         0x0029   TimeSincePowerOn                     int32u
         0x002a   BurstMode                            int16u
      @@ -14874,6 +17125,7 @@
         0x0034   OpticalZoomMode                      int16u
         0x0035   ConversionLens                       int16u
         0x0036   TravelDay                            int16u
      +  0x0038   BatteryLevel                         int16u
         0x0039   Contrast                             int16u
         0x003a   WorldTimeLocation                    int16u
         0x003b   TextStamp                            int16u
      @@ -14935,17 +17187,29 @@
         0x009d   InternalNDFilter                     rational64u
         0x009e   HDR                                  int16u
         0x009f   ShutterType                          int16u
      +  0x00a1   FilterEffect                         rational64u[0.5]
         0x00a3   ClearRetouchValue                    rational64u
         0x00a7   OutputLUT                            yes
         0x00ab   TouchAE                              int16u
      +  0x00ac   MonochromeFilterEffect               int16u
         0x00ad   HighlightShadow                      int16u[2]
         0x00af   TimeStamp                            string
      +  0x00b3   VideoBurstResolution                 int16u
         0x00b4   MultiExposure                        int16u
         0x00b9   RedEyeRemoval                        int16u
         0x00bb   VideoBurstMode                       int32u
         0x00bc   DiffractionCorrection                int16u
      +  0x00bd   FocusBracket                         int16u
      +  0x00be   LongExposureNRUsed                   int16u
      +  0x00bf   PostFocusMerging                     int32u[2]
      +  0x00c1   VideoPreburst                        int16u
      +  0x00c4   LensTypeMake                         int16u
      +  0x00c5   LensTypeModel                        int16u
      +  0x00ca   SensorType                           int16u
         0x00d1   ISO                                  int32u
      +  0x00d2   MonochromeGrainEffect                int16u
         0x00d6   NoiseReductionStrength               rational64s
      +  0x00e4   LensTypeModel                        int16u
         0x0e00   PrintIM                              PrintIM
         0x2003   TimeInfo                             Panasonic TimeInfo
         0x8000   MakerNoteVersion                     undef
      @@ -15137,13 +17401,19 @@
       
       =head3 Panasonic Leica9 Tags
       
      -This information is written by the Leica S (Typ 007).
      +This information is written by the Leica S (Typ 007) and M10 models.
       
         Tag ID   Tag Name                             Writable
         ------   --------                             --------
         0x0304   FocusDistance                        int32u
         0x0311   ExternalSensorBrightnessValue        rational64s
         0x0312   MeasuredLV                           rational64s
      +  0x034c   UserProfile                          string
      +  0x0359   ISOSelected                          int32s
      +  0x035a   FNumber                              int32s
      +  0x035b   CorrelatedColorTemp                  int16u
      +  0x035c   ColorTint                            int16s
      +  0x035d   WhitePoint                           rational64u[2]
       
       =head3 Panasonic Type2 Tags
       
      @@ -15292,10 +17562,12 @@
         0x0080   AspectRatio                          yes
         0x0082   BlurControl                          int8u[4]
         0x0085   HDR                                  int8u[4]
      +  0x0087   ShutterType                          int8u
         0x0088   NeutralDensityFilter                 int8u[n]
         0x008b   ISO                                  int32u
         0x0092   IntervalShooting                     int16u[2]
         0x0095   SkinToneCorrection                   int8s[2]
      +           SkinToneCorrection                   int8s[3]
         0x0096   ClarityControl                       int8s[2]
         0x0200   BlackPoint                           int16u[4]
         0x0201   WhitePoint                           int16u[4]
      @@ -15328,6 +17600,8 @@
         0x0215   CameraInfo                           Pentax CameraInfo
         0x0216   BatteryInfo                          Pentax BatteryInfo
         0x021b   SaturationInfo?                      no
      +  0x021c   ColorMatrixA2                        undef[18]
      +  0x021d   ColorMatrixB2                        undef[18]
         0x021f   AFInfo                               Pentax AFInfo
         0x0220   HuffmanTable?                        no
         0x0221   KelvinWB                             Pentax KelvinWB
      @@ -15338,6 +17612,7 @@
         0x0228   FaceSize                             Pentax FaceSize
         0x0229   SerialNumber                         string
         0x022a   FilterInfo                           Pentax FilterInfo
      +                                                Pentax FilterInfo
         0x022b   LevelInfo                            Pentax LevelInfo
         0x022d   WBLevels                             Pentax WBLevels
         0x022e   Artist                               string
      @@ -16355,11 +18630,13 @@
       
       Tags extracted from the trailer of JPEG images written when using certain
       features (such as "Sound & Shot" or "Shot & More") from Samsung models such
      -as the Galaxy S4 and Tab S.
      +as the Galaxy S4 and Tab S, and from the 'sefd' atom in HEIC images from the
      +Samsung S10+.
       
         Tag Name                                      Writable
         --------                                      --------
         DepthMapData                                  no
      +  DepthMapData2                                 no
         DepthMapName                                  no
         DualCameraImage                               no
         DualCameraImageName                           no
      @@ -16367,9 +18644,11 @@
         EmbeddedAudioFile                             no
         EmbeddedAudioFileName                         no
         EmbeddedImage                                 no
      +  EmbeddedImage2                                no
         EmbeddedImageName                             no
         EmbeddedVideoFile                             no
         EmbeddedVideoType                             no
      +  MCCData                                       no
         SingleShotDepthMap                            no
         SingleShotMeta                                Samsung SingleShotMeta
         SurroundShotVideo                             no
      @@ -16644,6 +18923,7 @@
         'Location'           Location                 no
         'Sign type'          SignType                 no
         '_audio'             SoundFile                no
      +  '_barcode'           Barcodes                 no+
       
       =head3 Ricoh AVI Tags
       
      @@ -16853,10 +19133,18 @@
         0x202e   Quality                              int16u[2]
         0x202f   PixelShiftInfo                       undef
         0x2031   SerialNumber                         string
      +  0x2032   Shadows                              int32s
      +  0x2033   Highlights                           int32s
      +  0x2034   Fade                                 int32s
      +  0x2035   SharpnessRange                       int32s
      +  0x2036   Clarity                              int32s
      +  0x2037   FocusFrameSize                       no
      +  0x2039   JPEG-HEIFSwitch                      int16u
         0x3000   ShotInfo                             Sony ShotInfo
         0x900b   Tag900b                              Sony Tag900b
         0x9050   Tag9050a                             Sony Tag9050a
                  Tag9050b                             Sony Tag9050b
      +           Tag9050c                             Sony Tag9050c
         0x9400   Tag9400a                             Sony Tag9400a
                  Tag9400b                             Sony Tag9400b
                  Tag9400c                             Sony Tag9400c
      @@ -16873,6 +19161,7 @@
         0x940c   Tag940c                              Sony Tag940c
         0x940e   AFInfo                               Sony AFInfo
                  Tag940e                              Sony Tag940e
      +  0x9416   Sony_0x9416                          Sony Tag9416
         0xb000   FileFormat                           int8u[4]
         0xb001   SonyModelID                          int16u
         0xb020   CreativeStyle                        string
      @@ -17732,7 +20021,7 @@
       
       =head3 Sony Tag2010i Tags
       
      -Valid for ILCE-6100/6400/6600/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M6/
      +Valid for ILCE-6100/6400/6600/7C/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M6/
       RX100M5A/RX100M7/HX99.
       
         Index1   Tag Name                             Writable
      @@ -17895,7 +20184,7 @@
       
       =head3 Sony Tag9050b Tags
       
      -Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/
      +Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/
       7SM2/9/9M2, ILCA-99M2.
       
         Index1   Tag Name                             Writable
      @@ -17935,6 +20224,25 @@
                  APS-CSizeCapture                     int8u
           542    LensSpecFeatures                     undef[2]
       
      +=head3 Sony Tag9050c Tags
      +
      +Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +     38    Shutter                              int16u[3]
      +     57    FlashStatus                          int8u
      +     58    ShutterCount                         int32u~
      +     70    SonyExposureTime                     int16u
      +     72    SonyFNumber                          int16u
      +     75    ReleaseMode2                         int8u
      +     80    ShutterCount2                        int32u
      +    102    SonyExposureTime                     int16u
      +    104    SonyFNumber                          int16u
      +    107    ReleaseMode2                         int8u
      +    136    InternalSerialNumber                 int8u[6]~
      +    138    InternalSerialNumber                 int8u[6]~
      +
       =head3 Sony Tag9400a Tags
       
       Valid for many DSC, NEX and SLT models
      @@ -17974,14 +20282,13 @@
       
       Valid for DSC-HX60V/HX80/HX90V/HX99/HX350/HX400V/QX30/RX0/RX1RM2/RX10/
       RX10M2/RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/WX220/
      -WX350/WX500, ILCE-7/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2/5000/5100/6000/
      -6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.
      +WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
      +5100/6000/6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.
       
         Index1   Tag Name                             Writable
         ------   --------                             --------
             9    ReleaseMode2                         int8u
      -     10    ShotNumberSincePowerUp               int8u
      -           ShotNumberSincePowerUp               int32u
      +     10    ShotNumberSincePowerUp               int32u
            18    SequenceImageNumber                  int32u
            22    SequenceLength                       int8u
            26    SequenceFileNumber                   int32u
      @@ -17996,6 +20303,8 @@
         Index1   Tag Name                             Writable
         ------   --------                             --------
          1176    ISOInfo                              Sony ISOInfo
      +   1181    ISOInfo                              Sony ISOInfo
      +   1185    ISOInfo                              Sony ISOInfo
          1186    ISOInfo                              Sony ISOInfo
          1437    ISOInfo                              Sony ISOInfo
          1588    ISOInfo                              Sony ISOInfo
      @@ -18135,7 +20444,7 @@
       
       =head3 Sony Tag940c Tags
       
      -NEX and ILCE models only.
      +E-mount cameras only.
       
         Index1   Tag Name                             Writable
         ------   --------                             --------
      @@ -18323,6 +20632,36 @@
          6663    TiffMeteringImageHeight              no
          6664    TiffMeteringImage                    no
       
      +=head3 Sony Tag9416 Tags
      +
      +Valid for the ILCE-1/7M4/7SM3, ILME-FX3.
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    Tag9416_0000                         no
      +      4    SonyISO                              no
      +      6    StopsAboveBaseISO                    no
      +     10    SonyExposureTime2                    no
      +     12    ExposureTime                         no
      +     16    SonyFNumber2                         no
      +     18    SonyMaxApertureValue                 no
      +     29    SequenceImageNumber                  no
      +     53    ExposureProgram                      no
      +     72    LensMount                            no
      +     73    LensFormat                           no
      +     74    LensMount                            no
      +     75    LensType2                            no
      +     77    LensType                             no
      +     79    DistortionCorrParams                 no
      +    112    PictureProfile                       no
      +    113    FocalLength                          no
      +    115    MinFocalLength                       no
      +    117    MaxFocalLength                       no
      +   2191    VignettingCorrParams                 no
      +   2193    VignettingCorrParams                 no
      +   2324    ChromaticAberrationCorrParams        no
      +   2326    ChromaticAberrationCorrParams        no
      +
       =head3 Sony PIC Tags
       
       The TextInfo data is extracted as a block to preserve the formatting, and
      @@ -18492,7 +20831,25 @@
       
         Tag ID   Tag Name                             Writable
         ------   --------                             --------
      +  0x8000   FNumber                              no
      +  0x8109   ExposureTime                         no
      +  0x810a   MasterGainAdjustment                 no
      +  0x810b   ISO                                  no
      +  0x810c   ElectricalExtenderMagnification      no
      +  0x8500   GPSVersionID                         no
      +  0x8501   GPSLatitudeRef                       no
      +  0x8502   GPSLatitude                          no
      +  0x8503   GPSLongitudeRef                      no
      +  0x8504   GPSLongitude                         no
      +  0x8507   GPSTimeStamp                         no
      +  0x8509   GPSStatus                            no
      +  0x850a   GPSMeasureMode                       no
      +  0x8512   GPSMapDatum                          no
      +  0x851d   GPSDateStamp                         no
      +  0xe303   WhiteBalance                         no
         0xe304   DateTime                             no
      +  0xe43b   PitchRollYaw                         no
      +  0xe44b   Accelerometer                        no
       
       =head2 SonyIDC Tags
       
      @@ -18913,7 +21270,7 @@
            16    WB_RBLevelsCloudy                    int16u[2]
            20    WB_RBLevelsCoolWhiteF                int16u[2]
            24    WB_RBLevelsFlash                     int16u[2]
      -     28    WB_RBLevelsUnknown?                  int16u[2]
      +     28    WB_RBLevelsCustom                    int16u[2]
            32    WB_RBLevelsShade                     int16u[2]
            36    WB_RBLevelsDaylightF                 int16u[2]
            40    WB_RBLevelsDayWhiteF                 int16u[2]
      @@ -19063,7 +21420,11 @@
         0x1201   LensTypeMake                         no
         0x1202   LensTypeModel                        no
         0x1203   FocalLengthIn35mmFormat              no
      +  0x1301   ApertureValue                        no
      +  0x1302   ShutterSpeedValue                    no
      +  0x1303   SensitivityValue                     no
         0x1305   HighISOMode                          no
      +  0x1412   FacesDetected                        no
         0x3200   WB_CFA0_LevelDaylight                no
         0x3201   WB_CFA1_LevelDaylight                no
         0x3202   WB_CFA2_LevelDaylight                no
      @@ -19601,8 +21962,8 @@
       from this segment is stored as a JPEG trailer.  The MPF tags are not
       writable, however the MPF segment may be deleted as a group (with "MPF:All")
       but then the JPEG trailer should also be deleted (with "Trailer:All").  See
      -L for the official
      -specification.
      +L
      +for the official specification.
       
         Tag ID   Tag Name                             Writable
         ------   --------                             --------
      @@ -19647,8 +22008,8 @@
       
       These tags are part of the CIPA Stereo Still Image specification, and are
       found in the APP3 "Stim" segment of JPEG images.  See
      -L for the
      -official specification.
      +L
      +for the official specification.
       
         Tag ID   Tag Name                             Writable
         ------   --------                             --------
      @@ -19735,6 +22096,7 @@
         'EISA'   ElectronicImageStabilization         no
         'EMPT'   Empty?                               no
         'ESCS'   EscapeStatus?                        no
      +  'EXPT'   MaximumShutterAngle                  no
         'FACE'   FaceDetected                         no
         'FCNM'   FaceNumbers                          no
         'FMWR'   FirmwareVersion                      no
      @@ -19752,7 +22114,11 @@
         'LNED'   LocalPositionNED                     no
         'MAGN'   Magnetometer                         no
         'MINF'   Model                                no
      +  'MTRX'   AccelerometerMatrix                  no
      +  'MUID'   MediaUniqueID                        no
         'OREN'   AutoRotation                         no
      +  'ORIN'   InputOrientation                     no
      +  'ORIO'   OutputOrientation                    no
         'PHDR'   HDRSetting                           no
         'PIMN'   AutoISOMin                           no
         'PIMX'   AutoISOMax                           no
      @@ -19769,6 +22135,7 @@
         'SHUT'   ExposureTimes                        no
         'SIMU'   ScaledIMU                            no
         'SIUN'   SIUnits?                             no
      +  'SROT'   SensorReadoutTime                    no
         'STMP'   TimeStamp                            no
         'STNM'   StreamName?                          no
         'STRM'   NestedSignalStream                   GoPro GPMF
      @@ -19776,7 +22143,9 @@
         'TMPC'   CameraTemperature                    no
         'TSMP'   TotalSamples?                        no
         'TYPE'   StructureType?                       no
      +  'UNIF'   InputUniformity                      no
         'UNIT'   Units?                               no
      +  'VERS'   MetadataVersion                      no
         'VFOV'   FieldOfView                          no
         'VFRH'   VisualFlightRulesHUD                 no
         'WBAL'   ColorTemperatures                    no
      @@ -21042,6 +23411,209 @@
         YhiYloCorK1                                   no
         YhiYloCorK2                                   no
       
      +=head2 Jpeg2000 Tags
      +
      +The tags below are found in JPEG 2000 images and the JUMBF metadata in JPEG
      +images, but not all of these are extracted.  Note that ExifTool currently
      +writes only EXIF, IPTC and XMP tags in Jpeg2000 images.
      +
      +  Tag ID   Tag Name                             Writable
      +  ------   --------                             --------
      +  'Exif'   EXIF                                 EXIF
      +  'asoc'   Association                          Jpeg2000
      +  'bfdb'   BinaryDataType                       no
      +  'bfil'   BinaryFilter                         no
      +  'bidb'   BinaryData                           no
      +  'bpcc'   BitsPerComponent                     no
      +  'cbor'   CBORData                             CBOR
      +  'cdef'   ComponentDefinition                  no
      +  'cgrp'   ColorGroup                           no
      +  'chck'   DigitalSignature                     no
      +  'cmap'   ComponentMapping                     no
      +  'colr'   ColorSpecification                   Jpeg2000 ColorSpec
      +  'comp'   Composition                          no
      +  'copt'   CompositionOptions                   no
      +  'cref'   Cross-Reference                      no
      +  'creg'   CodestreamRegistration               no
      +  'drep'   DesiredReproductions                 no
      +  'dtbl'   DataReference                        no
      +  'flst'   FragmentList                         no
      +  'free'   Free                                 no
      +  'ftbl'   FragmentTable                        no
      +  'ftyp'   FileType                             Jpeg2000 FileType
      +  'gtso'   GraphicsTechnologyStandardOutput     no
      +  'ihdr'   ImageHeader                          Jpeg2000 ImageHeader
      +  'inst'   InstructionSet                       no
      +  'jP  '   JP2Signature                         no
      +  'jp2c'   ContiguousCodestream                 no
      +           PreviewImage                         no
      +  'jp2h'   JP2Header                            Jpeg2000
      +  'jp2i'   IntellectualProperty                 XMP
      +  'jpch'   CodestreamHeader                     Jpeg2000
      +  'jplh'   CompositingLayerHeader               Jpeg2000
      +  'json'   JSONData                             JSON
      +  'jumb'   JUMBFBox                             Jpeg2000
      +  'jumd'   JUMBFDescr                           Jpeg2000 JUMD
      +  'jxlc'   JXLCodestream                        no
      +  'lbl '   Label                                no
      +  'mdat'   MediaData                            no
      +  'mp7b'   MPEG7Binary                          no
      +  'nlst'   NumberList                           no
      +  'opct'   Opacity                              no
      +  'pclr'   Palette                              no
      +  'prfl'   Profile                              no
      +  'res '   Resolution                           Jpeg2000
      +  'resc'   CaptureResolution                    Jpeg2000 CaptureResolution
      +  'resd'   DisplayResolution                    Jpeg2000 DisplayResolution
      +  'roid'   ROIDescription                       no
      +  'rreq'   ReaderRequirements                   no
      +  'uinf'   UUIDInfo                             Jpeg2000
      +  'ulst'   UUIDList                             no
      +  'url '   URL                                  no
      +  'uuid'   UUID-EXIF                            EXIF
      +           UUID-EXIF2                           EXIF
      +           UUID-EXIF_bad                        EXIF
      +           UUID-IPTC                            IPTC
      +           UUID-IPTC2                           IPTC
      +           UUID-XMP                             XMP
      +           UUID-GeoJP2                          EXIF
      +           UUID-Photoshop                       Photoshop
      +           UUID-Signature                       no
      +           UUID-C2PAClaimSignature              -
      +           UUID-Unknown                         no
      +  'xml '   XML                                  XMP XML
      +           XMP                                  -
      +                                                XMP
      +
      +=head3 Jpeg2000 ColorSpec Tags
      +
      +The table below contains tags in the color specification (colr) box.  This
      +box may be rewritten by writing either ICC_Profile, ColorSpace or
      +ColorSpecData.  When writing, any existing colr boxes are replaced with the
      +newly created colr box.
      +
      +B: Care must be taken when writing this color specification because
      +writing a specification that is incompatible with the image data may make
      +the image undisplayable.
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    ColorSpecMethod                      int8s!
      +      1    ColorSpecPrecedence                  int8s!
      +      2    ColorSpecApproximation               int8s!
      +      3    ICC_Profile                          ICC_Profile
      +           ColorSpace                           int32u!
      +           ColorSpecData                        undef!
      +
      +=head3 Jpeg2000 FileType Tags
      +
      +  Index4   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    MajorBrand                           no
      +      1    MinorVersion                         no
      +      2    CompatibleBrands                     no
      +
      +=head3 Jpeg2000 ImageHeader Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    ImageHeight                          no
      +      4    ImageWidth                           no
      +      8    NumberOfComponents                   no
      +     10    BitsPerComponent                     no
      +     11    Compression                          no
      +
      +=head3 Jpeg2000 JUMD Tags
      +
      +Information extracted from the JUMBF description box.
      +
      +  Tag ID       Tag Name                         Writable
      +  ------       --------                         --------
      +  'id'         JUMDID                           no
      +  'label'      JUMDLabel                        no
      +  'sig'        JUMDSignature                    no
      +  'toggles'    JUMDToggles?                     no
      +  'type'       JUMDType                         no
      +
      +=head3 Jpeg2000 CaptureResolution Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    CaptureYResolution                   no
      +      4    CaptureXResolution                   no
      +      8    CaptureYResolutionUnit               no
      +      9    CaptureXResolutionUnit               no
      +
      +=head3 Jpeg2000 DisplayResolution Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    DisplayYResolution                   no
      +      4    DisplayXResolution                   no
      +      8    DisplayYResolutionUnit               no
      +      9    DisplayXResolutionUnit               no
      +
      +=head2 JSON Tags
      +
      +Other than a few tags in the table below, JSON tags have not been
      +pre-defined.  However, ExifTool will read any existing tags from basic
      +JSON-formatted files.
      +
      +  Tag Name                                      Writable
      +  --------                                      --------
      +  ON1_SettingsData                              PLIST
      +  ON1_SettingsMetadataCreated                   no
      +  ON1_SettingsMetadataModified                  no
      +  ON1_SettingsMetadataName                      no
      +  ON1_SettingsMetadataPluginID                  no
      +  ON1_SettingsMetadataTimestamp                 no
      +  ON1_SettingsMetadataUsage                     no
      +  ON1_SettingsMetadataVisibleToUser             no
      +
      +=head2 CBOR Tags
      +
      +The tags below are extracted from CBOR (Concise Binary Object
      +Representation) metadata.  The C2PA specification uses this format for some
      +metadata.  As well as these tags, ExifTool will read any existing tags.
      +
      +  Tag Name                                      Writable
      +  --------                                      --------
      +  AuthorIdentifier                              no
      +  AuthorName                                    no
      +  DocumentID                                    no
      +  Format                                        no
      +  InstanceID                                    no
      +  Relationship                                  no
      +  ThumbnailHash                                 no+
      +  ThumbnailURL                                  no
      +  Title                                         no
      +
      +=head2 PLIST Tags
      +
      +Apple Property List tags.  ExifTool reads both XML and binary-format PLIST
      +files, and will extract any existing tags even if they aren't listed below.
      +These tags belong to the family 0 "PLIST" group, but family 1 group may be
      +either "XML" or "PLIST" depending on whether the format is XML or binary.
      +
      +  Tag ID                       Tag Name         Writable
      +  ------                       --------         --------
      +  'MetaDataList//DateTimeOriginal'
      +                               DateTimeOriginal no
      +  'MetaDataList//Duration'     Duration         no
      +  'MetaDataList//Geolocation/Latitude'
      +                               GPSLatitude      no
      +  'MetaDataList//Geolocation/Longitude'
      +                               GPSLongitude     no
      +  'MetaDataList//Geolocation/MapDatum'
      +                               GPSMapDatum      no
      +  'XMLFileType'                XMLFileType      no
      +  'cast//name'                 Cast             no+
      +  'codirectors//name'          Codirectors      no+
      +  'directors//name'            Directors        no+
      +  'producers//name'            Producers        no+
      +  'screenwriters//name'        Screenwriters    no+
      +  'studio//name'               Studio           no+
      +
       =head2 APP12 Tags
       
       =head3 APP12 PictureInfo Tags
      @@ -21172,9 +23744,9 @@
         EventEarliestDate                             date_
         EventEndDayOfYear                             integer_
         EventDate                                     date_
      -  EventID                                       string_
      +  EventID                                       string/_
         EventRemarks                                  lang-alt_
      -  EventTime                                     date_
      +  EventTime                                     string_
         EventFieldNotes                               string_
         EventFieldNumber                              string_
         EventHabitat                                  string_
      @@ -21214,9 +23786,9 @@
         HumanObservationEarliestDate                  date_
         HumanObservationEndDayOfYear                  integer_
         HumanObservationEventDate                     date_
      -  HumanObservationEventID                       string_
      +  HumanObservationEventID                       string/_
         HumanObservationEventRemarks                  lang-alt_
      -  HumanObservationEventTime                     date_
      +  HumanObservationEventTime                     string_
         HumanObservationFieldNotes                    string_
         HumanObservationFieldNumber                   string_
         HumanObservationHabitat                       string_
      @@ -21246,9 +23818,9 @@
         MachineObservationEarliestDate                date_
         MachineObservationEndDayOfYear                integer_
         MachineObservationEventDate                   date_
      -  MachineObservationEventID                     string_
      +  MachineObservationEventID                     string/_
         MachineObservationEventRemarks                lang-alt_
      -  MachineObservationEventTime                   date_
      +  MachineObservationEventTime                   string_
         MachineObservationFieldNotes                  string_
         MachineObservationFieldNumber                 string_
         MachineObservationHabitat                     string_
      @@ -21424,7 +23996,7 @@
         EventDate                                     date
         EventID                                       string
         EventRemarks                                  lang-alt
      -  EventTime                                     date
      +  EventTime                                     string
         FieldNotes                                    string
         FieldNumber                                   string
         Habitat                                       string
      @@ -21786,8 +24358,13 @@
       
       =head3 Microsoft Xtra Tags
       
      -Tags extracted from the Microsoft "Xtra" atom of QuickTime videos.  Tag ID's
      -are not shown because some are unruly GUID's.
      +Tags found in the Microsoft "Xtra" atom of QuickTime videos.  Tag ID's are
      +not shown because some are unruly GUID's.  Currently most of these tags are
      +not writable because the Microsoft documentation is poor and samples were
      +not available, but more tags may be made writable in the future if samples
      +are provided.  Note that writable tags in this table are are flagged to
      +"Avoid", which means that other more common tags will be written instead if
      +possible unless the Microsoft group is specified explicitly.
       
         Tag Name                                      Writable
         --------                                      --------
      @@ -21799,13 +24376,13 @@
         AcquisitionTimeYear                           no
         AcquisitionTimeYearMonth                      no
         AcquisitionTimeYearMonthDay                   no
      -  AlbumArtist                                   no
      +  AlbumArtist                                   Unicode/
         AlbumArtist                                   no
         AlbumArtistSortOrder                          no
      -  AlbumCoverURL                                 no
      +  AlbumCoverURL                                 Unicode/
         AlbumID                                       no
         AlbumIDAlbumArtist                            no
      -  AlbumTitle                                    no
      +  AlbumTitle                                    Unicode/
         AlbumTitle                                    no
         AlbumTitleSortOrder                           no
         AlternateSourceURL                            no
      @@ -21822,6 +24399,7 @@
         Author                                        no
         Author                                        no
         AuthorSortOrder                               no
      +  AuthorURL                                     Unicode/
         AutoSummary                                   no
         AverageLevel                                  no
         BccAddresses                                  no
      @@ -21854,7 +24432,7 @@
         CameraModel                                   no
         CameraModel                                   no
         CarPhone                                      no
      -  Category                                      no
      +  Category                                      Unicode/+
         Category                                      no
         CcAddresses                                   no
         CcNames                                       no
      @@ -21873,13 +24451,13 @@
         Company                                       no
         CompanyMainPhone                              no
         Complete                                      no
      -  Composer                                      no
      +  Composer                                      Unicode/
         Composers                                     no
         Computer                                      no
      -  Conductor                                     no
      +  Conductor                                     Unicode/+
         Conductors                                    no
         ContactNames                                  no
      -  ContentDistributor                            no
      +  ContentDistributor                            Unicode/
         ContentDistributorDuration                    no
         ContentDistributorType                        no
         ContentGroupDescription                       no
      @@ -21902,7 +24480,7 @@
         DataRate                                      no
         Date                                          no
         DateAccessed                                  no
      -  DateAcquired                                  no
      +  DateAcquired                                  vt_filetime/
         DateArchived                                  no
         DateCompleted                                 no
         DateCreated                                   no
      @@ -21919,7 +24497,7 @@
         Description                                   no
         Description                                   no
         Dimensions                                    no
      -  Director                                      no
      +  Director                                      Unicode/+
         Directors                                     no
         DisplayArtist                                 no
         Division                                      no
      @@ -21933,8 +24511,9 @@
         E-mailAddress                                 no
         E-mailDisplayName                             no
         E-mailList                                    no
      +  EncodedBy                                     Unicode/
         EncodedBy                                     no
      -  EncodingTime                                  no
      +  EncodingTime                                  date/
         EndDate                                       no
         EntryType                                     no
         EpisodeName                                   no
      @@ -21992,7 +24571,7 @@
         ISOSpeed                                      no
         Importance                                    no
         Incomplete                                    no
      -  InitialKey                                    no
      +  InitialKey                                    Unicode/
         InitialKey                                    no
         Initials                                      no
         IsAttachment                                  no
      @@ -22026,8 +24605,8 @@
         MCDI                                          no
         MailingAddress                                no
         MaxAperture                                   no
      -  MediaClassPrimaryID                           no
      -  MediaClassSecondaryID                         no
      +  MediaClassPrimaryID                           GUID/
      +  MediaClassSecondaryID                         GUID/
         MediaContentTypes                             no
         MediaCreated                                  no
         MediaOriginalBroadcastDateTime                no
      @@ -22038,7 +24617,7 @@
         MiddleName                                    no
         Mileage                                       no
         ModifiedBy                                    no
      -  Mood                                          no
      +  Mood                                          Unicode/
         Mood                                          no
         MoreInfo                                      no
         Name                                          no
      @@ -22051,9 +24630,9 @@
         OrganizerAddress                              no
         OrganizerName                                 no
         Orientation                                   no
      -  OriginalAlbumTitle                            no
      -  OriginalArtist                                no
      -  OriginalLyricist                              no
      +  OriginalAlbumTitle                            Unicode/
      +  OriginalArtist                                Unicode/
      +  OriginalLyricist                              Unicode/
         OtherAddress                                  no
         OtherCity                                     no
         OtherCountry-Region                           no
      @@ -22065,7 +24644,7 @@
         POBox                                         no
         Pager                                         no
         Pages                                         no
      -  ParentalRating                                no
      +  ParentalRating                                Unicode/
         ParentalRating                                no
         ParentalRatingReason                          no
         PartOfSet                                     no
      @@ -22075,7 +24654,7 @@
         Path                                          no
         PeakValue                                     no
         PerceivedType                                 no
      -  Period                                        no
      +  Period                                        Unicode/
         Period                                        no
         PersonalTitle                                 no
         PixelAspectRatioX                             no
      @@ -22085,7 +24664,7 @@
         PrimaryE-mail                                 no
         PrimaryPhone                                  no
         Priority                                      no
      -  Producer                                      no
      +  Producer                                      Unicode/+
         Producers                                     no
         ProductName                                   no
         ProductVersion                                no
      @@ -22094,15 +24673,16 @@
         ProgramMode                                   no
         ProgramName                                   no
         Project                                       no
      +  PromotionURL                                  Unicode/
         Protected                                     no
         ProtectionType                                no
         Provider                                      no
      -  Provider                                      no
      +  Provider                                      Unicode/
         ProviderLogoURL                               no
         ProviderRating                                no
         ProviderStyle                                 no
         ProviderURL                                   no
      -  Publisher                                     no
      +  Publisher                                     Unicode/
         Publisher                                     no
         RadioBand                                     no
         RadioFormat                                   no
      @@ -22136,7 +24716,7 @@
         Sensitivity                                   no
         ShadowFilePath                                no
         Shared                                        no
      -  SharedUserRating                              no
      +  SharedUserRating                              int64u/
         SharedWith                                    no
         Size                                          no
         Slides                                        no
      @@ -22157,7 +24737,7 @@
         Subject                                       no
         SubjectDistance                               no
         SubscriptionContentID                         no
      -  Subtitle                                      no
      +  Subtitle                                      Unicode/
         Subtitle                                      no
         SubtitleDescription                           no
         Suffix                                        no
      @@ -22236,7 +24816,7 @@
         WhiteBalance                                  no
         WindowsFileName                               no
         WordCount                                     no
      -  Writer                                        no
      +  Writer                                        Unicode/
         Writers                                       no
         Year                                          no
         Year                                          no
      @@ -22590,113 +25170,6 @@
         'Duration'   Duration                         rational64u~
         'data'       RelatedVideoFile                 undef
       
      -=head2 Jpeg2000 Tags
      -
      -The tags below are extracted from JPEG 2000 images, however ExifTool
      -currently writes only EXIF, IPTC and XMP tags in these images.
      -
      -  Tag ID   Tag Name                             Writable
      -  ------   --------                             --------
      -  'asoc'   Association                          no
      -  'bfil'   BinaryFilter                         no
      -  'bpcc'   BitsPerComponent                     no
      -  'cdef'   ComponentDefinition                  no
      -  'cgrp'   ColorGroup                           no
      -  'chck'   DigitalSignature                     no
      -  'cmap'   ComponentMapping                     no
      -  'colr'   ColorSpecification                   Jpeg2000 ColorSpec
      -  'comp'   Composition                          no
      -  'copt'   CompositionOptions                   no
      -  'cref'   Cross-Reference                      no
      -  'creg'   CodestreamRegistration               no
      -  'drep'   DesiredReproductions                 no
      -  'dtbl'   DataReference                        no
      -  'flst'   FragmentList                         no
      -  'free'   Free                                 no
      -  'ftbl'   FragmentTable                        no
      -  'ftyp'   FileType                             Jpeg2000 FileType
      -  'gtso'   GraphicsTechnologyStandardOutput     no
      -  'ihdr'   ImageHeader                          Jpeg2000 ImageHeader
      -  'inst'   InstructionSet                       no
      -  'jP  '   JP2Signature                         no
      -  'jp2c'   ContiguousCodestream                 no
      -  'jp2h'   JP2Header                            Jpeg2000
      -  'jp2i'   IntellectualProperty                 XMP
      -  'jpch'   CodestreamHeader                     Jpeg2000
      -  'jplh'   CompositingLayerHeader               Jpeg2000
      -  'lbl '   Label                                no
      -  'mdat'   MediaData                            no
      -  'mp7b'   MPEG7Binary                          no
      -  'nlst'   NumberList                           no
      -  'opct'   Opacity                              no
      -  'pclr'   Palette                              no
      -  'prfl'   Profile                              no
      -  'res '   Resolution                           Jpeg2000
      -  'resc'   CaptureResolution                    Jpeg2000 CaptureResolution
      -  'resd'   DisplayResolution                    Jpeg2000 DisplayResolution
      -  'roid'   ROIDescription                       no
      -  'rreq'   ReaderRequirements                   no
      -  'uinf'   UUIDInfo                             Jpeg2000
      -  'ulst'   UUIDList                             no
      -  'url '   URL                                  no
      -  'uuid'   UUID-EXIF                            EXIF
      -           UUID-EXIF2                           EXIF
      -           UUID-EXIF_bad                        EXIF
      -           UUID-IPTC                            IPTC
      -           UUID-IPTC2                           IPTC
      -           UUID-XMP                             XMP
      -           UUID-GeoJP2                          EXIF
      -           UUID-Photoshop                       Photoshop
      -           UUID-Unknown                         no
      -  'xml '   XML                                  XMP
      -
      -=head3 Jpeg2000 ColorSpec Tags
      -
      -  Index1   Tag Name                             Writable
      -  ------   --------                             --------
      -      0    ColorSpecMethod                      no
      -      1    ColorSpecPrecedence                  no
      -      2    ColorSpecApproximation               no
      -      3    ICC_Profile                          ICC_Profile
      -           ColorSpace                           no
      -           ColorSpecData                        no
      -
      -=head3 Jpeg2000 FileType Tags
      -
      -  Index4   Tag Name                             Writable
      -  ------   --------                             --------
      -      0    MajorBrand                           no
      -      1    MinorVersion                         no
      -      2    CompatibleBrands                     no
      -
      -=head3 Jpeg2000 ImageHeader Tags
      -
      -  Index1   Tag Name                             Writable
      -  ------   --------                             --------
      -      0    ImageHeight                          no
      -      4    ImageWidth                           no
      -      8    NumberOfComponents                   no
      -     10    BitsPerComponent                     no
      -     11    Compression                          no
      -
      -=head3 Jpeg2000 CaptureResolution Tags
      -
      -  Index1   Tag Name                             Writable
      -  ------   --------                             --------
      -      0    CaptureYResolution                   no
      -      4    CaptureXResolution                   no
      -      8    CaptureYResolutionUnit               no
      -      9    CaptureXResolutionUnit               no
      -
      -=head3 Jpeg2000 DisplayResolution Tags
      -
      -  Index1   Tag Name                             Writable
      -  ------   --------                             --------
      -      0    DisplayYResolution                   no
      -      4    DisplayXResolution                   no
      -      8    DisplayYResolutionUnit               no
      -      9    DisplayXResolutionUnit               no
      -
       =head2 GIF Tags
       
       This table lists information extracted from GIF images. See
      @@ -22712,6 +25185,7 @@
         GIFVersion                                    no
         ScreenDescriptor                              GIF Screen
         Text                                          no
      +  TransparentColor                              no
       
       =head3 GIF Extensions Tags
       
      @@ -22758,6 +25232,7 @@
           4.2    ColorResolutionDepth                 no
           4.3    BitsPerPixel                         no
             5    BackgroundColor                      no
      +      6    PixelAspectRatio                     no
       
       =head2 BMP Tags
       
      @@ -23033,13 +25508,14 @@
         'dSIG'             DigitalSignature           no
         'eXIf'             eXIf                       EXIF
         'fRAc'             FractalParameters          no
      -  'gAMA'             Gamma                      no
      +  'gAMA'             Gamma                      yes!
         'gIFg'             GIFGraphicControlExtension no
         'gIFt'             GIFPlainTextExtension      no
         'gIFx'             GIFApplicationExtension    no
         'hIST'             PaletteHistogram           no
         'iCCP'             ICC_Profile                ICC_Profile
      -  'iCCP-name'        ProfileName                no
      +  'iCCP-name'        ProfileName                yes
      +  'iDOT'             AppleDataOffsets           no
         'iTXt'             InternationalText          PNG TextualData
         'oFFs'             ImageOffset                no
         'pCAL'             PixelCalibration           no
      @@ -23047,7 +25523,7 @@
         'sBIT'             SignificantBits            no
         'sCAL'             SubjectScale               PNG SubjectScale
         'sPLT'             SuggestedPalette           no
      -  'sRGB'             SRGBRendering              no
      +  'sRGB'             SRGBRendering              yes!
         'sTER'             StereoImage                PNG StereoImage
         'tEXt'             TextualData                PNG TextualData
         'tIME'             ModifyDate                 yes
      @@ -23108,6 +25584,8 @@
       if the Compress option is used and Compress::Zlib is available.  Raw profile
       information is always created as compressed zTXt if Compress::Zlib is
       available, or tEXt otherwise.  Standard XMP is written as uncompressed iTXt.
      +User-defined tags may set an 'iTXt' flag in the tag definition to be written
      +only as iTXt.
       
       Alternate languages are accessed by suffixing the tag name with a '-',
       followed by an RFC 3066 language code (eg. "PNG:Comment-fr", or
      @@ -23526,6 +26004,8 @@
           776    ImageHeight                          no
           780    DataSign                             no
           800    ComponentsConfiguration              no
      +    801    TransferCharacteristic               no
      +    802    ColorimetricSpecification            no
           803    BitDepth                             no
           820    ImageDescription                     no
           892    Image2Description                    no
      @@ -23539,9 +26019,13 @@
          1532    SourceCreateDate                     no
          1556    InputDeviceName                      no
          1588    InputDeviceSerialNumber              no
      -   1724    FrameRate                            no
      +   1628    AspectRatio                          no
      +   1724    OriginalFrameRate                    no
      +   1728    ShutterAngle                         no
          1732    FrameID                              no
          1764    SlateInformation                     no
      +   1920    TimeCode                             no
      +   1940    FrameRate                            no
          1972    Reserved5?                           no
          2048    UserID                               no
       
      @@ -23590,6 +26074,177 @@
         'wrapmodes'          WrapModes                no
         'xDensity'           XResolution              no
       
      +=head2 ZISRAW Tags
      +
      +As well as the header information listed below, ExifTool also extracts the
      +top-level XML-based metadata from Zeiss Integrated Software RAW (ZISRAW) CZI
      +files.
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +     32    ZISRAWVersion                        no
      +     48    PrimaryFileGUID                      no
      +     64    FileGUID                             no
      +
      +=head2 MRC Tags
      +
      +Tags extracted from Medical Research Council (MRC) format imaging files.
      +See L for the specification.
      +
      +  Index4   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    ImageWidth                           no
      +      1    ImageHeight                          no
      +      2    ImageDepth                           no
      +      3    ImageMode                            no
      +      4    StartPoint                           no
      +      7    GridSize                             no
      +     10    CellWidth                            no
      +     11    CellHeight                           no
      +     12    CellDepth                            no
      +     13    CellAlpha                            no
      +     14    CellBeta                             no
      +     15    CellGamma                            no
      +     16    ImageWidthAxis                       no
      +     17    ImageHeightAxis                      no
      +     18    ImageDepthAxis                       no
      +     19    DensityMin                           no
      +     20    DensityMax                           no
      +     21    DensityMean                          no
      +     22    SpaceGroupNumber                     no
      +     23    ExtendedHeaderSize                   no
      +     26    ExtendedHeaderType                   no
      +     27    MRCVersion                           no
      +     49    Origin                               no
      +     53    MachineStamp                         no
      +     54    RMSDeviation                         no
      +     55    NumberOfLabels                       no
      +     56    Label0                               no
      +     76    Label1                               no
      +     96    Label2                               no
      +    116    Label3                               no
      +    136    Label4                               no
      +    156    Label5                               no
      +    176    Label6                               no
      +    196    Label7                               no
      +    216    Label8                               no
      +    236    Label9                               no
      +
      +=head3 MRC FEI12 Tags
      +
      +Tags extracted from FEI1 and FEI2 extended headers.
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    MetadataSize                         no
      +      4    MetadataVersion                      no
      +      8    Bitmask1                             no
      +     12    TimeStamp                            no
      +     20    MicroscopeType                       no
      +     36    MicroscopeID                         no
      +     52    Application                          no
      +     68    AppVersion                           no
      +     84    HighTension                          no
      +     92    Dose                                 no
      +    100    AlphaTilt                            no
      +    108    BetaTilt                             no
      +    116    XStage                               no
      +    124    YStage                               no
      +    132    ZStage                               no
      +    140    TiltAxisAngle                        no
      +    148    DualAxisRot                          no
      +    156    PixelSizeX                           no
      +    164    PixelSizeY                           no
      +    220    Defocus                              no
      +    228    STEMDefocus                          no
      +    236    AppliedDefocus                       no
      +    244    InstrumentMode                       no
      +    248    ProjectionMode                       no
      +    252    ObjectiveLens                        no
      +    268    HighMagnificationMode                no
      +    284    ProbeMode                            no
      +    288    EFTEMOn                              no
      +    289    Magnification                        no
      +    297    Bitmask2                             no
      +    301    CameraLength                         no
      +    309    SpotIndex                            no
      +    313    IlluminationArea                     no
      +    321    Intensity                            no
      +    329    ConvergenceAngle                     no
      +    337    IlluminationMode                     no
      +    353    WideConvergenceAngleRange            no
      +    354    SlitInserted                         no
      +    355    SlitWidth                            no
      +    363    AccelVoltOffset                      no
      +    371    DriftTubeVolt                        no
      +    379    EnergyShift                          no
      +    387    ShiftOffsetX                         no
      +    395    ShiftOffsetY                         no
      +    403    ShiftX                               no
      +    411    ShiftY                               no
      +    419    IntegrationTime                      no
      +    427    BinningWidth                         no
      +    431    BinningHeight                        no
      +    435    CameraName                           no
      +    451    ReadoutAreaLeft                      no
      +    455    ReadoutAreaTop                       no
      +    459    ReadoutAreaRight                     no
      +    463    ReadoutAreaBottom                    no
      +    467    CetaNoiseReduct                      no
      +    468    CetaFramesSummed                     no
      +    472    DirectDetElectronCounting            no
      +    473    DirectDetAlignFrames                 no
      +    490    Bitmask3                             no
      +    518    PhasePlate                           no
      +    519    STEMDetectorName                     no
      +    535    Gain                                 no
      +    543    Offset                               no
      +    571    DwellTime                            no
      +    579    FrameTime                            no
      +    587    ScanSizeLeft                         no
      +    591    ScanSizeTop                          no
      +    595    ScanSizeRight                        no
      +    599    ScanSizeBottom                       no
      +    603    FullScanFOV_X                        no
      +    611    FullScanFOV_Y                        no
      +    619    Element                              no
      +    635    EnergyIntervalLower                  no
      +    643    EnergyIntervalHigher                 no
      +    651    Method                               no
      +    655    IsDoseFraction                       no
      +    656    FractionNumber                       no
      +    660    StartFrame                           no
      +    664    EndFrame                             no
      +    668    InputStackFilename                   no
      +    748    Bitmask4                             no
      +    752    AlphaTiltMin                         no
      +    760    AlphaTiltMax                         no
      +    768    ScanRotation                         no
      +    776    DiffractionPatternRotation           no
      +    784    ImageRotation                        no
      +    792    ScanModeEnumeration                  no
      +    796    AcquisitionTimeStamp                 no
      +    804    DetectorCommercialName               no
      +    820    StartTiltAngle                       no
      +    828    EndTiltAngle                         no
      +    836    TiltPerImage                         no
      +    844    TitlSpeed                            no
      +    852    BeamCenterX                          no
      +    856    BeamCenterY                          no
      +    860    CFEGFlashTimeStamp                   no
      +    868    PhasePlatePosition                   no
      +    872    ObjectiveAperture                    no
      +
      +=head2 LIF Tags
      +
      +Tags extracted from Leica Image Format (LIF) imaging files.  As well as the
      +tags listed below, all available information is extracted from the
      +XML-format metadata in the LIF header.
      +
      +  Tag Name                                      Writable
      +  --------                                      --------
      +  TimeStampList                                 no
      +
       =head2 MIFF Tags
       
       The MIFF (Magick Image File Format) format allows aribrary tag names to be
      @@ -23765,6 +26420,7 @@
         Tag ID               Tag Name                 Writable
         ------               --------                 --------
         '_command'           Command                  no
      +  '_comment'           Comment                  no
         '_orient'            Orientation              no
         'colorcorr'          ColorCorrection          no
         'exposure'           Exposure                 no
      @@ -23775,6 +26431,18 @@
         'software'           Software                 no
         'view'               View                     no
       
      +=head3 Other PFM Tags
      +
      +Tags extracted from Portable FloatMap images. See
      +L for the specification.
      +
      +  Tag Name                                      Writable
      +  --------                                      --------
      +  ByteOrder                                     no
      +  ColorSpace                                    no
      +  ImageHeight                                   no
      +  ImageWidth                                    no
      +
       =head2 PDF Tags
       
       The tags listed in the PDF tables below are those which are used by ExifTool
      @@ -23953,16 +26621,11 @@
       
         Tag ID               Tag Name                 Writable
         ------               --------                 --------
      -  'Cs1'                Cs1                      PDF Cs1
      +  'CS0'                CS0                      PDF DefaultRGB
      +  'Cs1'                Cs1                      PDF DefaultRGB
         'DefaultCMYK'        DefaultCMYK              PDF DefaultRGB
         'DefaultRGB'         DefaultRGB               PDF DefaultRGB
       
      -=head3 PDF Cs1 Tags
      -
      -  Tag ID       Tag Name                         Writable
      -  ------       --------                         --------
      -  '_stream'    _stream                          ICC_Profile
      -
       =head3 PDF DefaultRGB Tags
       
         Tag ID       Tag Name                         Writable
      @@ -24086,13 +26749,13 @@
       
       =head2 ID3 Tags
       
      -ExifTool extracts ID3 information from MP3, MPEG, AIFF, OGG, FLAC, APE, MPC
      -and RealAudio files.  ID3v2 tags which support multiple languages (eg.
      -Comment and Lyrics) are extracted by specifying the tag name, followed by a
      -dash ('-'), then a 3-character ISO 639-2 language code (eg. "Comment-spa").
      -See L for the official ID3 specification and
      -L for a list of ISO
      -639-2 language codes.
      +ExifTool extracts ID3 and Lyrics3 information from MP3, MPEG, WAV, AIFF,
      +OGG, FLAC, APE, MPC and RealAudio files.  ID3v2 tags which support multiple
      +languages (eg. Comment and Lyrics) are extracted by specifying the tag name,
      +followed by a dash ('-'), then a 3-character ISO 639-2 language code (eg.
      +"Comment-spa"). See L for the official ID3
      +specification and L
      +for a list of ISO 639-2 language codes.
       
         Tag Name                                      Writable
         --------                                      --------
      @@ -24223,9 +26886,12 @@
         'APIC-2' PictureType                          no
         'APIC-3' PictureDescription                   no
         'COMM'   Comment                              no
      +  'GRP1'   Grouping                             no
         'IPLS'   InvolvedPeople                       no
         'ITNU'   iTunesU?                             no
         'MCDI'   MusicCDIdentifier                    no
      +  'MVIN'   MovementNumber                       no
      +  'MVNM'   MovementName                         no
         'OWNE'   Ownership                            no
         'PCNT'   PlayCounter                          no
         'PCST'   Podcast?                             no
      @@ -24325,8 +26991,11 @@
         'APIC-2' PictureType                          no
         'APIC-3' PictureDescription                   no
         'COMM'   Comment                              no
      +  'GRP1'   Grouping                             no
         'ITNU'   iTunesU?                             no
         'MCDI'   MusicCDIdentifier                    no
      +  'MVIN'   MovementNumber                       no
      +  'MVNM'   MovementName                         no
         'OWNE'   Ownership                            no
         'PCNT'   PlayCounter                          no
         'PCST'   Podcast?                             no
      @@ -24405,6 +27074,23 @@
         'XSOP'   PerformerSortOrder                   no
         'XSOT'   TitleSortOrder                       no
       
      +=head3 ID3 Lyrics3 Tags
      +
      +ExifTool extracts Lyrics3 version 1.00 and 2.00 tags from any file that
      +supports ID3.  See L for the specification.
      +
      +  Tag ID   Tag Name                             Writable
      +  ------   --------                             --------
      +  'AUT'    Author                               no
      +  'CRC'    CRC                                  no
      +  'EAL'    ExtendedAlbumName                    no
      +  'EAR'    ExtendedArtistName                   no
      +  'ETT'    ExtendedTrackTitle                   no
      +  'IMG'    AssociatedImageFile                  no
      +  'IND'    Indications                          no
      +  'INF'    AdditionalInfo                       no
      +  'LYR'    Lyrics                               no
      +
       =head2 ITC Tags
       
       This information is found in iTunes Cover Flow data files.
      @@ -24862,6 +27548,7 @@
         0x00c5   GPSImgDirectionRef                   no
         0x00c6   GPSImgDirection                      no
         0x00c7   GPSMapDatum                          no
      +  0x00ca   GPSDateStamp                         no
         0x00e0   MakeModel                            H264 MakeModel
         0x00e1   RecInfo                              H264 RecInfo
         0x00e4   Model                                no
      @@ -24915,7 +27602,7 @@
       =head2 QuickTime Tags
       
       The QuickTime format is used for many different types of audio, video and
      -image files (most notably, MOV/MP4 videos and HEIC/CR3 images).  Exiftool
      +image files (most notably, MOV/MP4 videos and HEIC/CR3 images).  ExifTool
       extracts standard meta information and a variety of audio, video and image
       parameters, as well as proprietary information written by many camera
       models.  Tags with a question mark after their name are not extracted unless
      @@ -24930,11 +27617,13 @@
       finally in L,
       but this order may be changed by setting the PREFERRED level of the
       appropriate table in the config file (see
      -example.config in the full distribution for
      -an example).  ExifTool currently writes only top-level metadata in
      -QuickTime-based files; it extracts other track-specific and timed
      -metadata, but can not yet edit tags in these locations (with the
      -exception of track-level date/time tags).
      +example.config in the full distribution for an
      +example).  Note that some tags with the same name but different ID's may
      +exist in the same location, but the family 7 group names may be used to
      +differentiate these.  ExifTool currently writes only top-level metadata in
      +QuickTime-based files; it extracts other track-specific and timed metadata,
      +but can not yet edit tags in these locations (with the exception of
      +track-level date/time tags).
       
       Alternate language tags may be accessed for
       L and
      @@ -24944,25 +27633,36 @@
       "ItemList::Artist-deu-DE").  Most
       L tags support a
       language code, but without a country code.  If no language code is specified
      -when writing, alternate languages for the tag are deleted.  Use the "und"
      -language code to write the default language without deleting alternate
      -languages.  Note that "eng" is treated as a default language when reading,
      -but not when writing.
      +when writing, the default language is written and alternate languages for
      +the tag are deleted.  Use the "und" language code to write the default
      +language without deleting alternate languages.  Note that "eng" is treated
      +as a default language when reading, but not when writing.
       
       According to the specification, integer-format QuickTime date/time tags
       should be stored as UTC.  Unfortunately, digital cameras often store local
       time values instead (presumably because they don't know the time zone).  For
       this reason, by default ExifTool does not assume a time zone for these
      -values.  However, if the QuickTimeUTC API option is set, then ExifTool will
      +values.  However, if the API QuickTimeUTC option is set, then ExifTool will
       assume these values are properly stored as UTC, and will convert them to
       local time when extracting.
       
      +When writing string-based date/time tags, the system time zone is added if
      +the PrintConv option is enabled and no time zone is specified.  This is
      +because Apple software may display crazy values if the time zone is missing
      +for some tags.
      +
      +By default ExifTool will remove null padding from some QuickTime containers
      +in Canon CR3 files when writing, but the
      +QuickTimePad option may be used to preserve
      +the original size by padding with nulls if necessary.
      +
       See
       L
       for the official specification.
       
         Tag ID               Tag Name                 Writable
         ------               --------                 --------
      +  'GPS '               GPSDataList2?            no
         'IDIT'               DateTimeOriginal         string
         'PICT'               PreviewPICT              no
         '_htc'               HTCInfo                  QuickTime HTCInfo
      @@ -24970,6 +27670,7 @@
         'frea'               Kodak_frea               Kodak frea
         'free'               KodakFree                Kodak Free
                              Pittasoft                QuickTime Pittasoft
      +                       ThumbnailImage           no
                              Free?                    no
         'ftyp'               FileType                 QuickTime FileType
         'gps0'               GPSTrack                 QuickTime Stream
      @@ -24985,9 +27686,11 @@
         'pict'               PreviewPICT              no
         'pnot'               Preview                  QuickTime Preview
         'prrt'               ARDroneTelemetry         no
      +  'sefd'               SamsungTrailer           Samsung Trailer
         'skip'               CanonSkip                Canon Skip
                              PreviewImage             no
                              Skip?                    no
      +  'thm '               ThumbnailImage           no
         'thum'               ThumbnailImage           no
         'udat'               GPSLog                   no
         'udta'               UserData                 FLIR UserData
      @@ -24995,6 +27698,8 @@
                              UUID-PROF                QuickTime Profile
                              UUID-Flip                QuickTime Flip
                              UUID-Canon2              Canon uuid2
      +                       SensorData               QuickTime Tags360Fly
      +                       SensorData               no
                              PreviewImage             no
                              UUID-Unknown?            no
         'wide'               Wide?                    no
      @@ -25023,10 +27728,10 @@
       
       =head3 QuickTime Stream Tags
       
      -Timed metadata extracted from QuickTime media data and some AVI videos when
      -the ExtractEmbedded option is used.  Although most of these tags are
      -combined into the single table below, ExifTool currently reads 37 different
      -formats of timed GPS metadata from video files.
      +The tags below are extracted from timed metadata in QuickTime and other
      +formats of video files when the ExtractEmbedded option is used.  Although
      +most of these tags are combined into the single table below, ExifTool
      +currently reads 59 different formats of timed GPS metadata from video files.
       
         Tag Name                                      Writable
         --------                                      --------
      @@ -25056,10 +27761,12 @@
         INSV                                          QuickTime INSV_MakerNotes
         ISO                                           no
         JpgFromRaw                                    no
      +  KiloCalories                                  no
         PreviewInfo                                   QuickTime PreviewInfo
         RVMI_gReV                                     QuickTime RVMI_gReV
         RVMI_sReV                                     QuickTime RVMI_sReV
         RawGSensor                                    no
      +  SampleDateTime                                no
         SampleDuration                                no
         SampleTime                                    no
         Text                                          no
      @@ -25070,6 +27777,7 @@
         Unknown03?                                    no
         UserLabel                                     no
         VerticalSpeed                                 no
      +  VideoTimeStamp                                no
         camm0                                         QuickTime camm0
         camm1                                         QuickTime camm1
         camm2                                         QuickTime camm2
      @@ -25079,7 +27787,11 @@
         camm6                                         QuickTime camm6
         camm7                                         QuickTime camm7
         fdsc                                          GoPro fdsc
      -  gpmd                                          GoPro GPMF
      +  gpmd_Kingslim                                 QuickTime Stream
      +  gpmd_Rove                                     QuickTime Stream
      +  gpmd_FMAS                                     QuickTime Stream
      +  gpmd_GoPro                                    GoPro GPMF
      +  marl                                          QuickTime marl
         mebx                                          QuickTime Keys
         mett                                          Parrot mett
         rtmd                                          Sony rtmd
      @@ -25187,6 +27899,14 @@
         ------   --------                             --------
             4    MagneticField                        no
       
      +=head3 QuickTime marl Tags
      +
      +Tags extracted from the marl ctbx timed metadata of GM cars.
      +
      +  Tag ID   Tag Name                             Writable
      +  ------   --------                             --------
      +  [no tags known]
      +
       =head3 QuickTime Keys Tags
       
       This directory contains a list of key names which are used to decode tags
      @@ -25203,66 +27923,75 @@
       C<-Keys:Author=Phil> on the command line), or the PREFERRED level must be
       changed via the config file.
       
      -  Tag ID                  Tag Name              Writable
      -  ------                  --------              --------
      -  'Encoded_With'          EncodedWith           string
      -  'album'                 Album                 string
      -  'artist'                Artist                string
      -  'artwork'               Artwork               string
      -  'author'                Author                string
      +  Tag ID        Tag Name                        Writable
      +  ------        --------                        --------
      +  'Encoded_With' EncodedWith                    yes
      +  'album'       Album                           yes
      +  'apple.photos.variation-identifier'
      +                ApplePhotosVariationIdentifier  int64s
      +  'artist'      Artist                          yes
      +  'artwork'     Artwork                         yes
      +  'author'      Author                          yes
         'camera.framereadouttimeinmicroseconds'
      -                          FrameReadoutTime      string
      -  'camera.identifier'     CameraIdentifier      string
      -  'collection.user'       UserCollection        string
      -  'com.android.version'   AndroidVersion        string
      -  'com.apple.photos.captureMode' CaptureMode    string
      -  'comment'               Comment               string
      -  'copyright'             Copyright             string
      -  'creationdate'          CreationDate          string
      -  'description'           Description           string
      -  'detected-face'         FaceInfo              QuickTime FaceInfo
      -  'detected-face.bounds'  DetectedFaceBounds    no
      +                FrameReadoutTime                yes
      +  'camera.identifier' CameraIdentifier          yes
      +  'collection.user' UserCollection              yes
      +  'com.android.version' AndroidVersion          yes
      +  'com.apple.photos.captureMode' CaptureMode    yes
      +  'comment'     Comment                         yes
      +  'copyright'   Copyright                       yes
      +  'creationdate' CreationDate                   yes
      +  'description' Description                     yes
      +  'detected-face' FaceInfo                      QuickTime FaceInfo
      +  'detected-face.bounds' DetectedFaceBounds     no
         'detected-face.face-id' DetectedFaceID        no
         'detected-face.roll-angle'
      -                          DetectedFaceRollAngle no
      +                DetectedFaceRollAngle           no
         'detected-face.yaw-angle'
      -                          DetectedFaceYawAngle  no
      -  'direction.facing'      CameraDirection       string
      -  'direction.motion'      CameraMotion          string
      -  'director'              Director              string
      -  'displayname'           DisplayName           string
      -  'genre'                 Genre                 string
      -  'information'           Information           string
      -  'keywords'              Keywords              string
      -  'live-photo-info'       LivePhotoInfo         no
      -  'location.ISO6709'      GPSCoordinates        string
      -  'location.body'         LocationBody          string
      -  'location.date'         LocationDate          string
      -  'location.name'         LocationName          string
      -  'location.note'         LocationNote          string
      -  'location.role'         LocationRole          string
      -  'make'                  Make                  string
      -  'model'                 Model                 string
      -  'player.movie.audio.balance' Balance          string
      -  'player.movie.audio.bass' Bass                string
      -  'player.movie.audio.gain' AudioGain           string
      +                DetectedFaceYawAngle            no
      +  'direction.facing' CameraDirection            yes
      +  'direction.motion' CameraMotion               yes
      +  'director'    Director                        yes
      +  'displayname' DisplayName                     yes
      +  'genre'       Genre                           yes
      +  'information' Information                     yes
      +  'keywords'    Keywords                        yes
      +  'live-photo-info' LivePhotoInfo               no
      +  'live-photo.auto' LivePhotoAuto               int8u
      +  'live-photo.vitality-score'
      +                LivePhotoVitalityScore          float
      +  'live-photo.vitality-scoring-version'
      +                LivePhotoVitalityScoringVersion int64s
      +  'location.ISO6709' GPSCoordinates             yes
      +  'location.accuracy.horizontal'
      +                LocationAccuracyHorizontal      yes
      +  'location.body' LocationBody                  yes
      +  'location.date' LocationDate                  yes
      +  'location.name' LocationName                  yes
      +  'location.note' LocationNote                  yes
      +  'location.role' LocationRole                  yes
      +  'make'        Make                            yes
      +  'model'       Model                           yes
      +  'player.movie.audio.balance' Balance          yes
      +  'player.movie.audio.bass' Bass                yes
      +  'player.movie.audio.gain' AudioGain           yes
         'player.movie.audio.mute' Mute                int8u
      -  'player.movie.audio.pitchshift' PitchShift    string
      -  'player.movie.audio.treble' Trebel            string
      -  'player.movie.visual.brightness' Brightness   string
      -  'player.movie.visual.color' Color             string
      -  'player.movie.visual.contrast' Contrast       string
      -  'player.movie.visual.tint' Tint               string
      -  'player.version'        PlayerVersion         string
      -  'producer'              Producer              string
      -  'publisher'             Publisher             string
      -  'rating.user'           UserRating            string
      -  'software'              Software              string
      -  'still-image-time'      StillImageTime        no
      -  'title'                 Title                 string
      -  'version'               Version               string
      -  'video-orientation'     VideoOrientation      no
      -  'year'                  Year                  string
      +  'player.movie.audio.pitchshift' PitchShift    yes
      +  'player.movie.audio.treble' Treble            yes
      +  'player.movie.visual.brightness' Brightness   yes
      +  'player.movie.visual.color' Color             yes
      +  'player.movie.visual.contrast' Contrast       yes
      +  'player.movie.visual.tint' Tint               yes
      +  'player.version' PlayerVersion                yes
      +  'producer'    Producer                        yes
      +  'publisher'   Publisher                       yes
      +  'rating.user' UserRating                      yes
      +  'software'    Software                        yes
      +  'still-image-time' StillImageTime             no
      +  'title'       Title                           yes
      +  'version'     Version                         yes
      +  'video-orientation' VideoOrientation          no
      +  'year'        Year                            yes
       
       =head3 QuickTime FaceInfo Tags
       
      @@ -25278,11 +28007,13 @@
       
       =head3 QuickTime tx3g Tags
       
      -Tags extracted from the tx3g sbtl timed metadata of Yuneec drones.
      +Tags extracted from the tx3g sbtl timed metadata of Yuneec drones, and
      +subtitle text in some other videos.
       
         Tag ID       Tag Name                         Writable
         ------       --------                         --------
         'Alt'        GPSAltitude                      no
      +  'DateTime'   DateTime                         no
         'GimPitch'   GimbalPitch                      no
         'GimRoll'    GimbalRoll                       no
         'GimYaw'     GimbalYaw                        no
      @@ -25290,6 +28021,7 @@
         'Lon'        GPSLongitude                     no
         'Pitch'      Pitch                            no
         'Roll'       Roll                             no
      +  'Text'       Text                             no
         'Yaw'        Yaw                              no
       
       =head3 QuickTime FileType Tags
      @@ -25321,6 +28053,7 @@
         'dinf'   DataInfo                             QuickTime DataInfo
         'free'   Free?                                no
         'hdlr'   Handler                              QuickTime Handler
      +  'idat'   MetaImageSize                        no
         'iinf'   ItemInformation                      QuickTime ItemInfo
                                                       QuickTime ItemInfo
         'iloc'   ItemLocation                         no
      @@ -25331,6 +28064,8 @@
         'iref'   ItemReference                        QuickTime ItemRef
         'keys'   Keys                                 QuickTime Keys
         'pitm'   PrimaryItemReference                 no
      +  'uuid'   MetaVersion                          no
      +           UUID-Unknown?                        no
         'xml '   XML                                  XMP XML
       
       =head3 QuickTime DataInfo Tags
      @@ -25373,9 +28108,9 @@
       3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2
       country code to the tag name (eg. "ItemList:Title-fra" or
       "ItemList::Title-fra-FR").  When creating a new Meta box to contain the
      -ItemList directory, by default ExifTool does not specify a
      -L, but the
      -API QuickTimeHandler option may be used to include an 'mdir' Handler box.
      +ItemList directory, by default ExifTool adds an 'mdir' (Metadata) Handler
      +box because Apple software may ignore ItemList tags otherwise, but the API
      +QuickTimeHandler option may be set to 0 to avoid this.
       
         Tag ID       Tag Name                         Writable
         ------       --------                         --------
      @@ -25390,22 +28125,22 @@
         'GUID'       GUID                             string
         'VERS'       ProductVersion                   string
         'aART'       AlbumArtist                      string
      -  'akID'       AppleStoreAccountType            int8u
      +  'akID'       AppleStoreAccountType            int8s
         'albm'       Album                            string/
         'apID'       AppleStoreAccount                string
      -  'atID'       AlbumTitleID                     int32u
      +  'atID'       AlbumTitleID                     int32s
         'auth'       Author                           string
         'catg'       Category                         string
      -  'cnID'       AppleStoreCatalogID              int32u
      +  'cnID'       AppleStoreCatalogID              int32s
         'covr'       CoverArt                         string
      -  'cpil'       Compilation                      int8u
      +  'cpil'       Compilation                      int8s
         'cprt'       Copyright                        string
         'desc'       Description                      string/
         'disk'       DiskNumber                       undef
         'dscp'       Description                      string/
         'egid'       EpisodeGlobalUniqueID            string
      -  'geID'       GenreID                          int32u
      -  'gnre'       Genre                            string/
      +  'geID'       GenreID                          int32s
      +  'gnre'       Genre                            undef/
         'grup'       Grouping                         string/
         'gshh'       GoogleHostHeader                 string
         'gspm'       GooglePingMessage                string
      @@ -25413,74 +28148,112 @@
         'gssd'       GoogleSourceData                 string
         'gsst'       GoogleStartTime                  string
         'gstd'       GoogleTrackDuration              string
      -  'hdvd'       HDVideo                          int8u
      +  'hdvd'       HDVideo                          int8s
         'itnu'       iTunesU                          int8s
         'keyw'       Keyword                          string
         'ldes'       LongDescription                  string
      -  'pcst'       Podcast                          int8u
      +  'pcst'       Podcast                          int8s
         'perf'       Performer                        string
      -  'pgap'       PlayGap                          int8u
      -  'plID'       PlayListID                       int8u
      +  'pgap'       PlayGap                          int8s
      +  'plID'       PlayListID                       int32s[0.25]
         'prID'       ProductID                        string
         'purd'       PurchaseDate                     string
         'purl'       PodcastURL                       string
         'rate'       RatingPercent                    string
         'rldt'       ReleaseDate                      string
      -  'rtng'       Rating                           int8u
      -  'sfID'       AppleStoreCountry                int32u
      +  'rtng'       Rating                           int8s
      +  'sdes'       StoreDescription                 string
      +  'sfID'       AppleStoreCountry                int32s
      +  'shwm'       ShowMovement                     int8s
         'soaa'       SortAlbumArtist                  string
         'soal'       SortAlbum                        string
         'soar'       SortArtist                       string
         'soco'       SortComposer                     string
         'sonm'       SortName                         string
         'sosn'       SortShow                         string
      -  'stik'       MediaType                        int8u
      +  'stik'       MediaType                        int8s
         'titl'       Title                            string/
      -  'tmpo'       BeatsPerMinute                   int16u
      +  'tmpo'       BeatsPerMinute                   int16s
         'trkn'       TrackNumber                      undef
         'tven'       TVEpisodeID                      string
      -  'tves'       TVEpisode                        int32u
      +  'tves'       TVEpisode                        int32s
         'tvnn'       TVNetworkName                    string
         'tvsh'       TVShow                           string
         'tvsn'       TVSeason                         int32u
         'yrrc'       Year                             string
         "\xa9ART"    Artist                           string
         "\xa9alb"    Album                            string
      +  "\xa9ard"    ArtDirector                      string
      +  "\xa9arg"    Arranger                         string
         "\xa9aut"    Author                           string/
         "\xa9cmt"    Comment                          string
         "\xa9com"    Composer                         string/
      +  "\xa9con"    Conductor                        string
         "\xa9cpy"    Copyright                        string/
         "\xa9day"    ContentCreateDate                string
         "\xa9des"    Description                      string
      +  "\xa9dir"    Director                         string
         "\xa9enc"    EncodedBy                        string
         "\xa9gen"    Genre                            string
         "\xa9grp"    Grouping                         string
         "\xa9lyr"    Lyrics                           string
      +  "\xa9mvc"    MovementCount                    int16s
      +  "\xa9mvi"    MovementNumber                   int16s
      +  "\xa9mvn"    MovementName                     string
         "\xa9nam"    Title                            string
         "\xa9nrt"    Narrator                         string
      +  "\xa9ope"    OriginalArtist                   string
      +  "\xa9prd"    Producer                         string
         "\xa9pub"    Publisher                        string
      +  "\xa9sne"    SoundEngineer                    string
      +  "\xa9sol"    Soloist                          string
      +  "\xa9st3"    Subtitle                         string
         "\xa9too"    Encoder                          string
         "\xa9trk"    Track                            string
      +  "\xa9wrk"    Work                             string
         "\xa9wrt"    Composer                         string
      +  "\xa9xpd"    ExecutiveProducer                string
      +  "\xa9xyz"    GPSCoordinates                   string
       
       =head3 QuickTime iTunesInfo Tags
       
       ExifTool will extract any iTunesInfo tags that exist, even if they are not
      -defined in this table.
      +defined in this table.  These tags belong to the family 1 "iTunes" group,
      +and are not currently writable.
       
         Tag ID                    Tag Name            Writable
         ------                    --------            --------
      +  'ARTISTS'                 Artists             no
      +  'BARCODE'                 Barcode             no
      +  'CATALOGNUMBER'           CatalogNumber       no
         'DISCNUMBER'              DiscNumber          no
      +  'Dynamic Range (DR)'      DynamicRange        no
      +  'Dynamic Range (R128)'    DynamicRangeR128    no
         'Encoding Params'         EncodingParams      QuickTime EncodingParams
      +  'LABEL'                   Label               no
      +  'MEDIA'                   Media               no
      +  'MOOD'                    Mood                no
      +  'Peak Level (R128)'       PeakLevelR128       no
      +  'Peak Level (Sample)'     PeakLevelSample     no
      +  'RATING'                  Rating              no
      +  'SCRIPT'                  Script              no
         'TRACKNUMBER'             TrackNumber         no
      +  'Volume Level (R128)'     VolumeLevelR128     no
      +  'Volume Level (ReplayGain)' ReplayVolumeLevel no
         'iTunEXTC'                ContentRating       no
         'iTunMOVI'                iTunMOVI            PLIST
         'iTunNORM'                VolumeNormalization no
         'iTunSMPB'                iTunSMPB            no
         'iTunes_CDDB_1'           CDDB1Info           no
         'iTunes_CDDB_TrackNumber' CDDBTrackNumber     no
      +  'initialkey'              InitialKey          no
      +  'originaldate'            OriginalDate        no
      +  'originalyear'            OriginalYear        no
         'popularimeter'           Popularimeter       no
      +  'replaygain_track_gain'   ReplayTrackGain     no
      +  'replaygain_track_peak'   ReplayTrackPeak     no
         'tool'                    iTunTool            no
      +  '~length'                 Length              no
       
       =head3 QuickTime EncodingParams Tags
       
      @@ -25528,9 +28301,9 @@
         'colr'   ICC_Profile                          ICC_Profile
                  ColorRepresentation                  no
         'hvcC'   HEVCConfiguration                    QuickTime HEVCConfig
      -  'irot'   Rotation                             int8u
      +  'irot'   Rotation                             int8u!
         'ispe'   ImageSpatialExtent                   no
      -  'pasp'   PixelAspectRatio                     int32u
      +  'pasp'   PixelAspectRatio                     int32u!
         'pixi'   ImagePixelDepth                      no
         'rloc'   RelativeLocation                     no
       
      @@ -25571,9 +28344,16 @@
       
       =head3 QuickTime ItemRef Tags
       
      +The Item reference entries listed in the table below contain information about
      +the associations between items in the file.  This information is used by
      +ExifTool, but these entries are not extracted as tags.
      +
         Tag ID   Tag Name                             Writable
         ------   --------                             --------
      +  'auxl'   AuxiliaryImageRef                    no
         'cdsc'   ContentDescribes                     no
      +  'dimg'   DerivedImageRef                      no
      +  'thmb'   ThumbnailRef                         no
       
       =head3 QuickTime MovieFragment Tags
       
      @@ -25819,6 +28599,7 @@
       
         Tag ID   Tag Name                             Writable
         ------   --------                             --------
      +  'enda'   Endianness                           no
         'frma'   OriginalFormat                       no
         'schi'   SchemeInfo                           QuickTime SchemeInfo
         'schm'   SchemeType                           QuickTime SchemeType
      @@ -25859,6 +28640,7 @@
       
         Tag ID   Tag Name                             Writable
         ------   --------                             --------
      +  'enda'   Endianness                           no
         'frma'   PurchaseFileFormat                   no
       
       =head3 QuickTime ImageDesc Tags
      @@ -26005,7 +28787,7 @@
             5    TrackDuration                        no
             8    TrackLayer                           no
             9    TrackVolume                          no
      -     10    MatrixStructure                      fixed32s[9]
      +     10    MatrixStructure                      fixed32s[9]!
            19    ImageWidth                           no
            20    ImageHeight                          no
       
      @@ -26033,7 +28815,12 @@
       
         Tag ID       Tag Name                         Writable
         ------       --------                         --------
      +  '@day'       ContentCreateDate                string/
      +  '@mak'       Make                             string/
      +  '@mod'       Model                            string/
         '@sec'       SamsungSec                       Samsung sec
      +  '@swr'       SoftwareVersion                  string/
      +  '@xyz'       GPSCoordinates                   string/
         'AllF'       PlayAllFrames                    int8u
         'CAME'       SerialNumberHash                 string
         'CNCV'       CompressorVersion                string
      @@ -26099,7 +28886,7 @@
         'chpl'       ChapterList                      no
         'clfn'       ClipFileName                     string
         'clid'       ClipID                           string
      -  'clsf'       Classification                   no
      +  'clsf'       Classification                   undef/
         'cmid'       CameraID                         string
         'cmnm'       Model                            string/
         'coll'       CollectionName                   string/
      @@ -26117,21 +28904,23 @@
         'infu'       InfoURL                          string
         'kgtt'       TrackType                        string
         'kywd'       Keywords                         no
      -  'loci'       LocationInformation              no
      +  'loci'       LocationInformation              undef/
         'lrcu'       LyricsURI                        string
         'lvlm'       LevelMeter?                      rational64s
         'manu'       Make                             no
      +  'mcvr'       PreviewImage                     string
         'meta'       Meta                             QuickTime Meta
         'modl'       Model                            no
         'name'       Name                             string
         'perf'       Performer                        string/
      +  'pmcc'       GarminSettings                   string
         'pose'       pose                             Kodak pose
         'ptch'       Pitch                            rational64s/
         'ptv '       PrintToVideo                     QuickTime Video
         'rads'       Rads?                            rational64s
         'reel'       ReelName                         string
         'roll'       Roll                             rational64s/
      -  'rtng'       Rating                           no
      +  'rtng'       Rating                           undef/
         'scen'       Scene                            string
         'scrn'       OlympusPreview                   Olympus scrn
         'shot'       ShotName                         string
      @@ -26144,9 +28933,12 @@
                      ThumbnailPNG                     string
                      UnknownThumbnail                 string
         'titl'       Title                            string/
      -  'urat'       UserRating                       no
      +  'urat'       UserRating                       undef/
      +  'uuid'       GarminSoftware                   string
      +               UUID-Unknown?                    no
         'vndr'       Vendor                           string
      -  'yrrc'       Year                             no
      +  'vrot'       AccelerometerData                no
      +  'yrrc'       Year                             undef/
         "\xa9ART"    Artist                           string
         "\xa9TIM"    StartTimecode                    string
         "\xa9TSC"    StartTimeScale                   string
      @@ -26369,6 +29161,72 @@
            14    SerialNumber                         no
            28    PreviewImage                         no
       
      +=head3 QuickTime Tags360Fly Tags
      +
      +Timed metadata found in MP4 videos from the 360Fly.
      +
      +  Tag ID   Tag Name                             Writable
      +  ------   --------                             --------
      +  0x0001   Accel360Fly                          QuickTime Accel360Fly
      +  0x0002   Gyro360Fly                           QuickTime Gyro360Fly
      +  0x0003   Mag360Fly                            QuickTime Mag360Fly
      +  0x0005   GPS360Fly                            QuickTime GPS360Fly
      +  0x0006   Rot360Fly                            QuickTime Rot360Fly
      +  0x00fa   Fusion360Fly                         QuickTime Fusion360Fly
      +
      +=head3 QuickTime Accel360Fly Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      1    AccelMode?                           no
      +      2    SampleTime                           no
      +     10    AccelYPR                             no
      +
      +=head3 QuickTime Gyro360Fly Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      1    GyroMode?                            no
      +      2    SampleTime                           no
      +     10    GyroYPR                              no
      +
      +=head3 QuickTime Mag360Fly Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      1    MagMode?                             no
      +      2    SampleTime                           no
      +     10    MagnetometerXYZ                      no
      +
      +=head3 QuickTime GPS360Fly Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      1    GPSMode?                             no
      +      2    SampleTime                           no
      +     10    GPSLatitude                          no
      +     14    GPSLongitude                         no
      +     18    GPSAltitude                          no
      +     22    GPSSpeed                             no
      +     24    GPSTrack                             no
      +     26    Acceleration                         no
      +
      +=head3 QuickTime Rot360Fly Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      1    RotMode?                             no
      +      2    SampleTime                           no
      +     10    RotationXYZ                          no
      +
      +=head3 QuickTime Fusion360Fly Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      1    FusionMode?                          no
      +      2    SampleTime                           no
      +     10    FusionYPR                            no
      +
       =head3 QuickTime ImageFile Tags
       
       Tags used in QTIF QuickTime Image Files.
      @@ -26522,32 +29380,6 @@
            28    AutomationAnimation                  no
            29    AutomationFlags                      no
       
      -=head2 PLIST Tags
      -
      -Apple Property List tags.  ExifTool reads both XML and binary-format PLIST
      -files, and will extract any existing tags even if they aren't listed below.
      -These tags belong to the family 0 "PLIST" group, but family 1 group may be
      -either "XML" or "PLIST" depending on whether the format is XML or binary.
      -
      -  Tag ID                       Tag Name         Writable
      -  ------                       --------         --------
      -  'MetaDataList//DateTimeOriginal'
      -                               DateTimeOriginal no
      -  'MetaDataList//Duration'     Duration         no
      -  'MetaDataList//Geolocation/Latitude'
      -                               GPSLatitude      no
      -  'MetaDataList//Geolocation/Longitude'
      -                               GPSLongitude     no
      -  'MetaDataList//Geolocation/MapDatum'
      -                               GPSMapDatum      no
      -  'XMLFileType'                XMLFileType      no
      -  'cast//name'                 Cast             no+
      -  'codirectors//name'          Codirectors      no+
      -  'directors//name'            Directors        no+
      -  'producers//name'            Producers        no+
      -  'screenwriters//name'        Screenwriters    no+
      -  'studio//name'               Studio           no+
      -
       =head2 Matroska Tags
       
       The following tags are extracted from Matroska multimedia container files.
      @@ -26775,9 +29607,10 @@
         0x7671   ProjectionType                       no
         0x7672   EquirectangularProj                  QuickTime equi
                  CubemapProj                          QuickTime cbmp
      -  0x7673   ProjectionPosYaw                     no
      -  0x7674   ProjectionPosPitch                   no
      -  0x7675   ProjectionPosRoll                    no
      +           ProjectionPrivate                    no
      +  0x7673   ProjectionPoseYaw                    no
      +  0x7674   ProjectionPosePitch                  no
      +  0x7675   ProjectionPoseRoll                   no
       
       =head2 MOI Tags
       
      @@ -28411,7 +31244,7 @@
         VideoAndFilmFrameRelationship                 no
         VideoAverageBitrate                           no
         VideoClipDuration                             no
      -  VideoCodingSchemeID?                          no
      +  VideoCodingSchemeID                           no
         VideoColorKind                                no
         VideoCompressionAlgorithm                     no
         VideoDeviceKind                               no
      @@ -28900,6 +31733,7 @@
         'ANMF'               ANMF                     RIFF ANMF
         'CSET'               CharacterSet             RIFF CSET
         'EXIF'               EXIF                     EXIF
      +                       UnknownEXIF              no
         'ICCP'               ICC_Profile              ICC_Profile
         'IDIT'               DateTimeOriginal         no
         'JUNK'               OlympusJunk              Olympus AVI
      @@ -28907,11 +31741,13 @@
                              RicohJunk                Ricoh AVI
                              PentaxJunk               Pentax Junk
                              PentaxJunk2              Pentax Junk2
      +                       LucasJunk                QuickTime Stream
                              TextJunk                 no
         'JUNQ'               OldXMP                   no
         'LIST_INF0'          Info                     RIFF Info
         'LIST_INFO'          Info                     RIFF Info
         'LIST_Tdat'          Tdat                     RIFF Tdat
      +  'LIST_adtl'          AssociatedDataList       RIFF
         'LIST_exif'          Exif                     RIFF Exif
         'LIST_hdrl'          Hdrl                     RIFF Hdrl
         'LIST_hydt'          PentaxData               Pentax AVI
      @@ -28934,9 +31770,17 @@
         'gps0'               GPSTrack                 QuickTime Stream
         'gsen'               GSensor                  QuickTime Stream
         'iXML'               IXML                     XMP XML
      -  'labl'               Label                    RIFF Label
      +  'id3 '               ID3                      ID3
      +  'inst'               Instrument               RIFF Instrument
      +  'labl'               CuePointLabel            no
         'list'               ListType                 no
      +  'ltxt'               LabeledText              no
      +  'note'               CuePointNote             no
         'olym'               Olym                     Olympus WAV
      +  'plst'               Playlist                 no
      +  'smpl'               Sampler                  RIFF Sampler
      +  'tx_USER'            UserText                 RIFF UserText
      +  'tx_Unknown'         Text                     no
       
       =head3 RIFF ALPH Tags
       
      @@ -29048,6 +31892,7 @@
         'ISTD'   ProductionStudio                     no
         'ISTR'   Starring                             no
         'ITCH'   Technician                           no
      +  'ITRK'   TrackNumber                          no
         'IWMU'   WatermarkURL                         no
         'IWRI'   WrittenBy                            no
         'LANG'   Language                             no
      @@ -29231,12 +32076,46 @@
             1    DataSize64                           no
             2    NumberOfSamples64                    no
       
      -=head3 RIFF Label Tags
      +=head3 RIFF Instrument Tags
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +      0    UnshiftedNote                        no
      +      1    FineTune                             no
      +      2    Gain                                 no
      +      3    LowNote                              no
      +      4    HighNote                             no
      +      5    LowVelocity                          no
      +      6    HighVelocity                         no
      +
      +=head3 RIFF Sampler Tags
       
         Index4   Tag Name                             Writable
         ------   --------                             --------
      -      0    LabelID                              no
      -      1    LabelText                            no
      +      0    Manufacturer                         no
      +      1    Product                              no
      +      2    SamplePeriod                         no
      +      3    MIDIUnityNote                        no
      +      4    MIDIPitchFraction                    no
      +      5    SMPTEFormat                          no
      +      6    SMPTEOffset                          no
      +      7    NumSampleLoops                       no
      +      8    SamplerDataLen                       no
      +      9    SamplerData                          no
      +
      +=head3 RIFF UserText Tags
      +
      +Tags decoded from the USER-format txts stream written by Momento M6 dashcam.
      +Extracted only if the ExtractEmbedded option is used.
      +
      +  Index1   Tag Name                             Writable
      +  ------   --------                             --------
      +     28    GPSAltitude                          no
      +     40    Accelerometer                        no
      +     56    GPSSpeed                             no
      +     60    GPSLatitude                          no
      +     64    GPSLongitude                         no
      +     68    GPSDateTime                          no
       
       =head2 AIFF Tags
       
      @@ -29248,6 +32127,7 @@
         ------   --------                             --------
         '(c) '   Copyright                            no
         'ANNO'   Annotation                           no
      +  'APPL'   ApplicationData                      no
         'AUTH'   Author                               no
         'COMM'   Common                               AIFF Common
         'COMT'   Comment                              AIFF Comment
      @@ -32826,9 +35706,11 @@
         ------       --------                         --------
         'AUTHOR'     Author                           no
         'BACKGRND'   Background                       no
      +  'COMMENT'    Comment                          no
         'DATE'       CreateDate                       no
         'DATE-END'   ObservationDateEnd               no
         'DATE-OBS'   ObservationDate                  no
      +  'HISTORY'    History                          no
         'INSTRUME'   Instrument                       no
         'OBJECT'     Object                           no
         'OBSERVER'   Observer                         no
      @@ -32837,15 +35719,6 @@
         'TIME-END'   ObservationTimeEnd               no
         'TIME-OBS'   ObservationTime                  no
       
      -=head2 JSON Tags
      -
      -No JSON tags have been pre-defined, but ExifTool will read any existing
      -tags from basic JSON-formatted files.
      -
      -  Tag ID   Tag Name                             Writable
      -  ------   --------                             --------
      -  [no tags known]
      -
       =head2 HTML Tags
       
       Meta information extracted from the header of HTML and XHTML files.  This is
      @@ -33642,13 +36515,13 @@
       
       =head2 RSRC Tags
       
      -Tags extracted from Mac OS resource files and DFONT files.  These tags may
      -also be extracted from the resource fork of any file in OS X, either by
      -adding "/..namedfork/rsrc" to the filename to process the resource fork
      -alone, or by using the ExtractEmbedded (-ee) option to process the resource
      -fork as a sub-document of the main file.  When writing, ExifTool preserves
      -the Mac OS resource fork by default, but it may deleted with C<-rsrc:all=>
      -on the command line.
      +Tags extracted from Mac OS resource files, DFONT files and "._" sidecar
      +files.  These tags may also be extracted from the resource fork of any file
      +in OS X, either by adding "/..namedfork/rsrc" to the filename to process the
      +resource fork alone, or by using the ExtractEmbedded (-ee) option to process
      +the resource fork as a sub-document of the main file.  When writing,
      +ExifTool preserves the Mac OS resource fork by default, but it may deleted
      +with C<-rsrc:all=> on the command line.
       
         Tag ID               Tag Name                 Writable
         ------               --------                 --------
      @@ -33697,6 +36570,7 @@
             9    ZipCompressedSize                    no
            11    ZipUncompressedSize                  no
            15    ZipFileName                          no
      +  '_com'   ZipFileComment                       no
       
       =head3 ZIP GZIP Tags
       
      @@ -33900,7 +36774,8 @@
       
       On MacOS systems, the there are additional MDItem and XAttr Finder tags that
       may be extracted.  These tags are not extracted by default -- they must be
      -specifically requested or enabled via an API option.
      +specifically requested or enabled via an API option.  (Except when reading
      +MacOS "._" files directly, see below.)
       
       The tables below list some of the tags that may be extracted, but ExifTool
       will extract all available information even for tags not listed.
      @@ -33909,11 +36784,43 @@
       information is not stored in the file itself.  As such, B tags in
       these tables may be changed without having to rewrite the file.
       
      +Note that on some filesystems, MacOS creates sidecar files with names that
      +begin with "._".  ExifTool will read these files if specified, and extract
      +the information listed in the following table without the need for extra
      +options, but these files are not writable directly.
      +
      +  Tag ID   Tag Name                             Writable
      +  ------   --------                             --------
      +  0x0002   RSRC                                 RSRC
      +  0x0009   ATTR                                 MacOS XAttr
      +
      +=head3 MacOS XAttr Tags
      +
      +XAttr tags are extracted using the "xattr" utility.  They are extracted if
      +any "XAttr*" tag or the MacOS group is specifically requested, or by setting
      +the API XAttrTags option to 1 or the API RequestAll option to 2 or higher.
      +And they are extracted by default from MacOS "._" files when reading
      +these files directly.
      +
      +  Tag Name                                      Writable
      +  --------                                      --------
      +  XAttrAppleMailDateReceived                    no
      +  XAttrAppleMailDateSent                        no
      +  XAttrAppleMailIsRemoteAttachment              no
      +  XAttrFinderInfo                               no
      +  XAttrLastUsedDate                             no
      +  XAttrMDItemDownloadedDate                     no
      +  XAttrMDItemFinderComment                      no
      +  XAttrMDItemWhereFroms                         no
      +  XAttrMDLabel                                  no
      +  XAttrQuarantine                               yes!
      +  XAttrResourceFork                             no
      +
       =head3 MacOS MDItem Tags
       
       MDItem tags are extracted using the "mdls" utility.  They are extracted if
       any "MDItem*" tag or the MacOS group is specifically requested, or by
      -setting the MDItemTags API option to 1 or the RequestAll API option to 2 or
      +setting the API MDItemTags option to 1 or the API RequestAll option to 2 or
       higher.  Note that these tags do not necessarily reflect the current
       metadata of a file -- it may take some time for the MacOS mdworker daemon to
       index the file after a metadata change.
      @@ -34052,26 +36959,6 @@
         MDItemWhereFroms                              no
         MDItemWhiteBalance                            no
       
      -=head3 MacOS XAttr Tags
      -
      -XAttr tags are extracted using the "xattr" utility.  They are extracted if
      -any "XAttr*" tag or the MacOS group is specifically requested, or by setting
      -the XAttrTags API option to 1 or the RequestAll API option to 2 or higher.
      -
      -  Tag Name                                      Writable
      -  --------                                      --------
      -  XAttrAppleMailDateReceived                    no
      -  XAttrAppleMailDateSent                        no
      -  XAttrAppleMailIsRemoteAttachment              no
      -  XAttrFinderInfo                               no
      -  XAttrLastUsedDate                             no
      -  XAttrMDItemDownloadedDate                     no
      -  XAttrMDItemFinderComment                      no
      -  XAttrMDItemWhereFroms                         no
      -  XAttrMDLabel                                  no
      -  XAttrQuarantine                               yes!
      -  XAttrResourceFork                             no
      -
       =head2 Extra Tags
       
       The extra tags provide extra features or extra information extracted or
      @@ -34089,6 +36976,7 @@
         Tag Name                   Group              Writable
         --------                   -----              --------
         Adobe                      Adobe              yes!
      +  BaseName                   System             no
         CanonDR4                   CanonVRD           yes!^
         CanonVRD                   CanonVRD           yes!^
         Comment                    File               yes
      @@ -34138,6 +37026,7 @@
         NewGUID                    ExifTool           no
         Now                        ExifTool           no
         OtherImage                 File               no
      +  PageCount                  File               no
         PreviewImage               File               yes
         PreviewPDF                 File               no
         PreviewPNG                 File               no
      @@ -34152,9 +37041,11 @@
         Trailer                    File               yes!
         Validate                   ExifTool           no
         Warning                    ExifTool           no
      +  XML                        XML                no
         XMP                        XMP                yes!
         XResolution                File               no
         YResolution                File               no
      +  ZoneIdentifier             System             yes!
       
       =head2 Composite Tags
       
      @@ -34287,6 +37178,8 @@
         GPSDateTime          Parrot:GPSLatitude       no
                              Main:CreateDate
                              SampleTime
      +  GPSDateTime          Sony:GPSDateStamp        no
      +                       Sony:GPSTimeStamp
         GPSDestLatitude      GPS:GPSDestLatitude      no
                              GPS:GPSDestLatitudeRef
         GPSDestLatitudeRef   XMP-exif:GPSDestLatitude no
      @@ -34297,13 +37190,17 @@
                              GPS:GPSLatitudeRef
         GPSLatitude          QuickTime:GPSCoordinates no
         GPSLatitude          QuickTime:LocationInformation no
      +  GPSLatitude          Sony:GPSLatitude         no
      +                       Sony:GPSLatitudeRef
         GPSLatitudeRef       XMP-exif:GPSLatitude     no
         GPSLongitude         GPS:GPSLongitude         no
                              GPS:GPSLongitudeRef
         GPSLongitude         QuickTime:GPSCoordinates no
         GPSLongitude         QuickTime:LocationInformation no
      +  GPSLongitude         Sony:GPSLongitude        no
      +                       Sony:GPSLongitudeRef
         GPSLongitudeRef      XMP-exif:GPSLongitude    no
      -  GPSPosition          GPSLatitude              no
      +  GPSPosition          GPSLatitude              yes!
                              GPSLongitude
         HyperfocalDistance   FocalLength              no
                              Aperture
      @@ -34346,6 +37243,11 @@
                              LensType2
                              LensType3
                              LensFocalLength
      +                       RFLensType
      +  LensID               LensModel                no
      +                       Lens
      +                       XMP-aux:LensID
      +                       Make
         LensID               Nikon:LensIDNumber       no
                              LensFStops
                              MinFocalLength
      @@ -34399,7 +37301,7 @@
                              FlashBits
         RicohPitch           Ricoh:Accelerometer      no
         RicohRoll            Ricoh:Accelerometer      no
      -  Rotation             QuickTime:MatrixStructure yes
      +  Rotation             QuickTime:MatrixStructure yes!
                              QuickTime:HandlerType
         RunTimeSincePowerUp  Apple:RunTimeValue       no
                              Apple:RunTimeScale
      @@ -34713,6 +37615,13 @@
                              InteropIFD:InteropVersion
                              InteropIFD:RelatedImageWidth
                              InteropIFD:RelatedImageHeight
      +  ls-l                 FilePermissions          yes
      +                       FileHardLinks
      +                       FileUserID
      +                       FileGroupID
      +                       FileSize#
      +                       FileModifyDate
      +                       FileName
       
       =head2 MWG Tags
       
      @@ -34721,7 +37630,8 @@
       synchronized when writing.  The MWG Composite tags below are designed to aid
       in the implementation of these recommendations.  As well, the MWG defines
       new XMP tags which are listed in the subsequent tables below.  See
      -L for the official MWG specification.
      +L
      +for the official MWG specification.
       
       =head3 MWG Composite Tags
       
      @@ -34831,7 +37741,8 @@
       
       Image region metadata defined by the MWG 2.0 specification.  These tags
       may be accessed without the need to load the MWG Composite tags above.  See
      -L for the official specification.
      +L
      +for the official specification.
       
       These tags belong to the ExifTool XMP-mwg-rs family 1 group.
       
      @@ -34899,8 +37810,9 @@
       Hierarchical keywords metadata defined by the MWG 2.0 specification.
       ExifTool unrolls keyword structures to an arbitrary depth of 6 to allow
       individual levels to be accessed with different tag names, and to avoid
      -infinite recursion.  See L for the
      -official specification.
      +infinite recursion.  See
      +L
      +for the official specification.
       
       These tags belong to the ExifTool XMP-mwg-kw family 1 group.
       
      @@ -34943,7 +37855,8 @@
       =head3 MWG Collections Tags
       
       Collections metadata defined by the MWG 2.0 specification.  See
      -L for the official specification.
      +L
      +for the official specification.
       
       These tags belong to the ExifTool XMP-mwg-coll family 1 group.
       
      @@ -34967,7 +37880,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Text.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Text.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Text.pm	2020-02-13 18:08:19.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Text.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -110,7 +110,7 @@
               }
               $nl = $1 if $$dataPt =~ /(\r\n|\r|\n)/;
           }
      -    
      +
           my $tagTablePtr = GetTagTable('Image::ExifTool::Text::Main');
       
           $et->SetFileType();
      @@ -223,7 +223,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Theora.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Theora.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Theora.pm	2020-01-02 12:08:55.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Theora.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -122,7 +122,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Torrent.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Torrent.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Torrent.pm	2020-01-02 12:08:55.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Torrent.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -13,10 +13,11 @@
       use strict;
       use vars qw($VERSION);
       use Image::ExifTool qw(:DataAccess :Utils);
      +use Image::ExifTool::XMP;
       
      -$VERSION = '1.04';
      +$VERSION = '1.05';
       
      -sub ReadBencode($$);
      +sub ReadBencode($$$);
       sub ExtractTags($$$;$$@);
       
       # tags extracted from BitTorrent files
      @@ -99,12 +100,12 @@
       
       #------------------------------------------------------------------------------
       # Read bencoded value
      -# Inputs: 0) input file, 1) buffer (pos must be set to current position)
      +# Inputs: 0) ExifTool ref, 1) input file, 2) buffer (pos must be set to current position)
       # Returns: HASH ref, ARRAY ref, SCALAR ref, SCALAR, or undef on error or end of data
       # Notes: Sets BencodeError element of RAF on any error
      -sub ReadBencode($$)
      +sub ReadBencode($$$)
       {
      -    my ($raf, $dataPt) = @_;
      +    my ($et, $raf, $dataPt) = @_;
       
           # read more if necessary (keep a minimum of 64 bytes in the buffer)
           my $pos = pos($$dataPt);
      @@ -123,21 +124,21 @@
           } elsif ($tok eq 'd') { # dictionary
               $val = { };
               for (;;) {
      -            my $k = ReadBencode($raf, $dataPt);
      +            my $k = ReadBencode($et, $raf, $dataPt);
                   last unless defined $k;
                   # the key must be a byte string
                   if (ref $k) {
                       ref $k ne 'SCALAR' and $$raf{BencodeError} = 'Bad dictionary key', last;
                       $k = $$k;
                   }
      -            my $v = ReadBencode($raf, $dataPt);
      +            my $v = ReadBencode($et, $raf, $dataPt);
                   last unless defined $v;
                   $$val{$k} = $v;
               }
           } elsif ($tok eq 'l') { # list
               $val = [ ];
               for (;;) {
      -            my $v = ReadBencode($raf, $dataPt);
      +            my $v = ReadBencode($et, $raf, $dataPt);
                   last unless defined $v;
                   push @$val, $v;
               }
      @@ -165,8 +166,14 @@
               }
               if (defined $value) {
                   # return as binary data unless it is a reasonable-length ASCII string
      -            if (length($value) > 256 or $value =~ /[^\t\x20-\x7e]/) {
      +            if (length($value) > 256) {
                       $val = \$value;
      +            } elsif ($value =~ /[^\t\x20-\x7e]/) {
      +                if (Image::ExifTool::XMP::IsUTF8(\$value) >= 0) {
      +                    $val = $et->Decode($value, 'UTF8');
      +                } else {
      +                    $val = \$value;
      +                }
                   } else {
                       $val = $value;
                   }
      @@ -206,7 +213,7 @@
                   my $tagInfo = $et->GetTagInfo($tagTablePtr, $id) or next;
                   if (ref $val eq 'ARRAY') {
                       if ($$tagInfo{JoinPath}) {
      -                    $val = join '/', @$val;
      +                    $val = join '/', map { ref $_ ? '(Binary data)' : $_ } @$val;
                       } else {
                           push @more, @$val;
                           next if ref $more[0] eq 'ARRAY'; # continue expanding nested lists
      @@ -273,7 +280,7 @@
           my $raf = $$dirInfo{RAF};
           my $buff = '';
           pos($buff) = 0;
      -    my $dict = ReadBencode($raf, \$buff);
      +    my $dict = ReadBencode($et, $raf, \$buff);
           my $err = $$raf{BencodeError};
           $et->Warn("Bencode error: $err") if $err;
           if (ref $dict eq 'HASH' and ($$dict{announce} or $$dict{'created by'})) {
      @@ -303,7 +310,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Unknown.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Unknown.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Unknown.pm	2020-01-02 12:08:55.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Unknown.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -53,7 +53,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Validate.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Validate.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Validate.pm	2020-01-02 12:08:55.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Validate.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -17,7 +17,7 @@
       use strict;
       use vars qw($VERSION %exifSpec);
       
      -$VERSION = '1.17';
      +$VERSION = '1.18';
       
       use Image::ExifTool qw(:Utils);
       use Image::ExifTool::Exif;
      @@ -214,11 +214,11 @@
               IFD0 => {
                   0x100 => 'defined $val',        # ImageWidth
                   0x101 => 'defined $val',        # ImageLength
      -            0x102 => 'defined $val',        # BitsPerSample
      +            # (default is 1) 0x102 => 'defined $val',        # BitsPerSample
                   0x103 => q{
                       not defined $val or $val =~ /^(1|5|6|32773)$/ or
                           ($val == 2 and (not defined $val{0x102} or $val{0x102} == 1));
      -            },  # Compression
      +            }, # Compression
                   0x106 => '$val =~ /^[0123]$/',  # PhotometricInterpretation
                   0x111 => 'defined $val',        # StripOffsets
                   # SamplesPerPixel
      @@ -237,7 +237,7 @@
                   0x117 => 'defined $val',        # StripByteCounts
                   0x11a => 'defined $val',        # XResolution
                   0x11b => 'defined $val',        # YResolution
      -            0x128 => '$val =~ /^[123]$/',   # ResolutionUnit
      +            0x128 => 'not defined $val or $val =~ /^[123]$/',   # ResolutionUnit
                   # ColorMap (must be palette image with correct number of colors)
                   0x140 => q{
                       return '' if defined $val{0x106} and $val{0x106} == 3 xor defined $val;
      @@ -659,7 +659,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/VCard.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/VCard.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/VCard.pm	2020-01-02 12:08:55.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/VCard.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -158,7 +158,7 @@
           'X-apple-calendar-color'=> 'CalendarColor',
           'X-apple-default-alarm' => 'DefaultAlarm',
           'X-apple-local-default-alarm' => 'LocalDefaultAlarm',
      -    'X-microsoft-cdo-appt-sequence'     => 'AppointmentSequence', 
      +    'X-microsoft-cdo-appt-sequence'     => 'AppointmentSequence',
           'X-microsoft-cdo-ownerapptid'       => 'OwnerAppointmentID',
           'X-microsoft-cdo-busystatus'        => 'BusyStatus',
           'X-microsoft-cdo-intendedstatus'    => 'IntendedBusyStatus',
      @@ -416,7 +416,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Vorbis.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Vorbis.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Vorbis.pm	2020-01-02 12:08:55.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Vorbis.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -228,7 +228,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/WriteCanonRaw.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WriteCanonRaw.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/WriteCanonRaw.pl	2020-02-14 12:19:49.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WriteCanonRaw.pl	2022-01-12 22:51:57.000000000 +0000
      @@ -623,7 +623,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/WriteExif.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WriteExif.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/WriteExif.pl	2020-01-02 12:08:55.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WriteExif.pl	2022-01-12 22:51:57.000000000 +0000
      @@ -522,6 +522,9 @@
           my $name = $$dirInfo{Name};
           $name = $dirName unless $name and $dirName eq 'MakerNotes' and $name !~ /^MakerNote/;
       
      +    # save byte order of existing EXIF
      +    $$et{SaveExifByteOrder} = GetByteOrder() if $dirName eq 'IFD0' or $dirName eq 'ExifIFD';
      +
           # set encoding for strings
           $strEnc = $et->Options('CharsetEXIF') if $$tagTablePtr{GROUPS}{0} eq 'EXIF';
       
      @@ -545,7 +548,7 @@
               my $mustRead;
               if ($dirStart < 0 or $dirStart > $dataLen-2) {
                   $mustRead = 1;
      -        } elsif ($dirLen > 2) {
      +        } elsif ($dirLen >= 2) {
                   my $len = 2 + 12 * Get16u($dataPt, $dirStart);
                   $mustRead = 1 if $dirStart + $len > $dataLen;
               }
      @@ -1829,6 +1832,7 @@
                                       warn "Internal error writing offsets for $$newInfo{Name}\n";
                                       return undef;
                                   }
      +                            $newValuePt = \$newValue;
                               }
                               $offsetInfo or $offsetInfo = $offsetInfo[$ifd] = { };
                               # save location of valuePtr in new directory
      @@ -2294,8 +2298,8 @@
                           } elsif ($ifd < 0) {
                               # pad if necessary (but don't pad contiguous image blocks)
                               my $pad = 0;
      -                        ++$pad if $size & 0x01 and ($n+1 >= $count or not $oldEnd or
      -                                  $oldEnd != $$oldOffset[$n+1]);
      +                        ++$pad if ($blockSize + $size) & 0x01 and ($n+1 >= $count or
      +                                  not $oldEnd or $oldEnd != $$oldOffset[$n+1]);
                               # preserve original image padding if specified
                               if ($$origDirInfo{PreserveImagePadding} and $n+1 < $count and
                                   $oldEnd and $$oldOffset[$n+1] > $oldEnd)
      @@ -2559,7 +2563,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/WriteIPTC.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WriteIPTC.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/WriteIPTC.pl	2020-01-02 12:08:55.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WriteIPTC.pl	2022-01-12 22:51:57.000000000 +0000
      @@ -170,7 +170,7 @@
               } else {
                   my $len = int(($1 || 0) / 8);
                   if ($len == 1) {        # 1 byte
      -                $$valPtr = chr($$valPtr);
      +                $$valPtr = chr($$valPtr & 0xff);
                   } elsif ($len == 2) {   # 2-byte integer
                       $$valPtr = pack('n', $$valPtr);
                   } else {                # 4-byte integer
      @@ -715,7 +715,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/WritePDF.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WritePDF.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/WritePDF.pl	2020-01-07 12:26:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WritePDF.pl	2022-01-12 22:51:57.000000000 +0000
      @@ -293,6 +293,7 @@
           my $newTool = new Image::ExifTool;
           $newTool->Options(List => 1);
           $newTool->Options(Password => $et->Options('Password'));
      +    $newTool->Options(NoPDFList => $et->Options('NoPDFList'));
           $$newTool{PDF_CAPTURE} = \%capture;
           my $info = $newTool->ImageInfo($raf, 'XMP', 'PDF:*', 'Error', 'Warning');
           # not a valid PDF file unless we got a version number
      @@ -749,7 +750,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/WritePhotoshop.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WritePhotoshop.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/WritePhotoshop.pl	2020-01-28 13:56:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WritePhotoshop.pl	2022-01-12 22:51:57.000000000 +0000
      @@ -257,7 +257,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/WritePNG.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WritePNG.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/WritePNG.pl	2020-02-14 12:19:30.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WritePNG.pl	2022-01-12 22:56:30.000000000 +0000
      @@ -61,7 +61,7 @@
       
       #------------------------------------------------------------------------------
       # Write profile chunk (possibly compressed if Zlib is available)
      -# Inputs: 0) outfile, 1) Raw profile type, 2) data ref
      +# Inputs: 0) outfile, 1) Raw profile type (SCALAR ref for iCCP name), 2) data ref
       #         3) profile header type (undef if not a text profile)
       # Returns: 1 on success
       sub WriteProfile($$$;$)
      @@ -73,10 +73,10 @@
           }
           if (not defined $profile) {
               # write ICC profile as compressed iCCP chunk if possible
      -        if ($rawType eq 'icm') {
      +        if (ref $rawType) {
                   return 0 unless $deflate;
                   $chunk = 'iCCP';
      -            $prefix = "$rawType\0\0";
      +            $prefix = "$$rawType\0\0";
               } else {
                   $chunk = $rawType;
                   if ($rawType eq $stdCase{zxif}) {
      @@ -116,7 +116,7 @@
       }
       
       #------------------------------------------------------------------------------
      -# Add iCCP chunk to the PNG image if necessary (must come before PLTE and IDAT)
      +# Add iCCP-related chunks to the PNG image if necessary (must come before PLTE and IDAT)
       # Inputs: 0) ExifTool object ref, 1) output file or scalar ref
       # Returns: true on success
       sub Add_iCCP($$)
      @@ -127,9 +127,28 @@
               my $tagTablePtr = Image::ExifTool::GetTagTable('Image::ExifTool::ICC_Profile::Main');
               my %dirInfo = ( Parent => 'PNG', DirName => 'ICC_Profile' );
               my $buff = $et->WriteDirectory(\%dirInfo, $tagTablePtr);
      -        if (defined $buff and length $buff and WriteProfile($outfile, 'icm', \$buff)) {
      -            $et->VPrint(0, "Created ICC profile\n");
      -            delete $$et{ADD_DIRS}{ICC_Profile}; # don't add it again
      +        if (defined $buff and length $buff) {
      +            my $profileName = $et->GetNewValue($Image::ExifTool::PNG::Main{'iCCP-name'});
      +            $profileName = 'icm' unless defined $profileName;
      +            if (WriteProfile($outfile, \$profileName, \$buff)) {
      +                $et->VPrint(0, "Created ICC profile with name '${profileName}'\n");
      +                delete $$et{ADD_DIRS}{ICC_Profile}; # don't add it again
      +            }
      +        }
      +    }
      +    # must also add sRGB and gAMA before PLTE and IDAT
      +    if ($$et{ADD_PNG}) {
      +        my ($tag, %addBeforePLTE);
      +        foreach $tag (qw(sRGB gAMA)) {
      +            next unless $$et{ADD_PNG}{$tag};
      +            $addBeforePLTE{$tag} = $$et{ADD_PNG}{$tag};
      +            delete $$et{ADD_PNG}{$tag};
      +        }
      +        if (%addBeforePLTE) {
      +            my $save = $$et{ADD_PNG};
      +            $$et{ADD_PNG} = \%addBeforePLTE;
      +            AddChunks($et, $outfile);
      +            $$et{ADD_PNG} = $save;
               }
           }
           return 1;
      @@ -179,6 +198,8 @@
                   $tag =~ s/-$lang$//;    # remove language code from tagID
               } elsif ($$et{OPTIONS}{Charset} ne 'Latin' and $val =~  /[\x80-\xff]/) {
                   $iTXt = 1;      # write as iTXt if it contains non-Latin special characters
      +        } elsif ($$tagInfo{iTXt}) {
      +            $iTXt = 1;      # write as iTXt if specified in user-defined tag
               }
           }
           if ($comp) {
      @@ -242,9 +263,10 @@
           # write any outstanding PNG tags
           foreach $tag (sort keys %$addTags) {
               my $tagInfo = $$addTags{$tag};
      +        next if $$tagInfo{FakeTag}; # (iCCP-name)
               my $nvHash = $et->GetNewValueHash($tagInfo);
      -        # (native PNG information is always preferred, so don't check IsCreating)
      -        next unless $et->IsOverwriting($nvHash);
      +        # (native PNG information is always preferred, so don't rely on just IsCreating)
      +        next unless $$nvHash{IsCreating} or $et->IsOverwriting($nvHash) > 0;
               my $val = $et->GetNewValue($nvHash);
               if (defined $val) {
                   next if $$nvHash{EditOnly};
      @@ -379,7 +401,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/WritePostScript.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WritePostScript.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/WritePostScript.pl	2020-01-02 12:08:56.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WritePostScript.pl	2022-01-12 22:51:57.000000000 +0000
      @@ -59,6 +59,7 @@
           Photoshop    => 'PostScript',
           IPTC         => 'Photoshop',
           EXIFInfo     => 'Photoshop',
      +    EXIF         => 'EXIFInfo',
           IFD0         => 'EXIFInfo',
           IFD1         => 'IFD0',
           ICC_Profile  => 'PostScript',
      @@ -686,7 +687,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/WriteQuickTime.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WriteQuickTime.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/WriteQuickTime.pl	2020-02-19 15:50:28.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WriteQuickTime.pl	2022-02-09 12:08:08.000000000 +0000
      @@ -17,6 +17,7 @@
           Keys      => 'Movie',       # MOV-Movie-Meta-Keys !! (hack due to different Meta location)
           Meta      => 'UserData',
           XMP       => 'UserData',    # MOV-Movie-UserData-XMP
      +    Microsoft => 'UserData',    # MOV-Movie-UserData-Microsoft
           UserData  => 'Movie',       # MOV-Movie-UserData
           Movie     => 'MOV',
           GSpherical => 'SphericalVideoXML', # MOV-Movie-Track-SphericalVideoXML
      @@ -30,6 +31,7 @@
           Keys      => 'Movie',       # MOV-Movie-Meta-Keys !! (hack due to different Meta location)
           Meta      => 'UserData',
           UserData  => 'Movie',       # MOV-Movie-UserData
      +    Microsoft => 'UserData',    # MOV-Movie-UserData-Microsoft
           Movie     => 'MOV',
           XMP       => 'MOV',         # MOV-XMP
           GSpherical => 'SphericalVideoXML', # MOV-Movie-Track-SphericalVideoXML
      @@ -76,8 +78,8 @@
       # convert ExifTool Format to QuickTime type
       my %qtFormat = (
          'undef' => 0x00,  string => 0x01,
      -    int8s  => 0x15,  int16s => 0x15,  int32s => 0x15,
      -    int8u  => 0x16,  int16u => 0x16,  int32u => 0x16,
      +    int8s  => 0x15,  int16s => 0x15,  int32s => 0x15,  int64s => 0x15,
      +    int8u  => 0x16,  int16u => 0x16,  int32u => 0x16,  int64u => 0x16,
           float  => 0x17,  double => 0x18,
       );
       my $undLang = 0x55c4;   # numeric code for default ('und') language
      @@ -144,7 +146,7 @@
               $v[2] = Image::ExifTool::ToFloat($v[2]) * ($below ? -1 : 1) if @v == 3;
               return "@v";
           }
      -    return $val if $val =~ /^([-+]\d+(\.\d*)?){2,3}(CRS.*)?$/; # already in ISO6709 format?
      +    return $val if $val =~ /^([-+]\d+(\.\d*)?){2,3}(CRS.*)?\/?$/; # already in ISO6709 format?
           return undef;
       }
       
      @@ -159,15 +161,19 @@
           my @a = split ' ', $val;
           if (@a == 2 or @a == 3) {
               # latitude must have 2 digits before the decimal, and longitude 3,
      -        # and all values must start with a "+" or "-"
      -        my @fmt = ('%s%02d','%s%03d','%s%d');
      +        # and all values must start with a "+" or "-", and Google Photos
      +        # requires at least 3 digits after the decimal point
      +        # (and as of Apr 2021, Google Photos doesn't accept coordinats
      +        #  with more than 5 digits after the decimal place:
      +        #  https://exiftool.org/forum/index.php?topic=11055.msg67171#msg67171 )
      +        my @fmt = ('%s%02d.%s%s','%s%03d.%s%s','%s%d.%s%s');
               foreach (@a) {
                   return undef unless Image::ExifTool::IsFloat($_);
      -            $_ =~ s/^([-+]?)(\d+)/sprintf(shift(@fmt), $1 || '+', $2)/e;
      +            $_ =~ s/^([-+]?)(\d+)\.?(\d*)/sprintf(shift(@fmt),$1||'+',$2,$3,length($3)<3 ? '0'x(3-length($3)) : '')/e;
               }
      -        return join '', @a;
      +        return join '', @a, '/';
           }
      -    return $val if $val =~ /^([-+]\d+(\.\d*)?){2,3}(CRS.*)?$/; # already in ISO6709 format?
      +    return $val if $val =~ /^([-+]\d+(\.\d*)?){2,3}(CRS.*)?\/?$/; # already in ISO6709 format?
           return undef;
       }
       
      @@ -293,22 +299,26 @@
       sub CheckQTValue($$$)
       {
           my ($et, $tagInfo, $valPtr) = @_;
      -    my $format = $$tagInfo{Format} || $$tagInfo{Table}{FORMAT};
      +    my $format = $$tagInfo{Format} || $$tagInfo{Writable} || $$tagInfo{Table}{FORMAT};
           return undef unless $format;
           return Image::ExifTool::CheckValue($valPtr, $format, $$tagInfo{Count});
       }
       
       #------------------------------------------------------------------------------
       # Format QuickTime value for writing
      -# Inputs: 0) ExifTool ref, 1) value ref, 2) Format (or undef)
      +# Inputs: 0) ExifTool ref, 1) value ref, 2) Format (or undef), 3) Writable (or undef)
       # Returns: Flags for QT data type, and reformats value as required
      -sub FormatQTValue($$;$)
      +sub FormatQTValue($$;$$)
       {
      -    my ($et, $valPt, $format) = @_;
      +    my ($et, $valPt, $format, $writable) = @_;
           my $flags;
      -    if ($format and $format ne 'string') {
      -        $$valPt = WriteValue($$valPt, $format);
      -        $flags = $qtFormat{$format} || 0;
      +    if ($format and $format ne 'string' or not $format and $writable and $writable ne 'string') {
      +        $$valPt = WriteValue($$valPt, $format || $writable);
      +        if ($writable and $qtFormat{$writable}) {
      +            $flags = $qtFormat{$writable};
      +        } else {
      +            $flags = $qtFormat{$format || 0} || 0;
      +        }
           } elsif ($$valPt =~ /^\xff\xd8\xff/) {
               $flags = 0x0d;  # JPG
           } elsif ($$valPt =~ /^(\x89P|\x8aM|\x8bJ)NG\r\n\x1a\n/) {
      @@ -362,7 +372,7 @@
           my $pos = 8;
           my $newTags = $et->GetNewTagInfoHash($tagTablePtr);
           my $newData = substr($$dataPt, 0, $pos);
      -        
      +
           my $newIndex = 1;
           my $index = 1;
           while ($pos < $dirLen - 4) {
      @@ -457,94 +467,101 @@
           return () unless $items and $raf;
       
           # extract information from EXIF/XMP metadata items
      -    if ($items and $raf) {
      -        my $curPos = $raf->Tell();
      -        my $primary = $$et{PrimaryItem} || 0;
      -        my $id;
      -        foreach $id (sort { $a <=> $b } keys %$items) {
      -            my $item = $$items{$id};
      -            # only edit primary EXIF/XMP metadata
      -            next unless $$item{RefersTo} and $$item{RefersTo}{$primary};
      -            my $type = $$item{ContentType} || $$item{Type} || next;
      -            # get ExifTool name for this item
      -            $name = { Exif => 'EXIF', 'application/rdf+xml' => 'XMP' }->{$type};
      -            next unless $name;  # only care about EXIF and XMP
      -            next unless $$et{EDIT_DIRS}{$name};
      -            $did{$name} = 1;    # set flag to prevent creating this metadata
      -            my ($warn, $extent, $buff, @edit);
      -            $warn = 'Missing iloc box' unless $$boxPos{iloc};
      -            $warn = "No Extents for $type item" unless $$item{Extents} and @{$$item{Extents}};
      -            $warn = "Can't currently decode encoded $type metadata" if $$item{ContentEncoding};
      -            $warn = "Can't currently decode protected $type metadata" if $$item{ProtectionIndex};
      -            $warn = "Can't currently extract $type with construction method $$item{ConstructionMethod}" if $$item{ConstructionMethod};
      -            $warn = "$type metadata is not this file" if $$item{DataReferenceIndex};
      -            $warn and $et->Warn($warn), next;
      -            my $base = $$item{BaseOffset} || 0;
      -            my $val = '';
      -            foreach $extent (@{$$item{Extents}}) {
      -                $val .= $buff if defined $buff;
      -                my $pos = $$extent[1] + $base;
      -                if ($$extent[2]) {
      -                    $raf->Seek($pos, 0) or last;
      -                    $raf->Read($buff, $$extent[2]) or last;
      -                } else {
      -                    $buff = '';
      -                }
      -                push @edit, [ $pos, $pos + $$extent[2] ];   # replace or delete this if changed
      +    my $primary = $$et{PrimaryItem};
      +    my $curPos = $raf->Tell();
      +    my $id;
      +    foreach $id (sort { $a <=> $b } keys %$items) {
      +        $primary = $id unless defined $primary; # assume primary is lowest-number item if pitm missing
      +        my $item = $$items{$id};
      +        # only edit primary EXIF/XMP metadata
      +        next unless $$item{RefersTo} and $$item{RefersTo}{$primary};
      +        my $type = $$item{ContentType} || $$item{Type} || next;
      +        # get ExifTool name for this item
      +        $name = { Exif => 'EXIF', 'application/rdf+xml' => 'XMP' }->{$type};
      +        next unless $name;  # only care about EXIF and XMP
      +        next unless $$et{EDIT_DIRS}{$name};
      +        $did{$name} = 1;    # set flag to prevent creating this metadata
      +        my ($warn, $extent, $buff, @edit);
      +        $warn = 'Missing iloc box' unless $$boxPos{iloc};
      +        $warn = "No Extents for $type item" unless $$item{Extents} and @{$$item{Extents}};
      +        $warn = "Can't currently decode encoded $type metadata" if $$item{ContentEncoding};
      +        $warn = "Can't currently decode protected $type metadata" if $$item{ProtectionIndex};
      +        $warn = "Can't currently extract $type with construction method $$item{ConstructionMethod}" if $$item{ConstructionMethod};
      +        $warn = "$type metadata is not this file" if $$item{DataReferenceIndex};
      +        $warn and $et->Warn($warn), next;
      +        my $base = $$item{BaseOffset} || 0;
      +        my $val = '';
      +        foreach $extent (@{$$item{Extents}}) {
      +            $val .= $buff if defined $buff;
      +            my $pos = $$extent[1] + $base;
      +            if ($$extent[2]) {
      +                $raf->Seek($pos, 0) or last;
      +                $raf->Read($buff, $$extent[2]) or last;
      +            } else {
      +                $buff = '';
                   }
      -            next unless defined $buff;
      -            $buff = $val . $buff if length $val;
      -            my ($hdr, $subTable, $proc);
      -            if ($name eq 'EXIF') {
      -                if (length($buff) < 4 or length($buff) < 4 + unpack('N',$buff)) {
      -                    $et->Warn('Invalid Exif header');
      -                    next;
      -                }
      +            push @edit, [ $pos, $pos + $$extent[2] ];   # replace or delete this if changed
      +        }
      +        next unless defined $buff;
      +        $buff = $val . $buff if length $val;
      +        my ($hdr, $subTable, $proc);
      +        if ($name eq 'EXIF') {
      +            if (not length $buff) {
      +                # create EXIF from scratch
      +                $hdr = "\0\0\0\x06Exif\0\0";
      +            } elsif ($buff =~ /^(MM\0\x2a|II\x2a\0)/) {
      +                $et->Warn('Missing Exif header');
      +                $hdr = '';
      +            } elsif (length($buff) >= 4 and length($buff) >= 4 + unpack('N',$buff)) {
                       $hdr = substr($buff, 0, 4 + unpack('N',$buff));
      -                $subTable = GetTagTable('Image::ExifTool::Exif::Main');
      -                $proc = \&Image::ExifTool::WriteTIFF;
                   } else {
      -                $hdr = '';
      -                $subTable = GetTagTable('Image::ExifTool::XMP::Main');
      +                $et->Warn('Invalid Exif header');
      +                next;
                   }
      -            my %dirInfo = (
      -                DataPt   => \$buff,
      -                DataLen  => length $buff,
      -                DirStart => length $hdr,
      -                DirLen   => length($buff) - length $hdr,
      -            );
      -            my $changed = $$et{CHANGED};
      -            my $newVal = $et->WriteDirectory(\%dirInfo, $subTable, $proc);
      -            if (defined $newVal and $changed ne $$et{CHANGED} and
      -                # nothing changed if deleting an empty directory
      -                ($dirInfo{DirLen} or length $newVal))
      -            {
      -                $newVal = $hdr . $newVal if length $hdr and length $newVal;
      -                $edit[0][2] = \$newVal;     # replace the old chunk with the new data
      -                $edit[0][3] = $id;          # mark this chunk with the item ID
      -                push @mdatEdit, @edit;
      -                # update item extent_length
      -                my $n = length $newVal;
      -                foreach $extent (@{$$item{Extents}}) {
      -                    my ($nlen, $lenPt) = @$extent[3,4];
      -                    if ($nlen == 8) {
      -                        Set64u($n, $outfile, $$boxPos{iloc}[0] + 8 + $lenPt);
      -                    } elsif ($n <= 0xffffffff) {
      -                        Set32u($n, $outfile, $$boxPos{iloc}[0] + 8 + $lenPt);
      -                    } else {
      -                        $et->Error("Can't yet promote iloc length to 64 bits");
      -                        return ();
      -                    }
      -                    $n = 0;
      -                }
      -                if (@{$$item{Extents}} != 1) {
      -                    $et->Error("Can't yet handle $name in multiple parts. Please submit sample for testing");
      +            $subTable = GetTagTable('Image::ExifTool::Exif::Main');
      +            $proc = \&Image::ExifTool::WriteTIFF;
      +        } else {
      +            $hdr = '';
      +            $subTable = GetTagTable('Image::ExifTool::XMP::Main');
      +        }
      +        my %dirInfo = (
      +            DataPt   => \$buff,
      +            DataLen  => length $buff,
      +            DirStart => length $hdr,
      +            DirLen   => length($buff) - length $hdr,
      +        );
      +        my $changed = $$et{CHANGED};
      +        my $newVal = $et->WriteDirectory(\%dirInfo, $subTable, $proc);
      +        if (defined $newVal and $changed ne $$et{CHANGED} and
      +            # nothing changed if deleting an empty directory
      +            ($dirInfo{DirLen} or length $newVal))
      +        {
      +            $newVal = $hdr . $newVal if length $hdr and length $newVal;
      +            $edit[0][2] = \$newVal;     # replace the old chunk with the new data
      +            $edit[0][3] = $id;          # mark this chunk with the item ID
      +            push @mdatEdit, @edit;
      +            # update item extent_length
      +            my $n = length $newVal;
      +            foreach $extent (@{$$item{Extents}}) {
      +                my ($nlen, $lenPt) = @$extent[3,4];
      +                if ($nlen == 8) {
      +                    Set64u($n, $outfile, $$boxPos{iloc}[0] + 8 + $lenPt);
      +                } elsif ($n <= 0xffffffff) {
      +                    Set32u($n, $outfile, $$boxPos{iloc}[0] + 8 + $lenPt);
      +                } else {
      +                    $et->Error("Can't yet promote iloc length to 64 bits");
      +                    return ();
                       }
      +                $n = 0;
      +            }
      +            if (@{$$item{Extents}} != 1) {
      +                $et->Error("Can't yet handle $name in multiple parts. Please submit sample for testing");
                   }
      -            $$et{CHANGED} = $changed;   # (will set this later if successful in editing mdat)
               }
      -        $raf->Seek($curPos, 0);     # seek back to original position
      +        $$et{CHANGED} = $changed;   # (will set this later if successful in editing mdat)
           }
      +    $raf->Seek($curPos, 0);     # seek back to original position
      +
           # add necessary metadata types if they didn't already exist
           my ($countNew, %add, %usedID);
           foreach $name ('EXIF','XMP') {
      @@ -556,10 +573,18 @@
                   $et->Warn("Can't create $name. Missing expected $str");
                   last;
               }
      -        my $primary = $$et{PrimaryItem};
      -        unless (defined $primary) {
      -            $et->Warn("Can't create $name. No primary item reference");
      -            last;
      +        unless (defined $$et{PrimaryItem}) {
      +            unless (defined $primary) {
      +                $et->Warn("Can't create $name. No items to reference");
      +                last;
      +            }
      +            # add new primary item reference box after hdrl box
      +            if ($primary < 0x10000) {
      +                $add{hdlr} = pack('Na4Nn', 14, 'pitm', 0, $primary);
      +            } else {
      +                $add{hdlr} = pack('Na4CCCCN', 16, 'pitm', 1, 0, 0, 0, $primary);
      +            }
      +            $et->Warn("Added missing PrimaryItemReference (for item $primary)", 1);
               }
               my $buff = '';
               my ($hdr, $subTable, $proc);
      @@ -585,7 +610,7 @@
                       $irefVer = Get8u($outfile, $$boxPos{iref}[0] + 8);
                   } else {
                       # create iref box after end of iinf box (and save version in boxPos list)
      -                $irefVer = ($primary > 0xffff ? 1 : 0);
      +                $irefVer = ($primary < 0x10000 ? 0 : 1);
                       $$boxPos{iref} = [ $$boxPos{iinf}[0] + $$boxPos{iinf}[1], 0, $irefVer ];
                   }
                   $newVal = $hdr . $newVal if length $hdr;
      @@ -672,7 +697,8 @@
               }
           }
           if ($countNew) {
      -        # insert new entries into iinf, iref and iloc boxes
      +        # insert new entries into iinf, iref and iloc boxes,
      +        # and add new pitm box after hdlr if necessary
               my $added = 0;
               my $tag;
               foreach $tag (sort { $$boxPos{$a}[0] <=> $$boxPos{$b}[0] } keys %$boxPos) {
      @@ -683,7 +709,7 @@
                       # create new iref box
                       $add{$tag} = Set32u(12 + length $add{$tag}) . $tag .
                                    Set8u($$boxPos{$tag}[2]) . "\0\0\0" . $add{$tag};
      -            } else {
      +            } elsif ($tag ne 'hdlr') {
                       my $n = Get32u($outfile, $pos);
                       Set32u($n + length($add{$tag}), $outfile, $pos);    # increase box size
                   }
      @@ -711,10 +737,10 @@
                       if ($added) {
                           $$_[1] += $added foreach @{$$dirInfo{ChunkOffset}};
                       }
      -            } else {
      +            } elsif ($tag ne 'hdlr') {
                       next;
                   }
      -            # add new entries to this box
      +            # add new entries to this box (or add pitm after hdlr)
                   substr($$outfile, $pos + $$boxPos{$tag}[1], 0) = $add{$tag};
                   $added += length $add{$tag};    # positions are shifted by length of new entries
               }
      @@ -823,7 +849,7 @@
                       # --> hold this terminator to the end
                       $term = $hdr;
                   } elsif ($n != 0) {
      -                $et->Error('File format error');
      +                $et->Error("Unknown $n bytes at end of file", 1);
                   }
                   last;
               }
      @@ -916,7 +942,7 @@
                   my $hdlr = substr($buff,8,4);
                   $$et{HandlerType} = $hdlr if $hdlr =~ /^(vide|soun)$/;
               }
      -        
      +
               # if this atom stores offsets, save its location so we can fix up offsets later
               # (are there any other atoms that may store absolute file offsets?)
               if ($tag =~ /^(stco|co64|iloc|mfra|moof|sidx|saio|gps |CTBO|uuid)$/) {
      @@ -1041,6 +1067,9 @@
                           #  3=optional base offset, 4=optional item ID)
                           ChunkOffset => \@chunkOffset,
                       );
      +                # set InPlace flag so XMP will be padded properly when
      +                # QuickTimePad is used if this is an XMP directory
      +                $subdirInfo{InPlace} = 2 if $et->Options('QuickTimePad');
                       # pass the header pointer if necessary (for EXIF IFD's
                       # where the Base offset is at the end of the header)
                       if ($hdrLen and $hdrLen < $size) {
      @@ -1063,7 +1092,9 @@
                           $$et{CHANGED} = $oldChanged if $$et{DemoteErrors} > 1;
                           delete $$et{DemoteErrors};
                       }
      -                if (defined $newData and not length $newData and $$tagTablePtr{PERMANENT}) {
      +                if (defined $newData and not length $newData and ($$tagInfo{Permanent} or
      +                    ($$tagTablePtr{PERMANENT} and not defined $$tagInfo{Permanent})))
      +                {
                           # do nothing if trying to delete tag from a PERMANENT table
                           $$et{CHANGED} = $oldChanged;
                           undef $newData;
      @@ -1071,7 +1102,9 @@
                       $$et{CUR_WRITE_GROUP} = $oldWriteGroup;
                       SetByteOrder('MM');
                       # add back header if necessary
      -                if ($start and defined $newData and length $newData) {
      +                if ($start and defined $newData and (length $newData or
      +                    (defined $$tagInfo{Permanent} and not $$tagInfo{Permanent})))
      +                {
                           $newData = substr($buff,0,$start) . $newData;
                           $$_[1] += $start foreach @chunkOffset;
                       }
      @@ -1106,9 +1139,9 @@
                                               my $newVal = $et->GetNewValue($nvHash);
                                               next unless defined $newVal;
                                               my $prVal = $newVal;
      -                                        my $flags = FormatQTValue($et, \$newVal, $format);
      +                                        my $flags = FormatQTValue($et, \$newVal, $format, $$tagInfo{Writable});
                                               next unless defined $newVal;
      -                                        my ($ctry, $lang) = (0, $undLang);
      +                                        my ($ctry, $lang) = (0, 0);
                                               if ($$ti{LangCode}) {
                                                   unless ($$ti{LangCode} =~ /^([A-Z]{3})?[-_]?([A-Z]{2})?$/i) {
                                                       $et->Warn("Invalid language code for $$ti{Name}");
      @@ -1164,7 +1197,11 @@
                                       } else {
                                           if ($format) {
                                               # update flags for the format we are writing
      -                                        $flags = $qtFormat{$format} if $qtFormat{$format};
      +                                        if ($$tagInfo{Writable} and $qtFormat{$$tagInfo{Writable}}) {
      +                                            $flags = $qtFormat{$$tagInfo{Writable}};
      +                                        } elsif ($qtFormat{$format}) {
      +                                            $flags = $qtFormat{$format};
      +                                        }
                                           } else {
                                               $format = QuickTimeFormat($flags, $len);
                                           }
      @@ -1183,12 +1220,13 @@
                                           }
                                           my $prVal = $newVal;
                                           # format new value for writing (and get new flags)
      -                                    $flags = FormatQTValue($et, \$newVal, $format);
      +                                    $flags = FormatQTValue($et, \$newVal, $format, $$tagInfo{Writable});
                                           my $grp = $et->GetGroup($langInfo, 1);
                                           $et->VerboseValue("- $grp:$$langInfo{Name}", $val);
                                           $et->VerboseValue("+ $grp:$$langInfo{Name}", $prVal);
                                           $newData = substr($buff, 0, $pos-16) unless defined $newData;
      -                                    $newData .= pack('Na4Nnn', length($newVal)+16, $type, $flags, $ctry, $lang);
      +                                    my $wLang = $lang eq $undLang ? 0 : $lang;
      +                                    $newData .= pack('Na4Nnn', length($newVal)+16, $type, $flags, $ctry, $wLang);
                                           $newData .= $newVal;
                                           ++$$et{CHANGED};
                                       } elsif (defined $newData) {
      @@ -1204,10 +1242,14 @@
                           } elsif ($format) {
                               $val = ReadValue(\$buff, 0, $format, undef, $size);
                           } elsif (($tag =~ /^\xa9/ or $$tagInfo{IText}) and $size >= ($$tagInfo{IText} || 4)) {
      -                        if ($$tagInfo{IText} and $$tagInfo{IText} == 6) {
      -                            $lang = unpack('x4n', $buff);
      -                            $len = $size - 6;
      -                            $val = substr($buff, 6, $len);
      +                        my $hdr;
      +                        if ($$tagInfo{IText} and $$tagInfo{IText} >= 6) {
      +                            my $iText = $$tagInfo{IText};
      +                            my $pos = $iText - 2;
      +                            $lang = unpack("x${pos}n", $buff);
      +                            $hdr = substr($buff,4,$iText-6);
      +                            $len = $size - $iText;
      +                            $val = substr($buff, $iText, $len);
                               } else {
                                   ($len, $lang) = unpack('nn', $buff);
                                   $len -= 4 if 4 + $len > $size; # (see QuickTime.pm for explanation)
      @@ -1215,14 +1257,18 @@
                                   $val = substr($buff, 4, $len);
                               }
                               $lang or $lang = $undLang;  # treat both 0 and 'und' as 'und'
      +                        my $enc;
                               if ($lang < 0x400 and $val !~ /^\xfe\xff/) {
                                   $charsetQuickTime = $et->Options('CharsetQuickTime');
      -                            $val = $et->Decode($val, $charsetQuickTime);
      +                            $enc = $charsetQuickTime;
                               } else {
      -                            my $enc = $val=~s/^\xfe\xff// ? 'UTF16' : 'UTF8';
      +                            $enc = $val=~s/^\xfe\xff// ? 'UTF16' : 'UTF8';
      +                        }
      +                        unless ($$tagInfo{NoDecode}) {
                                   $val = $et->Decode($val, $enc);
      +                            $val =~ s/\0+$//;   # remove trailing nulls if they exist
                               }
      -                        $val =~ s/\0+$//;   # remove trailing nulls if they exist
      +                        $val = $hdr . $val if defined $hdr;
                               my $langCode = UnpackLang($lang, 1);
                               $langInfo = GetLangInfo($tagInfo, $langCode);
                               $nvHash = $et->GetNewValueHash($langInfo);
      @@ -1239,6 +1285,9 @@
                               }
                           } else {
                               $val = $buff;
      +                        if ($tag =~ /^\xa9/ or $$tagInfo{IText}) {
      +                            $et->Warn("Corrupted $$tagInfo{Name} value");
      +                        }
                           }
                           if ($nvHash and defined $val) {
                               if ($et->IsOverwriting($nvHash, $val)) {
      @@ -1251,11 +1300,23 @@
                                   $et->VerboseValue("+ $grp:$$langInfo{Name}", $newData);
                                   # add back necessary header and encode as necessary
                                   if (defined $lang) {
      -                                $newData = $et->Encode($newData, $lang < 0x400 ? $charsetQuickTime : 'UTF8');
      -                                if ($$tagInfo{IText} and $$tagInfo{IText} == 6) {
      -                                    $newData = pack('Nn', 0, $lang) . $newData . "\0";
      +                                my $iText = $$tagInfo{IText} || 0;
      +                                my $hdr;
      +                                if ($iText > 6) {
      +                                    $newData .= ' 'x($iText-6) if length($newData) < $iText-6;
      +                                    $hdr = substr($newData, 0, $iText-6);
      +                                    $newData = substr($newData, $iText-6);
      +                                }
      +                                unless ($$tagInfo{NoDecode}) {
      +                                    $newData = $et->Encode($newData, $lang < 0x400 ? $charsetQuickTime : 'UTF8');
      +                                }
      +                                my $wLang = $lang eq $undLang ? 0 : $lang;
      +                                if ($iText < 6) {
      +                                    $newData = pack('nn', length($newData), $wLang) . $newData;
      +                                } elsif ($iText == 6) {
      +                                    $newData = pack('Nn', 0, $wLang) . $newData . "\0";
                                       } else {
      -                                    $newData = pack('nn', length($newData), $lang) . $newData;
      +                                    $newData = "\0\0\0\0" . $hdr . pack('n', $wLang) . $newData . "\0";
                                       }
                                   } elsif (not $format or $format =~ /^string/ and
                                            not $$tagInfo{Binary} and not $$tagInfo{ValueConv})
      @@ -1273,6 +1334,14 @@
                   }
                   # write the new atom if it was modified
                   if (defined $newData) {
      +                my $sizeDiff = length($buff) - length($newData);
      +                # pad to original size if specified, otherwise give verbose message about the changed size
      +                if ($sizeDiff > 0 and $$tagInfo{PreservePadding} and $et->Options('QuickTimePad')) {
      +                    $newData .= "\0" x $sizeDiff;
      +                    $et->VPrint(1, "    ($$tagInfo{Name} padded to original size)");
      +                } elsif ($sizeDiff) {
      +                    $et->VPrint(1, "    ($$tagInfo{Name} changed size)");
      +                }
                       my $len = length($newData) + 8;
                       $len > 0x7fffffff and $et->Error("$$tagInfo{Name} to large to write"), last;
                       # update size in ChunkOffset list for modified 'uuid' atom
      @@ -1322,9 +1391,13 @@
                       $pos += $siz;
                   }
                   if ($msg) {
      -                my $grp = $$et{CUR_WRITE_GROUP} || $parent;
      -                $et->Error("$msg for $grp");
      -                return $rtnErr;
      +                # (allow empty sample description for 'url ' handler type)
      +                if ($$et{HandlerType} or length($buff) > 8) {
      +                    my $grp = $$et{CUR_WRITE_GROUP} || $parent;
      +                    $et->Error("$msg for $grp");
      +                    return $rtnErr;
      +                }
      +                $flg = 1; # (this seems to be the case)
                   }
                   $$et{QtDataFlg} = $flg;
               }
      @@ -1390,9 +1463,9 @@
                       my $newVal = $et->GetNewValue($nvHash);
                       next unless defined $newVal;
                       my $prVal = $newVal;
      -                my $flags = FormatQTValue($et, \$newVal, $$tagInfo{Format});
      +                my $flags = FormatQTValue($et, \$newVal, $$tagInfo{Format}, $$tagInfo{Writable});
                       next unless defined $newVal;
      -                my ($ctry, $lang) = (0,0);
      +                my ($ctry, $lang) = (0, 0);
                       # handle alternate languages
                       if ($$tagInfo{LangCode}) {
                           $tag = substr($tag, 0, 4);  # strip language code from tag ID
      @@ -1408,17 +1481,18 @@
                       }
                       if ($$dirInfo{HasData}) {
                           # add 'data' header
      -                    $lang or $lang = $undLang;
                           $newVal = pack('Na4Nnn',16+length($newVal),'data',$flags,$ctry,$lang).$newVal;
                       } elsif ($tag =~ /^\xa9/ or $$tagInfo{IText}) {
      -                    $lang or $lang = $undLang;
                           if ($ctry) {
                               my $grp = $et->GetGroup($tagInfo,1);
                               $et->Warn("Can't use country code for $grp:$$tagInfo{Name}");
                               next;
      -                    } elsif ($$tagInfo{IText} and $$tagInfo{IText} == 6) {
      +                    } elsif ($$tagInfo{IText} and $$tagInfo{IText} >= 6) {
                               # add 6-byte langText header and trailing null
      -                        $newVal = pack('Nn',0,$lang) . $newVal . "\0";
      +                        # (with extra junk before language code if IText > 6)
      +                        my $n = $$tagInfo{IText} - 6;
      +                        $newVal .= ' ' x $n if length($newVal) < $n;
      +                        $newVal = "\0\0\0\0" . substr($newVal,0,$n) . pack('n',0,$lang) . substr($newVal,$n) . "\0";
                           } else {
                               # add IText header
                               $newVal = pack('nn',length($newVal),$lang) . $newVal;
      @@ -1750,7 +1824,7 @@
           }
       
           # switch back to actual output file
      -    $outfile = $$dirInfo{OutFile};  
      +    $outfile = $$dirInfo{OutFile};
       
           # write the metadata
           Write($outfile, $outBuff) or $rtnVal = 0;
      @@ -1778,7 +1852,7 @@
       
           # write the stuff that must come last
           Write($outfile, $writeLast) or $rtnVal = 0 if $writeLast;
      -    
      +
           return $rtnVal;
       }
       
      @@ -1853,7 +1927,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/Writer.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Writer.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/Writer.pl	2020-02-18 15:41:57.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/Writer.pl	2022-01-13 13:02:51.000000000 +0000
      @@ -105,6 +105,7 @@
           ICC => [ 'ICC_Profile', 'WriteICC' ],
           IND =>   'InDesign',
           JP2 =>   'Jpeg2000',
      +    JXL =>   'Jpeg2000',
           MIE =>   undef,
           MOV => [ 'QuickTime',   'WriteMOV' ],
           MRW =>   'MinoltaRaw',
      @@ -136,9 +137,9 @@
           Adobe AFCP APP0 APP1 APP2 APP3 APP4 APP5 APP6 APP7 APP8 APP9 APP10 APP11
           APP12 APP13 APP14 APP15 CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix
           FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD IPTC
      -    ItemList JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD MIE MPF NikonCapture PDF
      -    PDF-update PhotoMechanic Photoshop PNG PNG-pHYs PrintIM QuickTime RMETA RSRC
      -    SubIFD Trailer UserData XML XML-* XMP XMP-*
      +    ItemList JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD Microsoft MIE MPF
      +    NikonApp NikonCapture PDF PDF-update PhotoMechanic Photoshop PNG PNG-pHYs
      +    PrintIM QuickTime RMETA RSRC SubIFD Trailer UserData XML XML-* XMP XMP-*
       );
       # family 2 group names that we can delete
       my @delGroup2 = qw(
      @@ -153,7 +154,7 @@
       );
       
       # family 0 groups where directories should never be deleted
      -my %permanentDir = ( QuickTime => 1 );
      +my %permanentDir = ( QuickTime => 1, Jpeg2000 => 1 );
       
       # lookup for all valid family 2 groups (lower case)
       my %family2groups = map { lc $_ => 1 } @delGroup2, 'Unknown';
      @@ -359,21 +360,25 @@
           my $convType = $options{Type} || ($$self{OPTIONS}{PrintConv} ? 'PrintConv' : 'ValueConv');
       
           # filter value if necessary
      -    Filter($$self{OPTIONS}{FilterW}, \$value) if $convType eq 'PrintConv';
      +    $self->Filter($$self{OPTIONS}{FilterW}, \$value) or return 0 if $convType eq 'PrintConv';
       
           my (@wantGroup, $family2);
           my $wantGroup = $options{Group};
           if ($wantGroup) {
               foreach (split /:/, $wantGroup) {
                   next unless length($_) and /^(\d+)?(.*)/; # separate family number and group name
      -            my ($f, $g) = ($1, lc $2);
      +            my ($f, $g) = ($1, $2);
      +            my $lcg = lc $g;
                   # save group/family unless '*' or 'all'
      -            push @wantGroup, [ $f, $g ] unless $g eq '*' or $g eq 'all';
      -            if (defined $f) {
      -                $f > 2 and return 0;      # only allow family 0, 1 or 2
      -                $family2 = 1 if $f == 2;  # set flag indicating family 2 was used
      +            push @wantGroup, [ $f, $lcg ] unless $lcg eq '*' or $lcg eq 'all';
      +            if ($g =~ s/^ID-//i) {          # family 7 is a tag ID
      +                return 0 if defined $f and $f ne 7;
      +                $wantGroup[-1] = [ 7, $g ]; # group name with 'ID-' removed and case preserved
      +            } elsif (defined $f) {
      +                $f > 2 and return 0;        # only allow family 0, 1 or 2
      +                $family2 = 1 if $f == 2;    # set flag indicating family 2 was used
                   } else {
      -                $family2 = 1 if $family2groups{$g};
      +                $family2 = 1 if $family2groups{$lcg};
                   }
               }
               undef $wantGroup unless @wantGroup;
      @@ -569,6 +574,9 @@
                           my $pre = $wantGroup ? $wantGroup . ':' : '';
                           $err = "Tag '$pre${origTag}' is not defined";
                           $err .= ' or has a bad language code' if $origTag =~ /-/;
      +                    if (not $pre and uc($origTag) eq 'TAG') {
      +                        $err .= " (specify a writable tag name, not '${origTag}' literally)"
      +                    }
                       } else {
                           $err = "Invalid tag name '${tag}'";
                           $err .= " (remove the leading '\$')" if $tag =~ /^\$/;
      @@ -622,6 +630,8 @@
                               next;
                           }
                           next if $lcWant eq lc $grp[2];
      +                } elsif ($fam == 7) {
      +                    next if IsSameID($$tagInfo{TagID}, $lcWant);
                       } elsif ($fam != 1 and not $$tagInfo{AllowGroup}) {
                           next if $lcWant eq lc $grp[$fam];
                           if ($wgAll and not $fam and $allFam0{$lcWant}) {
      @@ -663,7 +673,7 @@
                           next TAG unless $lcWant eq lc $grp[1];
                       }
                   }
      -            $writeGroup or $writeGroup = ($$tagInfo{WriteGroup} || $grp[0]);
      +            $writeGroup or $writeGroup = ($$tagInfo{WriteGroup} || $$tagInfo{Table}{WRITE_GROUP} || $grp[0]);
                   $priority = $hiPri; # highest priority since group was specified
               }
               ++$foundMatch;
      @@ -1258,6 +1268,7 @@
               Filter          => $$options{Filter},
               FixBase         => $$options{FixBase},
               GlobalTimeShift => $$options{GlobalTimeShift},
      +        HexTagIDs       => $$options{HexTagIDs},
               IgnoreMinorErrors=>$$options{IgnoreMinorErrors},
               Lang            => $$options{Lang},
               LargeFileSupport=> $$options{LargeFileSupport},
      @@ -1389,7 +1400,10 @@
                       }
                   }
                   # validate tag name(s)
      -            $$opts{EXPR} or ValidTagName($tag) or $self->Warn("Invalid tag name '${tag}'"), next;
      +            unless ($$opts{EXPR} or ValidTagName($tag)) {
      +                $self->Warn("Invalid tag name '${tag}'. Use '=' not '<' to assign a tag value");
      +                next;
      +            }
                   ValidTagName($dstTag) or $self->Warn("Invalid tag name '${dstTag}'"), next;
                   # translate '+' and '-' to appropriate SetNewValue option
                   if ($opt) {
      @@ -1409,7 +1423,9 @@
                       foreach (split /:/, $grp) {
                           # save family/groups in list (ignoring 'all' and '*')
                           next unless length($_) and /^(\d+)?(.*)/;
      -                    push @fg, [ $1, $2 ] unless $2 eq '*' or $2 eq 'all';
      +                    my ($f, $g) = ($1, $2);
      +                    $f = 7 if $g =~ s/^ID-//i;
      +                    push @fg, [ $f, $g ] unless $g eq '*' or $g eq 'all';
                       }
                   }
                   # allow ValueConv to be specified by a '#' on the tag name
      @@ -1475,10 +1491,12 @@
                       }
                       foreach (@{$$set[0]}) {
                           my ($f, $g) = @$_;
      -                    if (defined $f) {
      -                        next SET unless defined $grp[$f] and $g eq $grp[$f];
      -                    } else {
      +                    if (not defined $f) {
                               next SET unless $grp{$g};
      +                    } elsif ($f == 7) {
      +                        next SET unless IsSameID($srcExifTool->GetTagID($tag), $g);
      +                    } else {
      +                        next SET unless defined $grp[$f] and $g eq $grp[$f];
                           }
                       }
                   }
      @@ -1598,21 +1616,25 @@
                       $nvHash = $self->GetNewValueHash($tagInfo);
                   } else {
                       # separate group from tag name
      -                $group = $1 if $tag =~ s/(.*)://;
      +                my @groups;
      +                @groups = split ':', $1 if $tag =~ s/(.*)://;
                       my @tagInfoList = FindTagInfo($tag);
                       # decide which tag we want
       GNV_TagInfo:    foreach $tagInfo (@tagInfoList) {
                           my $nvh = $self->GetNewValueHash($tagInfo) or next;
      -                    # select tag in specified group if necessary
      -                    while ($group and $group ne $$nvh{WriteGroup}) {
      +                    # select tag in specified group(s) if necessary
      +                    foreach (@groups) {
      +                        next if $_ eq $$nvh{WriteGroup};
                               my @grps = $self->GetGroup($tagInfo);
                               if ($grps[0] eq $$nvh{WriteGroup}) {
                                   # check family 1 group only if WriteGroup is not specific
      -                            last if $group eq $grps[1];
      +                            next if $_ eq $grps[1];
                               } else {
                                   # otherwise check family 0 group
      -                            last if $group eq $grps[0];
      +                            next if $_ eq $grps[0];
                               }
      +                        # also check family 7
      +                        next if /^ID-(.*)/i and IsSameID($$tagInfo{TagID}, $1);
                               # step to next entry in list
                               $nvh = $$nvh{Next} or next GNV_TagInfo;
                           }
      @@ -1972,12 +1994,12 @@
               local (*EXIFTOOL_SFN_IN, *EXIFTOOL_SFN_OUT);
               # renaming didn't work, so copy the file instead
               unless ($self->Open(\*EXIFTOOL_SFN_IN, $file)) {
      -            $self->Warn("Error opening '${file}'");
      +            $self->Error("Error opening '${file}'");
                   return -1;
               }
               unless ($self->Open(\*EXIFTOOL_SFN_OUT, $newName, '>')) {
                   close EXIFTOOL_SFN_IN;
      -            $self->Warn("Error creating '${newName}'");
      +            $self->Error("Error creating '${newName}'");
                   return -1;
               }
               binmode EXIFTOOL_SFN_IN;
      @@ -1990,7 +2012,7 @@
               close EXIFTOOL_SFN_IN;
               if ($err) {
                   $self->Unlink($newName);    # erase bad output file
      -            $self->Warn("Error writing '${newName}'");
      +            $self->Error("Error writing '${newName}'");
                   return -1;
               }
               # preserve modification time
      @@ -2007,7 +2029,7 @@
       
       #------------------------------------------------------------------------------
       # Set file permissions, group/user id and various MDItem tags from new tag values
      -# Inputs: 0) Exiftool ref, 1) file name or glob (must be a name for MDItem tags)
      +# Inputs: 0) ExifTool ref, 1) file name or glob (must be a name for MDItem tags)
       # Returns: 1=something was set OK, 0=didn't try, -1=error (and warning set)
       # Notes: There may be errors even if 1 is returned
       sub SetSystemTags($$)
      @@ -2055,6 +2077,46 @@
                   last;
               }
           }
      +    # delete Windows Zone.Identifier if specified
      +    my $zhash = $self->GetNewValueHash($Image::ExifTool::Extra{ZoneIdentifier});
      +    if ($zhash) {
      +        my $res = -1;
      +        if ($^O ne 'MSWin32') {
      +            $self->Warn('ZoneIdentifer is a Windows-only tag');
      +        } elsif (ref $file) {
      +            $self->Warn('Writing ZoneIdentifer requires a file name');
      +        } elsif (defined $self->GetNewValue('ZoneIdentifier', \$zhash)) {
      +            $self->Warn('ZoneIndentifier may only be delted');
      +        } elsif (not eval { require Win32API::File }) {
      +            $self->Warn('Install Win32API::File to write ZoneIdentifier');
      +        } else {
      +            my ($wattr, $wide);
      +            my $zfile = "${file}:Zone.Identifier";
      +            if ($self->EncodeFileName($zfile)) {
      +                $wide = 1;
      +                $wattr = eval { Win32API::File::GetFileAttributesW($zfile) };
      +            } else {
      +                $wattr = eval { Win32API::File::GetFileAttributes($zfile) };
      +            }
      +            if ($wattr == Win32API::File::INVALID_FILE_ATTRIBUTES()) {
      +                $res = 0; # file doesn't exist, nothing to do
      +            } elsif ($wattr & Win32API::File::FILE_ATTRIBUTE_READONLY()) {
      +                $self->Warn('Zone.Identifier stream is read-only');
      +            } else {
      +                if ($wide) {
      +                    $res = 1 if eval { Win32API::File::DeleteFileW($zfile) };
      +                } else {
      +                    $res = 1 if eval { Win32API::File::DeleteFile($zfile) };
      +                }
      +                if ($res > 0) {
      +                    $self->VPrint(0, "  Deleting Zone.Identifier stream\n");
      +                } else {
      +                    $self->Warn('Error deleting Zone.Identifier stream');
      +                }
      +            }
      +        }
      +        $result = $res if $res == 1 or not $result;
      +    }
           return $result;
       }
       
      @@ -2118,20 +2180,24 @@
               }
               if ($numNew == $numPseudo) {
                   $rtnVal = 2;
      +            if ((defined $newFileName or defined $newDir) and not ref $infile) {
      +                my $result = $self->SetFileName($infile);
      +                if ($result > 0) {
      +                    $infile = $$self{NewName};  # file name changed
      +                    $rtnVal = 1;
      +                } elsif ($result < 0) {
      +                    return 0;   # don't try to do anything else
      +                }
      +            }
                   if (not ref $infile or UNIVERSAL::isa($infile,'GLOB')) {
                       $self->SetFileModifyDate($infile) > 0 and $rtnVal = 1 if $setModDate;
                       $self->SetFileModifyDate($infile, undef, 'FileCreateDate') > 0 and $rtnVal = 1 if $setCreateDate;
                       $self->SetSystemTags($infile) > 0 and $rtnVal = 1;
                   }
      -            if ((defined $newFileName or defined $newDir) and not ref $infile) {
      -                $self->SetFileName($infile) > 0 and $rtnVal = 1;
      -            }
                   if (defined $hardLink or defined $symLink or defined $testName) {
      -                my $src = $$self{NewName};
      -                $src = $infile unless defined $src;
      -                $hardLink and $self->SetFileName($src, $hardLink, 'HardLink') and $rtnVal = 1;
      -                $symLink and $self->SetFileName($src, $symLink, 'SymLink') and $rtnVal = 1;
      -                $testName and $self->SetFileName($src, $testName, 'Test') and $rtnVal = 1;
      +                $hardLink and $self->SetFileName($infile, $hardLink, 'HardLink') and $rtnVal = 1;
      +                $symLink and $self->SetFileName($infile, $symLink, 'SymLink') and $rtnVal = 1;
      +                $testName and $self->SetFileName($infile, $testName, 'Test') and $rtnVal = 1;
                   }
                   return $rtnVal;
               } elsif (defined $newFileName and length $newFileName) {
      @@ -2620,12 +2686,14 @@
       
       #------------------------------------------------------------------------------
       # Get list of all group names
      -# Inputs: 0) Group family number
      +# Inputs: 0) [optional] ExifTool ref, 1) Group family number
       # Returns: List of group names (sorted alphabetically)
      -sub GetAllGroups($)
      +sub GetAllGroups($;$)
       {
           local $_;
           my $family = shift || 0;
      +    my $self;
      +    ref $family and $self = $family, $family = shift || 0;
       
           $family == 3 and return('Doc#', 'Main');
           $family == 4 and return('Copy#');
      @@ -2644,9 +2712,23 @@
               $allGroups{$grp} = 1 if ($grps = $$table{GROUPS}) and ($grp = $$grps{$family});
               foreach $tag (TagTableKeys($table)) {
                   my @infoArray = GetTagInfoList($table, $tag);
      -            foreach $tagInfo (@infoArray) {
      -                next unless ($grps = $$tagInfo{Groups}) and ($grp = $$grps{$family});
      -                $allGroups{$grp} = 1;
      +            if ($family == 7) {
      +                foreach $tagInfo (@infoArray) {
      +                    my $id = $$tagInfo{TagID};
      +                    if (not defined $id) {
      +                        $id = '';   # (just to be safe)
      +                    } elsif ($id =~ /^\d+$/) {
      +                        $id = sprintf('0x%x', $id) if $self and $$self{OPTIONS}{HexTagIDs};
      +                    } else {
      +                        $id =~ s/([^-_A-Za-z0-9])/sprintf('%.2x',ord $1)/ge;
      +                    }
      +                    $allGroups{'ID-' . $id} = 1;
      +                }
      +            } else {
      +                foreach $tagInfo (@infoArray) {
      +                    next unless ($grps = $$tagInfo{Groups}) and ($grp = $$grps{$family});
      +                    $allGroups{$grp} = 1;
      +                }
                   }
               }
           }
      @@ -2747,6 +2829,8 @@
           my ($self, $val, $tagInfo, $tag, $wgrp1, $convType, $wantGroup) = @_;
           my ($err, $type);
       
      +    $convType or $convType = $$self{ConvType} || 'PrintConv';
      +
       Conv: for (;;) {
               if (not defined $type) {
                   # split value into list if necessary
      @@ -2760,7 +2844,7 @@
                           $val = @splitVal > 1 ? \@splitVal : @splitVal ? $splitVal[0] : '';
                       }
                   }
      -            $type = $convType || $$self{ConvType} || 'PrintConv';
      +            $type = $convType;
               } elsif ($type eq 'PrintConv') {
                   $type = 'ValueConv';
               } else {
      @@ -2783,11 +2867,11 @@
                           if (ref $val eq 'ARRAY') {
                               # loop through array values
                               foreach $v (@$val) {
      -                            $err2 = &$checkProc($self, $tagInfo, \$v);
      +                            $err2 = &$checkProc($self, $tagInfo, \$v, $convType);
                                   last if $err2;
                               }
                           } else {
      -                        $err2 = &$checkProc($self, $tagInfo, \$val);
      +                        $err2 = &$checkProc($self, $tagInfo, \$val, $convType);
                           }
                       }
                   }
      @@ -2967,9 +3051,13 @@
               my (@tags, $val, $tg, @val, $type, $expr, $didExpr, $level, $asList);
               # "$$" represents a "$" symbol, and "$/" is a newline
               if ($var eq '$' or $var eq '/') {
      -            $var = "\n" if $var eq '/';
      -            $rtnStr .= "$pre$var";
                   $line =~ s/^\s*\}// if $bra;
      +            if ($var eq '/') {
      +                $var = "\n";
      +            } elsif ($line =~ /^self\b/ and not $rtnStr =~ /\$$/) {
      +                $var = '$$';    # ("$$self{var}" in string)
      +            }
      +            $rtnStr .= "$pre$var";
                   next;
               }
               # allow multiple group names
      @@ -3074,6 +3162,8 @@
                                   last unless $tag =~ / /;    # all done if we got our best match
                               }
                           }
      +                } elsif ($tag eq 'self') {
      +                    $val = $self; # ("$self{var}" or "$self->{var}" in string)
                       } else {
                           # get the tag value
                           $val = $self->GetValue($tag, $type);
      @@ -3263,7 +3353,7 @@
       
       #------------------------------------------------------------------------------
       # Is this a raw file type?
      -# Inputs: 0) Exiftool ref
      +# Inputs: 0) ExifTool ref
       # Returns: true if FileType is a type of RAW image
       sub IsRawType($)
       {
      @@ -3442,7 +3532,8 @@
       #         2) optional tag value (before RawConv) if deleting specific values
       # Returns: >0 - tag should be overwritten
       #          =0 - the tag should be preserved
      -#          <0 - not sure, we need the value to know
      +#          <0 - not sure, we need the old value to tell (if there is no old value
      +#               then the tag should be written if $$nvHash{IsCreating} is true)
       # Notes: $$nvHash{Value} is updated with the new value when shifting a value
       sub IsOverwriting($$;$)
       {
      @@ -4014,6 +4105,7 @@
                       if ($dataPt or $$dirInfo{RAF}) {
                           ++$$self{CHANGED};
                           $out and print $out "  Deleting $grp1\n";
      +                    $self->Warn('ICC_Profile deleted. Image colors may be affected') if $grp1 eq 'ICC_Profile';
                           # can no longer validate TIFF_END if deleting an entire IFD
                           delete $$self{TIFF_END} if $dirName =~ /IFD/;
                       }
      @@ -4074,7 +4166,7 @@
                       $self->Warn("Can't write EXIF as a block to $$self{FILE_TYPE} file");
                       last;
                   }
      -            # this can happen if we call WriteDirectory for an EXIF directory without  going
      +            # this can happen if we call WriteDirectory for an EXIF directory without going
                   # through WriteTIFF as the WriteProc (which happens if conditionally replacing
                   # the EXIF block and the condition fails), but we never want to do a block write
                   # in this case because the EXIF block would end up with two TIFF headers
      @@ -4685,17 +4777,17 @@
       {
           my ($self, $val, $tzFlag, $dateOnly) = @_;
           my ($rtnVal, $tz);
      +    my $fmt = $$self{OPTIONS}{DateFormat};
           # strip off timezone first if it exists
      -    if ($val =~ s/([+-])(\d{1,2}):?(\d{2})\s*(DST)?$//i) {
      +    if (not $fmt and $val =~ s/([-+])(\d{1,2}):?(\d{2})\s*(DST)?$//i) {
               $tz = sprintf("$1%.2d:$3", $2);
      -    } elsif ($val =~ s/Z$//i) {
      +    } elsif (not $fmt and $val =~ s/Z$//i) {
               $tz = 'Z';
           } else {
               $tz = '';
               # allow special value of 'now'
               return $self->TimeNow($tzFlag) if lc($val) eq 'now';
           }
      -    my $fmt = $$self{OPTIONS}{DateFormat};
           # only convert date if a format was specified and the date is recognizable
           if ($fmt) {
               unless (defined $strptimeLib) {
      @@ -4710,6 +4802,8 @@
                       $strptimeLib = '';
                   }
               }
      +        # handle factional seconds (%f), but only at the end of the string
      +        my $fs = ($fmt =~ s/%f$// and $val =~ s/(\.\d+)\s*$//) ? $1 : '';
               my ($lib, $wrn, @a);
       TryLib: for ($lib=$strptimeLib; ; $lib='') {
                   if (not $lib) {
      @@ -4746,10 +4840,10 @@
                               next TryLib;
                           }
                       } elsif (length($a[$i]) < 2) {
      -                    $$a[$i] = "0$a[$i]";# pad to 2 digits if necessary
      +                    $a[$i] = "0$a[$i]"; # pad to 2 digits if necessary
                       }
                   }
      -            $val = join(':', @a[5,4,3]) . ' ' . join(':', @a[2,1,0]);
      +            $val = join(':', @a[5,4,3]) . ' ' . join(':', @a[2,1,0]) . $fs;
                   last;
               }
           }
      @@ -4785,9 +4879,17 @@
                       $ss = ':00';
                   }
                   # construct properly formatted date/time string
      -            if ($a[0]<=12 and $a[1]<=31 and $a[2]<=24 and $a[3]<=59) {
      -                $rtnVal = "$yr:$a[0]:$a[1] $a[2]:$a[3]$ss$fs$tz";
      +            if ($a[0] < 1 or $a[0] > 12) {
      +                warn "Month '$a[0]' out of range 1..12\n";
      +                return undef;
                   }
      +            if ($a[1] < 1 or $a[1] > 31) {
      +                warn "Day '$a[1]' out of range 1..31\n";
      +                return undef;
      +            }
      +            $a[2] > 24 and warn("Hour '$a[2]' out of range 0..24\n"), return undef;
      +            $a[3] > 59 and warn("Minutes '$a[3]' out of range 0..59\n"), return undef;
      +            $rtnVal = "$yr:$a[0]:$a[1] $a[2]:$a[3]$ss$fs$tz";
               } elsif ($dateOnly) {
                   $rtnVal = join ':', $yr, @a;
               }
      @@ -4798,19 +4900,20 @@
       
       #------------------------------------------------------------------------------
       # Set byte order according to our current preferences
      -# Inputs: 0) ExifTool object ref
      +# Inputs: 0) ExifTool object ref, 1) default byte order
       # Returns: new byte order ('II' or 'MM') and sets current byte order
       # Notes: takes the first of the following that is valid:
       #  1) ByteOrder option
       #  2) new value for ExifByteOrder
      -#  3) makenote byte order from last file read
      -#  4) big endian
      -sub SetPreferredByteOrder($)
      +#  3) default byte order passed to this routine
      +#  4) makenote byte order from last file read
      +#  5) big endian
      +sub SetPreferredByteOrder($;$)
       {
      -    my $self = shift;
      +    my ($self, $default) = @_;
           my $byteOrder = $self->Options('ByteOrder') ||
                           $self->GetNewValue('ExifByteOrder') ||
      -                    $$self{MAKER_NOTE_BYTE_ORDER} || 'MM';
      +                    $default || $$self{MAKER_NOTE_BYTE_ORDER} || 'MM';
           unless (SetByteOrder($byteOrder)) {
               warn "Invalid byte order '${byteOrder}'\n" if $self->Options('Verbose');
               $byteOrder = $$self{MAKER_NOTE_BYTE_ORDER} || 'MM';
      @@ -4898,6 +5001,12 @@
           $_[1] and substr(${$_[1]}, $_[2], length($val)) = $val;
           return $val;
       }
      +sub Set64s(@)
      +{
      +    my $val = shift;
      +    $val < 0 and $val += 4294967296 * 4294967296; # (temporary hack won't really work due to round-off errors)
      +    return Set64u($val, @_);
      +}
       sub SetRational64u(@) {
           my ($numer,$denom) = Rationalize($_[0],0xffffffff);
           my $val = Set32u($numer) . Set32u($denom);
      @@ -4959,6 +5068,7 @@
           int16uRev => \&Set16uRev,
           int32s => \&Set32s,
           int32u => \&Set32u,
      +    int64s => \&Set64s,
           int64u => \&Set64u,
           rational32s => \&SetRational32s,
           rational32u => \&SetRational32u,
      @@ -5518,7 +5628,11 @@
                       my $buff = $self->WriteDirectory(\%dirInfo, $tagTablePtr, \&WriteTIFF);
                       if (defined $buff and length $buff) {
                           if (length($buff) + length($exifAPP1hdr) > $maxSegmentLen) {
      -                        $self->Warn('Creating multi-segment EXIF',1);
      +                        if ($self->Options('NoMultiExif')) {
      +                            $self->Error('EXIF is too large for JPEG segment');
      +                        } else {
      +                            $self->Warn('Creating multi-segment EXIF',1);
      +                        }
                           }
                           # switch to buffered output if required
                           if (($$self{PREVIEW_INFO} or $$self{LeicaTrailer}) and not $oldOutfile) {
      @@ -5884,6 +5998,7 @@
               # group delete of APP segments
               if ($$delGroup{$dirName}) {
                   $verbose and print $out "  Deleting $dirName segment\n";
      +            $self->Warn('ICC_Profile deleted. Image colors may be affected') if $dirName eq 'ICC_Profile';
                   ++$$self{CHANGED};
                   next Marker;
               }
      @@ -5990,7 +6105,11 @@
                           # delete segment if IFD contains no entries
                           length $$segDataPt or $del = 1, last;
                           if (length($$segDataPt) + length($exifAPP1hdr) > $maxSegmentLen) {
      -                        $self->Warn('Writing multi-segment EXIF',1);
      +                        if ($self->Options('NoMultiExif')) {
      +                            $self->Error('EXIF is too large for JPEG segment');
      +                        } else {
      +                            $self->Warn('Writing multi-segment EXIF',1);
      +                        }
                           }
                           # switch to buffered output if required
                           if (($$self{PREVIEW_INFO} or $$self{LeicaTrailer}) and not $oldOutfile) {
      @@ -6586,7 +6705,17 @@
           # open file by name if necessary
           unless (ref $file) {
               # (file will be automatically closed when *FH goes out of scope)
      -        $self->Open(\*FH, $file, '+<') or $self->Warn('Error opening file for update'), return 0;
      +        unless ($self->Open(\*FH, $file, '+<')) {
      +            my $success;
      +            if (defined $atime or defined $mtime) {
      +                my ($a, $m, $c) = $self->GetFileTime($file);
      +                $atime = $a unless defined $atime;
      +                $mtime = $m unless defined $mtime;
      +                $success = eval { utime($atime, $mtime, $file) } if defined $atime and defined $mtime;
      +            }
      +            $self->Warn('Error opening file for update') unless $success;
      +            return $success;
      +        }
               $saveFile = $file;
               $file = \*FH;
           }
      @@ -6772,7 +6901,7 @@
               my $val = ReadValue($dataPt, $entry, $format, $count, $dirLen-$entry);
               next unless defined $val;
               my $nvHash = $self->GetNewValueHash($tagInfo, $$self{CUR_WRITE_GROUP});
      -        next unless $self->IsOverwriting($nvHash, $val);
      +        next unless $self->IsOverwriting($nvHash, $val) > 0;
               my $newVal = $self->GetNewValue($nvHash);
               next unless defined $newVal;    # can't delete from a binary table
               # update DataMember with new value if necessary
      @@ -6908,7 +7037,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/WriteXMP.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WriteXMP.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/WriteXMP.pl	2020-02-14 12:17:23.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WriteXMP.pl	2022-02-09 12:08:08.000000000 +0000
      @@ -12,7 +12,7 @@
       
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -sub CheckXMP($$$);
      +sub CheckXMP($$$;$);
       sub CaptureXMP($$$;$);
       sub SetPropertyPath($$;$$$$);
       
      @@ -165,12 +165,12 @@
       
       #------------------------------------------------------------------------------
       # Check XMP values for validity and format accordingly
      -# Inputs: 0) ExifTool object ref, 1) tagInfo hash ref, 2) raw value ref
      +# Inputs: 0) ExifTool object ref, 1) tagInfo hash ref, 2) raw value ref, 3) conversion type
       # Returns: error string or undef (and may change value) on success
       # Note: copies structured information to avoid conflicts with calling code
      -sub CheckXMP($$$)
      +sub CheckXMP($$$;$)
       {
      -    my ($et, $tagInfo, $valPtr) = @_;
      +    my ($et, $tagInfo, $valPtr, $convType) = @_;
       
           if ($$tagInfo{Struct}) {
               require 'Image/ExifTool/XMPStruct.pl';
      @@ -250,9 +250,12 @@
               return "Invalid date/time (use YYYY:mm:dd HH:MM:SS[.ss][+/-HH:MM|Z])" unless $newDate;
               $$valPtr = $newDate;
           } elsif ($format eq 'boolean') {
      +        # (allow lower-case 'true' and 'false' if not setting PrintConv value)
               if (not $$valPtr or $$valPtr =~ /false/i or $$valPtr =~ /^no$/i) {
      -            $$valPtr = 'False';
      -        } else {
      +            if (not $$valPtr or $$valPtr ne 'false' or not $convType or $convType eq 'PrintConv') {
      +                $$valPtr = 'False';
      +            }
      +        } elsif ($$valPtr ne 'true' or not $convType or $convType eq 'PrintConv') {
                   $$valPtr = 'True';
               }
           } elsif ($format eq '1') {
      @@ -295,6 +298,8 @@
               $flatInfo = $$tagTablePtr{$flatID};
               if ($flatInfo) {
                   return if $$flatInfo{PropertyPath};
      +        } elsif (@$propList > 50) {
      +            return; # avoid deep recursion
               } else {
                   # flattened tag doesn't exist, so create it now
                   # (could happen if we were just writing a structure)
      @@ -503,7 +508,7 @@
           my $prop;
           foreach $prop (@propList) {
               my ($ns, $tag) = $prop =~ /(.+?):(.*)/;
      -        next if $$nsUsed{$ns};
      +        next if not defined $ns or $$nsUsed{$ns};
               my $uri = $nsURI{$ns};
               unless ($uri) {
                   warn "No URI for namespace prefix $ns!\n";
      @@ -699,7 +704,7 @@
               if (length $$short[-1]) {
                   if (length $$long[-1]) {
                       # require a new Description if both longhand and shorthand properties
      -                $$long[-2] .= ">$pad<$rdfDesc";
      +                $$long[-2] .= ">$nl$pad<$rdfDesc";
                       $$short[-1] .= ">$nl";
                       $$long[-1] .= "$pad$nl";
                   } else {
      @@ -1414,7 +1419,17 @@
                   my $uri = $nsUsed{$1};
                   unless ($uri) {
                       $uri = $nsURI{$1};      # we must have added a namespace
      -                $uri or $xmpErr = "Undefined XMP namespace: $1", next;
      +                unless ($uri) {
      +                    # (namespace prefix may be empty if trying to write empty XMP structure, forum12384)
      +                     if (length $1) {
      +                        my $err = "Undefined XMP namespace: $1";
      +                        if (not $xmpErr or $err ne $xmpErr) {
      +                            $xmpFile ? $et->Error($err) : $et->Warn($err);
      +                            $xmpErr = $err;
      +                        }
      +                     }
      +                     next;
      +                }
                   }
                   $nsNew{$1} = $uri;
                   # need a new description if any new namespaces
      @@ -1462,7 +1477,7 @@
                   $long[-2] .= "$nl$sp<$prop rdf:about='${about}'";
                   # generate et:toolkit attribute if this is an exiftool RDF/XML output file
                   if (@ns and $nsCur{$ns[0]} =~ m{^http://ns.exiftool.(?:ca|org)/}) {
      -                $long[-2] .= "\n$sp${sp}xmlns:et='http://ns.exiftool.ca/1.0/'" .
      +                $long[-2] .= "\n$sp${sp}xmlns:et='http://ns.exiftool.org/1.0/'" .
                                   " et:toolkit='Image::ExifTool $Image::ExifTool::VERSION'";
                   }
                   $long[-2] .= "\n$sp${sp}xmlns:$_='$nsCur{$_}'" foreach @ns;
      @@ -1579,14 +1594,7 @@
           unless (%capture or $xmpFile or $$dirInfo{InPlace} or $$dirInfo{NoDelete}) {
               $long[-2] = '';
           }
      -    if ($xmpErr) {
      -        if ($xmpFile) {
      -            $et->Error($xmpErr);
      -            return -1;
      -        }
      -        $et->Warn($xmpErr);
      -        return undef;
      -    }
      +    return($xmpFile ? -1 : undef) if $xmpErr;
           $$et{CHANGED} += $changed;
           $debug > 1 and $long[-2] and print $long[-2],"\n";
           return $long[-2] unless $xmpFile;
      @@ -1613,7 +1621,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/WTV.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WTV.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/WTV.pm	2020-01-02 12:08:55.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/WTV.pm	2022-01-12 22:51:57.000000000 +0000
      @@ -297,7 +297,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/XMP2.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/XMP2.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/XMP2.pl	2020-02-20 14:23:12.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/XMP2.pl	2022-01-12 22:51:58.000000000 +0000
      @@ -16,6 +16,7 @@
       #               11) http://www.extensis.com/en/support/kb_article.jsp?articleNumber=6102211
       #               12) XMPSpecificationPart3_May2013, page 58
       #               13) https://developer.android.com/training/camera2/Dynamic-depth-v1.0.pdf
      +#               14) http://www.iptc.org/standards/photo-metadata/iptc-standard/
       #------------------------------------------------------------------------------
       
       package Image::ExifTool::XMP;
      @@ -530,16 +531,17 @@
           rRole  => { Namespace => 'Iptc4xmpExt', FlatName => 'Role',  List => 'Bag', Struct => \%sEntity },
       );
       
      -# IPTC Extension namespace properties (Iptc4xmpExt) (ref 4)
      +# IPTC Extension namespace properties (Iptc4xmpExt) (ref 4, 14)
       %Image::ExifTool::XMP::iptcExt = (
           %xmpTableDefaults,
           GROUPS => { 1 => 'XMP-iptcExt', 2 => 'Author' },
           NAMESPACE   => 'Iptc4xmpExt',
           TABLE_DESC => 'XMP IPTC Extension',
           NOTES => q{
      -        This table contains tags defined by the IPTC Extension schema version 1.5. 
      +        This table contains tags defined by the IPTC Extension schema version 1.6. 
               The actual namespace prefix is "Iptc4xmpExt", but ExifTool shortens this for
      -        the family 1 group name. (see L)
      +        the family 1 group name. (see
      +        L)
           },
           AboutCvTerm => {
               Struct => \%sCVTermDetails,
      @@ -796,6 +798,8 @@
           audioBitsPerSample  => { Groups => { 2 => 'Audio' }, Writable => 'integer' },
           # new IPTC Extension schema 1.5 property
           ImageRegion => { Groups => { 2 => 'Image' }, List => 'Bag', Struct => \%sImageRegion },
      +    # new Extension 1.6 property
      +    EventId     => { Name => 'EventID', List => 'Bag' },
       );
       
       #------------------------------------------------------------------------------
      @@ -1697,6 +1701,7 @@
           InitialViewPitchDegrees         => { Writable => 'real' },
           InitialViewRollDegrees          => { Writable => 'real' },
           InitialHorizontalFOVDegrees     => { Writable => 'real' },
      +    InitialVerticalFOVDegrees       => { Writable => 'real' },
           FirstPhotoDate                  => { %dateTimeInfo, Groups => { 2 => 'Time' } },
           LastPhotoDate                   => { %dateTimeInfo, Groups => { 2 => 'Time' } },
           SourcePhotosCount               => { Writable => 'integer' },
      @@ -1838,6 +1843,10 @@
               ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)',
               ValueConvInv => 'Image::ExifTool::XMP::EncodeBase64($val)',
           },
      +    MicroVideo          => { Writable => 'integer' },
      +    MicroVideoVersion   => { Writable => 'integer' },
      +    MicroVideoOffset    => { Writable => 'integer' },
      +    MicroVideoPresentationTimestampUs => { Writable => 'integer' },
       );
       
       # Google creations namespace (ref PH)
      @@ -2117,7 +2126,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/XMP.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/XMP.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/XMP.pm	2020-02-20 12:38:23.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/XMP.pm	2022-02-09 12:08:08.000000000 +0000
      @@ -25,7 +25,8 @@
       #               10) http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart2.pdf (Oct 2008)
       #               11) http://www.extensis.com/en/support/kb_article.jsp?articleNumber=6102211
       #               12) http://www.cipa.jp/std/documents/e/DC-010-2012_E.pdf
      -#               13) http://www.cipa.jp/std/documents/e/DC-010-2017_E.pdf
      +#               13) http://www.cipa.jp/std/documents/e/DC-010-2017_E.pdf (changed to
      +#                   http://www.cipa.jp/std/documents/e/DC-X010-2017.pdf)
       #
       # Notes:      - Property qualifiers are handled as if they were separate
       #               properties (with no associated namespace).
      @@ -49,13 +50,13 @@
       use Image::ExifTool::GPS;
       require Exporter;
       
      -$VERSION = '3.30';
      +$VERSION = '3.51';
       @ISA = qw(Exporter);
       @EXPORT_OK = qw(EscapeXML UnescapeXML);
       
       sub ProcessXMP($$;$);
       sub WriteXMP($$;$);
      -sub CheckXMP($$$);
      +sub CheckXMP($$$;$);
       sub ParseXMPElement($$$;$$$$);
       sub DecodeBase64($);
       sub EncodeBase64($;$);
      @@ -70,6 +71,13 @@
       sub ConvertRationalList($);
       sub WriteGSpherical($$$);
       
      +# standard path locations for XMP in major file types
      +my %stdPath = (
      +    JPEG => 'JPEG-APP1-XMP',
      +    TIFF => 'TIFF-IFD0-XMP',
      +    PSD => 'PSD-XMP',
      +);
      +
       # lookup for translating to ExifTool namespaces (and family 1 group names)
       %stdXlatNS = (
           # shorten ugly namespace prefixes
      @@ -147,7 +155,7 @@
           DICOM     => 'http://ns.adobe.com/DICOM/',
          'drone-dji'=> 'http://www.dji.com/drone-dji/1.0/',
           svg       => 'http://www.w3.org/2000/svg',
      -    et        => 'http://ns.exiftool.ca/1.0/',
      +    et        => 'http://ns.exiftool.org/1.0/',
       #
       # namespaces defined in XMP2.pl:
       #
      @@ -184,10 +192,13 @@
           GettyImagesGIFT => 'http://xmp.gettyimages.com/gift/1.0/',
           LImage    => 'http://ns.leiainc.com/photos/1.0/image/',
           Profile   => 'http://ns.google.com/photos/dd/1.0/profile/',
      +    sdc       => 'http://ns.nikon.com/sdc/1.0/',
      +    ast       => 'http://ns.nikon.com/asteroid/1.0/',
      +    nine      => 'http://ns.nikon.com/nine/1.0/',
       );
       
       # build reverse namespace lookup
      -my %uri2ns = ( 'http://ns.exiftool.org/1.0/' => 'et' ); # (allow exiftool.org as well as exiftool.ca)
      +my %uri2ns = ( 'http://ns.exiftool.ca/1.0/' => 'et' ); # (allow exiftool.ca as well as exiftool.org)
       {
           my $ns;
           foreach $ns (keys %nsURI) {
      @@ -200,13 +211,13 @@
           ValueConv    => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
           ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 2, "N")',
           PrintConv    => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
      -    PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
      +    PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lat")',
       );
       %longConv = (
           ValueConv    => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
           ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 2, "E")',
           PrintConv    => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
      -    PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
      +    PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lon")',
       );
       %dateTimeInfo = (
           # NOTE: Do NOT put "Groups" here because Groups hash must not be common!
      @@ -428,9 +439,38 @@
           Names       => { List => 'Seq' },
           Values      => { List => 'Seq', Writable => 'rational' },
       );
      -
      +my %sAreaModels = (
      +    STRUCT_NAME => 'AreaModels',
      +    NAMESPACE   => 'crs',
      +    ColorRangeMaskAreaSampleInfo => { FlatName => 'ColorSampleInfo' },
      +    AreaComponents => { FlatName => 'Components', List => 'Seq' },
      +);
      +my %sCorrRangeMask = (
      +    STRUCT_NAME => 'CorrRangeMask',
      +    NAMESPACE   => 'crs',
      +    NOTES => 'Called CorrectionRangeMask by the spec.',
      +    Version     => { },
      +    Type        => { },
      +    ColorAmount => { Writable => 'real' },
      +    LumMin      => { Writable => 'real' },
      +    LumMax      => { Writable => 'real' },
      +    LumFeather  => { Writable => 'real' },
      +    DepthMin    => { Writable => 'real' },
      +    DepthMax    => { Writable => 'real' },
      +    DepthFeather=> { Writable => 'real' },
      +    # new in LR 11.0
      +    Invert      => { Writable => 'boolean' },
      +    SampleType  => { Writable => 'integer' },
      +    AreaModels  => {
      +        List => 'Seq',
      +        Struct => \%sAreaModels,
      +    },
      +    LumRange    => { },
      +    LuminanceDepthSampleInfo => { },
      +);
       # new LR2 crs structures (PH)
      -my %sCorrectionMask = (
      +my %sCorrectionMask;
      +%sCorrectionMask = (
           STRUCT_NAME => 'CorrectionMask',
           NAMESPACE   => 'crs',
           # disable List behaviour of flattened Gradient/PaintBasedCorrections
      @@ -465,6 +505,26 @@
           Alpha        => { Writable => 'real', List => 0 },
           CenterValue  => { Writable => 'real', List => 0 },
           PerimeterValue=>{ Writable => 'real', List => 0 },
      +    # new in LR 11.0 MaskGroupBasedCorrections
      +    MaskActive   => { Writable => 'boolean', List => 0 },
      +    MaskName     => { List => 0 },
      +    MaskBlendMode=> { Writable => 'integer', List => 0 },
      +    MaskInverted => { Writable => 'boolean', List => 0 },
      +    MaskSyncID   => { List => 0 },
      +    MaskVersion  => { List => 0 },
      +    MaskSubType  => { List => 0 },
      +    ReferencePoint => { List => 0  },
      +    InputDigest  => { List => 0 },
      +    MaskDigest   => { List => 0 },
      +    WholeImageArea => { List => 0 },
      +    Origin       => { List => 0 },
      +    Masks        => { Struct => \%sCorrectionMask, NoSubStruct => 1 },
      +    CorrectionRangeMask => {
      +        Name => 'CorrRangeMask',
      +        Notes => 'called CorrectionRangeMask by the spec',
      +        FlatName => 'Range',
      +        Struct => \%sCorrRangeMask,
      +    },
       );
       my %sCorrection = (
           STRUCT_NAME => 'Correction',
      @@ -478,8 +538,8 @@
           LocalClarity     => { FlatName => 'Clarity',    Writable => 'real', List => 0 },
           LocalSharpness   => { FlatName => 'Sharpness',  Writable => 'real', List => 0 },
           LocalBrightness  => { FlatName => 'Brightness', Writable => 'real', List => 0 },
      -    LocalToningHue   => { FlatName => 'Hue',        Writable => 'real', List => 0 },
      -    LocalToningSaturation => { FlatName => 'Saturation',        Writable => 'real', List => 0 },
      +    LocalToningHue   => { FlatName => 'ToningHue',  Writable => 'real', List => 0 },
      +    LocalToningSaturation => { FlatName => 'ToningSaturation',  Writable => 'real', List => 0 },
           LocalExposure2012     => { FlatName => 'Exposure2012',      Writable => 'real', List => 0 },
           LocalContrast2012     => { FlatName => 'Contrast2012',      Writable => 'real', List => 0 },
           LocalHighlights2012   => { FlatName => 'Highlights2012',    Writable => 'real', List => 0 },
      @@ -490,11 +550,25 @@
           LocalDefringe    => { FlatName => 'Defringe',   Writable => 'real', List => 0 },
           LocalTemperature => { FlatName => 'Temperature',Writable => 'real', List => 0 },
           LocalTint        => { FlatName => 'Tint',       Writable => 'real', List => 0 },
      +    LocalHue         => { FlatName => 'Hue',        Writable => 'real', List => 0 },
      +    LocalWhites2012  => { FlatName => 'Whites2012', Writable => 'real', List => 0 },
      +    LocalBlacks2012  => { FlatName => 'Blacks2012', Writable => 'real', List => 0 },
      +    LocalDehaze      => { FlatName => 'Dehaze', Writable => 'real', List => 0 },
      +    LocalTexture     => { FlatName => 'Texture', Writable => 'real', List => 0 },
      +    # new in LR 11.0
      +    CorrectionRangeMask => {
      +        Name => 'CorrRangeMask',
      +        Notes => 'called CorrectionRangeMask by the spec',
      +        FlatName => 'RangeMask',
      +        Struct => \%sCorrRangeMask,
      +    },
           CorrectionMasks  => {
               FlatName => 'Mask',
               Struct => \%sCorrectionMask,
               List => 'Seq',
           },
      +    CorrectionName => { },
      +    CorrectionSyncID => { },
       );
       my %sRetouchArea = (
           STRUCT_NAME => 'RetouchArea',
      @@ -513,6 +587,30 @@
               List => 'Seq',
           },
       );
      +my %sMapInfo = (
      +    STRUCT_NAME => 'MapInfo',
      +    NAMESPACE   => 'crs',
      +    NOTES => q{
      +        Called RangeMaskMapInfo by the specification, the same as the containing
      +        structure.
      +    },
      +    RGBMin => { },
      +    RGBMax => { },
      +    LabMin => { },
      +    LabMax => { },
      +    LumEq  => { List => 'Seq' },
      +);
      +my %sRangeMask = (
      +    STRUCT_NAME => 'RangeMask',
      +    NAMESPACE   => 'crs',
      +    NOTES => q{
      +        This structure is actually called RangeMaskMapInfo, but it only contains one
      +        element which is a RangeMaskMapInfo structure (Yes, really!).  So these are
      +        renamed to RangeMask and MapInfo respectively to avoid confusion and
      +        redundancy in the tag names.
      +    },
      +    RangeMaskMapInfo => { FlatName => 'MapInfo', Struct => \%sMapInfo },
      +);
       
       # main XMP tag table (tag ID's are used for the family 1 group names)
       %Image::ExifTool::XMP::Main = (
      @@ -783,6 +881,18 @@
               Name => 'Device',
               SubDirectory => { TagTable => 'Image::ExifTool::XMP::Device' },
           },
      +    sdc => {
      +        Name => 'sdc',
      +        SubDirectory => { TagTable => 'Image::ExifTool::Nikon::sdc' },
      +    },
      +    ast => {
      +        Name => 'ast',
      +        SubDirectory => { TagTable => 'Image::ExifTool::Nikon::ast' },
      +    },
      +    nine => {
      +        Name => 'nine',
      +        SubDirectory => { TagTable => 'Image::ExifTool::Nikon::nine' },
      +    },
       );
       
       # hack to allow XML containing Dublin Core metadata to be handled like XMP (eg. EPUB - see ZIP.pm)
      @@ -889,6 +999,7 @@
           ModifyDate  => { Groups => { 2 => 'Time' }, %dateTimeInfo, Priority => 0 },
           Nickname    => { },
           Rating      => { Writable => 'real', Notes => 'a value from 0 to 5, or -1 for "rejected"' },
      +    RatingPercent=>{ Writable => 'real', Avoid => 1, Notes => 'non-standard' },
           Thumbnails  => {
               FlatName => 'Thumbnail',
               Struct => \%sThumbnail,
      @@ -1144,7 +1255,7 @@
                   LayerText => { },
               },
           },
      -    TransmissionReference   => { },
      +    TransmissionReference => { Notes => 'Now used as a job identifier' },
           Urgency         => {
               Writable => 'integer',
               Notes => 'should be in the range 1-8 to conform with the XMP spec',
      @@ -1289,11 +1400,11 @@
           SharpenDetail               => { Writable => 'integer' },
           SharpenEdgeMasking          => { Writable => 'integer' },
           SharpenRadius               => { Writable => 'real' },
      -    SplitToningBalance          => { Writable => 'integer' },
      -    SplitToningHighlightHue     => { Writable => 'integer' },
      -    SplitToningHighlightSaturation => { Writable => 'integer' },
      -    SplitToningShadowHue        => { Writable => 'integer' },
      -    SplitToningShadowSaturation => { Writable => 'integer' },
      +    SplitToningBalance          => { Writable => 'integer', Notes => 'also used for newer ColorGrade settings' },
      +    SplitToningHighlightHue     => { Writable => 'integer', Notes => 'also used for newer ColorGrade settings' },
      +    SplitToningHighlightSaturation => { Writable => 'integer', Notes => 'also used for newer ColorGrade settings' },
      +    SplitToningShadowHue        => { Writable => 'integer', Notes => 'also used for newer ColorGrade settings' },
      +    SplitToningShadowSaturation => { Writable => 'integer', Notes => 'also used for newer ColorGrade settings' },
           Vibrance                    => { Writable => 'integer' },
           # new tags written by LR 1.4 (not sure in what version they first appeared)
           GrayMixerRed                => { Writable => 'integer' },
      @@ -1482,9 +1593,82 @@
               Struct => {
                   STRUCT_NAME => 'Look',
                   NAMESPACE   => 'crs',
      -            Name   => { },
      +            Name        => { },
      +            Amount      => { },
      +            Cluster     => { },
      +            UUID        => { },
      +            SupportsMonochrome => { },
      +            SupportsAmount     => { },
      +            SupportsOutputReferred => { },
      +            Copyright   => { },
      +            Group       => { Writable => 'lang-alt' },
      +            Parameters => {
      +                Struct => {
      +                    STRUCT_NAME => 'LookParms',
      +                    NAMESPACE   => 'crs',
      +                    Version         => { },
      +                    ProcessVersion  => { },
      +                    Clarity2012     => { },
      +                    ConvertToGrayscale => { },
      +                    CameraProfile   => { },
      +                    LookTable       => { },
      +                    ToneCurvePV2012 => { List => 'Seq' },
      +                    ToneCurvePV2012Red   => { List => 'Seq' },
      +                    ToneCurvePV2012Green => { List => 'Seq' },
      +                    ToneCurvePV2012Blue  => { List => 'Seq' },
      +                },
      +            },
               }
           },
      +    # more again (ref forum11258)
      +    GrainSeed => { },
      +    ClipboardOrientation => { Writable => 'integer' },
      +    ClipboardAspectRatio => { Writable => 'integer' },
      +    PresetType  => { },
      +    Cluster     => { },
      +    UUID        => { Avoid => 1 },
      +    SupportsAmount          => { Writable => 'boolean' },
      +    SupportsColor           => { Writable => 'boolean' },
      +    SupportsMonochrome      => { Writable => 'boolean' },
      +    SupportsHighDynamicRange=> { Writable => 'boolean' },
      +    SupportsNormalDynamicRange=> { Writable => 'boolean' },
      +    SupportsSceneReferred   => { Writable => 'boolean' },
      +    SupportsOutputReferred  => { Writable => 'boolean' },
      +    CameraModelRestriction  => { },
      +    Copyright   => { Avoid => 1 },
      +    ContactInfo => { },
      +    GrainSeed   => { Writable => 'integer' },
      +    Name        => { Writable => 'lang-alt', Avoid => 1 },
      +    ShortName   => { Writable => 'lang-alt' },
      +    SortName    => { Writable => 'lang-alt' },
      +    Group       => { Writable => 'lang-alt', Avoid => 1 },
      +    Description => { Writable => 'lang-alt', Avoid => 1 },
      +    # new for DNG converter 13.0
      +    LookName => { NotFlat => 1 }, # (grr... conflicts with "Name" element of "Look" struct!)
      +    # new for Lightroom CC 2021 (ref forum11745)
      +    ColorGradeMidtoneHue    => { Writable => 'integer' },
      +    ColorGradeMidtoneSat    => { Writable => 'integer' },
      +    ColorGradeShadowLum     => { Writable => 'integer' },
      +    ColorGradeMidtoneLum    => { Writable => 'integer' },
      +    ColorGradeHighlightLum  => { Writable => 'integer' },
      +    ColorGradeBlending      => { Writable => 'integer' },
      +    ColorGradeGlobalHue     => { Writable => 'integer' },
      +    ColorGradeGlobalSat     => { Writable => 'integer' },
      +    ColorGradeGlobalLum     => { Writable => 'integer' },
      +    # new for Adobe Camera Raw 13 (ref forum11745)
      +    LensProfileIsEmbedded   => { Writable => 'boolean'},
      +    AutoToneDigest          => { },
      +    AutoToneDigestNoSat     => { },
      +    ToggleStyleDigest       => { },
      +    ToggleStyleAmount       => { Writable => 'integer' },
      +    # new for LightRoom 11.0
      +    CompatibleVersion       => { },
      +    MaskGroupBasedCorrections => {
      +        FlatName => 'MaskGroupBasedCorr',
      +        Struct => \%sCorrection,
      +        List => 'Seq',
      +    },
      +    RangeMaskMapInfo => { Name => 'RangeMask', Struct => \%sRangeMask, FlatName => 'RangeMask' },
       );
       
       # Tiff namespace properties (tiff)
      @@ -1576,7 +1760,7 @@
           Software  => { },
           Artist    => { Groups => { 2 => 'Author' } },
           Copyright => { Groups => { 2 => 'Author' }, Writable => 'lang-alt' },
      -    NativeDigest => { }, #PH
      +    NativeDigest => { Avoid => 1 }, #PH
       );
       
       # Exif namespace properties (exif)
      @@ -1924,6 +2108,11 @@
               Groups => { 2 => 'Location' },
               Writable => 'integer',
               PrintConv => {
      +            OTHER => sub {
      +                my ($val, $inv) = @_;
      +                return undef unless $inv and $val =~ /^([-+0-9])/;
      +                return($1 eq '-' ? 1 : 0);
      +            },
                   0 => 'Above Sea Level',
                   1 => 'Below Sea Level',
               },
      @@ -1960,8 +2149,8 @@
               Groups => { 2 => 'Location' },
               Writable => 'integer',
               PrintConv => {
      -            2 => '2-Dimensional',
      -            3 => '3-Dimensional',
      +            2 => '2-Dimensional Measurement',
      +            3 => '3-Dimensional Measurement',
               },
           },
           GPSDOP => { Groups => { 2 => 'Location' }, Writable => 'rational' },
      @@ -2041,8 +2230,8 @@
           NAMESPACE   => 'exifEX',
           PRIORITY => 0, # not as reliable as actual EXIF tags
           NOTES => q{
      -        EXIF tags added by the EXIF 2.31 for XMP specification (see
      -        L).
      +        EXIF tags added by the EXIF 2.32 for XMP specification (see
      +        L).
           },
           Gamma                       => { Writable => 'rational' },
           PhotographicSensitivity     => { Writable => 'integer' },
      @@ -2118,6 +2307,35 @@
           WaterDepth          => { Writable => 'rational' },
           Acceleration        => { Writable => 'rational' },
           CameraElevationAngle=> { Writable => 'rational' },
      +    # new in Exif 2.32 (according to the spec, these should use a different namespace
      +    # URI, but the same namespace prefix... Exactly how is that supposed to work?!!
      +    # -- I'll just stick with the same URI)
      +    CompositeImage => { Writable => 'integer',
      +        PrintConv => {
      +            0 => 'Unknown',
      +            1 => 'Not a Composite Image',
      +            2 => 'General Composite Image',
      +            3 => 'Composite Image Captured While Shooting',
      +        },
      +    },
      +    CompositeImageCount => { List => 'Seq', Writable => 'integer' },
      +    CompositeImageExposureTimes => {
      +        FlatName => 'CompImage',
      +        Struct => {
      +            STRUCT_NAME => 'CompImageExp',
      +            NAMESPACE => 'exifEX',
      +            TotalExposurePeriod     => { Writable => 'rational' },
      +            SumOfExposureTimesOfAll => { Writable => 'rational', FlatName => 'SumExposureAll' },
      +            SumOfExposureTimesOfUsed=> { Writable => 'rational', FlatName => 'SumExposureUsed' },
      +            MaxExposureTimesOfAll   => { Writable => 'rational', FlatName => 'MaxExposureAll' },
      +            MaxExposureTimesOfUsed  => { Writable => 'rational', FlatName => 'MaxExposureUsed' },
      +            MinExposureTimesOfAll   => { Writable => 'rational', FlatName => 'MinExposureAll'  },
      +            MinExposureTimesOfUsed  => { Writable => 'rational', FlatName => 'MinExposureUsed' },
      +            NumberOfSequences       => { Writable => 'integer',  FlatName => 'NumSequences' },
      +            NumberOfImagesInSequences=>{ Writable => 'integer',  FlatName => 'ImagesPerSequence' },
      +            Values =>   { List => 'Seq', Writable => 'rational' },
      +        },
      +    },
       );
       
       # Auxiliary namespace properties (aux) - not fully documented (ref PH)
      @@ -2165,7 +2383,7 @@
               Priority => 0,
               # prevent this from getting set from a LensID that has been converted
               ValueConvInv => q{
      -            warn "Expected one or more integer values" if $val =~ /[^\d ]/;
      +            warn "Expected one or more integer values" if $val =~ /[^-\d ]/;
                   return $val;
               },
           },
      @@ -2177,6 +2395,7 @@
           VignetteCorrectionAlreadyApplied    => { Writable => 'boolean' },
           LateralChromaticAberrationCorrectionAlreadyApplied => { Writable => 'boolean' },
           LensDistortInfo => { }, # (LR 7.5.1, 4 signed rational values)
      +    NeutralDensityFactor => { }, # (LR 11.0 - rational value, but denominator seems significant)
       );
       
       # IPTC Core namespace properties (Iptc4xmpCore) (ref 4)
      @@ -2218,6 +2437,10 @@
           Location            => { Groups => { 2 => 'Location' } },
           Scene               => { Groups => { 2 => 'Other' }, List => 'Bag' },
           SubjectCode         => { Groups => { 2 => 'Other' }, List => 'Bag' },
      +    # Copyright - have seen this in a sample (Jan 2021), but I think it is non-standard
      +    # new IPTC Core 1.3 properties
      +    AltTextAccessibility  => { Groups => { 2 => 'Other' }, Writable => 'lang-alt' },
      +    ExtDescrAccessibility => { Groups => { 2 => 'Other' }, Writable => 'lang-alt' },
       );
       
       # Adobe Lightroom namespace properties (lr) (ref PH)
      @@ -2229,6 +2452,7 @@
           NOTES => 'Adobe Lightroom "lr" namespace tags.',
           privateRTKInfo => { },
           hierarchicalSubject => { List => 'Bag' },
      +    weightedFlatSubject => { List => 'Bag' },
       );
       
       # Adobe Album namespace properties (album) (ref PH)
      @@ -2718,8 +2942,9 @@
                   if ($flatInfo) {
                       ref $flatInfo eq 'HASH' or warn("$flatInfo is not a HASH!\n"), next; # (to be safe)
                       # pre-defined flattened tags should have Flat flag set
      -                if (not defined $$flatInfo{Flat} and $Image::ExifTool::debug) {
      -                    warn "Missing Flat flag for $$flatInfo{Name}\n";
      +                if (not defined $$flatInfo{Flat}) {
      +                    next if $$flatInfo{NotFlat};
      +                    warn "Missing Flat flag for $$flatInfo{Name}\n" if $Image::ExifTool::debug;
                       }
                       $$flatInfo{Flat} = 0;
                       # copy all missing entries from field information
      @@ -2906,13 +3131,15 @@
                   # for Pentax, CS4 stores an int16u, but we use 2 x int8u
                   $id = join(' ', unpack('C*', pack('n', $id)));
               }
      -        my $str = $$printConv{$id} || "Unknown ($id)";
               # Nikon is a special case because Adobe doesn't store the full LensID
      +        # (Apple Photos does, but we have to convert back to hex)
               if ($mk eq 'Nikon') {
      -            my $hex = sprintf("%.2X", $id);
      +            $id = sprintf('%X', $id);
      +            $id = "0$id" if length($id) & 0x01;     # pad with leading 0 if necessary
      +            $id =~ s/(..)/$1 /g and $id =~ s/ $//;  # put spaces between bytes
                   my (%newConv, %used);
                   my $i = 0;
      -            foreach (grep /^$hex /, keys %$printConv) {
      +            foreach (grep /^$id/, keys %$printConv) {
                       my $lens = $$printConv{$_};
                       next if $used{$lens}; # avoid duplicates
                       $used{$lens} = 1;
      @@ -2921,6 +3148,7 @@
                   }
                   $printConv = \%newConv;
               }
      +        my $str = $$printConv{$id} || "Unknown ($id)";
               return Image::ExifTool::Exif::PrintLensID($et, $str, $printConv,
                           undef, $id, $focalLength, $sa, $maxAv, $sf, $lf, $lensModel);
           }
      @@ -3008,18 +3236,35 @@
               }
           }
       
      -    if (not $ns and $$tagTablePtr{GROUPS}{0} ne 'XMP') {
      -        # this is a simple XML table (no namespaces)
      +    my $xmlGroups;
      +    my $grp0 = $$tagTablePtr{GROUPS}{0};
      +    if (not $ns and $grp0 ne 'XMP') {
               $tagID = $tag;
      +    } elsif ($grp0 eq 'XML' and not $table) {
      +        # this is an XML table (no namespace lookup)
      +        $tagID = "$ns:$tag";
           } else {
      +        $xmlGroups = 1 if $grp0 eq 'XML';
               # look up this tag in the appropriate table
               $table or $table = 'Image::ExifTool::XMP::other';
               $tagTablePtr = GetTagTable($table);
               if ($$tagTablePtr{NAMESPACE}) {
                   $tagID = $tag;
               } else {
      +            $xns = $xmpNS{$ns};
      +            unless (defined $xns) {
      +                $xns = $ns;
      +                # validate namespace prefix
      +                unless ($ns =~ /^[A-Z_a-z\x80-\xff][-.0-9A-Z_a-z\x80-\xff]*$/ or $ns eq '') {
      +                    $et->Warn("Invalid XMP namespace prefix '${ns}'");
      +                    # clean up prefix for use as an ExifTool group name
      +                    $ns =~ tr/-.0-9A-Z_a-z\x80-\xff//dc;
      +                    $ns =~ /^[A-Z_a-z\x80-\xff]/ or $ns = "ns_$ns";
      +                    $stdXlatNS{$xns} = $ns;
      +                    $xmpNS{$ns} = $xns;
      +                }
      +            }
                   # add XMP namespace prefix to avoid collisions in variable-namespace tables
      -            $xns = $xmpNS{$ns} || $ns;
                   $tagID = "$xns:$tag";
                   # add namespace to top-level structure property
                   $structProps[0][0] = "$xns:" . $structProps[0][0] if @structProps;
      @@ -3114,8 +3359,14 @@
                   }
               }
               # generate a default tagInfo hash if necessary
      -        $tagInfo or $tagInfo = { Name => $name, IsDefault => 1, Priority => 0 };
      -
      +        unless ($tagInfo) {
      +            # shorten tag name if necessary
      +            if ($$et{ShortenXmpTags}) {
      +                my $shorten = $$et{ShortenXmpTags};
      +                $name = &$shorten($name);
      +            }
      +            $tagInfo = { Name => $name, IsDefault => 1, Priority => 0 };
      +        }
               # add tag Namespace entry for tags in variable-namespace tables
               $$tagInfo{Namespace} = $xns if $xns;
               if ($$et{curURI}{$ns} and $$et{curURI}{$ns} =~ m{^http://ns.exiftool.(?:ca|org)/(.*?)/(.*?)/}) {
      @@ -3146,8 +3397,13 @@
               #} elsif (grep / /, @$props) {
               #    $$tagInfo{List} = 1;
               }
      +        # save property list for verbose "adding" message unless this tag already exists
      +        $added = \@tagList unless $$tagTablePtr{$tagID};
      +        # if this is an empty structure, we must add a Struct field
      +        if (not length $val and $$attrs{'rdf:parseType'} and $$attrs{'rdf:parseType'} eq 'Resource') {
      +            $$tagInfo{Struct} = { STRUCT_NAME => 'XMP Unknown' };
      +        }
               AddTagToTable($tagTablePtr, $tagID, $tagInfo);
      -        $added = 1;
               last;
           }
           # decode value if necessary (et:encoding was used before exiftool 7.71)
      @@ -3191,6 +3447,9 @@
               } else {
                   $val = ConvertXMPDate($val, $new) if $new or $fmt eq 'date';
               }
      +        if ($$et{XmpValidate} and $fmt and $fmt eq 'boolean') {
      +            $et->WarnOnce("Boolean value for XMP-$ns:$$tagInfo{Name} should be capitalized",1);
      +        }
               # protect against large binary data in unknown tags
               $$tagInfo{Binary} = 1 if $new and length($val) > 65536;
           }
      @@ -3198,15 +3457,48 @@
           my $key = $et->FoundTag($tagInfo, $val) or return 0;
           # save original components of rational numbers (used when copying)
           $$et{RATIONAL}{$key} = $rational if defined $rational;
      +    # save structure/list information if necessary
      +    if (@structProps and (@structProps > 1 or defined $structProps[0][1]) and
      +        not $$et{NO_STRUCT})
      +    {
      +        $$et{TAG_EXTRA}{$key}{Struct} = \@structProps;
      +        $$et{IsStruct} = 1;
      +    }
      +    if ($xmlGroups) {
      +        $et->SetGroup($key, 'XML', 0);
      +        $et->SetGroup($key, "XML-$ns", 1);
      +    } elsif ($ns and not $$tagInfo{StaticGroup1}) {
      +        # set group1 dynamically according to the namespace
      +        $et->SetGroup($key, "$$tagTablePtr{GROUPS}{0}-$ns");
      +    }
      +    if ($$et{OPTIONS}{Verbose}) {
      +        if ($added) {
      +            my $props;
      +            if (@$added > 1) {
      +                $$tagInfo{Flat} = 0;    # this is a flattened tag
      +                my @props = map { $$_[0] } @$added;
      +                $props = ' (' . join('/',@props) . ')';
      +            } else {
      +                $props = '';
      +            }
      +            my $g1 = $et->GetGroup($key, 1);
      +            $et->VPrint(0, $$et{INDENT}, "[adding $g1:$tag]$props\n");
      +        }
      +        my $tagID = join('/',@$props);
      +        $et->VerboseInfo($tagID, $tagInfo, Value => $rawVal || $val);
      +    }
           # allow read-only subdirectories (eg. embedded base64 XMP/IPTC in NKSC files)
           if ($$tagInfo{SubDirectory} and not $$et{IsWriting}) {
               my $subdir = $$tagInfo{SubDirectory};
               my $dataPt = ref $$et{VALUE}{$key} ? $$et{VALUE}{$key} : \$$et{VALUE}{$key};
      +        # decode if necessary (eg. Nikon XMP-ast:XMLPackets)
      +        $dataPt = DecodeBase64($$dataPt) if $$tagInfo{Encoding} and $$tagInfo{Encoding} eq 'Base64';
               # process subdirectory information
               my %dirInfo = (
                   DirName  => $$subdir{DirName} || $$tagInfo{Name},
                   DataPt   => $dataPt,
                   DirLen   => length $$dataPt,
      +            IgnoreProp => $$subdir{IgnoreProp}, # (allow XML to ignore specified properties)
                   IsExtended => 1, # (hack to avoid Duplicate warning for embedded XMP)
               );
               my $oldOrder = GetByteOrder();
      @@ -3218,25 +3510,6 @@
               SetByteOrder($oldOrder);
               $$et{definedNS} = $oldNS;
           }
      -    # save structure/list information if necessary
      -    if (@structProps and (@structProps > 1 or defined $structProps[0][1]) and
      -        not $$et{NO_STRUCT})
      -    {
      -        $$et{TAG_EXTRA}{$key}{Struct} = \@structProps;
      -        $$et{IsStruct} = 1;
      -    }
      -    if ($ns and not $$tagInfo{StaticGroup1}) {
      -        # set group1 dynamically according to the namespace
      -        $et->SetGroup($key, "$$tagTablePtr{GROUPS}{0}-$ns");
      -    }
      -    if ($$et{OPTIONS}{Verbose}) {
      -        if ($added) {
      -            my $g1 = $et->GetGroup($key, 1);
      -            $et->VPrint(0, $$et{INDENT}, "[adding $g1:$tag]\n");
      -        }
      -        my $tagID = join('/',@$props);
      -        $et->VerboseInfo($tagID, $tagInfo, Value => $rawVal || $val);
      -    }
           return 1;
       }
       
      @@ -3329,6 +3602,17 @@
               }
               $start = pos($$dataPt);         # start from here the next time around
       
      +        # ignore specified XMP namespaces/properties
      +        if ($$et{EXCL_XMP_LOOKUP} and not $isWriting and $prop =~ /^(.+):(.*)/) {
      +            my ($ns, $nm) = (lc($stdXlatNS{$1} || $1), lc($2));
      +            if ($$et{EXCL_XMP_LOOKUP}{"xmp-$ns:all"} or $$et{EXCL_XMP_LOOKUP}{"xmp-$ns:$nm"} or
      +                $$et{EXCL_XMP_LOOKUP}{"xmp-all:$nm"})
      +            {
      +                ++$count;   # (pretend we found something so we don't store as a tag value)
      +                next;
      +            }
      +        }
      +
               # extract property attributes
               my ($parseResource, %attrs, @attrs);
               while ($attrs =~ m/(\S+?)\s*=\s*(['"])(.*?)\2/sg) {
      @@ -3426,9 +3710,9 @@
                   if ($nItems == 1000) {
                       my ($tg,$ns) = GetXMPTagID($propList);
                       if ($isWriting) {
      -                    $et->Warn("Excessive number of items for $ns:$tg. Processing may be slow", 1);
      +                    $et->WarnOnce("Excessive number of items for $ns:$tg. Processing may be slow", 1);
                       } elsif (not $$et{OPTIONS}{IgnoreMinorErrors}) {
      -                    $et->Warn("Extracted only 1000 $ns:$tg items. Ignore minor errors to extract all", 2);
      +                    $et->WarnOnce("Extracted only 1000 $ns:$tg items. Ignore minor errors to extract all", 2);
                           last;
                       }
                   }
      @@ -3450,7 +3734,11 @@
               } elsif ($prop eq 'rdf:Description') {
                   # remove unnecessary rdf:Description elements since parseType='Resource'
                   # is more efficient (also necessary to make property path consistent)
      -            $parseResource = 1 if grep /^rdf:Description$/, @$propList;
      +            if (grep /^rdf:Description$/, @$propList) {
      +                $parseResource = 1;
      +                # set parseType so we know this is a structure
      +                $attrs{'rdf:parseType'} = 'Resource';
      +            }
               } elsif ($prop eq 'xmp:xmpmeta') {
                   # patch MicrosoftPhoto unconformity
                   $prop = 'x:xmpmeta';
      @@ -3490,6 +3778,11 @@
                       # add svg namespace prefix if missing to ignore these entries in the tag name
                       $$propList[-1] = "svg:$prop";
                   }
      +        } elsif ($$et{XmpIgnoreProps}) { # ignore specified properties for tag name
      +            foreach (@{$$et{XmpIgnoreProps}}) {
      +                last unless @$propList;
      +                pop @$propList if $_ eq $$propList[0];
      +            }
               }
       
               # handle properties inside element attributes (RDF shorthand format):
      @@ -3614,6 +3907,7 @@
                       # (unless we already extracted shorthand values from this element)
                       if (length $val or not $shorthand) {
                           my $lastProp = $$propList[-1];
      +                    $lastProp = '' unless defined $lastProp;
                           if (defined $nodeID) {
                               SaveBlankInfo($blankInfo, $propList, $val);
                           } elsif ($lastProp eq 'rdf:type' and $wasEmpty) {
      @@ -3687,6 +3981,7 @@
           my ($buff, $fmt, $hasXMP, $isXML, $isRDF, $isSVG);
           my $rtnVal = 0;
           my $bom = 0;
      +    my $path = $et->MetadataPath();
       
           # namespaces and prefixes currently in effect while parsing the file,
           # and lookup to translate brain-dead-Microsoft-Photo-software prefixes
      @@ -3704,11 +3999,7 @@
               (($$dirInfo{DirName} || '') eq 'XMP' or $$et{FILE_TYPE} eq 'XMP'))
           {
               $$et{XmpValidate} = { } if $$et{OPTIONS}{Validate};
      -        my $path = $et->MetadataPath();
      -        my $nonStd;
      -        if ($$et{FILE_TYPE} =~ /^(JPEG|TIFF|PSD)$/ and $path !~ /^(JPEG-APP1-XMP|TIFF-IFD0-XMP|PSD-XMP)$/) {
      -            $nonStd = 1;
      -        }
      +        my $nonStd = ($stdPath{$$et{FILE_TYPE}} and $path ne $stdPath{$$et{FILE_TYPE}});
               if ($nonStd and $Image::ExifTool::MWG::strict) {
                   $et->Warn("Ignored non-standard XMP at $path");
                   return 1;
      @@ -3787,7 +4078,7 @@
                               } elsif ($1 eq 'REDXIF') {
                                   $type = 'RMD';
                                   $mime = 'application/xml';
      -                        } else {
      +                        } elsif ($1 ne 'fcpxml') { # Final Cut Pro XML
                                   return 0;
                               }
                           } elsif ($buf2 =~ /]/) {
      @@ -3797,14 +4088,16 @@
                           } elsif ($buf2 =~ /]/) {
                               $type = 'PLIST';
                           }
      -                    if ($isSVG and $$et{XMP_CAPTURE}) {
      -                        $et->Error("ExifTool does not yet support writing of SVG images");
      -                        return 0;
      -                    }
                       }
                       $isXML = 1;
                   } elsif ($2 eq 'Error("ExifTool does not yet support writing of SVG images");
      +                return 0;
                   }
                   if ($buff =~ /^\0\0/) {
                       $fmt = 'N';     # UTF-32 MM with or without BOM
      @@ -3904,13 +4197,16 @@
               $dirLen = $dataLen = length $$dataPt;
           }
       
      -    # extract XMP as a block if specified
      +    # extract XMP/XML as a block if specified
           my $blockName = $$dirInfo{BlockInfo} ? $$dirInfo{BlockInfo}{Name} : 'XMP';
      +    my $blockExtract = $et->Options('BlockExtract');
           if (($$et{REQ_TAG_LOOKUP}{lc $blockName} or ($$et{TAGS_FROM_FILE} and
      -        not $$et{EXCL_TAG_LOOKUP}{lc $blockName})) and ($$et{FileType} eq 'XMP' or
      -        ($$dirInfo{DirName} and $$dirInfo{DirName} eq 'XMP')))
      +        not $$et{EXCL_TAG_LOOKUP}{lc $blockName}) or $blockExtract) and
      +        (($$et{FileType} eq 'XMP' and $blockName eq 'XMP') or
      +        ($$dirInfo{DirName} and $$dirInfo{DirName} eq $blockName)))
           {
               $et->FoundTag($$dirInfo{BlockInfo} || 'XMP', substr($$dataPt, $dirStart, $dirLen));
      +        return 1 if $blockExtract and $blockExtract > 1;
           }
       
           $tagTablePtr or $tagTablePtr = GetTagTable('Image::ExifTool::XMP::Main');
      @@ -3965,6 +4261,13 @@
               }
               defined $fmt or $et->Warn('XMP character encoding error');
           }
      +    # warn if standard XMP is missing xpacket wrapper
      +    if ($$et{XMP_NO_XPACKET} and $$et{OPTIONS}{Validate} and
      +        $stdPath{$$et{FILE_TYPE}} and $path eq $stdPath{$$et{FILE_TYPE}} and
      +        not $$dirInfo{IsExtended} and not $$et{DOC_NUM})
      +    {
      +        $et->Warn('XMP is missing xpacket wrapper', 1);
      +    }
           if ($fmt) {
               # trim if necessary to avoid converting non-UTF data
               if ($dirStart or $dirEnd != length($$dataPt)) {
      @@ -4070,7 +4373,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/XMPStruct.pl libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/XMPStruct.pl
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/XMPStruct.pl	2020-02-19 17:43:10.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/XMPStruct.pl	2022-02-09 12:08:08.000000000 +0000
      @@ -32,7 +32,9 @@
           my ($key, $val, @vals, $rtnVal);
       
           if (ref $obj eq 'HASH') {
      -        foreach $key (sort keys %$obj) {
      +        # support hashes with ordered keys
      +        my @keys = $$obj{_ordered_keys_} ? @{$$obj{_ordered_keys_}} : sort keys %$obj;
      +        foreach $key (@keys) {
                   push @vals, $key . '=' . SerializeStruct($$obj{$key}, '}');
               }
               $rtnVal = '{' . join(',', @vals) . '}';
      @@ -519,6 +521,7 @@
                   next unless $$fieldInfo{List};
                   my $i = 0;
                   my ($item, $p);
      +            my $level = scalar(() = ($propPath =~ / \d+/g));
                   # loop through all list items (note: can't yet write multi-dimensional lists)
                   foreach $item (@{$val}) {
                       if ($i) {
      @@ -533,7 +536,8 @@
                       if (ref $item eq 'HASH') {
                           my $subStruct = $$fieldInfo{Struct} or next;
                           AddNewStruct($et, $tagInfo, $capture, $p, $item, $subStruct) or next;
      -                } elsif (length $item) { # don't write empty items in list
      +                # don't write empty items in upper-level list
      +                } elsif (length $item or (defined $item and $level == 1)) {
                           AddNewTag($et, $fieldInfo, $capture, $p, \$item, \%langIdx);
                           $addedTag = 1;
                       }
      @@ -630,15 +634,14 @@
           local $_;
           my ($et, $keepFlat) = @_;
           my ($key, %structs, %var, %lists, $si, %listKeys, @siList);
      -    my $ex = $$et{TAG_EXTRA};
           my $valueHash = $$et{VALUE};
           my $fileOrder = $$et{FILE_ORDER};
           my $tagExtra = $$et{TAG_EXTRA};
           foreach $key (keys %{$$et{TAG_INFO}}) {
      -        $$ex{$key} or next;
      -        my $structProps = $$ex{$key}{Struct} or next;
      -        delete $$ex{$key}{Struct}; # (don't re-use)
      -        my $tagInfo = $$et{TAG_INFO}{$key};   # tagInfo for flattened tag
      +        $$tagExtra{$key} or next;
      +        my $structProps = $$tagExtra{$key}{Struct} or next;
      +        delete $$tagExtra{$key}{Struct};    # (don't re-use)
      +        my $tagInfo = $$et{TAG_INFO}{$key}; # tagInfo for flattened tag
               my $table = $$tagInfo{Table};
               my $prop = shift @$structProps;
               my $tag = $$prop[0];
      @@ -825,8 +828,23 @@
           $var{$_} and push @siList, $_ foreach keys %structs;
           # save new structures in the same order they were read from file
           foreach $si (sort { $var{$a}[1] <=> $var{$b}[1] } @siList) {
      -        $key = $et->FoundTag($var{$si}[0], '');
      -        $$valueHash{$key} = $structs{$si};
      +        # test to see if a tag for this structure has already been generated
      +        # (this could happen only if one of the structures in a list was empty)
      +        $key = $var{$si}[0]{Name};
      +        my $found;
      +        if ($$valueHash{$key}) {
      +            my @keys = grep /^$key( \(\d+\))?$/, keys %$valueHash;
      +            foreach $key (@keys) {
      +                next unless $$valueHash{$key} eq $structs{$si};
      +                $found = 1;
      +                last;
      +            }
      +        }
      +        unless ($found) {
      +            # otherwise, generate a new tag for this structure
      +            $key = $et->FoundTag($var{$si}[0], '');
      +            $$valueHash{$key} = $structs{$si};
      +        }
               $$fileOrder{$key} = $var{$si}[1];
           }
       }
      @@ -851,7 +869,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/ZIP.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ZIP.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/ZIP.pm	2020-02-14 12:16:22.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ZIP.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -19,7 +19,7 @@
       use vars qw($VERSION $warnString);
       use Image::ExifTool qw(:DataAccess :Utils);
       
      -$VERSION = '1.26';
      +$VERSION = '1.27';
       
       sub WarnProc($) { $warnString = $_[0]; }
       
      @@ -125,6 +125,7 @@
               Name => 'ZipFileName',
               Format => 'string[$$self{ZipFileNameLength}]',
           },
      +    _com => 'ZipFileComment',
       );
       
       # GNU ZIP tags (ref 3)
      @@ -380,6 +381,8 @@
           $et->HandleTag($tagTablePtr, 9, $member->compressedSize());
           $et->HandleTag($tagTablePtr, 11, $member->uncompressedSize());
           $et->HandleTag($tagTablePtr, 15, $member->fileName());
      +    my $com = $member->fileComment();
      +    $et->HandleTag($tagTablePtr, '_com', $com) if defined $com and length $com;
       }
       
       #------------------------------------------------------------------------------
      @@ -448,6 +451,10 @@
                   $et->Warn("$err reading ZIP file");
                   last;
               }
      +        # extract zip file comment
      +        my $comment = $zip->zipfileComment();
      +        $et->FoundTag(Comment => $comment) if defined $comment and length $comment;
      +
               $$dirInfo{ZIP} = $zip;
       
               # check for an Office Open file (DOCX, etc)
      @@ -655,6 +662,7 @@
                   DataLen => 30 + $len,
                   DirStart => 0,
                   DirLen => 30 + $len,
      +            MixedTags => 1, # (to ignore FileComment tag)
               );
               $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
               my $flags = Get16u(\$buff, 6);
      @@ -700,7 +708,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool/ZISRAW.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ZISRAW.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool/ZISRAW.pm	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool/ZISRAW.pm	2022-01-12 22:51:58.000000000 +0000
      @@ -0,0 +1,242 @@
      +#------------------------------------------------------------------------------
      +# File:         ZISRAW.pm
      +#
      +# Description:  Read ZISRAW (CZI) meta information
      +#
      +# Revisions:    2020-08-07 - P. Harvey Created
      +#
      +# References:   1) https://www.zeiss.com/microscopy/us/products/microscope-software/zen/czi.html
      +#------------------------------------------------------------------------------
      +
      +package Image::ExifTool::ZISRAW;
      +
      +use strict;
      +use vars qw($VERSION);
      +use Image::ExifTool qw(:DataAccess :Utils);
      +
      +$VERSION = '1.01';
      +
      +%Image::ExifTool::ZISRAW::Main = (
      +    PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
      +    GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Image' },
      +    NOTES => q{
      +        As well as the header information listed below, ExifTool also extracts the
      +        top-level XML-based metadata from Zeiss Integrated Software RAW (ZISRAW) CZI
      +        files.
      +    },
      +    0x20 => {
      +        Name => 'ZISRAWVersion',
      +        Format => 'int32u[2]',
      +        PrintConv => '$val =~ tr/ /./; $val',
      +    },
      +    0x30 => {
      +        Name => 'PrimaryFileGUID',
      +        Format => 'undef[16]',
      +        ValueConv => 'unpack("H*",$val)',
      +    },
      +    0x40 => {
      +        Name => 'FileGUID',
      +        Format => 'undef[16]',
      +        ValueConv => 'unpack("H*",$val)',
      +    },
      +);
      +
      +#------------------------------------------------------------------------------
      +# Shorten obscenely long CZI tag names
      +# Inputs: Tag name
      +# Returns: Shortened tag name
      +sub ShortenTagNames($)
      +{
      +    local $_;
      +    $_ = shift;
      +    s/^HardwareSetting//;
      +    s/^DevicesDevice/Device/;
      +    s/LightPathNode//g;
      +    s/Successors//g;
      +    s/ExperimentExperiment/Experiment/g;
      +    s/ObjectivesObjective/Objective/;
      +    s/ChannelsChannel/Channel/;
      +    s/TubeLensesTubeLens/TubeLens/;
      +    s/^ExperimentHardwareSettingsPoolHardwareSetting/HardwareSetting/;
      +    s/SharpnessMeasureSetSharpnessMeasure/Sharpness/;
      +    s/FocusSetupAutofocusSetup/Autofocus/;
      +    s/TracksTrack/Track/;
      +    s/ChannelRefsChannelRef/ChannelRef/;
      +    s/ChangerChanger/Changer/;
      +    s/ElementsChangerElement/Changer/;
      +    s/ChangerElements/Changer/;
      +    s/ContrastChangerContrast/Contrast/;
      +    s/KeyFunctionsKeyFunction/KeyFunction/;
      +    s/ManagerContrastManager(Contrast)?/ManagerContrast/;
      +    s/ObjectiveChangerObjective/ObjectiveChanger/;
      +    s/ManagerLightManager/ManagerLight/;
      +    s/WavelengthAreasWavelengthArea/WavelengthArea/;
      +    s/ReflectorChangerReflector/ReflectorChanger/;
      +    s/^StageStageAxesStageAxis/StageAxis/;
      +    s/ShutterChangerShutter/ShutterChanger/;
      +    s/OnOffChangerOnOff/OnOffChanger/;
      +    s/UnsharpMaskStateUnsharpMask/UnsharpMask/;
      +    s/Acquisition/Acq/;
      +    s/Continuous/Cont/;
      +    s/Resolution/Res/;
      +    s/Experiment/Expt/g;
      +    s/Threshold/Thresh/;
      +    s/Reference/Ref/;
      +    s/Magnification/Mag/;
      +    s/Original/Orig/;
      +    s/FocusSetupFocusStrategySetup/Focus/;
      +    s/ParametersParameter/Parameter/;
      +    s/IntervalInfo/Interval/;
      +    s/ExptBlocksAcqBlock/AcqBlock/;
      +    s/MicroscopesMicroscope/Microscope/;
      +    s/TimeSeriesInterval/TimeSeries/;
      +    s/Interval(.*Interval)/$1/;
      +    s/SingleTileRegionsSingleTileRegion/SingleTileRegion/;
      +    s/AcquisitionMode//;
      +    s/DetectorsDetector/Detector/;
      +    s/Setup//;
      +    s/Setting//;
      +    s/TrackTrack/Track/;
      +    s/AnalogOutMaximumsAnalogOutMaximum/AnalogOutMaximum/;
      +    s/AnalogOutMinimumsAnalogOutMinimum/AnalogOutMinimum/;
      +    s/DigitalOutLabelsDigitalOutLabelLabel/DigitalOutLabelLabel/;
      +    s/(VivaTomeOpticalSectionInformation)+VivaTomeOpticalSectionInformation/VivaTomeOpticalSectionInformation/;
      +    s/FocusDefiniteFocus/FocusDefinite/;
      +    s/ChangerChanger/Changer/;
      +    s/Calibration/Cal/;
      +    s/LightSwitchChangerRLTLSwitch/LightSwitchChangerRLTL/;
      +    s/Parameters//;
      +    s/Fluorescence/Fluor/;
      +    s/CameraGeometryCameraGeometry/CameraGeometry/;
      +    s/CameraCamera/Camera/;
      +    s/DetectorsCamera/Camera/;
      +    s/FilterChangerLeftChangerEmissionFilter/LeftChangerEmissionFilter/;
      +    s/SwitchingStatesSwitchingState/SwitchingState/;
      +    s/Information/Info/;
      +    s/SubDimensions?//g;
      +    s/Setups?//;
      +    s/Parameters?//;
      +    s/Calculate/Calc/;
      +    s/Visibility/Vis/;
      +    s/Orientation/Orient/;
      +    s/ListItems/Items/;
      +    s/Increment/Incr/;
      +    s/Parameter/Param/;
      +    s/(ParfocalParcentralValues)+ParfocalParcentralValue/Parcentral/;
      +    s/ParcentralParcentral/Parcentral/;
      +    s/CorrFocusCorrection/FocusCorr/;
      +    s/(ApoTomeDepthInfo)+Element/ApoTomeDepth/;
      +    s/(ApoTomeClickStopInfo)+Element/ApoTomeClickStop/;
      +    s/DepthDepth/Depth/;
      +    s/(Devices?)+Device/Device/;
      +    s/(BeamPathNode)+/BeamPathNode/;
      +    s/BeamPathsBeamPath/BeamPath/g;
      +    s/BeamPathBeamPath/BeamPath/g;
      +    s/Configuration/Config/;
      +    s/StageAxesStageAxis/StageAxis/;
      +    s/RangesRange/Range/;
      +    s/DataGridDatasGridData(Grid)?/DataGrid/;
      +    s/DataMicroscopeDatasMicroscopeData(Microscope)?/DataMicroscope/;
      +    s/DataWegaDatasWegaData/DataWega/;
      +    s/ClickStopPositionsClickStopPosition/ClickStopPosition/;
      +    s/LightSourcess?LightSource(Settings)?(LightSource)?/LightSource/;
      +    s/FilterSetsFilterSet/FilterSet/;
      +    s/EmissionFiltersEmissionFilter/EmissionFilter/;
      +    s/ExcitationFiltersExcitationFilter/ExcitationFilter/;
      +    s/FiltersFilter/Filter/;
      +    s/DichroicsDichroic/Dichronic/;
      +    s/WavelengthsWavelength/Wavelength/;
      +    s/MultiTrackSetup/MultiTrack/;
      +    s/TrackTrack/Track/;
      +    s/DataGrabberSetup/DataGrabber/;
      +    s/CameraFrameSetup/CameraFrame/;
      +    s/TimeSeries(TimeSeries|Setups)/TimeSeries/;
      +    s/FocusFocus/Focus/;
      +    s/FocusAutofocus/Autofocus/;
      +    s/Focus(Hardware|Software)(Autofocus)+/Autofocus$1/;
      +    s/AutofocusAutofocus/Autofocus/;
      +    return $_;
      +}
      +
      +#------------------------------------------------------------------------------
      +# Extract metadata from a ZISRAW (CZI) image
      +# Inputs: 0) ExifTool object reference, 1) dirInfo reference
      +# Returns: 1 on success, 0 if this wasn't a valid CZI file
      +sub ProcessCZI($$)
      +{
      +    my ($et, $dirInfo) = @_;
      +    my $raf = $$dirInfo{RAF};
      +    my ($buff, $tagTablePtr);
      +
      +    # verify this is a valid CZI file
      +    return 0 unless $raf->Read($buff, 100) == 100;
      +    return 0 unless $buff =~ /^ZISRAWFILE\0{6}/;
      +    $et->SetFileType();
      +    SetByteOrder('II');
      +    my %dirInfo = (
      +        DataPt => \$buff,
      +        DirStart => 0,
      +        DirLen => length($buff),
      +    );
      +    $tagTablePtr = GetTagTable('Image::ExifTool::ZISRAW::Main');
      +    $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
      +
      +    # read the metadata section
      +    my $pos = Get64u(\$buff, 92) or return 1;
      +    $raf->Seek($pos, 0) or $et->Warn('Error seeking to metadata'), return 0;
      +    $raf->Read($buff, 288) == 288 or $et->Warn('Error reading metadata header'), return 0;
      +    $buff =~ /^ZISRAWMETADATA\0\0/ or $et->Warn('Invalid metadata header'), return 0;
      +    my $len = Get32u(\$buff, 32);
      +    $len < 200000000 or $et->Warn('Metadata section too large. Ignoring'), return 0;
      +    $raf->Read($buff, $len) or $et->Warn('Error reading XML metadata'), return 0;
      +    $et->FoundTag('XML', $buff);    # extract as a block
      +    $tagTablePtr = GetTagTable('Image::ExifTool::XMP::XML');
      +    $dirInfo{DirLen} = length $buff;
      +    # shorten tag names somewhat by removing 'ImageDocumentMetadata' prefix from all
      +    $$et{XmpIgnoreProps} = [ 'ImageDocument', 'Metadata', 'Information' ];
      +    $$et{ShortenXmpTags} = \&ShortenTagNames;
      +
      +    $et->ProcessDirectory(\%dirInfo, $tagTablePtr);
      +
      +    return 1;
      +}
      +
      +1;  # end
      +
      +__END__
      +
      +=head1 NAME
      +
      +Image::ExifTool::ZISRAW - Read ZISRAW (CZI) meta information
      +
      +=head1 SYNOPSIS
      +
      +This module is used by Image::ExifTool
      +
      +=head1 DESCRIPTION
      +
      +This module contains definitions required by Image::ExifTool to read
      +metadata from Zeiss Integrated Software RAW (ZISRAW) CZI files.
      +
      +=head1 AUTHOR
      +
      +Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
      +
      +This library is free software; you can redistribute it and/or modify it
      +under the same terms as Perl itself.
      +
      +=head1 REFERENCES
      +
      +=over 4
      +
      +=item L
      +
      +=back
      +
      +=head1 SEE ALSO
      +
      +L,
      +L
      +
      +=cut
      +
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool.pm libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool.pm
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool.pm	2020-02-20 12:52:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool.pm	2022-02-09 12:08:06.000000000 +0000
      @@ -8,7 +8,7 @@
       # Revisions:    Nov. 12/2003 - P. Harvey Created
       #               (See html/history.html for revision history)
       #
      -# Legal:        Copyright (c) 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +# Legal:        Copyright (c) 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       #               This library is free software; you can redistribute it and/or
       #               modify it under the same terms as Perl itself.
       #------------------------------------------------------------------------------
      @@ -26,9 +26,10 @@
                   $psAPP13hdr $psAPP13old @loadAllTables %UserDefined $evalWarning
                   %noWriteFile %magicNumber @langs $defaultLang %langName %charsetName
                   %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
      -            %jpegMarker %specialTags %fileTypeLookup $testLen);
      +            %jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
      +            %static_vars);
       
      -$VERSION = '11.88';
      +$VERSION = '12.40';
       $RELEASE = '';
       @ISA = qw(Exporter);
       %EXPORT_TAGS = (
      @@ -42,7 +43,7 @@
           DataAccess => [qw(
               ReadValue GetByteOrder SetByteOrder ToggleByteOrder Get8u Get8s Get16u
               Get16s Get32u Get32s Get64u GetFloat GetDouble GetFixed32s Write
      -        WriteValue Tell Set8u Set8s Set16u Set32u Set64u
      +        WriteValue Tell Set8u Set8s Set16u Set32u Set64u Set64s
           )],
           Utils => [qw(GetTagTable TagTableKeys GetTagInfoList AddTagToTable HexDump)],
           Vars  => [qw(%allTables @tableOrder @fileTypes)],
      @@ -70,7 +71,7 @@
       sub SetSystemTags($$);
       sub GetAllTags(;$);
       sub GetWritableTags(;$);
      -sub GetAllGroups($);
      +sub GetAllGroups($;$);
       sub GetNewGroups($);
       sub GetDeleteGroups();
       sub AddUserDefinedTags($%);
      @@ -89,9 +90,10 @@
       sub GetFixed64s($$);
       sub GetExtended($$);
       sub Set64u(@);
      +sub Set64s(@);
       sub DecodeBits($$;$);
       sub EncodeBits($$;$$);
      -sub Filter($@);
      +sub Filter($$$);
       sub HexDump($;$%);
       sub DumpTrailer($$);
       sub DumpUnknownTrailer($$);
      @@ -110,7 +112,7 @@
       sub WriteTIFF($$$);
       sub PackUTF8(@);
       sub UnpackUTF8($);
      -sub SetPreferredByteOrder($);
      +sub SetPreferredByteOrder($;$);
       sub CopyBlock($$$);
       sub CopyFileAttrs($$$);
       sub TimeNow(;$$);
      @@ -118,6 +120,7 @@
       sub MakeTiffHeader($$$$;$$);
       
       # other subroutine definitions
      +sub SplitFileName($);
       sub EncodeFileName($$;$);
       sub Open($*$;$);
       sub Exists($$);
      @@ -136,17 +139,18 @@
       @loadAllTables = qw(
           PhotoMechanic Exif GeoTiff CanonRaw KyoceraRaw Lytro MinoltaRaw PanasonicRaw
           SigmaRaw JPEG GIMP Jpeg2000 GIF BMP BMP::OS2 BMP::Extra BPG BPG::Extensions
      -    PICT PNG MNG FLIF DjVu DPX OpenEXR MIFF PCX PGF PSP PhotoCD Radiance PDF
      -    PostScript Photoshop::Header Photoshop::Layers Photoshop::ImageData
      -    FujiFilm::RAF FujiFilm::IFD Samsung::Trailer Sony::SRF2 Sony::SR2SubIFD
      -    Sony::PMP ITC ID3 FLAC Ogg Vorbis APE APE::NewHeader APE::OldHeader Audible
      -    MPC MPEG::Audio MPEG::Video MPEG::Xing M2TS QuickTime QuickTime::ImageFile
      -    QuickTime::Stream Matroska MOI MXF DV Flash Flash::FLV Real::Media
      +    PICT PNG MNG FLIF DjVu DPX OpenEXR ZISRAW MRC LIF MRC::FEI12 MIFF PCX PGF
      +    PSP PhotoCD Radiance Other::PFM PDF PostScript Photoshop::Header
      +    Photoshop::Layers Photoshop::ImageData FujiFilm::RAF FujiFilm::IFD
      +    Samsung::Trailer Sony::SRF2 Sony::SR2SubIFD Sony::PMP ITC ID3 ID3::Lyrics3
      +    FLAC Ogg Vorbis APE APE::NewHeader APE::OldHeader Audible MPC MPEG::Audio
      +    MPEG::Video MPEG::Xing M2TS QuickTime QuickTime::ImageFile QuickTime::Stream
      +    QuickTime::Tags360Fly Matroska MOI MXF DV Flash Flash::FLV Real::Media
           Real::Audio Real::Metafile Red RIFF AIFF ASF WTV DICOM FITS MIE JSON HTML
           XMP::SVG Palm Palm::MOBI Palm::EXTH Torrent EXE EXE::PEVersion EXE::PEString
           EXE::MachO EXE::PEF EXE::ELF EXE::AR EXE::CHM LNK Font VCard Text
           VCard::VCalendar RSRC Rawzor ZIP ZIP::GZIP ZIP::RAR RTF OOXML iWork ISO
      -    FLIR::AFF FLIR::FPF MacOS::MDItem MacOS::XAttr FlashPix::DocTable
      +    FLIR::AFF FLIR::FPF MacOS MacOS::MDItem FlashPix::DocTable
       );
       
       # alphabetical list of current Lang modules
      @@ -185,13 +189,13 @@
                       PSD XMP BMP BPG PPM RIFF AIFF ASF MOV MPEG Real SWF PSP FLV OGG
                       FLAC APE MPC MKV MXF DV PMP IND PGF ICC ITC FLIR FLIF FPF LFP
                       HTML VRD RTF FITS XCF DSS QTIF FPX PICT ZIP GZIP PLIST RAR BZ2
      -                TAR  EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font RSRC M2TS PHP
      -                PCX DCX DWF DWG WTV Torrent VCard LRI R3D AA PDB MOI ISO ALIAS
      -                JSON MP3 DICOM PCD TXT);
      +                CZI TAR  EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font RSRC M2TS
      +                MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard LRI R3D AA PDB
      +                PFM2 MRC LIF JXL MOI ISO ALIAS JSON MP3 DICOM PCD TXT);
       
       # file types that we can write (edit)
       my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM EPS
      -                    X3F PS PDF ICC VRD DR4 JP2 EXIF AI AIT IND MOV EXV FLIF);
      +                    X3F PS PDF ICC VRD DR4 JP2 JXL EXIF AI AIT IND MOV EXV FLIF);
       my %writeTypes; # lookup for writable file types (hash filled if required)
       
       # file extensions that we can't write for various base types
      @@ -206,10 +210,11 @@
       # - must update CanCreate() documentation if this list is changed!
       my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
       
      -# file type lookup for all recognized file extensions
      +# file type lookup for all recognized file extensions (upper case)
       # (if extension may be more than one type, the type is a list where
       #  the writable type should come first if it exists)
       %fileTypeLookup = (
      +   '360' => ['MOV',  'GoPro 360 video'],
          '3FR' => ['TIFF', 'Hasselblad RAW format'],
          '3G2' => ['MOV',  '3rd Gen. Partnership Project 2 audio/video'],
          '3GP' => ['MOV',  '3rd Gen. Partnership Project audio/video'],
      @@ -252,6 +257,7 @@
           CRW  => ['CRW',  'Canon RAW format'],
           CS1  => ['PSD',  'Sinar CaptureShop 1-Shot RAW'],
           CSV  => ['TXT',  'Comma-Separated Values'],
      +    CZI  => ['CZI',  'Zeiss Integrated Software RAW'],
           DC3  =>  'DICM',
           DCM  =>  'DICM',
           DCP  => ['TIFF', 'DNG Camera Profile'],
      @@ -262,6 +268,7 @@
           DIB  => ['BMP',  'Device Independent Bitmap'],
           DIC  =>  'DICM',
           DICM => ['DICOM','Digital Imaging and Communications in Medicine'],
      +    DIR  => ['DIR',  'Directory'],
           DIVX => ['ASF',  'DivX media format'],
           DJV  =>  'DJVU',
           DJVU => ['AIFF', 'DjVu image'],
      @@ -286,6 +293,7 @@
           DWF  => ['DWF',  'Autodesk drawing (Design Web Format)'],
           DWG  => ['DWG',  'AutoCAD Drawing'],
           DYLIB=> ['EXE',  'Mach-O Dynamic Link Library'],
      +    DXF  => ['DXF',  'AutoCAD Drawing Exchange Format'],
           EIP  => ['ZIP',  'Capture One Enhanced Image Package'],
           EPS  => ['EPS',  'Encapsulated PostScript Format'],
           EPS2 =>  'EPS',
      @@ -312,13 +320,14 @@
           FPF  => ['FPF',  'FLIR Public image Format'],
           FPX  => ['FPX',  'FlashPix'],
           GIF  => ['GIF',  'Compuserve Graphics Interchange Format'],
      -    GPR  => ['TIFF', 'GoPro RAW'],
      +    GPR  => ['TIFF', 'General Purpose RAW'], # https://gopro.github.io/gpr/
           GZ   =>  'GZIP',
           GZIP => ['GZIP', 'GNU ZIP compressed archive'],
           HDP  => ['TIFF', 'Windows HD Photo'],
           HDR  => ['HDR',  'Radiance RGBE High Dynamic Range'],
           HEIC => ['MOV',  'High Efficiency Image Format still image'],
           HEIF => ['MOV',  'High Efficiency Image Format'],
      +    HIF  =>  'HEIF',
           HTM  =>  'HTML',
           HTML => ['HTML', 'HyperText Markup Language'],
           ICAL =>  'ICS',
      @@ -346,8 +355,10 @@
           JPF  =>  'JP2',
           JPG =>   'JPEG',
           JPM  => ['JP2',  'JPEG 2000 compound image'],
      +    JPS  => ['JPEG', 'JPEG Stereo image'],
           JPX  => ['JP2',  'JPEG 2000 with extensions'],
           JSON => ['JSON', 'JavaScript Object Notation'],
      +    JXL  => ['JXL',  'JPEG XL'],
           JXR  => ['TIFF', 'JPEG XR'],
           K25  => ['TIFF', 'Kodak DC25 RAW'],
           KDC  => ['TIFF', 'Kodak Digital Camera RAW'],
      @@ -356,6 +367,7 @@
           LA   => ['RIFF', 'Lossless Audio'],
           LFP  => ['LFP',  'Lytro Light Field Picture'],
           LFR  =>  'LFP', # (Light Field RAW)
      +    LIF  => ['LIF',  'Leica Image File'],
           LNK  => ['LNK',  'Windows shortcut'],
           LRI  => ['LRI',  'Light RAW'],
           LRV  => ['MOV',  'Low-Resolution Video'],
      @@ -387,12 +399,15 @@
           MPG  =>  'MPEG',
           MPO  => ['JPEG', 'Extended Multi-Picture format'],
           MQV  => ['MOV',  'Sony Mobile Quicktime Video'],
      +    MRC  => ['MRC',  'Medical Research Council image'],
           MRW  => ['MRW',  'Minolta RAW format'],
           MTS  =>  'M2TS',
           MXF  => ['MXF',  'Material Exchange Format'],
         # NDPI => ['TIFF', 'Hamamatsu NanoZoomer Digital Pathology Image'],
           NEF  => ['TIFF', 'Nikon (RAW) Electronic Format'],
           NEWER => 'COS',
      +    NKSC => ['XMP',  'Nikon Sidecar'],
      +
           NMBTEMPLATE => ['ZIP','Apple Numbers Template'],
           NRW  => ['TIFF', 'Nikon RAW (2)'],
           NUMBERS => ['ZIP','Apple Numbers spreadsheet'],
      @@ -408,8 +423,10 @@
           OFR  => ['RIFF', 'OptimFROG audio'],
           OGG  => ['OGG',  'Ogg Vorbis audio file'],
           OGV  => ['OGG',  'Ogg Video file'],
      +    ONP  => ['JSON', 'ON1 Presets'],
           OPUS => ['OGG',  'Ogg Opus audio file'],
           ORF  => ['ORF',  'Olympus RAW format'],
      +    ORI  =>  'ORF',
           OTF  => ['Font', 'Open Type Font'],
           PAC  => ['RIFF', 'Lossless Predictive Audio Compression'],
           PAGES => ['ZIP', 'Apple Pages document'],
      @@ -422,7 +439,7 @@
           PEF  => ['TIFF', 'Pentax (RAW) Electronic Format'],
           PFA  => ['Font', 'PostScript Font ASCII'],
           PFB  => ['Font', 'PostScript Font Binary'],
      -    PFM  => ['Font', 'Printer Font Metrics'],
      +    PFM  => [['Font','PFM2'], 'Printer Font Metrics'], # (description is overridden for Portable FloatMap images)
           PGF  => ['PGF',  'Progressive Graphics File'],
           PGM  => ['PPM',  'Portable Gray Map'],
           PHP  => ['PHP',  'PHP Hypertext Preprocessor'],
      @@ -513,6 +530,7 @@
           WMV  => ['ASF',  'Windows Media Video'],
           WV   => ['RIFF', 'WavePack lossless audio'],
           X3F  => ['X3F',  'Sigma RAW format'],
      +    MACOS=> ['MacOS','MacOS ._ sidecar file'],
           XCF  => ['XCF',  'GIMP native image format'],
           XHTML=> ['HTML', 'Extensible HyperText Markup Language'],
           XLA  => ['FPX',  'Microsoft Excel Add-in'],
      @@ -525,6 +543,8 @@
           XLTM => [['ZIP','FPX'], 'Office Open XML Spreadsheet Template Macro-enabled'],
           XLTX => [['ZIP','FPX'], 'Office Open XML Spreadsheet Template'],
           XMP  => ['XMP',  'Extensible Metadata Platform'],
      +    WOFF => ['Font', 'Web Open Font Format'],
      +    WOFF2=> ['Font', 'Web Open Font Format2'],
           WTV  => ['WTV',  'Windows recorded TV show'],
           ZIP  => ['ZIP',  'ZIP archive'],
       );
      @@ -579,6 +599,7 @@
           CRM  => 'video/x-canon-crm',
           CRW  => 'image/x-canon-crw',
           CSV  => 'text/csv',
      +    CZI  => 'image/x-zeiss-czi', #PH (NC)
           DCP  => 'application/octet-stream', #PH (NC)
           DCR  => 'image/x-kodak-dcr',
           DCX  => 'image/dcx',
      @@ -589,7 +610,7 @@
           DJVU => 'image/vnd.djvu',
           DNG  => 'image/x-adobe-dng',
           DOC  => 'application/msword',
      -    DOCM => 'application/vnd.ms-word.document.macroEnabled',
      +    DOCM => 'application/vnd.ms-word.document.macroEnabled.12',
           DOCX => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
           DOT  => 'application/msword',
           DOTM => 'application/vnd.ms-word.template.macroEnabledTemplate',
      @@ -602,6 +623,7 @@
          'DVR-MS' => 'video/x-ms-dvr',
           DWF  => 'model/vnd.dwf',
           DWG  => 'image/vnd.dwg',
      +    DXF  => 'application/dxf',
           EIP  => 'application/x-captureone', #(NC)
           EPS  => 'application/postscript',
           ERF  => 'image/x-epson-erf',
      @@ -637,13 +659,16 @@
           JP2  => 'image/jp2',
           JPEG => 'image/jpeg',
           JPM  => 'image/jpm',
      +    JPS  => 'image/x-jps',
           JPX  => 'image/jpx',
           JSON => 'application/json',
      +    JXL  => 'image/jxl', #PH (NC)
           JXR  => 'image/jxr',
           K25  => 'image/x-kodak-k25',
           KDC  => 'image/x-kodak-kdc',
           KEY  => 'application/x-iwork-keynote-sffkey',
           LFP  => 'image/x-lytro-lfp', #PH (NC)
      +    LIF  => 'image/x-lif',
           LNK  => 'application/octet-stream',
           LRI  => 'image/x-light-lri',
           M2T  => 'video/mpeg',
      @@ -664,9 +689,11 @@
           MP4  => 'video/mp4',
           MPC  => 'audio/x-musepack',
           MPEG => 'video/mpeg',
      +    MRC  => 'image/x-mrc',
           MRW  => 'image/x-minolta-mrw',
           MXF  => 'application/mxf',
           NEF  => 'image/x-nikon-nef',
      +    NKSC => 'application/x-nikon-nxstudio',
           NRW  => 'image/x-nikon-nrw',
           NUMBERS => 'application/x-iwork-numbers-sffnumbers',
           ODB  => 'application/vnd.oasis.opendocument.database',
      @@ -679,6 +706,7 @@
           ODT  => 'application/vnd.oasis.opendocument.text',
           OGG  => 'audio/ogg',
           OGV  => 'video/ogg',
      +    ONP  => 'application/on1',
           ORF  => 'image/x-olympus-orf',
           OTF  => 'application/x-font-otf',
           PAGES=> 'application/x-iwork-pages-sffpages',
      @@ -697,16 +725,16 @@
           PMP  => 'image/x-sony-pmp', #PH (NC)
           PNG  => 'image/png',
           POT  => 'application/vnd.ms-powerpoint',
      -    POTM => 'application/vnd.ms-powerpoint.template.macroEnabled',
      +    POTM => 'application/vnd.ms-powerpoint.template.macroEnabled.12',
           POTX => 'application/vnd.openxmlformats-officedocument.presentationml.template',
      -    PPAM => 'application/vnd.ms-powerpoint.addin.macroEnabled',
      +    PPAM => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
           PPAX => 'application/vnd.openxmlformats-officedocument.presentationml.addin', # (NC, PH invented)
           PPM  => 'image/x-portable-pixmap',
           PPS  => 'application/vnd.ms-powerpoint',
      -    PPSM => 'application/vnd.ms-powerpoint.slideshow.macroEnabled',
      +    PPSM => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
           PPSX => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
           PPT  => 'application/vnd.ms-powerpoint',
      -    PPTM => 'application/vnd.ms-powerpoint.presentation.macroEnabled',
      +    PPTM => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
           PPTX => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
           PS   => 'application/postscript',
           PSD  => 'application/vnd.adobe.photoshop',
      @@ -753,13 +781,13 @@
           X3F  => 'image/x-sigma-x3f',
           XCF  => 'image/x-xcf',
           XLA  => 'application/vnd.ms-excel',
      -    XLAM => 'application/vnd.ms-excel.addin.macroEnabled',
      +    XLAM => 'application/vnd.ms-excel.addin.macroEnabled.12',
           XLS  => 'application/vnd.ms-excel',
      -    XLSB => 'application/vnd.ms-excel.sheet.binary.macroEnabled',
      -    XLSM => 'application/vnd.ms-excel.sheet.macroEnabled',
      +    XLSB => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
      +    XLSM => 'application/vnd.ms-excel.sheet.macroEnabled.12',
           XLSX => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
           XLT  => 'application/vnd.ms-excel',
      -    XLTM => 'application/vnd.ms-excel.template.macroEnabled',
      +    XLTM => 'application/vnd.ms-excel.template.macroEnabled.12',
           XLTX => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
           XML  => 'application/xml',
           XMP  => 'application/rdf+xml',
      @@ -779,13 +807,16 @@
           CRW  => 'CanonRaw',
           CHM  => 'EXE',
           COS  => 'CaptureOne',
      +    CZI  => 'ZISRAW',
           DEX  => 0,
           DOCX => 'OOXML',
           DCX  => 0,
      +    DIR  => 0,
           DR4  => 'CanonVRD',
           DSS  => 'Olympus',
           DWF  => 0,
           DWG  => 0,
      +    DXF  => 0,
           EPS  => 'PostScript',
           EXIF => '',
           EXR  => 'OpenEXR',
      @@ -799,6 +830,7 @@
           HDR  => 'Radiance',
           JP2  => 'Jpeg2000',
           JPEG => '',
      +    JXL  => 'Jpeg2000',
           LFP  => 'Lytro',
           LRI  => 0,
           MOV  => 'QuickTime',
      @@ -809,6 +841,7 @@
           ORF  => 'Olympus',
           PDB  => 'Palm',
           PCD  => 'PhotoCD',
      +    PFM2 => 'Other',
           PHP  => 0,
           PMP  => 'Sony',
           PS   => 'PostScript',
      @@ -849,6 +882,7 @@
           BZ2  => 'BZh[1-9]\x31\x41\x59\x26\x53\x59',
           CHM  => 'ITSF.{20}\x10\xfd\x01\x7c\xaa\x7b\xd0\x11\x9e\x0c\0\xa0\xc9\x22\xe6\xec',
           CRW  => '(II|MM).{4}HEAP(CCDR|JPGM)',
      +    CZI  => 'ZISRAWFILE\0{6}',
           DCX  => '\xb1\x68\xde\x3a',
           DEX  => "dex\n035\0",
           DICOM=> '(.{128}DICM|\0[\x02\x04\x06\x08]\0[\0-\x20]|[\x02\x04\x06\x08]\0[\0-\x20]\0)',
      @@ -859,6 +893,7 @@
           DV   => '\x1f\x07\0[\x3f\xbf]', # (not tested if extension recognized)
           DWF  => '\(DWF V\d',
           DWG  => 'AC10\d{2}\0',
      +    DXF  => '\s*0\s+\0?\s*SECTION\s+2\s+HEADER',
           EPS  => '(%!PS|%!Ad|\xc5\xd0\xd3\xc6)',
           EXE  => '(MZ|\xca\xfe\xba\xbe|\xfe\xed\xfa[\xce\xcf]|[\xce\xcf]\xfa\xed\xfe|Joy!peff|\x7fELF|#!\s*/\S*bin/|!\x0a)',
           EXIF => '(II\x2a\0|MM\0\x2a)',
      @@ -870,21 +905,23 @@
           FLIR => '[AF]FF\0',
           FLV  => 'FLV\x01',
           Font => '((\0\x01\0\0|OTTO|true|typ1)[\0\x01]|ttcf\0[\x01\x02]\0\0|\0[\x01\x02]|' .
      -            '(.{6})?%!(PS-(AdobeFont-|Bitstream )|FontType1-)|Start(Comp|Master)?FontMetrics)',
      +            '(.{6})?%!(PS-(AdobeFont-|Bitstream )|FontType1-)|Start(Comp|Master)?FontMetrics|wOF[F2])',
           FPF  => 'FPF Public Image Format\0',
           FPX  => '\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1',
           GIF  => 'GIF8[79]a',
           GZIP => '\x1f\x8b\x08',
           HDR  => '#\?(RADIANCE|RGBE)\x0a',
           HTML => '(\xef\xbb\xbf)?\s*(?i)<(!DOCTYPE\s+HTML|HTML|\?xml)', # (case insensitive)
      -    ICC  => '.{12}(scnr|mntr|prtr|link|spac|abst|nmcl|nkpf)(XYZ |Lab |Luv |YCbr|Yxy |RGB |GRAY|HSV |HLS |CMYK|CMY |[2-9A-F]CLR){2}',
      +    ICC  => '.{12}(scnr|mntr|prtr|link|spac|abst|nmcl|nkpf|cenc|mid |mlnk|mvis)(XYZ |Lab |Luv |YCbr|Yxy |RGB |GRAY|HSV |HLS |CMYK|CMY |[2-9A-F]CLR|nc..|\0{4}){2}',
           IND  => '\x06\x06\xed\xf5\xd8\x1d\x46\xe5\xbd\x31\xef\xe7\xfe\x74\xb7\x1d',
         # ISO  =>  signature is at byte 32768
           ITC  => '.{4}itch',
           JP2  => '(\0\0\0\x0cjP(  |\x1a\x1a)\x0d\x0a\x87\x0a|\xff\x4f\xff\x51\0)',
           JPEG => '\xff\xd8\xff',
           JSON => '(\xef\xbb\xbf)?\s*(\[\s*)?\{\s*"[^"]*"\s*:',
      +    JXL  => '\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl ',
           LFP  => '\x89LFP\x0d\x0a\x1a\x0a',
      +    LIF  => '\x70\0{3}.{4}\x2a.{4}<\0',
           LNK  => '.{4}\x01\x14\x02\0{5}\xc0\0{6}\x46',
           LRI  => 'LELR \0',
           M2TS => '(....)?\x47',
      @@ -896,14 +933,16 @@
           MPC  => '(MP\+|ID3)',
           MOI  => 'V6',
           MPEG => '\0\0\x01[\xb0-\xbf]',
      +    MRC  => '.{64}[\x01\x02\x03]\0\0\0[\x01\x02\x03]\0\0\0[\x01\x02\x03]\0\0\0.{132}MAP[\0 ](\x44\x44|\x44\x41|\x11\x11)\0\0',
           MRW  => '\0MR[MI]',
           MXF  => '\x06\x0e\x2b\x34\x02\x05\x01\x01\x0d\x01\x02', # (not tested if extension recognized)
           OGG  => '(OggS|ID3)',
           ORF  => '(II|MM)',
      -    PDB  => '.{60}(\.pdfADBE|TEXtREAd|BVokBDIC|DB99DBOS|PNRdPPrs|DataPPrs|vIMGView|PmDBPmDB|InfoINDB|ToGoToGo|SDocSilX|JbDbJBas|JfDbJFil|DATALSdb|Mdb1Mdb1|BOOKMOBI|DataPlkr|DataSprd|SM01SMem|TEXtTlDc|InfoTlIf|DataTlMl|DataTlPt|dataTDBP|TdatTide|ToRaTRPW|zTXTGPlm|BDOCWrdS)',
         # PCD  =>  signature is at byte 2048
           PCX  => '\x0a[\0-\x05]\x01[\x01\x02\x04\x08].{64}[\0-\x02]',
      +    PDB  => '.{60}(\.pdfADBE|TEXtREAd|BVokBDIC|DB99DBOS|PNRdPPrs|DataPPrs|vIMGView|PmDBPmDB|InfoINDB|ToGoToGo|SDocSilX|JbDbJBas|JfDbJFil|DATALSdb|Mdb1Mdb1|BOOKMOBI|DataPlkr|DataSprd|SM01SMem|TEXtTlDc|InfoTlIf|DataTlMl|DataTlPt|dataTDBP|TdatTide|ToRaTRPW|zTXTGPlm|BDOCWrdS)',
           PDF  => '\s*%PDF-\d+\.\d+',
      +    PFM  => 'P[Ff]\x0a\d+ \d+\x0a[-+0-9.]+\x0a',
           PGF  => 'PGF',
           PHP  => '<\?php\s',
           PICT => '(.{10}|.{522})(\x11\x01|\x00\x11)',
      @@ -933,6 +972,7 @@
           WMF  => '(\xd7\xcd\xc6\x9a\0\0|\x01\0\x09\0\0\x03)',
           WTV  => '\xb7\xd8\x00\x20\x37\x49\xda\x11\xa6\x4e\x00\x07\xe9\x5e\xad\x8d',
           X3F  => 'FOVb',
      +    MacOS=> '\0\x05\x16\x07\0.\0\0Mac OS X        ',
           XCF  => 'gimp xcf ',
           XMP  => '\0{0,3}(\xfe\xff|\xff\xfe|\xef\xbb\xbf)?\0{0,3}\s*<',
           ZIP  => 'PK\x03\x04',
      @@ -981,6 +1021,7 @@
           thai        => 'Thai',        cp874   => 'Thai',
           doslatinus  => 'DOSLatinUS',  cp437   => 'DOSLatinUS',
           doslatin1   => 'DOSLatin1',   cp850   => 'DOSLatin1',
      +    doscyrillic => 'DOSCyrillic', cp866   => 'DOSCyrillic',
           macroman    => 'MacRoman',    cp10000 => 'MacRoman', mac => 'MacRoman', roman => 'MacRoman',
           maclatin2   => 'MacLatin2',   cp10029 => 'MacLatin2',
           maccyrillic => 'MacCyrillic', cp10007 => 'MacCyrillic',
      @@ -1114,11 +1155,18 @@
               RawConv => '$self->ConvertFileName($val)',
               ValueConvInv => '$self->InverseFileName($val)',
           },
      +    BaseName => {
      +        Groups => { 1 => 'System', 2 => 'Other' },
      +        Notes => q{
      +            file name without extension. Not generated unless specifically requested or
      +            the API L option is set
      +        },
      +    },
           FilePath => {
               Groups => { 1 => 'System', 2 => 'Other' },
               Notes => q{
                   absolute path of source file. Not generated unless specifically requested or
      -            the L API option is set.  Does not support Windows Unicode file
      +            the API L option is set.  Does not support Windows Unicode file
                   names
               },
           },
      @@ -1141,7 +1189,7 @@
                   sequence number for each source file when extracting or copying information,
                   including files that fail the -if condition of the command-line application,
                   beginning at 0 for the first file.  Not generated unless specifically
      -            requested or the L API option is set
      +            requested or the API L option is set
               },
           },
           FileSize => {
      @@ -1163,6 +1211,18 @@
               },
               PrintConv => \&ConvertFileSize,
           },
      +    ZoneIdentifier => {
      +        Groups => { 1 => 'System', 2 => 'Other' },
      +        Notes => q{
      +            Windows only.  Existence indicates that the file has a Zone.Identifier
      +            alternate data stream, which is used by some Windows browsers to mark
      +            downloaded files as possibly unsafe to run.  May be deleted to remove this
      +            stream.  Requires Win32API::File
      +        },
      +        Writable => 1,
      +        WritePseudo => 1,
      +        Protected => 1,
      +    },
           FileType => {
               Groups => { 2 => 'Other' },
               Notes => q{
      @@ -1214,8 +1274,9 @@
                   the filesystem creation date/time.  Windows/Mac only.  In Windows, the file
                   creation date/time is preserved by default when writing if Win32API::File
                   and Win32::API are available.  On Mac, this tag is extracted only if it or
      -            the MacOS group is specifically requested or the L API option is
      -            set to 2 or higher.  Requires "setfile" for writing on Mac
      +            the MacOS group is specifically requested or the API L option is
      +            set to 2 or higher.  Requires "setfile" for writing on Mac, which may be
      +            installed by typing C in the Terminal
               },
               Groups => { 1 => 'System', 2 => 'Time' },
               Writable => 1,
      @@ -1254,10 +1315,19 @@
               WritePseudo => 1,
               DelCheck => q{"Can't delete"},
               Protected => 1, # all writable pseudo-tags must be protected!
      -        ValueConv => 'sprintf("%.3o", $val & 0777)',
      -        ValueConvInv => 'oct($val)',
      +        ValueConv => 'sprintf("%.3o", $val)',
      +        ValueConvInv => 'oct($val & 07777)',
               PrintConv => sub {
      -            my ($mask, $str, $val) = (0400, '', oct(shift));
      +            my ($mask, $val) = (0400, oct(shift));
      +            my %types = (
      +                0010000 => 'p',
      +                0020000 => 'c',
      +                0040000 => 'd',
      +                0060000 => 'b',
      +                0120000 => 'l',
      +                0140000 => 's',
      +            );
      +            my $str = $types{$val & 0170000} || '-';
                   while ($mask) {
                       foreach (qw(r w x)) {
                           $str .= $val & $mask ? $_ : '-';
      @@ -1268,6 +1338,7 @@
               },
               PrintConvInv => sub {
                   my ($bit, $val, $str) = (8, 0, shift);
      +            $str = substr($str, 1) if length($str) == 10;
                   return undef if length($str) != 9;
                   while ($bit >= 0) {
                       foreach (qw(r w x)) {
      @@ -1441,6 +1512,11 @@
                   return Image::ExifTool::XMP::CheckXMP($self, $tagInfo, \$val);
               },
           },
      +    XML => {
      +        Notes => 'the XML data block, extracted for some file types',
      +        Groups => { 0 => 'XML', 1 => 'XML' },
      +        Binary => 1,
      +    },
           ICC_Profile => {
               Notes => q{
                   the full ICC_Profile data block.  This tag is generated only if specifically
      @@ -1589,7 +1665,7 @@
                   sub-sampling values to generate the value of this tag.  The result is
                   compared to known values in an attempt to deduce the originating software
                   based only on the JPEG image data.  For performance reasons, this tag is
      -            generated only if specifically requested or the L API option is set
      +            generated only if specifically requested or the API L option is set
                   to 3 or higher
               },
           },
      @@ -1597,14 +1673,14 @@
               Notes => q{
                   an estimate of the IJG JPEG quality setting for the image, calculated from
                   the quantization tables.  For performance reasons, this tag is generated
      -            only if specifically requested or the L API option is set to 3 or
      +            only if specifically requested or the API L option is set to 3 or
                   higher
               },
           },
           JPEGImageLength => {
               Notes => q{
                   byte length of JPEG image without metadata.  For performance reasons, this
      -            tag is generated only if specifically requested or the L API option
      +            tag is generated only if specifically requested or the API L option
                   is set to 3 or higher
               },
           },
      @@ -1614,7 +1690,7 @@
               Notes => q{
                   the current date/time.  Useful when setting the tag values, eg.
                   C<"-modifydate.  Not generated unless specifically requested or the
      -            L API option is set
      +            API L option is set
               },
               PrintConv => '$self->ConvertDateTime($val)',
           },
      @@ -1625,7 +1701,7 @@
                   YYYYmmdd-HHMM-SSNN-PPPP-RRRRRRRRRRRR, where Y=year, m=month, d=day, H=hour,
                   M=minute, S=second, N=file sequence number in hex, P=process ID in hex, and
                   R=random hex number; without dashes with the -n option.  Not generated
      -            unless specifically requested or the L API option is set
      +            unless specifically requested or the API L option is set
               },
               PrintConv => '$val =~ s/(.{8})(.{4})(.{4})(.{4})/$1-$2-$3-$4-/; $val',
           },
      @@ -1716,10 +1792,20 @@
           EmbeddedVideo => { Groups => { 0 => 'Trailer', 2 => 'Video' } },
           Trailer => {
               Groups => { 0 => 'Trailer' },
      -        Notes => 'the full JPEG trailer data block.  Extracted only if specifically requested',
      +        Notes => q{
      +            the full JPEG trailer data block.  Extracted only if specifically requested
      +            or the API RequestAll option is set to 3 or higher
      +        },
               Writable => 1,
               Protected => 1,
           },
      +    PageCount => { Notes => 'the number of pages in a multi-page TIFF document' },
      +);
      +
      +# tags defined by UserParam option (added at runtime)
      +%Image::ExifTool::UserParam = (
      +    GROUPS => { 0 => 'UserParam', 1 => 'UserParam', 2 => 'Other' },
      +    PRIORITY => 0,
       );
       
       # YCbCrSubSampling values (used by JPEG SOF, EXIF and XMP)
      @@ -1871,6 +1957,8 @@
                   return \$img;
               },
           },
      +    # Apple may add "AMPF" to the end of the JFIF record,
      +    # possibly indicating the existence of MPF images (ref forum12677)
       );
       
       # Composite tags (accumulation of all Composite tag tables)
      @@ -2023,12 +2111,15 @@
                       $$options{$param} = $newVal;
                       delete $$self{CUR_LANG};
                   # make sure the language is available
      -            } elsif (eval "require Image::ExifTool::Lang::$newVal") {
      -                my $xlat = "Image::ExifTool::Lang::${newVal}::Translate";
      -                no strict 'refs';
      -                if (%$xlat) {
      -                    $$self{CUR_LANG} = \%$xlat;
      -                    $$options{$param} = $newVal;
      +            } else {
      +                my %langs = map { $_ => 1 } @langs;
      +                if ($langs{$newVal} and eval "require Image::ExifTool::Lang::$newVal") {
      +                    my $xlat = "Image::ExifTool::Lang::${newVal}::Translate";
      +                    no strict 'refs';
      +                    if (%$xlat) {
      +                        $$self{CUR_LANG} = \%$xlat;
      +                        $$options{$param} = $newVal;
      +                    }
                       }
                   } # else don't change Lang
               } elsif ($param eq 'Exclude' and defined $newVal) {
      @@ -2062,31 +2153,45 @@
               } elsif ($param eq 'UserParam') {
                   # clear options if $newVal is undef
                   defined $newVal or $$options{$param} = {}, next;
      +            my $table = GetTagTable('Image::ExifTool::UserParam');
                   # allow initialization of entire UserParam hash
                   if (ref $newVal eq 'HASH') {
                       my %newParams;
      -                $newParams{lc $_} = $$newVal{$_} foreach sort keys %$newVal;
      +                foreach (sort keys %$newVal) {
      +                    my $lcTag = lc $_;
      +                    $newParams{$lcTag} = $$newVal{$_};
      +                    delete $$table{$lcTag};
      +                    AddTagToTable($table, $lcTag, $_);
      +                }
                       $$options{$param} = \%newParams;
                       next;
                   }
      -            my $force;
      +            my ($force, $paramName);
                   # set/reset single UserParam parameter
                   if ($newVal =~ /(.*?)=(.*)/s) {
      -                $param = lc $1;
      +                $paramName = $1;
                       $newVal = $2;
      -                $force = 1 if $param =~ s/\^$//;
      +                $force = 1 if $paramName =~ s/\^$//;
      +                $paramName =~ tr/-_a-zA-Z0-9#//dc;
      +                $param = lc $paramName;
                   } else {
      -                $param = lc $newVal;
      +                ($param = lc $newVal) =~ tr/-_a-zA-Z0-9#//dc;
                       undef $newVal;
                   }
      +            delete $$table{$param};
                   $oldVal = $$options{UserParam}{$param};
                   if (defined $newVal) {
                       if (length $newVal or $force) {
                           $$options{UserParam}{$param} = $newVal;
      +                    AddTagToTable($table, $param, $paramName);
                       } else {
                           delete $$options{UserParam}{$param};
                       }
                   }
      +            # remove alternate version of tag
      +            $param .= '#' unless $param =~ s/#$//;
      +            delete $$table{$param};
      +            delete $$options{UserParam}{$param};
               } elsif ($param eq 'RequestTags') {
                   if (defined $newVal) {
                       # parse list from delimited string if necessary
      @@ -2098,6 +2203,7 @@
                           /^(.*:)?([-\w?*]*)#?$/ or next;
                           push @{$$options{$param}}, lc($2) if $2;
                           next unless $1;
      +                    # add requested groups with trailing colon
                           push @{$$options{$param}}, lc($_).':' foreach split /:/, $1;
                       }
                   } else {
      @@ -2211,6 +2317,7 @@
               GeoSpeedRef => undef,   # geotag GPSSpeedRef
               GlobalTimeShift => undef,   # apply time shift to all extracted date/time values
           #   Group#      => undef,   # return tags for specified groups in family #
      +        HexTagIDs   => 0,       # use hex tag ID's in family 7 group names
               HtmlDump    => 0,       # HTML dump (0-3, higher # = bigger limit)
               HtmlDumpBase => undef,  # base address for HTML dump
               IgnoreMinorErrors => undef, # ignore minor errors when reading/writing
      @@ -2224,10 +2331,12 @@
               MakerNotes  => undef,   # extract maker notes as a block
               MDItemTags  => undef,   # extract MacOS metadata item tags
               MissingTagValue =>undef,# value for missing tags when expanded in expressions
      +        NoMultiExif => undef,   # raise error when writing multi-segment EXIF
               NoPDFList   => undef,   # flag to avoid splitting PDF List-type tag values
               Password    => undef,   # password for password-protected PDF documents
               PrintConv   => 1,       # flag to enable print conversion
      -        QuickTimeHandler => undef,  # flag to add mdir Handler to newly created Meta box
      +        QuickTimeHandler => 1,  # flag to add mdir Handler to newly created Meta box
      +        QuickTimePad=> undef,   # flag to preserve padding of QuickTime CR3 tags
               QuickTimeUTC=> undef,   # assume that QuickTime date/time tags are stored as UTC
               RequestAll  => undef,   # extract all tags that must be specifically requested
               RequestTags => undef,   # extra tags to request (on top of those in the tag list)
      @@ -2242,7 +2351,7 @@
               TextOut     => \*STDOUT,# file for Verbose/HtmlDump output
               TimeZone    => undef,   # local time zone
               Unknown     => 0,       # flag to get values of unknown tags (0-2)
      -        UserParam   => { },     # user parameters for InsertTagValues()
      +        UserParam   => { },     # user parameters for additional user-defined tag values
               Validate    => undef,   # perform additional validation
               Verbose     => 0,       # print verbose messages (0-5, higher # = more verbose)
               WriteMode   => 'wcg',   # enable all write modes by default
      @@ -2277,7 +2386,7 @@
           my $fast = $$options{FastScan} || 0;
           my $req = $$self{REQ_TAG_LOOKUP};
           my $reqAll = $$options{RequestAll} || 0;
      -    my (%saveOptions, $reEntry, $rsize, $type, @startTime, $saveOrder);
      +    my (%saveOptions, $reEntry, $rsize, $zid, $type, @startTime, $saveOrder, $isDir);
       
           # check for internal ReEntry option to allow recursive calls to ExtractInfo
           if (ref $_[1] eq 'HASH' and $_[1]{ReEntry} and
      @@ -2348,16 +2457,13 @@
                   unless ($filename eq '-') {
                       # extract file name from pipe if necessary
                       $realname =~ /\|$/ and $realname =~ s/^.*?"(.*?)".*/$1/s;
      -                my ($dir, $name);
      -                if (eval { require File::Basename }) {
      -                    $dir = File::Basename::dirname($realname);
      -                    $name = File::Basename::basename($realname);
      -                } else {
      -                    ($name = $realname) =~ tr/\\/\//;
      -                    # remove path
      -                    $dir = length($1) ? $1 : '/' if $name =~ s/(.*)\///;
      -                }
      +                my ($dir, $name) = SplitFileName($realname);
                       $self->FoundTag('FileName', $name);
      +                if ($$req{basename} or
      +                   ($reqAll and not $$self{EXCL_TAG_LOOKUP}{basename}))
      +                {
      +                    $self->FoundTag('BaseName', $name =~ /(.*)\./ ? $1 : $name);
      +                }
                       $self->FoundTag('Directory', $dir) if defined $dir and length $dir;
                       if ($$req{filepath} or
                          ($reqAll and not $$self{EXCL_TAG_LOOKUP}{filepath}))
      @@ -2372,6 +2478,17 @@
                       }
                       # get size of resource fork on Mac OS
                       $rsize = -s "$filename/..namedfork/rsrc" if $^O eq 'darwin' and not $$self{IN_RESOURCE};
      +                # check to see if Zone.Identifier file exists in Windows
      +                if ($^O eq 'MSWin32' and eval { require Win32API::File }) {
      +                    my $wattr;
      +                    my $zfile = "${filename}:Zone.Identifier";
      +                    if ($self->EncodeFileName($zfile)) {
      +                        $wattr = eval { Win32API::File::GetFileAttributesW($zfile) };
      +                    } else {
      +                        $wattr = eval { Win32API::File::GetFileAttributes($zfile) };
      +                    }
      +                    $zid = 1 unless $wattr == Win32API::File::INVALID_FILE_ATTRIBUTES();
      +                }
                   }
                   # open the file
                   if ($self->Open(\*EXIFTOOL_FILE, $filename)) {
      @@ -2381,6 +2498,8 @@
                       # in Windows cmd shell pipe even though it really failed
                       $$raf{TESTED} = -1 if $filename eq '-' or $filename =~ /\|$/;
                       $$self{RAF} = $raf;
      +            } elsif ($self->IsDirectory($filename)) {
      +                $isDir = 1;
                   } else {
                       $self->Error('Error opening file');
                   }
      @@ -2389,28 +2508,35 @@
               }
           }
       
      -    while ($raf) {
      -        my (@stat, $fileSize);
      +    while ($raf or $isDir) {
      +        my (@stat, $plainFile);
               if ($reEntry) {
                   # we already set these tags
      +        } elsif (not $raf) {
      +            @stat = stat $filename;
               } elsif (not $$raf{FILE_PT}) {
                   # get file size from image in memory
                   $self->FoundTag('FileSize', length ${$$raf{BUFF_PT}});
               } elsif (-f $$raf{FILE_PT}) {
                   # get file tags if this is a plain file
      -            $fileSize = -s _;
                   @stat = stat _;
      -            my ($aTime, $mTime, $cTime) = $self->GetFileTime($$raf{FILE_PT});
      -            $self->FoundTag('FileSize', $fileSize) if defined $fileSize;
      -            $self->FoundTag('ResourceForkSize', $rsize) if $rsize;
      -            $self->FoundTag('FileModifyDate', $mTime) if defined $mTime;
      -            $self->FoundTag('FileAccessDate', $aTime) if defined $aTime;
      -            my $cTag = $^O eq 'MSWin32' ? 'FileCreateDate' : 'FileInodeChangeDate';
      -            $self->FoundTag($cTag, $cTime) if defined $cTime;
      -            $self->FoundTag('FilePermissions', $stat[2]) if defined $stat[2];
      +            $plainFile = 1;
      +            # hack to patch Windows daylight savings time bug
      +            @stat[8,9,10] = $self->GetFileTime($$raf{FILE_PT}) if $^O eq 'MSWin32';
               } else {
      +            # (note that Windows directories will still show the
      +            #  daylight savings time bug -- should fix this sometime)
                   @stat = stat $$raf{FILE_PT};
               }
      +        my $fileSize = $stat[7];
      +        $self->FoundTag('FileSize', $stat[7]) if defined $stat[7];
      +        $self->FoundTag('ResourceForkSize', $rsize) if $rsize;
      +        $self->FoundTag('ZoneIdentifier', 'Exists') if $zid;
      +        $self->FoundTag('FileModifyDate', $stat[9]) if defined $stat[9];
      +        $self->FoundTag('FileAccessDate', $stat[8]) if defined $stat[8];
      +        my $cTag = $^O eq 'MSWin32' ? 'FileCreateDate' : 'FileInodeChangeDate';
      +        $self->FoundTag($cTag, $stat[10]) if defined $stat[10];
      +        $self->FoundTag('FilePermissions', $stat[2]) if defined $stat[2];
               # extract more system info if SystemTags option is set
               if (@stat) {
                   my $sys = $$options{SystemTags} || ($reqAll and not defined $$options{SystemTags});
      @@ -2450,11 +2576,18 @@
                   if ($crDate or $mdItem or $xattr) {
                       require Image::ExifTool::MacOS;
                       Image::ExifTool::MacOS::GetFileCreateDate($self, $filename) if $crDate;
      -                Image::ExifTool::MacOS::ExtractMDItemTags($self, $filename) if $mdItem;
      +                Image::ExifTool::MacOS::ExtractMDItemTags($self, $filename) if $mdItem and $plainFile;
                       Image::ExifTool::MacOS::ExtractXAttrTags($self, $filename) if $xattr;
                   }
               }
      -
      +        # do whatever else we can with directories, then return
      +        if ($isDir or (defined $stat[2] and ($stat[2] & 0170000) == 0040000)) {
      +            $self->FoundTag('FileType', 'DIR');
      +            $self->FoundTag('FileTypeExtension', '');
      +            $self->BuildCompositeTags() if $$options{Composite};
      +            $raf->Close() if $raf;
      +            return 1;
      +        }
               # get list of file types to check
               my ($tiffType, %noMagic, $recognizedExt);
               my $ext = $$self{FILE_EXT} = GetFileExtension($realname);
      @@ -2469,6 +2602,7 @@
                   } else {
                       $self->Error('Unknown file type');
                   }
      +            $self->BuildCompositeTags() if $fast == 4 and $$options{Composite};
                   last;   # don't read the file
               }
               if (@fileTypeList) {
      @@ -2589,7 +2723,7 @@
                           if ($$self{OPTIONS}{FastScan}) {
                               $err = 'File header is all';
                           } else {
      -                        my $num = length $buff;
      +                        my $num = 0;
                               for (;;) {
                                   $raf->Read($buff, 65536) or undef($num), last;
                                   $buff =~ /[^\Q$ch\E]/g and $num += pos($buff) - 1, last;
      @@ -2677,6 +2811,20 @@
       
           @startTime and $self->FoundTag('ProcessingTime', Time::HiRes::tv_interval(\@startTime));
       
      +    # add user-defined parameters that ended with '!'
      +    if (%{$$options{UserParam}}) {
      +        my $doMsg = $$options{Verbose};
      +        my $table = GetTagTable('Image::ExifTool::UserParam');
      +        foreach (sort keys %{$$options{UserParam}}) {
      +            next unless /#$/;
      +            if ($doMsg) {
      +                $self->VPrint(0, "UserParam tags:\n");
      +                undef $doMsg;
      +            }
      +            $self->HandleTag($table, $_, $$options{UserParam}{$_});
      +        }
      +    }
      +
           # restore original options
           %saveOptions and $$self{OPTIONS} = \%saveOptions;
       
      @@ -3064,30 +3212,9 @@
                       }
                       if (ref $conv eq 'HASH') {
                           # look up converted value in hash
      -                    my $lc;
      -                    if (defined($value = $$conv{$val})) {
      -                        # override with our localized language PrintConv if available
      -                        if ($$self{CUR_LANG} and $convType eq 'PrintConv' and
      -                            # (no need to check for lang-alt tag names -- they won't have a PrintConv)
      -                            ref($lc = $$self{CUR_LANG}{$$tagInfo{Name}}) eq 'HASH' and
      -                            ($lc = $$lc{PrintConv}) and ($lc = $$lc{$value}))
      -                        {
      -                            $value = $self->Decode($lc, 'UTF8');
      -                        }
      -                    } else {
      +                    if (not defined($value = $$conv{$val})) {
                               if ($$conv{BITMASK}) {
                                   $value = DecodeBits($val, $$conv{BITMASK}, $$tagInfo{BitsPerWord});
      -                            # override with localized language strings
      -                            if (defined $value and $$self{CUR_LANG} and $convType eq 'PrintConv' and
      -                                ref($lc = $$self{CUR_LANG}{$$tagInfo{Name}}) eq 'HASH' and
      -                                ($lc = $$lc{PrintConv}))
      -                            {
      -                                my @vals = split ', ', $value;
      -                                foreach (@vals) {
      -                                    $_ = $$lc{$_} if defined $$lc{$_};
      -                                }
      -                                $value = join ', ', @vals;
      -                            }
                               } else {
                                    # use alternate conversion routine if available
                                   if ($$conv{OTHER}) {
      @@ -3100,12 +3227,30 @@
                                       if ($$tagInfo{PrintHex} and $val and IsInt($val) and
                                           $convType eq 'PrintConv')
                                       {
      -                                    $val = sprintf('0x%x',$val);
      +                                    $value = sprintf('Unknown (0x%x)',$val);
      +                                } else {
      +                                    $value = "Unknown ($val)";
                                       }
      -                                $value = "Unknown ($val)";
                                   }
                               }
                           }
      +                    # override with our localized language PrintConv if available
      +                    my $tmp;
      +                    if ($$self{CUR_LANG} and $convType eq 'PrintConv' and
      +                        # (no need to check for lang-alt tag names -- they won't have a PrintConv)
      +                        ref($tmp = $$self{CUR_LANG}{$$tagInfo{Name}}) eq 'HASH' and
      +                        ($tmp = $$tmp{PrintConv}))
      +                    {
      +                        if ($$conv{BITMASK} and not defined $$conv{$val}) {
      +                            my @vals = split ', ', $value;
      +                            foreach (@vals) {
      +                                $_ = $$tmp{$_} if defined $$tmp{$_};
      +                            }
      +                            $value = join ', ', @vals;
      +                        } elsif (defined($tmp = $$tmp{$value})) {
      +                            $value = $self->Decode($tmp, 'UTF8');
      +                        }
      +                    }
                       } else {
                           # call subroutine or do eval to convert value
                           local $SIG{'__WARN__'} = \&SetWarning;
      @@ -3167,7 +3312,7 @@
                   # $valueConv is undefined if there was no print conversion done
                   $valueConv = $value;
               }
      -        Filter($$self{OPTIONS}{Filter}, \$value);
      +        $self->Filter($$self{OPTIONS}{Filter}, \$value);
               # return Both values as a list (ValueConv, PrintConv)
               return ($valueConv, $value);
           }
      @@ -3175,7 +3320,7 @@
           DoEscape($value, $$self{ESCAPE_PROC}) if $$self{ESCAPE_PROC};
       
           # filter if necessary
      -    Filter($$self{OPTIONS}{Filter}, \$value) if $$self{OPTIONS}{Filter} and $type eq 'PrintConv';
      +    $self->Filter($$self{OPTIONS}{Filter}, \$value) if $$self{OPTIONS}{Filter} and $type eq 'PrintConv';
       
           if (ref $value eq 'ARRAY') {
               if (defined $$self{OPTIONS}{ListItem}) {
      @@ -3202,8 +3347,9 @@
           my ($self, $tag) = @_;
           my $tagInfo = $$self{TAG_INFO}{$tag};
           return '' unless $tagInfo and defined $$tagInfo{TagID};
      -    return ($$tagInfo{TagID}, $$tagInfo{LangCode}) if wantarray;
      -    return $$tagInfo{TagID};
      +    my $id = $$tagInfo{KeysID} || $$tagInfo{TagID};
      +    return ($id, $$tagInfo{LangCode}) if wantarray;
      +    return $id;
       }
       
       #------------------------------------------------------------------------------
      @@ -3263,7 +3409,7 @@
       {
           local $_;
           my ($self, $tag, $family) = @_;
      -    my ($tagInfo, @groups, @families, $simplify, $byTagInfo, $ex);
      +    my ($tagInfo, @groups, @families, $simplify, $byTagInfo, $ex, $noID);
           if (ref $tag eq 'HASH') {
               $tagInfo = $tag;
               $tag = $$tagInfo{Name};
      @@ -3294,6 +3440,7 @@
                   $simplify = 1 unless $family =~ /^:/;
                   undef $family;
                   foreach (0..2) { $groups[$_] = $$groups{$_}; }
      +            $noID = 1 if @families == 1 and $families[0] != 7;
               } else {
                   return(($ex && $$ex{"G$family"}) || $$groups{$family}) if $family == 0 or $family == 2;
                   $groups[1] = $$groups{1};
      @@ -3305,14 +3452,29 @@
           $groups[3] = 'Main';
           $groups[4] = ($tag =~ /\((\d+)\)$/) ? "Copy$1" : '';
           # handle dynamic group names if necessary
      -    if ($ex and not $byTagInfo) {
      -        $groups[0] = $$ex{G0} if $$ex{G0};
      -        $groups[1] = $$ex{G1} =~ /^\+(.*)/ ? "$groups[1]$1" : $$ex{G1} if $$ex{G1};
      -        $groups[3] = 'Doc' . $$ex{G3} if $$ex{G3};
      -        $groups[5] = $$ex{G5} || $groups[1] if defined $$ex{G5};
      -        if (defined $$ex{G6}) {
      -            $groups[5] = '' unless defined $groups[5];  # (can't leave a hole in the array)
      -            $groups[6] = $$ex{G6};
      +    unless ($byTagInfo) {
      +        if ($ex) {
      +            $groups[0] = $$ex{G0} if $$ex{G0};
      +            $groups[1] = $$ex{G1} =~ /^\+(.*)/ ? "$groups[1]$1" : $$ex{G1} if $$ex{G1};
      +            $groups[3] = 'Doc' . $$ex{G3} if $$ex{G3};
      +            $groups[5] = $$ex{G5} || $groups[1] if defined $$ex{G5};
      +            if (defined $$ex{G6}) {
      +                $groups[5] = '' unless defined $groups[5];  # (can't leave a hole in the array)
      +                $groups[6] = $$ex{G6};
      +            }
      +        }
      +        # generate tag ID group names unless obviously not needed
      +        unless ($noID) {
      +            my $id = $$tagInfo{KeysID} || $$tagInfo{TagID};
      +            if (not defined $id) {
      +                $id = '';   # (just to be safe)
      +            } elsif ($id =~ /^\d+$/) {
      +                $id = sprintf('0x%x', $id) if $$self{OPTIONS}{HexTagIDs};
      +            } else {
      +                $id =~ s/([^-_A-Za-z0-9])/sprintf('%.2x',ord $1)/ge;
      +            }
      +            $groups[7] = 'ID-' . $id;
      +            defined $groups[$_] or $groups[$_] = '' foreach (5,6);
               }
           }
           if ($family) {
      @@ -3331,7 +3493,11 @@
               my @grps;
               # create list of group names (without identical adjacent groups if simplifying)
               foreach (@families) {
      -            my $grp = $groups[$_] or next;
      +            my $grp = $groups[$_];
      +            unless ($grp) {
      +                next if $simplify;
      +                $grp = '';
      +            }
                   push @grps, $grp unless $simplify and @grps and $grp eq $grps[-1];
               }
               # remove leading "Main:" if simplifying
      @@ -3654,7 +3820,15 @@
           # return description if specified
           # (allow input $file to be a FileType for this purpose)
           if ($desc) {
      -        $desc = $fileType ? $$fileType[1] : $fileDescription{$file};
      +        if ($fileType) {
      +            if ($static_vars{OverrideFileDescription} and $static_vars{OverrideFileDescription}{$fileExt}) {
      +                $desc = $static_vars{OverrideFileDescription}{$fileExt};
      +            } else {
      +                $desc = $$fileType[1];
      +            }
      +        } else {
      +            $desc = $fileDescription{$file};
      +        }
               $desc .= ", $subType" if $subType;
               return $desc;
           } elsif ($fileType and (not defined $desc or $desc ne '0')) {
      @@ -3719,6 +3893,7 @@
           foreach (keys %$self) {
               /[a-z]/ and delete $$self{$_};
           }
      +    undef %static_vars;             # clear all static variables
           delete $$self{FOUND_TAGS};      # list of found tags
           delete $$self{EXIF_DATA};       # the EXIF data block
           delete $$self{EXIF_POS};        # EXIF position in file
      @@ -3853,6 +4028,25 @@
       }
       
       #------------------------------------------------------------------------------
      +# Split file name into directory and name parts
      +# Inptus: 0) file name
      +# Returns: 0) directory, 1) filename
      +sub SplitFileName($)
      +{
      +    my $file = shift;
      +    my ($dir, $name);
      +    if (eval { require File::Basename }) {
      +        $dir = File::Basename::dirname($file);
      +        $name = File::Basename::basename($file);
      +    } else {
      +        ($name = $file) =~ tr/\\/\//;
      +        # remove path
      +        $dir = length($1) ? $1 : '/' if $name =~ s/(.*)\///;
      +    }
      +    return ($dir, $name);
      +}
      +
      +#------------------------------------------------------------------------------
       # Encode file name for calls to system i/o routines
       # Inputs: 0) ExifTool ref, 1) file name in CharSetFileName, 2) flag to force conversion
       # Returns: true if Windows Unicode routines should be used (in which case
      @@ -3898,8 +4092,9 @@
           my ($self, $fh, $file, $mode) = @_;
       
           $file =~ s/^([\s&])/.\/$1/; # protect leading whitespace or ampersand
      -    # default to read mode ('<') unless input is a pipe
      -    $mode = ($file =~ /\|$/ ? '' : '<') unless $mode;
      +    # default to read mode ('<') unless input is a trusted pipe
      +    $mode = (($file =~ /\|$/ and $$self{TRUST_PIPE}) ? '' : '<') unless $mode;
      +    delete $$self{TRUST_PIPE};
           if ($mode) {
               if ($self->EncodeFileName($file)) {
                   # handle Windows Unicode file name
      @@ -3919,7 +4114,9 @@
                   }
                   my $share = 0;
                   eval {
      -                $share = Win32API::File::FILE_SHARE_READ() unless $access & Win32API::File::GENERIC_WRITE();
      +                unless ($access & Win32API::File::GENERIC_WRITE()) {
      +                    $share = Win32API::File::FILE_SHARE_READ() | Win32API::File::FILE_SHARE_WRITE();
      +                }
                   };
                   my $wh = eval { Win32API::File::CreateFileW($file, $access, $share, [], $create, 0, []) };
                   return undef unless $wh;
      @@ -3955,7 +4152,9 @@
               return 0 unless $wh;
               eval { Win32API::File::CloseHandle($wh) };
           } else {
      -        return -e $file;
      +        # (named pipes already exist, but we pretend that they don't
      +        #  so we will be able to write them, so test with for pipe -p)
      +        return(-e $file and not -p $file);
           }
           return 1;
       }
      @@ -3990,7 +4189,14 @@
           # open file by name if necessary
           unless (ref $file) {
               local *FH;
      -        $self->Open(\*FH, $file) or $self->Warn("GetFileTime error for '${file}'"), return ();
      +        unless ($self->Open(\*FH, $file)) {
      +            if ($self->IsDirectory($file)) {
      +                my @rtn = (stat $file)[8, 9, 10];
      +                return @rtn if defined $rtn[0];
      +            }
      +            $self->Warn("GetFileTime error for '${file}'");
      +            return ();
      +        }
               $file = *FH;  # (not \*FH, so *FH will be kept open until $file goes out of scope)
           }
           # on Windows, try to work around incorrect file times when daylight saving time is in effect
      @@ -4051,6 +4257,7 @@
           $$self{REQ_TAG_LOOKUP}  = { };
           $$self{EXCL_TAG_LOOKUP} = { };
           $$self{IO_TAG_LIST} = undef;
      +    delete $$self{EXCL_XMP_LOOKUP};
       
           # handle our input arguments
           while (@_) {
      @@ -4134,7 +4341,11 @@
           # generate lookup for excluded tags
           if ($$options{Exclude}) {
               foreach (@{$$options{Exclude}}) {
      -            /([-\w]+)#?$/ and $$self{EXCL_TAG_LOOKUP}{lc($1)} = 1;
      +            /([-\w]+)#?$/ and $$self{EXCL_TAG_LOOKUP}{lc $1} = 1;
      +            if (/(xmp-.*:[-\w]+)#?/i) {
      +                $$self{EXCL_XMP_LOOKUP} or $$self{EXCL_XMP_LOOKUP} = { };
      +                $$self{EXCL_XMP_LOOKUP}{lc $1} = 1;
      +            }
               }
               # exclude list is used only for EXCL_TAG_LOOKUP when TAGS_FROM_FILE is set
               undef $$options{Exclude} if $$self{TAGS_FROM_FILE};
      @@ -4142,6 +4353,22 @@
       }
       
       #------------------------------------------------------------------------------
      +# Does group name match the tag ID?
      +# Inputs: 0) tag ID, 1) group name (with "ID-" removed)
      +# Returns: true on success
      +sub IsSameID($$)
      +{
      +    my ($id, $grp) = @_;
      +    return 1 if $grp eq $id;    # decimal ID's or raw ID's
      +    if ($id =~ /^\d+$/) {       # numerical numerical ID's may be in hex
      +        return 1 if $grp =~ s/^0x0*// and $grp eq sprintf('%x', $id);
      +    } else {                    # other ID's may conform to ExifTool group name conventions
      +        return 1 if $id =~ s/([^-_A-Za-z0-9])/sprintf('%.2x',ord $1)/ge and $grp eq $id;
      +    }
      +    return 0;
      +}
      +
      +#------------------------------------------------------------------------------
       # Get list of tags in specified group
       # Inputs: 0) ExifTool ref, 1) group spec, 2) tag key or reference to list of tag keys
       # Returns: list of matching tags in list context, or first match in scalar context
      @@ -4152,40 +4379,41 @@
           my ($self, $group, $tagList) = @_;
           $tagList = [ $tagList ] unless ref $tagList;
           my ($tag, @matches);
      -    if ($group =~ /:/) {
      -        # check each group name individually (eg. "Author:1IPTC")
      -        my @grps = split ':', lc $group;
      -        my (@fmys, $g);
      -        for ($g=0; $g<@grps; ++$g) {
      -            $fmys[$g] = $1 if $grps[$g] =~ s/^(\d+)//;
      -            $grps[$g] = '' if $grps[$g] eq 'copy0'; # accept 'Copy0' for primary tag
      +    # check each group name individually (eg. "Author:1IPTC")
      +    my @grps = split ':', $group;
      +    my (@fmys, $g);
      +    for ($g=0; $g<@grps; ++$g) {
      +        if ($grps[$g] =~ s/^(\d*)(id-)?//i) {
      +            $fmys[$g] = $1 if length $1;
      +            if ($2) {
      +                $fmys[$g] = 7;
      +                next;   # (don't convert tag ID's to lower case)
      +            }
               }
      -        foreach $tag (@$tagList) {
      -            my @groups = $self->GetGroup($tag, -1);
      -            for ($g=0; $g<@grps; ++$g) {
      -                my $grp = $grps[$g];
      -                next if $grp eq '*' or $grp eq 'all';
      -                if (defined $fmys[$g]) {
      -                    my $f = $fmys[$g];
      -                    last unless defined $groups[$f] and $grp eq lc $groups[$f];
      +        $grps[$g] = lc $grps[$g];
      +        $grps[$g] = '' if $grps[$g] eq 'copy0'; # accept 'Copy0' for primary tag
      +    }
      +    foreach $tag (@$tagList) {
      +        my @groups = $self->GetGroup($tag, -1);
      +        for ($g=0; $g<@grps; ++$g) {
      +            my $grp = $grps[$g];
      +            next if $grp eq '*' or $grp eq 'all';
      +            my $f;
      +            if (defined($f = $fmys[$g])) {
      +                last unless defined $groups[$f];
      +                if ($f == 7) {
      +                    next if IsSameID($self->GetTagID($tag), $grp);
                       } else {
      -                    last unless grep /^$grp$/i, @groups;
      +                    next if $grp eq lc $groups[$f];
                       }
      -            }
      -            if ($g == @grps) {
      -                return $tag unless wantarray;
      -                push @matches, $tag;
      +                last;
      +            } else {
      +                last unless grep /^$grp$/i, @groups;
                   }
               }
      -    } else {
      -        my $family = ($group =~ s/^(\d+)//) ? $1 : -1;
      -        $group = '' if lc $group eq 'copy0';        # accept 'Copy0' for primary tag
      -        foreach $tag (@$tagList) {
      -            my @groups = $self->GetGroup($tag, $family);
      -            if (grep(/^$group$/i, @groups)) {
      -                return $tag unless wantarray;
      -                push @matches, $tag;
      -            }
      +        if ($g == @grps) {
      +            return $tag unless wantarray;
      +            push @matches, $tag;
               }
           }
           return wantarray ? @matches : $matches[0];
      @@ -4644,13 +4872,13 @@
           my ($module, $prefix, $tagID);
           unless (ref $add) {
               ($prefix = $add) =~ s/.*:://;
      -        $prefix .= '::';
               $module = $add;
               $add .= '::Composite';
               no strict 'refs';
               $add = \%$add;
      +        $prefix .= '-';
           } else {
      -        $prefix = 'UserDefined::';
      +        $prefix = 'UserDefined-';
           }
           my $defaultGroups = $$add{GROUPS};
           my $compTable = GetTagTable('Image::ExifTool::Composite');
      @@ -5365,35 +5593,38 @@
       
       #------------------------------------------------------------------------------
       # Apply filter to value(s) if necessary
      -# Inputs: 0) filter expression, 1-N) references to values(s) to filter
      -# Returns: nothing, but changes values if necessary
      -sub Filter($@)
      +# Inputs: 0) ExifTool ref, 1) filter expression, 2) reference to value to filter
      +# Returns: true unless a filter returned undef; changes value if necessary
      +sub Filter($$$)
       {
           local $_;
      -    my $filter = shift;
      -    return unless defined $filter;
      -    while (@_) {
      -        my $valPt = shift;
      -        next unless defined $$valPt;
      -        if (not ref $$valPt) {
      -            $_ = $$valPt;
      -            #### eval Filter ($_)
      -            eval $filter;
      -            $$valPt = $_ if defined $_;
      -        } elsif (ref $$valPt eq 'SCALAR') {
      -            my $val = $$$valPt; # make a copy to avoid filtering twice
      -            Filter($filter, \$val);
      -            $$valPt = \$val;
      -        } elsif (ref $$valPt eq 'ARRAY') {
      -            my @val = @{$$valPt}; # make a copy to avoid filtering twice
      -            Filter($filter, \$_) foreach @val;
      -            $$valPt = \@val;
      -        } elsif (ref $$valPt eq 'HASH') {
      -            my %val = %{$$valPt}; # make a copy to avoid filtering twice
      -            Filter($filter, \$val{$_}) foreach keys %val;
      -            $$valPt = \%val;
      -        }
      +    my ($self, $filter, $valPt) = @_;
      +    return 1 unless defined $filter and defined $$valPt;
      +    my $rtnVal;
      +    if (not ref $$valPt) {
      +        $_ = $$valPt;
      +        #### eval Filter ($_, $self)
      +        eval $filter;
      +        if (defined $_) {
      +            $$valPt = $_;
      +            $rtnVal = 1;
      +        }
      +    } elsif (ref $$valPt eq 'SCALAR') {
      +        my $val = $$$valPt; # make a copy to avoid filtering twice
      +        $rtnVal = $self->Filter($filter, \$val);
      +        $$valPt = \$val;
      +    } elsif (ref $$valPt eq 'ARRAY') {
      +        my @val = @{$$valPt}; # make a copy to avoid filtering twice
      +        $self->Filter($filter, \$_) and $rtnVal = 1 foreach @val;
      +        $$valPt = \@val;
      +    } elsif (ref $$valPt eq 'HASH') {
      +        my %val = %{$$valPt}; # make a copy to avoid filtering twice
      +        $self->Filter($filter, \$val{$_}) and $rtnVal = 1 foreach keys %val;
      +        $$valPt = \%val;
      +    } else {
      +        $rtnVal = 1;
           }
      +    return $rtnVal;
       }
       
       #------------------------------------------------------------------------------
      @@ -5456,6 +5687,38 @@
                   unshift @a, 1 while @a < 3; # add month and day if necessary
                   unshift @a, 0 while @a < 6; # add h,m,s if necessary
                   $a[4] -= 1;                 # base month is 1
      +            # parse our %f fractional seconds first (and round up seconds if necessary)
      +            # - if there are multiple %f codes, they all get the same number of digits as the first
      +            if ($fmt =~ /%\.?(\d*)f/) {
      +                my $dig = $1;
      +                my $frac = $date =~ /(\.\d+)/ ? $1 : '';
      +                if (not $frac) {
      +                    $frac = '.' . ('0' x $dig) if $dig;
      +                } elsif (length $dig) {
      +                    if ($dig+1 > length($frac)) {
      +                        $frac .= '0' x ($dig+1-length($frac));
      +                    } elsif ($dig+1 < length($frac)) {
      +                        $frac = sprintf("%.${dig}f", $frac);
      +                        while ($frac =~ s/^(\d)// and $1 ne '0') {
      +                            # this is a pain, but we must round up to the next second
      +                            ++$a[0] < 60 and last;
      +                            $a[0] = 0;
      +                            ++$a[1] < 60 and last;
      +                            $a[1] = 0;
      +                            ++$a[2] < 24 and last;
      +                            $a[2] = 0;
      +                            require 'Image/ExifTool/Shift.pl';
      +                            ++$a[3] <= DaysInMonth($a[4]+1, $a[5]) and last;
      +                            $a[3] = 1;
      +                            ++$a[4] < 12 and last;
      +                            $a[4] = 0;
      +                            ++$a[5];
      +                            last; # (this was a goto)
      +                        }
      +                    } 
      +                }
      +                $fmt =~ s/(^|[^%])((%%)*)%\.?\d*f/$1$2$frac/g;
      +            }
                   # parse %z and %s ourself (to handle time zones properly)
                   if ($fmt =~ /%[sz]/) {
                       # use system time zone unless otherwise specified
      @@ -5594,21 +5857,29 @@
       
       #------------------------------------------------------------------------------
       # Get Unix time from EXIF-formatted date/time string with optional timezone
      -# Inputs: 0) EXIF date/time string, 1) non-zero if time is local
      +# Inputs: 0) EXIF date/time string, 1) non-zero if time is local, or 2 to assume UTC
       # Returns: Unix time (seconds since 0:00 GMT Jan 1, 1970) or undefined on error
       sub GetUnixTime($;$)
       {
           my ($timeStr, $isLocal) = @_;
           return 0 if $timeStr eq '0000:00:00 00:00:00';
           my @tm = ($timeStr =~ /^(\d+):(\d+):(\d+)\s+(\d+):(\d+):(\d+)(.*)/);
      -    return undef unless @tm == 7 and eval { require Time::Local };
      +    return undef unless @tm == 7;
      +    unless (eval { require Time::Local }) {
      +        warn "Time::Local is not installed\n";
      +        return undef;
      +    }
           my ($tzStr, $tzSec) = (pop(@tm), 0);
           # use specified timezone offset (if given) instead of local system time
           # if we are converting a local time value
      -    if ($isLocal and $tzStr =~ /(?:Z|([-+])(\d+):(\d+))/i) {
      -        # use specified timezone if one exists
      -        $tzSec = ($2 * 60 + $3) * ($1 eq '-' ? -60 : 60) if $1;
      -        undef $isLocal; # convert using GMT corrected for specified timezone
      +    if ($isLocal) {
      +        if ($tzStr =~ /(?:Z|([-+])(\d+):(\d+))/i) {
      +            # use specified timezone if one exists
      +            $tzSec = ($2 * 60 + $3) * ($1 eq '-' ? -60 : 60) if $1;
      +            undef $isLocal; # convert using GMT corrected for specified timezone
      +        } elsif ($isLocal eq '2') {
      +            undef $isLocal;
      +        }
           }
           $tm[1] -= 1;        # convert month
           @tm = reverse @tm;  # change to order required by timelocal()
      @@ -5626,12 +5897,12 @@
       {
           my $val = shift;
           $val < 2048 and return "$val bytes";
      -    $val < 10240 and return sprintf('%.1f kB', $val / 1024);
      -    $val < 2097152 and return sprintf('%.0f kB', $val / 1024);
      -    $val < 10485760 and return sprintf('%.1f MB', $val / 1048576);
      -    $val < 2147483648 and return sprintf('%.0f MB', $val / 1048576);
      -    $val < 10737418240 and return sprintf('%.1f GB', $val / 1073741824);
      -    return sprintf('%.0f GB', $val / 1073741824);
      +    $val < 10240 and return sprintf('%.1f KiB', $val / 1024);
      +    $val < 2097152 and return sprintf('%.0f KiB', $val / 1024);
      +    $val < 10485760 and return sprintf('%.1f MiB', $val / 1048576);
      +    $val < 2147483648 and return sprintf('%.0f MiB', $val / 1048576);
      +    $val < 10737418240 and return sprintf('%.1f GiB', $val / 1073741824);
      +    return sprintf('%.0f GiB', $val / 1073741824);
       }
       
       #------------------------------------------------------------------------------
      @@ -5762,6 +6033,8 @@
                   $type = 'Samsung';
               } elsif ($buff =~ /8db42d694ccc418790edff439fe026bf$/s) {
                   $type = 'Insta360';
      +        } elsif ($buff =~ m(\0{6}/NIKON APP$)) {
      +            $type = 'NikonApp';
               }
               last;
           }
      @@ -5795,8 +6068,11 @@
           for (;;) { # loop through all trailers
               my ($proc, $outBuff);
               if ($dirName eq 'Insta360') {
      -            require "Image/ExifTool/QuickTimeStream.pl";
      +            require 'Image/ExifTool/QuickTimeStream.pl';
                   $proc = 'Image::ExifTool::QuickTime::ProcessInsta360';
      +        } elsif ($dirName eq 'NikonApp') {
      +            require Image::ExifTool::Nikon;
      +            $proc = 'Image::ExifTool::Nikon::ProcessNikonApp';
               } else {
                   require "Image/ExifTool/$dirName.pm";
                   $proc = "Image::ExifTool::${dirName}::Process$dirName";
      @@ -5957,9 +6233,10 @@
           my $out = $$options{TextOut};
           my $fast = $$options{FastScan} || 0;
           my $raf = $$dirInfo{RAF};
      +    my $req = $$self{REQ_TAG_LOOKUP};
           my $htmlDump = $$self{HTML_DUMP};
           my %dumpParms = ( Out => $out );
      -    my ($success, $wantTrailer, $trailInfo, $foundSOS);
      +    my ($success, $wantTrailer, $trailInfo, $foundSOS, %jumbfChunk);
           my (@iccChunk, $iccChunkCount, $iccChunksTotal, @flirChunk, $flirCount, $flirTotal);
           my ($preview, $scalado, @dqt, $subSampling, $dumpEnd, %extendedXMP);
       
      @@ -5970,7 +6247,7 @@
               $$self{FILE_TYPE} = 'EXV';
           }
           my $appBytes = 0;
      -    my $calcImageLen = $$self{REQ_TAG_LOOKUP}{jpegimagelength};
      +    my $calcImageLen = $$req{jpegimagelength};
           if ($$options{RequestAll} and $$options{RequestAll} > 2) {
               $calcImageLen = 1;
           }
      @@ -6003,6 +6280,7 @@
               my $marker = $nextMarker;
               my $segDataPt = $nextSegDataPt;
               my $segPos = $nextSegPos;
      +        my $skipped;
               undef $nextMarker;
               undef $nextSegDataPt;
       #
      @@ -6012,11 +6290,13 @@
                   # read up to next marker (JPEG markers begin with 0xff)
                   my $buff;
                   $raf->ReadLine($buff) or last;
      +            $skipped = length($buff) - 1;
                   # JPEG markers can be padded with unlimited 0xff's
                   for (;;) {
                       $raf->Read($ch, 1) or last Marker;
                       $nextMarker = ord($ch);
                       last unless $nextMarker == 0xff;
      +                ++$skipped;
                   }
                   # read segment data if it exists
                   if (not defined $markerLenBytes{$nextMarker}) {
      @@ -6043,6 +6323,14 @@
               # set some useful variables for the current segment
               my $markerName = JpegMarkerName($marker);
               $$path[$pn] = $markerName;
      +        # issue warning if we skipped some garbage
      +        if ($skipped and not $foundSOS and $markerName ne 'SOS') {
      +            $self->Warn("Skipped unknown $skipped bytes after JPEG $markerName segment", 1);
      +            if ($htmlDump) {
      +                $self->HDump($nextSegPos-4-$skipped, $skipped, "[unknown $skipped bytes]", undef, 0x08);
      +                $dumpEnd = $nextSegPos - 4;
      +            }
      +        }
       #
       # parse the current segment
       #
      @@ -6104,7 +6392,7 @@
                   } else {
                       $self->Warn('Missing JPEG SOS');
                   }
      -            if ($$self{REQ_TAG_LOOKUP}{trailer}) {
      +            if ($$req{trailer}) {
                       # read entire trailer into memory
                       if ($raf->Seek(0,2)) {
                           my $len = $raf->Tell() - $pos;
      @@ -6238,7 +6526,7 @@
                       next if $trailInfo or $wantTrailer or $verbose > 2 or $htmlDump;
                   }
                   # must scan to EOI if Validate or JpegCompressionFactor used
      -            next if $$options{Validate} or $calcImageLen or $$self{REQ_TAG_LOOKUP}{trailer};
      +            next if $$options{Validate} or $calcImageLen or $$req{trailer};
                   # nothing interesting to parse after start of scan (SOS)
                   $success = 1;
                   last;   # all done parsing file
      @@ -6254,11 +6542,11 @@
                   next;
               } elsif ($marker == 0xdb and length($$segDataPt) and    # DQT
                   # save the DQT data only if JPEGDigest has been requested
      -            # (Note: since we aren't checking the RequestAll API option here, the application
      +            # (Note: since we aren't checking the API RequestAll option here, the application
                   #  must use the RequestTags option to generate these tags if they have not been
                   #  specifically requested.  The reason is that there is too much overhead involved
                   #  in the calculation of this tag to make this worth the CPU time.)
      -            ($$self{REQ_TAG_LOOKUP}{jpegdigest} or $$self{REQ_TAG_LOOKUP}{jpegqualityestimate}
      +            ($$req{jpegdigest} or $$req{jpegqualityestimate}
                   or ($$options{RequestAll} and $$options{RequestAll} > 2)))
               {
                   my $num = unpack('C',$$segDataPt) & 0x0f;   # get table index
      @@ -6376,7 +6664,7 @@
                       }
                       if ($start and $plen and IsInt($start) and IsInt($plen) and
                           $start + $plen > $$self{EXIF_POS} + length($$self{EXIF_DATA}) and
      -                    ($$self{REQ_TAG_LOOKUP}{previewimage} or
      +                    ($$req{previewimage} or
                           # (extracted normally, so check Binary option)
                           ($$options{Binary} and not $$self{EXCL_TAG_LOOKUP}{previewimage})))
                       {
      @@ -6582,6 +6870,28 @@
                       # extract the Stim information (it is in standard TIFF format)
                       my $tagTablePtr = GetTagTable('Image::ExifTool::Stim::Main');
                       $self->ProcessTIFF(\%dirInfo, $tagTablePtr);
      +            } elsif ($$segDataPt =~ /^_JPSJPS_/) {
      +                $dumpType = 'JPS';
      +                $self->OverrideFileType('JPS') if $$self{FILE_TYPE} eq 'JPEG';
      +                SetByteOrder('MM');
      +                my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::JPS');
      +                $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
      +            } elsif ($$self{Make} eq 'DJI') {
      +                $dumpType = 'DJI ThermalData';
      +                # add this data to the combined data if it exists
      +                my $dataPt = $segDataPt;
      +                if (defined $combinedSegData) {
      +                    $combinedSegData .= $$segDataPt;
      +                    $dataPt = \$combinedSegData;
      +                }
      +                if ($nextMarker == $marker) {
      +                    $combinedSegData = $$segDataPt unless defined $combinedSegData;
      +                } else {
      +                    # process DJI FLIR thermal data
      +                    my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
      +                    $self->HandleTag($tagTablePtr, 'APP3', $$dataPt);
      +                    undef $combinedSegData;
      +                }
                   } elsif ($$segDataPt =~ /^\xff\xd8\xff\xdb/) {
                       $dumpType = 'PreviewImage'; # (Samsung, HP, BenQ)
                       $preview = $$segDataPt;
      @@ -6616,6 +6926,11 @@
                       # set flag if this is the last FPXR segment
                       $dirInfo{LastFPXR} = not ($nextMarker==$marker and $$nextSegDataPt=~/^FPXR\0/),
                       $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
      +            } elsif ($$self{Make} eq 'DJI' and $$segDataPt =~ /^\xaa\x55\x12\x06/) {
      +                $dumpType = 'DJI ThermalParams';
      +                DirStart(\%dirInfo, 0, 0);
      +                my $tagTablePtr = GetTagTable('Image::ExifTool::DJI::ThermalParams');
      +                $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
                   } elsif ($preview) {
                       # continued Samsung S1060 preview from APP3
                       $dumpType = 'PreviewImage';
      @@ -6638,6 +6953,10 @@
                   } elsif ($$segDataPt =~ /^ssuniqueid\0/) {
                       my $tagTablePtr = GetTagTable('Image::ExifTool::Samsung::APP5');
                       $self->HandleTag($tagTablePtr, 'ssuniqueid', substr($$segDataPt, 11));
      +            } elsif ($$self{Make} eq 'DJI') {
      +                $dumpType = 'DJI ThermalCal';
      +                my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
      +                $self->HandleTag($tagTablePtr, 'APP5', $$segDataPt);
                   } elsif ($preview) {
                       $dumpType = 'PreviewImage';
                       $preview .= $$segDataPt;
      @@ -6673,6 +6992,10 @@
                       my $tagTablePtr = GetTagTable('Image::ExifTool::GoPro::GPMF');
                       DirStart(\%dirInfo, 6);
                       $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
      +            } elsif ($$segDataPt =~ /^DTAT\0\0.\{/s) {
      +                $dumpType = 'DJI_DTAT';
      +                my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
      +                $self->HandleTag($tagTablePtr, 'APP6', $$segDataPt);
                   }
               } elsif ($marker == 0xe7) {         # APP7 (Pentax, Huawei, Qualcomm)
                   if ($$segDataPt =~ /^PENTAX \0(II|MM)/) {
      @@ -6742,7 +7065,7 @@
                       # (with number of elements N = ImageHeight / 16 - 1, ref PH/NealKrawetz)
                       $xtra = 'segment (N=' . unpack('x6N', $$segDataPt) . ')';
                   }
      -        } elsif ($marker == 0xeb) {         # APP11 (JPEG-HDR)
      +        } elsif ($marker == 0xeb) {         # APP11 (JPEG-HDR, JUMBF)
                   if ($$segDataPt =~ /^HDR_RI /) {
                       $dumpType = 'JPEG-HDR';
                       my $dataPt = $segDataPt;
      @@ -6762,6 +7085,47 @@
                           $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
                           undef $combinedSegData;
                       }
      +            } elsif ($$segDataPt =~ /^(JP..)/s and length($$segDataPt) >= 16) {
      +                # JUMBF extension marker
      +                my $hdr = $1;
      +                $dumpType = 'JUMBF';
      +                SetByteOrder('MM');
      +                my $seq = Get32u($segDataPt, 4) - 1; # (start from 0)
      +                my $len = Get32u($segDataPt, 8);
      +                my $type = substr($$segDataPt, 12, 4);
      +                my $hdrLen;
      +                if ($len == 1 and length($$segDataPt) >= 24) {
      +                    $len = Get64u($$segDataPt, 16);
      +                    $hdrLen = 16;
      +                } else {
      +                    $hdrLen = 8;
      +                }
      +                $jumbfChunk{$type} or $jumbfChunk{$type} = [ ];
      +                if ($len < $hdrLen) {
      +                    $self->Warn('Invalid JUMBF segment');
      +                } elsif ($seq < 0) {
      +                    $self->Warn('Invalid JUMBF sequence number');
      +                } elsif (defined $jumbfChunk{$type}[$seq]) {
      +                    $self->Warn('Duplicate JUMBF sequence number');
      +                } else {
      +                    # add to list of JUMBF chunks
      +                    $jumbfChunk{$type}[$seq] = substr($$segDataPt, 8 + $hdrLen);
      +                    # check to see if we have a complete JUMBF box
      +                    my $size = $hdrLen;
      +                    foreach (@{$jumbfChunk{$type}}) {
      +                        defined $_ or $size = 0, last;
      +                        $size += length $_;
      +                    }
      +                    if ($size == $len) {
      +                        my $buff = join '', substr($$segDataPt,8,$hdrLen), @{$jumbfChunk{$type}};
      +                        $dirInfo{DataPt} = \$buff;
      +                        $dirInfo{DataPos} = $segPos + 8; # (shows correct offsets for single-segment JUMBF)
      +                        $dirInfo{DataLen} = $dirInfo{DirLen} = $size;
      +                        my $tagTablePtr = GetTagTable('Image::ExifTool::Jpeg2000::Main');
      +                        $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
      +                        delete $jumbfChunk{$type};
      +                    }
      +                }
                   }
               } elsif ($marker == 0xec) {         # APP12 (Ducky, Picture Info)
                   if ($$segDataPt =~ /^Ducky/) {
      @@ -6813,7 +7177,7 @@
               } elsif ($marker == 0xee) {         # APP14 (Adobe)
                   if ($$segDataPt =~ /^Adobe/) {
                       # extract as a block if requested, or if copying tags from file
      -                if ($$self{REQ_TAG_LOOKUP}{adobe} or
      +                if ($$req{adobe} or
                           # (not extracted normally, so check TAGS_FROM_FILE)
                           ($$self{TAGS_FROM_FILE} and not $$self{EXCL_TAG_LOOKUP}{adobe}))
                       {
      @@ -6916,6 +7280,7 @@
               Image::ExifTool::JPEGDigest::Calculate($self, \@dqt, $subSampling);
           }
           # issue necessary warnings
      +    $self->Warn('Invalid JUMBF size or missing JUMBF chunk') if %jumbfChunk;
           $self->Warn('Incomplete ICC_Profile record', 1) if defined $iccChunkCount;
           $self->Warn('Incomplete FLIR record', 1) if defined $flirCount;
           $self->Warn('Error reading PreviewImage', 1) if $$self{PreviewError};
      @@ -7015,15 +7380,20 @@
               $$self{EXIF_DATA} = '';
           }
           unless (defined $$self{EXIF_DATA}) {
      +        # set default byte order for creating new GPS in CR3 images
      +        my $defaultByteOrder;
      +        if ($$dirInfo{DirName} and $$dirInfo{DirName} eq 'GPS') {
      +            $defaultByteOrder = $$self{SaveExifByteOrder};
      +        }
               # create TIFF information from scratch
      -        if ($self->SetPreferredByteOrder() eq 'MM') {
      +        if ($self->SetPreferredByteOrder($defaultByteOrder) eq 'MM') {
                   $$self{EXIF_DATA} = "MM\0\x2a\0\0\0\x08";
               } else {
                   $$self{EXIF_DATA} = "II\x2a\0\x08\0\0\0";
               }
           }
      -    $$self{FIRST_EXIF_POS} = $base + $$self{BASE} unless defined $$self{FIRST_EXIF_POS};
           $$self{EXIF_POS} = $base + $$self{BASE};
      +    $$self{FIRST_EXIF_POS} = $$self{EXIF_POS} unless defined $$self{FIRST_EXIF_POS};
           $dataPt = \$$self{EXIF_DATA};
       
           # set byte ordering
      @@ -7036,6 +7406,7 @@
         # no longer do this because various files use different values
         # (TIFF=0x2a, RW2/RWL=0x55, HDP=0xbc, BTF=0x2b, ORF=0x4f52/0x5352/0x????)
         #  return 0 unless $identifier == 0x2a;
      +    $self->Warn('Invalid magic number in EXIF TIFF header') if $fileType eq 'APP1' and $identifier != 0x2a;
       
           # get offset to IFD0
           return 0 if length $$dataPt < 8;
      @@ -7078,7 +7449,11 @@
                       # this looks like a BigTIFF image
                       $raf->Seek(0);
                       require Image::ExifTool::BigTIFF;
      -                return 1 if Image::ExifTool::BigTIFF::ProcessBTF($self, $dirInfo);
      +                my $result = Image::ExifTool::BigTIFF::ProcessBTF($self, $dirInfo);
      +                if ($result) {
      +                    $self->FoundTag(PageCount => $$self{PageCount}) if $$self{MultiPage};
      +                    return 1;
      +                }
                   } elsif ($identifier == 0x4f52 or $identifier == 0x5352) {
                       # Olympus ORF image (set FileType now because base type is 'ORF')
                       $self->SetFileType($fileType = 'ORF');
      @@ -7171,6 +7546,9 @@
                   # override whatever FileType we set since we now know it is DNG
                   $self->OverrideFileType($$self{TIFF_TYPE} = 'DNG');
               }
      +        if ($$self{TIFF_TYPE} eq 'TIFF') {
      +            $self->FoundTag(PageCount => $$self{PageCount}) if $$self{MultiPage};
      +        }
               return 1;
           }
       #
      @@ -7495,7 +7873,7 @@
       
       #------------------------------------------------------------------------------
       # Get Metadata path
      -# Inputs: 0) Exiftool object ref
      +# Inputs: 0) ExifTool object ref
       # Return: Metadata path string
       sub MetadataPath($)
       {
      @@ -7578,7 +7956,8 @@
                   }
               }
               if ($$tagInfo{Unknown} and not $$self{OPTIONS}{Unknown} and
      -            not $$self{OPTIONS}{Verbose} and not $$self{HTML_DUMP})
      +            not $$self{OPTIONS}{Verbose} and not $$self{OPTIONS}{Validate} and
      +            not $$self{HTML_DUMP})
               {
                   # don't return Unknown tags unless that option is set
                   return undef;
      @@ -7622,7 +8001,7 @@
       # Returns: tagInfo ref
       # Notes: - will not override existing entry in table
       # - info need contain no entries when this routine is called
      -# - tag name is made valid if necessary
      +# - tag name is cleaned if necessary
       sub AddTagToTable($$;$$)
       {
           my ($tagTablePtr, $tagID, $tagInfo, $noPrefix) = @_;
      @@ -7687,7 +8066,7 @@
           my ($subdir, $format, $noTagInfo, $rational);
       
           if ($tagInfo) {
      -        $subdir = $$tagInfo{SubDirectory}
      +        $subdir = $$tagInfo{SubDirectory};
           } else {
               return undef unless $verbose;
               $tagInfo = { Name => "tag $tag" };  # create temporary tagInfo hash
      @@ -8137,7 +8516,7 @@
           }
           my $indent = substr($$self{INDENT}, 0, -2);
           my $out = $$self{OPTIONS}{TextOut};
      -    my $str = $entries ? " with $entries entries" : '';
      +    my $str = ($entries or defined $entries and not $size) ? " with $entries entries" : '';
           $str .= ", $size bytes" if $size;
           print $out "$indent+ [$name directory$str]\n";
       }
      @@ -8411,6 +8790,7 @@
               # read value now if necessary
               unless (defined $val and not $$tagInfo{SubDirectory}) {
                   $val = ReadValue($dataPt, $entry+$offset, $format, $count, $more, \$rational);
      +            next unless defined $val;
                   $mask = $$tagInfo{Mask};
                   $val = ($val & $mask) >> $$tagInfo{BitShift} if $mask;
               }
      @@ -8512,7 +8892,8 @@
               $file = $config;
           }
           # also check executable directory unless path is absolute
      -    -r $file or $config =~ /^\// or $file = ($0 =~ /(.*[\\\/])/ ? $1 : './') . $config;
      +    $exeDir = ($0 =~ /(.*)[\\\/]/) ? $1 : '.' unless defined $exeDir;
      +    -r $file or $config =~ /^\// or $file = "$exeDir/$config";
           unless (-r $file) {
               warn("Config file not found\n") if defined $Image::ExifTool::configFile;
               last;
      diff -Nru libimage-exiftool-perl-11.88/lib/Image/ExifTool.pod libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool.pod
      --- libimage-exiftool-perl-11.88/lib/Image/ExifTool.pod	2020-02-20 14:13:02.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/lib/Image/ExifTool.pod	2022-02-09 12:08:06.000000000 +0000
      @@ -5,7 +5,7 @@
       #
       # URL:          https://exiftool.org/
       #
      -# Legal:        Copyright (c) 2003-2020, Phil Harvey (philharvey66 at gmail.com)
      +# Legal:        Copyright (c) 2003-2022, Phil Harvey (philharvey66 at gmail.com)
       #               This library is free software; you can redistribute it and/or
       #               modify it under the same terms as Perl itself.
       #------------------------------------------------------------------------------
      @@ -65,46 +65,48 @@
       
         File Types
         ------------+-------------+-------------+-------------+------------
      -  3FR   r     | DR4   r/w/c | ITC   r     | ODP   r     | RIFF  r
      -  3G2   r/w   | DSS   r     | J2C   r     | ODS   r     | RSRC  r
      -  3GP   r/w   | DV    r     | JNG   r/w   | ODT   r     | RTF   r
      -  A     r     | DVB   r/w   | JP2   r/w   | OFR   r     | RW2   r/w
      -  AA    r     | DVR-MS r    | JPEG  r/w   | OGG   r     | RWL   r/w
      -  AAE   r     | DYLIB r     | JSON  r     | OGV   r     | RWZ   r
      -  AAX   r/w   | EIP   r     | K25   r     | OPUS  r     | RM    r
      -  ACR   r     | EPS   r/w   | KDC   r     | ORF   r/w   | SEQ   r
      -  AFM   r     | EPUB  r     | KEY   r     | OTF   r     | SKETCH r
      -  AI    r/w   | ERF   r/w   | LA    r     | PAC   r     | SO    r
      -  AIFF  r     | EXE   r     | LFP   r     | PAGES r     | SR2   r/w
      -  APE   r     | EXIF  r/w/c | LNK   r     | PBM   r/w   | SRF   r
      -  ARQ   r/w   | EXR   r     | LRV   r/w   | PCD   r     | SRW   r/w
      -  ARW   r/w   | EXV   r/w/c | M2TS  r     | PCX   r     | SVG   r
      -  ASF   r     | F4A/V r/w   | M4A/V r/w   | PDB   r     | SWF   r
      -  AVI   r     | FFF   r/w   | MAX   r     | PDF   r/w   | THM   r/w
      -  AVIF  r/w   | FITS  r     | MEF   r/w   | PEF   r/w   | TIFF  r/w
      -  AZW   r     | FLA   r     | MIE   r/w/c | PFA   r     | TORRENT r
      -  BMP   r     | FLAC  r     | MIFF  r     | PFB   r     | TTC   r
      -  BPG   r     | FLIF  r/w   | MKA   r     | PFM   r     | TTF   r
      -  BTF   r     | FLV   r     | MKS   r     | PGF   r     | TXT   r
      -  CHM   r     | FPF   r     | MKV   r     | PGM   r/w   | VCF   r
      -  COS   r     | FPX   r     | MNG   r/w   | PLIST r     | VRD   r/w/c
      -  CR2   r/w   | GIF   r/w   | MOBI  r     | PICT  r     | VSD   r
      -  CR3   r/w   | GPR   r/w   | MODD  r     | PMP   r     | WAV   r
      -  CRM   r/w   | GZ    r     | MOI   r     | PNG   r/w   | WDP   r/w
      -  CRW   r/w   | HDP   r/w   | MOS   r/w   | PPM   r/w   | WEBP  r
      -  CS1   r/w   | HDR   r     | MOV   r/w   | PPT   r     | WEBM  r
      -  CSV   r     | HEIC  r/w   | MP3   r     | PPTX  r     | WMA   r
      -  DCM   r     | HEIF  r/w   | MP4   r/w   | PS    r/w   | WMV   r
      -  DCP   r/w   | HTML  r     | MPC   r     | PSB   r/w   | WTV   r
      -  DCR   r     | ICC   r/w/c | MPG   r     | PSD   r/w   | WV    r
      -  DFONT r     | ICS   r     | MPO   r/w   | PSP   r     | X3F   r/w
      -  DIVX  r     | IDML  r     | MQV   r/w   | QTIF  r/w   | XCF   r
      -  DJVU  r     | IIQ   r/w   | MRW   r/w   | R3D   r     | XLS   r
      -  DLL   r     | IND   r/w   | MXF   r     | RA    r     | XLSX  r
      -  DNG   r/w   | INSP  r/w   | NEF   r/w   | RAF   r/w   | XMP   r/w/c
      -  DOC   r     | INSV  r     | NRW   r/w   | RAM   r     | ZIP   r
      -  DOCX  r     | INX   r     | NUMBERS r   | RAR   r     |
      -  DPX   r     | ISO   r     | O     r     | RAW   r/w   |
      +  360   r/w   | DR4   r/w/c | JNG   r/w   | O     r     | RAW   r/w
      +  3FR   r     | DSS   r     | JP2   r/w   | ODP   r     | RIFF  r
      +  3G2   r/w   | DV    r     | JPEG  r/w   | ODS   r     | RSRC  r
      +  3GP   r/w   | DVB   r/w   | JSON  r     | ODT   r     | RTF   r
      +  A     r     | DVR-MS r    | JXL   r     | OFR   r     | RW2   r/w
      +  AA    r     | DYLIB r     | K25   r     | OGG   r     | RWL   r/w
      +  AAE   r     | EIP   r     | KDC   r     | OGV   r     | RWZ   r
      +  AAX   r/w   | EPS   r/w   | KEY   r     | ONP   r     | RM    r
      +  ACR   r     | EPUB  r     | LA    r     | OPUS  r     | SEQ   r
      +  AFM   r     | ERF   r/w   | LFP   r     | ORF   r/w   | SKETCH r
      +  AI    r/w   | EXE   r     | LIF   r     | ORI   r/w   | SO    r
      +  AIFF  r     | EXIF  r/w/c | LNK   r     | OTF   r     | SR2   r/w
      +  APE   r     | EXR   r     | LRV   r/w   | PAC   r     | SRF   r
      +  ARQ   r/w   | EXV   r/w/c | M2TS  r     | PAGES r     | SRW   r/w
      +  ARW   r/w   | F4A/V r/w   | M4A/V r/w   | PBM   r/w   | SVG   r
      +  ASF   r     | FFF   r/w   | MACOS r     | PCD   r     | SWF   r
      +  AVI   r     | FITS  r     | MAX   r     | PCX   r     | THM   r/w
      +  AVIF  r/w   | FLA   r     | MEF   r/w   | PDB   r     | TIFF  r/w
      +  AZW   r     | FLAC  r     | MIE   r/w/  | PDF   r/w   | TORRENT r
      +  BMP   r     | FLIF  r/w   | MIFF  r   c | PEF   r/w   | TTC   r
      +  BPG   r     | FLV   r     | MKA   r     | PFA   r     | TTF   r
      +  BTF   r     | FPF   r     | MKS   r     | PFB   r     | TXT   r
      +  CHM   r     | FPX   r     | MKV   r     | PFM   r     | VCF   r
      +  COS   r     | GIF   r/w   | MNG   r/w   | PGF   r     | VRD   r/w/c
      +  CR2   r/w   | GPR   r/w   | MOBI  r     | PGM   r/w   | VSD   r
      +  CR3   r/w   | GZ    r     | MODD  r     | PLIST r     | WAV   r
      +  CRM   r/w   | HDP   r/w   | MOI   r     | PICT  r     | WDP   r/w
      +  CRW   r/w   | HDR   r     | MOS   r/w   | PMP   r     | WEBP  r
      +  CS1   r/w   | HEIC  r/w   | MOV   r/w   | PNG   r/w   | WEBM  r
      +  CSV   r     | HEIF  r/w   | MP3   r     | PPM   r/w   | WMA   r
      +  CZI   r     | HTML  r     | MP4   r/w   | PPT   r     | WMV   r
      +  DCM   r     | ICC   r/w/c | MPC   r     | PPTX  r     | WTV   r
      +  DCP   r/w   | ICS   r     | MPG   r     | PS    r/w   | WV    r
      +  DCR   r     | IDML  r     | MPO   r/w   | PSB   r/w   | X3F   r/w
      +  DFONT r     | IIQ   r/w   | MQV   r/w   | PSD   r/w   | XCF   r
      +  DIVX  r     | IND   r/w   | MRC   r     | PSP   r     | XLS   r
      +  DJVU  r     | INSP  r/w   | MRW   r/w   | QTIF  r/w   | XLSX  r
      +  DLL   r     | INSV  r     | MXF   r     | R3D   r     | XMP   r/w/c
      +  DNG   r/w   | INX   r     | NEF   r/w   | RA    r     | ZIP   r
      +  DOC   r     | ISO   r     | NKSC  r/w   | RAF   r/w   |
      +  DOCX  r     | ITC   r     | NRW   r/w   | RAM   r     |
      +  DPX   r     | J2C   r     | NUMBERS r   | RAR   r     |
       
         Meta Information
         ----------------------+----------------------+---------------------
      @@ -175,6 +177,9 @@
       
           $exifTool = new Image::ExifTool;
       
      +One ExifTool object may be used to process many files, so creating multiple
      +ExifTool objects usually is not necessary.
      +
       Note that ExifTool uses AUTOLOAD to load non-member methods, so any class
       using Image::ExifTool as a base class must define an AUTOLOAD which calls
       Image::ExifTool::DoAutoLoad().  eg)
      @@ -306,7 +311,7 @@
       
       =item Return Values:
       
      -L returns a reference to a hash of tag key/value pairs.  The tag
      +L returns a reference to a hash of tag-key/value pairs.  The tag
       keys are identifiers -- essentially case-sensitive tag names with an
       appended instance number if multiple tags with the same name were extracted
       from the image.  Many of the ExifTool functions require a tag key as an
      @@ -385,7 +390,8 @@
       
       The default option values may be changed by defining a
       %Image::ExifTool::UserDefined::Options hash.  See the ExifTool_config file
      -in the full ExifTool distribution for examples.
      +in the full ExifTool distribution for examples.  A default of undef has the
      +same behaviour as a value of 0 for numerical options.
       
           # exclude the 'OwnerName' tag from returned information
           $exifTool->Options(Exclude => 'OwnerName');
      @@ -437,6 +443,13 @@
       unless this option is set or the tag is specifically requested by name.
       Default is undef.
       
      +=item BlockExtract
      +
      +Flag to extract some directories (mentioned in the
      +L) as a block. 
      +Setting this to a value of 2 also prevents parsing the block to extract tags
      +contained within.
      +
       =item ByteOrder
       
       The byte order for newly created EXIF segments when writing.  Note that if
      @@ -468,6 +481,7 @@
         Thai         cp874            Windows Thai
         DOSLatinUS   cp437            DOS Latin US
         DOSLatin1    cp850            DOS Latin1
      +  DOSCyrillic  cp866            DOS Cyrillic
         MacRoman     cp10000, Roman   Macintosh Roman
         MacLatin2    cp10029          Macintosh Latin2 (Central Europe)
         MacCyrillic  cp10007          Macintosh Cyrillic
      @@ -534,15 +548,15 @@
       of available settings.  Note that 'NoPadding' effects only embedded XMP
       since padding is never written for stand-alone XMP files.  Also note that
       'OneDesc' is not recommended when writing XMP larger than 64 kB to a JPG
      -file because it interferes with ExifTool's technique of splitting off the
      -large description elements into the extended XMP.  Case is not significant
      -for any of these options.  Default is undef.
      -
      -  NoPadding - Avoid 2 kB of recommended padding at end of XMP
      -  NoIndent  - Avoid spaces to indent lines for readability
      -  NoNewline - Avoid unnecessary newlines
      +file because it interferes with ExifTool's technique of splitting off large
      +rdf:Description elements into the extended XMP.  Case is not significant for
      +any of these options.  Aliases are given in brackets. Default is undef.
      +
      +  NoPadding - Avoid 2 kB of recommended padding at end of XMP (NoPad)
      +  NoIndent  - No spaces to indent lines (NoSpace, NoSpaces)
      +  NoNewline - Avoid unnecessary newlines (NoNewlines)
         Shorthand - Use XMP Shorthand format
      -  OneDesc   - Combine XMP properties into a single rdf:Description
      +  OneDesc   - Combine properties into a single rdf:Description (OneDescr)
         AllSpace  - Equivalent to 'NoPadding,NoIndent,NoNewline'
         AllFormat - Equivalent to 'Shorthand,OneDesc'
         All       - Equivalent to 'AllSpace,AllFormat'
      @@ -579,12 +593,13 @@
       =item DateFormat
       
       Format for printing date/time values.  See C in the L
      -package for details about the format string.  If date can not be converted,
      -value is left unchanged unless the StrictDate option is set.  Timezones are
      -ignored.  The inverse conversion (ie. when calling L) is
      -performed only if POSIX::strptime or Time::Piece is installed.  The default
      -setting of undef causes date/time values to remain in standard EXIF format
      -(similar to a DateFormat of "%Y:%m:%d %H:%M:%S").
      +package and L for details about
      +the format string.  If the date can not be converted, the value is left
      +unchanged unless the StrictDate option is set.  Timezones are ignored.  The
      +inverse conversion (ie. when calling L) is performed only if
      +POSIX::strptime or Time::Piece is installed.  The default setting of undef
      +causes date/time values to remain in standard EXIF format (similar to a
      +DateFormat of "%Y:%m:%d %H:%M:%S").
       
       =item Duplicates
       
      @@ -624,7 +639,10 @@
       Flag to extract information from embedded documents in EPS files, embedded
       EPS information and JPEG and Jpeg2000 images in PDF files, embedded MPF
       images in JPEG and MPO files, timed metadata in videos, and the resource
      -fork of Mac OS files.  Default is undef.
      +fork of Mac OS files.  A setting of 2 also causes the H264 video stream in
      +MP4 files to be parsed until the first SEI message is decoded, or 3 to parse
      +the entire H264 stream in MP4 videos and the entire M2TS file to look for
      +any unlisted program containing GPS metadata.  Default is undef.
       
       =item FastScan
       
      @@ -642,25 +660,27 @@
       MakerNote information, and will stop parsing at the IDAT chunk of PNG
       images.  (By the PNG specification, metadata is allowed after IDAT, but
       ExifTool always writes it before because some utilities will ignore it
      -otherwise.)  When set to 3 or 4, only pseudo system tags and FileType are
      -generated.  For 3, the file header is read to provide an educated guess at
      -FileType.  For 4, the file is not read at all and FileType is determined
      -based on the file's extension.  Default is undef.
      +otherwise.)  When set to 3 or higher, only pseudo system tags and FileType
      +are generated.  For 3, the file header is read to provide an educated guess
      +at FileType.  For 4, the file is not read at all and FileType is determined
      +based on the file's extension.  For 5, generation of Composite tags is also
      +disabled (like setting L to 0).  Default is undef.
       
       =item Filter
       
       Perl expression used to filter values for all tags.  The expression acts on
       the value of the Perl default variable ($_), and changes the value of this
      -variable as required.  The value is not changed if $_ is set to undef.  List
      -items are filtered individually.  Applies to all returned values unless
      -PrintConv option is disabled.
      +variable as required.  The current ExifTool object may be accessed through
      +$self.  The value is not changed if $_ is set to undef.  List items are
      +filtered individually.  Applies to all returned values unless PrintConv
      +option is disabled.
       
       =item FilterW
       
       Perl expression used to filter PrintConv values when writing.  The
       expression acts on the value of the Perl default variable ($_), and changes
      -the value of this variable as required.  The value is not changed if $_ is
      -set to undef.
      +the value of this variable as required.  The current ExifTool object may be
      +accessed through $self.  The tag is not written if $_ is set to undef.
       
       =item FixBase
       
      @@ -729,6 +749,11 @@
       description of group families, and L for lists of
       group names.
       
      +=item HexTagIDs
      +
      +Return hexadecimal instead of decimal for the family 7 group names of tags
      +with numerical ID's.
      +
       =item HtmlDump
       
       Dump information in hex to dynamic HTML web page.  The value may be 0-3 for
      @@ -807,6 +832,11 @@
       for missing values, or the value is set to '' if L is
       set.  Default is undef.
       
      +=item NoMultiExif
      +
      +Raise error when attempting to write multi-segment EXIF in a JPEG image. 
      +Default is undef.
      +
       =item NoPDFList
       
       Flag to avoid splitting PDF list-type tag values into separate items.
      @@ -827,8 +857,17 @@
       
       Flag set to add an 'mdir' Handler to a newly created Meta box when adding
       QuickTime ItemList tags.  Adobe Bridge does not add this Handler, but it is
      -commonly found in samples from other software, so it is possible that this
      -could affect the interoperability of ItemList tags.  Default is undef.
      +commonly found in samples from other software, and it has been reported that
      +Apple QuickTime Player and Photos.apps will ignore ItemList tags if this is
      +missing.  Default is 1.
      +
      +=item QuickTimePad
      +
      +Flag to preserve the padding of some QuickTime atoms when writing. 
      +QuickTime-based Canon CR3 files pad the values of container atoms with null
      +bytes.  This padding is removed by default when the file is rewritten, but
      +setting this option to 1 adds padding to preserve the original atom size if
      +the new atom would be smaller than the original.  Default is undef.
       
       =item QuickTimeUTC
       
      @@ -837,9 +876,10 @@
       when written.  According to the QuickTime specification date/time values
       should be UTC, but many digital cameras store local time instead (presumably
       because they don't know the time zone), so the default is to not convert
      -these times.  This option also disables the autodetection of incorrect
      -time-zero offsets in QuickTime date/time values, and enforces a time zero of
      -1904 as per the QuickTime specification.
      +these times (except for Canon CR3 files, which always use UTC times).  This
      +option also disables the autodetection of incorrect time-zero offsets in
      +QuickTime date/time values, and enforces a time zero of 1904 as per the
      +QuickTime specification.
       
       =item RequestAll
       
      @@ -971,14 +1011,16 @@
       
       User-defined parameters may be accessed in tag name expressions by prefixing
       the parameter name with a dollar sign just like normal tags, or via the API
      -by calling C.  If called without no additional
      -arguments, C returns a reference to the hash of all
      -user parameters (with lower-case names).
      +by calling C.  Appending a hash tag (C<#>) to
      +the parameter name also causes the parameter to be extracted as a normal tag
      +(in the UserParam group).  If called without additional arguments,
      +C returns a reference to the hash of all user
      +parameters (with lower-case names).
       
       =item Validate
       
      -Flag to perform extra validation checks when reading, causing extra warnings
      -to be generated if problems are found.  Default is undef.
      +Flag to perform extra validation metadata checks when reading, causing extra
      +warnings to be generated if problems are found.  Default is undef.
       
       =item Verbose
       
      @@ -1124,11 +1166,17 @@
       information.  May be called repeatedly to write the same information to
       additional files without the need to call L again.
       
      -Note that it is NOT necessary to call L or L
      +ExifTool queues all new values that are assigned via calls to
      +L, then applies them to any number of files through one or
      +more calls to L. These queued values may be accessed through
      +L, and are completely separate from metadata extracted from
      +files via L or L and accessed through L
      +or L.
      +
      +To be clear, it is NOT necessary to call L or L
       before L.  L changes only metadata specified by
       previous calls to L.
       
      -
           # add information to a source file, writing output to new file
           $exifTool->WriteInfo($srcfile, $dstfile);
       
      @@ -1149,8 +1197,9 @@
       L object is also allowed as a source,
       but in this case the destination is not optional.
       
      -2) [optional] Destination file name, file reference, scalar reference, or
      -undef to overwrite the original file.  May be '-' to write to stdout.
      +2) [optional] Destination file name, file reference, scalar reference to
      +write to memory, or undef to overwrite the original file.  May be '-' to
      +write to stdout.
       
       3) [optional] Destination file type.  Ignored if a source is defined.
       
      @@ -1195,8 +1244,8 @@
       The following ExifTool options are effective in the call to L:
       
       ByteOrder, Charset, CharsetEXIF, CharsetFileName, CharsetIPTC, Compact,
      -Compress, FixBase, IgnoreMinorErrors, Password, QuickTimeHandler, Verbose
      -and WriteMode.
      +Compress, FixBase, IgnoreMinorErrors, NoMultiExif, NoPDFList, Password,
      +QuickTimeHandler, QuickTimePad, Verbose and WriteMode.
       
       =head2 GetTagList
       
      @@ -1446,13 +1495,13 @@
       'XMP:Time:*'), which is equivalent to using a Group option argument.  Also,
       a '#' may be appended to the tag name (eg. 'EXIF:Orientation#'), with the
       same effect as setting Type to 'ValueConv'.  Wildcards ('*' and '?') may be
      -used in the tag name to assign multiple tags simultaneously.  A tag name of
      -'*' is special when deleting information, and will delete an entire group
      -even if some individual tags in the group are not writable, but only if a
      -single family 0 or 1 group is specified (otherwise the tags are deleted
      -individually).  Use L to get a list of deletable group
      -names, and see L for a
      -complete list of tag names.
      +used in the tag name to assign or delete multiple tags simultaneously.  A
      +tag name of '*' is special when deleting information, and will delete an
      +entire group even if some individual tags in the group are not writable, but
      +only if a single family 0 or 1 group is specified (otherwise the tags are
      +deleted individually).  Use L to get a list of deletable
      +group names, and see L
      +for a complete list of tag names.
       
       2) [optional] New value for tag.  Undefined to delete tag from file.  May be
       a scalar, scalar reference, list reference to set a list of values, or hash
      @@ -1597,7 +1646,8 @@
       
       0) ExifTool object reference
       
      -1) Tag name (case sensitive, may be prefixed by family 0 or 1 group name)
      +1) Tag name (case sensitive, may be prefixed by family 0, 1 or 7 group
      +names, separated by colons)
       
       =item Return Values:
       
      @@ -1659,34 +1709,35 @@
       
       2-N) [optional] List of tag names to set or options hash references.  All
       writable tags are set if none are specified.  The tag names are not case
      -sensitive, and may be prefixed by one or more family 0, 1 or 2 group names
      -with optional leading family numbers, separated by colons (eg. 'exif:iso'). 
      -A leading '-' indicates tags to be excluded (eg. '-comment'), or a trailing
      -'#' causes the ValueConv value to be copied (same as setting the Type option
      -to 'ValueConv' for this tag only).  Wildcards ('*' and '?') may be used in
      -the tag name.  A tag name of '*' is commonly used when a group is specified
      -to copy all tags in the group (eg. 'XMP:*').  A special feature allows tag
      -names of the form 'DSTTAGESRCTAG' (or 'SRCTAGEDSTTAG') to be
      -specified to copy information to a tag with a different name or a specified
      -group.  Both 'SRCTAG' and 'DSTTAG' may contain wildcards and/or be prefixed
      -by a group name (eg. 'fileModifyDateEmodifyDate' or 'xmp:*E*'),
      -and/or suffixed by a '#' to disable print conversion.  Copied tags may also
      -be added or deleted from a list with arguments of the form
      -'DSTTAG+ESRCTAG' or 'DSTTAG-ESRCTAG'.  Tags are evaluated in order,
      -so exclusions apply only to tags included earlier in the list.  An extension
      -of this feature allows the tag value to be set from a string containing tag
      -names with leading '$' symbols (eg. 'CommentEthe file is $filename'). 
      -Braces '{}' may be used around the tag name to separate it from subsequent
      -text, and a '$$' is used to to represent a '$' symbol.  The behaviour for
      -missing tags in expressions is defined by the L option.
      -The tag value may be modified via changes to the default input variable ($_)
      -in a Perl expression placed inside the braces and after a semicolon
      -following the tag name (see the last example above).  A '@' may be added
      -after the tag name (before the semicolon) to make the expression act on
      -individual list items instead of the concatenated string for list-type tags.
      -Braces within the expression must be balanced. Multiple options hash
      -references may be passed to set different options for different tags. 
      -Options apply to subsequent tags in the argument list.
      +sensitive, and may be prefixed by one or more family 0, 1, 2 or 7 group
      +names with optional leading family numbers, separated by colons (eg.
      +'exif:iso'). A leading '-' indicates tags to be excluded (eg. '-comment'),
      +or a trailing '#' causes the ValueConv value to be copied (same as setting
      +the Type option to 'ValueConv' for this tag only).  Wildcards ('*' and '?')
      +may be used in the tag name.  A tag name of '*' is commonly used when a
      +group is specified to copy all tags in the group (eg. 'XMP:*').  A special
      +feature allows tag names of the form 'DSTTAGESRCTAG' (or
      +'SRCTAGEDSTTAG') to be specified to copy information to a tag with a
      +different name or a specified group.  Both 'SRCTAG' and 'DSTTAG' may contain
      +wildcards and/or be prefixed by a group name (eg.
      +'fileModifyDateEmodifyDate' or 'xmp:*E*'), and/or suffixed by a '#'
      +to disable print conversion.  Copied tags may also be added or deleted from
      +a list with arguments of the form 'DSTTAG+ESRCTAG' or
      +'DSTTAG-ESRCTAG'.  Tags are evaluated in order, so exclusions apply only
      +to tags included earlier in the list.  An extension of this feature allows
      +the tag value to be set from a string containing tag names with leading '$'
      +symbols (eg. 'CommentEthe file is $filename'). Braces '{}' may be used
      +around the tag name to separate it from subsequent text, and a '$$' is used
      +to to represent a '$' symbol.  The behaviour for missing tags in expressions
      +is defined by the L option. The tag value may be modified
      +via changes to the default input variable ($_) in a Perl expression placed
      +inside the braces and after a semicolon following the tag name (see the last
      +example above).  A '@' may be added after the tag name (before the
      +semicolon) to make the expression act on individual list items instead of
      +the concatenated string for list-type tags. Braces within the expression
      +must be balanced. Multiple options hash references may be passed to set
      +different options for different tags. Options apply to subsequent tags in
      +the argument list.
       
       By default, this routine will commute information between same-named tags in
       different groups, allowing information to be translated between images with
      @@ -1877,7 +1928,9 @@
       
       =item Notes:
       
      -Will not overwrite existing files. New directories are created as necessary.
      +Will not overwrite existing files. New directories are created as necessary. 
      +If the file is successfully renamed, the new file name may be accessed via
      +C<$$exifTool{NewName}>.
       
       =back
       
      @@ -2020,6 +2073,7 @@
           4) Instance Number          (eg. Copy1, Copy2, Copy3...)
           5) Metadata Path            (eg. JPEG-APP1-IFD0-ExifIFD)
           6) EXIF/TIFF Format         (eg. int8u, int32u, undef, string)
      +    7) Tag ID                   (eg. ID-271, ID-rights, ID-a9aut)
       
       Families 0 and 1 are based on the file structure, and are similar except
       that family 1 is more specific and sub-divides some groups to give more
      @@ -2063,6 +2117,15 @@
       type of the extracted value.  Generated only if the L option is
       used when extracting.
       
      +Family 7 is used for tag ID's.  The group names are the actual tag ID's,
      +with a leading "ID-" string.  Non-numerical ID's have characters other than
      +[-_A-Za-z0-9] converted to hex.  Numerical tag ID's are returned in hex if
      +the L option is set, otherwise decimal is used.  When specifying
      +a family 7 group name, numerical ID's may be in hex or decimal, and
      +non-numerical ID's may or may not have characters other than [-_A-Za-z0-9]
      +converted to hex.  Note that unlike other group names, the tag ID's of
      +family 7 group names are case sensitive (but the leading "ID-" is not).
      +
       See L for complete lists of group names.
       
       =back
      @@ -2218,7 +2281,7 @@
       
       =item Inputs:
       
      -0) Group family number (0-4)
      +0) Group family number (0-7)
       
       =item Return Values:
       
      @@ -2232,56 +2295,57 @@
       
       =item Family 0 (Information Type):
       
      -AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP4, APP5,
      -APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG, DV, DjVu, Ducky,
      -EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font,
      +AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP3, APP4,
      +APP5, APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG, DV, DjVu,
      +Ducky, EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font,
       FotoStation, GIF, GIMP, GeoTiff, GoPro, H264, HTML, ICC_Profile, ID3, IPTC,
      -ISO, ITC, JFIF, JPEG, JSON, Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, MIFF,
      -MNG, MOI, MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg, OpenEXR,
      -Opus, PDF, PICT, PLIST, PNG, PSP, Palm, Parrot, PanasonicRaw, PhotoCD,
      -PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF, RIFF, RSRC,
      -RTF, Radiance, Rawzor, Real, Red, SVG, SigmaRaw, Stim, Theora, Torrent,
      -Trailer, VCard, Vorbis, WTV, XML, XMP, ZIP
      +ISO, ITC, JFIF, JPEG, JSON, JUMBF, Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE,
      +MIFF, MNG, MOI, MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg,
      +OpenEXR, Opus, PDF, PICT, PLIST, PNG, PSP, Palm, Parrot, PanasonicRaw,
      +PhotoCD, PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF,
      +RIFF, RSRC, RTF, Radiance, Rawzor, Real, Red, SVG, SigmaRaw, Stim, Theora,
      +Torrent, Trailer, UserParam, VCard, Vorbis, WTV, XML, XMP, ZIP
       
       =item Family 1 (Specific Location):
       
       AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, AdobeDNG, Apple, Audible,
      -CIFF, CameraIFD, Canon, CanonCustom, CanonRaw, CanonVRD, Casio, Chapter#,
      -Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM, EXE, EXIF,
      -ExifIFD, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font,
      +CBOR, CIFF, CameraIFD, Canon, CanonCustom, CanonRaw, CanonVRD, Casio,
      +Chapter#, Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM,
      +EXE, EXIF, ExifIFD, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font,
       FotoStation, FujiFilm, FujiIFD, GE, GIF, GIMP, GPS, GeoTiff, GlobParamIFD,
       GoPro, GraphConv, H264, HP, HTC, HTML, HTML-dc, HTML-ncc, HTML-office,
       HTML-prod, HTML-vw96, HTTP-equiv, ICC-chrm, ICC-clrt, ICC-header, ICC-meas,
       ICC-meta, ICC-view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh,
       ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360,
      -InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JSON, JVC, Jpeg2000,
      -KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD,
      -KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lytro, M2TS, MAC, MIE-Audio,
      -MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo,
      -MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient,
      -MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MNG,
      -MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS, MakerNotes,
      -MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft, Minolta,
      -MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom, NikonScan,
      -Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF, PICT, PNG, PNG-pHYs, PSP,
      -Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD, PhotoMechanic,
      -Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD,
      -Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor,
      -Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5,
      -Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#,
      -SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD,
      -System, Theora, Torrent, Track#, UserData, VCalendar, VCard, Version0,
      -Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP-GAudio, XMP-GDepth,
      -XMP-GFocus, XMP-GImage, XMP-GPano, XMP-GSpherical, XMP-LImage, XMP-MP,
      -XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album, XMP-apple-fi,
      -XMP-aux, XMP-cc, XMP-cell, XMP-creatorAtom, XMP-crs, XMP-dc, XMP-dex,
      -XMP-digiKam, XMP-drone-dji, XMP-dwc, XMP-exif, XMP-exifEX,
      -XMP-expressionmedia, XMP-extensis, XMP-fpv, XMP-getty, XMP-ics,
      -XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-microsoft,
      -XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx, XMP-photomech,
      -XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism, XMP-prl, XMP-prm, XMP-pur,
      -XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM,
      -XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, ZIP
      +InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JPS, JSON, JUMBF, JVC,
      +Jpeg2000, KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD,
      +KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lyrics3, Lytro, M2TS, MAC,
      +MIE-Audio, MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS,
      +MIE-Geo, MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta,
      +MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video,
      +MIFF, MNG, MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS,
      +MakerNotes, MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft,
      +Minolta, MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom,
      +NikonScan, NikonSettings, NineEdits, Nintendo, Ocad, Ogg, Olympus, OpenEXR,
      +Opus, PDF, PICT, PNG, PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax,
      +PhaseOne, PhotoCD, PhotoMechanic, Photoshop, PictureInfo, PostScript,
      +PreviewIFD, PrintIM, ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF,
      +RMETA, RSRC, RTF, Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP,
      +Real-RA3, Real-RA4, Real-RA5, Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2,
      +SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw,
      +Sony, SonyIDC, Stim, SubIFD, System, Theora, Torrent, Track#, UserData,
      +UserParam, VCalendar, VCard, Version0, Vorbis, WTV, XML, XMP, XMP-DICOM,
      +XMP-Device, XMP-GAudio, XMP-GDepth, XMP-GFocus, XMP-GImage, XMP-GPano,
      +XMP-GSpherical, XMP-LImage, XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas,
      +XMP-acdsee, XMP-album, XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell,
      +XMP-creatorAtom, XMP-crs, XMP-dc, XMP-dex, XMP-digiKam, XMP-drone-dji,
      +XMP-dwc, XMP-exif, XMP-exifEX, XMP-expressionmedia, XMP-extensis, XMP-fpv,
      +XMP-getty, XMP-ics, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro,
      +XMP-microsoft, XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx,
      +XMP-photomech, XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism, XMP-prl,
      +XMP-prm, XMP-pur, XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ,
      +XMP-xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg,
      +ZIP, iTunes
       
       =item Family 2 (Category):
       
      @@ -2305,8 +2369,18 @@
       int8u, string, int16u, int32u, rational64u, int8s, undef, int16s, int32s,
       rational64s, float, double, ifd, unicode, complex, int64u, int64s, ifd64
       
      +=item Family 7 (Tag ID):
      +
      +ID-xxx (Where xxx is the tag ID.  Numerical ID's are returned in hex with a
      +leading "0x" if the HexTagIDs option is set, or decimal otherwise. 
      +Characters in non-numerical ID's which are not valid in a group name are
      +returned as 2 hex digits.)
      +
       =back
       
      +Note:  This function may also be called as an ExifTool member function to
      +allow the HexTagIDs option to be set when retrieving family 7 group names.
      +
       =head2 GetDeleteGroups [static]
       
       Get list of all deletable group names.
      @@ -2324,14 +2398,14 @@
       A list of deletable group names in alphabetical order.  The current list of
       deletable group names is:
       
      -AFCP, APP0, APP1, APP10, APP11, APP12, APP13, APP14, APP15, APP2, APP3,
      -APP4, APP5, APP6, APP7, APP8, APP9, Adobe, Audio, Author, CIFF, Camera,
      -CanonVRD, Document, Ducky, EXIF, ExifIFD, ExifTool, File, FlashPix,
      -FotoStation, GPS, GlobParamIFD, ICC_Profile, IFD0, IFD1, IPTC, Image,
      -InteropIFD, JFIF, Jpeg2000, Location, MIE, MPF, MakerNotes, Meta, MetaIFD,
      -NikonCapture, Other, PDF, PDF-update, PNG, PNG-pHYs, PhotoMechanic,
      -Photoshop, Preview, PrintIM, Printing, RMETA, RSRC, SubIFD, Time, Trailer,
      -Video, XML, XML-*, XMP, XMP-*
      +Adobe, AFCP, APP0, APP1, APP10, APP11, APP12, APP13, APP14, APP15, APP2,
      +APP3, APP4, APP5, APP6, APP7, APP8, APP9, Audio, Author, Camera, CanonVRD,
      +CIFF, Document, Ducky, EXIF, ExifIFD, ExifTool, File, FlashPix, FotoStation,
      +GlobParamIFD, GPS, ICC_Profile, IFD0, IFD1, Image, Insta360, InteropIFD,
      +IPTC, ItemList, JFIF, Jpeg2000, Keys, Location, MakerNotes, Meta, MetaIFD,
      +Microsoft, MIE, MPF, NikonCapture, Other, PDF, PDF-update, PhotoMechanic,
      +Photoshop, PNG, PNG-pHYs, Preview, PrintIM, Printing, QuickTime, RMETA,
      +RSRC, SubIFD, Time, Trailer, UserData, Video, XML, XML-*, XMP, XMP-*
       
       To schedule a group for deletion, call L with a tag name like
       'EXIF:*' and an undefined tag value.
      @@ -2584,13 +2658,13 @@
       
       =head2 XMP
       
      -Exiftool reads XMP encoded as UTF-8, UTF-16 or UTF-32, and converts them all
      +ExifTool reads XMP encoded as UTF-8, UTF-16 or UTF-32, and converts them all
       to UTF-8 internally.  Also, all XML character entity references and numeric
       character references are converted.  When writing, ExifTool always encodes
       XMP as UTF-8, converting the following 5 characters to XML character
       references: E E E E<39> E.  By default no further
       conversion is performed, however if the L option is other than
      -'UTF8' then text is converted to/from a specified character set when
      +'UTF8' then text is converted to/from the specified character set when
       reading/writing.
       
       =head2 PNG
      @@ -2670,7 +2744,7 @@
       
       =head1 AUTHOR
       
      -Copyright 2003-2020, Phil Harvey
      +Copyright 2003-2022, Phil Harvey
       
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.
      diff -Nru libimage-exiftool-perl-11.88/MANIFEST libimage-exiftool-perl-12.40+dfsg/MANIFEST
      --- libimage-exiftool-perl-11.88/MANIFEST	2020-02-20 14:02:53.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/MANIFEST	2022-02-09 12:08:04.000000000 +0000
      @@ -19,6 +19,7 @@
       config_files/age.config
       config_files/bibble.config
       config_files/convert_regions.config
      +config_files/cuepointlist.config
       config_files/depthmap.config
       config_files/example.config
       config_files/fotoware.config
      @@ -26,6 +27,7 @@
       config_files/nksc.config
       config_files/photoshop_paths.config
       config_files/picasa_faces.config
      +config_files/pix4d.config
       config_files/rotate_regions.config
       config_files/tiff_version.config
       config_files/time_zone.config
      @@ -46,6 +48,7 @@
       html/TagNames/Audible.html
       html/TagNames/BMP.html
       html/TagNames/BPG.html
      +html/TagNames/CBOR.html
       html/TagNames/Canon.html
       html/TagNames/CanonCustom.html
       html/TagNames/CanonRaw.html
      @@ -92,6 +95,7 @@
       html/TagNames/Jpeg2000.html
       html/TagNames/Kodak.html
       html/TagNames/KyoceraRaw.html
      +html/TagNames/LIF.html
       html/TagNames/LNK.html
       html/TagNames/Leaf.html
       html/TagNames/Lytro.html
      @@ -103,6 +107,7 @@
       html/TagNames/MPC.html
       html/TagNames/MPEG.html
       html/TagNames/MPF.html
      +html/TagNames/MRC.html
       html/TagNames/MWG.html
       html/TagNames/MXF.html
       html/TagNames/MacOS.html
      @@ -114,12 +119,14 @@
       html/TagNames/Nikon.html
       html/TagNames/NikonCapture.html
       html/TagNames/NikonCustom.html
      +html/TagNames/NikonSettings.html
       html/TagNames/Nintendo.html
       html/TagNames/OOXML.html
       html/TagNames/Ogg.html
       html/TagNames/Olympus.html
       html/TagNames/OpenEXR.html
       html/TagNames/Opus.html
      +html/TagNames/Other.html
       html/TagNames/PCX.html
       html/TagNames/PDF.html
       html/TagNames/PGF.html
      @@ -168,6 +175,7 @@
       html/TagNames/WTV.html
       html/TagNames/XMP.html
       html/TagNames/ZIP.html
      +html/TagNames/ZISRAW.html
       html/TagNames/iWork.html
       html/TagNames/index.html
       html/TagNames/style.css
      @@ -186,6 +194,7 @@
       html/index.html
       html/install.html
       html/metafiles.html
      +html/mistakes.html
       html/overview.png
       html/standards.html
       html/struct.html
      @@ -210,6 +219,7 @@
       lib/Image/ExifTool/BZZ.pm
       lib/Image/ExifTool/BigTIFF.pm
       lib/Image/ExifTool/BuildTagLookup.pm
      +lib/Image/ExifTool/CBOR.pm
       lib/Image/ExifTool/Canon.pm
       lib/Image/ExifTool/CanonCustom.pm
       lib/Image/ExifTool/CanonRaw.pm
      @@ -220,6 +230,7 @@
       lib/Image/ExifTool/Charset/Arabic.pm
       lib/Image/ExifTool/Charset/Baltic.pm
       lib/Image/ExifTool/Charset/Cyrillic.pm
      +lib/Image/ExifTool/Charset/DOSCyrillic.pm
       lib/Image/ExifTool/Charset/DOSLatin1.pm
       lib/Image/ExifTool/Charset/DOSLatinUS.pm
       lib/Image/ExifTool/Charset/Greek.pm
      @@ -293,6 +304,7 @@
       lib/Image/ExifTool/Jpeg2000.pm
       lib/Image/ExifTool/Kodak.pm
       lib/Image/ExifTool/KyoceraRaw.pm
      +lib/Image/ExifTool/LIF.pm
       lib/Image/ExifTool/LNK.pm
       lib/Image/ExifTool/Lang/cs.pm
       lib/Image/ExifTool/Lang/de.pm
      @@ -322,6 +334,7 @@
       lib/Image/ExifTool/MPC.pm
       lib/Image/ExifTool/MPEG.pm
       lib/Image/ExifTool/MPF.pm
      +lib/Image/ExifTool/MRC.pm
       lib/Image/ExifTool/MWG.pm
       lib/Image/ExifTool/MXF.pm
       lib/Image/ExifTool/MacOS.pm
      @@ -334,12 +347,14 @@
       lib/Image/ExifTool/Nikon.pm
       lib/Image/ExifTool/NikonCapture.pm
       lib/Image/ExifTool/NikonCustom.pm
      +lib/Image/ExifTool/NikonSettings.pm
       lib/Image/ExifTool/Nintendo.pm
       lib/Image/ExifTool/OOXML.pm
       lib/Image/ExifTool/Ogg.pm
       lib/Image/ExifTool/Olympus.pm
       lib/Image/ExifTool/OpenEXR.pm
       lib/Image/ExifTool/Opus.pm
      +lib/Image/ExifTool/Other.pm
       lib/Image/ExifTool/PCX.pm
       lib/Image/ExifTool/PDF.pm
       lib/Image/ExifTool/PGF.pm
      @@ -408,6 +423,7 @@
       lib/Image/ExifTool/XMP2.pl
       lib/Image/ExifTool/XMPStruct.pl
       lib/Image/ExifTool/ZIP.pm
      +lib/Image/ExifTool/ZISRAW.pm
       lib/Image/ExifTool/iWork.pm
       perl-Image-ExifTool.spec
       t/AFCP.t
      @@ -504,6 +520,7 @@
       t/ExifTool_3.out
       t/ExifTool_30.out
       t/ExifTool_31.out
      +t/ExifTool_32.out
       t/ExifTool_4.out
       t/ExifTool_5.out
       t/ExifTool_6.out
      @@ -563,6 +580,7 @@
       t/Geotag.t
       t/Geotag_10.out
       t/Geotag_11.out
      +t/Geotag_12.out
       t/Geotag_2.out
       t/Geotag_3.out
       t/Geotag_5.out
      @@ -594,10 +612,14 @@
       t/JVC.t
       t/JVC_2.out
       t/JVC_3.out
      +t/JXL.t
      +t/JXL_2.out
      +t/JXL_3.out
       t/Jpeg2000.t
       t/Jpeg2000_2.out
       t/Jpeg2000_3.out
       t/Jpeg2000_4.out
      +t/Jpeg2000_5.out
       t/Kodak.t
       t/Kodak_2.out
       t/Kodak_3.out
      @@ -639,6 +661,8 @@
       t/MOI_2.out
       t/MP3.t
       t/MP3_2.out
      +t/MRC.t
      +t/MRC_2.out
       t/MWG.t
       t/MWG_2.out
       t/MWG_3.out
      @@ -648,6 +672,8 @@
       t/MWG_7.out
       t/MXF.t
       t/MXF_2.out
      +t/MacOS.t
      +t/MacOS_2.out
       t/Matroska.t
       t/Matroska_2.out
       t/Minolta.t
      @@ -696,6 +722,8 @@
       t/PDF_7.out
       t/PDF_8.out
       t/PDF_9.out
      +t/PFM.t
      +t/PFM_2.out
       t/PGF.t
       t/PGF_2.out
       t/PICT.t
      @@ -712,6 +740,7 @@
       t/PNG_4.out
       t/PNG_5.out
       t/PNG_6.out
      +t/PNG_7.out
       t/PPM.t
       t/PPM_2.out
       t/PPM_3.out
      @@ -749,6 +778,8 @@
       t/QuickTime_13.out
       t/QuickTime_14.out
       t/QuickTime_15.out
      +t/QuickTime_16.out
      +t/QuickTime_17.out
       t/QuickTime_2.out
       t/QuickTime_3.out
       t/QuickTime_4.out
      @@ -913,6 +944,8 @@
       t/ZIP_5.out
       t/ZIP_6.out
       t/ZIP_7.out
      +t/ZISRAW.t
      +t/ZISRAW_2.out
       t/images/AFCP.jpg
       t/images/AIFF.aif
       t/images/APE.ape
      @@ -946,6 +979,7 @@
       t/images/EXE.macho
       t/images/EXE.so
       t/images/ExifTool.jpg
      +t/images/ExifTool.jps
       t/images/ExifTool.tif
       t/images/ExtendedXMP.jpg
       t/images/FITS.fits
      @@ -978,6 +1012,7 @@
       t/images/Geotag.xml
       t/images/Geotag2.log
       t/images/Geotag3.log
      +t/images/Geotag_DJI_2020-12-02_[07-50-31].csv
       t/images/GoPro.jpg
       t/images/HTML.html
       t/images/ICC_Profile.icc
      @@ -988,6 +1023,7 @@
       t/images/JSON.json
       t/images/JVC.jpg
       t/images/JVC2.jpg
      +t/images/JXL.jxl
       t/images/Jpeg2000.j2c
       t/images/Jpeg2000.jp2
       t/images/Kodak.jpg
      @@ -999,8 +1035,10 @@
       t/images/MIFF.miff
       t/images/MOI.moi
       t/images/MP3.mp3
      +t/images/MRC.mrc
       t/images/MWG.jpg
       t/images/MXF.mxf
      +t/images/MacOS.macos
       t/images/Matroska.mkv
       t/images/Minolta.jpg
       t/images/Minolta.mrw
      @@ -1020,6 +1058,7 @@
       t/images/PCX.pcx
       t/images/PDF.pdf
       t/images/PDF2.pdf
      +t/images/PFM.pfm
       t/images/PGF.pgf
       t/images/PICT.pict
       t/images/PLIST-bin.plist
      @@ -1087,4 +1126,5 @@
       t/images/XMP9.xmp
       t/images/ZIP.gz
       t/images/ZIP.zip
      +t/images/ZISRAW.czi
       t/images/iWork.numbers
      diff -Nru libimage-exiftool-perl-11.88/META.json libimage-exiftool-perl-12.40+dfsg/META.json
      --- libimage-exiftool-perl-11.88/META.json	2020-02-20 14:44:25.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/META.json	2022-02-09 12:19:27.000000000 +0000
      @@ -4,13 +4,13 @@
             "Phil Harvey (philharvey66 at gmail.com)"
          ],
          "dynamic_config" : 1,
      -   "generated_by" : "ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.150010",
      +   "generated_by" : "ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.133380",
          "license" : [
             "perl_5"
          ],
          "meta-spec" : {
             "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
      -      "version" : 2
      +      "version" : "2"
          },
          "name" : "Image-ExifTool",
          "no_index" : {
      @@ -47,6 +47,5 @@
             }
          },
          "release_status" : "stable",
      -   "version" : "11.88",
      -   "x_serialization_backend" : "JSON::PP version 4.02"
      +   "version" : "12.40"
       }
      diff -Nru libimage-exiftool-perl-11.88/META.yml libimage-exiftool-perl-12.40+dfsg/META.yml
      --- libimage-exiftool-perl-11.88/META.yml	2020-02-20 14:44:24.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/META.yml	2022-02-09 12:19:26.000000000 +0000
      @@ -3,30 +3,29 @@
       author:
         - 'Phil Harvey (philharvey66 at gmail.com)'
       build_requires:
      -  ExtUtils::MakeMaker: '0'
      +  ExtUtils::MakeMaker: 0
       configure_requires:
      -  ExtUtils::MakeMaker: '0'
      +  ExtUtils::MakeMaker: 0
       dynamic_config: 1
      -generated_by: 'ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.150010'
      +generated_by: 'ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.133380'
       license: perl
       meta-spec:
         url: http://module-build.sourceforge.net/META-spec-v1.4.html
      -  version: '1.4'
      +  version: 1.4
       name: Image-ExifTool
       no_index:
         directory:
           - t
           - inc
       recommends:
      -  Archive::Zip: '0'
      -  Compress::Zlib: '0'
      -  Digest::MD5: '0'
      -  Digest::SHA: '0'
      -  IO::Compress::RawDeflate: '0'
      -  IO::Uncompress::RawInflate: '0'
      -  POSIX::strptime: '0'
      -  Time::HiRes: '0'
      +  Archive::Zip: 0
      +  Compress::Zlib: 0
      +  Digest::MD5: 0
      +  Digest::SHA: 0
      +  IO::Compress::RawDeflate: 0
      +  IO::Uncompress::RawInflate: 0
      +  POSIX::strptime: 0
      +  Time::HiRes: 0
       requires:
      -  perl: '5.004'
      -version: '11.88'
      -x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
      +  perl: 5.004
      +version: 12.40
      diff -Nru libimage-exiftool-perl-11.88/perl-Image-ExifTool.spec libimage-exiftool-perl-12.40+dfsg/perl-Image-ExifTool.spec
      --- libimage-exiftool-perl-11.88/perl-Image-ExifTool.spec	2020-02-20 14:44:19.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/perl-Image-ExifTool.spec	2022-02-09 12:19:14.000000000 +0000
      @@ -1,6 +1,6 @@
       Summary: perl module for image data extraction
       Name: perl-Image-ExifTool
      -Version: 11.88
      +Version: 12.40
       Release: 1
       License: Artistic/GPL
       Group: Development/Libraries/Perl
      @@ -22,46 +22,48 @@
       
         File Types
         ------------+-------------+-------------+-------------+------------
      -  3FR   r     | DR4   r/w/c | ITC   r     | ODP   r     | RIFF  r
      -  3G2   r/w   | DSS   r     | J2C   r     | ODS   r     | RSRC  r
      -  3GP   r/w   | DV    r     | JNG   r/w   | ODT   r     | RTF   r
      -  A     r     | DVB   r/w   | JP2   r/w   | OFR   r     | RW2   r/w
      -  AA    r     | DVR-MS r    | JPEG  r/w   | OGG   r     | RWL   r/w
      -  AAE   r     | DYLIB r     | JSON  r     | OGV   r     | RWZ   r
      -  AAX   r/w   | EIP   r     | K25   r     | OPUS  r     | RM    r
      -  ACR   r     | EPS   r/w   | KDC   r     | ORF   r/w   | SEQ   r
      -  AFM   r     | EPUB  r     | KEY   r     | OTF   r     | SKETCH r
      -  AI    r/w   | ERF   r/w   | LA    r     | PAC   r     | SO    r
      -  AIFF  r     | EXE   r     | LFP   r     | PAGES r     | SR2   r/w
      -  APE   r     | EXIF  r/w/c | LNK   r     | PBM   r/w   | SRF   r
      -  ARQ   r/w   | EXR   r     | LRV   r/w   | PCD   r     | SRW   r/w
      -  ARW   r/w   | EXV   r/w/c | M2TS  r     | PCX   r     | SVG   r
      -  ASF   r     | F4A/V r/w   | M4A/V r/w   | PDB   r     | SWF   r
      -  AVI   r     | FFF   r/w   | MAX   r     | PDF   r/w   | THM   r/w
      -  AVIF  r/w   | FITS  r     | MEF   r/w   | PEF   r/w   | TIFF  r/w
      -  AZW   r     | FLA   r     | MIE   r/w/c | PFA   r     | TORRENT r
      -  BMP   r     | FLAC  r     | MIFF  r     | PFB   r     | TTC   r
      -  BPG   r     | FLIF  r/w   | MKA   r     | PFM   r     | TTF   r
      -  BTF   r     | FLV   r     | MKS   r     | PGF   r     | TXT   r
      -  CHM   r     | FPF   r     | MKV   r     | PGM   r/w   | VCF   r
      -  COS   r     | FPX   r     | MNG   r/w   | PLIST r     | VRD   r/w/c
      -  CR2   r/w   | GIF   r/w   | MOBI  r     | PICT  r     | VSD   r
      -  CR3   r/w   | GPR   r/w   | MODD  r     | PMP   r     | WAV   r
      -  CRM   r/w   | GZ    r     | MOI   r     | PNG   r/w   | WDP   r/w
      -  CRW   r/w   | HDP   r/w   | MOS   r/w   | PPM   r/w   | WEBP  r
      -  CS1   r/w   | HDR   r     | MOV   r/w   | PPT   r     | WEBM  r
      -  CSV   r     | HEIC  r/w   | MP3   r     | PPTX  r     | WMA   r
      -  DCM   r     | HEIF  r/w   | MP4   r/w   | PS    r/w   | WMV   r
      -  DCP   r/w   | HTML  r     | MPC   r     | PSB   r/w   | WTV   r
      -  DCR   r     | ICC   r/w/c | MPG   r     | PSD   r/w   | WV    r
      -  DFONT r     | ICS   r     | MPO   r/w   | PSP   r     | X3F   r/w
      -  DIVX  r     | IDML  r     | MQV   r/w   | QTIF  r/w   | XCF   r
      -  DJVU  r     | IIQ   r/w   | MRW   r/w   | R3D   r     | XLS   r
      -  DLL   r     | IND   r/w   | MXF   r     | RA    r     | XLSX  r
      -  DNG   r/w   | INSP  r/w   | NEF   r/w   | RAF   r/w   | XMP   r/w/c
      -  DOC   r     | INSV  r     | NRW   r/w   | RAM   r     | ZIP   r
      -  DOCX  r     | INX   r     | NUMBERS r   | RAR   r     |
      -  DPX   r     | ISO   r     | O     r     | RAW   r/w   |
      +  360   r/w   | DR4   r/w/c | JNG   r/w   | O     r     | RAW   r/w
      +  3FR   r     | DSS   r     | JP2   r/w   | ODP   r     | RIFF  r
      +  3G2   r/w   | DV    r     | JPEG  r/w   | ODS   r     | RSRC  r
      +  3GP   r/w   | DVB   r/w   | JSON  r     | ODT   r     | RTF   r
      +  A     r     | DVR-MS r    | JXL   r     | OFR   r     | RW2   r/w
      +  AA    r     | DYLIB r     | K25   r     | OGG   r     | RWL   r/w
      +  AAE   r     | EIP   r     | KDC   r     | OGV   r     | RWZ   r
      +  AAX   r/w   | EPS   r/w   | KEY   r     | ONP   r     | RM    r
      +  ACR   r     | EPUB  r     | LA    r     | OPUS  r     | SEQ   r
      +  AFM   r     | ERF   r/w   | LFP   r     | ORF   r/w   | SKETCH r
      +  AI    r/w   | EXE   r     | LIF   r     | ORI   r/w   | SO    r
      +  AIFF  r     | EXIF  r/w/c | LNK   r     | OTF   r     | SR2   r/w
      +  APE   r     | EXR   r     | LRV   r/w   | PAC   r     | SRF   r
      +  ARQ   r/w   | EXV   r/w/c | M2TS  r     | PAGES r     | SRW   r/w
      +  ARW   r/w   | F4A/V r/w   | M4A/V r/w   | PBM   r/w   | SVG   r
      +  ASF   r     | FFF   r/w   | MACOS r     | PCD   r     | SWF   r
      +  AVI   r     | FITS  r     | MAX   r     | PCX   r     | THM   r/w
      +  AVIF  r/w   | FLA   r     | MEF   r/w   | PDB   r     | TIFF  r/w
      +  AZW   r     | FLAC  r     | MIE   r/w/  | PDF   r/w   | TORRENT r
      +  BMP   r     | FLIF  r/w   | MIFF  r   c | PEF   r/w   | TTC   r
      +  BPG   r     | FLV   r     | MKA   r     | PFA   r     | TTF   r
      +  BTF   r     | FPF   r     | MKS   r     | PFB   r     | TXT   r
      +  CHM   r     | FPX   r     | MKV   r     | PFM   r     | VCF   r
      +  COS   r     | GIF   r/w   | MNG   r/w   | PGF   r     | VRD   r/w/c
      +  CR2   r/w   | GPR   r/w   | MOBI  r     | PGM   r/w   | VSD   r
      +  CR3   r/w   | GZ    r     | MODD  r     | PLIST r     | WAV   r
      +  CRM   r/w   | HDP   r/w   | MOI   r     | PICT  r     | WDP   r/w
      +  CRW   r/w   | HDR   r     | MOS   r/w   | PMP   r     | WEBP  r
      +  CS1   r/w   | HEIC  r/w   | MOV   r/w   | PNG   r/w   | WEBM  r
      +  CSV   r     | HEIF  r/w   | MP3   r     | PPM   r/w   | WMA   r
      +  CZI   r     | HTML  r     | MP4   r/w   | PPT   r     | WMV   r
      +  DCM   r     | ICC   r/w/c | MPC   r     | PPTX  r     | WTV   r
      +  DCP   r/w   | ICS   r     | MPG   r     | PS    r/w   | WV    r
      +  DCR   r     | IDML  r     | MPO   r/w   | PSB   r/w   | X3F   r/w
      +  DFONT r     | IIQ   r/w   | MQV   r/w   | PSD   r/w   | XCF   r
      +  DIVX  r     | IND   r/w   | MRC   r     | PSP   r     | XLS   r
      +  DJVU  r     | INSP  r/w   | MRW   r/w   | QTIF  r/w   | XLSX  r
      +  DLL   r     | INSV  r     | MXF   r     | R3D   r     | XMP   r/w/c
      +  DNG   r/w   | INX   r     | NEF   r/w   | RA    r     | ZIP   r
      +  DOC   r     | ISO   r     | NKSC  r/w   | RAF   r/w   |
      +  DOCX  r     | ITC   r     | NRW   r/w   | RAM   r     |
      +  DPX   r     | J2C   r     | NUMBERS r   | RAR   r     |
       
         Meta Information
         ----------------------+----------------------+---------------------
      diff -Nru libimage-exiftool-perl-11.88/README libimage-exiftool-perl-12.40+dfsg/README
      --- libimage-exiftool-perl-11.88/README	2020-02-20 14:44:19.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/README	2022-02-09 12:19:14.000000000 +0000
      @@ -14,46 +14,48 @@
       
         File Types
         ------------+-------------+-------------+-------------+------------
      -  3FR   r     | DR4   r/w/c | ITC   r     | ODP   r     | RIFF  r
      -  3G2   r/w   | DSS   r     | J2C   r     | ODS   r     | RSRC  r
      -  3GP   r/w   | DV    r     | JNG   r/w   | ODT   r     | RTF   r
      -  A     r     | DVB   r/w   | JP2   r/w   | OFR   r     | RW2   r/w
      -  AA    r     | DVR-MS r    | JPEG  r/w   | OGG   r     | RWL   r/w
      -  AAE   r     | DYLIB r     | JSON  r     | OGV   r     | RWZ   r
      -  AAX   r/w   | EIP   r     | K25   r     | OPUS  r     | RM    r
      -  ACR   r     | EPS   r/w   | KDC   r     | ORF   r/w   | SEQ   r
      -  AFM   r     | EPUB  r     | KEY   r     | OTF   r     | SKETCH r
      -  AI    r/w   | ERF   r/w   | LA    r     | PAC   r     | SO    r
      -  AIFF  r     | EXE   r     | LFP   r     | PAGES r     | SR2   r/w
      -  APE   r     | EXIF  r/w/c | LNK   r     | PBM   r/w   | SRF   r
      -  ARQ   r/w   | EXR   r     | LRV   r/w   | PCD   r     | SRW   r/w
      -  ARW   r/w   | EXV   r/w/c | M2TS  r     | PCX   r     | SVG   r
      -  ASF   r     | F4A/V r/w   | M4A/V r/w   | PDB   r     | SWF   r
      -  AVI   r     | FFF   r/w   | MAX   r     | PDF   r/w   | THM   r/w
      -  AVIF  r/w   | FITS  r     | MEF   r/w   | PEF   r/w   | TIFF  r/w
      -  AZW   r     | FLA   r     | MIE   r/w/c | PFA   r     | TORRENT r
      -  BMP   r     | FLAC  r     | MIFF  r     | PFB   r     | TTC   r
      -  BPG   r     | FLIF  r/w   | MKA   r     | PFM   r     | TTF   r
      -  BTF   r     | FLV   r     | MKS   r     | PGF   r     | TXT   r
      -  CHM   r     | FPF   r     | MKV   r     | PGM   r/w   | VCF   r
      -  COS   r     | FPX   r     | MNG   r/w   | PLIST r     | VRD   r/w/c
      -  CR2   r/w   | GIF   r/w   | MOBI  r     | PICT  r     | VSD   r
      -  CR3   r/w   | GPR   r/w   | MODD  r     | PMP   r     | WAV   r
      -  CRM   r/w   | GZ    r     | MOI   r     | PNG   r/w   | WDP   r/w
      -  CRW   r/w   | HDP   r/w   | MOS   r/w   | PPM   r/w   | WEBP  r
      -  CS1   r/w   | HDR   r     | MOV   r/w   | PPT   r     | WEBM  r
      -  CSV   r     | HEIC  r/w   | MP3   r     | PPTX  r     | WMA   r
      -  DCM   r     | HEIF  r/w   | MP4   r/w   | PS    r/w   | WMV   r
      -  DCP   r/w   | HTML  r     | MPC   r     | PSB   r/w   | WTV   r
      -  DCR   r     | ICC   r/w/c | MPG   r     | PSD   r/w   | WV    r
      -  DFONT r     | ICS   r     | MPO   r/w   | PSP   r     | X3F   r/w
      -  DIVX  r     | IDML  r     | MQV   r/w   | QTIF  r/w   | XCF   r
      -  DJVU  r     | IIQ   r/w   | MRW   r/w   | R3D   r     | XLS   r
      -  DLL   r     | IND   r/w   | MXF   r     | RA    r     | XLSX  r
      -  DNG   r/w   | INSP  r/w   | NEF   r/w   | RAF   r/w   | XMP   r/w/c
      -  DOC   r     | INSV  r     | NRW   r/w   | RAM   r     | ZIP   r
      -  DOCX  r     | INX   r     | NUMBERS r   | RAR   r     |
      -  DPX   r     | ISO   r     | O     r     | RAW   r/w   |
      +  360   r/w   | DR4   r/w/c | JNG   r/w   | O     r     | RAW   r/w
      +  3FR   r     | DSS   r     | JP2   r/w   | ODP   r     | RIFF  r
      +  3G2   r/w   | DV    r     | JPEG  r/w   | ODS   r     | RSRC  r
      +  3GP   r/w   | DVB   r/w   | JSON  r     | ODT   r     | RTF   r
      +  A     r     | DVR-MS r    | JXL   r     | OFR   r     | RW2   r/w
      +  AA    r     | DYLIB r     | K25   r     | OGG   r     | RWL   r/w
      +  AAE   r     | EIP   r     | KDC   r     | OGV   r     | RWZ   r
      +  AAX   r/w   | EPS   r/w   | KEY   r     | ONP   r     | RM    r
      +  ACR   r     | EPUB  r     | LA    r     | OPUS  r     | SEQ   r
      +  AFM   r     | ERF   r/w   | LFP   r     | ORF   r/w   | SKETCH r
      +  AI    r/w   | EXE   r     | LIF   r     | ORI   r/w   | SO    r
      +  AIFF  r     | EXIF  r/w/c | LNK   r     | OTF   r     | SR2   r/w
      +  APE   r     | EXR   r     | LRV   r/w   | PAC   r     | SRF   r
      +  ARQ   r/w   | EXV   r/w/c | M2TS  r     | PAGES r     | SRW   r/w
      +  ARW   r/w   | F4A/V r/w   | M4A/V r/w   | PBM   r/w   | SVG   r
      +  ASF   r     | FFF   r/w   | MACOS r     | PCD   r     | SWF   r
      +  AVI   r     | FITS  r     | MAX   r     | PCX   r     | THM   r/w
      +  AVIF  r/w   | FLA   r     | MEF   r/w   | PDB   r     | TIFF  r/w
      +  AZW   r     | FLAC  r     | MIE   r/w/  | PDF   r/w   | TORRENT r
      +  BMP   r     | FLIF  r/w   | MIFF  r   c | PEF   r/w   | TTC   r
      +  BPG   r     | FLV   r     | MKA   r     | PFA   r     | TTF   r
      +  BTF   r     | FPF   r     | MKS   r     | PFB   r     | TXT   r
      +  CHM   r     | FPX   r     | MKV   r     | PFM   r     | VCF   r
      +  COS   r     | GIF   r/w   | MNG   r/w   | PGF   r     | VRD   r/w/c
      +  CR2   r/w   | GPR   r/w   | MOBI  r     | PGM   r/w   | VSD   r
      +  CR3   r/w   | GZ    r     | MODD  r     | PLIST r     | WAV   r
      +  CRM   r/w   | HDP   r/w   | MOI   r     | PICT  r     | WDP   r/w
      +  CRW   r/w   | HDR   r     | MOS   r/w   | PMP   r     | WEBP  r
      +  CS1   r/w   | HEIC  r/w   | MOV   r/w   | PNG   r/w   | WEBM  r
      +  CSV   r     | HEIF  r/w   | MP3   r     | PPM   r/w   | WMA   r
      +  CZI   r     | HTML  r     | MP4   r/w   | PPT   r     | WMV   r
      +  DCM   r     | ICC   r/w/c | MPC   r     | PPTX  r     | WTV   r
      +  DCP   r/w   | ICS   r     | MPG   r     | PS    r/w   | WV    r
      +  DCR   r     | IDML  r     | MPO   r/w   | PSB   r/w   | X3F   r/w
      +  DFONT r     | IIQ   r/w   | MQV   r/w   | PSD   r/w   | XCF   r
      +  DIVX  r     | IND   r/w   | MRC   r     | PSP   r     | XLS   r
      +  DJVU  r     | INSP  r/w   | MRW   r/w   | QTIF  r/w   | XLSX  r
      +  DLL   r     | INSV  r     | MXF   r     | R3D   r     | XMP   r/w/c
      +  DNG   r/w   | INX   r     | NEF   r/w   | RA    r     | ZIP   r
      +  DOC   r     | ISO   r     | NKSC  r/w   | RAF   r/w   |
      +  DOCX  r     | ITC   r     | NRW   r/w   | RAM   r     |
      +  DPX   r     | J2C   r     | NUMBERS r   | RAR   r     |
       
         Meta Information
         ----------------------+----------------------+---------------------
      @@ -105,8 +107,8 @@
       terminal window to extract and run ExifTool:
       
         cd ~/Desktop
      -  gzip -dc Image-ExifTool-11.88.tar.gz | tar -xf -
      -  cd Image-ExifTool-11.88
      +  gzip -dc Image-ExifTool-12.40.tar.gz | tar -xf -
      +  cd Image-ExifTool-12.40
         ./exiftool t/images/ExifTool.jpg
       
       Note:  These commands extract meta information from one of the test images. 
      @@ -160,7 +162,7 @@
       
       COPYRIGHT AND LICENSE
       
      -Copyright 2003-2020, Phil Harvey
      +Copyright 2003-2022, Phil Harvey
       
       This is free software; you can redistribute it and/or modify it under the
       same terms as Perl itself.
      @@ -193,10 +195,12 @@
           age.config                - Calculate Age of person in photo
           bibble.config             - Definitions for writing Bibble XMP tags
           convert_regions.config    - Convert between MWG, MP and IPTC regions
      +    cuepointlist.config       - Extract cue points and labels as a list
           depthmap.config           - Extract Google DepthMap images
           example.config            - General example showing config features
           fotoware.config           - Definitions for writing Fotoware XMP tags
           gps2utm.config            - Generate UTM coordinate tags from GPS info
      +    gpsdatetime.config        - Make GPSDateTime from CreateDate+SampleTime
           nksc.config               - Decode tags in Nikon ViewNX NKSC files
           photoshop_paths.config    - For extracting or copying Photoshop paths
           picasa_faces.config       - Convert from Picasa to MWG/MP face regions
      diff -Nru libimage-exiftool-perl-11.88/t/AFCP_2.out libimage-exiftool-perl-12.40+dfsg/t/AFCP_2.out
      --- libimage-exiftool-perl-11.88/t/AFCP_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/AFCP_2.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: AFCP.jpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1110 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:11:13-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:03:59-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -35,5 +35,5 @@
       [IPTC, IPTC2, Other] 120 - Caption-Abstract: ExifTool AFCP test
       [IPTC, IPTC2, Author] 122 - Writer-Editor: caption writer
       [IPTC, IPTC2, Location] 95 - Province-State: state
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/AIFF_2.out libimage-exiftool-perl-12.40+dfsg/t/AIFF_2.out
      --- libimage-exiftool-perl-11.88/t/AIFF_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/AIFF_2.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: AIFF.aif
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 290 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:06 15:05:23-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:11:40-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:03:59-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: AIFF
       [File, File, Other] FileTypeExtension - File Type Extension: aiff
      @@ -29,5 +29,5 @@
       [ID3, ID3v2_2, Time] TYE - Year: 2006
       [ID3, ID3v2_2, Audio] TCO - Genre: Techno
       [ID3, ID3v2_2, Audio] TCP - Compilation: Yes
      -[Composite, Composite, Other] AIFF::Duration - Duration: 0.52 s
      -[Composite, Composite, Time] ID3::DateTimeOriginal - Date/Time Original: 2006
      +[Composite, Composite, Other] AIFF-Duration - Duration: 0.52 s
      +[Composite, Composite, Time] ID3-DateTimeOriginal - Date/Time Original: 2006
      diff -Nru libimage-exiftool-perl-11.88/t/APE_2.out libimage-exiftool-perl-12.40+dfsg/t/APE_2.out
      --- libimage-exiftool-perl-11.88/t/APE_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/APE_2.out	2020-11-27 16:34:38.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: APE.ape
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.1 kB
      +[File, System, Other] FileSize - File Size: 2.1 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:11:14 11:04:22-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:11:40-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:22-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: APE
       [File, File, Other] FileTypeExtension - File Type Extension: ape
      @@ -27,4 +27,4 @@
       [APE, APE, Audio] Media Jukebox: Date - Media Jukebox Date: 38353
       [APE, APE, Audio] Cover Art (front) Desc - Cover Art Front Desc: X:\_kuvat\Kraftwerk - Cover Art Test.jpg
       [APE, APE, Preview] Cover Art (front) - Cover Art Front: (Binary data 1761 bytes)
      -[Composite, Composite, Audio] APE::Duration - Duration: 2.64 s
      +[Composite, Composite, Audio] APE-Duration - Duration: 2.64 s
      diff -Nru libimage-exiftool-perl-11.88/t/APE_3.out libimage-exiftool-perl-12.40+dfsg/t/APE_3.out
      --- libimage-exiftool-perl-11.88/t/APE_3.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/APE_3.out	2020-11-27 16:34:38.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: APE.mpc
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.5 kB
      +[File, System, Other] FileSize - File Size: 2.5 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:11:14 15:06:40-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:11:40-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:22-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: MPC
       [File, File, Other] FileTypeExtension - File Type Extension: mpc
      @@ -55,4 +55,4 @@
       [ID3, ID3v1, Audio] 97 - Comment: a nice comment
       [ID3, ID3v1, Audio] 125 - Track: 1
       [ID3, ID3v1, Audio] 127 - Genre: Funk
      -[Composite, Composite, Time] ID3::DateTimeOriginal - Date/Time Original: 2005
      +[Composite, Composite, Time] ID3-DateTimeOriginal - Date/Time Original: 2005
      diff -Nru libimage-exiftool-perl-11.88/t/ASF_2.out libimage-exiftool-perl-12.40+dfsg/t/ASF_2.out
      --- libimage-exiftool-perl-11.88/t/ASF_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ASF_2.out	2020-11-27 16:34:38.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: ASF.wmv
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 12 kB
      +[File, System, Other] FileSize - File Size: 12 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2005:12:27 07:29:29-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:11:40-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:23-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: WMV
       [File, File, Other] FileTypeExtension - File Type Extension: wmv
      @@ -52,5 +52,5 @@
       [ASF, ASF, Video] 48 - Stream Number: 2
       [ASF, ASF, Video] 54 - Image Width: 160
       [ASF, ASF, Video] 58 - Image Height: 120
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 160x120
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.019
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 160x120
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.019
      diff -Nru libimage-exiftool-perl-11.88/t/BigTIFF_2.out libimage-exiftool-perl-12.40+dfsg/t/BigTIFF_2.out
      --- libimage-exiftool-perl-11.88/t/BigTIFF_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/BigTIFF_2.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: BigTIFF.btf
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 384 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2010:03:16 13:49:45-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:11:40-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:00-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: BTF
       [File, File, Other] FileTypeExtension - File Type Extension: btf
      @@ -17,5 +17,5 @@
       [EXIF, IFD0, Image] 277 - Samples Per Pixel: 3
       [EXIF, IFD0, Image] 278 - Rows Per Strip: 8
       [EXIF, IFD0, Image] 279 - Strip Byte Counts: 192
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/BMP_2.out libimage-exiftool-perl-12.40+dfsg/t/BMP_2.out
      --- libimage-exiftool-perl-11.88/t/BMP_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/BMP_2.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: BMP.bmp
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1142 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2005:11:14 14:47:21-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:11:40-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:00-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: BMP
       [File, File, Other] FileTypeExtension - File Type Extension: bmp
      @@ -20,5 +20,5 @@
       [File, File, Image] 28 - Pixels Per Meter Y: 2835
       [File, File, Image] 32 - Num Colors: 256
       [File, File, Image] 36 - Num Important Colors: 256
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/BPG_2.out libimage-exiftool-perl-12.40+dfsg/t/BPG_2.out
      --- libimage-exiftool-perl-11.88/t/BPG_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/BPG_2.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,11 +1,11 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [ExifTool, ExifTool, ExifTool] Warning - Warning: [minor] Ignored extra byte at start of EXIF extension
       [File, System, Other] FileName - File Name: BPG.bpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1863 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2016:07:07 11:08:36-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:11:40-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2016:07:07 11:21:11-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:00-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: BPG
       [File, File, Other] FileTypeExtension - File Type Extension: bpg
      @@ -80,13 +80,13 @@
       [ICC_Profile, ICC_Profile, Image] rXYZ - Red Matrix Column: 0.60974 0.31111 0.01947
       [ICC_Profile, ICC_Profile, Image] gXYZ - Green Matrix Column: 0.20528 0.62567 0.06087
       [ICC_Profile, ICC_Profile, Image] bXYZ - Blue Matrix Column: 0.14919 0.06322 0.74457
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 5.6
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 16x16
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000256
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/60
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 23.3 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 55.0 mm (35 mm equivalent: 87.4 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 28.56 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 10.9
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 5.6
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 16x16
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000256
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/60
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 23.3 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 55.0 mm (35 mm equivalent: 87.4 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 28.56 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 10.9
      diff -Nru libimage-exiftool-perl-11.88/t/Canon_2.out libimage-exiftool-perl-12.40+dfsg/t/Canon_2.out
      --- libimage-exiftool-perl-11.88/t/Canon_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Canon_2.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Canon1DmkIII.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 8.1 kB
      +[File, System, Other] FileSize - File Size: 8.1 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2008:01:18 14:10:05-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:11:40-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:23-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -62,7 +62,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 8060
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Canon, Camera] 1 - Macro Mode: Normal
       [MakerNotes, Canon, Camera] 2 - Self Timer: Off
       [MakerNotes, Canon, Camera] 3 - Quality: Fine
      @@ -331,28 +331,28 @@
       [MakerNotes, Canon, Camera] 16400 - Custom Picture Style File Name: 
       [MakerNotes, Canon, Camera] 1 - AF Micro Adj Mode: Disable
       [MakerNotes, Canon, Camera] 2 - AF Micro Adj Value: 0
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Continuous Shooting
      -[Composite, Composite, Image] Canon::FileNumber - File Number: 108-0232
      -[Composite, Composite, Camera] Canon::ISO - ISO: 3200
      -[Composite, Composite, Camera] Canon::Lens - Lens: 16.0 - 35.0 mm
      -[Composite, Composite, Camera] Canon::OriginalDecisionData - Original Decision Data: (Binary data 512 bytes)
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Program AE
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 2275 1024 1024 1357
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 5.6
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.325195
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Canon EF 16-35mm f/2.8L II USM
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.22168
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.3
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/125
      -[Composite, Composite, Time] Exif::SubSecCreateDate - Create Date: 2007:02:22 17:02:42.81
      -[Composite, Composite, Time] Exif::SubSecDateTimeOriginal - Date/Time Original: 2007:02:22 17:02:42.81
      -[Composite, Composite, Time] Exif::SubSecModifyDate - Modify Date: 2007:02:22 17:02:42.81
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 16.0 - 35.0 mm (35 mm equivalent: 20.5 - 44.8 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.023 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.60 m (1.41 - 2.01 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 43.7 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 35.0 mm (35 mm equivalent: 44.8 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 9.33 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 6.9
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Continuous Shooting
      +[Composite, Composite, Image] Canon-FileNumber - File Number: 108-0232
      +[Composite, Composite, Camera] Canon-ISO - ISO: 3200
      +[Composite, Composite, Camera] Canon-Lens - Lens: 16.0 - 35.0 mm
      +[Composite, Composite, Camera] Canon-OriginalDecisionData - Original Decision Data: (Binary data 512 bytes)
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Program AE
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 2275 1024 1024 1357
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 5.6
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.325195
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Canon EF 16-35mm f/2.8L II USM
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.22168
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.3
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/125
      +[Composite, Composite, Time] Exif-SubSecCreateDate - Create Date: 2007:02:22 17:02:42.81
      +[Composite, Composite, Time] Exif-SubSecDateTimeOriginal - Date/Time Original: 2007:02:22 17:02:42.81
      +[Composite, Composite, Time] Exif-SubSecModifyDate - Modify Date: 2007:02:22 17:02:42.81
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 16.0 - 35.0 mm (35 mm equivalent: 20.5 - 44.8 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.023 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.60 m (1.41 - 2.01 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 43.7 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 35.0 mm (35 mm equivalent: 44.8 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 9.33 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 6.9
      diff -Nru libimage-exiftool-perl-11.88/t/Canon_3.out libimage-exiftool-perl-12.40+dfsg/t/Canon_3.out
      --- libimage-exiftool-perl-11.88/t/Canon_3.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Canon_3.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,3 +1,3 @@
       [MakerNotes, CanonCustom, Camera] 259 - ISO Speed Range: Enable; Max 1600; Min 200
       [MakerNotes, CanonCustom, Camera] 2060 - Timer Length: Enable; 6 s: 5; 16 s: 20; After release: 6
      -[Composite, Composite, Camera] Canon::OriginalDecisionData - Original Decision Data: (Binary data 512 bytes)
      +[Composite, Composite, Camera] Canon-OriginalDecisionData - Original Decision Data: (Binary data 512 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/CanonRaw_2.out libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_2.out
      --- libimage-exiftool-perl-11.88/t/CanonRaw_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_2.out	2020-11-27 16:34:38.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: CanonRaw.crw
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 6.7 kB
      +[File, System, Other] FileSize - File Size: 6.7 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2012:01:22 13:31:59-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:10:41-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:23-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: CRW
       [File, File, Other] FileTypeExtension - File Type Extension: crw
      @@ -143,27 +143,27 @@
       [MakerNotes, CanonRaw, Camera] 6203 - Serial Number Format: Format 1
       [XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 8.31
       [XMP, XMP-dc, Image] description - Description: CRW with embedded XMP
      -[Composite, Composite, Camera] Canon::ConditionalFEC - Flash Exposure Compensation: +2/3
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Continuous Shooting
      -[Composite, Composite, Camera] Canon::FlashType - Flash Type: Built-In Flash
      -[Composite, Composite, Camera] Canon::ISO - ISO: 100
      -[Composite, Composite, Camera] Canon::Lens - Lens: 18.0 - 55.0 mm
      -[Composite, Composite, Camera] Canon::RedEyeReduction - Red Eye Reduction: Off
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Program AE
      -[Composite, Composite, Camera] Canon::ShutterCurtainHack - Shutter Curtain Sync: 1st-curtain sync
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 1740 832 831 931
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.6
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.119663
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 3072x2048
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Unknown 18-55mm
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 6.3
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.092604
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 27.9 - 85.3 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.41 m (1.13 - 1.54 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 51.6 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 24.0 mm (35 mm equivalent: 37.2 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 8.34 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.7
      +[Composite, Composite, Camera] Canon-ConditionalFEC - Flash Exposure Compensation: +2/3
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Continuous Shooting
      +[Composite, Composite, Camera] Canon-FlashType - Flash Type: Built-In Flash
      +[Composite, Composite, Camera] Canon-ISO - ISO: 100
      +[Composite, Composite, Camera] Canon-Lens - Lens: 18.0 - 55.0 mm
      +[Composite, Composite, Camera] Canon-RedEyeReduction - Red Eye Reduction: Off
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Program AE
      +[Composite, Composite, Camera] Canon-ShutterCurtainHack - Shutter Curtain Sync: 1st-curtain sync
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 1740 832 831 931
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.6
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.119663
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 3072x2048
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Unknown 18-55mm
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 6.3
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.092604
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 27.9 - 85.3 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.41 m (1.13 - 1.54 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 51.6 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 24.0 mm (35 mm equivalent: 37.2 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 8.34 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.7
      diff -Nru libimage-exiftool-perl-11.88/t/CanonRaw_4.out libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_4.out
      --- libimage-exiftool-perl-11.88/t/CanonRaw_4.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_4.out	2020-11-27 16:34:38.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: CanonRaw_4_failed.crw
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 13 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:18-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:17-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:18-04:00
      +[File, System, Other] FileSize - File Size: 13 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:24-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:24-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:24-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: CRW
       [File, File, Other] FileTypeExtension - File Type Extension: crw
      @@ -142,7 +142,7 @@
       [MakerNotes, CanonRaw, Image] 3 - Raw Jpg Width: 2048
       [MakerNotes, CanonRaw, Image] 4 - Raw Jpg Height: 1360
       [MakerNotes, CanonRaw, Camera] 6203 - Serial Number Format: Format 1
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-aux, Camera] Lens - Lens: 18.0 - 55.0 mm
       [XMP, XMP-crs, Image] Temperature - Color Temperature: 5200
       [XMP, XMP-dc, Image] description - Description: CRW with embedded XMP
      @@ -198,24 +198,24 @@
       [XMP, XMP-tiff, Image] YResolution - Y Resolution: 180
       [XMP, XMP-xmp, Time] CreateDate - Create Date: 2003:12:04 06:46:52
       [XMP, XMP-xmp, Time] ModifyDate - Modify Date: 2003:12:04 06:46:52
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Continuous Shooting
      -[Composite, Composite, Camera] Canon::ISO - ISO: 100
      -[Composite, Composite, Camera] Canon::Lens - Lens: 18.0 - 55.0 mm
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Bulb
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 1719 832 831 990
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 14.3
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 4
      -[Composite, Composite, Camera] XMP::Flash - Flash: No Flash
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.190619
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 3072x2048
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Unknown 18-55mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 5.7
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 6.3
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.067348
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.0
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 18.4 - 56.1 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.029 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: inf (2.73 m - inf)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 54.9 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 34.0 mm (35 mm equivalent: 34.7 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 2.75 m
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Continuous Shooting
      +[Composite, Composite, Camera] Canon-ISO - ISO: 100
      +[Composite, Composite, Camera] Canon-Lens - Lens: 18.0 - 55.0 mm
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Bulb
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 1719 832 831 990
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 14.3
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 4
      +[Composite, Composite, Camera] XMP-Flash - Flash: No Flash
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.190619
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 3072x2048
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Unknown 18-55mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 5.7
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 6.3
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.067348
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.0
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 18.4 - 56.1 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.029 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: inf (2.73 m - inf)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 54.9 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 34.0 mm (35 mm equivalent: 34.7 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 2.75 m
      diff -Nru libimage-exiftool-perl-11.88/t/CanonRaw_6.out libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_6.out
      --- libimage-exiftool-perl-11.88/t/CanonRaw_6.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_6.out	2020-11-27 16:34:38.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: CanonRaw_6_failed.cr2
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 8.6 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:18-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:18-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:18-04:00
      +[File, System, Other] FileSize - File Size: 8.6 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:24-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:24-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:24-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: CR2
       [File, File, Other] FileTypeExtension - File Type Extension: cr2
      @@ -70,8 +70,8 @@
       [EXIF, IFD3, Image] 279 - Strip Byte Counts: 16
       [EXIF, IFD3, Image] 50656 - CR2 CFA Pattern: [Red,Green][Green,Blue]
       [EXIF, IFD3, Image] 50752 - Raw Image Segmentation: 1 1758 1758
      -[EXIF, IFD0, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD0, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [IPTC, IPTC, Other] 25 - Keywords: CR2 test
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
       [MakerNotes, Canon, Camera] 1 - Macro Mode: Normal
      @@ -213,22 +213,22 @@
       [MakerNotes, Canon, Camera] 70 - WB RGGB Levels Custom 2: 2312 1022 1024 1501
       [MakerNotes, Canon, Camera] 74 - Color Temp Custom 2: 5200
       [MakerNotes, Canon, Camera] 2 - Color Tone: Normal
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Single-frame Shooting
      -[Composite, Composite, Camera] Canon::ISO - ISO: 400
      -[Composite, Composite, Camera] Canon::Lens - Lens: 18.0 - 55.0 mm
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Aperture-priority AE
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 2002 1185 1187 2364
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 8.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/15
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.993255
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 3456x2304
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Unknown 18-55mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 7.9
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 8.0
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.688027
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 29.2 - 89.2 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 22.8 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 55.0 mm (35 mm equivalent: 89.2 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 20.42 m
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Single-frame Shooting
      +[Composite, Composite, Camera] Canon-ISO - ISO: 400
      +[Composite, Composite, Camera] Canon-Lens - Lens: 18.0 - 55.0 mm
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Aperture-priority AE
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 2002 1185 1187 2364
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 8.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/15
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.993255
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 3456x2304
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Unknown 18-55mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 7.9
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 8.0
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.688027
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 29.2 - 89.2 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 22.8 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 55.0 mm (35 mm equivalent: 89.2 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 20.42 m
      diff -Nru libimage-exiftool-perl-11.88/t/CanonRaw_7.out libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_7.out
      --- libimage-exiftool-perl-11.88/t/CanonRaw_7.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_7.out	2020-11-27 16:34:38.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: CanonRaw_7_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 7.2 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:18-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:18-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:18-04:00
      +[File, System, Other] FileSize - File Size: 7.2 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:24-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:24-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:24-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -210,7 +210,7 @@
       [MakerNotes, Canon, Camera] 52 - Camera Color Calibration 14:  770  382  248 (2871K)
       [MakerNotes, Canon, Camera] 56 - Camera Color Calibration 15:  949  307  397 (2413K)
       [MakerNotes, Canon, Camera] 2 - Color Tone: Normal
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-aux, Camera] Lens - Lens: 18.0 - 55.0 mm
       [XMP, XMP-exif, Image] ComponentsConfiguration - Components Configuration: -, -, -, -
       [XMP, XMP-exif, Camera] FlashFired - Flash Fired: False
      @@ -229,23 +229,23 @@
       [XMP, XMP-tiff, Image] SamplesPerPixel - Samples Per Pixel: 3
       [XMP, XMP-crs, Image] Temperature - Color Temperature: 5200
       [XMP, XMP-crs, Image] ToneCurve - Tone Curve: Standard
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Single-frame Shooting
      -[Composite, Composite, Camera] Canon::ISO - ISO: 400
      -[Composite, Composite, Camera] Canon::Lens - Lens: 18.0 - 55.0 mm
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Aperture-priority AE
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 2002 1185 1187 2364
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 8.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/15
      -[Composite, Composite, Camera] XMP::Flash - Flash: Off, Did not fire
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.993255
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Unknown 18-55mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 7.9
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.688027
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 28.1 - 85.9 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 23.7 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 55.0 mm (35 mm equivalent: 85.9 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 19.66 m
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Single-frame Shooting
      +[Composite, Composite, Camera] Canon-ISO - ISO: 400
      +[Composite, Composite, Camera] Canon-Lens - Lens: 18.0 - 55.0 mm
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Aperture-priority AE
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 2002 1185 1187 2364
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 8.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/15
      +[Composite, Composite, Camera] XMP-Flash - Flash: Off, Did not fire
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.993255
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Unknown 18-55mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 7.9
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.688027
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 28.1 - 85.9 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 23.7 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 55.0 mm (35 mm equivalent: 85.9 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 19.66 m
      diff -Nru libimage-exiftool-perl-11.88/t/CanonRaw_8.out libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_8.out
      --- libimage-exiftool-perl-11.88/t/CanonRaw_8.out	2019-12-18 17:06:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_8.out	2021-10-16 16:50:49.000000000 +0000
      @@ -1,11 +1,11 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.81
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.33
       [File, System, Other] FileName - File Name: CanonRaw.cr3
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 51 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:03:26 08:01:49-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:18 11:12:35-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:17 10:26:28-05:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 51 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:28 07:22:08-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:09:30 11:42:30-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:09:30 11:41:12-04:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: CR3
       [File, File, Other] FileTypeExtension - File Type Extension: cr3
       [File, File, Other] MIMEType - MIME Type: image/x-canon-cr3
      @@ -17,8 +17,8 @@
       [QuickTime, QuickTime, Video] 1 - Minor Version: 0.0.1
       [QuickTime, QuickTime, Video] 2 - Compatible Brands: crx , isom
       [QuickTime, QuickTime, Video] 0 - Movie Header Version: 0
      -[QuickTime, QuickTime, Time] 1 - Create Date: 2018:02:21 12:08:56
      -[QuickTime, QuickTime, Time] 2 - Modify Date: 2018:02:21 12:08:56
      +[QuickTime, QuickTime, Time] 1 - Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, QuickTime, Time] 2 - Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, QuickTime, Video] 3 - Time Scale: 1
       [QuickTime, QuickTime, Video] 4 - Duration: 1.00 s
       [QuickTime, QuickTime, Video] 5 - Preferred Rate: 1
      @@ -32,8 +32,8 @@
       [QuickTime, QuickTime, Video] 23 - Current Time: 0 s
       [QuickTime, QuickTime, Video] 24 - Next Track ID: 5
       [QuickTime, Track1, Video] 0 - Track Header Version: 0
      -[QuickTime, Track1, Time] 1 - Track Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track1, Time] 2 - Track Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track1, Time] 1 - Track Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track1, Time] 2 - Track Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track1, Video] 3 - Track ID: 1
       [QuickTime, Track1, Video] 5 - Track Duration: 1.00 s
       [QuickTime, Track1, Video] 8 - Track Layer: 0
      @@ -42,8 +42,8 @@
       [QuickTime, Track1, Video] 19 - Image Width: 6000
       [QuickTime, Track1, Video] 20 - Image Height: 4000
       [QuickTime, Track1, Video] 0 - Media Header Version: 0
      -[QuickTime, Track1, Time] 1 - Media Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track1, Time] 2 - Media Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track1, Time] 1 - Media Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track1, Time] 2 - Media Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track1, Video] 3 - Media Time Scale: 1
       [QuickTime, Track1, Video] 4 - Media Duration: 1.00 s
       [QuickTime, Track1, Video] 5 - Media Language Code: eng
      @@ -61,8 +61,8 @@
       [QuickTime, Track1, Video] SampleDuration - Sample Duration: 1.00 s
       [QuickTime, Track1, Preview] JPEG - Jpg From Raw: (Binary data 29 bytes)
       [QuickTime, Track2, Video] 0 - Track Header Version: 0
      -[QuickTime, Track2, Time] 1 - Track Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track2, Time] 2 - Track Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track2, Time] 1 - Track Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track2, Time] 2 - Track Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track2, Video] 3 - Track ID: 2
       [QuickTime, Track2, Video] 5 - Track Duration: 1.00 s
       [QuickTime, Track2, Video] 8 - Track Layer: 0
      @@ -71,8 +71,8 @@
       [QuickTime, Track2, Video] 19 - Image Width: 1624
       [QuickTime, Track2, Video] 20 - Image Height: 1080
       [QuickTime, Track2, Video] 0 - Media Header Version: 0
      -[QuickTime, Track2, Time] 1 - Media Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track2, Time] 2 - Media Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track2, Time] 1 - Media Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track2, Time] 2 - Media Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track2, Video] 3 - Media Time Scale: 1
       [QuickTime, Track2, Video] 4 - Media Duration: 1.00 s
       [QuickTime, Track2, Video] 5 - Media Language Code: eng
      @@ -87,8 +87,8 @@
       [QuickTime, Track2, Image] 41 - Bit Depth: 24
       [QuickTime, Track2, Video] stts - Video Frame Rate: 1
       [QuickTime, Track3, Video] 0 - Track Header Version: 0
      -[QuickTime, Track3, Time] 1 - Track Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track3, Time] 2 - Track Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track3, Time] 1 - Track Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track3, Time] 2 - Track Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track3, Video] 3 - Track ID: 3
       [QuickTime, Track3, Video] 5 - Track Duration: 1.00 s
       [QuickTime, Track3, Video] 8 - Track Layer: 0
      @@ -97,8 +97,8 @@
       [QuickTime, Track3, Video] 19 - Image Width: 6288
       [QuickTime, Track3, Video] 20 - Image Height: 4056
       [QuickTime, Track3, Video] 0 - Media Header Version: 0
      -[QuickTime, Track3, Time] 1 - Media Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track3, Time] 2 - Media Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track3, Time] 1 - Media Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track3, Time] 2 - Media Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track3, Video] 3 - Media Time Scale: 1
       [QuickTime, Track3, Video] 4 - Media Duration: 1.00 s
       [QuickTime, Track3, Video] 5 - Media Language Code: eng
      @@ -113,16 +113,16 @@
       [QuickTime, Track3, Image] 41 - Bit Depth: 24
       [QuickTime, Track3, Video] stts - Video Frame Rate: 1
       [QuickTime, Track4, Video] 0 - Track Header Version: 0
      -[QuickTime, Track4, Time] 1 - Track Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track4, Time] 2 - Track Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track4, Time] 1 - Track Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track4, Time] 2 - Track Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track4, Video] 3 - Track ID: 4
       [QuickTime, Track4, Video] 5 - Track Duration: 1.00 s
       [QuickTime, Track4, Video] 8 - Track Layer: 0
       [QuickTime, Track4, Video] 9 - Track Volume: 0.00%
       [QuickTime, Track4, Video] 10 - Matrix Structure: 1 0 0 0 1 0 0 0 1
       [QuickTime, Track4, Video] 0 - Media Header Version: 0
      -[QuickTime, Track4, Time] 1 - Media Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track4, Time] 2 - Media Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track4, Time] 1 - Media Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track4, Time] 2 - Media Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track4, Video] 3 - Media Time Scale: 1
       [QuickTime, Track4, Video] 4 - Media Duration: 1.00 s
       [QuickTime, Track4, Video] 5 - Media Language Code: eng
      @@ -220,7 +220,9 @@
       [MakerNotes, Canon, Image] 19 - Live View Shooting: On
       [MakerNotes, Canon, Image] 20 - Focus Distance Upper: 0.24 m
       [MakerNotes, Canon, Image] 21 - Focus Distance Lower: 0.22 m
      +[MakerNotes, Canon, Image] 23 - Shutter Mode: Electronic First Curtain
       [MakerNotes, Canon, Image] 25 - Flash Exposure Lock: Off
      +[MakerNotes, Canon, Image] 61 - RF Lens Type: n/a
       [MakerNotes, Canon, Camera] 149 - Lens Model: EF-M15-45mm f/3.5-6.3 IS STM
       [MakerNotes, Canon, Camera] 150 - Internal Serial Number: CG0156580
       [MakerNotes, Canon, Camera] 151 - Dust Removal Data: (Binary data 1024 bytes)
      @@ -374,7 +376,9 @@
       [MakerNotes, Track4, Image] 19 - Live View Shooting: On
       [MakerNotes, Track4, Image] 20 - Focus Distance Upper: 0.24 m
       [MakerNotes, Track4, Image] 21 - Focus Distance Lower: 0.22 m
      +[MakerNotes, Track4, Image] 23 - Shutter Mode: Electronic First Curtain
       [MakerNotes, Track4, Image] 25 - Flash Exposure Lock: Off
      +[MakerNotes, Track4, Image] 61 - RF Lens Type: n/a
       [MakerNotes, Track4, Image] 1 - Tone Curve: Standard
       [MakerNotes, Track4, Image] 2 - Sharpness: 4
       [MakerNotes, Track4, Image] 3 - Sharpness Frequency: n/a
      @@ -415,6 +419,7 @@
       [MakerNotes, Track4, Camera] 796 - Normal White Level: 13035
       [MakerNotes, Track4, Camera] 797 - Specular White Level: 14338
       [MakerNotes, Track4, Camera] 798 - Linearity Upper Margin: 10025
      +[MakerNotes, Track4, Camera] 1473 - Firmware Version: 1.0.0
       [MakerNotes, Track4, Camera] 0 - Vignetting Corr Version: 32
       [EXIF, IFD0, Image] 256 - Image Width: 6000
       [EXIF, IFD0, Image] 257 - Image Height: 4000
      @@ -471,32 +476,32 @@
       [EXIF, GPS, Location] 0 - GPS Version ID: 2.3.0.0
       [EXIF, ExifIFD, Camera] 41990 - Scene Capture Type: Standard
       [XMP, XMP-xmp, Image] Rating - Rating: 0
      -[Composite, Composite, Camera] Canon::ConditionalFEC - Flash Exposure Compensation: 0
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Single-frame Shooting
      -[Composite, Composite, Camera] Canon::FlashType - Flash Type: Built-In Flash
      -[Composite, Composite, Camera] Canon::ISO - ISO: 12800
      -[Composite, Composite, Camera] Canon::Lens - Lens: 15.0 - 45.0 mm
      -[Composite, Composite, Camera] Canon::RedEyeReduction - Red Eye Reduction: Off
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Aperture-priority AE
      -[Composite, Composite, Camera] Canon::ShutterCurtainHack - Shutter Curtain Sync: 1st-curtain sync
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 1104 1024 1024 1789
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/80
      -[Composite, Composite, Time] Exif::SubSecCreateDate - Create Date: 2018:02:21 12:08:56.21+00:00
      -[Composite, Composite, Time] Exif::SubSecDateTimeOriginal - Date/Time Original: 2018:02:21 12:08:56.21+00:00
      -[Composite, Composite, Time] Exif::SubSecModifyDate - Modify Date: 2018:02:21 12:08:56.21+00:00
      -[Composite, Composite, Video] QuickTime::AvgBitrate - Avg Bitrate: 329 kbps
      -[Composite, Composite, Video] QuickTime::Rotation - Rotation: 0
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.74707
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 6000x4000
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Canon EF-M 15-45mm f/3.5-6.3 IS STM
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 2.9
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 24.0
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.078125
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 15.0 - 45.0 mm (35 mm equivalent: 23.3 - 69.9 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.03 m (0.22 - 0.25 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 75.3 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 15.0 mm (35 mm equivalent: 23.3 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 3.33 m
      +[Composite, Composite, Camera] Canon-ConditionalFEC - Flash Exposure Compensation: 0
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Single-frame Shooting
      +[Composite, Composite, Camera] Canon-FlashType - Flash Type: Built-In Flash
      +[Composite, Composite, Camera] Canon-ISO - ISO: 12800
      +[Composite, Composite, Camera] Canon-Lens - Lens: 15.0 - 45.0 mm
      +[Composite, Composite, Camera] Canon-RedEyeReduction - Red Eye Reduction: Off
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Aperture-priority AE
      +[Composite, Composite, Camera] Canon-ShutterCurtainHack - Shutter Curtain Sync: 1st-curtain sync
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 1104 1024 1024 1789
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/80
      +[Composite, Composite, Time] Exif-SubSecCreateDate - Create Date: 2018:02:21 12:08:56.21+00:00
      +[Composite, Composite, Time] Exif-SubSecDateTimeOriginal - Date/Time Original: 2018:02:21 12:08:56.21+00:00
      +[Composite, Composite, Time] Exif-SubSecModifyDate - Modify Date: 2018:02:21 12:08:56.21+00:00
      +[Composite, Composite, Video] QuickTime-AvgBitrate - Avg Bitrate: 329 kbps
      +[Composite, Composite, Video] QuickTime-Rotation - Rotation: 0
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.74707
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 6000x4000
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Canon EF-M 15-45mm f/3.5-6.3 IS STM
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 2.9
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 24.0
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.078125
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 15.0 - 45.0 mm (35 mm equivalent: 23.3 - 69.9 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.03 m (0.22 - 0.25 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 75.3 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 15.0 mm (35 mm equivalent: 23.3 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 3.33 m
      diff -Nru libimage-exiftool-perl-11.88/t/CanonRaw_9.out libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_9.out
      --- libimage-exiftool-perl-11.88/t/CanonRaw_9.out	2019-12-18 17:06:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonRaw_9.out	2021-10-16 16:50:49.000000000 +0000
      @@ -1,11 +1,11 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.81
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.33
       [File, System, Other] FileName - File Name: CanonRaw_9_failed.cr3
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 52 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:18 12:04:37-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:18 12:04:37-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:18 12:04:37-05:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 52 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:10:16 12:45:16-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:10:16 12:45:16-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:10:16 12:45:16-04:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: CR3
       [File, File, Other] FileTypeExtension - File Type Extension: cr3
       [File, File, Other] MIMEType - MIME Type: image/x-canon-cr3
      @@ -17,8 +17,8 @@
       [QuickTime, QuickTime, Video] 1 - Minor Version: 0.0.1
       [QuickTime, QuickTime, Video] 2 - Compatible Brands: crx , isom
       [QuickTime, QuickTime, Video] 0 - Movie Header Version: 0
      -[QuickTime, QuickTime, Time] 1 - Create Date: 2018:02:21 12:08:56
      -[QuickTime, QuickTime, Time] 2 - Modify Date: 2018:02:21 12:08:56
      +[QuickTime, QuickTime, Time] 1 - Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, QuickTime, Time] 2 - Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, QuickTime, Video] 3 - Time Scale: 1
       [QuickTime, QuickTime, Video] 4 - Duration: 1.00 s
       [QuickTime, QuickTime, Video] 5 - Preferred Rate: 1
      @@ -32,8 +32,8 @@
       [QuickTime, QuickTime, Video] 23 - Current Time: 0 s
       [QuickTime, QuickTime, Video] 24 - Next Track ID: 5
       [QuickTime, Track1, Video] 0 - Track Header Version: 0
      -[QuickTime, Track1, Time] 1 - Track Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track1, Time] 2 - Track Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track1, Time] 1 - Track Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track1, Time] 2 - Track Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track1, Video] 3 - Track ID: 1
       [QuickTime, Track1, Video] 5 - Track Duration: 1.00 s
       [QuickTime, Track1, Video] 8 - Track Layer: 0
      @@ -42,8 +42,8 @@
       [QuickTime, Track1, Video] 19 - Image Width: 6000
       [QuickTime, Track1, Video] 20 - Image Height: 4000
       [QuickTime, Track1, Video] 0 - Media Header Version: 0
      -[QuickTime, Track1, Time] 1 - Media Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track1, Time] 2 - Media Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track1, Time] 1 - Media Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track1, Time] 2 - Media Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track1, Video] 3 - Media Time Scale: 1
       [QuickTime, Track1, Video] 4 - Media Duration: 1.00 s
       [QuickTime, Track1, Video] 5 - Media Language Code: eng
      @@ -67,8 +67,8 @@
       [QuickTime, Track1, Video] SampleDuration - Sample Duration: 1.00 s
       [QuickTime, Track1, Preview] JPEG - Jpg From Raw: (Binary data 29 bytes)
       [QuickTime, Track2, Video] 0 - Track Header Version: 0
      -[QuickTime, Track2, Time] 1 - Track Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track2, Time] 2 - Track Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track2, Time] 1 - Track Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track2, Time] 2 - Track Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track2, Video] 3 - Track ID: 2
       [QuickTime, Track2, Video] 5 - Track Duration: 1.00 s
       [QuickTime, Track2, Video] 8 - Track Layer: 0
      @@ -77,8 +77,8 @@
       [QuickTime, Track2, Video] 19 - Image Width: 1624
       [QuickTime, Track2, Video] 20 - Image Height: 1080
       [QuickTime, Track2, Video] 0 - Media Header Version: 0
      -[QuickTime, Track2, Time] 1 - Media Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track2, Time] 2 - Media Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track2, Time] 1 - Media Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track2, Time] 2 - Media Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track2, Video] 3 - Media Time Scale: 1
       [QuickTime, Track2, Video] 4 - Media Duration: 1.00 s
       [QuickTime, Track2, Video] 5 - Media Language Code: eng
      @@ -98,8 +98,8 @@
       [QuickTime, Track2, Video] free - Unknown free: 
       [QuickTime, Track2, Video] co64 - Chunk Offset 64: (Binary data 16 bytes)
       [QuickTime, Track3, Video] 0 - Track Header Version: 0
      -[QuickTime, Track3, Time] 1 - Track Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track3, Time] 2 - Track Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track3, Time] 1 - Track Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track3, Time] 2 - Track Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track3, Video] 3 - Track ID: 3
       [QuickTime, Track3, Video] 5 - Track Duration: 1.00 s
       [QuickTime, Track3, Video] 8 - Track Layer: 0
      @@ -108,8 +108,8 @@
       [QuickTime, Track3, Video] 19 - Image Width: 6288
       [QuickTime, Track3, Video] 20 - Image Height: 4056
       [QuickTime, Track3, Video] 0 - Media Header Version: 0
      -[QuickTime, Track3, Time] 1 - Media Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track3, Time] 2 - Media Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track3, Time] 1 - Media Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track3, Time] 2 - Media Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track3, Video] 3 - Media Time Scale: 1
       [QuickTime, Track3, Video] 4 - Media Duration: 1.00 s
       [QuickTime, Track3, Video] 5 - Media Language Code: eng
      @@ -129,16 +129,16 @@
       [QuickTime, Track3, Video] free - Unknown free: 
       [QuickTime, Track3, Video] co64 - Chunk Offset 64: (Binary data 16 bytes)
       [QuickTime, Track4, Video] 0 - Track Header Version: 0
      -[QuickTime, Track4, Time] 1 - Track Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track4, Time] 2 - Track Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track4, Time] 1 - Track Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track4, Time] 2 - Track Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track4, Video] 3 - Track ID: 4
       [QuickTime, Track4, Video] 5 - Track Duration: 1.00 s
       [QuickTime, Track4, Video] 8 - Track Layer: 0
       [QuickTime, Track4, Video] 9 - Track Volume: 0.00%
       [QuickTime, Track4, Video] 10 - Matrix Structure: 1 0 0 0 1 0 0 0 1
       [QuickTime, Track4, Video] 0 - Media Header Version: 0
      -[QuickTime, Track4, Time] 1 - Media Create Date: 2018:02:21 12:08:56
      -[QuickTime, Track4, Time] 2 - Media Modify Date: 2018:02:21 12:08:56
      +[QuickTime, Track4, Time] 1 - Media Create Date: 2018:02:21 07:08:56-05:00
      +[QuickTime, Track4, Time] 2 - Media Modify Date: 2018:02:21 07:08:56-05:00
       [QuickTime, Track4, Video] 3 - Media Time Scale: 1
       [QuickTime, Track4, Video] 4 - Media Duration: 1.00 s
       [QuickTime, Track4, Video] 5 - Media Language Code: eng
      @@ -256,7 +256,9 @@
       [MakerNotes, Canon, Image] 19 - Live View Shooting: On
       [MakerNotes, Canon, Image] 20 - Focus Distance Upper: 0.24 m
       [MakerNotes, Canon, Image] 21 - Focus Distance Lower: 0.22 m
      +[MakerNotes, Canon, Image] 23 - Shutter Mode: Electronic First Curtain
       [MakerNotes, Canon, Image] 25 - Flash Exposure Lock: Off
      +[MakerNotes, Canon, Image] 61 - RF Lens Type: n/a
       [MakerNotes, Canon, Camera] 149 - Lens Model: EF-M15-45mm f/3.5-6.3 IS STM
       [MakerNotes, Canon, Camera] 150 - Internal Serial Number: CG0156580
       [MakerNotes, Canon, Camera] 151 - Dust Removal Data: (Binary data 1024 bytes)
      @@ -419,7 +421,9 @@
       [MakerNotes, Track4, Image] 19 - Live View Shooting: On
       [MakerNotes, Track4, Image] 20 - Focus Distance Upper: 0.24 m
       [MakerNotes, Track4, Image] 21 - Focus Distance Lower: 0.22 m
      +[MakerNotes, Track4, Image] 23 - Shutter Mode: Electronic First Curtain
       [MakerNotes, Track4, Image] 25 - Flash Exposure Lock: Off
      +[MakerNotes, Track4, Image] 61 - RF Lens Type: n/a
       [MakerNotes, Track4, Image] 1 - Tone Curve: Standard
       [MakerNotes, Track4, Image] 2 - Sharpness: 4
       [MakerNotes, Track4, Image] 3 - Sharpness Frequency: n/a
      @@ -534,6 +538,7 @@
       [MakerNotes, Track4, Camera] 797 - Specular White Level: 14338
       [MakerNotes, Track4, Camera] 798 - Linearity Upper Margin: 10025
       [MakerNotes, Track4, Camera] 16389 - Flavor: (Binary data 32476 bytes)
      +[MakerNotes, Track4, Camera] 1473 - Firmware Version: 1.0.0
       [MakerNotes, Track4, Camera] 0 - Vignetting Corr Version: 32
       [MakerNotes, Track4, Camera] 16435 - Canon 0x4033: [...]
       [MakerNotes, Track4, Camera] 16430 - Canon 0x402e: ."..@.þÿ.þñ?...,I“À[...]
      @@ -591,36 +596,36 @@
       [EXIF, ExifIFD, Image] 42037 - Lens Serial Number: 0000000000
       [EXIF, GPS, Location] 0 - GPS Version ID: 2.3.0.0
       [EXIF, ExifIFD, Camera] 41990 - Scene Capture Type: Standard
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.81
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.33
       [XMP, XMP-dc, Image] subject - Subject: CR3 test
       [XMP, XMP-exif, Image] ExposureBiasValue - Exposure Compensation: -1.3
       [XMP, XMP-xmp, Image] Rating - Rating: 0
      -[Composite, Composite, Camera] Canon::ConditionalFEC - Flash Exposure Compensation: 0
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Single-frame Shooting
      -[Composite, Composite, Camera] Canon::FlashType - Flash Type: Built-In Flash
      -[Composite, Composite, Camera] Canon::ISO - ISO: 12800
      -[Composite, Composite, Camera] Canon::Lens - Lens: 15.0 - 45.0 mm
      -[Composite, Composite, Camera] Canon::RedEyeReduction - Red Eye Reduction: Off
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Aperture-priority AE
      -[Composite, Composite, Camera] Canon::ShutterCurtainHack - Shutter Curtain Sync: 1st-curtain sync
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 1104 1024 1024 1789
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/80
      -[Composite, Composite, Time] Exif::SubSecCreateDate - Create Date: 2018:02:21 12:08:56.21+00:00
      -[Composite, Composite, Time] Exif::SubSecDateTimeOriginal - Date/Time Original: 2018:02:21 12:08:56.21+00:00
      -[Composite, Composite, Time] Exif::SubSecModifyDate - Modify Date: 2018:02:21 12:08:56.21+00:00
      -[Composite, Composite, Video] QuickTime::AvgBitrate - Avg Bitrate: 329 kbps
      -[Composite, Composite, Video] QuickTime::Rotation - Rotation: 0
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.74707
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 6000x4000
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Canon EF-M 15-45mm f/3.5-6.3 IS STM
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 2.9
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 24.0
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.078125
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 15.0 - 45.0 mm (35 mm equivalent: 23.3 - 69.9 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.03 m (0.22 - 0.25 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 75.3 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 15.0 mm (35 mm equivalent: 23.3 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 3.33 m
      +[Composite, Composite, Camera] Canon-ConditionalFEC - Flash Exposure Compensation: 0
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Single-frame Shooting
      +[Composite, Composite, Camera] Canon-FlashType - Flash Type: Built-In Flash
      +[Composite, Composite, Camera] Canon-ISO - ISO: 12800
      +[Composite, Composite, Camera] Canon-Lens - Lens: 15.0 - 45.0 mm
      +[Composite, Composite, Camera] Canon-RedEyeReduction - Red Eye Reduction: Off
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Aperture-priority AE
      +[Composite, Composite, Camera] Canon-ShutterCurtainHack - Shutter Curtain Sync: 1st-curtain sync
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 1104 1024 1024 1789
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/80
      +[Composite, Composite, Time] Exif-SubSecCreateDate - Create Date: 2018:02:21 12:08:56.21+00:00
      +[Composite, Composite, Time] Exif-SubSecDateTimeOriginal - Date/Time Original: 2018:02:21 12:08:56.21+00:00
      +[Composite, Composite, Time] Exif-SubSecModifyDate - Modify Date: 2018:02:21 12:08:56.21+00:00
      +[Composite, Composite, Video] QuickTime-AvgBitrate - Avg Bitrate: 329 kbps
      +[Composite, Composite, Video] QuickTime-Rotation - Rotation: 0
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.74707
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 6000x4000
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Canon EF-M 15-45mm f/3.5-6.3 IS STM
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 2.9
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 24.0
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.078125
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 15.0 - 45.0 mm (35 mm equivalent: 23.3 - 69.9 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.03 m (0.22 - 0.25 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 75.3 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 15.0 mm (35 mm equivalent: 23.3 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 3.33 m
      diff -Nru libimage-exiftool-perl-11.88/t/CanonVRD_11.out libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_11.out
      --- libimage-exiftool-perl-11.88/t/CanonVRD_11.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_11.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.76
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: CanonVRD_11_failed.vrd
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 4.5 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:07 08:40:23-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:07 08:40:23-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:07 08:40:23-05:00
      +[File, System, Other] FileSize - File Size: 4.5 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:25-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:25-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:25-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: VRD
       [File, File, Other] FileTypeExtension - File Type Extension: vrd
      @@ -117,5 +117,5 @@
       [CanonVRD, CanonVRD, Image] 82 - Custom Raw Shadow Point: 6
       [CanonVRD, CanonVRD, Image] 83 - Custom Output Highlight Point: 4095
       [CanonVRD, CanonVRD, Image] 84 - Custom Output Shadow Point: 0
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.76
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dc, Image] title - Title: XMP in VRD test
      diff -Nru libimage-exiftool-perl-11.88/t/CanonVRD_12.out libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_12.out
      --- libimage-exiftool-perl-11.88/t/CanonVRD_12.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_12.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,13 +1,13 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.76
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: CanonVRD_12_failed.vrd
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 2.9 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:07 08:40:23-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:07 08:40:23-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:07 08:40:23-05:00
      +[File, System, Other] FileSize - File Size: 2.9 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:25-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:25-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:25-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: VRD
       [File, File, Other] FileTypeExtension - File Type Extension: vrd
       [File, File, Other] MIMEType - MIME Type: application/octet-stream
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.76
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dc, Image] title - Title: XMP in VRD test
      diff -Nru libimage-exiftool-perl-11.88/t/CanonVRD_13.out libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_13.out
      --- libimage-exiftool-perl-11.88/t/CanonVRD_13.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_13.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.76
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: CanonVRD.dr4
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 5.3 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2015:05:18 15:47:02-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:07 08:35:50-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:04 10:47:12-05:00
      +[File, System, Other] FileSize - File Size: 5.3 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2015:05:18 15:43:16-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:25-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: DR4
       [File, File, Other] FileTypeExtension - File Type Extension: dr4
      diff -Nru libimage-exiftool-perl-11.88/t/CanonVRD_16.out libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_16.out
      --- libimage-exiftool-perl-11.88/t/CanonVRD_16.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_16.out	2021-06-09 15:42:27.000000000 +0000
      @@ -1,4 +1,5 @@
      -[File, System, Other] FileSize - File Size: 34205
      +[File, System, Other] FileSize - File Size: 34630
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: IPTCDigest is not current. XMP may be out of sync
       [CanonVRD, CanonVRD, Image] 0x20310.0 - Sharpness Adj On: 0
       [CanonVRD, CanonVRD, Image] 133392 - Red HSL: -4.3 1.2 3.8
       [CanonVRD, CanonVRD, Image] 133395 - Green HSL: -0.1 0 0.1
      diff -Nru libimage-exiftool-perl-11.88/t/CanonVRD_24.out libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_24.out
      --- libimage-exiftool-perl-11.88/t/CanonVRD_24.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_24.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,4 +1,4 @@
      -[File, System, Other] FileSize - File Size: 55 kB
      +[File, System, Other] FileSize - File Size: 55 KiB
       [CanonVRD, CanonVRD, Image] 0x20310.0 - Sharpness Adj On: No
       [CanonVRD, CanonVRD, Image] 133392 - Red HSL: -4.3 1.2 3.8
       [CanonVRD, CanonVRD, Image] 133395 - Green HSL: -0.1 0 0.1
      diff -Nru libimage-exiftool-perl-11.88/t/CanonVRD_5.out libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_5.out
      --- libimage-exiftool-perl-11.88/t/CanonVRD_5.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_5.out	2021-06-09 15:42:27.000000000 +0000
      @@ -1,2 +1,3 @@
      -[File, System, Other] FileSize - File Size: 26621
      +[File, System, Other] FileSize - File Size: 27046
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: IPTCDigest is not current. XMP may be out of sync
       [CanonVRD, CanonVRD, Image] 2 - VRD Version: 200
      diff -Nru libimage-exiftool-perl-11.88/t/CanonVRD_9.out libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_9.out
      --- libimage-exiftool-perl-11.88/t/CanonVRD_9.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/CanonVRD_9.out	2021-06-09 15:42:27.000000000 +0000
      @@ -1 +1,2 @@
      -[File, System, Other] FileSize - File Size: 23045
      +[File, System, Other] FileSize - File Size: 23470
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: IPTCDigest is not current. XMP may be out of sync
      diff -Nru libimage-exiftool-perl-11.88/t/Casio_2.out libimage-exiftool-perl-12.40+dfsg/t/Casio_2.out
      --- libimage-exiftool-perl-11.88/t/Casio_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Casio_2.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Casio.jpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1203 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:00-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:03-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -51,7 +51,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 926
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Casio, Camera] 1 - Recording Mode: Single Shutter
       [MakerNotes, Casio, Camera] 2 - Quality: Fine
       [MakerNotes, Casio, Camera] 3 - Focus Mode: Auto
      @@ -64,9 +64,9 @@
       [MakerNotes, Casio, Camera] 12 - Contrast: Normal
       [MakerNotes, Casio, Camera] 13 - Saturation: Normal
       [MakerNotes, Casio, Camera] 20 - ISO: 64
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 2.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/114
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 13.3 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.5
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 2.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/114
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 13.3 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.5
      diff -Nru libimage-exiftool-perl-11.88/t/Casio_3.out libimage-exiftool-perl-12.40+dfsg/t/Casio_3.out
      --- libimage-exiftool-perl-11.88/t/Casio_3.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Casio_3.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Casio2.jpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1699 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:01-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:03-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -62,7 +62,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1396
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Casio, Image] 2 - Preview Image Size: 320x240
       [MakerNotes, Casio, Image] 3 - Preview Image Length: 26
       [MakerNotes, Casio, Image] 4 - Preview Image Start: 1424
      @@ -87,16 +87,16 @@
       [MakerNotes, Casio, Camera] 12310 - Enhancement: Off
       [MakerNotes, Casio, Camera] 12311 - Color Filter: Off
       [MakerNotes, Casio, Camera] 12315 - Art Mode: Normal
      -[MakerNotes, Casio, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      +[MakerNotes, Casio, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0250
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.9
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.1
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/80
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.005 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.26 m (0.89 - 1.15 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 27.3 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 12.2 mm (35 mm equivalent: 74.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 7.70 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 11.2
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.9
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.1
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/80
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.005 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.26 m (0.89 - 1.15 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 27.3 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 12.2 mm (35 mm equivalent: 74.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 7.70 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 11.2
      diff -Nru libimage-exiftool-perl-11.88/t/Casio_4.out libimage-exiftool-perl-12.40+dfsg/t/Casio_4.out
      --- libimage-exiftool-perl-11.88/t/Casio_4.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Casio_4.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: CasioQVCI.jpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 407 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2010:05:31 09:18:08-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:03-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -24,5 +24,5 @@
       [MakerNotes, Casio, Camera] 98 - Model Type: KX-778
       [MakerNotes, Casio, Camera] 114 - Manufacture Index: 98082901
       [MakerNotes, Casio, Camera] 124 - Manufacture Code: 98000829
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/Casio_5.out libimage-exiftool-perl-12.40+dfsg/t/Casio_5.out
      --- libimage-exiftool-perl-11.88/t/Casio_5.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Casio_5.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Casio_5_failed.jpg
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 1203 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:20-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:20-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:20-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:03-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:03-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:03-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -51,7 +51,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 926
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Casio, Camera] 1 - Recording Mode: Single Shutter
       [MakerNotes, Casio, Camera] 2 - Quality: Fine
       [MakerNotes, Casio, Camera] 3 - Focus Mode: Macro
      @@ -72,9 +72,9 @@
       [MakerNotes, Casio, Camera] 18 - Casio 0x0012: 16
       [MakerNotes, Casio, Camera] 19 - Casio 0x0013: 16
       [MakerNotes, Casio, Camera] 20 - ISO: 64
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 2.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/114
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.5
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 13.3 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 2.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/114
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.5
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 13.3 mm
      diff -Nru libimage-exiftool-perl-11.88/t/Casio_6.out libimage-exiftool-perl-12.40+dfsg/t/Casio_6.out
      --- libimage-exiftool-perl-11.88/t/Casio_6.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Casio_6.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Casio_6_failed.jpg
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 1699 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:20-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:20-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:20-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:03-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:03-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:03-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -62,7 +62,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1396
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Casio, Image] 2 - Preview Image Size: 320x240
       [MakerNotes, Casio, Image] 3 - Preview Image Length: 26
       [MakerNotes, Casio, Image] 4 - Preview Image Start: 1424
      @@ -98,20 +98,20 @@
       [MakerNotes, Casio, Camera] 12313 - Casio Type 2 0x3019: 1
       [MakerNotes, Casio, Camera] 12314 - Casio Type 2 0x301a: 0
       [MakerNotes, Casio, Camera] 12315 - Art Mode: Normal
      -[MakerNotes, Casio, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      +[MakerNotes, Casio, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0250
       [PrintIM, PrintIM, Printing] 1 - Print IM 0x0001: 0x00140014
       [PrintIM, PrintIM, Printing] 2 - Print IM 0x0002: 0x01000000
       [PrintIM, PrintIM, Printing] 256 - Print IM 0x0100: 0x05000000
       [PrintIM, PrintIM, Printing] 257 - Print IM 0x0101: 0x01000000
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.9
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/80
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 11.2
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.1
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.005 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 3.99 m (2.41 - 6.40 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 27.3 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 12.2 mm (35 mm equivalent: 74.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 7.70 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.9
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/80
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 11.2
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.1
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.005 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 3.99 m (2.41 - 6.40 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 27.3 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 12.2 mm (35 mm equivalent: 74.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 7.70 m
      diff -Nru libimage-exiftool-perl-11.88/t/DjVu_2.out libimage-exiftool-perl-12.40+dfsg/t/DjVu_2.out
      --- libimage-exiftool-perl-11.88/t/DjVu_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/DjVu_2.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: DjVu.djvu
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 930 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 09:57:39-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:11:39-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 09:57:39-05:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:03-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 21:22:58-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: DJVU (multi-page)
       [File, File, Other] FileTypeExtension - File Type Extension: djvu
      @@ -42,5 +42,5 @@
       [XMP, XMP-xmp, Time] CreateDate - Create Date: 2008:09:23 12:31:34-04:00
       [XMP, XMP-xmp, Image] CreatorTool - Creator Tool: ExifTool
       [XMP, XMP-xmp, Time] ModifyDate - Modify Date: 2008:11:11 09:17:10-05:00
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/DNG_2.out libimage-exiftool-perl-12.40+dfsg/t/DNG_2.out
      --- libimage-exiftool-perl-11.88/t/DNG_2.out	2020-02-04 13:37:15.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/DNG_2.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.86
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: DNG.dng
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 13 kB
      +[File, System, Other] FileSize - File Size: 13 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:02:26 09:30:53-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2020:02:04 08:34:38-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:01:28 10:35:42-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:26-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: DNG
       [File, File, Other] FileTypeExtension - File Type Extension: dng
      @@ -126,9 +126,9 @@
       [EXIF, IFD0, Image] 50779 - Calibration Illuminant 2: D65
       [EXIF, IFD0, Image] 50781 - Raw Data Unique ID: 0358DB4E08632D90925171A6BB8848A2
       [EXIF, IFD0, Image] 50827 - Original Raw File Name: Canon350D.CR2
      -[EXIF, SubIFD2, Preview] Exif::JpgFromRaw - Jpg From Raw: (Binary data 29 bytes)
      -[EXIF, SubIFD1, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      -[EXIF, IFD0, Preview] Exif::ThumbnailTIFF - Thumbnail TIFF: (Binary data 408 bytes)
      +[EXIF, SubIFD2, Preview] Exif-JpgFromRaw - Jpg From Raw: (Binary data 29 bytes)
      +[EXIF, SubIFD1, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
      +[EXIF, IFD0, Preview] Exif-ThumbnailTIFF - Thumbnail TIFF: (Binary data 408 bytes)
       [XMP, XMP-x, Document] xmptk - XMP Toolkit: XMP toolkit 3.0-28, framework 1.6
       [XMP, XMP-exif, Image] ExifVersion - Exif Version: 0221
       [XMP, XMP-exif, Image] ExposureTime - Exposure Time: 1/15
      @@ -306,24 +306,24 @@
       [MakerNotes, Canon, Camera] 70 - WB RGGB Levels Custom 2: 2312 1022 1024 1501
       [MakerNotes, Canon, Camera] 74 - Color Temp Custom 2: 5200
       [MakerNotes, Canon, Camera] 2 - Color Tone: Normal
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Single-frame Shooting
      -[Composite, Composite, Camera] Canon::ISO - ISO: 400
      -[Composite, Composite, Camera] Canon::Lens - Lens: 18.0 - 55.0 mm
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Aperture-priority AE
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 2002 1185 1187 2364
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 8.0
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.993255
      -[Composite, Composite, Image] Exif::CFAPattern - CFA Pattern: [Red,Green][Green,Blue]
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 3516x2328
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Unknown 18-55mm
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 8.2
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.688027
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/15
      -[Composite, Composite, Camera] XMP::Flash - Flash: Off, Did not fire
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 29.2 - 89.2 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 22.8 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 55.0 mm (35 mm equivalent: 89.2 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 20.42 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 7.9
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Single-frame Shooting
      +[Composite, Composite, Camera] Canon-ISO - ISO: 400
      +[Composite, Composite, Camera] Canon-Lens - Lens: 18.0 - 55.0 mm
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Aperture-priority AE
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 2002 1185 1187 2364
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 8.0
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.993255
      +[Composite, Composite, Image] Exif-CFAPattern - CFA Pattern: [Red,Green][Green,Blue]
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 3516x2328
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Unknown 18-55mm
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 8.2
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.688027
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/15
      +[Composite, Composite, Camera] XMP-Flash - Flash: Off, Did not fire
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 29.2 - 89.2 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 22.8 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 55.0 mm (35 mm equivalent: 89.2 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 20.42 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 7.9
      diff -Nru libimage-exiftool-perl-11.88/t/DNG_3.out libimage-exiftool-perl-12.40+dfsg/t/DNG_3.out
      --- libimage-exiftool-perl-11.88/t/DNG_3.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/DNG_3.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,4 +1,4 @@
       [XMP, XMP-aux, Camera] OwnerName - Owner Name: Just Me
       [EXIF, ExifIFD, Image] 42032 - Owner Name: Just Me
       [MakerNotes, Canon, Camera] 9 - Owner Name: Just Me
      -[Composite, Composite, Camera] Canon::OriginalDecisionData - Original Decision Data: (Binary data 24 bytes)
      +[Composite, Composite, Camera] Canon-OriginalDecisionData - Original Decision Data: (Binary data 24 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/DPX_2.out libimage-exiftool-perl-12.40+dfsg/t/DPX_2.out
      --- libimage-exiftool-perl-11.88/t/DPX_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/DPX_2.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: DPX.dpx
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.0 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2013:09:20 08:45:35-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Other] FileSize - File Size: 2.0 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2013:09:20 08:49:38-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:26-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: DPX
       [File, File, Other] FileTypeExtension - File Type Extension: dpx
      @@ -25,15 +25,18 @@
       [File, File, Image] 776 - Image Height: 1556
       [File, File, Image] 780 - Data Sign: Unsigned
       [File, File, Image] 800 - Components Configuration: R, G, B
      +[File, File, Image] 801 - Transfer Characteristic: Printing density
      +[File, File, Image] 802 - Colorimetric Specification: Printing density
       [File, File, Image] 803 - Bit Depth: 10
       [File, File, Image] 820 - Image Description: CPD
       [File, File, Image] 1432 - Source File Name: 
       [File, File, Image] 1532 - Source Create Date: 
       [File, File, Image] 1556 - Input Device Name: SPIRIT-4K DATACINE 
       [File, File, Image] 1588 - Input Device Serial Number: 01018
      -[File, File, Image] 1724 - Frame Rate: 0
      +[File, File, Image] 1724 - Original Frame Rate: 0
       [File, File, Image] 1732 - Frame ID: 
       [File, File, Image] 1764 - Slate Information: 
      +[File, File, Image] 1920 - Time Code: 4117
       [File, File, Image] 2048 - User ID: Thomson BTS        
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 2048x1556
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 3.2
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 2048x1556
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 3.2
      diff -Nru libimage-exiftool-perl-11.88/t/DV_2.out libimage-exiftool-perl-12.40+dfsg/t/DV_2.out
      --- libimage-exiftool-perl-11.88/t/DV_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/DV_2.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: DV.dv
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 4.3 kB
      +[File, System, Other] FileSize - File Size: 4.3 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2010:12:25 08:53:20-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:27-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: DV
       [File, File, Other] FileTypeExtension - File Type Extension: dv
      @@ -22,5 +22,5 @@
       [DV, DV, Audio] AudioChannels - Audio Channels: 4
       [DV, DV, Audio] AudioSampleRate - Audio Sample Rate: 32000
       [DV, DV, Audio] AudioBitsPerSample - Audio Bits Per Sample: 12
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 720x576
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.415
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 720x576
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.415
      diff -Nru libimage-exiftool-perl-11.88/t/ExifTool_16.out libimage-exiftool-perl-12.40+dfsg/t/ExifTool_16.out
      --- libimage-exiftool-perl-11.88/t/ExifTool_16.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ExifTool_16.out	2020-11-27 16:34:39.000000000 +0000
      @@ -178,8 +178,8 @@
       Directory : t/images
       FileName : Canon.jpg
       FilePermissions : rw-r--r--
      -FileSize : 2.6 kB
      +FileSize : 2.6 KiB
       ---- System:Time ----
      -FileAccessDate : 2019:11:01 10:15:22-04:00
      -FileInodeChangeDate : 2019:10:29 08:21:01-04:00
      +FileAccessDate : 2020:11:26 10:02:27-05:00
      +FileInodeChangeDate : 2017:12:27 12:00:59-05:00
       FileModifyDate : 2006:10:03 15:10:31-04:00
      diff -Nru libimage-exiftool-perl-11.88/t/ExifTool_28.out libimage-exiftool-perl-12.40+dfsg/t/ExifTool_28.out
      --- libimage-exiftool-perl-11.88/t/ExifTool_28.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ExifTool_28.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: ExifTool.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 25 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:09:23 09:15:01-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:22-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Other] FileSize - File Size: 25 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:27-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 21:22:58-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      diff -Nru libimage-exiftool-perl-11.88/t/ExifTool_29.out libimage-exiftool-perl-12.40+dfsg/t/ExifTool_29.out
      --- libimage-exiftool-perl-11.88/t/ExifTool_29.out	2019-12-04 16:02:07.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ExifTool_29.out	2021-07-09 14:38:44.000000000 +0000
      @@ -1,10 +1,10 @@
       [File, System, Other] FileName - File Name: ExifTool.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: ##_kB
      +[File, System, Other] FileSize - File Size: ##_KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: ####:##:##_##:##:##-##:##
       [File, System, Time] FileAccessDate - File Access Date/Time: ####:##:##_##:##:##-##:##
       [File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: ####:##:##_##:##:##-##:##
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
       [File, File, Other] MIMEType - MIME Type: image/jpeg
      @@ -191,7 +191,7 @@
       [FlashPix, FlashPix, Other] 7 - Extension Description: Presized_image_for_LCD_display
       [FlashPix, FlashPix, Other] 4096 - Storage-Stream Pathname: /.Screen_Nail_bd##########a###
       [FlashPix, FlashPix, Other] Screen Nail - Screen Nail: (Binary data 5917 bytes)
      -[FlashPix, FlashPix, Preview] FlashPix::PreviewImage - Preview Image: (Binary data 5777 bytes)
      +[FlashPix, FlashPix, Preview] FlashPix-PreviewImage - Preview Image: (Binary data 5777 bytes)
       [MPF, MPF0, Image] 45056 - MPF Version: ####
       [MPF, MPF0, Image] 45057 - Number Of Images: #
       [MPF, MPImage1, Image] 0.1 - MP Image Flags: Dependent_parent_image
      @@ -258,6 +258,21 @@
       [APP11, JPEG-HDR, Image] bet - Beta: #.######
       [APP11, JPEG-HDR, Image] cor - Correction Method: #
       [APP11, JPEG-HDR, Preview] RatioImage - Ratio Image: (Binary data 19 bytes)
      +[JUMBF, JUMBF, Image] type - JUMD Type: (cacb)-####-####-######aa#####b##
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai
      +[JUMBF, JUMBF, Image] type - JUMD Type: (cast)-####-####-######aa#####b##
      +[JUMBF, JUMBF, Image] label - JUMD Label: cb.reuters_#
      +[JUMBF, JUMBF, Image] type - JUMD Type: (caas)-####-####-######aa#####b##
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai.assertions
      +[JUMBF, JUMBF, Image] type - JUMD Type: (json)-####-####-######aa#####b##
      +[JUMBF, JUMBF, Image] label - JUMD Label: adobe.asset.info
      +[JUMBF, JSON, Other] title - Title: HEALTHCORONAVIRUSUSAOREGON_SALEM_##.jpg
      +[JUMBF, JUMBF, Image] type - JUMD Type: (json)-####-####-######aa#####b##
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai.location.broad
      +[JUMBF, JSON, Other] location - Location: Salem,_Oregon
      +[JUMBF, JUMBF, Image] type - JUMD Type: (json)-####-####-######aa#####b##
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai.rights
      +[JUMBF, JSON, Other] copyright - Copyright: Alisha_Jucevic
       [APP12, PictureInfo, Time] TimeDate - Date/Time Original: ####:##:##_##:##:##
       [APP12, PictureInfo, Image] Shutter - Exposure Time: #/###
       [APP12, PictureInfo, Image] Flash - Flash: Off
      @@ -346,6 +361,7 @@
       [Photoshop, Photoshop, Image] 0 - Photoshop Quality: #
       [Photoshop, Photoshop, Image] 1 - Photoshop Format: Standard
       [Photoshop, Photoshop, Image] 2 - Progressive Scans: #_Scans
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: IPTCDigest_is_not_current._XMP_may_be_out_of_sync
       [APP13, AdobeCM, Image] 0 - Adobe CM Type: #
       [APP14, Adobe, Image] 0 - DCT Encode Version: ###
       [APP14, Adobe, Image] 1 - APP14 Flags 0: (none)
      @@ -414,13 +430,13 @@
       [FotoStation, FotoStation, Image] 8 - Crop Right: ##.###%
       [FotoStation, FotoStation, Image] 9 - Crop Bottom: ##.##%
       [FotoStation, FotoStation, Image] 11 - Crop Rotation: #
      -[Composite, Composite, Image] Exif::Aperture - Aperture: #.#
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: #x#
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: #.######
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: #/###
      -[Composite, Composite, Image] Exif::LightValue - Light Value: ##.#
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: #.#
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: #.###_mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: ##.#_deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: #.#_mm_(##_mm_equivalent:_##.#_mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: #.##_m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: #.#
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: #x#
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: #.######
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: #/###
      +[Composite, Composite, Image] Exif-LightValue - Light Value: ##.#
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: #.#
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: #.###_mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: ##.#_deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: #.#_mm_(##_mm_equivalent:_##.#_mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: #.##_m
      diff -Nru libimage-exiftool-perl-11.88/t/ExifTool_2.out libimage-exiftool-perl-12.40+dfsg/t/ExifTool_2.out
      --- libimage-exiftool-perl-11.88/t/ExifTool_2.out	2019-12-04 16:02:07.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ExifTool_2.out	2021-07-09 14:38:44.000000000 +0000
      @@ -1,11 +1,12 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.29
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: IPTCDigest is not current. XMP may be out of sync
       [File, System, Other] FileName - File Name: ExifTool.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 25 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 10:56:48-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 11:01:15-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 10:56:48-05:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 25 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:03:19 14:14:12-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:07:09 10:30:54-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:03:19 14:31:48-04:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
       [File, File, Other] MIMEType - MIME Type: image/jpeg
      @@ -192,7 +193,7 @@
       [FlashPix, FlashPix, Other] 7 - Extension Description: Presized image for LCD display
       [FlashPix, FlashPix, Other] 4096 - Storage-Stream Pathname: /.Screen Nail_bd0100609719a180
       [FlashPix, FlashPix, Other] Screen Nail - Screen Nail: (Binary data 5917 bytes)
      -[FlashPix, FlashPix, Preview] FlashPix::PreviewImage - Preview Image: (Binary data 5777 bytes)
      +[FlashPix, FlashPix, Preview] FlashPix-PreviewImage - Preview Image: (Binary data 5777 bytes)
       [MPF, MPF0, Image] 45056 - MPF Version: 0100
       [MPF, MPF0, Image] 45057 - Number Of Images: 2
       [MPF, MPImage1, Image] 0.1 - MP Image Flags: Dependent parent image
      @@ -259,6 +260,21 @@
       [APP11, JPEG-HDR, Image] bet - Beta: 1.000000
       [APP11, JPEG-HDR, Image] cor - Correction Method: 0
       [APP11, JPEG-HDR, Preview] RatioImage - Ratio Image: (Binary data 19 bytes)
      +[JUMBF, JUMBF, Image] type - JUMD Type: (cacb)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai
      +[JUMBF, JUMBF, Image] type - JUMD Type: (cast)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: cb.reuters_1
      +[JUMBF, JUMBF, Image] type - JUMD Type: (caas)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai.assertions
      +[JUMBF, JUMBF, Image] type - JUMD Type: (json)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: adobe.asset.info
      +[JUMBF, JSON, Other] title - Title: HEALTHCORONAVIRUSUSAOREGON_SALEM_08.jpg
      +[JUMBF, JUMBF, Image] type - JUMD Type: (json)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai.location.broad
      +[JUMBF, JSON, Other] location - Location: Salem, Oregon
      +[JUMBF, JUMBF, Image] type - JUMD Type: (json)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai.rights
      +[JUMBF, JSON, Other] copyright - Copyright: Alisha Jucevic
       [APP12, PictureInfo, Time] TimeDate - Date/Time Original: 1998:12:31 15:17:20
       [APP12, PictureInfo, Image] Shutter - Exposure Time: 1/155
       [APP12, PictureInfo, Image] Flash - Flash: Off
      @@ -415,13 +431,13 @@
       [FotoStation, FotoStation, Image] 8 - Crop Right: 30.676%
       [FotoStation, FotoStation, Image] 9 - Crop Bottom: 86.25%
       [FotoStation, FotoStation, Image] 11 - Crop Rotation: 0
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/155
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 10.9
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.9
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.004 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 47.0 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.0 mm (35 mm equivalent: 41.4 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 2.36 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/155
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 10.9
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.9
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.004 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 47.0 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.0 mm (35 mm equivalent: 41.4 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 2.36 m
      diff -Nru libimage-exiftool-perl-11.88/t/ExifTool_32.out libimage-exiftool-perl-12.40+dfsg/t/ExifTool_32.out
      --- libimage-exiftool-perl-11.88/t/ExifTool_32.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ExifTool_32.out	2021-05-10 13:30:58.000000000 +0000
      @@ -0,0 +1,5 @@
      +[APP3, JPS, Image] 10 - JPS Separation: 0
      +[APP3, JPS, Image] 11 - JPS Flags: Left field first
      +[APP3, JPS, Image] 12 - JPS Layout: Over Under
      +[APP3, JPS, Image] 13 - JPS Type: Stereo
      +[APP3, JPS, Image] 16 - JPS Comment: test comment
      diff -Nru libimage-exiftool-perl-11.88/t/ExifTool_3.out libimage-exiftool-perl-12.40+dfsg/t/ExifTool_3.out
      --- libimage-exiftool-perl-11.88/t/ExifTool_3.out	2020-02-04 13:37:15.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ExifTool_3.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,8 +1,8 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.86
      -[File, System, Other] FileSize - File Size: 4.8 kB
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
      +[File, System, Other] FileSize - File Size: 4.8 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2005:11:23 15:49:37-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2020:02:04 08:35:04-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:01:28 10:35:42-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:27-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: TIFF
       [File, File, Other] FileTypeExtension - File Type Extension: tif
      @@ -85,5 +85,5 @@
       [ICC_Profile, ICC_Profile, Image] rTRC - Red Tone Reproduction Curve: (Binary data 2060 bytes)
       [ICC_Profile, ICC_Profile, Image] gTRC - Green Tone Reproduction Curve: (Binary data 2060 bytes)
       [ICC_Profile, ICC_Profile, Image] bTRC - Blue Tone Reproduction Curve: (Binary data 2060 bytes)
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 160x120
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.019
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 160x120
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.019
      diff -Nru libimage-exiftool-perl-11.88/t/ExifTool_6.out libimage-exiftool-perl-12.40+dfsg/t/ExifTool_6.out
      --- libimage-exiftool-perl-11.88/t/ExifTool_6.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ExifTool_6.out	2020-07-29 19:18:18.000000000 +0000
      @@ -1,9 +1,9 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Canon.jpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:10:03 15:10:31-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:22-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:04-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -49,23 +49,23 @@
       [EXIF, ExifIFD, Camera] 41986 - Exposure Mode: Manual
       [EXIF, ExifIFD, Camera] 41987 - White Balance: Auto
       [EXIF, ExifIFD, Camera] 41990 - Scene Capture Type: Standard
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Continuous Shooting
      -[Composite, Composite, Camera] Canon::ISO - ISO: 100
      -[Composite, Composite, Camera] Canon::Lens - Lens: 18.0 - 55.0 mm
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Bulb
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 1719 832 831 990
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 14.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Unknown 18-55mm
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 4
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 28.6 - 87.4 mm)
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.190619
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: inf (4.31 m - inf)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 36.9 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 34.0 mm (35 mm equivalent: 54.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 4.37 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 5.6
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.067348
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Continuous Shooting
      +[Composite, Composite, Camera] Canon-ISO - ISO: 100
      +[Composite, Composite, Camera] Canon-Lens - Lens: 18.0 - 55.0 mm
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Bulb
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 1719 832 831 990
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 14.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Unknown 18-55mm
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 4
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 28.6 - 87.4 mm)
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.190619
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: inf (4.31 m - inf)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 36.9 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 34.0 mm (35 mm equivalent: 54.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 4.37 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 5.6
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.067348
      diff -Nru libimage-exiftool-perl-11.88/t/ExifTool.t libimage-exiftool-perl-12.40+dfsg/t/ExifTool.t
      --- libimage-exiftool-perl-11.88/t/ExifTool.t	2020-02-14 12:14:46.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ExifTool.t	2021-05-20 23:47:54.000000000 +0000
      @@ -2,7 +2,7 @@
       # After "make install" it should work as "perl t/ExifTool.t".
       
       BEGIN {
      -    $| = 1; print "1..31\n"; $Image::ExifTool::configFile = '';
      +    $| = 1; print "1..32\n"; $Image::ExifTool::configFile = '';
           require './t/TestLib.pm'; t::TestLib->import();
       }
       END {print "not ok 1\n" unless $loaded;}
      @@ -342,5 +342,14 @@
           print 'not ' unless check($exifTool, $info, $testname, $testnum);
           print "ok $testnum\n";
       }
      +
      +# test 32: Read JPS file
      +{
      +    ++$testnum;
      +    my $exifTool = new Image::ExifTool;
      +    my $info = $exifTool->ImageInfo('t/images/ExifTool.jps', 'jps:all');
      +    print 'not ' unless check($exifTool, $info, $testname, $testnum);
      +    print "ok $testnum\n";
      +}
       
       # end
      diff -Nru libimage-exiftool-perl-11.88/t/FITS_2.out libimage-exiftool-perl-12.40+dfsg/t/FITS_2.out
      --- libimage-exiftool-perl-11.88/t/FITS_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/FITS_2.out	2021-02-18 20:37:55.000000000 +0000
      @@ -1,17 +1,22 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.19
       [File, System, Other] FileName - File Name: FITS.fits
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 3.0 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:03:07 09:30:35-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 3.0 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:03:07 12:31:28-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:02:18 14:49:22-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:03:08 22:54:13-05:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: FITS
       [File, File, Other] FileTypeExtension - File Type Extension: fits
       [File, File, Other] MIMEType - MIME Type: image/fits
       [FITS, FITS, Image] BITPIX - Bitpix: 8
       [FITS, FITS, Image] NAXIS - Naxis: 0
       [FITS, FITS, Image] EXTEND - Extend: T
      +[FITS, FITS, Image] COMMENT - Comment: +------------------+
      +[FITS, FITS, Image] COMMENT - Comment: |   HEXTE INDEX    |
      +[FITS, FITS, Image] COMMENT - Comment: | XTE - FITS File  |
      +[FITS, FITS, Image] COMMENT - Comment: | Generated by XFF |
      +[FITS, FITS, Image] COMMENT - Comment: +------------------+
       [FITS, FITS, Image] ORIGIN - Origin: XTE-SOC
       [FITS, FITS, Image] CREATOR - Creator: XFF - Revision: 5.3.2
       [FITS, FITS, Time] DATE - Create Date: 28/01/97
      @@ -22,6 +27,7 @@
       [FITS, FITS, Image] TIMESYS - Timesys: TT
       [FITS, FITS, Image] MJDREFI - Mjdrefi: 49353
       [FITS, FITS, Image] MJDREFF - Mjdreff: 6.965740740000e-04
      +[FITS, FITS, Image] COMMENT - Comment: MJD = JD - 2400000.5
       [FITS, FITS, Image] TIMEZERO - Timezero: 3.37843167e+00
       [FITS, FITS, Image] TIMEUNIT - Timeunit: s
       [FITS, FITS, Image] TIMEREF - Timeref: LOCAL
      diff -Nru libimage-exiftool-perl-11.88/t/Flash_2.out libimage-exiftool-perl-12.40+dfsg/t/Flash_2.out
      --- libimage-exiftool-perl-11.88/t/Flash_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Flash_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Flash.swf
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 384 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2008:10:23 16:27:45-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:05-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: SWF
       [File, File, Other] FileTypeExtension - File Type Extension: swf
      @@ -18,5 +18,5 @@
       [Flash, Flash, Video] Duration - Duration: 0.08 s
       [XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 7.50
       [XMP, XMP-pdf, Author] Author - Author: Phil
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 50x50
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.003
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 50x50
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.003
      diff -Nru libimage-exiftool-perl-11.88/t/Flash_3.out libimage-exiftool-perl-12.40+dfsg/t/Flash_3.out
      --- libimage-exiftool-perl-11.88/t/Flash_3.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Flash_3.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Flash.flv
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1358 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2007:06:12 12:15:04-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:05-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: FLV
       [File, File, Other] FileTypeExtension - File Type Extension: flv
      @@ -51,5 +51,5 @@
       [Flash, Flash, Audio] Bit6 - Audio Bits Per Sample: 16
       [Flash, Flash, Audio] Bit7 - Audio Channels: 1 (mono)
       [Flash, Flash, Video] Bit4-7 - Video Encoding: On2 VP6
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 320x240
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.077
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 320x240
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.077
      diff -Nru libimage-exiftool-perl-11.88/t/FLIF_2.out libimage-exiftool-perl-12.40+dfsg/t/FLIF_2.out
      --- libimage-exiftool-perl-11.88/t/FLIF_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/FLIF_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: FLIF.flif
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 674 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2016:10:19 09:52:32-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:04-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2016:10:27 14:56:15-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:05-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rwxr-xr-x
       [File, File, Other] FileType - File Type: FLIF
       [File, File, Other] FileTypeExtension - File Type Extension: flif
      @@ -47,5 +47,5 @@
       [ICC_Profile, ICC_Profile, Image] bTRC - Blue Tone Reproduction Curve: (Binary data 14 bytes)
       [ICC_Profile, ICC_Profile, Image] wtpt - Media White Point: 0.9505 1 1.0891
       [ICC_Profile, ICC_Profile, Image] cprt - Profile Copyright: Nikon Inc. & Nikon Corporation 2001
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 16x16
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000256
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 16x16
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000256
      diff -Nru libimage-exiftool-perl-11.88/t/FLIF_4.out libimage-exiftool-perl-12.40+dfsg/t/FLIF_4.out
      --- libimage-exiftool-perl-11.88/t/FLIF_4.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/FLIF_4.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: FLIF_4_failed.flif
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 23 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:23-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:23-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:23-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:05-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:05-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:05-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: FLIF
       [File, File, Other] FileTypeExtension - File Type Extension: flif
      @@ -14,5 +14,5 @@
       [File, File, Image] 2 - Image Width: 16
       [File, File, Image] 3 - Image Height: 16
       [File, File, Image] 5 - Encoding: FLIF16
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 16x16
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000256
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 16x16
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000256
      diff -Nru libimage-exiftool-perl-11.88/t/FLIR_2.out libimage-exiftool-perl-12.40+dfsg/t/FLIR_2.out
      --- libimage-exiftool-perl-11.88/t/FLIR_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/FLIR_2.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: FLIR.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 7.2 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2013:04:02 10:46:04-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Other] FileSize - File Size: 7.2 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2013:04:02 13:11:16-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:28-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -49,7 +49,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 872
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 2314
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 2314 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 2314 bytes)
       [MakerNotes, FLIR, Camera] 1 - Image Temperature Max: 308
       [MakerNotes, FLIR, Camera] 2 - Image Temperature Min: 281
       [MakerNotes, FLIR, Camera] 3 - Emissivity: 0.80
      @@ -114,8 +114,8 @@
       [APP1, FLIR, Image] 2 - Raw Thermal Image Height: 120
       [APP1, FLIR, Image] 16 - Raw Thermal Image Type: PNG
       [APP1, FLIR, Preview] 16.1 - Raw Thermal Image: (Binary data 79 bytes)
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/32
      -[Composite, FLIR, Camera] FLIR::PeakSpectralSensitivity - Peak Spectral Sensitivity: 10.5 um
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.7 mm
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/32
      +[Composite, FLIR, Camera] FLIR-PeakSpectralSensitivity - Peak Spectral Sensitivity: 10.5 um
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.7 mm
      diff -Nru libimage-exiftool-perl-11.88/t/FLIR_3.out libimage-exiftool-perl-12.40+dfsg/t/FLIR_3.out
      --- libimage-exiftool-perl-11.88/t/FLIR_3.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/FLIR_3.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.76
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: FLIR.fpf
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 914 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2013:04:11 15:17:20-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:07 08:35:59-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:04 10:47:12-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:05-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: FPF
       [File, File, Other] FileTypeExtension - File Type Extension: fpf
      @@ -45,5 +45,5 @@
       [FLIR, FLIR, Image] 688 - Calculated Scale Max: 279.6
       [FLIR, FLIR, Image] 692 - Actual Scale Min: 267.3
       [FLIR, FLIR, Image] 696 - Actual Scale Max: 277.1
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 160x120
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.019
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 160x120
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.019
      diff -Nru libimage-exiftool-perl-11.88/t/FotoStation_2.out libimage-exiftool-perl-12.40+dfsg/t/FotoStation_2.out
      --- libimage-exiftool-perl-11.88/t/FotoStation_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/FotoStation_2.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: FotoStation.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 4.2 kB
      +[File, System, Other] FileSize - File Size: 4.2 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:10:28 14:44:59-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:04-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:28-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -37,5 +37,5 @@
       [IPTC, IPTC2, Image] 201 - Object Preview File Version: Custom Field 02
       [IPTC, IPTC2, Preview] 202 - Object Preview Data: (Binary data 15 bytes)
       [IPTC, IPTC2, Other] 230 - Document Notes: Document Notes
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/FujiFilm_2.out libimage-exiftool-perl-12.40+dfsg/t/FujiFilm_2.out
      --- libimage-exiftool-perl-11.88/t/FujiFilm_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/FujiFilm_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: FujiFilm.jpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1373 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:06-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -62,7 +62,7 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, FujiFilm, Camera] 0 - Version: 0130
       [MakerNotes, FujiFilm, Camera] 4096 - Quality: NORMAL 
       [MakerNotes, FujiFilm, Camera] 4097 - Sharpness: 0 (normal)
      @@ -77,13 +77,13 @@
       [MakerNotes, FujiFilm, Camera] 4864 - Blur Warning: None
       [MakerNotes, FujiFilm, Camera] 4865 - Focus Warning: Good
       [MakerNotes, FujiFilm, Camera] 4866 - Exposure Warning: Good
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.6
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.005 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 48.9 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.0 mm (35 mm equivalent: 39.6 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 2.26 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.6
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.6
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.005 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 48.9 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.0 mm (35 mm equivalent: 39.6 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 2.26 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.6
      diff -Nru libimage-exiftool-perl-11.88/t/FujiFilm_3.out libimage-exiftool-perl-12.40+dfsg/t/FujiFilm_3.out
      --- libimage-exiftool-perl-11.88/t/FujiFilm_3.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/FujiFilm_3.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: FujiFilm_3_failed.jpg
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 1373 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:24-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:24-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:24-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:06-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:06-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:06-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -62,7 +62,7 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, FujiFilm, Camera] 0 - Version: 0130
       [MakerNotes, FujiFilm, Camera] 4096 - Quality: NORMAL 
       [MakerNotes, FujiFilm, Camera] 4097 - Sharpness: 0 (normal)
      @@ -78,13 +78,13 @@
       [MakerNotes, FujiFilm, Camera] 4864 - Blur Warning: None
       [MakerNotes, FujiFilm, Camera] 4865 - Focus Warning: Good
       [MakerNotes, FujiFilm, Camera] 4866 - Exposure Warning: Good
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.6
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.6
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.005 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 48.9 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.0 mm (35 mm equivalent: 39.6 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 2.26 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.6
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.6
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.005 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 48.9 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.0 mm (35 mm equivalent: 39.6 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 2.26 m
      diff -Nru libimage-exiftool-perl-11.88/t/FujiFilm_4.out libimage-exiftool-perl-12.40+dfsg/t/FujiFilm_4.out
      --- libimage-exiftool-perl-11.88/t/FujiFilm_4.out	2020-02-04 15:45:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/FujiFilm_4.out	2020-11-27 16:34:39.000000000 +0000
      @@ -1,5 +1,5 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.87
      -[File, System, Other] FileSize - File Size: 38 kB
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
      +[File, System, Other] FileSize - File Size: 38 KiB
       [File, File, Other] FileType - File Type: RAF
       [File, File, Other] FileTypeExtension - File Type Extension: raf
       [File, File, Other] MIMEType - MIME Type: image/x-fujifilm-raf
      @@ -71,7 +71,7 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 2704
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 9362
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 9362 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 9362 bytes)
       [MakerNotes, FujiFilm, Camera] 0 - Version: 0130
       [MakerNotes, FujiFilm, Camera] 16 - Internal Serial Number: FPX20582698 Y-1146 2007:02:19 8C0020100A84
       [MakerNotes, FujiFilm, Camera] 4096 - Quality: NORMAL 
      @@ -133,15 +133,15 @@
       [RAF, RAF2, Image] 12272 - WB GRGB Levels: 384 685 384 603
       [RAF, RAF2, Image] 37376 - Relative Exposure: -4.0
       [RAF, RAF2, Image] 38480 - Raw Exposure Bias: 0
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 8.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/250
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.341146
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 4256x1424
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.0
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 6.1
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.565104
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.5
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.020 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 19.5 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 70.0 mm (35 mm equivalent: 105.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 30.58 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 8.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/250
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.341146
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 4256x1424
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.0
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 6.1
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.565104
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.5
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.020 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 19.5 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 70.0 mm (35 mm equivalent: 105.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 30.58 m
      diff -Nru libimage-exiftool-perl-11.88/t/GE_2.out libimage-exiftool-perl-12.40+dfsg/t/GE_2.out
      --- libimage-exiftool-perl-11.88/t/GE_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/GE_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,12 +1,12 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [ExifTool, ExifTool, ExifTool] Warning - Warning: [minor] Suspicious MakerNotes offset for GE_0x0200
       [ExifTool, ExifTool, ExifTool] Warning - Warning: [minor] Suspicious MakerNotes offset for GE_0x0206
       [File, System, Other] FileName - File Name: GE.jpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1467 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2010:12:14 19:15:30-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:05-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:06-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -68,7 +68,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1190
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, GE, Camera] 260 - GE 0x0104: 1694568960
       [MakerNotes, GE, Camera] 514 - Macro: Off
       [MakerNotes, GE, Camera] 515 - GE 0x0203: 0
      @@ -78,9 +78,9 @@
       [MakerNotes, GE, Camera] 768 - GE Make: GE DIGITAL CAMERA
       [MakerNotes, GE, Camera] 1280 - GE 0x0500: 0
       [MakerNotes, GE, Camera] 1536 - GE 0x0600: 0
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 5.1
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/77
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 22.5 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 11.6
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 5.1
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/77
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 22.5 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 11.6
      diff -Nru libimage-exiftool-perl-11.88/t/GE_3.out libimage-exiftool-perl-12.40+dfsg/t/GE_3.out
      --- libimage-exiftool-perl-11.88/t/GE_3.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/GE_3.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: GE_3_failed.jpg
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 1483 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:25-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:25-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:25-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:07-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:07-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:07-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -66,7 +66,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1206
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, GE, Camera] 260 - GE 0x0104: 1694568960
       [MakerNotes, GE, Camera] 512 - GE 0x0200: 673605 0 16777216
       [MakerNotes, GE, Camera] 514 - Macro: Off
      @@ -78,9 +78,9 @@
       [MakerNotes, GE, Camera] 768 - GE Make: GE DIGITAL CAMERA
       [MakerNotes, GE, Camera] 1280 - GE 0x0500: 0
       [MakerNotes, GE, Camera] 1536 - GE 0x0600: 0
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 5.1
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/77
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 22.5 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 11.6
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 5.1
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/77
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 22.5 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 11.6
      diff -Nru libimage-exiftool-perl-11.88/t/Geotag_12.out libimage-exiftool-perl-12.40+dfsg/t/Geotag_12.out
      --- libimage-exiftool-perl-11.88/t/Geotag_12.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Geotag_12.out	2021-01-06 17:44:20.000000000 +0000
      @@ -0,0 +1,5 @@
      +[EXIF, GPS, Location] 0 - GPS Version ID: 2.3.0.0
      +[EXIF, GPS, Location] 1 - GPS Latitude Ref: South
      +[EXIF, GPS, Location] 2 - GPS Latitude: 44 deg 41' 24.32"
      +[EXIF, GPS, Location] 3 - GPS Longitude Ref: East
      +[EXIF, GPS, Location] 4 - GPS Longitude: 170 deg 25' 28.45"
      diff -Nru libimage-exiftool-perl-11.88/t/Geotag.t libimage-exiftool-perl-12.40+dfsg/t/Geotag.t
      --- libimage-exiftool-perl-11.88/t/Geotag.t	2017-06-05 12:12:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Geotag.t	2021-01-06 17:44:20.000000000 +0000
      @@ -4,7 +4,7 @@
       my $numTests;
       
       BEGIN {
      -    $numTests = 11;
      +    $numTests = 12;
           $| = 1; print "1..$numTests\n"; $Image::ExifTool::configFile = '';
           require './t/TestLib.pm'; t::TestLib->import();
           # must create user-defined tags before loading ExifTool (used in test 8)
      @@ -194,6 +194,25 @@
           if (check($exifTool, $info, $testname, $testnum)) {
               unlink $testfile;
           } else {
      +        print 'not ';
      +    }
      +    print "ok $testnum\n";
      +}
      +
      +# test 12: Geotag from DJI CSV log file
      +{
      +    ++$testnum;
      +    my $exifTool = new Image::ExifTool;
      +    my $testfile = "t/${testname}_${testnum}_failed.jpg";
      +    unlink $testfile;
      +    $exifTool->SetNewValue(Geotag => 't/images/Geotag_DJI_2020-12-02_[07-50-31].csv');
      +    $exifTool->SetNewValue(Geotime => '2020:12:02 07:50:35.3');
      +    $exifTool->WriteInfo('t/images/Writer.jpg', $testfile);
      +    # (ignore GPSDate/TimeStamp because they will depend on the system time zone)
      +    my $info = $exifTool->ImageInfo($testfile, 'gps:all', '-gpstimestamp', '-gpsdatestamp');
      +    if (check($exifTool, $info, $testname, $testnum)) {
      +        unlink $testfile;
      +    } else {
               print 'not ';
           }
           print "ok $testnum\n";
      diff -Nru libimage-exiftool-perl-11.88/t/GeoTiff_2.out libimage-exiftool-perl-12.40+dfsg/t/GeoTiff_2.out
      --- libimage-exiftool-perl-11.88/t/GeoTiff_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/GeoTiff_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: GeoTiff.tif
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.6 kB
      +[File, System, Other] FileSize - File Size: 2.6 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2005:11:14 14:47:21-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:30-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: TIFF
       [File, File, Other] FileTypeExtension - File Type Extension: tif
      @@ -34,5 +34,5 @@
       [GeoTiff, GeoTiff, Location] 3072 - Projected CS Type: User Defined
       [GeoTiff, GeoTiff, Location] 3073 - PCS Citation: Hough UTM zone 17N
       [GeoTiff, GeoTiff, Location] 3074 - Projection: UTM zone 17N
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 25x24
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000600
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 25x24
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000600
      diff -Nru libimage-exiftool-perl-11.88/t/GeoTiff_3.out libimage-exiftool-perl-12.40+dfsg/t/GeoTiff_3.out
      --- libimage-exiftool-perl-11.88/t/GeoTiff_3.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/GeoTiff_3.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: GeoTiff_3_failed.tif
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 2.6 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:26-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:25-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:26-04:00
      +[File, System, Other] FileSize - File Size: 2.6 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:30-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:30-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:30-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: TIFF
       [File, File, Other] FileTypeExtension - File Type Extension: tif
      @@ -34,5 +34,5 @@
       [GeoTiff, GeoTiff, Location] 3072 - Projected CS Type: User Defined
       [GeoTiff, GeoTiff, Location] 3073 - PCS Citation: Hough UTM zone 17N
       [GeoTiff, GeoTiff, Location] 3074 - Projection: UTM zone 17N
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 25x24
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000600
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 25x24
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000600
      diff -Nru libimage-exiftool-perl-11.88/t/GIF_2.out libimage-exiftool-perl-12.40+dfsg/t/GIF_2.out
      --- libimage-exiftool-perl-11.88/t/GIF_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/GIF_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -10,8 +10,8 @@
       DeviceAttributes: Reflective, Glossy, Positive, Color
       DeviceManufacturer: none
       DeviceModel: 
      -ExifToolVersion: 10.71
      -FileSize: 2.3 kB
      +ExifToolVersion: 12.11
      +FileSize: 2.3 KiB
       FileType: GIF
       FileTypeExtension: gif
       GIFVersion: 89a
      @@ -24,6 +24,7 @@
       MIMEType: image/gif
       MediaWhitePoint: 0.9505 1 1.0891
       Megapixels: 0.000064
      +PixelAspectRatio: 1
       PrimaryPlatform: Apple Computer Inc.
       ProfileCMMType: Nikon Corporation
       ProfileClass: Display Device Profile
      diff -Nru libimage-exiftool-perl-11.88/t/GIF_3.out libimage-exiftool-perl-12.40+dfsg/t/GIF_3.out
      --- libimage-exiftool-perl-11.88/t/GIF_3.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/GIF_3.out	2020-11-27 16:34:40.000000000 +0000
      @@ -11,8 +11,8 @@
       DeviceAttributes: Reflective, Glossy, Positive, Color
       DeviceManufacturer: none
       DeviceModel: 
      -ExifToolVersion: 10.71
      -FileSize: 4.5 kB
      +ExifToolVersion: 12.11
      +FileSize: 4.5 KiB
       FileType: GIF
       FileTypeExtension: gif
       GIFVersion: 89a
      @@ -25,6 +25,7 @@
       MIMEType: image/gif
       MediaWhitePoint: 0.9505 1 1.0891
       Megapixels: 0.000064
      +PixelAspectRatio: 1
       PrimaryPlatform: Apple Computer Inc.
       ProfileCMMType: Nikon Corporation
       ProfileClass: Display Device Profile
      @@ -40,4 +41,4 @@
       RedTRC: (Binary data 14 bytes)
       RenderingIntent: Perceptual
       Title: GIF with XMP
      -XMPToolkit: Image::ExifTool 10.71
      +XMPToolkit: Image::ExifTool 12.11
      diff -Nru libimage-exiftool-perl-11.88/t/GIF_4.out libimage-exiftool-perl-12.40+dfsg/t/GIF_4.out
      --- libimage-exiftool-perl-11.88/t/GIF_4.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/GIF_4.out	2020-11-27 16:34:40.000000000 +0000
      @@ -3,8 +3,8 @@
       ColorResolutionDepth: 8
       Comment: x
       Country: Canada
      -ExifToolVersion: 9.93
      -FileSize: 4.0 kB
      +ExifToolVersion: 12.11
      +FileSize: 4.0 KiB
       FileType: GIF
       FileTypeExtension: gif
       GIFVersion: 89a
      @@ -14,5 +14,6 @@
       ImageWidth: 8
       MIMEType: image/gif
       Megapixels: 0.000064
      +PixelAspectRatio: 1
       Subject: one, two, three
      -XMPToolkit: Image::ExifTool 9.93
      +XMPToolkit: Image::ExifTool 12.11
      diff -Nru libimage-exiftool-perl-11.88/t/GIMP_2.out libimage-exiftool-perl-12.40+dfsg/t/GIMP_2.out
      --- libimage-exiftool-perl-11.88/t/GIMP_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/GIMP_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: GIMP.xcf
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.3 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 09:59:41-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:11:39-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 09:59:41-05:00
      +[File, System, Other] FileSize - File Size: 2.3 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:30-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 21:22:58-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: XCF
       [File, File, Other] FileTypeExtension - File Type Extension: xcf
      @@ -63,5 +63,5 @@
       [ICC_Profile, ICC_Profile, Image] bTRC - Blue Tone Reproduction Curve: (Binary data 14 bytes)
       [ICC_Profile, ICC_Profile, Image] wtpt - Media White Point: 0.9505 1 1.0891
       [ICC_Profile, ICC_Profile, Image] cprt - Profile Copyright: Nikon Inc. & Nikon Corporation 2001
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/GoPro_2.out libimage-exiftool-perl-12.40+dfsg/t/GoPro_2.out
      --- libimage-exiftool-perl-11.88/t/GoPro_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/GoPro_2.out	2021-09-22 18:09:08.000000000 +0000
      @@ -8,7 +8,7 @@
       [APP6, GoPro, Camera] CINF - GoPro CINF: 60 49 27 73 22 20 157 168 225 252 86 165 90 126 204 208
       [APP6, GoPro, Camera] CASN - Camera Serial Number: C3221324657219
       [APP6, GoPro, Camera] MINF - Camera Model Name: HERO6 Black
      -[APP6, GoPro, Camera] MUID - GoPro MUID: 1226518844 2828866582 2773941473 3503062618 0 0 0 0
      +[APP6, GoPro, Camera] MUID - Media Unique ID: 491b313ca89d1416a556fce1d0cc7e5a00000000000000000000000000000000
       [APP6, GoPro, Camera] CMOD - GoPro CMOD: 17
       [APP6, GoPro, Camera] MTYP - GoPro MTYP: 11
       [APP6, GoPro, Camera] OREN - Auto Rotation: Up
      @@ -19,7 +19,7 @@
       [APP6, GoPro, Camera] PTWB - White Balance: AUTO
       [APP6, GoPro, Camera] PTSH - Sharpness: HIGH
       [APP6, GoPro, Camera] PTCL - Color Mode: FLAT
      -[APP6, GoPro, Camera] EXPT - GoPro EXPT: 
      +[APP6, GoPro, Camera] EXPT - Maximum Shutter Angle: 
       [APP6, GoPro, Camera] PIMX - Auto ISO Max: 3200
       [APP6, GoPro, Camera] PIMN - Auto ISO Min: 3200
       [APP6, GoPro, Camera] PTEV - Exposure Compensation: 0.0
      diff -Nru libimage-exiftool-perl-11.88/t/GPS_2.out libimage-exiftool-perl-12.40+dfsg/t/GPS_2.out
      --- libimage-exiftool-perl-11.88/t/GPS_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/GPS_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: GPS.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.1 kB
      +[File, System, Other] FileSize - File Size: 2.1 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2008:10:14 11:39:46-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:31-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -67,7 +67,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1050
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [IPTC, IPTC, Other] 0 - Application Record Version: 2
       [IPTC, IPTC, Other] 120 - Caption-Abstract: Communications
       [IPTC, IPTC, Author] 122 - Writer-Editor: Ian Britton
      @@ -86,11 +86,11 @@
       [IPTC, IPTC, Other] 10 - Urgency: 5 (normal urgency)
       [IPTC, IPTC, Other] 25 - Keywords: Communications
       [IPTC, IPTC, Author] 116 - Copyright Notice: ian Britton - FreeFoto.com
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 0.64
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 120x80
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.010
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/724
      -[Composite, Composite, Location] GPS::GPSLatitude - GPS Latitude: 54 degrees 59.38 minutes N
      -[Composite, Composite, Location] GPS::GPSLongitude - GPS Longitude: 1 degrees 54.85 minutes W
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 0.0 mm
      -[Composite, Composite, Location] Exif::GPSPosition - GPS Position: 54 degrees 59.38 minutes N, 1 degrees 54.85 minutes W
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 0.64
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 120x80
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.010
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/724
      +[Composite, Composite, Location] GPS-GPSLatitude - GPS Latitude: 54 degrees 59.38 minutes N
      +[Composite, Composite, Location] GPS-GPSLongitude - GPS Longitude: 1 degrees 54.85 minutes W
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 0.0 mm
      +[Composite, Composite, Location] Exif-GPSPosition - GPS Position: 54 degrees 59.38 minutes N, 1 degrees 54.85 minutes W
      diff -Nru libimage-exiftool-perl-11.88/t/GPS_3.out libimage-exiftool-perl-12.40+dfsg/t/GPS_3.out
      --- libimage-exiftool-perl-11.88/t/GPS_3.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/GPS_3.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: GPS_3_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 2.1 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:26-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:26-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:26-04:00
      +[File, System, Other] FileSize - File Size: 2.1 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:31-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:31-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:31-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -68,7 +68,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1074
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [IPTC, IPTC, Other] 0 - Application Record Version: 2
       [IPTC, IPTC, Other] 120 - Caption-Abstract: Communications
       [IPTC, IPTC, Author] 122 - Writer-Editor: Ian Britton
      @@ -87,12 +87,12 @@
       [IPTC, IPTC, Other] 10 - Urgency: 5 (normal urgency)
       [IPTC, IPTC, Other] 25 - Keywords: Communications
       [IPTC, IPTC, Author] 116 - Copyright Notice: ian Britton - FreeFoto.com
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 0.64
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 120x80
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.010
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/724
      -[Composite, Composite, Time] GPS::GPSDateTime - GPS Date/Time: 2007:03:03 00:16:10.55Z
      -[Composite, Composite, Location] GPS::GPSLatitude - GPS Latitude: 12 deg 21' 23.34" S
      -[Composite, Composite, Location] GPS::GPSLongitude - GPS Longitude: 1 deg 54' 51.00" W
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 0.0 mm
      -[Composite, Composite, Location] Exif::GPSPosition - GPS Position: 12 deg 21' 23.34" S, 1 deg 54' 51.00" W
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 0.64
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 120x80
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.010
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/724
      +[Composite, Composite, Time] GPS-GPSDateTime - GPS Date/Time: 2007:03:03 00:16:10.55Z
      +[Composite, Composite, Location] GPS-GPSLatitude - GPS Latitude: 12 deg 21' 23.34" S
      +[Composite, Composite, Location] GPS-GPSLongitude - GPS Longitude: 1 deg 54' 51.00" W
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 0.0 mm
      +[Composite, Composite, Location] Exif-GPSPosition - GPS Position: 12 deg 21' 23.34" S, 1 deg 54' 51.00" W
      diff -Nru libimage-exiftool-perl-11.88/t/HTML_2.out libimage-exiftool-perl-12.40+dfsg/t/HTML_2.out
      --- libimage-exiftool-perl-11.88/t/HTML_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/HTML_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: HTML.html
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 3.3 kB
      +[File, System, Other] FileSize - File Size: 3.3 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2010:06:28 20:35:26-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:31-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: HTML
       [File, File, Other] FileTypeExtension - File Type Extension: html
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/EXE.a and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/EXE.a differ
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/EXE.dylib and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/EXE.dylib differ
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/EXE.elf and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/EXE.elf differ
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/EXE.exe and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/EXE.exe differ
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/EXE.macho and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/EXE.macho differ
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/EXE.so and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/EXE.so differ
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/ExifTool.jpg and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/ExifTool.jpg differ
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/ExifTool.jps and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/ExifTool.jps differ
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/Flash.flv and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/Flash.flv differ
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/Flash.swf and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/Flash.swf differ
      diff -Nru libimage-exiftool-perl-11.88/t/images/Geotag_DJI_2020-12-02_[07-50-31].csv libimage-exiftool-perl-12.40+dfsg/t/images/Geotag_DJI_2020-12-02_[07-50-31].csv
      --- libimage-exiftool-perl-11.88/t/images/Geotag_DJI_2020-12-02_[07-50-31].csv	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/images/Geotag_DJI_2020-12-02_[07-50-31].csv	2020-12-02 13:22:55.000000000 +0000
      @@ -0,0 +1,94 @@
      +Id,Time(seconds),Time(text),Latitude,Longitude
      +1,0.3,0m 0.3s,-44.69009395,170.42456545
      +2,0.4,0m 0.4s,-44.69009389,170.42456538
      +3,0.5,0m 0.5s,-44.69009368,170.42456536
      +4,0.6,0m 0.6s,-44.69009359,170.42456529
      +5,0.7,0m 0.7s,-44.69009355,170.42456542
      +6,0.8,0m 0.8s,-44.69009345,170.42456534
      +7,0.9,0m 0.9s,-44.69009337,170.42456518
      +8,1,0m 1s,-44.69009331,170.42456511
      +9,1.1,0m 1.1s,-44.69009328,170.424565
      +10,1.2,0m 1.2s,-44.69009326,170.42456496
      +11,1.3,0m 1.3s,-44.69009337,170.42456508
      +12,1.4,0m 1.4s,-44.69009337,170.42456506
      +13,1.5,0m 1.5s,-44.69009351,170.42456512
      +14,1.6,0m 1.6s,-44.69009345,170.42456509
      +15,1.7,0m 1.7s,-44.69009359,170.4245652
      +16,1.9,0m 1.9s,-44.69009328,170.42456512
      +17,2,0m 2s,-44.69009316,170.42456514
      +18,2.1,0m 2.1s,-44.69009334,170.42456511
      +19,2.2,0m 2.2s,-44.69009329,170.42456518
      +20,2.3,0m 2.3s,-44.69009325,170.4245656
      +21,2.4,0m 2.4s,-44.69009319,170.4245658
      +22,2.5,0m 2.5s,-44.69009329,170.42456598
      +23,2.7,0m 2.7s,-44.69009283,170.4245669
      +24,2.8,0m 2.8s,-44.69009242,170.42456753
      +25,2.9,0m 2.9s,-44.69009213,170.42456775
      +26,3,0m 3s,-44.69009167,170.4245683
      +27,3.1,0m 3.1s,-44.69009135,170.42456885
      +28,3.2,0m 3.2s,-44.69009102,170.42456924
      +29,3.3,0m 3.3s,-44.69009102,170.42456972
      +30,3.4,0m 3.4s,-44.69009081,170.42456996
      +31,3.5,0m 3.5s,-44.69009059,170.42457032
      +32,3.6,0m 3.6s,-44.69009042,170.42457045
      +33,3.7,0m 3.7s,-44.69009023,170.42457053
      +34,3.8,0m 3.8s,-44.6900901,170.42457054
      +35,3.9,0m 3.9s,-44.69009008,170.42457032
      +36,4,0m 4s,-44.69009,170.42457026
      +37,4.1,0m 4.1s,-44.69009002,170.42457028
      +38,4.2,0m 4.2s,-44.69008998,170.42457021
      +39,4.3,0m 4.3s,-44.69009004,170.42456997
      +40,4.5,0m 4.5s,-44.69009009,170.42456979
      +41,4.6,0m 4.6s,-44.69009007,170.42456965
      +42,4.7,0m 4.7s,-44.69009011,170.42456949
      +43,4.8,0m 4.8s,-44.6900901,170.42456935
      +44,4.9,0m 4.9s,-44.69009027,170.42456917
      +45,5,0m 5s,-44.69009027,170.42456904
      +46,5.1,0m 5.1s,-44.69009024,170.42456892
      +47,5.3,0m 5.3s,-44.69009024,170.42456862
      +48,5.4,0m 5.4s,-44.69009023,170.4245685
      +49,5.5,0m 5.5s,-44.69009038,170.4245683
      +50,5.6,0m 5.6s,-44.69009037,170.42456818
      +51,5.7,0m 5.7s,-44.69009036,170.42456817
      +52,5.8,0m 5.8s,-44.69009035,170.42456808
      +53,5.9,0m 5.9s,-44.69009035,170.42456806
      +54,6,0m 6s,-44.69009035,170.42456801
      +55,6.1,0m 6.1s,-44.69009021,170.42456752
      +56,6.2,0m 6.2s,-44.69009018,170.42456746
      +57,6.3,0m 6.3s,-44.69009019,170.42456757
      +58,6.4,0m 6.4s,-44.69009014,170.42456755
      +59,6.5,0m 6.5s,-44.69009001,170.42456755
      +60,6.6,0m 6.6s,-44.69008996,170.42456756
      +61,6.7,0m 6.7s,-44.6900899,170.42456763
      +62,6.8,0m 6.8s,-44.69008985,170.42456767
      +63,6.9,0m 6.9s,-44.69008982,170.4245677
      +64,7,0m 7s,-44.69008977,170.42456775
      +65,7.1,0m 7.1s,-44.69008971,170.42456773
      +66,7.2,0m 7.2s,-44.69008964,170.42456778
      +67,7.3,0m 7.3s,-44.69008958,170.42456798
      +68,7.4,0m 7.4s,-44.69008952,170.424568
      +69,7.5,0m 7.5s,-44.69008948,170.42456825
      +70,7.6,0m 7.6s,-44.69008944,170.42456828
      +71,7.7,0m 7.7s,-44.69008943,170.42456831
      +72,7.8,0m 7.8s,-44.69008937,170.42456834
      +73,7.9,0m 7.9s,-44.6900893,170.42456855
      +74,8,0m 8s,-44.69008922,170.42456853
      +75,8.2,0m 8.2s,-44.69008899,170.42456858
      +76,8.4,0m 8.4s,-44.69008861,170.42456849
      +77,8.5,0m 8.5s,-44.69008836,170.42456849
      +78,8.6,0m 8.6s,-44.6900882,170.42456853
      +79,8.7,0m 8.7s,-44.69008796,170.42456851
      +80,8.8,0m 8.8s,-44.69008784,170.42456857
      +81,8.9,0m 8.9s,-44.69008797,170.42456858
      +82,9,0m 9s,-44.69008791,170.4245686
      +83,9.1,0m 9.1s,-44.69008788,170.42456842
      +84,9.2,0m 9.2s,-44.6900878,170.42456834
      +85,9.3,0m 9.3s,-44.69008788,170.42456845
      +86,9.4,0m 9.4s,-44.69008781,170.42456838
      +87,9.5,0m 9.5s,-44.69008777,170.42456858
      +88,9.6,0m 9.6s,-44.69008774,170.42456857
      +89,9.7,0m 9.7s,-44.69008734,170.4245683
      +90,9.8,0m 9.8s,-44.69008731,170.42456832
      +91,9.9,0m 9.9s,-44.69008766,170.42456823
      +92,10,0m 10s,-44.69008766,170.4245683
      +
      diff -Nru libimage-exiftool-perl-11.88/t/images/JXL.jxl libimage-exiftool-perl-12.40+dfsg/t/images/JXL.jxl
      --- libimage-exiftool-perl-11.88/t/images/JXL.jxl	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/images/JXL.jxl	2021-04-15 17:45:15.000000000 +0000
      @@ -0,0 +1,2 @@
      +ÿ
      +Ž
      \ No newline at end of file
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/MacOS.macos and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/MacOS.macos differ
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/MRC.mrc and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/MRC.mrc differ
      diff -Nru libimage-exiftool-perl-11.88/t/images/PFM.pfm libimage-exiftool-perl-12.40+dfsg/t/images/PFM.pfm
      --- libimage-exiftool-perl-11.88/t/images/PFM.pfm	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/images/PFM.pfm	2021-07-16 13:13:38.000000000 +0000
      @@ -0,0 +1,4 @@
      +PF
      +512 768
      +-1.000000
      +
      \ No newline at end of file
      diff -Nru libimage-exiftool-perl-11.88/t/images/XMP5.xmp libimage-exiftool-perl-12.40+dfsg/t/images/XMP5.xmp
      --- libimage-exiftool-perl-11.88/t/images/XMP5.xmp	2015-04-11 12:20:05.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/images/XMP5.xmp	2021-05-20 23:47:54.000000000 +0000
      @@ -64,7 +64,7 @@
         xmlns:Iptc4xmpExt='http://iptc.org/std/Iptc4xmpExt/2008-02-29/'
         xmlns:exif='http://ns.adobe.com/exif/1.0/'
         xmlns:mwg-rs='http://www.metadataworkinggroup.com/schemas/regions/'
      -  xmlns:myXMPns='http://ns.exiftool.ca/t/XMP.t'
      +  xmlns:myXMPns='http://ns.exiftool.org/t/XMP.t'
         xmlns:rdfs='http://www.w3.org/2000/01/rdf-schema#'
         xmlns:stArea='http://ns.adobe.com/xmp/sType/Area#'
         xmlns:xmpRights='http://ns.adobe.com/xap/1.0/rights/'>
      diff -Nru libimage-exiftool-perl-11.88/t/images/XMP.xml libimage-exiftool-perl-12.40+dfsg/t/images/XMP.xml
      --- libimage-exiftool-perl-11.88/t/images/XMP.xml	2009-03-03 18:49:24.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/images/XMP.xml	2021-05-20 23:47:54.000000000 +0000
      @@ -2,16 +2,16 @@
       
       
       
      +  xmlns:et='http://ns.exiftool.org/1.0/' et:toolkit='Image::ExifTool 7.62'
      +  xmlns:ExifTool='http://ns.exiftool.org/ExifTool/1.0/'
      +  xmlns:File='http://ns.exiftool.org/File/1.0/'
      +  xmlns:IFD0='http://ns.exiftool.org/EXIF/IFD0/1.0/'
      +  xmlns:ExifIFD='http://ns.exiftool.org/EXIF/ExifIFD/1.0/'
      +  xmlns:Nikon='http://ns.exiftool.org/MakerNotes/Nikon/1.0/'
      +  xmlns:InteropIFD='http://ns.exiftool.org/EXIF/InteropIFD/1.0/'
      +  xmlns:IFD1='http://ns.exiftool.org/EXIF/IFD1/1.0/'
      +  xmlns:EXIF='http://ns.exiftool.org/EXIF/EXIF/1.0/'
      +  xmlns:Composite='http://ns.exiftool.org/Composite/1.0/'>
        7.62
        Nikon.jpg
        t/images
      Binary files /tmp/tmpk5lwgx6v/Df_fIaWTi9/libimage-exiftool-perl-11.88/t/images/ZISRAW.czi and /tmp/tmpk5lwgx6v/G3akwAR_W0/libimage-exiftool-perl-12.40+dfsg/t/images/ZISRAW.czi differ
      diff -Nru libimage-exiftool-perl-11.88/t/InDesign_2.out libimage-exiftool-perl-12.40+dfsg/t/InDesign_2.out
      --- libimage-exiftool-perl-11.88/t/InDesign_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/InDesign_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: InDesign.indd
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 12 kB
      +[File, System, Other] FileSize - File Size: 12 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2009:06:19 13:09:44-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:07-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:31-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: INDD
       [File, File, Other] FileTypeExtension - File Type Extension: indd
      diff -Nru libimage-exiftool-perl-11.88/t/InDesign_3.out libimage-exiftool-perl-12.40+dfsg/t/InDesign_3.out
      --- libimage-exiftool-perl-11.88/t/InDesign_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/InDesign_3.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,15 +1,15 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: InDesign_3_failed.indd
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 12 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:27-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:27-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:27-04:00
      +[File, System, Other] FileSize - File Size: 12 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:31-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:31-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:31-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: INDD
       [File, File, Other] FileTypeExtension - File Type Extension: indd
       [File, File, Other] MIMEType - MIME Type: application/x-indesign
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-rdf, Document] about - About: d5d09d4b-2831-11dc-bfa2-d89eae7bab84
       [XMP, XMP-dc, Image] format - Format: application/x-indesign
       [XMP, XMP-pdf, Author] Author - Author: Phil Harvey
      diff -Nru libimage-exiftool-perl-11.88/t/IPTC_2.out libimage-exiftool-perl-12.40+dfsg/t/IPTC_2.out
      --- libimage-exiftool-perl-11.88/t/IPTC_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/IPTC_2.out	2021-06-09 15:42:27.000000000 +0000
      @@ -1,11 +1,12 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.27
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: IPTCDigest is not current. XMP may be out of sync
       [File, System, Other] FileName - File Name: IPTC.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 9.6 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 10:01:24-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:14:39-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 10:01:24-05:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 9.6 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:06:08 15:46:14-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
       [File, File, Other] MIMEType - MIME Type: image/jpeg
      @@ -65,5 +66,5 @@
       [APP14, Adobe, Image] 1 - APP14 Flags 0: (none)
       [APP14, Adobe, Image] 2 - APP14 Flags 1: (none)
       [APP14, Adobe, Image] 3 - Color Transform: YCbCr
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/IPTC_4.out libimage-exiftool-perl-12.40+dfsg/t/IPTC_4.out
      --- libimage-exiftool-perl-11.88/t/IPTC_4.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/IPTC_4.out	2021-06-09 15:42:27.000000000 +0000
      @@ -1,5 +1,6 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      -[File, System, Other] FileSize - File Size: 13 kB
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.27
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: IPTCDigest is not current. XMP may be out of sync
      +[File, System, Other] FileSize - File Size: 13 KiB
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
       [File, File, Other] MIMEType - MIME Type: image/jpeg
      @@ -57,11 +58,11 @@
       [Photoshop, Photoshop, Image] 0 - Photoshop Quality: 8
       [Photoshop, Photoshop, Image] 1 - Photoshop Format: Standard
       [Photoshop, Photoshop, Image] 2 - Progressive Scans: 3 Scans
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.78
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.27
       [XMP, XMP-iptcCore, Author] CreatorContactInfoCiAdrCtry - Creator Country: Canada
       [APP14, Adobe, Image] 0 - DCT Encode Version: 100
       [APP14, Adobe, Image] 1 - APP14 Flags 0: (none)
       [APP14, Adobe, Image] 2 - APP14 Flags 1: (none)
       [APP14, Adobe, Image] 3 - Color Transform: YCbCr
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/ISO_2.out libimage-exiftool-perl-12.40+dfsg/t/ISO_2.out
      --- libimage-exiftool-perl-11.88/t/ISO_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ISO_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,4 +1,4 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, File, Other] FileType - File Type: ISO
       [File, File, Other] FileTypeExtension - File Type Extension: iso
       [File, File, Other] MIMEType - MIME Type: application/x-iso9660-image
      @@ -16,4 +16,4 @@
       [ISO, ISO, Time] 813 - Volume Create Date: 2016:01:08 10:00:26.00+00:00
       [ISO, ISO, Time] 830 - Volume Modify Date: 2016:01:08 10:00:26.00+00:00
       [ISO, ISO, Other] 7 - Boot System: EL TORITO SPECIFICATION
      -[Composite, Composite, Other] ISO::VolumeSize - Volume Size: 373 MB
      +[Composite, Composite, Other] ISO-VolumeSize - Volume Size: 373 MiB
      diff -Nru libimage-exiftool-perl-11.88/t/ITC_2.out libimage-exiftool-perl-12.40+dfsg/t/ITC_2.out
      --- libimage-exiftool-perl-11.88/t/ITC_2.out	2019-12-04 15:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ITC_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: ITC.itc
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 672 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2008:01:12 21:30:37-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:09-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: ITC
       [File, File, Other] FileTypeExtension - File Type Extension: itc
      @@ -17,5 +17,5 @@
       [ITC, ITC, Image] 7 - Image Width: 8
       [ITC, ITC, Image] 8 - Image Height: 8
       [ITC, ITC, Other] data - Image Data: (Binary data 180 bytes)
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/Jpeg2000_2.out libimage-exiftool-perl-12.40+dfsg/t/Jpeg2000_2.out
      --- libimage-exiftool-perl-11.88/t/Jpeg2000_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Jpeg2000_2.out	2021-01-06 17:44:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.14
       [File, System, Other] FileName - File Name: Jpeg2000.jp2
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 2028 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2016:10:11 07:20:47-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:08-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2016:10:10 15:46:32-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:01:05 15:35:26-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JP2
       [File, File, Other] FileTypeExtension - File Type Extension: jp2
      @@ -44,28 +44,28 @@
       [GeoTiff, GeoTiff, Location] 1026 - GT Citation: NAD83 / UTM zone 18N
       [GeoTiff, GeoTiff, Location] 3072 - Projected CS Type: NAD83 UTM zone 18N
       [GeoTiff, GeoTiff, Location] 3076 - Proj Linear Units: Linear Meter
      -[XMP, XMP, Unknown] :imageCreationXmlns - Image Creation Xmlns: http://www.jpeg.org/jpx/1.0/xml
      -[XMP, XMP-xsi, Unknown] xsi:imageCreationSchemaLocation - Image Creation Schema Location: http://www.jpeg.org/jpx/1.0/xml;http://www.jpeg.org/metadata/15444-2.xsd
      -[XMP, XMP, Unknown] :imageCreationGeneralCreationInfoCreationTime - Image Creation General Creation Info Creation Time: 2001:08:01 15:40:00.000-06:00
      -[XMP, XMP, Unknown] :contentDescriptionXmlns - Content Description Xmlns: http://www.jpeg.org/jpx/1.0/xml
      -[XMP, XMP-xsi, Unknown] xsi:contentDescriptionSchemaLocation - Content Description Schema Location: http://www.jpeg.org/jpx/1.0/xml;http://www.jpeg.org/metadata/15444-2.xsd
      -[XMP, XMP, Unknown] :contentDescriptionCaption - Content Description Caption: Wide Dynamic Range Scene
      -[XMP, XMP, Unknown] :contentDescriptionLocationAddressType - Content Description Location Address Type: Test Scene Location
      -[XMP, XMP, Unknown] :contentDescriptionLocationAddressAddrCompType - Content Description Location Address Addr Comp Type: Street
      -[XMP, XMP, Unknown] :contentDescriptionLocationAddressAddrComp - Content Description Location Address Addr Comp: 70 Lighthouse St 
      -[XMP, XMP, Unknown] :contentDescriptionLocationAddressAddrCompType - Content Description Location Address Addr Comp Type: City
      -[XMP, XMP, Unknown] :contentDescriptionLocationAddressAddrComp - Content Description Location Address Addr Comp: Charlotte
      -[XMP, XMP, Unknown] :contentDescriptionLocationAddressAddrCompType - Content Description Location Address Addr Comp Type: State
      -[XMP, XMP, Unknown] :contentDescriptionLocationAddressAddrComp - Content Description Location Address Addr Comp: New York
      -[XMP, XMP, Unknown] :contentDescriptionLocationAddressZipcode - Content Description Location Address Zipcode: 14612
      -[XMP, XMP, Unknown] :contentDescriptionLocationAddressCountry - Content Description Location Address Country: US
      -[XMP, XMP, Unknown] :contentDescriptionThingId - Content Description Thing Id: 5431
      -[XMP, XMP, Unknown] :contentDescriptionThingName - Content Description Thing Name: Macbeth chart
      -[XMP, XMP, Unknown] :contentDescriptionThingPositionRectX - Content Description Thing Position Rect X: 562
      -[XMP, XMP, Unknown] :contentDescriptionThingPositionRectY - Content Description Thing Position Rect Y: 286
      -[XMP, XMP, Unknown] :contentDescriptionThingPositionRectWidth - Content Description Thing Position Rect Width: 59
      -[XMP, XMP, Unknown] :contentDescriptionThingPositionRectHeight - Content Description Thing Position Rect Height: 39
      -[XMP, XMP, Unknown] :contentDescriptionEventEventType - Content Description Event Event Type: Capture Device Test 1234
      -[XMP, XMP, Unknown] :contentDescriptionEventDescription - Content Description Event Description: Project Prototype
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 16x16
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000256
      +[XML, XML, Unknown] imageCreationXmlns - Image Creation Xmlns: http://www.jpeg.org/jpx/1.0/xml
      +[XML, XML-xsi, Unknown] xsi:imageCreationSchemaLocation - Image Creation Schema Location: http://www.jpeg.org/jpx/1.0/xml;http://www.jpeg.org/metadata/15444-2.xsd
      +[XML, XML, Unknown] imageCreationGeneralCreationInfoCreationTime - Image Creation General Creation Info Creation Time: 2001:08:01 15:40:00.000-06:00
      +[XML, XML, Unknown] contentDescriptionXmlns - Content Description Xmlns: http://www.jpeg.org/jpx/1.0/xml
      +[XML, XML-xsi, Unknown] xsi:contentDescriptionSchemaLocation - Content Description Schema Location: http://www.jpeg.org/jpx/1.0/xml;http://www.jpeg.org/metadata/15444-2.xsd
      +[XML, XML, Unknown] contentDescriptionCaption - Content Description Caption: Wide Dynamic Range Scene
      +[XML, XML, Unknown] contentDescriptionLocationAddressType - Content Description Location Address Type: Test Scene Location
      +[XML, XML, Unknown] contentDescriptionLocationAddressAddrCompType - Content Description Location Address Addr Comp Type: Street
      +[XML, XML, Unknown] contentDescriptionLocationAddressAddrComp - Content Description Location Address Addr Comp: 70 Lighthouse St 
      +[XML, XML, Unknown] contentDescriptionLocationAddressAddrCompType - Content Description Location Address Addr Comp Type: City
      +[XML, XML, Unknown] contentDescriptionLocationAddressAddrComp - Content Description Location Address Addr Comp: Charlotte
      +[XML, XML, Unknown] contentDescriptionLocationAddressAddrCompType - Content Description Location Address Addr Comp Type: State
      +[XML, XML, Unknown] contentDescriptionLocationAddressAddrComp - Content Description Location Address Addr Comp: New York
      +[XML, XML, Unknown] contentDescriptionLocationAddressZipcode - Content Description Location Address Zipcode: 14612
      +[XML, XML, Unknown] contentDescriptionLocationAddressCountry - Content Description Location Address Country: US
      +[XML, XML, Unknown] contentDescriptionThingId - Content Description Thing Id: 5431
      +[XML, XML, Unknown] contentDescriptionThingName - Content Description Thing Name: Macbeth chart
      +[XML, XML, Unknown] contentDescriptionThingPositionRectX - Content Description Thing Position Rect X: 562
      +[XML, XML, Unknown] contentDescriptionThingPositionRectY - Content Description Thing Position Rect Y: 286
      +[XML, XML, Unknown] contentDescriptionThingPositionRectWidth - Content Description Thing Position Rect Width: 59
      +[XML, XML, Unknown] contentDescriptionThingPositionRectHeight - Content Description Thing Position Rect Height: 39
      +[XML, XML, Unknown] contentDescriptionEventEventType - Content Description Event Event Type: Capture Device Test 1234
      +[XML, XML, Unknown] contentDescriptionEventDescription - Content Description Event Description: Project Prototype
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 16x16
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000256
      diff -Nru libimage-exiftool-perl-11.88/t/Jpeg2000_3.out libimage-exiftool-perl-12.40+dfsg/t/Jpeg2000_3.out
      --- libimage-exiftool-perl-11.88/t/Jpeg2000_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Jpeg2000_3.out	2021-11-11 17:36:19.000000000 +0000
      @@ -1,11 +1,11 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.35
       [File, System, Other] FileName - File Name: Jpeg2000_3_failed.jp2
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 3.6 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:28-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:28-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:28-04:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 3.6 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:11:09 11:03:34-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:11:09 11:03:34-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:11:09 11:03:34-05:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: JP2
       [File, File, Other] FileTypeExtension - File Type Extension: jp2
       [File, File, Other] MIMEType - MIME Type: image/jp2
      @@ -20,9 +20,9 @@
       [Jpeg2000, Jpeg2000, Image] 10 - Bits Per Component: 8 Bits, Unsigned
       [Jpeg2000, Jpeg2000, Image] 11 - Compression: JPEG 2000
       [Jpeg2000, Jpeg2000, Image] 0 - Color Spec Method: Enumerated
      -[Jpeg2000, Jpeg2000, Image] 1 - Color Spec Precedence: 0
      +[Jpeg2000, Jpeg2000, Image] 1 - Color Spec Precedence: 1
       [Jpeg2000, Jpeg2000, Image] 2 - Color Spec Approximation: Not Specified
      -[Jpeg2000, Jpeg2000, Image] 3 - Color Space: sRGB
      +[Jpeg2000, Jpeg2000, Image] 3 - Color Space: Grayscale
       [EXIF, IFD0, Image] 256 - Image Width: 1
       [EXIF, IFD0, Image] 257 - Image Height: 1
       [EXIF, IFD0, Image] 258 - Bits Per Sample: 8
      @@ -45,10 +45,10 @@
       [GeoTiff, GeoTiff, Location] 1026 - GT Citation: NAD83 / UTM zone 18N
       [GeoTiff, GeoTiff, Location] 3072 - Projected CS Type: NAD83 UTM zone 18N
       [GeoTiff, GeoTiff, Location] 3076 - Proj Linear Units: Linear Meter
      -[XMP, XMP, Unknown] :test - Test: Yippee
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      -[XMP, XMP-photoshop, Location] City - City: a city
      +[XML, XML, Unknown] test - Test: Yippee
       [IPTC, IPTC, Other] 25 - Keywords: test keyword
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 16x16
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000256
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.35
      +[XMP, XMP-photoshop, Location] City - City: a city
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 16x16
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000256
      diff -Nru libimage-exiftool-perl-11.88/t/Jpeg2000_4.out libimage-exiftool-perl-12.40+dfsg/t/Jpeg2000_4.out
      --- libimage-exiftool-perl-11.88/t/Jpeg2000_4.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Jpeg2000_4.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Jpeg2000.j2c
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 618 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2011:08:15 11:40:57-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:09-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: J2C
       [File, File, Other] FileTypeExtension - File Type Extension: j2c
      @@ -13,5 +13,5 @@
       [File, File, Image] ImageHeight - Image Height: 8
       [File, File, Image] Comment - Comment: Kakadu-v4.2.1
       [File, File, Image] Comment - Comment: Kdu-Layer-Info: log_2{Delta-D(MSE)/[2^16*Delta-L(bytes)]}, L(bytes);  -0.0,  4.2e+02;  -0.0,  4.3e+02;  -0.0,  4.5e+02;  -0.0,  4.7e+02;  -0.0,  4.9e+02;  -0.0,  5.0e+02;  -0.0,  5.2e+02;  -0.0,  5.4e+02;  -0.0,  5.6e+02;  -0.0,  5.8e+02;  -0.0,  6.0e+02;-256.0,  6.2e+02;
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/Jpeg2000_5.out libimage-exiftool-perl-12.40+dfsg/t/Jpeg2000_5.out
      --- libimage-exiftool-perl-11.88/t/Jpeg2000_5.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Jpeg2000_5.out	2021-01-05 20:47:18.000000000 +0000
      @@ -0,0 +1,2 @@
      +[Jpeg2000, Jpeg2000, Image] xml  - XML: (Binary data 377 bytes)
      +[Jpeg2000, Jpeg2000, Image] xml  - XML: (Binary data 902 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Jpeg2000.t libimage-exiftool-perl-12.40+dfsg/t/Jpeg2000.t
      --- libimage-exiftool-perl-11.88/t/Jpeg2000.t	2017-06-05 12:20:25.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Jpeg2000.t	2021-11-11 17:36:19.000000000 +0000
      @@ -2,7 +2,7 @@
       # After "make install" it should work as "perl t/Jpeg2000.t".
       
       BEGIN {
      -    $| = 1; print "1..4\n"; $Image::ExifTool::configFile = '';
      +    $| = 1; print "1..5\n"; $Image::ExifTool::configFile = '';
           require './t/TestLib.pm'; t::TestLib->import();
       }
       END {print "not ok 1\n" unless $loaded;}
      @@ -33,6 +33,8 @@
               ['XMP:City' => 'a city'],
               ['EXIF:ImageDescription' => 'a description'],
               ['XML' => 'Yippee', Protected => 1 ],
      +        ['Jpeg2000:ColorSpace' => 'Grayscale', Protected => 1 ],
      +        ['ColorSpecPrecedence' => 1, Protected => 1 ],
           );
           print 'not ' unless writeCheck(\@writeInfo, $testname, $testnum, 't/images/Jpeg2000.jp2');
           print "ok $testnum\n";
      @@ -46,5 +48,14 @@
           print 'not ' unless check($exifTool, $info, $testname, $testnum);
           print "ok $testnum\n";
       }
      +
      +# test 5: Extract XML as a block from JP2 image
      +{
      +    ++$testnum;
      +    my $exifTool = new Image::ExifTool;
      +    my $info = $exifTool->ImageInfo('t/images/Jpeg2000.jp2','xml');
      +    print 'not ' unless check($exifTool, $info, $testname, $testnum);
      +    print "ok $testnum\n";
      +}
       
       # end
      diff -Nru libimage-exiftool-perl-11.88/t/JXL_2.out libimage-exiftool-perl-12.40+dfsg/t/JXL_2.out
      --- libimage-exiftool-perl-11.88/t/JXL_2.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/JXL_2.out	2021-04-15 17:45:15.000000000 +0000
      @@ -0,0 +1,8 @@
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.25
      +[File, File, Other] FileType - File Type: JXL Codestream
      +[File, File, Other] FileTypeExtension - File Type Extension: jxl
      +[File, File, Other] MIMEType - MIME Type: image/jxl
      +[File, File, Image] ImageWidth - Image Width: 200
      +[File, File, Image] ImageHeight - Image Height: 130
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 200x130
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.026
      diff -Nru libimage-exiftool-perl-11.88/t/JXL_3.out libimage-exiftool-perl-12.40+dfsg/t/JXL_3.out
      --- libimage-exiftool-perl-11.88/t/JXL_3.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/JXL_3.out	2021-04-15 17:45:15.000000000 +0000
      @@ -0,0 +1,19 @@
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.25
      +[File, File, Other] FileType - File Type: JXL
      +[File, File, Other] FileTypeExtension - File Type Extension: jxl
      +[File, File, Other] MIMEType - MIME Type: image/jxl
      +[File, File, Image] ExifByteOrder - Exif Byte Order: Big-endian (Motorola, MM)
      +[File, File, Image] ImageWidth - Image Width: 200
      +[File, File, Image] ImageHeight - Image Height: 130
      +[Jpeg2000, Jpeg2000, Video] 0 - Major Brand: JPEG XL Image (.JXL)
      +[Jpeg2000, Jpeg2000, Video] 1 - Minor Version: 0.0.0
      +[Jpeg2000, Jpeg2000, Video] 2 - Compatible Brands: jxl 
      +[EXIF, IFD0, Image] 282 - X Resolution: 72
      +[EXIF, IFD0, Image] 283 - Y Resolution: 72
      +[EXIF, IFD0, Image] 296 - Resolution Unit: inches
      +[EXIF, IFD0, Author] 315 - Artist: test artist
      +[EXIF, IFD0, Image] 531 - Y Cb Cr Positioning: Centered
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.25
      +[XMP, XMP-dc, Image] subject - Subject: test subject
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 200x130
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.026
      diff -Nru libimage-exiftool-perl-11.88/t/JXL.t libimage-exiftool-perl-12.40+dfsg/t/JXL.t
      --- libimage-exiftool-perl-11.88/t/JXL.t	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/JXL.t	2021-04-15 17:45:15.000000000 +0000
      @@ -0,0 +1,50 @@
      +# Before "make install", this script should be runnable with "make test".
      +# After "make install" it should work as "perl t/Jpeg2000.t".
      +
      +BEGIN {
      +    $| = 1; print "1..3\n"; $Image::ExifTool::configFile = '';
      +    require './t/TestLib.pm'; t::TestLib->import();
      +}
      +END {print "not ok 1\n" unless $loaded;}
      +
      +# test 1: Load the module(s)
      +use Image::ExifTool 'ImageInfo';
      +use Image::ExifTool::Jpeg2000;
      +$loaded = 1;
      +print "ok 1\n";
      +
      +my $testname = 'JXL';
      +my $testnum = 1;
      +
      +# test 2: Extract information from JXL.jxl
      +{
      +    ++$testnum;
      +    my $exifTool = new Image::ExifTool;
      +    my $info = $exifTool->ImageInfo('t/images/JXL.jxl', '-system:all');
      +    print 'not ' unless check($exifTool, $info, $testname, $testnum);
      +    print "ok $testnum\n";
      +}
      +
      +# test 3: Write some new information
      +{
      +    ++$testnum;
      +    my $exifTool = new Image::ExifTool;
      +    my $testfile = "t/${testname}_${testnum}_failed.jxl";
      +    unlink $testfile;
      +    my @writeInfo = (
      +        [ 'XMP:Subject' => 'test subject' ],
      +        [ 'EXIF:Artist' => 'test artist' ],
      +    );
      +    $exifTool->Options(IgnoreMinorErrors => 1);
      +    $exifTool->SetNewValue(@$_) foreach @writeInfo;
      +    my $ok = writeInfo($exifTool, 't/images/JXL.jxl', $testfile, undef, 1);
      +    my $info = $exifTool->ImageInfo($testfile, '-system:all');
      +    if (check($exifTool, $info, $testname, $testnum) and $ok) {
      +        unlink $testfile;
      +    } else {
      +        print 'not ';
      +    }
      +    print "ok $testnum\n";
      +}
      +
      +# end
      diff -Nru libimage-exiftool-perl-11.88/t/Kodak_2.out libimage-exiftool-perl-12.40+dfsg/t/Kodak_2.out
      --- libimage-exiftool-perl-11.88/t/Kodak_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Kodak_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Kodak.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 3.3 kB
      +[File, System, Other] FileSize - File Size: 3.3 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:06:05 13:12:56-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:09-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:32-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -55,7 +55,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1664
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Kodak, Camera] 0 - Kodak Model: DX4900  
       [MakerNotes, Kodak, Camera] 9 - Quality: Fine
       [MakerNotes, Kodak, Camera] 10 - Burst Mode: Off
      @@ -102,10 +102,10 @@
       [FlashPix, FlashPix, Audio] Audio Stream - Audio Stream: (Binary data 18 bytes)
       [FlashPix, FlashPix, Other] 1 - Code Page: Unicode UTF-16, little endian
       [FlashPix, FlashPix, Other] Screen Nail - Screen Nail: (Binary data 166 bytes)
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 6.7
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/216
      -[Composite, Composite, Time] Kodak::DateCreated - Date Created: 2002:05:01
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 10.2 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 13.1
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 6.7
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/216
      +[Composite, Composite, Time] Kodak-DateCreated - Date Created: 2002:05:01
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 10.2 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 13.1
      diff -Nru libimage-exiftool-perl-11.88/t/Kodak_3.out libimage-exiftool-perl-12.40+dfsg/t/Kodak_3.out
      --- libimage-exiftool-perl-11.88/t/Kodak_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Kodak_3.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Kodak_3_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 3.3 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:28-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:28-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:28-04:00
      +[File, System, Other] FileSize - File Size: 3.3 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:32-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:32-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:32-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -55,7 +55,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1664
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Kodak, Camera] 0 - Kodak Model: DX4900  
       [MakerNotes, Kodak, Camera] 9 - Quality: Fine
       [MakerNotes, Kodak, Camera] 10 - Burst Mode: Off
      @@ -112,10 +112,10 @@
       [FlashPix, FlashPix, Other] 1 - Code Page: Unicode UTF-16, little endian
       [FlashPix, FlashPix, Audio] 2 - Flash Pix Audio Info 0x0002: 0
       [FlashPix, FlashPix, Other] Screen Nail - Screen Nail: (Binary data 166 bytes)
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 6.7
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/216
      -[Composite, Composite, Time] Kodak::DateCreated - Date Created: 2005:03:31
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 13.1
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 10.2 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 6.7
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/216
      +[Composite, Composite, Time] Kodak-DateCreated - Date Created: 2005:03:31
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 13.1
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 10.2 mm
      diff -Nru libimage-exiftool-perl-11.88/t/KyoceraRaw_2.out libimage-exiftool-perl-12.40+dfsg/t/KyoceraRaw_2.out
      --- libimage-exiftool-perl-11.88/t/KyoceraRaw_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/KyoceraRaw_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: KyoceraRaw.raw
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 166 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:02:17 11:59:53-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:10-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: RAW
       [File, File, Other] FileTypeExtension - File Type Extension: raw
      @@ -20,9 +20,9 @@
       [MakerNotes, KyoceraRaw, Camera] 104 - Max Aperture: 5.2
       [MakerNotes, KyoceraRaw, Camera] 112 - Focal Length: 55 mm
       [MakerNotes, KyoceraRaw, Camera] 124 - Lens: VS28-80/3.5
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 11.3
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.34375
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.3125
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/125
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 55.0 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.0
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 11.3
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.34375
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.3125
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/125
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 55.0 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.0
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_10.out libimage-exiftool-perl-12.40+dfsg/t/Lang_10.out
      --- libimage-exiftool-perl-11.88/t/Lang_10.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_10.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Yã¨Cã®ä½ç½®: 相互é…ç½®
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - サムãƒã‚¤ãƒ«ç”»åƒ: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - サムãƒã‚¤ãƒ«ç”»åƒ: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_11.out libimage-exiftool-perl-12.40+dfsg/t/Lang_11.out
      --- libimage-exiftool-perl-11.88/t/Lang_11.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_11.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y and C 위치: 주변
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - 축소 그림: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - 축소 그림: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_12.out libimage-exiftool-perl-12.40+dfsg/t/Lang_12.out
      --- libimage-exiftool-perl-11.88/t/Lang_12.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_12.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y en C positie: Naast liggend
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Miniatuur: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Miniatuur: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_13.out libimage-exiftool-perl-12.40+dfsg/t/Lang_13.out
      --- libimage-exiftool-perl-11.88/t/Lang_13.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_13.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Pozycje Y i C: Obok siebie (?)
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Miniatura: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Miniatura: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_14.out libimage-exiftool-perl-12.40+dfsg/t/Lang_14.out
      --- libimage-exiftool-perl-11.88/t/Lang_14.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_14.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Смещение миниатюры: 1096
       [EXIF, IFD1, Image] 514 - Строк в миниатюре: 28
       [EXIF, IFD1, Image] 531 - Положение точки, определÑющей цвет в Y Cb Cr: СовмеÑтимый
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Миниатюра изображениÑ: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Миниатюра изображениÑ: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_15.out libimage-exiftool-perl-12.40+dfsg/t/Lang_15.out
      --- libimage-exiftool-perl-11.88/t/Lang_15.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_15.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y- och C-placering: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Miniatyr: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Miniatyr: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_16.out libimage-exiftool-perl-12.40+dfsg/t/Lang_16.out
      --- libimage-exiftool-perl-11.88/t/Lang_16.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_16.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y ve C konumlama: Birlikte-konumlanmış
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Küçük Resim: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Küçük Resim: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_17.out libimage-exiftool-perl-12.40+dfsg/t/Lang_17.out
      --- libimage-exiftool-perl-11.88/t/Lang_17.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_17.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - YCC åƒç´ ç»“æž„(Y å’Œ C çš„ä½ç½®): 一致
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - 缩略图: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - 缩略图: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_18.out libimage-exiftool-perl-12.40+dfsg/t/Lang_18.out
      --- libimage-exiftool-perl-11.88/t/Lang_18.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_18.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y åŠ C 的設定: 一致
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - 縮略圖: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - 縮略圖: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_2.out libimage-exiftool-perl-12.40+dfsg/t/Lang_2.out
      --- libimage-exiftool-perl-11.88/t/Lang_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y a C pozice: Po stranách
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Náhled: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Náhled: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_3.out libimage-exiftool-perl-12.40+dfsg/t/Lang_3.out
      --- libimage-exiftool-perl-11.88/t/Lang_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_3.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Miniaturbild-Datenposition: 1096
       [EXIF, IFD1, Image] 514 - Miniaturbild-Datenlänge: 28
       [EXIF, IFD1, Image] 531 - Y und C Ausrichtung: Benachbart
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Miniaturbild: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Miniaturbild: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_4.out libimage-exiftool-perl-12.40+dfsg/t/Lang_4.out
      --- libimage-exiftool-perl-11.88/t/Lang_4.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_4.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_5.out libimage-exiftool-perl-12.40+dfsg/t/Lang_5.out
      --- libimage-exiftool-perl-11.88/t/Lang_5.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_5.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_6.out libimage-exiftool-perl-12.40+dfsg/t/Lang_6.out
      --- libimage-exiftool-perl-11.88/t/Lang_6.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_6.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Posicionamiento Y y C: Vecino
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Miniatura: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Miniatura: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_7.out libimage-exiftool-perl-12.40+dfsg/t/Lang_7.out
      --- libimage-exiftool-perl-11.88/t/Lang_7.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_7.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y:n ja C:n sijoitus: Vierekkäin
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Näytekuva: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Näytekuva: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_8.out libimage-exiftool-perl-12.40+dfsg/t/Lang_8.out
      --- libimage-exiftool-perl-11.88/t/Lang_8.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_8.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Décalage de la vignette: 1096
       [EXIF, IFD1, Image] 514 - Longueur de la vignette: 28
       [EXIF, IFD1, Image] 531 - Positionnement Y et C: Côte à côte
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Vignette: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Vignette: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lang_9.out libimage-exiftool-perl-12.40+dfsg/t/Lang_9.out
      --- libimage-exiftool-perl-11.88/t/Lang_9.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lang_9.out	2020-07-29 19:18:19.000000000 +0000
      @@ -44,4 +44,4 @@
       [EXIF, IFD1, Image] 513 - Offset miniatura: 1096
       [EXIF, IFD1, Image] 514 - Dimensioni miniatura: 28
       [EXIF, IFD1, Image] 531 - Posizionamento Y e C: Affiancato
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Miniatura: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Miniatura: (Binary data 28 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/Lytro_2.out libimage-exiftool-perl-12.40+dfsg/t/Lytro_2.out
      --- libimage-exiftool-perl-11.88/t/Lytro_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Lytro_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Lytro.lfp
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 4.3 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:07:17 10:05:03-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Other] FileSize - File Size: 4.3 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:07:17 11:22:05-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:33-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: LFP
       [File, File, Other] FileTypeExtension - File Type Extension: lfp
      @@ -97,13 +97,13 @@
       [Lytro, Lytro, Camera] Type - Camera Type: lightField
       [Lytro, Lytro, Camera] CameraSerialNumber - Serial Number: A202110453
       [Lytro, Lytro, Camera] DevicesSensorSensorSerial - Sensor Serial Number: 0x7096E34F554BDE10
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 1.9
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 3280x3280
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 10.8
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.7
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/250
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.005 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 45.5 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.4 mm (35 mm equivalent: 43.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 4.83 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 10.0
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 1.9
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 3280x3280
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 10.8
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.7
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/250
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.005 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 45.5 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.4 mm (35 mm equivalent: 43.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 4.83 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 10.0
      diff -Nru libimage-exiftool-perl-11.88/t/M2TS_2.out libimage-exiftool-perl-12.40+dfsg/t/M2TS_2.out
      --- libimage-exiftool-perl-11.88/t/M2TS_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/M2TS_2.out	2021-03-17 13:12:50.000000000 +0000
      @@ -1,20 +1,21 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.22
       [ExifTool, ExifTool, ExifTool] Warning - Warning: [minor] The ExtractEmbedded option may find more tags in the video data
       [File, System, Other] FileName - File Name: M2TS.mts
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1344 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2009:07:08 13:57:28-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:01:25 10:41:15-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: M2TS
       [File, File, Other] FileTypeExtension - File Type Extension: mts
       [File, File, Other] MIMEType - MIME Type: video/m2ts
      -[M2TS, M2TS, Video] VideoStreamType - Video Stream Type: H.264 Video
      +[M2TS, M2TS, Video] VideoStreamType - Video Stream Type: H.264 (AVC) Video
       [M2TS, M2TS, Video] AudioStreamType - Audio Stream Type: A52/AC-3 Audio
       [M2TS, AC3, Audio] AudioBitrate - Audio Bitrate: 256 kbps
       [M2TS, AC3, Audio] SurroundMode - Surround Mode: Not indicated
       [M2TS, AC3, Audio] AudioChannels - Audio Channels: 2
      +[M2TS, M2TS, Video] Duration - Duration: 0 s
       [M2TS, AC3, Audio] AudioSampleRate - Audio Sample Rate: 48000
       [H264, H264, Video] ImageWidth - Image Width: 1920
       [H264, H264, Video] ImageHeight - Image Height: 1080
      @@ -25,6 +26,6 @@
       [H264, H264, Image] 1.1 - Exposure Time: 1/25
       [H264, H264, Camera] 0 - Make: Canon
       [H264, H264, Camera] 0 - Recording Mode: FXP
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 1920x1080
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 2.1
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/25
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 1920x1080
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 2.1
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/25
      diff -Nru libimage-exiftool-perl-11.88/t/MacOS_2.out libimage-exiftool-perl-12.40+dfsg/t/MacOS_2.out
      --- libimage-exiftool-perl-11.88/t/MacOS_2.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MacOS_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -0,0 +1,19 @@
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
      +[File, System, Other] FileName - File Name: MacOS.macos
      +[File, System, Other] Directory - Directory: t/images
      +[File, System, Other] FileSize - File Size: 4.0 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:12 07:42:35-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:33-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:12 07:52:39-05:00
      +[File, System, Other] FilePermissions - File Permissions: rwxr-xr-x
      +[File, File, Other] FileType - File Type: MacOS
      +[File, File, Other] FileTypeExtension - File Type Extension: macos
      +[File, File, Other] MIMEType - MIME Type: application/unknown
      +[File, MacOS, Other] com.apple.quarantine - X Attr Quarantine: Flags=0082 set at 2020:11:12 12:27:26 by Safari
      +[File, MacOS, Time] com.apple.lastuseddate#PS - X Attr Last Used Date: 2020:11:12 12:27:26
      +[File, MacOS, Time] com.apple.metadata:kMDItemDownloadedDate - X Attr MD Item Downloaded Date: 2020:11:12 07:27:26-05:00
      +[File, MacOS, Other] com.apple.metadata:kMDItemWhereFroms - X Attr MD Item Where Froms: https://exiftool.org/test/sample.jpg
      +[File, MacOS, Other] com.apple.metadata:kMDLabel - X Attr MD Label: (Binary data 89 bytes)
      +[File, MacOS, Other] org.exiftool.metadata:TestTag - X Attr Org Exiftool Metadata Test Tag: this is a test tag
      +[File, MacOS, Other] com.apple.metadata:kMDItemFinderComment - X Attr MD Item Finder Comment: A Finder comment
      +[File, MacOS, Other] com.apple.metadata:_kMDItemUserTags - X Attr MD Item User Tags: Red;6, Custom1, Yellow;5, Custom2
      diff -Nru libimage-exiftool-perl-11.88/t/MacOS.t libimage-exiftool-perl-12.40+dfsg/t/MacOS.t
      --- libimage-exiftool-perl-11.88/t/MacOS.t	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MacOS.t	2020-10-13 16:18:39.000000000 +0000
      @@ -0,0 +1,29 @@
      +# Before "make install", this script should be runnable with "make test".
      +# After "make install" it should work as "perl t/MacOS.t".
      +
      +BEGIN {
      +    $| = 1; print "1..2\n"; $Image::ExifTool::configFile = '';
      +    require './t/TestLib.pm'; t::TestLib->import();
      +}
      +END {print "not ok 1\n" unless $loaded;}
      +
      +# test 1: Load the module(s)
      +use Image::ExifTool 'ImageInfo';
      +use Image::ExifTool::MacOS;
      +$loaded = 1;
      +print "ok 1\n";
      +
      +my $testname = 'MacOS';
      +my $testnum = 1;
      +
      +# test 2: Extract information from MacOS.macos (MacOS "._" sidecar file)
      +{
      +    ++$testnum;
      +    my $exifTool = new Image::ExifTool;
      +    my $info = $exifTool->ImageInfo('t/images/MacOS.macos');
      +    print 'not ' unless check($exifTool, $info, $testname, $testnum);
      +    print "ok $testnum\n";
      +}
      +
      +
      +# end
      diff -Nru libimage-exiftool-perl-11.88/t/Matroska_2.out libimage-exiftool-perl-12.40+dfsg/t/Matroska_2.out
      --- libimage-exiftool-perl-11.88/t/Matroska_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Matroska_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Matroska.mkv
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 507 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2010:05:28 18:24:56-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 09:54:23-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:11-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: MKV
       [File, File, Other] FileTypeExtension - File Type Extension: mkv
      @@ -62,5 +62,5 @@
       [Matroska, Track2, Video] 177564 - Track Language: und
       [Matroska, Track2, Audio] 53 - Audio Sample Rate: 48000
       [Matroska, Track2, Audio] 31 - Audio Channels: 2
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 704x576
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.406
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 704x576
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.406
      diff -Nru libimage-exiftool-perl-11.88/t/MIE_2.out libimage-exiftool-perl-12.40+dfsg/t/MIE_2.out
      --- libimage-exiftool-perl-11.88/t/MIE_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MIE_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,8 +1,8 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      -[File, System, Other] FileSize - File Size: 2.0 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 10:14:24-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:14:43-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 10:14:24-05:00
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
      +[File, System, Other] FileSize - File Size: 2.0 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:33-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 21:22:58-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: MIE
       [File, File, Other] FileTypeExtension - File Type Extension: mie
      @@ -63,7 +63,7 @@
       [MIE, MIE-Thumbnail, Image] ImageSize - Thumbnail Image Size: 160x120
       [MIE, MIE-Thumbnail, Preview] data - Thumbnail Image: (Binary data 28 bytes)
       [MIE, MIE-Main, Other] data - Subfile Data: (Binary data 20 bytes)
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 4
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 1.6
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.008
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 4
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 1.6
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.008
      diff -Nru libimage-exiftool-perl-11.88/t/MIE_3.out libimage-exiftool-perl-12.40+dfsg/t/MIE_3.out
      --- libimage-exiftool-perl-11.88/t/MIE_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MIE_3.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: MIE_3_failed.mie
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 6.1 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 10:14:43-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:14:43-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 10:14:43-05:00
      +[File, System, Other] FileSize - File Size: 6.1 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:34-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:34-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:34-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: MIE
       [File, File, Other] FileTypeExtension - File Type Extension: mie
      @@ -105,7 +105,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 3043
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Nikon, Camera] 1 - Maker Note Version: 1.00
       [MakerNotes, Nikon, Image] 2 - ISO: 0
       [MakerNotes, Nikon, Camera] 3 - Color Mode: Color
      @@ -127,10 +127,10 @@
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0100
       [IPTC, IPTC, Other] 25 - Keywords: cool
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.78
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dc, Author] creator - Creator: phil
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 9.4
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/213
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.2
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 8.6 mm
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.008
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 9.4
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/213
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.2
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 8.6 mm
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.008
      diff -Nru libimage-exiftool-perl-11.88/t/MIFF_2.out libimage-exiftool-perl-12.40+dfsg/t/MIFF_2.out
      --- libimage-exiftool-perl-11.88/t/MIFF_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MIFF_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: MIFF.miff
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 3.7 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 10:03:52-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:11:39-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 10:03:52-05:00
      +[File, System, Other] FileSize - File Size: 3.7 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:34-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 21:22:58-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: MIFF
       [File, File, Other] FileTypeExtension - File Type Extension: miff
      @@ -106,9 +106,9 @@
       [XMP, XMP-xmpMM, Other] DocumentID - Document ID: adobe:docid:photoshop:4cc7b857-69d0-11d8-8ac4-bb59c92f0d9a
       [XMP, XMP-xmpRights, Author] Marked - Marked: False
       [XMP, XMP-xmpRights, Author] WebStatement - Web Statement: https://exiftool.org/
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.0 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.6
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.0 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.6
      diff -Nru libimage-exiftool-perl-11.88/t/Minolta_2.out libimage-exiftool-perl-12.40+dfsg/t/Minolta_2.out
      --- libimage-exiftool-perl-11.88/t/Minolta_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Minolta_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Minolta.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 13 kB
      +[File, System, Other] FileSize - File Size: 13 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:11-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:34-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -67,7 +67,7 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 13224
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Centered
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Minolta, Camera] 0 - Maker Note Version: MLT0
       [MakerNotes, Minolta, Camera] 1 - Exposure Mode: Program
       [MakerNotes, Minolta, Camera] 2 - Flash Mode: Fill flash
      @@ -119,17 +119,17 @@
       [MakerNotes, Minolta, Camera] 64 - Compressed Image Size: 2396300
       [MakerNotes, Minolta, Camera] 136 - Preview Image Start: 13042
       [MakerNotes, Minolta, Camera] 137 - Preview Image Length: 26
      -[MakerNotes, Minolta, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      +[MakerNotes, Minolta, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0100
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0250
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 5.6
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 3.9
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/180
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.008 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.19 m (1.91 - 2.10 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 12.0 deg (0.42 m)
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 42.3 mm (35 mm equivalent: 167.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 42.01 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 12.5
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 5.6
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 3.9
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/180
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.008 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.19 m (1.91 - 2.10 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 12.0 deg (0.42 m)
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 42.3 mm (35 mm equivalent: 167.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 42.01 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 12.5
      diff -Nru libimage-exiftool-perl-11.88/t/Minolta_3.out libimage-exiftool-perl-12.40+dfsg/t/Minolta_3.out
      --- libimage-exiftool-perl-11.88/t/Minolta_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Minolta_3.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Minolta_3_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 13 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:31-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:31-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:31-04:00
      +[File, System, Other] FileSize - File Size: 13 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:34-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:34-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:34-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -68,7 +68,7 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 13198
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Centered
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Minolta, Camera] 0 - Maker Note Version: MLT0
       [MakerNotes, Minolta, Camera] 1 - Exposure Mode: Program
       [MakerNotes, Minolta, Camera] 2 - Flash Mode: Fill flash
      @@ -122,7 +122,7 @@
       [MakerNotes, Minolta, Camera] 64 - Compressed Image Size: 2396300
       [MakerNotes, Minolta, Camera] 136 - Preview Image Start: 13226
       [MakerNotes, Minolta, Camera] 137 - Preview Image Length: 26
      -[MakerNotes, Minolta, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      +[MakerNotes, Minolta, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0100
       [PrintIM, PrintIM, Printing] 1 - Print IM 0x0001: 0x00160016
       [PrintIM, PrintIM, Printing] 2 - Print IM 0x0002: 0x01000000
      @@ -135,14 +135,14 @@
       [PrintIM, PrintIM, Printing] 257 - Print IM 0x0101: 0x00000000
       [IPTC, IPTC, Other] 120 - Caption-Abstract: A new caption/abstract
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 5.6
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 3.9
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/180
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.008 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.19 m (1.91 - 2.10 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 12.0 deg (0.42 m)
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 42.3 mm (35 mm equivalent: 167.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 42.01 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 12.5
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 5.6
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 3.9
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/180
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.008 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.19 m (1.91 - 2.10 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 12.0 deg (0.42 m)
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 42.3 mm (35 mm equivalent: 167.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 42.01 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 12.5
      diff -Nru libimage-exiftool-perl-11.88/t/Minolta_4.out libimage-exiftool-perl-12.40+dfsg/t/Minolta_4.out
      --- libimage-exiftool-perl-11.88/t/Minolta_4.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Minolta_4.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Minolta_4_failed.mrw
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 2.5 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:31-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:31-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:31-04:00
      +[File, System, Other] FileSize - File Size: 2.5 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:34-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:34-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:34-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: MRW
       [File, File, Other] FileTypeExtension - File Type Extension: mrw
      @@ -87,11 +87,17 @@
       [MakerNotes, MinoltaRaw, Image] 5 - Program Mode: None
       [MakerNotes, MinoltaRaw, Image] 6 - ISO Setting: 65
       [MakerNotes, MinoltaRaw, Image] 7 - Color Mode: Natural color
      +[MakerNotes, MinoltaRaw, Image] 8 - WB RB Levels Tungsten: 278 738
      +[MakerNotes, MinoltaRaw, Image] 12 - WB RB Levels Daylight: 503 357
      +[MakerNotes, MinoltaRaw, Image] 16 - WB RB Levels Cloudy: 565 330
      +[MakerNotes, MinoltaRaw, Image] 20 - WB RB Levels Cool White F: 441 545
      +[MakerNotes, MinoltaRaw, Image] 24 - WB RB Levels Flash: 523 339
      +[MakerNotes, MinoltaRaw, Image] 28 - WB RB Levels Custom: 565 330
       [MakerNotes, MinoltaRaw, Image] 56 - Color Filter: 0
       [MakerNotes, MinoltaRaw, Image] 57 - BW Filter: 0
       [MakerNotes, MinoltaRaw, Image] 58 - Zone Matching: ISO Setting Used
       [MakerNotes, MinoltaRaw, Image] 59 - Hue: 0
      -[MakerNotes, Minolta, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      +[MakerNotes, Minolta, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
       [EXIF, IFD0, Image] 256 - Image Width: 3264
       [EXIF, IFD0, Image] 257 - Image Height: 2448
       [EXIF, IFD0, Image] 259 - Compression: Uncompressed
      @@ -135,16 +141,16 @@
       [PrintIM, PrintIM, Printing] 3 - Print IM 0x0003: 0x0000002e
       [PrintIM, PrintIM, Printing] 256 - Print IM 0x0100: 0x01000000
       [PrintIM, PrintIM, Printing] 257 - Print IM 0x0101: 0x00000000
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 2.8
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 3264x2448
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 8.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/5
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.988281
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 5.9
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.710938
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 3.9
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.008 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: inf (2.40 m - inf)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 65.5 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 7.2 mm (35 mm equivalent: 28.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 2.40 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 2.8
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 3264x2448
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 8.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/5
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.988281
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 5.9
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.710938
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 3.9
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.008 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: inf (2.40 m - inf)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 65.5 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 7.2 mm (35 mm equivalent: 28.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 2.40 m
      diff -Nru libimage-exiftool-perl-11.88/t/MP3_2.out libimage-exiftool-perl-12.40+dfsg/t/MP3_2.out
      --- libimage-exiftool-perl-11.88/t/MP3_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MP3_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,11 +1,11 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: MP3.mp3
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 395 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:05:13 07:46:22-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 09:54:26-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:12-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
      +[File, System, Other] FilePermissions - File Permissions: rwxr-xr-x
       [File, File, Other] FileType - File Type: MP3
       [File, File, Other] FileTypeExtension - File Type Extension: mp3
       [File, File, Other] MIMEType - MIME Type: audio/mpeg
      @@ -42,5 +42,5 @@
       [ID3, ID3v1, Time] 93 - Year: 2003
       [ID3, ID3v1, Audio] 97 - Comment: Comment
       [ID3, ID3v1, Audio] 127 - Genre: Hip-Hop
      -[Composite, Composite, Time] ID3::DateTimeOriginal - Date/Time Original: 2005
      -[Composite, Composite, Video] MPEG::Duration - Duration: 0.00 s (approx)
      +[Composite, Composite, Time] ID3-DateTimeOriginal - Date/Time Original: 2005
      +[Composite, Composite, Video] MPEG-Duration - Duration: 0.00 s (approx)
      diff -Nru libimage-exiftool-perl-11.88/t/MRC_2.out libimage-exiftool-perl-12.40+dfsg/t/MRC_2.out
      --- libimage-exiftool-perl-11.88/t/MRC_2.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MRC_2.out	2021-06-09 15:42:27.000000000 +0000
      @@ -0,0 +1,157 @@
      +[ExifTool, ExifTool, ExifTool, Main] ExifToolVersion - ExifTool Version Number: 12.25
      +[File, System, Other, Main] FileName - File Name: MRC.mrc
      +[File, System, Other, Main] Directory - Directory: t/images
      +[File, System, Other, Main] FileSize - File Size: 2.5 KiB
      +[File, System, Time, Main] FileModifyDate - File Modification Date/Time: 2021:04:22 09:31:39-04:00
      +[File, System, Time, Main] FileAccessDate - File Access Date/Time: 2021:04:22 09:49:10-04:00
      +[File, System, Time, Main] FileInodeChangeDate - File Inode Change Date/Time: 2021:04:22 09:42:59-04:00
      +[File, System, Other, Main] FilePermissions - File Permissions: -rw-r--r--
      +[File, File, Other, Main] FileType - File Type: MRC
      +[File, File, Other, Main] FileTypeExtension - File Type Extension: mrc
      +[File, File, Other, Main] MIMEType - MIME Type: image/x-mrc
      +[File, File, Image, Main] 0 - Image Width: 4096
      +[File, File, Image, Main] 1 - Image Height: 4096
      +[File, File, Image, Main] 2 - Image Depth: 2
      +[File, File, Image, Main] 3 - Image Mode: 16-bit unsigned integer
      +[File, File, Image, Main] 4 - Start Point: 0 0 0
      +[File, File, Image, Main] 7 - Grid Size: 4096 4096 2
      +[File, File, Image, Main] 10 - Cell Width: 15289.4248046875
      +[File, File, Image, Main] 11 - Cell Height: 15289.4248046875
      +[File, File, Image, Main] 12 - Cell Depth: 0
      +[File, File, Image, Main] 13 - Cell Alpha: 90
      +[File, File, Image, Main] 14 - Cell Beta: 90
      +[File, File, Image, Main] 15 - Cell Gamma: 90
      +[File, File, Image, Main] 16 - Image Width Axis: X
      +[File, File, Image, Main] 17 - Image Height Axis: Y
      +[File, File, Image, Main] 18 - Image Depth Axis: Z
      +[File, File, Image, Main] 19 - Density Min: 1958
      +[File, File, Image, Main] 20 - Density Max: 5662
      +[File, File, Image, Main] 21 - Density Mean: 3155.2578125
      +[File, File, Image, Main] 22 - Space Group Number: 0
      +[File, File, Image, Main] 23 - Extended Header Size: 1536
      +[File, File, Image, Main] 26 - Extended Header Type: FEI1
      +[File, File, Image, Main] 27 - MRC Version: 20140
      +[File, File, Image, Main] 49 - Origin: 0 0 0
      +[File, File, Image, Main] 53 - Machine Stamp: 0x44 0x44 0x00 0x00
      +[File, File, Image, Main] 54 - RMS Deviation: -1
      +[File, File, Image, Main] 55 - Number Of Labels: 0
      +[File, File, Image, Main] 0 - Metadata Size: 768
      +[File, File, Image, Main] 4 - Metadata Version: 0
      +[File, File, Image, Main] 8 - Bitmask 1: 0xffffffff
      +[File, File, Time, Main] 12 - Time Stamp: 2020:10:21 13:54:27
      +[File, File, Image, Main] 20 - Microscope Type: TALOS-D5197
      +[File, File, Image, Main] 36 - Microscope ID: 6419
      +[File, File, Image, Main] 52 - Application: Tomography
      +[File, File, Image, Main] 68 - App Version: 4.10.0.65
      +[File, File, Image, Main] 84 - High Tension: 200000
      +[File, File, Image, Main] 92 - Dose: 351360899930878640128
      +[File, File, Image, Main] 100 - Alpha Tilt: -64.0024700625157
      +[File, File, Image, Main] 108 - Beta Tilt: 0
      +[File, File, Image, Main] 116 - X Stage: -8.8173405e-05
      +[File, File, Image, Main] 124 - Y Stage: -2.8139594e-05
      +[File, File, Image, Main] 132 - Z Stage: 3.536763e-05
      +[File, File, Image, Main] 140 - Tilt Axis Angle: -0.847676487969243
      +[File, File, Image, Main] 148 - Dual Axis Rot: 0
      +[File, File, Image, Main] 156 - Pixel Size X: 3.73276964893421e-10
      +[File, File, Image, Main] 164 - Pixel Size Y: 3.73276964893421e-10
      +[File, File, Image, Main] 220 - Defocus: -1.5e-06
      +[File, File, Image, Main] 228 - STEM Defocus: -1.5e-06
      +[File, File, Image, Main] 236 - Applied Defocus: -1.5e-06
      +[File, File, Image, Main] 244 - Instrument Mode: TEM
      +[File, File, Image, Main] 248 - Projection Mode: Imaging
      +[File, File, Image, Main] 252 - Objective Lens: HM
      +[File, File, Image, Main] 268 - High Magnification Mode: SA
      +[File, File, Image, Main] 284 - Probe Mode: Nano
      +[File, File, Image, Main] 288 - EFTEM On: No
      +[File, File, Image, Main] 289 - Magnification: 28000
      +[File, File, Image, Main] 297 - Bitmask 2: 0x0cfff01f
      +[File, File, Image, Main] 301 - Camera Length: 0
      +[File, File, Image, Main] 309 - Spot Index: 7
      +[File, File, Image, Main] 313 - Illumination Area: 0.473917752802174
      +[File, File, Image, Main] 321 - Intensity: 0.473917752802174
      +[File, File, Image, Main] 329 - Convergence Angle: 0
      +[File, File, Image, Main] 387 - Shift Offset X: 0
      +[File, File, Image, Main] 395 - Shift Offset Y: 0
      +[File, File, Image, Main] 403 - Shift X: -0.00204008771106601
      +[File, File, Image, Main] 411 - Shift Y: 0.009031618013978
      +[File, File, Image, Main] 419 - Integration Time: 0.299076
      +[File, File, Image, Main] 427 - Binning Width: 1
      +[File, File, Image, Main] 431 - Binning Height: 1
      +[File, File, Image, Main] 435 - Camera Name: BM-Falcon
      +[File, File, Image, Main] 451 - Readout Area Left: 0
      +[File, File, Image, Main] 455 - Readout Area Top: 0
      +[File, File, Image, Main] 459 - Readout Area Right: 4096
      +[File, File, Image, Main] 463 - Readout Area Bottom: 4096
      +[File, File, Image, Main] 472 - Direct Det Electron Counting: No
      +[File, File, Image, Main] 473 - Direct Det Align Frames: No
      +[File, File, Image, Main] 490 - Bitmask 3: 0x007e8040
      +[File, File, Image, Main] 518 - Phase Plate: Yes
      +[File, File, Image, Main] 571 - Dwell Time: 0
      +[File, File, Image, Main] 587 - Scan Size Left: 0
      +[File, File, Image, Main] 591 - Scan Size Top: 0
      +[File, File, Image, Main] 595 - Scan Size Right: 0
      +[File, File, Image, Main] 599 - Scan Size Bottom: 0
      +[File, File, Image, Main] 603 - Full Scan FOV X: 0.473917752802174
      +[File, File, Image, Main] 611 - Full Scan FOV Y: 0.473917752802174
      +[File, File, Image, Main] 748 - Bitmask 4: 0x00000000
      +[File, File, Image, Doc1] 0 - Metadata Size: 768
      +[File, File, Image, Doc1] 4 - Metadata Version: 0
      +[File, File, Image, Doc1] 8 - Bitmask 1: 0xffffffff
      +[File, File, Time, Doc1] 12 - Time Stamp: 2020:10:21 13:55:19
      +[File, File, Image, Doc1] 20 - Microscope Type: TALOS-D5197
      +[File, File, Image, Doc1] 36 - Microscope ID: 6419
      +[File, File, Image, Doc1] 52 - Application: Tomography
      +[File, File, Image, Doc1] 68 - App Version: 4.10.0.65
      +[File, File, Image, Doc1] 84 - High Tension: 200000
      +[File, File, Image, Doc1] 92 - Dose: 3.56817464869021e+20
      +[File, File, Image, Doc1] 100 - Alpha Tilt: -62.0036705832692
      +[File, File, Image, Doc1] 108 - Beta Tilt: 0
      +[File, File, Image, Doc1] 116 - X Stage: -8.8182495e-05
      +[File, File, Image, Doc1] 124 - Y Stage: -2.8140608e-05
      +[File, File, Image, Doc1] 132 - Z Stage: 3.536763e-05
      +[File, File, Image, Doc1] 140 - Tilt Axis Angle: -0.847676487969243
      +[File, File, Image, Doc1] 148 - Dual Axis Rot: 0
      +[File, File, Image, Doc1] 156 - Pixel Size X: 3.73276964893421e-10
      +[File, File, Image, Doc1] 164 - Pixel Size Y: 3.73276964893421e-10
      +[File, File, Image, Doc1] 220 - Defocus: -2.81146426624101e-06
      +[File, File, Image, Doc1] 228 - STEM Defocus: -2.81146426624101e-06
      +[File, File, Image, Doc1] 236 - Applied Defocus: -1.5e-06
      +[File, File, Image, Doc1] 244 - Instrument Mode: TEM
      +[File, File, Image, Doc1] 248 - Projection Mode: Imaging
      +[File, File, Image, Doc1] 252 - Objective Lens: HM
      +[File, File, Image, Doc1] 268 - High Magnification Mode: SA
      +[File, File, Image, Doc1] 284 - Probe Mode: Nano
      +[File, File, Image, Doc1] 288 - EFTEM On: No
      +[File, File, Image, Doc1] 289 - Magnification: 28000
      +[File, File, Image, Doc1] 297 - Bitmask 2: 0x0cfff01f
      +[File, File, Image, Doc1] 301 - Camera Length: 0
      +[File, File, Image, Doc1] 309 - Spot Index: 7
      +[File, File, Image, Doc1] 313 - Illumination Area: 0.473917752802174
      +[File, File, Image, Doc1] 321 - Intensity: 0.473917752802174
      +[File, File, Image, Doc1] 329 - Convergence Angle: 0
      +[File, File, Image, Doc1] 387 - Shift Offset X: 0
      +[File, File, Image, Doc1] 395 - Shift Offset Y: 0
      +[File, File, Image, Doc1] 403 - Shift X: -0.00886260531842709
      +[File, File, Image, Doc1] 411 - Shift Y: 0.00178224826231599
      +[File, File, Image, Doc1] 419 - Integration Time: 0.299076
      +[File, File, Image, Doc1] 427 - Binning Width: 1
      +[File, File, Image, Doc1] 431 - Binning Height: 1
      +[File, File, Image, Doc1] 435 - Camera Name: BM-Falcon
      +[File, File, Image, Doc1] 451 - Readout Area Left: 0
      +[File, File, Image, Doc1] 455 - Readout Area Top: 0
      +[File, File, Image, Doc1] 459 - Readout Area Right: 4096
      +[File, File, Image, Doc1] 463 - Readout Area Bottom: 4096
      +[File, File, Image, Doc1] 472 - Direct Det Electron Counting: No
      +[File, File, Image, Doc1] 473 - Direct Det Align Frames: No
      +[File, File, Image, Doc1] 490 - Bitmask 3: 0x007e8040
      +[File, File, Image, Doc1] 518 - Phase Plate: Yes
      +[File, File, Image, Doc1] 571 - Dwell Time: 0
      +[File, File, Image, Doc1] 587 - Scan Size Left: 0
      +[File, File, Image, Doc1] 591 - Scan Size Top: 0
      +[File, File, Image, Doc1] 595 - Scan Size Right: 0
      +[File, File, Image, Doc1] 599 - Scan Size Bottom: 0
      +[File, File, Image, Doc1] 603 - Full Scan FOV X: 0.473917752802174
      +[File, File, Image, Doc1] 611 - Full Scan FOV Y: 0.473917752802174
      +[File, File, Image, Doc1] 748 - Bitmask 4: 0x00000000
      +[Composite, Composite, Image, Main] Exif-ImageSize - Image Size: 4096x4096
      +[Composite, Composite, Image, Main] Exif-Megapixels - Megapixels: 16.8
      diff -Nru libimage-exiftool-perl-11.88/t/MRC.t libimage-exiftool-perl-12.40+dfsg/t/MRC.t
      --- libimage-exiftool-perl-11.88/t/MRC.t	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MRC.t	2021-04-22 13:42:58.000000000 +0000
      @@ -0,0 +1,30 @@
      +# Before "make install", this script should be runnable with "make test".
      +# After "make install" it should work as "perl t/MRC.t".
      +
      +BEGIN {
      +    $| = 1; print "1..2\n"; $Image::ExifTool::configFile = '';
      +    require './t/TestLib.pm'; t::TestLib->import();
      +}
      +END {print "not ok 1\n" unless $loaded;}
      +
      +# test 1: Load the module(s)
      +use Image::ExifTool 'ImageInfo';
      +use Image::ExifTool::MRC;
      +$loaded = 1;
      +print "ok 1\n";
      +
      +my $testname = 'MRC';
      +my $testnum = 1;
      +
      +# test 2: Extract information from MRC.mrc
      +{
      +    ++$testnum;
      +    my $exifTool = new Image::ExifTool;
      +    $exifTool->Options(ExtractEmbedded => 1);
      +    my $info = $exifTool->ImageInfo('t/images/MRC.mrc');
      +    print 'not ' unless check($exifTool, $info, $testname, $testnum, undef, 3);
      +    print "ok $testnum\n";
      +}
      +
      +
      +# end
      diff -Nru libimage-exiftool-perl-11.88/t/MWG_2.out libimage-exiftool-perl-12.40+dfsg/t/MWG_2.out
      --- libimage-exiftool-perl-11.88/t/MWG_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MWG_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,13 +1,13 @@
      -[Composite, MWG, Location] MWG::City - City: RIGHT-XMP-City
      -[Composite, MWG, Author] MWG::Copyright - Copyright: RIGHT-XMP-Copyright
      -[Composite, MWG, Location] MWG::Country - Country: RIGHT-IPTC-Country
      -[Composite, MWG, Author] MWG::Creator - Creator: RIGHT1of2-EXIF-Creator, RIGHT2of2-EXIF-Creator
      -[Composite, MWG, Time] MWG::DateTimeOriginal - Date/Time Original: 2001:01:01 01:11:11.111
      -[Composite, MWG, Image] MWG::Description - Description: RIGHT-EXIF-Description
      -[Composite, MWG, Image] MWG::Keywords - Keywords: RIGHT1of2-XMP-Keywords, RIGHT2of2-XMP-Keywords
      -[Composite, MWG, Location] MWG::Location - Location: RIGHT-IPTC-Location
      -[Composite, MWG, Image] MWG::Orientation - Orientation: Rotate 90 CW
      -[Composite, MWG, Image] MWG::Rating - Rating: 3
      -[Composite, MWG, Location] MWG::State - State: RIGHT-IPTC-State
      -[Composite, MWG, Time] MWG::CreateDate - Create Date: 2002:02:02 02:22:22+02:00
      -[Composite, MWG, Time] MWG::ModifyDate - Modify Date: 2003:03:03 03:33:33.333+03:00
      +[Composite, MWG, Location] MWG-City - City: RIGHT-XMP-City
      +[Composite, MWG, Author] MWG-Copyright - Copyright: RIGHT-XMP-Copyright
      +[Composite, MWG, Location] MWG-Country - Country: RIGHT-IPTC-Country
      +[Composite, MWG, Author] MWG-Creator - Creator: RIGHT1of2-EXIF-Creator, RIGHT2of2-EXIF-Creator
      +[Composite, MWG, Time] MWG-DateTimeOriginal - Date/Time Original: 2001:01:01 01:11:11.111
      +[Composite, MWG, Image] MWG-Description - Description: RIGHT-EXIF-Description
      +[Composite, MWG, Image] MWG-Keywords - Keywords: RIGHT1of2-XMP-Keywords, RIGHT2of2-XMP-Keywords
      +[Composite, MWG, Location] MWG-Location - Location: RIGHT-IPTC-Location
      +[Composite, MWG, Image] MWG-Orientation - Orientation: Rotate 90 CW
      +[Composite, MWG, Image] MWG-Rating - Rating: 3
      +[Composite, MWG, Location] MWG-State - State: RIGHT-IPTC-State
      +[Composite, MWG, Time] MWG-CreateDate - Create Date: 2002:02:02 02:22:22+02:00
      +[Composite, MWG, Time] MWG-ModifyDate - Modify Date: 2003:03:03 03:33:33.333+03:00
      diff -Nru libimage-exiftool-perl-11.88/t/MWG_5.out libimage-exiftool-perl-12.40+dfsg/t/MWG_5.out
      --- libimage-exiftool-perl-11.88/t/MWG_5.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MWG_5.out	2021-06-09 15:42:27.000000000 +0000
      @@ -18,5 +18,6 @@
       [IPTC, IPTC, Other] 10 - Urgency: 8 (least urgent)
       [IPTC, IPTC, Author] 115 - Source: I'm the source
       [IPTC, IPTC, Other] 25 - Keywords: jambalaya
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: IPTCDigest is not current. XMP may be out of sync
       [ExifTool, ExifTool, ExifTool] Warning - Warning: Ignored non-standard IPTC at JPEG-Trailer-FotoStation-IPTC
       [ExifTool, ExifTool, ExifTool] Warning - Warning: Ignored non-standard IPTC at JPEG-Trailer-AFCP-IPTC
      diff -Nru libimage-exiftool-perl-11.88/t/MWG_6.out libimage-exiftool-perl-12.40+dfsg/t/MWG_6.out
      --- libimage-exiftool-perl-11.88/t/MWG_6.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MWG_6.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,2 +1,2 @@
       [XMP, XMP-dc, Author] creator - Creator: RIGHT1of2-EXIF-Creator, RIGHT2of2-EXIF-Creator
      -[Composite, MWG, Author] MWG::Creator - Creator: RIGHT1of2-EXIF-Creator, RIGHT2of2-EXIF-Creator
      +[Composite, MWG, Author] MWG-Creator - Creator: RIGHT1of2-EXIF-Creator, RIGHT2of2-EXIF-Creator
      diff -Nru libimage-exiftool-perl-11.88/t/MWG_7.out libimage-exiftool-perl-12.40+dfsg/t/MWG_7.out
      --- libimage-exiftool-perl-11.88/t/MWG_7.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MWG_7.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,11 +1,11 @@
      -[Composite, MWG, Location] MWG::City - City: Kingston
      -[Composite, MWG, Author] MWG::Copyright - Copyright: Copyright 2004 Phil Harvey
      -[Composite, MWG, Location] MWG::Country - Country: Canada
      -[Composite, MWG, Time] MWG::CreateDate - Create Date: 2001:05:19 18:36:41
      -[Composite, MWG, Author] MWG::Creator - Creator: Phil Harvey
      -[Composite, MWG, Time] MWG::DateTimeOriginal - Date/Time Original: 2001:05:19 18:36:41
      -[Composite, MWG, Image] MWG::Description - Description: A witty caption
      -[Composite, MWG, Image] MWG::Keywords - Keywords: jambalaya
      -[Composite, MWG, Time] MWG::ModifyDate - Modify Date: 2004:02:26 09:36:46
      -[Composite, MWG, Image] MWG::Orientation - Orientation: Horizontal (normal)
      -[Composite, MWG, Location] MWG::State - State: Ont
      +[Composite, MWG, Location] MWG-City - City: Kingston
      +[Composite, MWG, Author] MWG-Copyright - Copyright: Copyright 2004 Phil Harvey
      +[Composite, MWG, Location] MWG-Country - Country: Canada
      +[Composite, MWG, Time] MWG-CreateDate - Create Date: 2001:05:19 18:36:41
      +[Composite, MWG, Author] MWG-Creator - Creator: Phil Harvey
      +[Composite, MWG, Time] MWG-DateTimeOriginal - Date/Time Original: 2001:05:19 18:36:41
      +[Composite, MWG, Image] MWG-Description - Description: A witty caption
      +[Composite, MWG, Image] MWG-Keywords - Keywords: jambalaya
      +[Composite, MWG, Time] MWG-ModifyDate - Modify Date: 2004:02:26 09:36:46
      +[Composite, MWG, Image] MWG-Orientation - Orientation: Horizontal (normal)
      +[Composite, MWG, Location] MWG-State - State: Ont
      diff -Nru libimage-exiftool-perl-11.88/t/MXF_2.out libimage-exiftool-perl-12.40+dfsg/t/MXF_2.out
      --- libimage-exiftool-perl-11.88/t/MXF_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/MXF_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: MXF.mxf
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 7.3 kB
      +[File, System, Other] FileSize - File Size: 7.3 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2010:12:19 19:21:47-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:35-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: MXF
       [File, File, Other] FileTypeExtension - File Type Extension: mxf
      diff -Nru libimage-exiftool-perl-11.88/t/Nikon_2.out libimage-exiftool-perl-12.40+dfsg/t/Nikon_2.out
      --- libimage-exiftool-perl-11.88/t/Nikon_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Nikon_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Nikon.jpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1703 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:32-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:13-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -56,7 +56,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1426
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Nikon, Camera] 1 - Maker Note Version: 1.00
       [MakerNotes, Nikon, Image] 2 - ISO: 0
       [MakerNotes, Nikon, Camera] 3 - Color Mode: Color
      @@ -76,9 +76,9 @@
       [MakerNotes, Nikon, Camera] 143 - Scene Mode: 
       [MakerNotes, Nikon, Camera] 16 - Data Dump: (Binary data 122 bytes)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0100
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 9.4
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/213
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 8.6 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.2
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 9.4
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/213
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 8.6 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.2
      diff -Nru libimage-exiftool-perl-11.88/t/Nikon_3.out libimage-exiftool-perl-12.40+dfsg/t/Nikon_3.out
      --- libimage-exiftool-perl-11.88/t/Nikon_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Nikon_3.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Nikon_3_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 4.5 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:32-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:32-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:32-04:00
      +[File, System, Other] FileSize - File Size: 4.5 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:35-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:35-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:35-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -56,7 +56,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1428
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Nikon, Camera] 1 - Maker Note Version: 1.00
       [MakerNotes, Nikon, Image] 2 - ISO: 0
       [MakerNotes, Nikon, Camera] 3 - Color Mode: Color
      @@ -90,11 +90,11 @@
       [PrintIM, PrintIM, Printing] 14 - Print IM 0x000e: 0x000000be
       [PrintIM, PrintIM, Printing] 256 - Print IM 0x0100: 0x00000005
       [PrintIM, PrintIM, Printing] 257 - Print IM 0x0101: 0x00000001
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dc, Author] creator - Creator: Phil
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 9.4
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/213
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.2
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 8.6 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 9.4
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/213
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.2
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 8.6 mm
      diff -Nru libimage-exiftool-perl-11.88/t/Nikon_4.out libimage-exiftool-perl-12.40+dfsg/t/Nikon_4.out
      --- libimage-exiftool-perl-11.88/t/Nikon_4.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Nikon_4.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Nikon_4_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 6.8 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:33-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:33-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:33-04:00
      +[File, System, Other] FileSize - File Size: 6.8 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:36-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:36-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:36-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -137,7 +137,7 @@
       [MakerNotes, Nikon, Camera] 169 - Image Optimization: Custom
       [MakerNotes, Nikon, Camera] 170 - Saturation: Enhanced
       [MakerNotes, Nikon, Camera] 171 - Vari Program: 
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-aux, Camera] FlashCompensation - Flash Compensation: 0
       [XMP, XMP-aux, Camera] Lens - Lens: 18-70mm f/3.5-4.5
       [XMP, XMP-exif, Image] ComponentsConfiguration - Components Configuration: Y, Cb, Cr, -
      @@ -155,22 +155,22 @@
       [XMP, XMP-tiff, Image] YCbCrCoefficients - Y Cb Cr Coefficients: 0.299, 0.587, 0.114
       [XMP, XMP-tiff, Image] YCbCrPositioning - Y Cb Cr Positioning: Co-sited
       [XMP, XMP-tiff, Image] YCbCrSubSampling - Y Cb Cr Sub Sampling: YCbCr4:2:0 (2 2)
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 5.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/60
      -[Composite, Composite, Time] Exif::SubSecCreateDate - Create Date: 2005:01:14 08:57:59.20
      -[Composite, Composite, Time] Exif::SubSecDateTimeOriginal - Date/Time Original: 2005:01:14 08:57:59.20
      -[Composite, Composite, Time] Exif::SubSecModifyDate - Modify Date: 2005:01:14 08:57:59.20
      -[Composite, Composite, Camera] Nikon::LensID - Lens ID: AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED
      -[Composite, Composite, Camera] Nikon::LensSpec - Lens Spec: 18-70mm f/3.5-4.5 G
      -[Composite, Composite, Camera] XMP::Flash - Flash: Auto, Fired, Return detected
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.410156
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.6
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.332031
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.5
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.020 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.02 m (0.62 - 0.64 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 22.1 deg (0.25 m)
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 56.0 mm (35 mm equivalent: 84.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 31.31 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 5.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/60
      +[Composite, Composite, Time] Exif-SubSecCreateDate - Create Date: 2005:01:14 08:57:59.20
      +[Composite, Composite, Time] Exif-SubSecDateTimeOriginal - Date/Time Original: 2005:01:14 08:57:59.20
      +[Composite, Composite, Time] Exif-SubSecModifyDate - Modify Date: 2005:01:14 08:57:59.20
      +[Composite, Composite, Camera] Nikon-LensID - Lens ID: AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED
      +[Composite, Composite, Camera] Nikon-LensSpec - Lens Spec: 18-70mm f/3.5-4.5 G
      +[Composite, Composite, Camera] XMP-Flash - Flash: Auto, Fired, Return detected
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.410156
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.6
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.332031
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.5
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.020 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.02 m (0.62 - 0.64 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 22.1 deg (0.25 m)
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 56.0 mm (35 mm equivalent: 84.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 31.31 m
      diff -Nru libimage-exiftool-perl-11.88/t/Nikon_5.out libimage-exiftool-perl-12.40+dfsg/t/Nikon_5.out
      --- libimage-exiftool-perl-11.88/t/Nikon_5.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Nikon_5.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: NikonD2Hs.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 3.4 kB
      +[File, System, Other] FileSize - File Size: 3.4 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 09:54:23-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:36-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -73,7 +73,7 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 3202
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Nikon, Camera] 1 - Maker Note Version: 2.10
       [MakerNotes, Nikon, Image] 2 - ISO: 800
       [MakerNotes, Nikon, Camera] 4 - Quality: Fine
      @@ -148,22 +148,22 @@
       [MakerNotes, Nikon, Camera] 18 - Flash Group B Compensation: 0
       [MakerNotes, Nikon, Camera] 170 - Saturation: Normal
       [MakerNotes, Nikon, Camera] 177 - High ISO Noise Reduction: Normal
      -[MakerNotes, PreviewIFD, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 4.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/125
      -[Composite, Composite, Time] Exif::SubSecCreateDate - Create Date: 2005:03:18 02:55:18.16
      -[Composite, Composite, Time] Exif::SubSecDateTimeOriginal - Date/Time Original: 2005:03:18 02:55:18.16
      -[Composite, Composite, Time] Exif::SubSecModifyDate - Modify Date: 2005:03:18 02:55:18.16
      -[Composite, Composite, Camera] Nikon::LensID - Lens ID: AF Nikkor 50mm f/1.8D
      -[Composite, Composite, Camera] Nikon::LensSpec - Lens Spec: 50mm f/1.8 D
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 2.097656
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 8.0
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.195313
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.5
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.020 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.03 m (0.69 - 0.72 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 25.1 deg (0.32 m)
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 50.0 mm (35 mm equivalent: 75.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 31.20 m
      +[MakerNotes, PreviewIFD, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 4.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/125
      +[Composite, Composite, Time] Exif-SubSecCreateDate - Create Date: 2005:03:18 02:55:18.16
      +[Composite, Composite, Time] Exif-SubSecDateTimeOriginal - Date/Time Original: 2005:03:18 02:55:18.16
      +[Composite, Composite, Time] Exif-SubSecModifyDate - Modify Date: 2005:03:18 02:55:18.16
      +[Composite, Composite, Camera] Nikon-LensID - Lens ID: AF Nikkor 50mm f/1.8D
      +[Composite, Composite, Camera] Nikon-LensSpec - Lens Spec: 50mm f/1.8 D
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 2.097656
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 8.0
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.195313
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.5
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.020 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.03 m (0.69 - 0.72 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 25.1 deg (0.32 m)
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 50.0 mm (35 mm equivalent: 75.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 31.20 m
      diff -Nru libimage-exiftool-perl-11.88/t/Nikon_7.out libimage-exiftool-perl-12.40+dfsg/t/Nikon_7.out
      --- libimage-exiftool-perl-11.88/t/Nikon_7.out	2020-02-04 13:37:15.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Nikon_7.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.86
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Nikon.nef
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 6.0 kB
      +[File, System, Other] FileSize - File Size: 6.0 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2007:01:05 13:00:46-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2020:02:04 08:34:50-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:01:28 10:35:42-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:36-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: NEF
       [File, File, Other] FileTypeExtension - File Type Extension: nef
      @@ -78,7 +78,7 @@
       [EXIF, ExifIFD, Image] 41730 - CFA Pattern: [Blue,Green][Green,Red]
       [EXIF, IFD0, Time] 36867 - Date/Time Original: 2004:06:09 16:02:35
       [EXIF, IFD0, Image] 37398 - TIFF-EP Standard ID: 1 0 0 0
      -[EXIF, SubIFD, Preview] Exif::JpgFromRaw - Jpg From Raw: (Binary data 29 bytes)
      +[EXIF, SubIFD, Preview] Exif-JpgFromRaw - Jpg From Raw: (Binary data 29 bytes)
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
       [IPTC, IPTC, Other] 120 - Caption-Abstract: A caption
       [IPTC, IPTC, Other] 40 - Special Instructions: none
      @@ -219,7 +219,7 @@
       [MakerNotes, NikonScan, Image] 81 - Color Gain: 0.00 0.00 0.00
       [MakerNotes, NikonScan, Image] 96 - Scan Image Enhancer: Off
       [MakerNotes, NikonScan, Image] 256 - Digital ICE: Normal
      -[MakerNotes, PreviewIFD, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      +[MakerNotes, PreviewIFD, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
       [ICC_Profile, ICC-header, Image] 4 - Profile CMM Type: Nikon Corporation
       [ICC_Profile, ICC-header, Image] 8 - Profile Version: 2.2.0
       [ICC_Profile, ICC-header, Image] 12 - Profile Class: Display Device Profile
      @@ -245,17 +245,17 @@
       [ICC_Profile, ICC_Profile, Image] bTRC - Blue Tone Reproduction Curve: (Binary data 14 bytes)
       [ICC_Profile, ICC_Profile, Image] wtpt - Media White Point: 0.9505 1 1.0891
       [ICC_Profile, ICC_Profile, Image] cprt - Profile Copyright: Nikon Inc. & Nikon Corporation 2001
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::CFAPattern - CFA Pattern: [Blue,Green][Green,Red]
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/20
      -[Composite, Composite, Time] Exif::SubSecCreateDate - Create Date: 2004:06:09 16:02:35.00
      -[Composite, Composite, Time] Exif::SubSecDateTimeOriginal - Date/Time Original: 2004:06:09 16:02:35.00
      -[Composite, Composite, Time] Exif::SubSecModifyDate - Modify Date: 2005:08:25 13:09:05.00
      -[Composite, Composite, Camera] Nikon::LensID - Lens ID: AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED
      -[Composite, Composite, Camera] Nikon::LensSpec - Lens Spec: 18-70mm f/3.5-4.5 G
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.860377
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 3040x2014
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 6.9
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 6.1
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.803774
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 18.0 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-CFAPattern - CFA Pattern: [Blue,Green][Green,Red]
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/20
      +[Composite, Composite, Time] Exif-SubSecCreateDate - Create Date: 2004:06:09 16:02:35.00
      +[Composite, Composite, Time] Exif-SubSecDateTimeOriginal - Date/Time Original: 2004:06:09 16:02:35.00
      +[Composite, Composite, Time] Exif-SubSecModifyDate - Modify Date: 2005:08:25 13:09:05.00
      +[Composite, Composite, Camera] Nikon-LensID - Lens ID: AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED
      +[Composite, Composite, Camera] Nikon-LensSpec - Lens Spec: 18-70mm f/3.5-4.5 G
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.860377
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 3040x2014
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 6.9
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 6.1
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.803774
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 18.0 mm
      diff -Nru libimage-exiftool-perl-11.88/t/Olympus_2.out libimage-exiftool-perl-12.40+dfsg/t/Olympus_2.out
      --- libimage-exiftool-perl-11.88/t/Olympus_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Olympus_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Olympus.jpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1573 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:13-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -56,7 +56,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1296
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Olympus, Camera] 512 - Special Mode: Normal, Sequence: 0, Panorama: (none)
       [MakerNotes, Olympus, Camera] 513 - Quality: SQ (Low)
       [MakerNotes, Olympus, Camera] 514 - Macro: Off
      @@ -69,13 +69,13 @@
       [MakerNotes, Olympus, Camera] Type - Camera Type: C2000Z
       [MakerNotes, Olympus, Camera] 521 - Camera ID: OLYMPUS DIGITAL CAMERA
       [MakerNotes, Olympus, Camera] 3840 - Data Dump: (Binary data 186 bytes)
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 2.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 5.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/30
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.005 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 49.7 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 7.0 mm (35 mm equivalent: 38.8 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 4.52 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 6.9
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 2.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 5.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/30
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.005 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 49.7 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 7.0 mm (35 mm equivalent: 38.8 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 4.52 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 6.9
      diff -Nru libimage-exiftool-perl-11.88/t/Olympus_3.out libimage-exiftool-perl-12.40+dfsg/t/Olympus_3.out
      --- libimage-exiftool-perl-11.88/t/Olympus_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Olympus_3.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Olympus_3_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 4.3 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:33-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:33-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:33-04:00
      +[File, System, Other] FileSize - File Size: 4.3 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:36-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:36-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:36-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -56,7 +56,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1296
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Olympus, Camera] 512 - Special Mode: Normal, Sequence: 0, Panorama: (none)
       [MakerNotes, Olympus, Camera] 513 - Quality: SQ (Low)
       [MakerNotes, Olympus, Camera] 514 - Macro: On
      @@ -69,15 +69,15 @@
       [MakerNotes, Olympus, Camera] Type - Camera Type: C2000Z
       [MakerNotes, Olympus, Camera] 521 - Camera ID: OLYMPUS DIGITAL CAMERA
       [MakerNotes, Olympus, Camera] 3840 - Data Dump: (Binary data 186 bytes)
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-tiff, Image] Software - Software: ExifTool
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 2.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 5.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/30
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.005 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 49.7 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 7.0 mm (35 mm equivalent: 38.8 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 4.52 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 6.9
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 2.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 5.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/30
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.005 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 49.7 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 7.0 mm (35 mm equivalent: 38.8 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 4.52 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 6.9
      diff -Nru libimage-exiftool-perl-11.88/t/Olympus_4.out libimage-exiftool-perl-12.40+dfsg/t/Olympus_4.out
      --- libimage-exiftool-perl-11.88/t/Olympus_4.out	2019-12-11 11:58:29.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Olympus_4.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,9 +1,9 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.79
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: OlympusE1.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 7.2 kB
      +[File, System, Other] FileSize - File Size: 7.2 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:05:08 16:01:18-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:36-05:00
       [File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
      @@ -63,7 +63,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 7088
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Olympus, Camera] 512 - Special Mode: Fast, Sequence: 2, Panorama: (none)
       [MakerNotes, Olympus, Camera] 513 - Quality: SHQ (Fine)
       [MakerNotes, Olympus, Camera] 514 - Macro: Off
      @@ -175,20 +175,20 @@
       [MakerNotes, Olympus, Camera] 4613 - External Flash Zoom: 0
       [MakerNotes, Olympus, Camera] 4616 - Internal Flash: Off
       [MakerNotes, Olympus, Camera] 5376 - Sensor Temperature: 20 C
      -[MakerNotes, Olympus, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      +[MakerNotes, Olympus, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0250
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 4.5
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 2.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/100
      -[Composite, Composite, Camera] Olympus::ExtenderStatus - Extender Status: Not attached
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.132813
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.015 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.17 m (0.63 - 0.80 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 47.2 deg (0.62 m)
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 20.0 mm (35 mm equivalent: 40.1 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 5.93 m
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Olympus Zuiko Digital 14-54mm F2.8-3.5
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.0
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.609375
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 4.5
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 2.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/100
      +[Composite, Composite, Camera] Olympus-ExtenderStatus - Extender Status: Not attached
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.132813
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.015 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.17 m (0.63 - 0.80 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 47.2 deg (0.62 m)
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 20.0 mm (35 mm equivalent: 40.1 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 5.93 m
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Olympus Zuiko Digital 14-54mm F2.8-3.5
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.0
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.609375
      diff -Nru libimage-exiftool-perl-11.88/t/Olympus_5.out libimage-exiftool-perl-12.40+dfsg/t/Olympus_5.out
      --- libimage-exiftool-perl-11.88/t/Olympus_5.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Olympus_5.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.77
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Olympus_5_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 7.2 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:27 08:24:40-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:27 08:24:40-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:27 08:24:40-05:00
      +[File, System, Other] FileSize - File Size: 7.2 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:36-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:36-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:36-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -64,7 +64,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 7096
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Olympus, Camera] 512 - Special Mode: Fast, Sequence: 2, Panorama: (none)
       [MakerNotes, Olympus, Camera] 513 - Quality: SHQ (Fine)
       [MakerNotes, Olympus, Camera] 514 - Macro: Off
      @@ -227,7 +227,7 @@
       [MakerNotes, Olympus, Camera] 4615 - Olympus Focus Info 0x1207: 0
       [MakerNotes, Olympus, Camera] 4616 - Internal Flash: Off
       [MakerNotes, Olympus, Camera] 5376 - Sensor Temperature: 20 C
      -[MakerNotes, Olympus, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      +[MakerNotes, Olympus, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0250
       [PrintIM, PrintIM, Printing] 1 - Print IM 0x0001: 0x00140014
       [PrintIM, PrintIM, Printing] 2 - Print IM 0x0002: 0x00000001
      @@ -249,18 +249,18 @@
       [PrintIM, PrintIM, Printing] 262 - Print IM 0x0106: 0x00000083
       [PrintIM, PrintIM, Printing] 263 - Print IM 0x0107: 0x00808080
       [PrintIM, PrintIM, Printing] 272 - Print IM 0x0110: 0x00000082
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 4.5
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/100
      -[Composite, Composite, Camera] Olympus::ExtenderStatus - Extender Status: Not attached
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.132813
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Olympus Zuiko Digital 14-54mm F2.8-3.5
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.0
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.609375
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 2.0
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.015 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.17 m (0.63 - 0.80 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 47.2 deg (0.62 m)
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 20.0 mm (35 mm equivalent: 40.1 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 5.93 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 4.5
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/100
      +[Composite, Composite, Camera] Olympus-ExtenderStatus - Extender Status: Not attached
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.132813
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Olympus Zuiko Digital 14-54mm F2.8-3.5
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.0
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.609375
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 2.0
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.015 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.17 m (0.63 - 0.80 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 47.2 deg (0.62 m)
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 20.0 mm (35 mm equivalent: 40.1 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 5.93 m
      diff -Nru libimage-exiftool-perl-11.88/t/Olympus_6.out libimage-exiftool-perl-12.40+dfsg/t/Olympus_6.out
      --- libimage-exiftool-perl-11.88/t/Olympus_6.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Olympus_6.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Olympus2.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 7.5 kB
      +[File, System, Other] FileSize - File Size: 7.5 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2007:02:27 20:01:26-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:14-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:36-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -63,7 +63,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 7424
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Olympus, Camera] 512 - Special Mode: Normal, Sequence: 0, Panorama: (none)
       [MakerNotes, Olympus, Camera] 513 - Quality: SHQ (Fine)
       [MakerNotes, Olympus, Camera] 514 - Macro: Off
      @@ -138,16 +138,16 @@
       [MakerNotes, Olympus, Camera] 4616 - Internal Flash: Off
       [MakerNotes, Olympus, Camera] 5632 - Image Stabilization: On, Mode 2
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0300
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 16.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/250
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.523438
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 16.3
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.09375
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 5.7
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.005 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: inf (4.46 m - inf)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 18.4 deg (124.77 m)
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 19.5 mm (35 mm equivalent: 111.3 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 4.51 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 16.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/250
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.523438
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 16.3
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.09375
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 5.7
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.005 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: inf (4.46 m - inf)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 18.4 deg (124.77 m)
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 19.5 mm (35 mm equivalent: 111.3 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 4.51 m
      diff -Nru libimage-exiftool-perl-11.88/t/OpenEXR_2.out libimage-exiftool-perl-12.40+dfsg/t/OpenEXR_2.out
      --- libimage-exiftool-perl-11.88/t/OpenEXR_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/OpenEXR_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: OpenEXR.exr
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 395 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2011:12:10 14:34:35-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 09:54:26-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:14-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: EXR
       [File, File, Other] FileTypeExtension - File Type Extension: exr
      @@ -21,5 +21,5 @@
       [OpenEXR, OpenEXR, Image] pixelAspectRatio - Pixel Aspect Ratio: 1
       [OpenEXR, OpenEXR, Image] screenWindowCenter - Screen Window Center: 0 0
       [OpenEXR, OpenEXR, Image] screenWindowWidth - Screen Window Width: 1
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 3x2
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000006
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 3x2
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000006
      diff -Nru libimage-exiftool-perl-11.88/t/Palm_2.out libimage-exiftool-perl-12.40+dfsg/t/Palm_2.out
      --- libimage-exiftool-perl-11.88/t/Palm_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Palm_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Palm.mobi
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1382 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:05:29 12:38:33-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:05:29 12:42:41-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:37-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: MOBI
       [File, File, Other] FileTypeExtension - File Type Extension: mobi
      @@ -16,7 +16,7 @@
       [Palm, Palm, Document] 12 - Modification Number: 0
       [Palm, Palm, Document] 15 - Palm File Type: Mobipocket
       [Palm, MOBI, Document] 0 - Compression: PalmDOC
      -[Palm, MOBI, Document] 1 - Uncompressed Text Length: 168 kB
      +[Palm, MOBI, Document] 1 - Uncompressed Text Length: 168 KiB
       [Palm, MOBI, Document] 3 - Encryption: None
       [Palm, MOBI, Document] 6 - Mobi Type: Mobipocket Book
       [Palm, MOBI, Document] 7 - Code Page: Windows Latin 1 (Western European)
      diff -Nru libimage-exiftool-perl-11.88/t/Panasonic_2.out libimage-exiftool-perl-12.40+dfsg/t/Panasonic_2.out
      --- libimage-exiftool-perl-11.88/t/Panasonic_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Panasonic_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Panasonic.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 6.9 kB
      +[File, System, Other] FileSize - File Size: 6.9 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:34-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:37-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -66,7 +66,7 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 6822
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Panasonic, Camera] 1 - Image Quality: High
       [MakerNotes, Panasonic, Camera] 2 - Firmware Version: 0.1.0.8
       [MakerNotes, Panasonic, Camera] 3 - White Balance: Auto
      @@ -81,6 +81,7 @@
       [MakerNotes, Panasonic, Camera] 36 - Flash Bias: 0
       [MakerNotes, Panasonic, Camera] 37 - Internal Serial Number: (S00) 2004:07:19 no. 0102
       [MakerNotes, Panasonic, Camera] 38 - Panasonic Exif Version: 0100
      +[MakerNotes, Panasonic, Camera] 39 - Video Frame Rate: n/a
       [MakerNotes, Panasonic, Camera] 40 - Color Effect: Off
       [MakerNotes, Panasonic, Camera] 41 - Time Since Power On: 00:00:06.96
       [MakerNotes, Panasonic, Camera] 42 - Burst Mode: Off
      @@ -89,13 +90,13 @@
       [MakerNotes, Panasonic, Camera] 45 - Noise Reduction: Standard
       [MakerNotes, Panasonic, Camera] 46 - Self Timer: Off
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0250
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 4.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 7.6
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/400
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.004 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 54.4 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 4.6 mm (35 mm equivalent: 35.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 1.34 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 13.0
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 4.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 7.6
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/400
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.004 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 54.4 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 4.6 mm (35 mm equivalent: 35.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 1.34 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 13.0
      diff -Nru libimage-exiftool-perl-11.88/t/Panasonic_3.out libimage-exiftool-perl-12.40+dfsg/t/Panasonic_3.out
      --- libimage-exiftool-perl-11.88/t/Panasonic_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Panasonic_3.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Panasonic_3_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 7.0 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:34-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:34-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:34-04:00
      +[File, System, Other] FileSize - File Size: 7.0 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:37-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:37-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:37-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -67,7 +67,7 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 6812
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Panasonic, Camera] 1 - Image Quality: High
       [MakerNotes, Panasonic, Camera] 2 - Firmware Version: 0.1.0.8
       [MakerNotes, Panasonic, Camera] 3 - White Balance: Auto
      @@ -83,7 +83,7 @@
       [MakerNotes, Panasonic, Camera] 36 - Flash Bias: 0
       [MakerNotes, Panasonic, Camera] 37 - Internal Serial Number: (S00) 2004:07:19 no. 0102
       [MakerNotes, Panasonic, Camera] 38 - Panasonic Exif Version: 0100
      -[MakerNotes, Panasonic, Camera] 39 - Panasonic 0x0027: 0
      +[MakerNotes, Panasonic, Camera] 39 - Video Frame Rate: n/a
       [MakerNotes, Panasonic, Camera] 40 - Color Effect: Off
       [MakerNotes, Panasonic, Camera] 41 - Time Since Power On: 00:00:06.96
       [MakerNotes, Panasonic, Camera] 42 - Burst Mode: Off
      @@ -109,13 +109,13 @@
       [PrintIM, PrintIM, Printing] 272 - Print IM 0x0110: 0x00000080
       [IPTC, IPTC, Other] 25 - Keywords: cool
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 4.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/400
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 13.0
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 7.6
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.004 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 54.4 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 4.6 mm (35 mm equivalent: 35.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 1.34 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 4.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/400
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 13.0
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 7.6
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.004 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 54.4 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 4.6 mm (35 mm equivalent: 35.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 1.34 m
      diff -Nru libimage-exiftool-perl-11.88/t/Panasonic_4.out libimage-exiftool-perl-12.40+dfsg/t/Panasonic_4.out
      --- libimage-exiftool-perl-11.88/t/Panasonic_4.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Panasonic_4.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Panasonic.rw2
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 12 kB
      +[File, System, Other] FileSize - File Size: 12 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2009:03:25 12:10:29-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 09:54:26-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:37-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: RW2
       [File, File, Other] FileTypeExtension - File Type Extension: rw2
      @@ -114,7 +114,7 @@
       [EXIF, ExifIFD, Camera] 37385 - Flash: Off, Did not fire
       [EXIF, ExifIFD, Camera] 37386 - Focal Length: 5.1 mm
       [EXIF, ExifIFD, Image] 41728 - File Source: Digital Camera
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [PanasonicRaw, PanasonicRaw, Other] 0 - Num WB Entries: 7
       [PanasonicRaw, PanasonicRaw, Other] 1 - WB Type 1: Fine Weather
       [PanasonicRaw, PanasonicRaw, Other] 2 - WB RGB Levels 1: 573 256 416
      @@ -150,6 +150,7 @@
       [MakerNotes, Panasonic, Camera] 36 - Flash Bias: 0
       [MakerNotes, Panasonic, Camera] 37 - Internal Serial Number: (F35) 2008:07:01 no. 0058
       [MakerNotes, Panasonic, Camera] 38 - Panasonic Exif Version: 0270
      +[MakerNotes, Panasonic, Camera] 39 - Video Frame Rate: n/a
       [MakerNotes, Panasonic, Camera] 40 - Color Effect: Off
       [MakerNotes, Panasonic, Camera] 41 - Time Since Power On: 00:10:33.08
       [MakerNotes, Panasonic, Camera] 42 - Burst Mode: Off
      @@ -164,6 +165,7 @@
       [MakerNotes, Panasonic, Camera] 52 - Optical Zoom Mode: Standard
       [MakerNotes, Panasonic, Camera] 53 - Conversion Lens: Off
       [MakerNotes, Panasonic, Camera] 54 - Travel Day: n/a
      +[MakerNotes, Panasonic, Camera] 56 - Battery Level: Full
       [MakerNotes, Panasonic, Camera] 57 - Contrast: Normal
       [MakerNotes, Panasonic, Camera] 58 - World Time Location: Home
       [MakerNotes, Panasonic, Camera] 59 - Text Stamp: Off
      @@ -194,18 +196,18 @@
       [MakerNotes, Panasonic, Camera] 32777 - Text Stamp: Off
       [MakerNotes, Panasonic, Camera] 32784 - Baby Age: (not set)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0250
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 4.0
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.665399
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.1673
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/250
      -[Composite, Composite, Camera] Panasonic::AdvancedSceneMode - Advanced Scene Mode: Off
      -[Composite, Composite, Other] PanasonicRaw::ImageHeight - Image Height: 2736
      -[Composite, Composite, Other] PanasonicRaw::ImageWidth - Image Width: 3648
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 3648x2736
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 12.3
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 10.0
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 4.7
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.006 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 73.7 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 5.1 mm (35 mm equivalent: 24.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 1.02 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 4.0
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.665399
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.1673
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/250
      +[Composite, Composite, Camera] Panasonic-AdvancedSceneMode - Advanced Scene Mode: Off
      +[Composite, Composite, Other] PanasonicRaw-ImageHeight - Image Height: 2736
      +[Composite, Composite, Other] PanasonicRaw-ImageWidth - Image Width: 3648
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 3648x2736
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 12.3
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 10.0
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 4.7
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.006 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 73.7 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 5.1 mm (35 mm equivalent: 24.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 1.02 m
      diff -Nru libimage-exiftool-perl-11.88/t/Panasonic_5.out libimage-exiftool-perl-12.40+dfsg/t/Panasonic_5.out
      --- libimage-exiftool-perl-11.88/t/Panasonic_5.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Panasonic_5.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Panasonic_5_failed.rw2
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 14 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:34-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:34-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:34-04:00
      +[File, System, Other] FileSize - File Size: 14 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:37-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:37-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:37-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: RW2
       [File, File, Other] FileTypeExtension - File Type Extension: rw2
      @@ -117,7 +117,7 @@
       [EXIF, ExifIFD, Camera] 37385 - Flash: Off, Did not fire
       [EXIF, ExifIFD, Camera] 37386 - Focal Length: 5.1 mm
       [EXIF, ExifIFD, Image] 41728 - File Source: Digital Camera
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [PanasonicRaw, PanasonicRaw, Other] 0 - Num WB Entries: 7
       [PanasonicRaw, PanasonicRaw, Other] 1 - WB Type 1: Fine Weather
       [PanasonicRaw, PanasonicRaw, Other] 2 - WB RGB Levels 1: 573 256 416
      @@ -155,7 +155,7 @@
       [MakerNotes, Panasonic, Camera] 36 - Flash Bias: 0
       [MakerNotes, Panasonic, Camera] 37 - Internal Serial Number: (F35) 2008:07:01 no. 0058
       [MakerNotes, Panasonic, Camera] 38 - Panasonic Exif Version: 0270
      -[MakerNotes, Panasonic, Camera] 39 - Panasonic 0x0027: 0
      +[MakerNotes, Panasonic, Camera] 39 - Video Frame Rate: n/a
       [MakerNotes, Panasonic, Camera] 40 - Color Effect: Off
       [MakerNotes, Panasonic, Camera] 41 - Time Since Power On: 00:10:33.08
       [MakerNotes, Panasonic, Camera] 42 - Burst Mode: Off
      @@ -172,7 +172,7 @@
       [MakerNotes, Panasonic, Camera] 53 - Conversion Lens: Off
       [MakerNotes, Panasonic, Camera] 54 - Travel Day: n/a
       [MakerNotes, Panasonic, Camera] 55 - Panasonic 0x0037: 257
      -[MakerNotes, Panasonic, Camera] 56 - Panasonic 0x0038: 1
      +[MakerNotes, Panasonic, Camera] 56 - Battery Level: Full
       [MakerNotes, Panasonic, Camera] 57 - Contrast: Normal
       [MakerNotes, Panasonic, Camera] 58 - World Time Location: Home
       [MakerNotes, Panasonic, Camera] 59 - Text Stamp: Off
      @@ -223,22 +223,22 @@
       [PrintIM, PrintIM, Printing] 256 - Print IM 0x0100: 0x00000005
       [PrintIM, PrintIM, Printing] 257 - Print IM 0x0101: 0x00000001
       [PrintIM, PrintIM, Printing] 272 - Print IM 0x0110: 0x00000080
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dc, Image] title - Title: new title
       [IPTC, IPTC, Other] 25 - Keywords: a keyword
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 4.0
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.665399
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.1673
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/250
      -[Composite, Composite, Camera] Panasonic::AdvancedSceneMode - Advanced Scene Mode: Off
      -[Composite, Composite, Other] PanasonicRaw::ImageHeight - Image Height: 2736
      -[Composite, Composite, Other] PanasonicRaw::ImageWidth - Image Width: 3648
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 3648x2736
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 12.3
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 10.0
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 4.7
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.006 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 73.7 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 5.1 mm (35 mm equivalent: 24.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 1.02 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 4.0
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.665399
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.1673
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/250
      +[Composite, Composite, Camera] Panasonic-AdvancedSceneMode - Advanced Scene Mode: Off
      +[Composite, Composite, Other] PanasonicRaw-ImageHeight - Image Height: 2736
      +[Composite, Composite, Other] PanasonicRaw-ImageWidth - Image Width: 3648
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 3648x2736
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 12.3
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 10.0
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 4.7
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.006 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 73.7 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 5.1 mm (35 mm equivalent: 24.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 1.02 m
      diff -Nru libimage-exiftool-perl-11.88/t/PCX_2.out libimage-exiftool-perl-12.40+dfsg/t/PCX_2.out
      --- libimage-exiftool-perl-11.88/t/PCX_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PCX_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: PCX.pcx
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 160 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2018:12:12 09:01:43-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:14-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2018:12:12 13:16:32-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: PCX
       [File, File, Other] FileTypeExtension - File Type Extension: pcx
      @@ -22,5 +22,5 @@
       [File, File, Image] 65 - Color Planes: 3
       [File, File, Image] 66 - Bytes Per Line: 8
       [File, File, Image] 68 - Color Mode: Color Palette
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/PDF_2.out libimage-exiftool-perl-12.40+dfsg/t/PDF_2.out
      --- libimage-exiftool-perl-11.88/t/PDF_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PDF_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: PDF.pdf
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 8.7 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 10:07:41-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:11:32-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 10:07:41-05:00
      +[File, System, Other] FileSize - File Size: 8.7 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:37-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 21:22:58-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: PDF
       [File, File, Other] FileTypeExtension - File Type Extension: pdf
      @@ -122,6 +122,6 @@
       [XMP, XMP-dc, Author] rights - Rights: Copyright 2004 Phil Harvey
       [XMP, XMP-dc, Image] title - Title: Test IPTC picture
       [XMP, XMP-dc, Image] subject - Subject: ExifTool, Test, XMP
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.6
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.6
      diff -Nru libimage-exiftool-perl-11.88/t/Pentax_2.out libimage-exiftool-perl-12.40+dfsg/t/Pentax_2.out
      --- libimage-exiftool-perl-11.88/t/Pentax_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Pentax_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Pentax.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.7 kB
      +[File, System, Other] FileSize - File Size: 2.7 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2008:03:28 13:40:33-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:38-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -65,7 +65,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 2418
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Pentax, Camera] 0 - Pentax Version: 3.0.0.0
       [MakerNotes, Pentax, Camera] 1 - Pentax Model Type: 0
       [MakerNotes, Pentax, Image] 2 - Preview Image Size: 640x480
      @@ -210,16 +210,16 @@
       [MakerNotes, Pentax, Camera] 11 - AF Points In Focus: Center (horizontal)
       [MakerNotes, Pentax, Image] 16 - WB Shift AB: 0
       [MakerNotes, Pentax, Image] 17 - WB Shift GM: 0
      -[MakerNotes, Pentax, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      +[MakerNotes, Pentax, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0300
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 13.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Sigma AF 10-20mm F4-5.6 EX DC
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/100
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.020 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 100.4 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 10.0 mm (35 mm equivalent: 15.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 0.38 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.0
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 13.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Sigma AF 10-20mm F4-5.6 EX DC
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/100
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.020 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 100.4 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 10.0 mm (35 mm equivalent: 15.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 0.38 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.0
      diff -Nru libimage-exiftool-perl-11.88/t/Pentax_3.out libimage-exiftool-perl-12.40+dfsg/t/Pentax_3.out
      --- libimage-exiftool-perl-11.88/t/Pentax_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Pentax_3.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Pentax_3_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 2.5 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:37-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:37-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:37-04:00
      +[File, System, Other] FileSize - File Size: 2.5 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:38-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:38-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:38-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -218,7 +218,7 @@
       [MakerNotes, Pentax, Camera] 11 - AF Points In Focus: Center (horizontal)
       [MakerNotes, Pentax, Image] 16 - WB Shift AB: 0
       [MakerNotes, Pentax, Image] 17 - WB Shift GM: 0
      -[MakerNotes, Pentax, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      +[MakerNotes, Pentax, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0300
       [PrintIM, PrintIM, Printing] 1 - Print IM 0x0001: 0x00160016
       [PrintIM, PrintIM, Printing] 2 - Print IM 0x0002: 0x01000000
      @@ -253,14 +253,14 @@
       [PrintIM, PrintIM, Printing] 771 - Print IM 0x0303: 0x83000000
       [PrintIM, PrintIM, Printing] 774 - Print IM 0x0306: 0x83000000
       [PrintIM, PrintIM, Printing] 784 - Print IM 0x0310: 0x80000000
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 13.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/100
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Sigma or Tamron Lens (3 44) + 2.2x converter
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.0
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 0.7
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.044 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 100.4 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 22.0 mm (35 mm equivalent: 15.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 0.84 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 13.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/100
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Sigma or Tamron Lens (3 44) + 2.2x converter
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.0
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 0.7
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.044 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 100.4 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 22.0 mm (35 mm equivalent: 15.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 0.84 m
      diff -Nru libimage-exiftool-perl-11.88/t/Pentax_4.out libimage-exiftool-perl-12.40+dfsg/t/Pentax_4.out
      --- libimage-exiftool-perl-11.88/t/Pentax_4.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Pentax_4.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Pentax.avi
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1672 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2009:10:30 08:10:17-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:15-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:01:05 09:05:38-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: AVI
       [File, File, Other] FileTypeExtension - File Type Extension: avi
      @@ -126,7 +126,7 @@
       [MakerNotes, Pentax, Author] 558 - Artist: 
       [MakerNotes, Pentax, Author] 559 - Copyright: 
       [MakerNotes, Pentax, Camera] 560 - Firmware Version: K-x Ver 1.00           
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 1280x720
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.922
      -[Composite, Composite, Other] RIFF::Duration - Duration: 25.00 s
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: smc PENTAX-DA L 18-55mm F3.5-5.6
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 1280x720
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.922
      +[Composite, Composite, Other] RIFF-Duration - Duration: 25.00 s
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: smc PENTAX-DA L 18-55mm F3.5-5.6
      diff -Nru libimage-exiftool-perl-11.88/t/PFM_2.out libimage-exiftool-perl-12.40+dfsg/t/PFM_2.out
      --- libimage-exiftool-perl-11.88/t/PFM_2.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PFM_2.out	2021-07-16 13:13:38.000000000 +0000
      @@ -0,0 +1,17 @@
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.29
      +[File, System, Other] FileName - File Name: PFM.pfm
      +[File, System, Other] Directory - Directory: t/images
      +[File, System, Other] FileSize - File Size: 39 bytes
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:07:16 08:36:07-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:07:16 08:36:08-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:07:16 08:36:07-04:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
      +[File, File, Other] FileType - File Type: PFM
      +[File, File, Other] FileTypeExtension - File Type Extension: pfm
      +[File, File, Other] MIMEType - MIME Type: image/x-pfm
      +[File, File, Image] ColorSpace - Color Space: RGB
      +[File, File, Image] ImageWidth - Image Width: 512
      +[File, File, Image] ImageHeight - Image Height: 768
      +[File, File, Image] ByteOrder - Byte Order: Little-endian
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 512x768
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.393
      diff -Nru libimage-exiftool-perl-11.88/t/PFM.t libimage-exiftool-perl-12.40+dfsg/t/PFM.t
      --- libimage-exiftool-perl-11.88/t/PFM.t	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PFM.t	2021-07-16 13:13:38.000000000 +0000
      @@ -0,0 +1,29 @@
      +# Before "make install", this script should be runnable with "make test".
      +# After "make install" it should work as "perl t/PFM.t".
      +
      +BEGIN {
      +    $| = 1; print "1..2\n"; $Image::ExifTool::configFile = '';
      +    require './t/TestLib.pm'; t::TestLib->import();
      +}
      +END {print "not ok 1\n" unless $loaded;}
      +
      +# test 1: Load the module(s)
      +use Image::ExifTool 'ImageInfo';
      +use Image::ExifTool::Other;
      +$loaded = 1;
      +print "ok 1\n";
      +
      +my $testname = 'PFM';
      +my $testnum = 1;
      +
      +# test 2: Extract information from PFM.pfm
      +{
      +    ++$testnum;
      +    my $exifTool = new Image::ExifTool;
      +    my $info = $exifTool->ImageInfo('t/images/PFM.pfm');
      +    print 'not ' unless check($exifTool, $info, $testname, $testnum);
      +    print "ok $testnum\n";
      +}
      +
      +
      +# end
      diff -Nru libimage-exiftool-perl-11.88/t/PGF_2.out libimage-exiftool-perl-12.40+dfsg/t/PGF_2.out
      --- libimage-exiftool-perl-11.88/t/PGF_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PGF_2.out	2021-07-09 14:38:45.000000000 +0000
      @@ -1,12 +1,12 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      -[ExifTool, ExifTool, ExifTool] Warning - Warning: [minor] Text chunk(s) found after PGF IDAT (may be ignored by some readers)
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.29
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: [minor] Text/EXIF chunk(s) found after PGF IDAT (may be ignored by some readers)
       [File, System, Other] FileName - File Name: PGF.pgf
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 286 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2011:01:26 07:32:42-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:16-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:07:08 07:09:24-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: PGF
       [File, File, Other] FileTypeExtension - File Type Extension: pgf
       [File, File, Other] MIMEType - MIME Type: image/pgf
      @@ -31,5 +31,5 @@
       [PNG, PNG-pHYs, Image] 4 - Pixels Per Unit Y: 2835
       [PNG, PNG-pHYs, Image] 8 - Pixel Units: meters
       [PNG, PNG, Image] Comment - Comment: ExifTool PGF Test
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/PhaseOne_2.out libimage-exiftool-perl-12.40+dfsg/t/PhaseOne_2.out
      --- libimage-exiftool-perl-11.88/t/PhaseOne_2.out	2020-02-04 13:37:15.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PhaseOne_2.out	2021-02-03 13:11:26.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.86
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.17
       [File, System, Other] FileName - File Name: PhaseOne.iiq
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 3.3 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2015:12:17 10:49:08-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2020:02:04 08:34:54-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:01:28 10:35:42-05:00
      +[File, System, Other] FileSize - File Size: 3.3 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2015:12:17 14:25:00-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:02:02 11:30:43-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: IIQ
       [File, File, Other] FileTypeExtension - File Type Extension: iiq
      @@ -57,7 +57,7 @@
       [EXIF, IFD1, Image] 283 - Y Resolution: 341.3333333
       [EXIF, IFD1, Image] 284 - Planar Configuration: Chunky
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
      -[EXIF, IFD1, Preview] Exif::ThumbnailTIFF - Thumbnail TIFF: (Binary data 219 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailTIFF - Thumbnail TIFF: (Binary data 219 bytes)
       [MakerNotes, PhaseOne, Camera] 271 - Raw Data: (Binary data 15 bytes)
       [MakerNotes, PhaseOne, Camera] 256 - Camera Orientation: Horizontal (normal)
       [MakerNotes, PhaseOne, Camera] 264 - Sensor Width: 7372
      @@ -89,11 +89,12 @@
       [MakerNotes, PhaseOne, Camera] 1027 - Focal Length: 80.0 mm
       [MakerNotes, PhaseOne, Camera] 1031 - Serial Number: LD001055
       [MakerNotes, PhaseOne, Camera] 1024 - Sensor Defects: (Binary data 12 bytes)
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 5.6
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.41912
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 7320x5484
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 40.1
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.30548
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/1250
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 80.0 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 15.3
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 5.6
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.41912
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 7320x5484
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 40.1
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.30548
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/1250
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 80.0 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 15.3
      +[Composite, Composite, Camera] Exif-LensID-2 - Lens ID: Mamiya LS 80mm f/2.8 D
      diff -Nru libimage-exiftool-perl-11.88/t/PhaseOne_3.out libimage-exiftool-perl-12.40+dfsg/t/PhaseOne_3.out
      --- libimage-exiftool-perl-11.88/t/PhaseOne_3.out	2020-02-04 13:37:15.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PhaseOne_3.out	2021-02-03 13:11:26.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.86
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.17
       [File, System, Other] FileName - File Name: PhaseOne_3_failed.iiq
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 3.3 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:02:04 08:36:54-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2020:02:04 08:36:54-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:02:04 08:36:54-05:00
      +[File, System, Other] FileSize - File Size: 3.3 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:02:02 11:30:43-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:02:02 11:30:43-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:02:02 11:30:43-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: IIQ
       [File, File, Other] FileTypeExtension - File Type Extension: iiq
      @@ -58,7 +58,7 @@
       [EXIF, IFD1, Image] 283 - Y Resolution: 341.3333333
       [EXIF, IFD1, Image] 284 - Planar Configuration: Chunky
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
      -[EXIF, IFD1, Preview] Exif::ThumbnailTIFF - Thumbnail TIFF: (Binary data 219 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailTIFF - Thumbnail TIFF: (Binary data 219 bytes)
       [MakerNotes, PhaseOne, Camera] 271 - Raw Data: (Binary data 15 bytes)
       [MakerNotes, PhaseOne, Camera] 256 - Camera Orientation: Horizontal (normal)
       [MakerNotes, PhaseOne, Camera] 533 - Phase One 0x0215: 2
      @@ -160,11 +160,12 @@
       [MakerNotes, PhaseOne, Camera] 1035 - Red Blue Flat Field: (Binary data 12 bytes)
       [MakerNotes, PhaseOne, Camera] 1035 - Red Blue Flat Field: (Binary data 12 bytes)
       [MakerNotes, PhaseOne, Camera] 586 - Phase One 0x024a: 1363265759
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 5.6
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 7320x5484
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 40.1
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/1250
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.41912
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 15.3
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 1.30548
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 80.0 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 5.6
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 7320x5484
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 40.1
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/1250
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.41912
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 15.3
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 1.30548
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 80.0 mm
      +[Composite, Composite, Camera] Exif-LensID-2 - Lens ID: Mamiya LS 80mm f/2.8 D
      diff -Nru libimage-exiftool-perl-11.88/t/PhotoCD_2.out libimage-exiftool-perl-12.40+dfsg/t/PhotoCD_2.out
      --- libimage-exiftool-perl-11.88/t/PhotoCD_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PhotoCD_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: PhotoCD.pcd
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 4.0 kB
      +[File, System, Other] FileSize - File Size: 4.0 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2012:05:07 13:11:08-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:39-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: PCD
       [File, File, Other] FileTypeExtension - File Type Extension: pcd
      @@ -33,5 +33,5 @@
       [PhotoCD, PhotoCD, Image] 1538.1 - Image Width: 2048
       [PhotoCD, PhotoCD, Image] 1538.2 - Image Height: 3072
       [PhotoCD, PhotoCD, Image] 1538.3 - Compression Class: Class 1 - 35mm film; Pictoral hard copy
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 2048x3072
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 6.3
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 2048x3072
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 6.3
      diff -Nru libimage-exiftool-perl-11.88/t/PhotoMechanic_2.out libimage-exiftool-perl-12.40+dfsg/t/PhotoMechanic_2.out
      --- libimage-exiftool-perl-11.88/t/PhotoMechanic_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PhotoMechanic_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: PhotoMechanic.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 3.3 kB
      +[File, System, Other] FileSize - File Size: 3.3 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:10:31 12:53:49-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:17-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:39-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -77,7 +77,7 @@
       [PhotoMechanic, PhotoMechanic, Image] 218 - Crop Top: 618
       [PhotoMechanic, PhotoMechanic, Image] 219 - Crop Right: 890
       [PhotoMechanic, PhotoMechanic, Image] 220 - Crop Bottom: 1072
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Time] IPTC::DateTimeCreated - Date/Time Created: 2006:10:29 06:27:51-05:00
      -[Composite, Composite, Time] Exif::DateTimeOriginal - Date/Time Original: 2006:10:29 06:27:51-05:00
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Time] IPTC-DateTimeCreated - Date/Time Created: 2006:10:29 06:27:51-05:00
      +[Composite, Composite, Time] Exif-DateTimeOriginal - Date/Time Original: 2006:10:29 06:27:51-05:00
      diff -Nru libimage-exiftool-perl-11.88/t/Photoshop_2.out libimage-exiftool-perl-12.40+dfsg/t/Photoshop_2.out
      --- libimage-exiftool-perl-11.88/t/Photoshop_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Photoshop_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Photoshop.psd
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 17 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 10:09:29-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:14:39-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 10:09:29-05:00
      +[File, System, Other] FileSize - File Size: 17 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:39-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 21:22:58-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: PSD
       [File, File, Other] FileTypeExtension - File Type Extension: psd
      @@ -105,5 +105,5 @@
       [PhotoMechanic, PhotoMechanic, Image] 218 - Crop Top: 618
       [PhotoMechanic, PhotoMechanic, Image] 219 - Crop Right: 890
       [PhotoMechanic, PhotoMechanic, Image] 220 - Crop Bottom: 1072
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/Photoshop_3.out libimage-exiftool-perl-12.40+dfsg/t/Photoshop_3.out
      --- libimage-exiftool-perl-11.88/t/Photoshop_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Photoshop_3.out	2021-06-09 15:42:27.000000000 +0000
      @@ -1,11 +1,12 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.27
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: IPTCDigest is not current. XMP may be out of sync
       [File, System, Other] FileName - File Name: Photoshop_3_failed.psd
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 16 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 10:14:50-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:14:50-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 10:14:50-05:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 16 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:06:08 15:46:23-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:06:08 15:46:23-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:06:08 15:46:23-04:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: PSD
       [File, File, Other] FileTypeExtension - File Type Extension: psd
       [File, File, Other] MIMEType - MIME Type: application/vnd.adobe.photoshop
      @@ -51,7 +52,7 @@
       [IPTC, IPTC, Author] 85 - By-line Title: Supreme leader
       [IPTC, IPTC, Other] 5 - Object Name: Test Picture
       [IPTC, IPTC, Author] 116 - Copyright Notice: Free for all
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.78
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.27
       [XMP, XMP-rdf, Document] about - About: uuid:c197d41e-f8f7-11d9-b03e-c023c3939af5
       [XMP, XMP-dc, Author] creator - Creator: Phil Harvey
       [XMP, XMP-dc, Image] description - Description: This is a teeny weeny white square
      @@ -113,5 +114,5 @@
       [PhotoMechanic, PhotoMechanic, Image] 218 - Crop Top: 618
       [PhotoMechanic, PhotoMechanic, Image] 219 - Crop Right: 890
       [PhotoMechanic, PhotoMechanic, Image] 220 - Crop Bottom: 1072
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/PICT_2.out libimage-exiftool-perl-12.40+dfsg/t/PICT_2.out
      --- libimage-exiftool-perl-11.88/t/PICT_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PICT_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: PICT.pict
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 150 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2005:11:14 14:47:21-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:17-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: PICT
       [File, File, Other] FileTypeExtension - File Type Extension: pict
      @@ -13,5 +13,5 @@
       [File, File, Image] ImageHeight - Image Height: 8
       [File, File, Image] XResolution - X Resolution: 72
       [File, File, Image] YResolution - Y Resolution: 72
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/PNG_2.out libimage-exiftool-perl-12.40+dfsg/t/PNG_2.out
      --- libimage-exiftool-perl-11.88/t/PNG_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PNG_2.out	2021-07-09 14:38:45.000000000 +0000
      @@ -1,12 +1,12 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      -[ExifTool, ExifTool, ExifTool] Warning - Warning: [minor] Text chunk(s) found after PNG IDAT (may be ignored by some readers)
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.29
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: [minor] Text/EXIF chunk(s) found after PNG IDAT (may be ignored by some readers)
       [File, System, Other] FileName - File Name: PNG.png
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 572 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:07:23 08:09:17-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:19-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2014:07:23 09:04:15-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:07:08 07:19:03-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: PNG
       [File, File, Other] FileTypeExtension - File Type Extension: png
       [File, File, Other] MIMEType - MIME Type: image/png
      @@ -21,5 +21,5 @@
       [PNG, PNG, Image] Comment - Comment: test comment
       [XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 6.51
       [XMP, XMP-dc, Author] creator - Creator: Phil Harvey
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 16x16
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000256
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 16x16
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000256
      diff -Nru libimage-exiftool-perl-11.88/t/PNG_3.out libimage-exiftool-perl-12.40+dfsg/t/PNG_3.out
      --- libimage-exiftool-perl-11.88/t/PNG_3.out	2019-12-04 16:02:07.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PNG_3.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,4 +1,4 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, File, Other] FileType - File Type: PNG
       [File, File, Other] FileTypeExtension - File Type Extension: png
       [File, File, Other] MIMEType - MIME Type: image/png
      @@ -25,7 +25,7 @@
       [PNG, PNG-pHYs, Image] 0 - Pixels Per Unit X: 1234
       [PNG, PNG-pHYs, Image] 4 - Pixels Per Unit Y: 2834
       [PNG, PNG-pHYs, Image] 8 - Pixel Units: meters
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.78
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.03
       [XMP, XMP-dc, Author] creator - Creator: Phil Harvey
       [XMP, XMP-dc, Image] description - Description: UTF-16 (big-endian) encoded XMP
       [XMP, XMP-dc, Author] rights - Rights: Copyright 2004 Phil Harvey
      @@ -114,10 +114,10 @@
       [EXIF, ExifIFD, Camera] 41495 - Sensing Method: One-chip color area
       [EXIF, ExifIFD, Image] 41728 - File Source: Digital Camera
       [EXIF, ExifIFD, Image] 41729 - Scene Type: Directly photographed
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Camera] XMP::Flash - Flash: Fired
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 16x16
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.6
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000256
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.0 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Camera] XMP-Flash - Flash: Fired
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 16x16
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.6
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000256
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.0 mm
      diff -Nru libimage-exiftool-perl-11.88/t/PNG_5.out libimage-exiftool-perl-12.40+dfsg/t/PNG_5.out
      --- libimage-exiftool-perl-11.88/t/PNG_5.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PNG_5.out	2021-07-09 14:38:45.000000000 +0000
      @@ -18,7 +18,7 @@
         Rewriting XMP
           + XMP-dc:Creator = 'Phil Harvey'
       PNG IDAT (1 chunk, total 14 bytes)
      -  Warning = [minor] Text chunk(s) found after PNG IDAT (fixed)
      +  Warning = [minor] Text/EXIF chunk(s) found after PNG IDAT (fixed)
         Deleting tEXt that was moved (20 bytes)
         Deleting iTXt that was moved (443 bytes)
       PNG IEND (end of image)
      diff -Nru libimage-exiftool-perl-11.88/t/PNG_7.out libimage-exiftool-perl-12.40+dfsg/t/PNG_7.out
      --- libimage-exiftool-perl-11.88/t/PNG_7.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PNG_7.out	2022-01-07 15:00:31.000000000 +0000
      @@ -0,0 +1,2 @@
      +[PNG, PNG, Image] iCCP-name - Profile Name: Adobe RGB (1998)
      +[ICC_Profile, ICC-header, Image] 4 - Profile CMM Type: Nikon Corporation
      diff -Nru libimage-exiftool-perl-11.88/t/PNG.t libimage-exiftool-perl-12.40+dfsg/t/PNG.t
      --- libimage-exiftool-perl-11.88/t/PNG.t	2019-07-24 17:13:31.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PNG.t	2022-01-13 13:02:52.000000000 +0000
      @@ -2,7 +2,7 @@
       # After "make install" it should work as "perl t/PNG.t".
       
       BEGIN {
      -    $| = 1; print "1..6\n"; $Image::ExifTool::configFile = '';
      +    $| = 1; print "1..7\n"; $Image::ExifTool::configFile = '';
           require './t/TestLib.pm'; t::TestLib->import();
       }
       END {print "not ok 1\n" unless $loaded;}
      @@ -115,4 +115,27 @@
           print "ok $testnum\n";
       }
       
      +# test 7: Write ICC_Profile with a name
      +{
      +    ++$testnum;
      +    my $skip = '';
      +    if (eval 'require Compress::Zlib') {
      +        my $exifTool = new Image::ExifTool;
      +        $exifTool->SetNewValuesFromFile('t/images/ICC_Profile.icc', 'ICC_Profile');
      +        $exifTool->SetNewValue('PNG:ProfileName' => 'Adobe RGB (1998)');
      +        my $testfile = "t/${testname}_${testnum}_failed.png";
      +        unlink $testfile;
      +        my $rtnVal = $exifTool->WriteInfo('t/images/PNG.png', $testfile);
      +        my $info = $exifTool->ImageInfo($testfile, 'ProfileName', 'ProfileCMMType');
      +        if (check($exifTool, $info, $testname, $testnum)) {
      +            unlink $testfile;
      +        } else {
      +            print 'not ';
      +        }
      +    } else {
      +        $skip = ' # skip Requires Compress::Zlib';
      +    }
      +    print "ok $testnum$skip\n";
      +}
      +
       # end
      diff -Nru libimage-exiftool-perl-11.88/t/PostScript_2.out libimage-exiftool-perl-12.40+dfsg/t/PostScript_2.out
      --- libimage-exiftool-perl-11.88/t/PostScript_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PostScript_2.out	2020-11-27 16:34:40.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: PostScript.eps
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 11 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 10:10:21-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:11:38-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 10:10:21-05:00
      +[File, System, Other] FileSize - File Size: 11 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:41-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 21:22:58-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: EPS
       [File, File, Other] FileTypeExtension - File Type Extension: eps
      @@ -60,7 +60,7 @@
       [XMP, XMP-dc, Author] rights - Rights: Copyright 2004 Phil Harvey
       [XMP, XMP-dc, Image] title - Title: Test IPTC picture
       [XMP, XMP-dc, Image] subject - Subject: ExifTool, Test, XMP
      -[Composite, Composite, Image] PostScript::ImageHeight - Image Height: 8
      -[Composite, Composite, Image] PostScript::ImageWidth - Image Width: 8
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] PostScript-ImageHeight - Image Height: 8
      +[Composite, Composite, Image] PostScript-ImageWidth - Image Width: 8
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/PostScript_3.out libimage-exiftool-perl-12.40+dfsg/t/PostScript_3.out
      --- libimage-exiftool-perl-11.88/t/PostScript_3.out	2019-12-04 16:02:07.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PostScript_3.out	2021-06-09 15:42:27.000000000 +0000
      @@ -1,11 +1,12 @@
      -[ExifTool, ExifTool, ExifTool, Main] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool, Main] ExifToolVersion - ExifTool Version Number: 12.27
      +[ExifTool, ExifTool, ExifTool, Main] Warning - Warning: IPTCDigest is not current. XMP may be out of sync
       [File, System, Other, Main] FileName - File Name: PostScript_3_failed.eps
       [File, System, Other, Main] Directory - Directory: t
      -[File, System, Other, Main] FileSize - File Size: 14 kB
      -[File, System, Time, Main] FileModifyDate - File Modification Date/Time: 2019:12:04 11:01:33-05:00
      -[File, System, Time, Main] FileAccessDate - File Access Date/Time: 2019:12:04 11:01:33-05:00
      -[File, System, Time, Main] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 11:01:33-05:00
      -[File, System, Other, Main] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other, Main] FileSize - File Size: 14 KiB
      +[File, System, Time, Main] FileModifyDate - File Modification Date/Time: 2021:06:08 15:46:25-04:00
      +[File, System, Time, Main] FileAccessDate - File Access Date/Time: 2021:06:08 15:46:25-04:00
      +[File, System, Time, Main] FileInodeChangeDate - File Inode Change Date/Time: 2021:06:08 15:46:25-04:00
      +[File, System, Other, Main] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other, Main] FileType - File Type: EPS
       [File, File, Other, Main] FileTypeExtension - File Type Extension: eps
       [File, File, Other, Main] MIMEType - MIME Type: application/postscript
      @@ -99,7 +100,7 @@
       [EXIF, IFD1, Image, Main] 282 - X Resolution: 72
       [EXIF, IFD1, Image, Main] 283 - Y Resolution: 72
       [EXIF, IFD1, Image, Main] 296 - Resolution Unit: inches
      -[XMP, XMP-x, Document, Main] xmptk - XMP Toolkit: Image::ExifTool 11.78
      +[XMP, XMP-x, Document, Main] xmptk - XMP Toolkit: Image::ExifTool 12.27
       [XMP, XMP-rdf, Document, Main] about - About: uuid:b691db36-f92a-11d9-99a4-8c8e8269c120
       [XMP, XMP-dc, Author, Main] creator - Creator: phil made it
       [XMP, XMP-dc, Image, Main] description - Description: UTF-16 (big-endian) encoded XMP
      @@ -124,11 +125,11 @@
       [XMP, XMP-xmpMM, Other, Main] DocumentID - Document ID: adobe:docid:photoshop:4cc7b857-69d0-11d8-8ac4-bb59c92f0d9a
       [XMP, XMP-xmpRights, Author, Main] Marked - Marked: False
       [XMP, XMP-xmpRights, Author, Main] WebStatement - Web Statement: https://exiftool.org/
      -[Composite, Composite, Image, Main] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image, Main] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Image, Main] PostScript::ImageHeight - Image Height: 8
      -[Composite, Composite, Image, Main] PostScript::ImageWidth - Image Width: 8
      -[Composite, Composite, Image, Main] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image, Main] Exif::LightValue - Light Value: 9.6
      -[Composite, Composite, Image, Main] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera, Main] Exif::FocalLength35efl - Focal Length: 6.0 mm
      +[Composite, Composite, Image, Main] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image, Main] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Image, Main] PostScript-ImageHeight - Image Height: 8
      +[Composite, Composite, Image, Main] PostScript-ImageWidth - Image Width: 8
      +[Composite, Composite, Image, Main] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image, Main] Exif-LightValue - Light Value: 9.6
      +[Composite, Composite, Image, Main] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera, Main] Exif-FocalLength35efl - Focal Length: 6.0 mm
      diff -Nru libimage-exiftool-perl-11.88/t/PPM_2.out libimage-exiftool-perl-12.40+dfsg/t/PPM_2.out
      --- libimage-exiftool-perl-11.88/t/PPM_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PPM_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: PPM.ppm
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 223 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2005:11:14 14:47:21-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:20-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:18-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: PPM
       [File, File, Other] FileTypeExtension - File Type Extension: ppm
      @@ -13,5 +13,5 @@
       [File, File, Image] ImageWidth - Image Width: 8
       [File, File, Image] ImageHeight - Image Height: 8
       [File, File, Image] MaxVal - Max Val: 255
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/PPM_3.out libimage-exiftool-perl-12.40+dfsg/t/PPM_3.out
      --- libimage-exiftool-perl-11.88/t/PPM_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PPM_3.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,4 +1,4 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileSize - File Size: 219 bytes
       [File, File, Other] FileType - File Type: PPM
       [File, File, Other] FileTypeExtension - File Type Extension: ppm
      @@ -7,5 +7,5 @@
       [File, File, Image] ImageWidth - Image Width: 8
       [File, File, Image] ImageHeight - Image Height: 8
       [File, File, Image] MaxVal - Max Val: 255
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/PSP_2.out libimage-exiftool-perl-12.40+dfsg/t/PSP_2.out
      --- libimage-exiftool-perl-11.88/t/PSP_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/PSP_2.out	2020-07-29 19:18:19.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: PSP.psp
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1703 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2010:01:28 11:15:22-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:19-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: PSP
       [File, File, Other] FileTypeExtension - File Type Extension: psp
      @@ -30,5 +30,5 @@
       [EXIF, IFD0, Image] 282 - X Resolution: 200
       [EXIF, IFD0, Image] 283 - Y Resolution: 200
       [EXIF, IFD0, Image] 296 - Resolution Unit: inches
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_10.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_10.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_10.out	2019-12-18 17:06:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_10.out	2021-06-09 15:42:27.000000000 +0000
      @@ -13,10 +13,11 @@
       [QuickTime, QuickTime, Video] 22 - Selection Duration: 0 s
       [QuickTime, QuickTime, Video] 23 - Current Time: 0 s
       [QuickTime, QuickTime, Video] 24 - Next Track ID: 3
      +[QuickTime, QuickTime, Video] 8 - Handler Type: Metadata
       [QuickTime, ItemList, Audio] ©ART - Artist: me
       [QuickTime, UserData, Video] ©arg - Arranger: arr
       [QuickTime, QuickTime, Video] 8 - Handler Type: Metadata Tags
      -[QuickTime, Keys, Other] 1.1 - Director: dir
      +[QuickTime, Keys, Other] director - Director: dir
       [QuickTime, QuickTime, Video] mdat-size - Media Data Size: 0
      -[QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 2002
      +[QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 2034
       [QuickTime, QuickTime, Video] mdat - Media Data: (Binary data 0 bytes)
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_11.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_11.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_11.out	2019-12-18 17:06:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_11.out	2020-03-19 14:04:33.000000000 +0000
      @@ -1,4 +1,4 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.81
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.90
       [QuickTime, QuickTime, Video] 0 - Major Brand: High Efficiency Image Format still image (.HEIF)
       [QuickTime, QuickTime, Video] 1 - Minor Version: 0.0.0
       [QuickTime, QuickTime, Video] 2 - Compatible Brands: mif1, heic, hevc
      @@ -7,7 +7,7 @@
       [QuickTime, QuickTime, Video] 0 - HEVC Configuration Version: 1
       [QuickTime, QuickTime, Video] 1 - General Profile Space: Conforming
       [QuickTime, QuickTime, Video] 1.1 - General Tier Flag: Main Tier
      -[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main Profile
      +[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main
       [QuickTime, QuickTime, Video] 2 - Gen Profile Compatibility Flags: Main 10, Main
       [QuickTime, QuickTime, Video] 6 - Constraint Indicator Flags: 144 0 0 0 0 0
       [QuickTime, QuickTime, Video] 12 - General Level IDC: 120 (level 4.0)
      @@ -24,7 +24,7 @@
       [QuickTime, QuickTime, Video] 0 - HEVC Configuration Version: 1
       [QuickTime, QuickTime, Video] 1 - General Profile Space: Conforming
       [QuickTime, QuickTime, Video] 1.1 - General Tier Flag: Main Tier
      -[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main Profile
      +[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main
       [QuickTime, QuickTime, Video] 2 - Gen Profile Compatibility Flags: Main 10, Main
       [QuickTime, QuickTime, Video] 6 - Constraint Indicator Flags: 144 0 0 0 0 0
       [QuickTime, QuickTime, Video] 12 - General Level IDC: 60 (level 2.0)
      @@ -42,5 +42,5 @@
       [QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 652
       [QuickTime, QuickTime, Video] mdat-size - Media Data Size: 18
       [QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 3537
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.81
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.90
       [XMP, XMP-dc, Image] title - Title: a title
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_12.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_12.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_12.out	2019-12-18 17:06:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_12.out	2020-03-19 14:04:33.000000000 +0000
      @@ -1,4 +1,4 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.81
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.90
       [QuickTime, QuickTime, Video] 0 - Major Brand: High Efficiency Image Format still image (.HEIF)
       [QuickTime, QuickTime, Video] 1 - Minor Version: 0.0.0
       [QuickTime, QuickTime, Video] 2 - Compatible Brands: mif1, heic, hevc
      @@ -7,7 +7,7 @@
       [QuickTime, QuickTime, Video] 0 - HEVC Configuration Version: 1
       [QuickTime, QuickTime, Video] 1 - General Profile Space: Conforming
       [QuickTime, QuickTime, Video] 1.1 - General Tier Flag: Main Tier
      -[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main Profile
      +[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main
       [QuickTime, QuickTime, Video] 2 - Gen Profile Compatibility Flags: Main 10, Main
       [QuickTime, QuickTime, Video] 6 - Constraint Indicator Flags: 144 0 0 0 0 0
       [QuickTime, QuickTime, Video] 12 - General Level IDC: 120 (level 4.0)
      @@ -24,7 +24,7 @@
       [QuickTime, QuickTime, Video] 0 - HEVC Configuration Version: 1
       [QuickTime, QuickTime, Video] 1 - General Profile Space: Conforming
       [QuickTime, QuickTime, Video] 1.1 - General Tier Flag: Main Tier
      -[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main Profile
      +[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main
       [QuickTime, QuickTime, Video] 2 - Gen Profile Compatibility Flags: Main 10, Main
       [QuickTime, QuickTime, Video] 6 - Constraint Indicator Flags: 144 0 0 0 0 0
       [QuickTime, QuickTime, Video] 12 - General Level IDC: 60 (level 2.0)
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_13.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_13.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_13.out	2019-12-18 17:06:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_13.out	2020-03-19 14:04:33.000000000 +0000
      @@ -1,4 +1,4 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.81
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.90
       [QuickTime, QuickTime, Video] 0 - Major Brand: High Efficiency Image Format still image (.HEIF)
       [QuickTime, QuickTime, Video] 1 - Minor Version: 0.0.0
       [QuickTime, QuickTime, Video] 2 - Compatible Brands: mif1, heic, hevc
      @@ -7,7 +7,7 @@
       [QuickTime, QuickTime, Video] 0 - HEVC Configuration Version: 1
       [QuickTime, QuickTime, Video] 1 - General Profile Space: Conforming
       [QuickTime, QuickTime, Video] 1.1 - General Tier Flag: Main Tier
      -[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main Profile
      +[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main
       [QuickTime, QuickTime, Video] 2 - Gen Profile Compatibility Flags: Main 10, Main
       [QuickTime, QuickTime, Video] 6 - Constraint Indicator Flags: 144 0 0 0 0 0
       [QuickTime, QuickTime, Video] 12 - General Level IDC: 120 (level 4.0)
      @@ -24,7 +24,7 @@
       [QuickTime, QuickTime, Video] 0 - HEVC Configuration Version: 1
       [QuickTime, QuickTime, Video] 1 - General Profile Space: Conforming
       [QuickTime, QuickTime, Video] 1.1 - General Tier Flag: Main Tier
      -[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main Profile
      +[QuickTime, QuickTime, Video] 1.2 - General Profile IDC: Main
       [QuickTime, QuickTime, Video] 2 - Gen Profile Compatibility Flags: Main 10, Main
       [QuickTime, QuickTime, Video] 6 - Constraint Indicator Flags: 144 0 0 0 0 0
       [QuickTime, QuickTime, Video] 12 - General Level IDC: 60 (level 2.0)
      @@ -42,7 +42,7 @@
       [QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 705
       [QuickTime, QuickTime, Video] mdat-size - Media Data Size: 18
       [QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 3796
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.81
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.90
       [XMP, XMP-dc, Image] subject - Subject: a subject, another subject
       [EXIF, IFD0, Image] 282 - X Resolution: 72
       [EXIF, IFD0, Image] 283 - Y Resolution: 72
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_14.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_14.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_14.out	2019-12-18 17:06:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_14.out	2021-02-18 20:37:55.000000000 +0000
      @@ -13,9 +13,10 @@
       [QuickTime, QuickTime, Video] 22 - Selection Duration: 0 s
       [QuickTime, QuickTime, Video] 23 - Current Time: 0 s
       [QuickTime, QuickTime, Video] 24 - Next Track ID: 3
      +[QuickTime, QuickTime, Video] 8 - Handler Type: Metadata
       [QuickTime, ItemList, Audio] ©pub - Publisher: pub
       [QuickTime, QuickTime, Video] mdat-size - Media Data Size: 0
      -[QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 4711
      +[QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 4743
       [QuickTime, QuickTime, Video] mdat - Media Data: (Binary data 0 bytes)
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.81
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.19
       [XMP, XMP-dc, Author] publisher - Publisher: pub
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_16.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_16.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_16.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_16.out	2021-02-23 15:41:24.000000000 +0000
      @@ -0,0 +1,2 @@
      +[QuickTime, Microsoft, Video] WM/Director - Director: dir1, dir2
      +[QuickTime, Microsoft, Video] WM/SharedUserRating - Shared User Rating: 75
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_17.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_17.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_17.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_17.out	2021-04-20 15:36:37.000000000 +0000
      @@ -0,0 +1,2 @@
      +[QuickTime, UserData, Location] loci - Location Information: test comment Role=shooting Lat=1.20000 Lon=-2.30000 Alt=100.00 Body=earth Notes=a note
      +[QuickTime, UserData, Video] rtng - Rating: Entity=ABCD Criteria=1234 a rating
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_2.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_2.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_2.out	2019-12-18 17:06:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_2.out	2021-06-09 15:42:27.000000000 +0000
      @@ -1,11 +1,11 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.81
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.27
       [File, System, Other] FileName - File Name: QuickTime.mov
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 3.8 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:03:22 12:13:41-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:18 11:12:55-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:17 10:26:28-05:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 3.8 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:03:22 19:58:22-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:06:08 11:04:59-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:03:22 19:58:22-04:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: MOV
       [File, File, Other] FileTypeExtension - File Type Extension: mov
       [File, File, Other] MIMEType - MIME Type: video/quicktime
      @@ -84,9 +84,9 @@
       [QuickTime, Track2, Audio] 26 - Audio Bits Per Sample: 8
       [QuickTime, Track2, Audio] 32 - Audio Sample Rate: 7875
       [QuickTime, QuickTime, Video] 8 - Handler Type: Metadata Tags
      -[QuickTime, Keys, Other] 1.1 - Album: ålbum
      -[QuickTime, Keys, Other] 1.2 - Artist: årtist
      -[QuickTime, Keys, Other] 1.3 - Comment: çømménts
      +[QuickTime, Keys, Other] album - Album: ålbum
      +[QuickTime, Keys, Other] artist - Artist: årtist
      +[QuickTime, Keys, Other] comment - Comment: çømménts
       [QuickTime, UserData, Video] ©fmt - Format: Digital Camera
       [QuickTime, UserData, Video] ©inf - Information: PENTAX DIGITAL CAMERA                            
       [QuickTime, UserData, Video] ©alb - Album: Ã¥lbum
      @@ -123,11 +123,11 @@
       [XMP, XMP-xmpDM, Image] album - Album: No Album
       [XMP, XMP-xmp, Time] MetadataDate - Metadata Date: 2008:09:12 11:17:39-04:00
       [XMP, XMP-dc, Author] creator - Creator: Phil Harvey
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 4.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 320x240
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.077
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/38
      -[Composite, Composite, Video] QuickTime::AvgBitrate - Avg Bitrate: 0 bps
      -[Composite, Composite, Video] QuickTime::Rotation - Rotation: 0
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 18.9 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 10.3
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 4.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 320x240
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.077
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/38
      +[Composite, Composite, Video] QuickTime-AvgBitrate - Avg Bitrate: 0 bps
      +[Composite, Composite, Video] QuickTime-Rotation - Rotation: 0
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 18.9 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 10.3
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_3.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_3.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_3.out	2019-12-18 17:06:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_3.out	2021-09-22 18:09:08.000000000 +0000
      @@ -1,11 +1,11 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.81
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.31
       [File, System, Other] FileName - File Name: QuickTime.m4a
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 5.1 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:03:22 12:15:37-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:18 11:12:55-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:17 10:26:28-05:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 5.1 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:03:22 19:58:22-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:07:19 06:34:30-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:03:22 19:58:22-04:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: M4A
       [File, File, Other] FileTypeExtension - File Type Extension: m4a
       [File, File, Other] MIMEType - MIME Type: audio/mp4
      @@ -53,7 +53,7 @@
       [QuickTime, ItemList, Audio] cpil - Compilation: No
       [QuickTime, ItemList, Audio] tmpo - Beats Per Minute: 120
       [QuickTime, ItemList, Audio] ©too - Encoder: iTunes v4.9, QuickTime 7.0.1
      -[QuickTime, QuickTime, Audio] iTunNORM - Volume Normalization: 80 0 610 0 289C 0 0 0 0 0
      +[QuickTime, iTunes, Audio] iTunNORM - Volume Normalization: 80 0 610 0 289C 0 0 0 0 0
       [QuickTime, ItemList, Audio] ©lyr - Lyrics: these are lyrics
       [QuickTime, ItemList, Audio] ©ART - Artist: Phil Harvey
       [QuickTime, ItemList, Author] aART - Album Artist: album artist
      @@ -70,4 +70,4 @@
       [QuickTime, ItemList, Preview] covr - Cover Art: (Binary data 19 bytes)
       [QuickTime, QuickTime, Video] mdat-size - Media Data Size: 0
       [QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 5237
      -[Composite, Composite, Video] QuickTime::AvgBitrate - Avg Bitrate: 0 bps
      +[Composite, Composite, Video] QuickTime-AvgBitrate - Avg Bitrate: 0 bps
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_6.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_6.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_6.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_6.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,4 +1,4 @@
       [QuickTime, QuickTime, Video] 9 - Matrix Structure: 1 0 0 0 1 0 0 0 1
       [QuickTime, Track1, Video] 10 - Matrix Structure: 0 -1 0 1 0 0 0 320 1
       [QuickTime, Track2, Video] 10 - Matrix Structure: 1 0 0 0 1 0 0 0 1
      -[Composite, Composite, Video] QuickTime::Rotation - Rotation: 270
      +[Composite, Composite, Video] QuickTime-Rotation - Rotation: 270
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_7.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_7.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_7.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_7.out	2021-06-09 15:42:27.000000000 +0000
      @@ -1,7 +1,7 @@
      -[QuickTime, Keys, Other] 1.1 - Artist: me
      -[QuickTime, Keys, Other] 1.2 - Comment: çømménts
      -[QuickTime, Keys, Location] 1.3 - Camera Direction: 90
      -[QuickTime, Keys, Other] 1.4 - Director: director
      +[QuickTime, Keys, Other] artist - Artist: me
      +[QuickTime, Keys, Other] comment - Comment: çømménts
      +[QuickTime, Keys, Location] direction.facing - Camera Direction: 90
      +[QuickTime, Keys, Other] director - Director: director
       [QuickTime, UserData, Video] ©fmt - Format: Digital Camera
       [QuickTime, UserData, Video] ©inf - Information: PENTAX DIGITAL CAMERA                            
       [QuickTime, UserData, Video] ©alb - Album: albumA
      @@ -23,4 +23,5 @@
       [QuickTime, ItemList, Audio] ©cmt - Comment: çømménts
       [QuickTime, ItemList, Audio] ©cmt-fra-FR - Comment (fra-FR): fr comment
       [QuickTime, ItemList, Audio] tmpo - Beats Per Minute: 128
      +[QuickTime, ItemList, Audio] albm - Album: albumC
       [QuickTime, UserData, Video] ©mod - Model: model
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_8.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_8.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_8.out	2019-12-18 17:06:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_8.out	2021-06-09 15:42:27.000000000 +0000
      @@ -84,7 +84,7 @@
       [QuickTime, Track2, Video] stsz - Sample Sizes: (Binary data 12 bytes)
       [QuickTime, Track2, Video] stco - Chunk Offset: (Binary data 28 bytes)
       [QuickTime, QuickTime, Video] 8 - Handler Type: Metadata Tags
      -[QuickTime, Keys, Other] 1.1 - Director: dir
      +[QuickTime, Keys, Other] director - Director: dir
       [QuickTime, QuickTime, Video] 8 - Handler Type: Metadata
       [QuickTime, QuickTime, Video] 12 - Handler Vendor ID: Apple
       [QuickTime, ItemList, Audio] ©ART - Artist: me
      @@ -92,5 +92,5 @@
       [QuickTime, QuickTime, Video] mdat-size - Media Data Size: 0
       [QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 4830
       [QuickTime, QuickTime, Video] mdat - Media Data: (Binary data 0 bytes)
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.81
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.27
       [XMP, XMP-tiff, Author] Artist - Artist: me
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime_9.out libimage-exiftool-perl-12.40+dfsg/t/QuickTime_9.out
      --- libimage-exiftool-perl-11.88/t/QuickTime_9.out	2019-12-18 17:06:13.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime_9.out	2021-06-09 15:42:27.000000000 +0000
      @@ -46,9 +46,9 @@
       [QuickTime, ItemList, Audio] ©ART - Artist: me
       [QuickTime, UserData, Video] ©arg - Arranger: arr
       [QuickTime, QuickTime, Video] 8 - Handler Type: Metadata Tags
      -[QuickTime, Keys, Other] 1.1 - Director: dir
      +[QuickTime, Keys, Other] director - Director: dir
       [QuickTime, QuickTime, Video] mdat-size - Media Data Size: 0
       [QuickTime, QuickTime, Video] mdat-offset - Media Data Offset: 7449
       [QuickTime, QuickTime, Video] mdat - Media Data: (Binary data 0 bytes)
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.81
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.27
       [XMP, XMP-tiff, Author] Artist - Artist: me
      diff -Nru libimage-exiftool-perl-11.88/t/QuickTime.t libimage-exiftool-perl-12.40+dfsg/t/QuickTime.t
      --- libimage-exiftool-perl-11.88/t/QuickTime.t	2019-06-11 12:05:37.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/QuickTime.t	2021-04-22 18:09:53.000000000 +0000
      @@ -2,7 +2,7 @@
       # After "make install" it should work as "perl t/QuickTime.t".
       
       BEGIN {
      -    $| = 1; print "1..15\n"; $Image::ExifTool::configFile = '';
      +    $| = 1; print "1..17\n"; $Image::ExifTool::configFile = '';
           require './t/TestLib.pm'; t::TestLib->import();
       }
       END {print "not ok 1\n" unless $loaded;}
      @@ -59,7 +59,7 @@
       {
           ++$testnum;
           my $exifTool = new Image::ExifTool;
      -    $exifTool->SetNewValue('Rotation' => '270');
      +    $exifTool->SetNewValue('Rotation' => '270', Protected => 1);
           my $testfile = "t/${testname}_${testnum}_failed.mov";
           unlink $testfile;
           my $rtnVal = $exifTool->WriteInfo('t/images/QuickTime.mov', $testfile);
      @@ -81,6 +81,7 @@
               ['UserData:Genre' => 'rock'],
               ['UserData:Album' => 'albumA'],
               ['ItemList:Album' => 'albumB'],
      +        ['ItemList:ID-albm:Album' => 'albumC'],
               ['QuickTime:Comment-fra-FR' => 'fr comment'],
               ['Keys:Director' => 'director'],
               ['Keys:CameraDirection' => '90'],
      @@ -212,5 +213,29 @@
           print "ok $testnum\n";
       }
       
      +# test 16: Write some Microsoft Xtra tags
      +{
      +    ++$testnum;
      +    my @writeInfo = (
      +        ['Microsoft:Director' => 'dir1'],
      +        ['Microsoft:Director' => 'dir2'],
      +        ['Microsoft:SharedUserRating' => 75],
      +    );
      +    my @extract = ('Microsoft:all');
      +    print 'not ' unless writeCheck(\@writeInfo, $testname, $testnum, 't/images/QuickTime.mov', \@extract);
      +    print "ok $testnum\n";
      +}
      +
      +# test 17: Write some 3gp tags
      +{
      +    ++$testnum;
      +    my @writeInfo = (
      +        ['UserData:LocationInformation' => 'test comment role=Shooting lat=1.2 lon=-2.3 alt=100 body=earth notes=a note'],
      +        ['UserData:Rating' => 'entity=ABCD criteria=1234 a rating'],
      +    );
      +    print 'not ' unless writeCheck(\@writeInfo, $testname, $testnum, 't/images/QuickTime.mov', 1);
      +    print "ok $testnum\n";
      +}
      +
       
       # end
      diff -Nru libimage-exiftool-perl-11.88/t/Radiance_2.out libimage-exiftool-perl-12.40+dfsg/t/Radiance_2.out
      --- libimage-exiftool-perl-11.88/t/Radiance_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Radiance_2.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Radiance.hdr
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 587 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2011:12:10 14:16:13-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:19-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: HDR
       [File, File, Other] FileTypeExtension - File Type Extension: hdr
      @@ -20,5 +20,5 @@
       [Radiance, Radiance, Image] _command - Command: pfilt -1 -e 1 -m .25 -2 -x /3 -y /3
       [Radiance, Radiance, Image] exposure - Exposure: 3.512179e-001
       [Radiance, Radiance, Image] _orient - Orientation: Horizontal (normal)
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 1x1
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000001
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 1x1
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000001
      diff -Nru libimage-exiftool-perl-11.88/t/Real_2.out libimage-exiftool-perl-12.40+dfsg/t/Real_2.out
      --- libimage-exiftool-perl-11.88/t/Real_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Real_2.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Real.rm
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1915 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:05:24 08:37:37-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:19-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: RM
       [File, File, Other] FileTypeExtension - File Type Extension: rm
      @@ -66,4 +66,4 @@
       [ID3, ID3v1, Time] 93 - Year: 2003
       [ID3, ID3v1, Audio] 97 - Comment: This is a comment
       [ID3, ID3v1, Audio] 127 - Genre: Rock & Roll
      -[Composite, Composite, Time] ID3::DateTimeOriginal - Date/Time Original: 2003
      +[Composite, Composite, Time] ID3-DateTimeOriginal - Date/Time Original: 2003
      diff -Nru libimage-exiftool-perl-11.88/t/Red_2.out libimage-exiftool-perl-12.40+dfsg/t/Red_2.out
      --- libimage-exiftool-perl-11.88/t/Red_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Red_2.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Red.r3d
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1160 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2018:01:26 09:44:02-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2018:01:26 14:40:32-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:19-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2018:01:26 14:40:32-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: R3D
       [File, File, Other] FileTypeExtension - File Type Extension: r3d
      @@ -38,8 +38,8 @@
       [Red, Red, Camera] 24684 - Focus Distance: -0.001 m
       [Red, Red, Camera] 4209 - Camera Model Name: S-WEAPON
       [Red, Red, Camera] 4246 - Filter: STANDARD
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 4.9
      -[Composite, Composite, Time] Exif::DateTimeOriginal - Date/Time Original: 2016:01:18 21:35:55
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 5120x2560
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 13.1
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 24.0 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 4.9
      +[Composite, Composite, Time] Exif-DateTimeOriginal - Date/Time Original: 2016:01:18 21:35:55
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 5120x2560
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 13.1
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 24.0 mm
      diff -Nru libimage-exiftool-perl-11.88/t/Ricoh_2.out libimage-exiftool-perl-12.40+dfsg/t/Ricoh_2.out
      --- libimage-exiftool-perl-11.88/t/Ricoh_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Ricoh_2.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Ricoh.jpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1903 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:22-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:20-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -55,7 +55,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1626
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Ricoh, Camera] 1 - Maker Note Type: RDC
       [MakerNotes, Ricoh, Camera] 2 - Firmware Version: 1.04
       [MakerNotes, Ricoh, Image] 0 - Ricoh Image Width: 2272
      @@ -64,9 +64,9 @@
       [MakerNotes, Ricoh, Time] 4 - Manufacture Date 1: 2001:10:23 00:00:00
       [MakerNotes, Ricoh, Time] 5 - Manufacture Date 2: 0000:00:00 00:00:00
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0100
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 2.6
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/274
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 7.5 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 10.3
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 2.6
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/274
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 7.5 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 10.3
      diff -Nru libimage-exiftool-perl-11.88/t/Ricoh_3.out libimage-exiftool-perl-12.40+dfsg/t/Ricoh_3.out
      --- libimage-exiftool-perl-11.88/t/Ricoh_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Ricoh_3.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Ricoh_3_failed.jpg
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 1907 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:43-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:43-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:43-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:20-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:20-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:20-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -55,7 +55,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1630
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Ricoh, Camera] 1 - Maker Note Type: RDC
       [MakerNotes, Ricoh, Camera] 2 - Firmware Version: 1.04
       [MakerNotes, Ricoh, Camera] 3 - Ricoh 0x0003: 3
      @@ -92,9 +92,9 @@
       [PrintIM, PrintIM, Printing] 14 - Print IM 0x000e: 0x000000be
       [PrintIM, PrintIM, Printing] 256 - Print IM 0x0100: 0x05000000
       [PrintIM, PrintIM, Printing] 257 - Print IM 0x0101: 0x00000000
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 2.6
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/274
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 10.3
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 7.5 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 2.6
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/274
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 10.3
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 7.5 mm
      diff -Nru libimage-exiftool-perl-11.88/t/Ricoh_4.out libimage-exiftool-perl-12.40+dfsg/t/Ricoh_4.out
      --- libimage-exiftool-perl-11.88/t/Ricoh_4.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Ricoh_4.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Ricoh2.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 3.1 kB
      +[File, System, Other] FileSize - File Size: 3.1 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:09:29 19:47:55-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:42-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -85,7 +85,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 2492
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Ricoh, Camera] 1 - Maker Note Type: Rdc
       [MakerNotes, Ricoh, Camera] 2 - Firmware Version: 22.19
       [MakerNotes, Ricoh, Camera] 5 - Internal Serial Number: 00000000000000012207000003100957
      @@ -101,14 +101,14 @@
       [APP5, RMETA, Image] Lit - Lit: No
       [APP5, RMETA, Image] Condition - Condition: Good
       [APP5, RMETA, Image] Azimuth - Azimuth: E
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 5.5
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/1740
      -[Composite, Composite, Location] GPS::GPSAltitude - GPS Altitude: 117 m Above Sea Level
      -[Composite, Composite, Time] GPS::GPSDateTime - GPS Date/Time: 2006:05:26 10:47:24Z
      -[Composite, Composite, Location] GPS::GPSLatitude - GPS Latitude: 42 deg 2' 4.47" N
      -[Composite, Composite, Location] GPS::GPSLongitude - GPS Longitude: 0 deg 30' 27.01" W
      -[Composite, Composite, Location] Exif::GPSPosition - GPS Position: 42 deg 2' 4.47" N, 0 deg 30' 27.01" W
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 15.4
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 5.7 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 5.5
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/1740
      +[Composite, Composite, Location] GPS-GPSAltitude - GPS Altitude: 117 m Above Sea Level
      +[Composite, Composite, Time] GPS-GPSDateTime - GPS Date/Time: 2006:05:26 10:47:24Z
      +[Composite, Composite, Location] GPS-GPSLatitude - GPS Latitude: 42 deg 2' 4.47" N
      +[Composite, Composite, Location] GPS-GPSLongitude - GPS Longitude: 0 deg 30' 27.01" W
      +[Composite, Composite, Location] Exif-GPSPosition - GPS Position: 42 deg 2' 4.47" N, 0 deg 30' 27.01" W
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 15.4
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 5.7 mm
      diff -Nru libimage-exiftool-perl-11.88/t/RIFF_2.out libimage-exiftool-perl-12.40+dfsg/t/RIFF_2.out
      --- libimage-exiftool-perl-11.88/t/RIFF_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/RIFF_2.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,11 +1,11 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: RIFF.wav
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 224 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:01 09:26:57-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:20-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
      +[File, System, Other] FilePermissions - File Permissions: rwxr-xr-x
       [File, File, Other] FileType - File Type: WAV
       [File, File, Other] FileTypeExtension - File Type Extension: wav
       [File, File, Other] MIMEType - MIME Type: audio/x-wav
      @@ -21,5 +21,5 @@
       [RIFF, RIFF, Camera] ecor - Make: PENTAX Corporation 
       [RIFF, RIFF, Camera] emdl - Camera Model Name: PENTAX Optio WP
       [RIFF, RIFF, Audio] emnt - Maker Notes: (Binary data 16 bytes)
      -[Composite, Composite, Time] Exif::DateTimeOriginal - Date/Time Original: 2005:08:08 16:23:35
      -[Composite, Composite, Other] RIFF::Duration2 - Duration: 0.03 s
      +[Composite, Composite, Time] Exif-DateTimeOriginal - Date/Time Original: 2005:08:08 16:23:35
      +[Composite, Composite, Other] RIFF-Duration2 - Duration: 0.03 s
      diff -Nru libimage-exiftool-perl-11.88/t/RIFF_3.out libimage-exiftool-perl-12.40+dfsg/t/RIFF_3.out
      --- libimage-exiftool-perl-11.88/t/RIFF_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/RIFF_3.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: RIFF.avi
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1262 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2008:09:12 12:04:10-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:20-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:01:05 09:06:26-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: AVI
       [File, File, Other] FileTypeExtension - File Type Extension: avi
      @@ -50,6 +50,6 @@
       [XMP, XMP-xmpDM, Image] album - Album: No Album
       [XMP, XMP-xmp, Time] MetadataDate - Metadata Date: 2008:09:12 11:17:39-04:00
       [XMP, XMP-dc, Author] creator - Creator: Phil Harvey
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 320x240
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.077
      -[Composite, Composite, Other] RIFF::Duration - Duration: 15.53 s
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 320x240
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.077
      +[Composite, Composite, Other] RIFF-Duration - Duration: 15.53 s
      diff -Nru libimage-exiftool-perl-11.88/t/RIFF_4.out libimage-exiftool-perl-12.40+dfsg/t/RIFF_4.out
      --- libimage-exiftool-perl-11.88/t/RIFF_4.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/RIFF_4.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: RIFF.webp
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 58 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2012:08:03 09:16:51-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2012:08:03 09:30:24-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:20-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: WEBP
       [File, File, Other] FileTypeExtension - File Type Extension: webp
      @@ -14,5 +14,5 @@
       [RIFF, RIFF, Image] 6.1 - Horizontal Scale: 0
       [RIFF, RIFF, Image] 8 - Image Height: 16
       [RIFF, RIFF, Image] 8.1 - Vertical Scale: 0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 16x16
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000256
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 16x16
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000256
      diff -Nru libimage-exiftool-perl-11.88/t/Sanyo_2.out libimage-exiftool-perl-12.40+dfsg/t/Sanyo_2.out
      --- libimage-exiftool-perl-11.88/t/Sanyo_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Sanyo_2.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Sanyo.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.1 kB
      +[File, System, Other] FileSize - File Size: 2.1 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:22-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:43-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -67,7 +67,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1888
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Sanyo, Camera] 255 - Maker Note Offset: 1076
       [MakerNotes, Sanyo, Camera] 512 - Special Mode: 0 0 0
       [MakerNotes, Sanyo, Camera] 513 - Sanyo Quality: Fine/Very High
      @@ -91,13 +91,13 @@
       [MakerNotes, Sanyo, Camera] 549 - Flash Mode: Red eye
       [MakerNotes, Sanyo, Camera] 3840 - Data Dump: (Binary data 260 bytes)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0100
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 6.9
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 481.1
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/185
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.000 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 0.2 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 23.1 mm (35 mm equivalent: 11113.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 1238.24 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 11.1
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 6.9
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 481.1
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/185
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.000 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 0.2 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 23.1 mm (35 mm equivalent: 11113.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 1238.24 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 11.1
      diff -Nru libimage-exiftool-perl-11.88/t/Sanyo_3.out libimage-exiftool-perl-12.40+dfsg/t/Sanyo_3.out
      --- libimage-exiftool-perl-11.88/t/Sanyo_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Sanyo_3.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Sanyo_3_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 2.1 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:44-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:44-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:44-04:00
      +[File, System, Other] FileSize - File Size: 2.1 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:43-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:43-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:43-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -67,7 +67,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1882
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Sanyo, Camera] 255 - Maker Note Offset: 1076
       [MakerNotes, Sanyo, Camera] 512 - Special Mode: 0 0 0
       [MakerNotes, Sanyo, Camera] 513 - Sanyo Quality: Fine/Very High
      @@ -101,13 +101,13 @@
       [MakerNotes, Sanyo, Camera] 3840 - Data Dump: (Binary data 260 bytes)
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0100
       [PrintIM, PrintIM, Printing] 257 - Print IM 0x0101: 0x00000001
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 6.9
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 481.1
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/185
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.000 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 0.2 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 23.1 mm (35 mm equivalent: 11113.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 1238.24 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 11.1
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 6.9
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 481.1
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/185
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.000 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 0.2 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 23.1 mm (35 mm equivalent: 11113.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 1238.24 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 11.1
      diff -Nru libimage-exiftool-perl-11.88/t/Sigma_2.out libimage-exiftool-perl-12.40+dfsg/t/Sigma_2.out
      --- libimage-exiftool-perl-11.88/t/Sigma_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Sigma_2.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Sigma.jpg
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1531 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:23-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:20-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -57,7 +57,7 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1254
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Sigma, Camera] 2 - Serial Number: 02000019
       [MakerNotes, Sigma, Camera] 3 - Drive Mode: SINGLE
       [MakerNotes, Sigma, Camera] 4 - Resolution Mode: HI
      @@ -81,13 +81,13 @@
       [MakerNotes, Sigma, Camera] 23 - Firmware: 2.0.4.1642 Release
       [MakerNotes, Sigma, Camera] 24 - Software: SIGMA PhotoPro 2.0.0.1586
       [MakerNotes, Sigma, Camera] 25 - Auto Bracket:  
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 8.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.7
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/320
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.018 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 20.0 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 60.0 mm (35 mm equivalent: 102.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 25.46 m
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.3
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 8.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.7
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/320
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.018 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 20.0 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 60.0 mm (35 mm equivalent: 102.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 25.46 m
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.3
      diff -Nru libimage-exiftool-perl-11.88/t/Sigma_3.out libimage-exiftool-perl-12.40+dfsg/t/Sigma_3.out
      --- libimage-exiftool-perl-11.88/t/Sigma_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Sigma_3.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Sigma_3_failed.jpg
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 1575 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:44-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:44-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:44-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:21-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:21-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:21-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -58,7 +58,7 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 1254
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Sigma, Camera] 2 - Serial Number: 02000019
       [MakerNotes, Sigma, Camera] 3 - Drive Mode: SINGLE
       [MakerNotes, Sigma, Camera] 4 - Resolution Mode: HI
      @@ -84,13 +84,13 @@
       [MakerNotes, Sigma, Camera] 25 - Auto Bracket:  
       [IPTC, IPTC, Image] 40 - IPTC Pixel Width: 200
       [IPTC, IPTC, Image] 0 - News Photo Version: 4
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 8.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/320
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.3
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.7
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.018 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 20.0 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 60.0 mm (35 mm equivalent: 102.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 25.46 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 8.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/320
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.3
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.7
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.018 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 20.0 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 60.0 mm (35 mm equivalent: 102.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 25.46 m
      diff -Nru libimage-exiftool-perl-11.88/t/Sigma_4.out libimage-exiftool-perl-12.40+dfsg/t/Sigma_4.out
      --- libimage-exiftool-perl-11.88/t/Sigma_4.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Sigma_4.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Sigma.x3f
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 1464 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2005:11:14 14:47:22-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:21-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: X3F
       [File, File, Other] FileTypeExtension - File Type Extension: x3f
      @@ -52,14 +52,14 @@
       [SigmaRaw, SigmaRaw, Camera] LENSFRANGE - Lens Focal Range: 15 to 30
       [SigmaRaw, SigmaRaw, Camera] FLENGTH - Focal Length: 30.0 mm
       [SigmaRaw, SigmaRaw, Camera] FLEQ35MM - Focal Length In 35mm Format: 51.0 mm
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 8.4
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 2268x1512
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 3.4
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/108
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Sigma 15-30mm F3.5-4.5 EX DG Aspherical
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 12.9
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.7
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.018 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 38.9 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 30.0 mm (35 mm equivalent: 51.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 6.10 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 8.4
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 2268x1512
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 3.4
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/108
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Sigma 15-30mm F3.5-4.5 EX DG Aspherical
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 12.9
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.7
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.018 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 38.9 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 30.0 mm (35 mm equivalent: 51.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 6.10 m
      diff -Nru libimage-exiftool-perl-11.88/t/Sigma_5.out libimage-exiftool-perl-12.40+dfsg/t/Sigma_5.out
      --- libimage-exiftool-perl-11.88/t/Sigma_5.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Sigma_5.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Sigma_5_failed.x3f
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 7.2 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:45-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:45-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:45-04:00
      +[File, System, Other] FileSize - File Size: 7.2 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:43-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:43-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:43-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: X3F
       [File, File, Other] FileTypeExtension - File Type Extension: x3f
      @@ -117,7 +117,7 @@
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 2680
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
       [EXIF, IFD1, Image] 531 - Y Cb Cr Positioning: Co-sited
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Sigma, Camera] 2 - Serial Number: 1008382
       [MakerNotes, Sigma, Camera] 3 - Drive Mode: SINGLE
       [MakerNotes, Sigma, Camera] 4 - Resolution Mode: HI
      @@ -176,19 +176,19 @@
       [MakerNotes, Sigma, Camera] 58 - Flash Exposure Comp: 0
       [MakerNotes, Sigma, Camera] 59 - Firmware: 1.03.0.000
       [MakerNotes, Sigma, Camera] 60 - White Balance: Auto
      -[MakerNotes, Sigma, Preview] Exif::PreviewImage - Preview Image: (Binary data 26 bytes)
      +[MakerNotes, Sigma, Preview] Exif-PreviewImage - Preview Image: (Binary data 26 bytes)
       [IPTC, IPTC, Other] 25 - Keywords: one, two
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dc, Image] title - Title: A title
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 2.8
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/10
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Unknown ( )
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 6.3
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.7
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.018 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 47.4 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 24.2 mm (35 mm equivalent: 41.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 11.79 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 2.8
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/10
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Unknown ( )
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 6.3
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.7
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.018 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 47.4 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 24.2 mm (35 mm equivalent: 41.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 11.79 m
      diff -Nru libimage-exiftool-perl-11.88/t/Sony_2.out libimage-exiftool-perl-12.40+dfsg/t/Sony_2.out
      --- libimage-exiftool-perl-11.88/t/Sony_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Sony_2.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Sony.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.7 kB
      +[File, System, Other] FileSize - File Size: 2.7 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:01:04 14:02:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:43-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -65,7 +65,7 @@
       [EXIF, IFD1, Time] 306 - Modify Date: 2003:12:18 13:51:33
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 2502
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Sony, Camera] 8192 - Sony 0x2000: 0
       [MakerNotes, Sony, Camera] 36865 - Sony 0x9001: ..­mQV„ûV„û.³9°9ŠJuÿ.Ŭ]è^Ž¸.[...]
       [MakerNotes, Sony, Camera] 36866 - Sony 0x9002: .JÚ`.p.V!.!¾ê¾ê0ÿ0ÿV!ˆPp,×.0c[...]
      @@ -78,9 +78,9 @@
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0250
       [PrintIM, PrintIM, Printing] 2 - Print IM 0x0002: 0x00000001
       [PrintIM, PrintIM, Printing] 257 - Print IM 0x0101: 0x00000000
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 7.1
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/250
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 12.5 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.3
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 7.1
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/250
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 12.5 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.3
      diff -Nru libimage-exiftool-perl-11.88/t/Sony_3.out libimage-exiftool-perl-12.40+dfsg/t/Sony_3.out
      --- libimage-exiftool-perl-11.88/t/Sony_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Sony_3.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Sony_3_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 5.5 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:45-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:45-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:45-04:00
      +[File, System, Other] FileSize - File Size: 5.5 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:44-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:44-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:44-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -64,7 +64,7 @@
       [EXIF, IFD1, Time] 306 - Modify Date: 2003:12:18 13:51:33
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 2486
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Sony, Camera] 8192 - Sony 0x2000: 0
       [MakerNotes, Sony, Camera] 36865 - Sony 0x9001: ..­mQV„ûV„û.³9°9ŠJuÿ.Ŭ]è^Ž¸.[...]
       [MakerNotes, Sony, Camera] 36866 - Sony 0x9002: .JÚ`.p.V!.!¾ê¾ê0ÿ0ÿV!ˆPp,×.0c[...]
      @@ -77,11 +77,11 @@
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0250
       [PrintIM, PrintIM, Printing] 2 - Print IM 0x0002: 0x00000001
       [PrintIM, PrintIM, Printing] 257 - Print IM 0x0101: 0x00000000
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-exif, Camera] FlashFired - Flash Fired: True
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 7.1
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/250
      -[Composite, Composite, Camera] XMP::Flash - Flash: Fired
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 12.5 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 7.1
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/250
      +[Composite, Composite, Camera] XMP-Flash - Flash: Fired
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 12.5 mm
      diff -Nru libimage-exiftool-perl-11.88/t/Sony_5.out libimage-exiftool-perl-12.40+dfsg/t/Sony_5.out
      --- libimage-exiftool-perl-11.88/t/Sony_5.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Sony_5.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,12 +1,12 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.76
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [ExifTool, ExifTool, ExifTool]  - Make: Sony
       [ExifTool, ExifTool, ExifTool]  - Model: DSC-F1
       [File, System, Other] FileName - File Name: Sony.pmp
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 375 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2010:04:13 18:42:12-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:07 08:36:29-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:04 10:47:12-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:21-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: PMP
       [File, File, Other] FileTypeExtension - File Type Extension: pmp
      @@ -28,7 +28,7 @@
       [MakerNotes, Sony, Time] 84 - Modify Date: 1998:09:01 20:19:57
       [MakerNotes, Sony, Image] 102 - Exposure Time: 1/100
       [MakerNotes, Sony, Camera] 118 - Flash: No Flash
      -[MakerNotes, Sony, Preview] Exif::JpgFromRaw - Jpg From Raw: (Binary data 251 bytes)
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/100
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[MakerNotes, Sony, Preview] Exif-JpgFromRaw - Jpg From Raw: (Binary data 251 bytes)
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/100
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/TestLib.pm libimage-exiftool-perl-12.40+dfsg/t/TestLib.pm
      --- libimage-exiftool-perl-11.88/t/TestLib.pm	2019-07-26 14:47:33.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/TestLib.pm	2021-06-09 16:11:33.000000000 +0000
      @@ -14,6 +14,7 @@
       #               Sep. 16/08 - P. Harvey Improve timezone testing
       #               Jul. 14/10 - P. Harvey Added writeInfo()
       #               Jan. 06/12 - P. Harvey Patched MirBSD leap second "feature"
      +#               Jun. 08/21 - PH Patched float compare to fix quadmath test failure
       #------------------------------------------------------------------------------
       
       package t::TestLib;
      @@ -24,7 +25,7 @@
       use Image::ExifTool qw(ImageInfo);
       
       use vars qw($VERSION @ISA @EXPORT);
      -$VERSION = '1.21';
      +$VERSION = '1.23';
       @ISA = qw(Exporter);
       @EXPORT = qw(check writeCheck writeInfo testCompare binaryCompare testVerbose);
       
      @@ -78,14 +79,28 @@
                   $success = 1;
                   my ($line1, $line2);
                   my $linenum = 0;
      +            my $skip = 0;
                   for (;;) {
      -                $line1 = ;
      +                $line1 =  unless $skip == 1;
                       last unless defined $line1;
                       ++$linenum;
      -                $line2 = ;
      +                $line2 =  unless $skip == 2;
      +                $skip = 0;
                       if (defined $line2) {
                           next if $line1 eq $line2;
                           next if nearEnough($line1, $line2);
      +                    # ignore IPTCDigest warning if Digest::MD5 isn't available
      +                    if ($line1 =~ /Warning: IPTCDigest is not current/ and
      +                        not eval 'require Digest::MD5')
      +                    {
      +                        $skip = 2; 
      +                        next;
      +                    } elsif ($line2 =~ /Warning: IPTCDigest is not current/ and
      +                        not eval 'require Digest::MD5')
      +                    {
      +                        $skip = 1;
      +                        next;
      +                    }
                       }
                       $success = 0;
                       last;
      @@ -204,8 +219,7 @@
                       last unless $tok2 =~ s/^'//;
                   }
                   last unless Image::ExifTool::IsFloat($tok1) and
      -                        Image::ExifTool::IsFloat($tok2) and
      -                        $tok1 =~ /\./ and $tok2 =~ /\./;
      +                        Image::ExifTool::IsFloat($tok2);
                   last if $tok1 == 0 or $tok2 == 0;
                   # numbers are bad if not the same to 5 significant figures
                   if (abs(($tok1-$tok2)/($tok1+$tok2)) > 1e-5) {
      @@ -354,10 +368,11 @@
       #         1) test name, 2) test number, 3) optional source file name,
       #         4) true to only check tags which were written (or list ref for tags to check)
       #         5) flag set if nothing is expected to change in the output file
      +#         6) true to ignore warnings
       # Returns: 1 if check passed
      -sub writeCheck($$$;$$$)
      +sub writeCheck($$$;$$$$)
       {
      -    my ($writeInfo, $testname, $testnum, $srcfile, $onlyWritten, $same) = @_;
      +    my ($writeInfo, $testname, $testnum, $srcfile, $onlyWritten, $same, $ignore) = @_;
           $srcfile or $srcfile = "t/images/$testname.jpg";
           my ($ext) = ($srcfile =~ /\.(.+?)$/);
           my $testfile = "t/${testname}_${testnum}_failed.$ext";
      @@ -372,7 +387,7 @@
               push @tags, $$_[0] if $onlyWritten;
           }
           unlink $testfile;
      -    my $ok = writeInfo($exifTool, $srcfile, $testfile, $same);
      +    my $ok = writeInfo($exifTool, $srcfile, $testfile, $same, $ignore);
           my $info = $exifTool->ImageInfo($testfile,{Duplicates=>1,Unknown=>1},@tags);
           my $rtnVal = check($exifTool, $info, $testname, $testnum);
           return 0 unless $ok and $rtnVal;
      @@ -396,7 +411,7 @@
           $err .= "  Error: WriteInfo() returned $result\n" if $result != ($same ? 2 : 1);
           my $info = $exifTool->GetInfo('Warning', 'Error');
           foreach (sort keys %$info) {
      -        next if $ignore and $_ eq 'Warning';
      +        next if $ignore and $_ =~ /^Warning/;
               my $tag = Image::ExifTool::GetTagName($_);
               $err .= "  $tag: $$info{$_}\n";
           }
      diff -Nru libimage-exiftool-perl-11.88/t/Torrent_2.out libimage-exiftool-perl-12.40+dfsg/t/Torrent_2.out
      --- libimage-exiftool-perl-11.88/t/Torrent_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Torrent_2.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Torrent.torrent
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 837 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2013:09:06 11:33:59-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2013:09:06 11:36:26-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:44-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: Torrent
       [File, File, Other] FileTypeExtension - File Type Extension: torrent
      @@ -17,13 +17,13 @@
       [Torrent, Torrent, Document] created by - Creator: uTorrent/1840
       [Torrent, Torrent, Time] creation date - Create Date: 2013:09:06 11:33:59-04:00
       [Torrent, Torrent, Document] encoding - Encoding: UTF-8
      -[Torrent, Torrent, Document] length1 - File 1 Length: 3.5 MB
      +[Torrent, Torrent, Document] length1 - File 1 Length: 3.5 MiB
       [Torrent, Torrent, Document] path1 - File 1 Path: exiftool-9.35.zip
      -[Torrent, Torrent, Document] length2 - File 2 Length: 3.5 MB
      +[Torrent, Torrent, Document] length2 - File 2 Length: 3.5 MiB
       [Torrent, Torrent, Document] path2 - File 2 Path: Image-ExifTool-9.35.tar.gz
      -[Torrent, Torrent, Document] length3 - File 3 Length: 2.3 MB
      +[Torrent, Torrent, Document] length3 - File 3 Length: 2.3 MiB
       [Torrent, Torrent, Document] path3 - File 3 Path: ExifTool-9.35.dmg
      -[Torrent, Torrent, Document] length4 - File 4 Length: 11 kB
      +[Torrent, Torrent, Document] length4 - File 4 Length: 11 KiB
       [Torrent, Torrent, Document] path4 - File 4 Path: docs/README
       [Torrent, Torrent, Document] name - Name: Image-ExifTool-9.35
       [Torrent, Torrent, Document] piece length - Piece Length: 1048576
      diff -Nru libimage-exiftool-perl-11.88/t/Unknown_2.out libimage-exiftool-perl-12.40+dfsg/t/Unknown_2.out
      --- libimage-exiftool-perl-11.88/t/Unknown_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Unknown_2.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Unknown.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 7.0 kB
      +[File, System, Other] FileSize - File Size: 7.0 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:06:16 10:57:05-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:24-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:44-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -67,7 +67,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 6922
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, MakerUnknown, Camera] 1 - Unknown 0x0001: ADM0000037036
       [MakerNotes, MakerUnknown, Camera] 4 - Unknown 0x0004: AE.. ^;k...MULTIoo/..................;[...]
       [MakerNotes, MakerUnknown, Camera] 6 - Unknown 0x0006: AFÿÿ...Û.ÿÿgò.rá.ýHî;ŸÍ.~4.". †.ˆ.Û.Û.Û.÷[...]
      @@ -81,12 +81,12 @@
       [PrintIM, PrintIM, Printing] 258 - Print IM 0x0102: 0x00000083
       [PrintIM, PrintIM, Printing] 261 - Print IM 0x0105: 0x00000083
       [PrintIM, PrintIM, Printing] 262 - Print IM 0x0106: 0x00000083
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 2.8
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/180
      -[Composite, Composite, Time] Exif::SubSecCreateDate - Create Date: 2005:08:10 06:24:38.331
      -[Composite, Composite, Time] Exif::SubSecDateTimeOriginal - Date/Time Original: 2005:08:10 06:24:38.331
      -[Composite, Composite, Time] Exif::SubSecModifyDate - Modify Date: 2005:08:10 06:24:38.331
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 57.0 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 10.1
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 2.8
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/180
      +[Composite, Composite, Time] Exif-SubSecCreateDate - Create Date: 2005:08:10 06:24:38.331
      +[Composite, Composite, Time] Exif-SubSecDateTimeOriginal - Date/Time Original: 2005:08:10 06:24:38.331
      +[Composite, Composite, Time] Exif-SubSecModifyDate - Modify Date: 2005:08:10 06:24:38.331
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 57.0 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 10.1
      diff -Nru libimage-exiftool-perl-11.88/t/Unknown_3.out libimage-exiftool-perl-12.40+dfsg/t/Unknown_3.out
      --- libimage-exiftool-perl-11.88/t/Unknown_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Unknown_3.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Unknown_3_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 7.0 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:46-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:46-04:00
      +[File, System, Other] FileSize - File Size: 7.0 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:44-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:44-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:44-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -67,7 +67,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 6922
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, MakerUnknown, Camera] 1 - Unknown 0x0001: ADM0000037036
       [MakerNotes, MakerUnknown, Camera] 4 - Unknown 0x0004: AE.. ^;k...MULTIoo/..................;[...]
       [MakerNotes, MakerUnknown, Camera] 6 - Unknown 0x0006: AFÿÿ...Û.ÿÿgò.rá.ýHî;ŸÍ.~4.". †.ˆ.Û.Û.Û.÷[...]
      @@ -81,12 +81,12 @@
       [PrintIM, PrintIM, Printing] 258 - Print IM 0x0102: 0x00000083
       [PrintIM, PrintIM, Printing] 261 - Print IM 0x0105: 0x00000083
       [PrintIM, PrintIM, Printing] 262 - Print IM 0x0106: 0x00000083
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 2.8
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/180
      -[Composite, Composite, Time] Exif::SubSecCreateDate - Create Date: 2005:08:10 06:24:38.331
      -[Composite, Composite, Time] Exif::SubSecDateTimeOriginal - Date/Time Original: 2005:08:10 06:24:38.331
      -[Composite, Composite, Time] Exif::SubSecModifyDate - Modify Date: 2005:08:10 06:24:38.331
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 10.1
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 200.0 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 2.8
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/180
      +[Composite, Composite, Time] Exif-SubSecCreateDate - Create Date: 2005:08:10 06:24:38.331
      +[Composite, Composite, Time] Exif-SubSecDateTimeOriginal - Date/Time Original: 2005:08:10 06:24:38.331
      +[Composite, Composite, Time] Exif-SubSecModifyDate - Modify Date: 2005:08:10 06:24:38.331
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 10.1
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 200.0 mm
      diff -Nru libimage-exiftool-perl-11.88/t/VCard_3.out libimage-exiftool-perl-12.40+dfsg/t/VCard_3.out
      --- libimage-exiftool-perl-11.88/t/VCard_3.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/VCard_3.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: VCard.ics
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.2 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2015:05:04 08:20:34-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Other] FileSize - File Size: 2.2 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2015:05:03 12:36:08-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:44-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: ICS
       [File, File, Other] FileTypeExtension - File Type Extension: ics
      diff -Nru libimage-exiftool-perl-11.88/t/Vorbis_2.out libimage-exiftool-perl-12.40+dfsg/t/Vorbis_2.out
      --- libimage-exiftool-perl-11.88/t/Vorbis_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Vorbis_2.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Vorbis.ogg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 5.2 kB
      +[File, System, Other] FileSize - File Size: 5.2 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:11:10 21:57:27-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:44-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: OGG
       [File, File, Other] FileTypeExtension - File Type Extension: ogg
      @@ -26,4 +26,4 @@
       [Vorbis, Vorbis, Audio] COMMENT - Comment: a nice comment
       [Vorbis, Vorbis, Author] ARTIST - Artist: Who Knows
       [Vorbis, Vorbis, Audio] ALBUM - Album: The Test Album
      -[Composite, Composite, Other] Vorbis::Duration - Duration: 1.34 s (approx)
      +[Composite, Composite, Other] Vorbis-Duration - Duration: 1.34 s (approx)
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_10.out libimage-exiftool-perl-12.40+dfsg/t/Writer_10.out
      --- libimage-exiftool-perl-11.88/t/Writer_10.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_10.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Writer_10_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 7.0 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:47-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:47-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:47-04:00
      +[File, System, Other] FileSize - File Size: 7.0 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:46-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -71,7 +71,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 2814
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Pentax, Camera] 0 - Pentax Version: 3.0.0.0
       [MakerNotes, Pentax, Camera] 1 - Pentax Model Type: 0
       [MakerNotes, Pentax, Image] 2 - Preview Image Size: 640x480
      @@ -217,7 +217,7 @@
       [MakerNotes, Pentax, Image] 16 - WB Shift AB: 0
       [MakerNotes, Pentax, Image] 17 - WB Shift GM: 0
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0300
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dc, Time] date - Date: 2008:03:02
       [XMP, XMP-exif, Image] ComponentsConfiguration - Components Configuration: Y, Cb, Cr, -
       [XMP, XMP-exif, Camera] FlashFired - Flash Fired: False
      @@ -232,15 +232,15 @@
       [XMP, XMP-tiff, Image] ImageWidth - Image Width: 8
       [XMP, XMP-tiff, Image] YCbCrPositioning - Y Cb Cr Positioning: Co-sited
       [XMP, XMP-tiff, Image] YCbCrSubSampling - Y Cb Cr Sub Sampling: YCbCr4:2:0 (2 2)
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 13.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/100
      -[Composite, Composite, Camera] XMP::Flash - Flash: Off, Did not fire
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Sigma AF 10-20mm F4-5.6 EX DC
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.0
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.5
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.020 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 100.4 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 10.0 mm (35 mm equivalent: 15.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 0.38 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 13.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/100
      +[Composite, Composite, Camera] XMP-Flash - Flash: Off, Did not fire
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Sigma AF 10-20mm F4-5.6 EX DC
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.0
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.5
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.020 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 100.4 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 10.0 mm (35 mm equivalent: 15.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 0.38 m
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_11.out libimage-exiftool-perl-12.40+dfsg/t/Writer_11.out
      --- libimage-exiftool-perl-11.88/t/Writer_11.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_11.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Writer_11_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 3.4 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:48-04:00
      +[File, System, Other] FileSize - File Size: 3.4 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:46-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -32,8 +32,8 @@
       [IPTC, IPTC, Other] 0 - Envelope Record Version: 4
       [IPTC, IPTC, Other] 25 - Keywords: this <> that
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dc, Author] contributor - Contributor: Guess who
       [Ducky, Ducky, Image] 1 - Quality: 50%
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_13.out libimage-exiftool-perl-12.40+dfsg/t/Writer_13.out
      --- libimage-exiftool-perl-11.88/t/Writer_13.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_13.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Writer_13_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 5.1 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:48-04:00
      +[File, System, Other] FileSize - File Size: 5.1 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:46-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -132,7 +132,7 @@
       [MakerNotes, Canon, Camera] 1 - Measured RGGB: 554 1022 1026 754
       [MakerNotes, Canon, Camera] 174 - Color Temperature: 5200
       [MakerNotes, Canon, Camera] 180 - Color Space: sRGB
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-getty, Image] OriginalFilename - Original File Name: CRW_1602.CRW
       [XMP, XMP-aux, Camera] Lens - Lens: 18.0 - 55.0 mm
       [XMP, XMP-dc, Image] description - Description: CRW with embedded XMP
      @@ -140,27 +140,27 @@
       [XMP, XMP-tiff, Image] ImageLength - Image Height: 2048
       [XMP, XMP-tiff, Image] ImageWidth - Image Width: 3072
       [XMP, XMP-crs, Image] Temperature - Color Temperature: 5200
      -[Composite, Composite, Camera] Canon::ConditionalFEC - Flash Exposure Compensation: +2/3
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Continuous Shooting
      -[Composite, Composite, Camera] Canon::FlashType - Flash Type: Built-In Flash
      -[Composite, Composite, Camera] Canon::ISO - ISO: 100
      -[Composite, Composite, Camera] Canon::Lens - Lens: 18.0 - 55.0 mm
      -[Composite, Composite, Camera] Canon::RedEyeReduction - Red Eye Reduction: Off
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Program AE
      -[Composite, Composite, Camera] Canon::ShutterCurtainHack - Shutter Curtain Sync: 1st-curtain sync
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 1740 832 831 931
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.6
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.119663
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Unknown 18-55mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.7
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.092604
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 27.9 - 85.3 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: 0.42 m (1.13 - 1.54 m)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 51.6 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 24.0 mm (35 mm equivalent: 37.2 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 8.25 m
      +[Composite, Composite, Camera] Canon-ConditionalFEC - Flash Exposure Compensation: +2/3
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Continuous Shooting
      +[Composite, Composite, Camera] Canon-FlashType - Flash Type: Built-In Flash
      +[Composite, Composite, Camera] Canon-ISO - ISO: 100
      +[Composite, Composite, Camera] Canon-Lens - Lens: 18.0 - 55.0 mm
      +[Composite, Composite, Camera] Canon-RedEyeReduction - Red Eye Reduction: Off
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Program AE
      +[Composite, Composite, Camera] Canon-ShutterCurtainHack - Shutter Curtain Sync: 1st-curtain sync
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 1740 832 831 931
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.6
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.119663
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Unknown 18-55mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.7
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.092604
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 27.9 - 85.3 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: 0.42 m (1.13 - 1.54 m)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 51.6 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 24.0 mm (35 mm equivalent: 37.2 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 8.25 m
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_14.out libimage-exiftool-perl-12.40+dfsg/t/Writer_14.out
      --- libimage-exiftool-perl-11.88/t/Writer_14.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_14.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Writer_14_failed.jpg
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 1253 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:48-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:23-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:23-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:23-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -57,13 +57,13 @@
       [EXIF, ExifIFD, Camera] 41986 - Exposure Mode: Manual
       [EXIF, ExifIFD, Camera] 41987 - White Balance: Auto
       [EXIF, ExifIFD, Camera] 41990 - Scene Capture Type: Standard
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 14.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 4
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 5.6
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 36.9 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 34.0 mm (35 mm equivalent: 54.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 4.37 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 14.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 4
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 5.6
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 36.9 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 34.0 mm (35 mm equivalent: 54.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 4.37 m
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_15.out libimage-exiftool-perl-12.40+dfsg/t/Writer_15.out
      --- libimage-exiftool-perl-11.88/t/Writer_15.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_15.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Writer_15_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 2.5 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:48-04:00
      +[File, System, Other] FileSize - File Size: 2.5 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:46-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -153,23 +153,23 @@
       [MakerNotes, Canon, Camera] 9 - AF Area Y Positions: 0 0 -506 0 506 0 0
       [MakerNotes, Canon, Camera] 10 - AF Points In Focus: (none)
       [MakerNotes, Canon, Camera] 19 - Thumbnail Image Valid Area: 0 159 7 112
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Continuous Shooting
      -[Composite, Composite, Camera] Canon::ISO - ISO: 100
      -[Composite, Composite, Camera] Canon::Lens - Lens: 18.0 - 55.0 mm
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Bulb
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 1719 832 831 990
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 2.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 4
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.190619
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Unknown 18-55mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 0.0
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.067348
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 28.6 - 87.4 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: inf (1.29 m - inf)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 116.6 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 7.0 mm (35 mm equivalent: 11.1 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 1.30 m
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Continuous Shooting
      +[Composite, Composite, Camera] Canon-ISO - ISO: 100
      +[Composite, Composite, Camera] Canon-Lens - Lens: 18.0 - 55.0 mm
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Bulb
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 1719 832 831 990
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 2.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 4
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.190619
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Unknown 18-55mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 0.0
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.067348
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 28.6 - 87.4 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: inf (1.29 m - inf)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 116.6 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 7.0 mm (35 mm equivalent: 11.1 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 1.30 m
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_19.out libimage-exiftool-perl-12.40+dfsg/t/Writer_19.out
      --- libimage-exiftool-perl-11.88/t/Writer_19.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_19.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Writer_19_failed.jpg
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 553 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:48-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:23-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:23-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:23-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -32,5 +32,5 @@
       [EXIF, ExifIFD, Camera] 41994 - Sharpness: Hard
       [IPTC, IPTC, Other] 25 - Keywords: one, two
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_25.out libimage-exiftool-perl-12.40+dfsg/t/Writer_25.out
      --- libimage-exiftool-perl-11.88/t/Writer_25.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_25.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Writer_25_failed.jpg
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 621 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:48-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:24-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:23-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:24-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -35,6 +35,6 @@
       [EXIF, IFD1, Image] 282 - X Resolution: 300
       [EXIF, IFD1, Image] 283 - Y Resolution: 300
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 25.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 25.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_26.out libimage-exiftool-perl-12.40+dfsg/t/Writer_26.out
      --- libimage-exiftool-perl-11.88/t/Writer_26.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_26.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Writer_26_failed.jpg
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 535 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:48-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:48-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:24-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:24-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:24-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -30,5 +30,5 @@
       [EXIF, IFD1, Image] 282 - X Resolution: 300
       [EXIF, IFD1, Image] 283 - Y Resolution: 300
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_2.out libimage-exiftool-perl-12.40+dfsg/t/Writer_2.out
      --- libimage-exiftool-perl-11.88/t/Writer_2.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_2.out	2020-11-27 16:34:41.000000000 +0000
      @@ -53,7 +53,7 @@
       ExifByteOrder: Little-endian (Intel, II)
       ExifImageHeight: 120
       ExifImageWidth: 160
      -ExifToolVersion: 9.93
      +ExifToolVersion: 12.11
       ExifVersion: 0221
       ExposureCompensation: 0
       ExposureCompensation (1): 0
      @@ -63,13 +63,13 @@
       FNumber: 14.0
       FNumber (1): 14
       FOV: 36.9 deg
      -FileAccessDate: 2015:04:18 07:17:51-04:00
      -FileInodeChangeDate: 2015:04:18 07:17:51-04:00
      -FileModifyDate: 2015:04:18 07:17:51-04:00
      +FileAccessDate: 2020:11:26 10:02:45-05:00
      +FileInodeChangeDate: 2020:11:26 10:02:45-05:00
      +FileModifyDate: 2020:11:26 10:02:45-05:00
       FileName: Writer_2_failed.jpg
       FileNumber: 118-1861
       FilePermissions: rw-r--r--
      -FileSize: 2.7 kB
      +FileSize: 2.7 KiB
       FileSource: Digital Camera
       FileType: JPEG
       FileTypeExtension: jpg
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_31.out libimage-exiftool-perl-12.40+dfsg/t/Writer_31.out
      --- libimage-exiftool-perl-11.88/t/Writer_31.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_31.out	2021-06-09 15:42:27.000000000 +0000
      @@ -1,11 +1,12 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.27
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: IPTCDigest is not current. XMP may be out of sync
       [File, System, Other] FileName - File Name: Writer_31_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 2.9 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 10:14:58-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:14:58-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 10:14:58-05:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 2.9 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:06:08 15:46:30-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:06:08 15:46:30-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:06:08 15:46:30-04:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
       [File, File, Other] MIMEType - MIME Type: image/jpeg
      @@ -100,9 +101,9 @@
       [APP14, Adobe, Image] 1 - APP14 Flags 0: (none)
       [APP14, Adobe, Image] 2 - APP14 Flags 1: (none)
       [APP14, Adobe, Image] 3 - Color Transform: YCbCr
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.6
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.0 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.6
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.0 mm
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_35.out libimage-exiftool-perl-12.40+dfsg/t/Writer_35.out
      --- libimage-exiftool-perl-11.88/t/Writer_35.out	2019-12-04 16:02:07.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_35.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Writer_35_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 9.5 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 11:01:39-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 11:01:39-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 11:01:39-05:00
      +[File, System, Other] FileSize - File Size: 9.5 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:46-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -83,7 +83,7 @@
       [Photoshop, Photoshop, Author] 1035 - URL: https://exiftool.org/                    
       [Photoshop, Photoshop, Image] 1037 - Global Angle: 30
       [Photoshop, Photoshop, Image] 1049 - Global Altitude: 30
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.78
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dc, Author] creator - Creator: Phil Harvey
       [XMP, XMP-dc, Image] description - Description: UTF-16 (big-endian) encoded XMP
       [XMP, XMP-dc, Author] rights - Rights: Copyright 2004 Phil Harvey
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_38.out libimage-exiftool-perl-12.40+dfsg/t/Writer_38.out
      --- libimage-exiftool-perl-11.88/t/Writer_38.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_38.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Writer_38_failed.exif
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 2.2 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:49-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:49-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:49-04:00
      +[File, System, Other] FileSize - File Size: 2.2 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:46-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:46-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: EXIF
       [File, File, Other] FileTypeExtension - File Type Extension: exif
      @@ -57,7 +57,7 @@
       [PrintIM, PrintIM, Printing] PrintIMVersion - PrintIM Version: 0250
       [PrintIM, PrintIM, Printing] 2 - Print IM 0x0002: 0x00000001
       [PrintIM, PrintIM, Printing] 257 - Print IM 0x0101: 0x00000000
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 7.1
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/250
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 14.3
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 12.5 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 7.1
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/250
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 14.3
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 12.5 mm
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_46.out libimage-exiftool-perl-12.40+dfsg/t/Writer_46.out
      --- libimage-exiftool-perl-11.88/t/Writer_46.out	2020-02-20 14:20:21.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_46.out	2021-10-16 16:50:49.000000000 +0000
      @@ -1,11 +1,11 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.88
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.33
       [File, System, Other] FileName - File Name: Writer_46_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 10 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:02:20 09:18:40-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2020:02:20 09:18:40-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:02:20 09:18:40-05:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 11 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:10:16 12:45:55-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:10:16 12:45:55-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:10:16 12:45:55-04:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
       [File, File, Other] MIMEType - MIME Type: image/jpeg
      @@ -37,13 +37,14 @@
       [IPTC, IPTC, Other] 152 - Audio Sampling Resolution: 07
       [IPTC, IPTC, Other] 153 - Audio Duration: 000007
       [IPTC, IPTC, Other] 154 - Audio Outcue: 7
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.88
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.33
       [XMP, XMP-Device, Camera] AppInfoApplication - App Info Application: 7
       [XMP, XMP-Device, Camera] AppInfoItemURI - App Info Item URI: 7
       [XMP, XMP-Device, Camera] AppInfoVersion - App Info Version: 7
       [XMP, XMP-GAudio, Audio] Data - Audio Data: (Binary data 1 bytes)
       [XMP, XMP-GAudio, Audio] Mime - Audio Mime Type: 7
       [XMP, XMP-getty, Image] AssetID - Asset ID: 7
      +[XMP, XMP-iptcCore, Other] AltTextAccessibility - Alt Text Accessibility: 7
       [XMP, XMP-iptcExt, Author] AboutCvTermCvId - About Cv Term Cv Id: 7
       [XMP, XMP-iptcExt, Author] AboutCvTermCvTermId - About Cv Term Id: 7
       [XMP, XMP-iptcExt, Author] AboutCvTermCvTermName - About Cv Term Name: 7
      @@ -112,7 +113,9 @@
       [XMP, XMP-crs, Image] AutoLateralCA - Auto Lateral CA: 7
       [XMP, XMP-crs, Image] AutoShadows - Auto Shadows: True
       [XMP, XMP-crs, Image] AutoTone - Auto Tone: True
      +[XMP, XMP-crs, Image] AutoToneDigest - Auto Tone Digest: 7
      +[XMP, XMP-crs, Image] AutoToneDigestNoSat - Auto Tone Digest No Sat: 7
       [XMP, XMP-crs, Image] AutoWhiteVersion - Auto White Version: 7
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 7.0
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 7.0
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_47.out libimage-exiftool-perl-12.40+dfsg/t/Writer_47.out
      --- libimage-exiftool-perl-11.88/t/Writer_47.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_47.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,7 +1,7 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Writer_47_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 2.7 kB
      +[File, System, Other] FileSize - File Size: 2.7 KiB
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_48.out libimage-exiftool-perl-12.40+dfsg/t/Writer_48.out
      --- libimage-exiftool-perl-11.88/t/Writer_48.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_48.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,6 +1,6 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 3.8 kB
      +[File, System, Other] FileSize - File Size: 3.8 KiB
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -21,11 +21,11 @@
       [IPTC, IPTC, Other] 25 - Keywords: A
       [IPTC, IPTC, Location] 90 - City: A
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-iptcExt, Location] LocationCreatedCity - Location Created City: A
       [XMP, XMP-dc, Image] subject - Subject: A
       [XMP, XMP-dc, Image] title - Title: A
       [XMP, XMP-exif, Camera] FlashFired - Flash Fired: True
      -[Composite, Composite, Camera] XMP::Flash - Flash: Fired
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] XMP-Flash - Flash: Fired
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_4.out libimage-exiftool-perl-12.40+dfsg/t/Writer_4.out
      --- libimage-exiftool-perl-11.88/t/Writer_4.out	2020-02-04 13:37:15.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_4.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,5 +1,5 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.86
      -[File, System, Other] FileSize - File Size: 7.6 kB
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
      +[File, System, Other] FileSize - File Size: 7.6 KiB
       [File, File, Other] FileType - File Type: TIFF
       [File, File, Other] FileTypeExtension - File Type Extension: tif
       [File, File, Other] MIMEType - MIME Type: image/tiff
      @@ -25,7 +25,7 @@
       [EXIF, IFD0, Image] 305 - Software: GraphicConverter
       [EXIF, IFD0, Time] 306 - Modify Date: 2004:02:20 08:07:49
       [EXIF, IFD0, Image] 317 - Predictor: None
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.86
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-photoshop, Image] SupplementalCategories - Supplemental Categories: new XMP info
       [IPTC, IPTC, Other] 0 - Application Record Version: 2
       [IPTC, IPTC, Other] 120 - Caption-Abstract: The picture caption
      @@ -83,5 +83,5 @@
       [ICC_Profile, ICC_Profile, Image] rTRC - Red Tone Reproduction Curve: (Binary data 2060 bytes)
       [ICC_Profile, ICC_Profile, Image] gTRC - Green Tone Reproduction Curve: (Binary data 2060 bytes)
       [ICC_Profile, ICC_Profile, Image] bTRC - Blue Tone Reproduction Curve: (Binary data 2060 bytes)
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 160x120
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.019
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 160x120
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.019
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_51.out libimage-exiftool-perl-12.40+dfsg/t/Writer_51.out
      --- libimage-exiftool-perl-11.88/t/Writer_51.out	2019-12-04 16:02:07.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_51.out	2021-07-09 14:38:45.000000000 +0000
      @@ -1,11 +1,12 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.29
      +[ExifTool, ExifTool, ExifTool] Warning - Warning: IPTCDigest is not current. XMP may be out of sync
       [File, System, Other] FileName - File Name: Writer_51_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 25 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 11:01:40-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 11:01:40-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 11:01:40-05:00
      -[File, System, Other] FilePermissions - File Permissions: rw-r--r--
      +[File, System, Other] FileSize - File Size: 25 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:07:09 10:31:15-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:07:09 10:31:15-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:07:09 10:31:15-04:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
       [File, File, Other] MIMEType - MIME Type: image/jpeg
      @@ -192,7 +193,7 @@
       [FlashPix, FlashPix, Other] 7 - Extension Description: Presized image for LCD display
       [FlashPix, FlashPix, Other] 4096 - Storage-Stream Pathname: /.Screen Nail_bd0100609719a180
       [FlashPix, FlashPix, Other] Screen Nail - Screen Nail: (Binary data 5917 bytes)
      -[FlashPix, FlashPix, Preview] FlashPix::PreviewImage - Preview Image: (Binary data 5777 bytes)
      +[FlashPix, FlashPix, Preview] FlashPix-PreviewImage - Preview Image: (Binary data 5777 bytes)
       [MPF, MPF0, Image] 45056 - MPF Version: 0100
       [MPF, MPF0, Image] 45057 - Number Of Images: 2
       [MPF, MPImage1, Image] 0.1 - MP Image Flags: Dependent parent image
      @@ -246,6 +247,21 @@
       [APP11, JPEG-HDR, Image] bet - Beta: 1.000000
       [APP11, JPEG-HDR, Image] cor - Correction Method: 0
       [APP11, JPEG-HDR, Preview] RatioImage - Ratio Image: (Binary data 19 bytes)
      +[JUMBF, JUMBF, Image] type - JUMD Type: (cacb)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai
      +[JUMBF, JUMBF, Image] type - JUMD Type: (cast)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: cb.reuters_1
      +[JUMBF, JUMBF, Image] type - JUMD Type: (caas)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai.assertions
      +[JUMBF, JUMBF, Image] type - JUMD Type: (json)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: adobe.asset.info
      +[JUMBF, JSON, Other] title - Title: HEALTHCORONAVIRUSUSAOREGON_SALEM_08.jpg
      +[JUMBF, JUMBF, Image] type - JUMD Type: (json)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai.location.broad
      +[JUMBF, JSON, Other] location - Location: Salem, Oregon
      +[JUMBF, JUMBF, Image] type - JUMD Type: (json)-0011-0010-800000aa00389b71
      +[JUMBF, JUMBF, Image] label - JUMD Label: cai.rights
      +[JUMBF, JSON, Other] copyright - Copyright: Alisha Jucevic
       [APP12, PictureInfo, Time] TimeDate - Date/Time Original: 1998:12:31 15:17:20
       [APP12, PictureInfo, Image] Shutter - Exposure Time: 1/155
       [APP12, PictureInfo, Image] Flash - Flash: Off
      @@ -402,13 +418,13 @@
       [FotoStation, FotoStation, Image] 8 - Crop Right: 30.676%
       [FotoStation, FotoStation, Image] 9 - Crop Bottom: 86.25%
       [FotoStation, FotoStation, Image] 11 - Crop Rotation: 0
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/155
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 10.9
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.9
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.004 mm
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 47.0 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.0 mm (35 mm equivalent: 41.4 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 2.36 m
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/155
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 10.9
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 6.9
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.004 mm
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 47.0 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.0 mm (35 mm equivalent: 41.4 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 2.36 m
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_53.out libimage-exiftool-perl-12.40+dfsg/t/Writer_53.out
      --- libimage-exiftool-perl-11.88/t/Writer_53.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_53.out	2021-02-03 13:11:26.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.17
       [File, System, Other] FileName - File Name: Writer_53_failed.xmp
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 3.6 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:50-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:50-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:50-04:00
      +[File, System, Other] FileSize - File Size: 3.6 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:02:02 11:30:53-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:02:02 11:30:53-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:02:02 11:30:53-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -25,11 +25,12 @@
       [EXIF, ExifIFD, Image] 37121 - Components Configuration: Y, Cb, Cr, -
       [EXIF, ExifIFD, Image] 40960 - Flashpix Version: 0100
       [EXIF, ExifIFD, Image] 40961 - Color Space: Uncalibrated
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.17
       [XMP, XMP-aux, Camera] Lens - Lens: 18.0 - 55.0 mm
       [XMP, XMP-tiff, Image] BitsPerSample - Bits Per Sample: 8
       [XMP, XMP-tiff, Image] ImageLength - Image Height: 8
       [XMP, XMP-tiff, Image] ImageWidth - Image Width: 8
       [XMP, XMP-tiff, Image] YCbCrSubSampling - Y Cb Cr Sub Sampling: YCbCr4:2:0 (2 2)
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-LensID-2 - Lens ID: 18.0-55.0mm
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_58.out libimage-exiftool-perl-12.40+dfsg/t/Writer_58.out
      --- libimage-exiftool-perl-11.88/t/Writer_58.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_58.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [File, System, Other] FileName - File Name: Writer_58_failed.jpg
       [File, System, Other] Directory - Directory: t
       [File, System, Other] FileSize - File Size: 761 bytes
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:51-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:51-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:51-04:00
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:07:29 09:04:26-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:07:29 09:04:26-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:07:29 09:04:26-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -40,5 +40,5 @@
       [ICC_Profile, ICC_Profile, Image] bTRC - Blue Tone Reproduction Curve: (Binary data 14 bytes)
       [ICC_Profile, ICC_Profile, Image] wtpt - Media White Point: 0.9505 1 1.0891
       [ICC_Profile, ICC_Profile, Image] cprt - Profile Copyright: Nikon Inc. & Nikon Corporation 2001
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_6.out libimage-exiftool-perl-12.40+dfsg/t/Writer_6.out
      --- libimage-exiftool-perl-11.88/t/Writer_6.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_6.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Writer_6_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 5.7 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:47-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:47-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:47-04:00
      +[File, System, Other] FileSize - File Size: 5.7 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:45-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:45-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:45-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -161,26 +161,26 @@
       [MakerNotes, Canon, Camera] 0 - Canon 0x0000: 0 0 0 0 0 0 3072000 892 2048000 595 65540 262146
       [IPTC, IPTC, Other] 15 - Category: IPT
       [IPTC, IPTC, Other] 0 - Application Record Version: 4
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dc, Image] description - Description: New description
       [XMP, XMP-exif, Camera] Contrast - Contrast: High
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Continuous Shooting
      -[Composite, Composite, Camera] Canon::ISO - ISO: 100
      -[Composite, Composite, Camera] Canon::Lens - Lens: 18.0 - 55.0 mm
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Bulb
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 1719 832 831 990
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 14.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 4
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.190619
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Unknown 18-55mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 5.6
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.067348
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 28.6 - 87.4 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: inf (4.31 m - inf)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 36.9 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 34.0 mm (35 mm equivalent: 54.0 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 4.37 m
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Continuous Shooting
      +[Composite, Composite, Camera] Canon-ISO - ISO: 100
      +[Composite, Composite, Camera] Canon-Lens - Lens: 18.0 - 55.0 mm
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Bulb
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 1719 832 831 990
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 14.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 4
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.190619
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Unknown 18-55mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 5.6
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.067348
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 28.6 - 87.4 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: inf (4.31 m - inf)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 36.9 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 34.0 mm (35 mm equivalent: 54.0 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 4.37 m
      diff -Nru libimage-exiftool-perl-11.88/t/Writer_9.out libimage-exiftool-perl-12.40+dfsg/t/Writer_9.out
      --- libimage-exiftool-perl-11.88/t/Writer_9.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer_9.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: Writer_9_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 10.0 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:47-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:47-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:47-04:00
      +[File, System, Other] FileSize - File Size: 10.0 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:45-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:45-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:45-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -71,7 +71,7 @@
       [EXIF, IFD1, Image] 296 - Resolution Unit: inches
       [EXIF, IFD1, Image] 513 - Thumbnail Offset: 2436
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 28
      -[EXIF, IFD1, Preview] Exif::ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
      +[EXIF, IFD1, Preview] Exif-ThumbnailImage - Thumbnail Image: (Binary data 28 bytes)
       [MakerNotes, Canon, Camera] 1 - Macro Mode: Unknown (0)
       [MakerNotes, Canon, Camera] 2 - Self Timer: Off
       [MakerNotes, Canon, Camera] 3 - Quality: RAW
      @@ -164,7 +164,7 @@
       [MakerNotes, Canon, Camera] 9 - AF Area Y Positions: 0 0 -506 0 506 0 0
       [MakerNotes, Canon, Camera] 10 - AF Points In Focus: (none)
       [MakerNotes, Canon, Camera] 19 - Thumbnail Image Valid Area: 0 159 7 112
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-aux, Camera] Lens - Lens: 18.0 - 55.0 mm
       [XMP, XMP-exif, Image] ComponentsConfiguration - Components Configuration: Y, Cb, Cr, -
       [XMP, XMP-exif, Image] CompressedBitsPerPixel - Compressed Bits Per Pixel: 9
      @@ -220,24 +220,24 @@
       [ICC_Profile, ICC_Profile, Image] rTRC - Red Tone Reproduction Curve: (Binary data 2060 bytes)
       [ICC_Profile, ICC_Profile, Image] gTRC - Green Tone Reproduction Curve: (Binary data 2060 bytes)
       [ICC_Profile, ICC_Profile, Image] bTRC - Blue Tone Reproduction Curve: (Binary data 2060 bytes)
      -[Composite, Composite, Camera] Canon::DriveMode - Drive Mode: Continuous Shooting
      -[Composite, Composite, Camera] Canon::ISO - ISO: 100
      -[Composite, Composite, Camera] Canon::Lens - Lens: 18.0 - 55.0 mm
      -[Composite, Composite, Camera] Canon::ShootingMode - Shooting Mode: Bulb
      -[Composite, Composite, Camera] Canon::WB_RGGBLevels - WB RGGB Levels: 1719 832 831 990
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 14.0
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 4
      -[Composite, Composite, Camera] XMP::Flash - Flash: No Flash
      -[Composite, Composite, Camera] Exif::BlueBalance - Blue Balance: 1.190619
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Camera] Exif::LensID - Lens ID: Unknown 18-55mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 5.6
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::RedBalance - Red Balance: 2.067348
      -[Composite, Composite, Camera] Exif::ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      -[Composite, Composite, Camera] Canon::Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 27.9 - 85.3 mm)
      -[Composite, Composite, Camera] Exif::CircleOfConfusion - Circle Of Confusion: 0.019 mm
      -[Composite, Composite, Image] Exif::DOF - Depth Of Field: inf (4.21 m - inf)
      -[Composite, Composite, Image] Exif::FOV - Field Of View: 37.7 deg
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 34.0 mm (35 mm equivalent: 52.7 mm)
      -[Composite, Composite, Camera] Exif::HyperfocalDistance - Hyperfocal Distance: 4.26 m
      +[Composite, Composite, Camera] Canon-DriveMode - Drive Mode: Continuous Shooting
      +[Composite, Composite, Camera] Canon-ISO - ISO: 100
      +[Composite, Composite, Camera] Canon-Lens - Lens: 18.0 - 55.0 mm
      +[Composite, Composite, Camera] Canon-ShootingMode - Shooting Mode: Bulb
      +[Composite, Composite, Camera] Canon-WB_RGGBLevels - WB RGGB Levels: 1719 832 831 990
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 14.0
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 4
      +[Composite, Composite, Camera] XMP-Flash - Flash: No Flash
      +[Composite, Composite, Camera] Exif-BlueBalance - Blue Balance: 1.190619
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Camera] Exif-LensID - Lens ID: Unknown 18-55mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 5.6
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-RedBalance - Red Balance: 2.067348
      +[Composite, Composite, Camera] Exif-ScaleFactor35efl - Scale Factor To 35 mm Equivalent: 1.6
      +[Composite, Composite, Camera] Canon-Lens35efl - Lens: 18.0 - 55.0 mm (35 mm equivalent: 27.9 - 85.3 mm)
      +[Composite, Composite, Camera] Exif-CircleOfConfusion - Circle Of Confusion: 0.019 mm
      +[Composite, Composite, Image] Exif-DOF - Depth Of Field: inf (4.21 m - inf)
      +[Composite, Composite, Image] Exif-FOV - Field Of View: 37.7 deg
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 34.0 mm (35 mm equivalent: 52.7 mm)
      +[Composite, Composite, Camera] Exif-HyperfocalDistance - Hyperfocal Distance: 4.26 m
      diff -Nru libimage-exiftool-perl-11.88/t/Writer.t libimage-exiftool-perl-12.40+dfsg/t/Writer.t
      --- libimage-exiftool-perl-11.88/t/Writer.t	2019-10-15 13:10:06.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/Writer.t	2020-11-27 16:34:41.000000000 +0000
      @@ -544,7 +544,7 @@
           $exifTool->SetNewValue('IPTC:*', undef, Replace => 2);
           $testfile = "t/${testname}_${testnum}_failed.jpg";
           unlink $testfile;
      -    writeInfo($exifTool, 't/images/ExifTool.jpg', $testfile);
      +    writeInfo($exifTool, 't/images/ExifTool.jpg', $testfile, undef, 1);
           my $info = $exifTool->ImageInfo($testfile);
           if (check($exifTool, $info, $testname, $testnum)) {
               unlink $testfile;
      diff -Nru libimage-exiftool-perl-11.88/t/WTV_2.out libimage-exiftool-perl-12.40+dfsg/t/WTV_2.out
      --- libimage-exiftool-perl-11.88/t/WTV_2.out	2019-12-04 15:47:34.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/WTV_2.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: WTV.wtv
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 7.5 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2018:06:04 08:49:23-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Other] FileSize - File Size: 7.5 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2018:06:04 16:11:36-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:48-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2018:06:04 16:11:36-04:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: WTV
       [File, File, Other] FileTypeExtension - File Type Extension: wtv
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_10.out libimage-exiftool-perl-12.40+dfsg/t/XMP_10.out
      --- libimage-exiftool-perl-11.88/t/XMP_10.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_10.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: XMP3.xmp
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.3 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 10:11:06-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 10:11:48-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 10:11:06-05:00
      +[File, System, Other] FileSize - File Size: 2.3 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 21:22:58-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: XMP
       [File, File, Other] FileTypeExtension - File Type Extension: xmp
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_24.out libimage-exiftool-perl-12.40+dfsg/t/XMP_24.out
      --- libimage-exiftool-perl-11.88/t/XMP_24.out	2019-12-04 16:02:07.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_24.out	2020-07-29 19:18:20.000000000 +0000
      @@ -1,4 +1,4 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.03
       [XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 4.73
       [XMP, XMP-rdf, Document] about - About: uuid:80056b68-1045-fa97-3401-6f4ed84cd53d
       [XMP, XMP-dc, Author] creator - Creator: Phil Harvey
      @@ -28,5 +28,5 @@
       [APP14, Adobe, Image] 1 - APP14 Flags 0: (none)
       [APP14, Adobe, Image] 2 - APP14 Flags 1: (none)
       [APP14, Adobe, Image] 3 - Color Transform: YCbCr
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_26.out libimage-exiftool-perl-12.40+dfsg/t/XMP_26.out
      --- libimage-exiftool-perl-11.88/t/XMP_26.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_26.out	2021-05-20 23:47:54.000000000 +0000
      @@ -2,18 +2,18 @@
       
       
       
      - 
      + 
         
          
      -    
      -    
      +    
      +    
          
         
        
       
      - 
         http://ns.useplus.org/ldf/vocab/CS-PUB
         
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_27.out libimage-exiftool-perl-12.40+dfsg/t/XMP_27.out
      --- libimage-exiftool-perl-11.88/t/XMP_27.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_27.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: XMP.xml
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 6.0 kB
      +[File, System, Other] FileSize - File Size: 6.0 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2009:03:03 13:49:24-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:30-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: XMP
       [File, File, Other] FileTypeExtension - File Type Extension: xmp
      @@ -88,8 +88,8 @@
       [MakerNotes, Nikon, Unknown] Nikon:AFPointsInFocus - AF Points In Focus: (none)
       [MakerNotes, Nikon, Unknown] Nikon:SceneMode - Scene Mode: 
       [MakerNotes, Nikon, Unknown] Nikon:DataDump - Data Dump: (Binary data 122 bytes)
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 9.4
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/213
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 8.6 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 9.4
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/213
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 8.6 mm
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_28.out libimage-exiftool-perl-12.40+dfsg/t/XMP_28.out
      --- libimage-exiftool-perl-11.88/t/XMP_28.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_28.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: XMP_28_failed.xml
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 3.0 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:52-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:52-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:52-04:00
      +[File, System, Other] FileSize - File Size: 3.0 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:49-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: XMP
       [File, File, Other] FileTypeExtension - File Type Extension: xmp
      @@ -42,5 +42,5 @@
       [EXIF, IFD1, Unknown] IFD1:YResolution - Y Resolution: 300
       [EXIF, InteropIFD, Unknown] InteropIFD:InteropIndex - Interop Index: R98 - DCF basic file (sRGB)
       [EXIF, InteropIFD, Unknown] InteropIFD:InteropVersion - Interop Version: 0100
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_29.out libimage-exiftool-perl-12.40+dfsg/t/XMP_29.out
      --- libimage-exiftool-perl-11.88/t/XMP_29.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_29.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: XMP_29_failed.jpg
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 3.2 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:52-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:52-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:52-04:00
      +[File, System, Other] FileSize - File Size: 3.2 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:49-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -15,12 +15,12 @@
       [File, File, Image] BitsPerSample - Bits Per Sample: 8
       [File, File, Image] ColorComponents - Color Components: 3
       [File, File, Image] YCbCrSubSampling - Y Cb Cr Sub Sampling: YCbCr4:2:0 (2 2)
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-pdf, Author] Author - Author: Test
       [XMP, XMP-pdf, Time] CreationDate - Creation Date: 2008:10:20 19:54:15
       [XMP, XMP-pdf, Author] Creator - Creator: Guess Who
       [XMP, XMP-pdf, Time] ModDate - Mod Date: 2008:10:20 19:54:15
       [XMP, XMP-pdf, Author] Producer - Producer: Just ExifTool again
       [XMP, XMP-pdf, Image] Title - Title: PDF Title
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_2.out libimage-exiftool-perl-12.40+dfsg/t/XMP_2.out
      --- libimage-exiftool-perl-11.88/t/XMP_2.out	2019-12-04 16:02:07.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_2.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: XMP.jpg
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 10 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 11:00:48-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 11:01:39-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 11:00:48-05:00
      +[File, System, Other] FileSize - File Size: 10 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 21:22:58-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:48-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 21:22:58-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
      @@ -132,9 +132,9 @@
       [APP14, Adobe, Image] 1 - APP14 Flags 0: (none)
       [APP14, Adobe, Image] 2 - APP14 Flags 1: (none)
       [APP14, Adobe, Image] 3 - Color Transform: YCbCr
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.0 mm
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.6
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.0 mm
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.6
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_31.out libimage-exiftool-perl-12.40+dfsg/t/XMP_31.out
      --- libimage-exiftool-perl-11.88/t/XMP_31.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_31.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: XMP4.xmp
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 2.4 kB
      +[File, System, Other] FileSize - File Size: 2.4 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2009:05:24 11:19:39-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: XMP
       [File, File, Other] FileTypeExtension - File Type Extension: xmp
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_36.out libimage-exiftool-perl-12.40+dfsg/t/XMP_36.out
      --- libimage-exiftool-perl-11.88/t/XMP_36.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_36.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: XMP5.xmp
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 4.6 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2015:04:11 08:20:05-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:52-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Other] FileSize - File Size: 4.6 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2015:04:11 07:17:32-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: XMP
       [File, File, Other] FileTypeExtension - File Type Extension: xmp
      @@ -16,4 +16,4 @@
       [XMP, XMP-mwg-rs, Image] Regions - Region Info: {RegionList=[{Area={H=8,W=8,X=0,Y=0},Name=Region 1,SeeAlso=plus:Licensee,Type=Face},{Extensions={XMP-exif:Flash={Mode=On,Return=Return not detected},XMP-iptcExt:ArtworkOrObject=[{AOTitle-de=verfänglich}],XMP-myXMPns:BTestTag={Field1=[this is wild]},XMP-xmpRights:UsageTerms-fr=libre}}]}
       [XMP, XMP-myXMPns, Other] BTestTag - B Test Tag: {Field1-en-CA=[eh?],Field1-en-US=[huh?,groovy],Field1-fr=[,ingénieux]}
       [XMP, XMP-plus, Author] Licensee - Licensee: [{LicenseeName=Phil}]
      -[Composite, Composite, Camera] XMP::Flash - Flash: Off, Did not fire
      +[Composite, Composite, Camera] XMP-Flash - Flash: Off, Did not fire
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_37.out libimage-exiftool-perl-12.40+dfsg/t/XMP_37.out
      --- libimage-exiftool-perl-11.88/t/XMP_37.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_37.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: XMP5.xmp
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 4.6 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2015:04:11 08:20:05-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:52-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Other] FileSize - File Size: 4.6 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2015:04:11 07:17:32-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: XMP
       [File, File, Other] FileTypeExtension - File Type Extension: xmp
      @@ -33,4 +33,4 @@
       [XMP, XMP-myXMPns, Other] BTestTagField1-en-US - Renamed (en-US): huh?, groovy
       [XMP, XMP-myXMPns, Other] BTestTagField1-fr - Renamed (fr): ingénieux
       [XMP, XMP-plus, Author] LicenseeLicenseeName - Licensee Name: Phil
      -[Composite, Composite, Camera] XMP::Flash - Flash: Off, Did not fire
      +[Composite, Composite, Camera] XMP-Flash - Flash: Off, Did not fire
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_39.out libimage-exiftool-perl-12.40+dfsg/t/XMP_39.out
      --- libimage-exiftool-perl-11.88/t/XMP_39.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_39.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: XMP.inx
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 6.2 kB
      +[File, System, Other] FileSize - File Size: 6.2 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2011:11:25 11:38:08-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: INX
       [File, File, Other] FileTypeExtension - File Type Extension: inx
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_3.out libimage-exiftool-perl-12.40+dfsg/t/XMP_3.out
      --- libimage-exiftool-perl-11.88/t/XMP_3.out	2019-12-04 16:02:07.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_3.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,5 +1,5 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      -[File, System, Other] FileSize - File Size: 9.9 kB
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
      +[File, System, Other] FileSize - File Size: 9.9 KiB
       [File, File, Other] FileType - File Type: JPEG
       [File, File, Other] FileTypeExtension - File Type Extension: jpg
       [File, File, Other] MIMEType - MIME Type: image/jpeg
      @@ -61,7 +61,7 @@
       [EXIF, IFD1, Image] 514 - Thumbnail Length: 0
       [IPTC, IPTC, Other] 90 - Coded Character Set: UTF8
       [IPTC, IPTC, Other] 0 - Envelope Record Version: 4
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.78
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-rdf, Document] about - About: uuid:80056b68-1045-fa97-3401-6f4ed84cd53d
       [XMP, XMP-iptcCore, Author] CreatorContactInfoCiAdrCtry - Creator Country: Canada
       [XMP, XMP-dc, Author] creator - Creator: Phil Harvey-v2
      @@ -130,9 +130,9 @@
       [APP14, Adobe, Image] 1 - APP14 Flags 0: (none)
       [APP14, Adobe, Image] 2 - APP14 Flags 1: (none)
       [APP14, Adobe, Image] 3 - Color Transform: YCbCr
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 4.9
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 10.4
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.0 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 4.9
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 10.4
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.0 mm
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_41.out libimage-exiftool-perl-12.40+dfsg/t/XMP_41.out
      --- libimage-exiftool-perl-11.88/t/XMP_41.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_41.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,15 +1,15 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: XMP_41_failed.xmp
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 13 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:11:01 10:15:53-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:11:01 10:15:53-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:11:01 10:15:53-04:00
      +[File, System, Other] FileSize - File Size: 13 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:50-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:50-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: XMP
       [File, File, Other] FileTypeExtension - File Type Extension: xmp
       [File, File, Other] MIMEType - MIME Type: application/rdf+xml
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.75
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dwc, Time] EventDay - Event Day: 2013
       [XMP, XMP-dwc, Time] EventEarliestDate - Event Earliest Date: 2013
       [XMP, XMP-dwc, Time] EventEndDayOfYear - Event End Day Of Year: 2013
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_5.out libimage-exiftool-perl-12.40+dfsg/t/XMP_5.out
      --- libimage-exiftool-perl-11.88/t/XMP_5.out	2019-12-04 16:02:07.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_5.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,5 +1,5 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      -[File, System, Other] FileSize - File Size: 5.8 kB
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
      +[File, System, Other] FileSize - File Size: 5.8 KiB
       [File, File, Other] FileType - File Type: XMP
       [File, File, Other] FileTypeExtension - File Type Extension: xmp
       [File, File, Other] MIMEType - MIME Type: application/rdf+xml
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_6.out libimage-exiftool-perl-12.40+dfsg/t/XMP_6.out
      --- libimage-exiftool-perl-11.88/t/XMP_6.out	2019-12-04 16:02:07.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_6.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,15 +1,15 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.78
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: XMP_6_failed.xmp
       [File, System, Other] Directory - Directory: t
      -[File, System, Other] FileSize - File Size: 5.7 kB
      -[File, System, Time] FileModifyDate - File Modification Date/Time: 2019:12:04 11:01:42-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:12:04 11:01:42-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:12:04 11:01:42-05:00
      +[File, System, Other] FileSize - File Size: 5.7 KiB
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:49-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:11:26 10:02:49-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: XMP
       [File, File, Other] FileTypeExtension - File Type Extension: xmp
       [File, File, Other] MIMEType - MIME Type: application/rdf+xml
      -[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 11.78
      +[XMP, XMP-x, Document] xmptk - XMP Toolkit: Image::ExifTool 12.11
       [XMP, XMP-dc, Author] creator - Creator: Phil Harvey
       [XMP, XMP-dc, Image] description - Description: UTF-16 (big-endian) encoded XMP
       [XMP, XMP-dc, Author] rights - Rights: Copyright 2004 Phil Harvey
      @@ -80,10 +80,10 @@
       [XMP, XMP-xmpMM, Other] DocumentID - Document ID: adobe:docid:photoshop:4cc7b857-69d0-11d8-8ac4-bb59c92f0d9a
       [XMP, XMP-xmpRights, Author] Marked - Marked: False
       [XMP, XMP-xmpRights, Author] WebStatement - Web Statement: https://exiftool.org/
      -[Composite, Composite, Image] Exif::Aperture - Aperture: 3.5
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/64
      -[Composite, Composite, Camera] XMP::Flash - Flash: Fired
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 8x8
      -[Composite, Composite, Image] Exif::LightValue - Light Value: 9.6
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 0.000064
      -[Composite, Composite, Camera] Exif::FocalLength35efl - Focal Length: 6.0 mm
      +[Composite, Composite, Image] Exif-Aperture - Aperture: 3.5
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/64
      +[Composite, Composite, Camera] XMP-Flash - Flash: Fired
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 8x8
      +[Composite, Composite, Image] Exif-LightValue - Light Value: 9.6
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 0.000064
      +[Composite, Composite, Camera] Exif-FocalLength35efl - Focal Length: 6.0 mm
      diff -Nru libimage-exiftool-perl-11.88/t/XMP_8.out libimage-exiftool-perl-12.40+dfsg/t/XMP_8.out
      --- libimage-exiftool-perl-11.88/t/XMP_8.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP_8.out	2021-02-03 13:11:26.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.17
       [File, System, Other] FileName - File Name: XMP2.xmp
       [File, System, Other] Directory - Directory: t/images
       [File, System, Other] FileSize - File Size: 890 bytes
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2006:09:01 09:59:28-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:30-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:02:02 11:30:54-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: XMP
       [File, File, Other] FileTypeExtension - File Type Extension: xmp
      @@ -15,5 +15,6 @@
       [XMP, XMP-tiff, Image] ImageLength - Image Height: 2048
       [XMP, XMP-tiff, Image] ImageWidth - Image Width: 3072
       [XMP, XMP-dc, Image] subject - Subject: ExifTool, XMP, nodeID, test
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 3072x2048
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 6.3
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 3072x2048
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 6.3
      +[Composite, Composite, Camera] Exif-LensID-2 - Lens ID: 18.0-55.0mm
      diff -Nru libimage-exiftool-perl-11.88/t/XMP.t libimage-exiftool-perl-12.40+dfsg/t/XMP.t
      --- libimage-exiftool-perl-11.88/t/XMP.t	2019-10-25 14:09:05.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/XMP.t	2021-05-20 23:47:54.000000000 +0000
      @@ -21,7 +21,7 @@
       use vars %Image::ExifTool::UserDefined::myXMPns;    # avoid "typo" warning
       %Image::ExifTool::UserDefined::myXMPns = (
           GROUPS    => { 0 => 'XMP', 1 => 'XMP-myXMPns'},
      -    NAMESPACE => { 'myXMPns' => 'http://ns.exiftool.ca/t/XMP.t' },
      +    NAMESPACE => { 'myXMPns' => 'http://ns.exiftool.org/t/XMP.t' },
           WRITABLE  => 'string',
           ATestTag  => { List => 'Bag', Resource => 1 },
           BTestTag  => {
      @@ -262,7 +262,7 @@
               [ 'xmp-xmprights:all' => undef, Replace => 2 ],
           );
           print 'not ' unless writeCheck(\@writeInfo, $testname, $testnum,
      -                                   't/images/XMP.jpg', ['XMP:all']);
      +                                   't/images/XMP.jpg', ['XMP:all'], undef, 1);
           print "ok $testnum\n";
       }
       
      @@ -274,7 +274,7 @@
               [ 'xmp:all' => undef, Replace => 2 ],
           );
           print 'not ' unless writeCheck(\@writeInfo, $testname, $testnum,
      -                                   't/images/XMP.jpg', ['-file:all']);
      +                                   't/images/XMP.jpg', ['-file:all'], undef, 1);
           print "ok $testnum\n";
       }
       
      @@ -296,7 +296,7 @@
           unlink $testfile;
           my @writeInfo = (
               [ 'XMP-x:XMPToolkit' => "What's this?", Protected => 1 ],
      -        [ 'XMP-rdf:About' => "http://www.exiftool.ca/t/$testname.t#$testnum", Protected => 1 ],
      +        [ 'XMP-rdf:About' => "http://www.exiftool.org/t/$testname.t#$testnum", Protected => 1 ],
               [ 'XMP:ImageType' => 'Video' ],
               [ 'LicenseeImageNotes-en' => 'english notes' ],
               [ 'LicenseeImageNotes-de' => 'deutsche anmerkungen' ],
      @@ -305,8 +305,8 @@
               [ 'CopyrightStatus' => 'public' ],
               [ 'Custom1-en' => 'a' ],
               [ 'Custom1-en' => 'b' ],
      -        [ 'ATestTag' => "http://www.exiftool.ca/t/$testname.t#$testnum-one" ],
      -        [ 'ATestTag' => "http://www.exiftool.ca/t/$testname.t#$testnum-two" ],
      +        [ 'ATestTag' => "http://www.exiftool.org/t/$testname.t#$testnum-one" ],
      +        [ 'ATestTag' => "http://www.exiftool.org/t/$testname.t#$testnum-two" ],
           );
           $exifTool->SetNewValue(@$_) foreach @writeInfo;
           my $ok = writeInfo($exifTool, undef, $testfile);
      diff -Nru libimage-exiftool-perl-11.88/t/ZIP_4.out libimage-exiftool-perl-12.40+dfsg/t/ZIP_4.out
      --- libimage-exiftool-perl-11.88/t/ZIP_4.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ZIP_4.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: OOXML.docx
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 7.3 kB
      +[File, System, Other] FileSize - File Size: 7.3 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2009:11:04 13:25:05-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:50-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: DOCX
       [File, File, Other] FileTypeExtension - File Type Extension: docx
      diff -Nru libimage-exiftool-perl-11.88/t/ZIP_5.out libimage-exiftool-perl-12.40+dfsg/t/ZIP_5.out
      --- libimage-exiftool-perl-11.88/t/ZIP_5.out	2020-02-04 13:37:15.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ZIP_5.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.86
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: CaptureOne.eip
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 5.3 kB
      +[File, System, Other] FileSize - File Size: 5.3 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2009:11:04 08:41:15-05:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2020:02:04 08:35:38-05:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:01:28 10:35:42-05:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:50-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: EIP
       [File, File, Other] FileTypeExtension - File Type Extension: eip
      @@ -131,6 +131,6 @@
       [XML, XML, Image] Crop - Crop: 2087.088867;1690.806274;3868.893555;3158.520264
       [XML, XML, Image] NRAmount - NR Amount: 18.59756112098694
       [XML, XML, Image] Rating - Rating: 3
      -[Composite, Composite, Image] Exif::ImageSize - Image Size: 4490x3364
      -[Composite, Composite, Image] Exif::Megapixels - Megapixels: 15.1
      -[Composite, Composite, Image] Exif::ShutterSpeed - Shutter Speed: 1/15
      +[Composite, Composite, Image] Exif-ImageSize - Image Size: 4490x3364
      +[Composite, Composite, Image] Exif-Megapixels - Megapixels: 15.1
      +[Composite, Composite, Image] Exif-ShutterSpeed - Shutter Speed: 1/15
      diff -Nru libimage-exiftool-perl-11.88/t/ZIP_7.out libimage-exiftool-perl-12.40+dfsg/t/ZIP_7.out
      --- libimage-exiftool-perl-11.88/t/ZIP_7.out	2019-12-04 15:47:35.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ZIP_7.out	2020-11-27 16:34:41.000000000 +0000
      @@ -1,10 +1,10 @@
      -[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 11.75
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.11
       [File, System, Other] FileName - File Name: OpenDoc.ods
       [File, System, Other] Directory - Directory: t/images
      -[File, System, Other] FileSize - File Size: 6.9 kB
      +[File, System, Other] FileSize - File Size: 6.9 KiB
       [File, System, Time] FileModifyDate - File Modification Date/Time: 2010:05:13 10:39:54-04:00
      -[File, System, Time] FileAccessDate - File Access Date/Time: 2019:10:31 14:56:46-04:00
      -[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2019:10:29 08:21:01-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2020:11:26 10:02:50-05:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2017:12:27 12:00:59-05:00
       [File, System, Other] FilePermissions - File Permissions: rw-r--r--
       [File, File, Other] FileType - File Type: ODS
       [File, File, Other] FileTypeExtension - File Type Extension: ods
      diff -Nru libimage-exiftool-perl-11.88/t/ZISRAW_2.out libimage-exiftool-perl-12.40+dfsg/t/ZISRAW_2.out
      --- libimage-exiftool-perl-11.88/t/ZISRAW_2.out	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ZISRAW_2.out	2021-06-22 19:11:59.000000000 +0000
      @@ -0,0 +1,42 @@
      +[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.28
      +[File, System, Other] FileName - File Name: ZISRAW.czi
      +[File, System, Other] Directory - Directory: t/images
      +[File, System, Other] FileSize - File Size: 1856 bytes
      +[File, System, Time] FileModifyDate - File Modification Date/Time: 2020:08:07 09:52:14-04:00
      +[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:30 09:16:33-04:00
      +[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2020:08:10 09:43:20-04:00
      +[File, System, Other] FilePermissions - File Permissions: -rw-r--r--
      +[File, File, Other] FileType - File Type: CZI
      +[File, File, Other] FileTypeExtension - File Type Extension: czi
      +[File, File, Other] MIMEType - MIME Type: image/x-zeiss-czi
      +[File, File, Image] 32 - ZISRAW Version: 1.0
      +[File, File, Image] 48 - Primary File GUID: 8fae1a521bc8714e97e12b82ec8fa652
      +[File, File, Image] 64 - File GUID: 8fae1a521bc8714e97e12b82ec8fa652
      +[XML, XML, Image] XML - XML: (Binary data 1003 bytes)
      +[XML, XML, Unknown] HardwareSettingMicroscopeId - Microscope Id: Microscope
      +[XML, XML, Unknown] HardwareSettingMicroscopeName - Microscope Name: Axio Observer.Z1
      +[XML, XML, Unknown] HardwareSettingMicroscopeUniqueName - Microscope Unique Name: AquilaZ.Stand
      +[XML, XML, Unknown] HardwareSettingMicroscopeModel - Microscope Model: 
      +[XML, XML, Unknown] HardwareSettingMicroscopeIsAvailable - Microscope Is Available: true
      +[XML, XML, Unknown] HardwareSettingMicroscopeIsBroken - Microscope Is Broken: false
      +[XML, XML, Unknown] HardwareSettingMicroscopeIsBrokenReason - Microscope Is Broken Reason: 
      +[XML, XML, Unknown] HardwareSettingMicroscopeMotorization - Microscope Motorization: Motorized
      +[XML, XML, Unknown] HardwareSettingMicroscopeIsLightSource - Microscope Is Light Source: false
      +[XML, XML, Unknown] HardwareSettingMicroscopeIsLightSink - Microscope Is Light Sink: false
      +[XML, XML, Unknown] HardwareSettingMicroscopeStandSpecification - Microscope Stand Specification: Inverted
      +[XML, XML, Unknown] HardwareSettingMicroscopeDevicesDeviceRefId - Microscope Device Ref Id: MTBCameraAdapter_MTBSideportChanger_Left
      +[XML, XML, Unknown] HardwareSettingEyePieceId - Eye Piece Id: MTBEyePiece
      +[XML, XML, Unknown] HardwareSettingEyePieceName - Eye Piece Name: 10x Eyepiece SF23
      +[XML, XML, Unknown] HardwareSettingEyePieceUniqueName - Eye Piece Unique Name: Eyepiece.10x_23
      +[XML, XML, Unknown] HardwareSettingEyePieceModel - Eye Piece Model: 
      +[XML, XML, Unknown] HardwareSettingEyePieceIsAvailable - Eye Piece Is Available: true
      +[XML, XML, Unknown] HardwareSettingEyePieceIsBroken - Eye Piece Is Broken: false
      +[XML, XML, Unknown] HardwareSettingEyePieceIsBrokenReason - Eye Piece Is Broken Reason: 
      +[XML, XML, Unknown] HardwareSettingEyePieceMotorization - Eye Piece Motorization: None
      +[XML, XML, Unknown] HardwareSettingEyePieceIsLightSource - Eye Piece Is Light Source: false
      +[XML, XML, Unknown] HardwareSettingEyePieceIsLightSink - Eye Piece Is Light Sink: false
      +[XML, XML, Unknown] HardwareSettingEyePieceMagnification - Eye Piece Mag: 10
      +[XML, XML, Unknown] HardwareSettingEyePieceTotalMagnification - Eye Piece Total Mag: 400
      +[XML, XML, Unknown] HardwareSettingEyePieceDepthOfField - Eye Piece Depth Of Field: 0.487202380952381
      +[XML, XML, Unknown] HardwareSettingEyePieceFieldOfView - Eye Piece Field Of View: 23
      +[XML, XML, Unknown] HardwareSettingEyePieceTotalFieldOfView - Eye Piece Total Field Of View: 0.575
      diff -Nru libimage-exiftool-perl-11.88/t/ZISRAW.t libimage-exiftool-perl-12.40+dfsg/t/ZISRAW.t
      --- libimage-exiftool-perl-11.88/t/ZISRAW.t	1970-01-01 00:00:00.000000000 +0000
      +++ libimage-exiftool-perl-12.40+dfsg/t/ZISRAW.t	2020-08-10 13:43:20.000000000 +0000
      @@ -0,0 +1,29 @@
      +# Before "make install", this script should be runnable with "make test".
      +# After "make install" it should work as "perl t/ZISRAW.t".
      +
      +BEGIN {
      +    $| = 1; print "1..2\n"; $Image::ExifTool::configFile = '';
      +    require './t/TestLib.pm'; t::TestLib->import();
      +}
      +END {print "not ok 1\n" unless $loaded;}
      +
      +# test 1: Load the module(s)
      +use Image::ExifTool 'ImageInfo';
      +use Image::ExifTool::ZISRAW;
      +$loaded = 1;
      +print "ok 1\n";
      +
      +my $testname = 'ZISRAW';
      +my $testnum = 1;
      +
      +# test 2: Extract information from ZISRAW.czi
      +{
      +    ++$testnum;
      +    my $exifTool = new Image::ExifTool;
      +    my $info = $exifTool->ImageInfo('t/images/ZISRAW.czi');
      +    print 'not ' unless check($exifTool, $info, $testname, $testnum);
      +    print "ok $testnum\n";
      +}
      +
      +
      +# end