exiftool-vendored.pl 12.72.0 → 12.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/bin/Changes +64 -1
  2. package/bin/META.json +1 -1
  3. package/bin/META.yml +1 -1
  4. package/bin/README +47 -46
  5. package/bin/exiftool +123 -96
  6. package/bin/lib/File/RandomAccess.pm +32 -6
  7. package/bin/lib/File/RandomAccess.pod +6 -6
  8. package/bin/lib/Image/ExifTool/7Z.pm +3 -3
  9. package/bin/lib/Image/ExifTool/AAC.pm +8 -6
  10. package/bin/lib/Image/ExifTool/AES.pm +1 -1
  11. package/bin/lib/Image/ExifTool/AFCP.pm +3 -3
  12. package/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  13. package/bin/lib/Image/ExifTool/APE.pm +1 -1
  14. package/bin/lib/Image/ExifTool/APP12.pm +1 -1
  15. package/bin/lib/Image/ExifTool/ASF.pm +1 -1
  16. package/bin/lib/Image/ExifTool/Apple.pm +1 -1
  17. package/bin/lib/Image/ExifTool/Audible.pm +1 -1
  18. package/bin/lib/Image/ExifTool/BMP.pm +1 -1
  19. package/bin/lib/Image/ExifTool/BPG.pm +1 -1
  20. package/bin/lib/Image/ExifTool/BZZ.pm +3 -3
  21. package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  22. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +9 -9
  23. package/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  24. package/bin/lib/Image/ExifTool/Canon.pm +7 -6
  25. package/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  26. package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  27. package/bin/lib/Image/ExifTool/CanonVRD.pm +3 -3
  28. package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  29. package/bin/lib/Image/ExifTool/Casio.pm +1 -1
  30. package/bin/lib/Image/ExifTool/Charset.pm +1 -1
  31. package/bin/lib/Image/ExifTool/DICOM.pm +3 -3
  32. package/bin/lib/Image/ExifTool/DJI.pm +1 -1
  33. package/bin/lib/Image/ExifTool/DNG.pm +5 -5
  34. package/bin/lib/Image/ExifTool/DPX.pm +1 -1
  35. package/bin/lib/Image/ExifTool/DV.pm +1 -1
  36. package/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  37. package/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  38. package/bin/lib/Image/ExifTool/EXE.pm +1 -1
  39. package/bin/lib/Image/ExifTool/Exif.pm +4 -3
  40. package/bin/lib/Image/ExifTool/FITS.pm +1 -1
  41. package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  42. package/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  43. package/bin/lib/Image/ExifTool/FLIR.pm +3 -3
  44. package/bin/lib/Image/ExifTool/Fixup.pm +4 -4
  45. package/bin/lib/Image/ExifTool/Flash.pm +1 -1
  46. package/bin/lib/Image/ExifTool/FlashPix.pm +61 -8
  47. package/bin/lib/Image/ExifTool/Font.pm +1 -1
  48. package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  49. package/bin/lib/Image/ExifTool/FujiFilm.pm +9 -4
  50. package/bin/lib/Image/ExifTool/GE.pm +1 -1
  51. package/bin/lib/Image/ExifTool/GIF.pm +1 -1
  52. package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  53. package/bin/lib/Image/ExifTool/GPS.pm +1 -1
  54. package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  55. package/bin/lib/Image/ExifTool/Geotag.pm +4 -4
  56. package/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  57. package/bin/lib/Image/ExifTool/H264.pm +1 -1
  58. package/bin/lib/Image/ExifTool/HP.pm +1 -1
  59. package/bin/lib/Image/ExifTool/HTML.pm +1 -1
  60. package/bin/lib/Image/ExifTool/HtmlDump.pm +7 -5
  61. package/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  62. package/bin/lib/Image/ExifTool/ICO.pm +1 -1
  63. package/bin/lib/Image/ExifTool/ID3.pm +3 -3
  64. package/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  65. package/bin/lib/Image/ExifTool/ISO.pm +1 -1
  66. package/bin/lib/Image/ExifTool/ITC.pm +1 -1
  67. package/bin/lib/Image/ExifTool/Import.pm +6 -6
  68. package/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  69. package/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
  70. package/bin/lib/Image/ExifTool/JPEG.pm +5 -2
  71. package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  72. package/bin/lib/Image/ExifTool/JSON.pm +3 -3
  73. package/bin/lib/Image/ExifTool/JVC.pm +3 -3
  74. package/bin/lib/Image/ExifTool/Jpeg2000.pm +67 -17
  75. package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  76. package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  77. package/bin/lib/Image/ExifTool/LIF.pm +1 -1
  78. package/bin/lib/Image/ExifTool/LNK.pm +1 -1
  79. package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  80. package/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  81. package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  82. package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  83. package/bin/lib/Image/ExifTool/Lang/es.pm +4 -4
  84. package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  85. package/bin/lib/Image/ExifTool/Lang/fr.pm +4 -5
  86. package/bin/lib/Image/ExifTool/Lang/it.pm +3 -3
  87. package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  88. package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  89. package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  90. package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  91. package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  92. package/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
  93. package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  94. package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  95. package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  96. package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  97. package/bin/lib/Image/ExifTool/Leaf.pm +3 -3
  98. package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  99. package/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  100. package/bin/lib/Image/ExifTool/MIE.pm +5 -5
  101. package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  102. package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  103. package/bin/lib/Image/ExifTool/MISB.pm +1 -1
  104. package/bin/lib/Image/ExifTool/MNG.pm +1 -1
  105. package/bin/lib/Image/ExifTool/MOI.pm +1 -1
  106. package/bin/lib/Image/ExifTool/MPC.pm +1 -1
  107. package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  108. package/bin/lib/Image/ExifTool/MPF.pm +1 -1
  109. package/bin/lib/Image/ExifTool/MRC.pm +1 -1
  110. package/bin/lib/Image/ExifTool/MWG.pm +1 -1
  111. package/bin/lib/Image/ExifTool/MXF.pm +1 -1
  112. package/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  113. package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  114. package/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  115. package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  116. package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  117. package/bin/lib/Image/ExifTool/MinoltaRaw.pm +3 -3
  118. package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  119. package/bin/lib/Image/ExifTool/Nikon.pm +11 -8
  120. package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  121. package/bin/lib/Image/ExifTool/NikonCustom.pm +4 -4
  122. package/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  123. package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  124. package/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  125. package/bin/lib/Image/ExifTool/Ogg.pm +3 -3
  126. package/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  127. package/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  128. package/bin/lib/Image/ExifTool/Opus.pm +1 -1
  129. package/bin/lib/Image/ExifTool/Other.pm +1 -1
  130. package/bin/lib/Image/ExifTool/PCX.pm +1 -1
  131. package/bin/lib/Image/ExifTool/PDF.pm +55 -5
  132. package/bin/lib/Image/ExifTool/PGF.pm +1 -1
  133. package/bin/lib/Image/ExifTool/PICT.pm +1 -1
  134. package/bin/lib/Image/ExifTool/PLIST.pm +4 -4
  135. package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  136. package/bin/lib/Image/ExifTool/PNG.pm +24 -2
  137. package/bin/lib/Image/ExifTool/PPM.pm +1 -1
  138. package/bin/lib/Image/ExifTool/PSP.pm +1 -1
  139. package/bin/lib/Image/ExifTool/Palm.pm +1 -1
  140. package/bin/lib/Image/ExifTool/Panasonic.pm +27 -2
  141. package/bin/lib/Image/ExifTool/PanasonicRaw.pm +4 -4
  142. package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  143. package/bin/lib/Image/ExifTool/Pentax.pm +32 -11
  144. package/bin/lib/Image/ExifTool/PhaseOne.pm +6 -6
  145. package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  146. package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  147. package/bin/lib/Image/ExifTool/Photoshop.pm +4 -4
  148. package/bin/lib/Image/ExifTool/PostScript.pm +3 -3
  149. package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  150. package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  151. package/bin/lib/Image/ExifTool/QuickTime.pm +55 -101
  152. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +97 -7
  153. package/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  154. package/bin/lib/Image/ExifTool/RSRC.pm +3 -3
  155. package/bin/lib/Image/ExifTool/RTF.pm +1 -1
  156. package/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  157. package/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  158. package/bin/lib/Image/ExifTool/Real.pm +1 -1
  159. package/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  160. package/bin/lib/Image/ExifTool/Red.pm +1 -1
  161. package/bin/lib/Image/ExifTool/Ricoh.pm +3 -3
  162. package/bin/lib/Image/ExifTool/Samsung.pm +5 -5
  163. package/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  164. package/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  165. package/bin/lib/Image/ExifTool/Shift.pl +2 -3
  166. package/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  167. package/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  168. package/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  169. package/bin/lib/Image/ExifTool/Sony.pm +5 -5
  170. package/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  171. package/bin/lib/Image/ExifTool/Stim.pm +1 -1
  172. package/bin/lib/Image/ExifTool/TagInfoXML.pm +4 -4
  173. package/bin/lib/Image/ExifTool/TagLookup.pm +3879 -3862
  174. package/bin/lib/Image/ExifTool/TagNames.pod +11439 -11374
  175. package/bin/lib/Image/ExifTool/Text.pm +1 -1
  176. package/bin/lib/Image/ExifTool/Theora.pm +1 -1
  177. package/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  178. package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  179. package/bin/lib/Image/ExifTool/VCard.pm +1 -1
  180. package/bin/lib/Image/ExifTool/Validate.pm +1 -1
  181. package/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  182. package/bin/lib/Image/ExifTool/WPG.pm +1 -1
  183. package/bin/lib/Image/ExifTool/WTV.pm +1 -1
  184. package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +2 -2
  185. package/bin/lib/Image/ExifTool/WriteExif.pl +27 -24
  186. package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  187. package/bin/lib/Image/ExifTool/WritePDF.pl +2 -2
  188. package/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  189. package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  190. package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  191. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +5 -2
  192. package/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  193. package/bin/lib/Image/ExifTool/WriteXMP.pl +9 -5
  194. package/bin/lib/Image/ExifTool/Writer.pl +74 -45
  195. package/bin/lib/Image/ExifTool/XISF.pm +1 -1
  196. package/bin/lib/Image/ExifTool/XMP.pm +20 -3
  197. package/bin/lib/Image/ExifTool/XMP2.pl +10 -1
  198. package/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  199. package/bin/lib/Image/ExifTool/ZIP.pm +7 -7
  200. package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  201. package/bin/lib/Image/ExifTool/iWork.pm +1 -1
  202. package/bin/lib/Image/ExifTool.pm +59 -28
  203. package/bin/lib/Image/ExifTool.pod +81 -68
  204. package/bin/perl-Image-ExifTool.spec +45 -44
  205. package/bin/pp_build_exe.args +5 -5
  206. package/package.json +5 -5
@@ -137,7 +137,7 @@ information from MOI files.
137
137
 
138
138
  =head1 AUTHOR
139
139
 
140
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
140
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
141
141
 
142
142
  This library is free software; you can redistribute it and/or modify it
143
143
  under the same terms as Perl itself.
@@ -134,7 +134,7 @@ information from Musepack (MPC) audio files.
134
134
 
135
135
  =head1 AUTHOR
136
136
 
137
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
137
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
138
138
 
139
139
  This library is free software; you can redistribute it and/or modify it
140
140
  under the same terms as Perl itself.
@@ -704,7 +704,7 @@ based on unofficial sources which may be incomplete, inaccurate or outdated.
704
704
 
705
705
  =head1 AUTHOR
706
706
 
707
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
707
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
708
708
 
709
709
  This library is free software; you can redistribute it and/or modify it
710
710
  under the same terms as Perl itself.
@@ -267,7 +267,7 @@ Format (MPF) information from JPEG images.
267
267
 
268
268
  =head1 AUTHOR
269
269
 
270
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
270
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
271
271
 
272
272
  This library is free software; you can redistribute it and/or modify it
273
273
  under the same terms as Perl itself.
@@ -315,7 +315,7 @@ metadata from Medical Research Council (MRC) images.
315
315
 
316
316
  =head1 AUTHOR
317
317
 
318
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
318
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
319
319
 
320
320
  This library is free software; you can redistribute it and/or modify it
321
321
  under the same terms as Perl itself.
@@ -756,7 +756,7 @@ must be loaded explicitly as described above.
756
756
 
757
757
  =head1 AUTHOR
758
758
 
759
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
759
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
760
760
 
761
761
  This library is free software; you can redistribute it and/or modify it
762
762
  under the same terms as Perl itself.
@@ -2987,7 +2987,7 @@ information from MXF (Material Exchange Format) files.
2987
2987
 
2988
2988
  =head1 AUTHOR
2989
2989
 
2990
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2990
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2991
2991
 
2992
2992
  This library is free software; you can redistribute it and/or modify it
2993
2993
  under the same terms as Perl itself.
@@ -721,7 +721,7 @@ Writable tags use "xattr", "setfile" or "osascript" for writing.
721
721
 
722
722
  =head1 AUTHOR
723
723
 
724
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
724
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
725
725
 
726
726
  This library is free software; you can redistribute it and/or modify it
727
727
  under the same terms as Perl itself.
@@ -1831,7 +1831,7 @@ maker notes in EXIF information.
1831
1831
 
1832
1832
  =head1 AUTHOR
1833
1833
 
1834
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1834
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1835
1835
 
1836
1836
  This library is free software; you can redistribute it and/or modify it
1837
1837
  under the same terms as Perl itself.
@@ -1155,7 +1155,7 @@ information from Matroska multimedia files (MKA, MKV, MKS and WEBM).
1155
1155
 
1156
1156
  =head1 AUTHOR
1157
1157
 
1158
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1158
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1159
1159
 
1160
1160
  This library is free software; you can redistribute it and/or modify it
1161
1161
  under the same terms as Perl itself.
@@ -1100,7 +1100,7 @@ Xtra tags in videos.
1100
1100
 
1101
1101
  =head1 AUTHOR
1102
1102
 
1103
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1103
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1104
1104
 
1105
1105
  This library is free software; you can redistribute it and/or modify it
1106
1106
  under the same terms as Perl itself.
@@ -2927,7 +2927,7 @@ and write Minolta RAW (MRW) images.
2927
2927
 
2928
2928
  =head1 AUTHOR
2929
2929
 
2930
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2930
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2931
2931
 
2932
2932
  This library is free software; you can redistribute it and/or modify it
2933
2933
  under the same terms as Perl itself.
@@ -17,7 +17,7 @@ use vars qw($VERSION);
17
17
  use Image::ExifTool qw(:DataAccess :Utils);
18
18
  use Image::ExifTool::Minolta;
19
19
 
20
- $VERSION = '1.19';
20
+ $VERSION = '1.20';
21
21
 
22
22
  sub ProcessMRW($$;$);
23
23
  sub WriteMRW($$;$);
@@ -400,7 +400,7 @@ sub ProcessMRW($$;$)
400
400
 
401
401
  if ($$dirInfo{DataPt}) {
402
402
  # make a RAF object for MRW information extracted from other file types
403
- $raf = new File::RandomAccess($$dirInfo{DataPt});
403
+ $raf = File::RandomAccess->new($$dirInfo{DataPt});
404
404
  # MRW information in DNG images may not start at beginning of data block
405
405
  $raf->Seek($$dirInfo{DirStart}, 0) if $$dirInfo{DirStart};
406
406
  }
@@ -513,7 +513,7 @@ write Konica-Minolta RAW (MRW) images.
513
513
 
514
514
  =head1 AUTHOR
515
515
 
516
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
516
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
517
517
 
518
518
  This library is free software; you can redistribute it and/or modify it
519
519
  under the same terms as Perl itself.
@@ -165,7 +165,7 @@ cell phone images.
165
165
 
166
166
  =head1 AUTHOR
167
167
 
168
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
168
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
169
169
 
170
170
  This library is free software; you can redistribute it and/or modify it
171
171
  under the same terms as Perl itself.
@@ -65,13 +65,13 @@ use Image::ExifTool::Exif;
65
65
  use Image::ExifTool::GPS;
66
66
  use Image::ExifTool::XMP;
67
67
 
68
- $VERSION = '4.28';
68
+ $VERSION = '4.30';
69
69
 
70
70
  sub LensIDConv($$$);
71
71
  sub ProcessNikonAVI($$$);
72
72
  sub ProcessNikonMOV($$$);
73
73
  sub ProcessNikonEncrypted($$$);
74
- sub FormatString($);
74
+ sub FormatString($$);
75
75
  sub ProcessNikonCaptureEditVersions($$$);
76
76
  sub PrintAFPoints($$);
77
77
  sub PrintAFPointsInv($$);
@@ -677,6 +677,7 @@ sub GetAFPointGrid($$;$);
677
677
  '71 48 64 64 24 24 00 00' => 'Voigtlander APO-Skopar 90mm F2.8 SL IIs', #30
678
678
  'FD 00 50 50 18 18 DF 00' => 'Voigtlander APO-Lanthar 50mm F2 Aspherical', #35
679
679
  'FD 00 44 44 18 18 DF 00' => 'Voigtlander APO-Lanthar 35mm F2', #30
680
+ 'FD 00 59 59 18 18 DF 00' => 'Voigtlander Macro APO-Lanthar 65mm F2', #30
680
681
  #
681
682
  '00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
682
683
  '00 48 27 27 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/15 ZF.2', #MykytaKozlov
@@ -690,6 +691,7 @@ sub GetAFPointGrid($$;$);
690
691
  '00 54 62 62 0C 0C 00 00' => 'Carl Zeiss Planar T* 1.4/85 ZF.2',
691
692
  '00 54 68 68 18 18 00 00' => 'Carl Zeiss Makro-Planar T* 2/100 ZF.2',
692
693
  '00 54 72 72 18 18 00 00' => 'Carl Zeiss Apo Sonnar T* 2/135 ZF.2',
694
+ '02 54 3C 3C 0C 0C 00 00' => 'Zeiss Otus 1.4/28 ZF.2', #30
693
695
  '00 54 53 53 0C 0C 00 00' => 'Zeiss Otus 1.4/55', #IB
694
696
  '01 54 62 62 0C 0C 00 00' => 'Zeiss Otus 1.4/85',
695
697
  '03 54 68 68 0C 0C 00 00' => 'Zeiss Otus 1.4/100', #IB
@@ -12731,15 +12733,16 @@ sub LensIDConv($$$)
12731
12733
 
12732
12734
  #------------------------------------------------------------------------------
12733
12735
  # Clean up formatting of string values
12734
- # Inputs: 0) string value
12736
+ # Inputs: 0) string value, 1) ExifTool ref
12735
12737
  # Returns: formatted string value
12736
12738
  # - removes trailing spaces and changes case to something more sensible
12737
- sub FormatString($)
12739
+ sub FormatString($$)
12738
12740
  {
12739
- my $str = shift;
12741
+ my ($str, $et) = @_;
12740
12742
  # limit string length (can be very long for some unknown tags)
12741
- if (length($str) > 60) {
12742
- $str = substr($str,0,55) . "[...]";
12743
+ my $lim = $et->Options('LimitLongValues');
12744
+ if (length($str) > $lim and $lim >= 5) {
12745
+ $str = substr($str,0,$lim-5) . "[...]";
12743
12746
  } else {
12744
12747
  $str =~ s/\s+$//; # remove trailing white space
12745
12748
  # Don't change case of non-words (no vowels)
@@ -13429,7 +13432,7 @@ Nikon maker notes in EXIF information.
13429
13432
 
13430
13433
  =head1 AUTHOR
13431
13434
 
13432
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
13435
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
13433
13436
 
13434
13437
  This library is free software; you can redistribute it and/or modify it
13435
13438
  under the same terms as Perl itself.
@@ -918,7 +918,7 @@ the maker notes of NEF images.
918
918
 
919
919
  =head1 AUTHOR
920
920
 
921
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
921
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
922
922
 
923
923
  This library is free software; you can redistribute it and/or modify it
924
924
  under the same terms as Perl itself.
@@ -9852,7 +9852,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
9852
9852
  85 => { Name => 'HighSpeedSync', PrintConv => \%offOn }, # CSe1-b
9853
9853
  87 => { # CSe2
9854
9854
  Name => 'FlashShutterSpeed',
9855
- ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accomodate 4 new values?
9855
+ ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accommodate 4 new values?
9856
9856
  PrintConv => {
9857
9857
  0 => '1 s',
9858
9858
  1 => '1/2 s',
@@ -10242,7 +10242,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
10242
10242
  85 => { Name => 'HighSpeedSync', PrintConv => \%offOn }, # CSe1-b
10243
10243
  87 => { # CSe2
10244
10244
  Name => 'FlashShutterSpeed',
10245
- ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accomodate 4 new values?
10245
+ ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accommodate 4 new values?
10246
10246
  PrintConv => {
10247
10247
  0 => '1 s',
10248
10248
  1 => '1/2 s',
@@ -10652,7 +10652,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
10652
10652
  85 => { Name => 'HighSpeedSync', PrintConv => \%offOn }, # CSe1-b
10653
10653
  87 => { # CSe2
10654
10654
  Name => 'FlashShutterSpeed',
10655
- ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accomodate 4 new values?
10655
+ ValueConv => 'my $t = ($val - 16) % 24; $t ? $val / 24 : 2 + ($val - 16) / 24', #unusual decode perhaps due to need to accommodate 4 new values?
10656
10656
  PrintConv => {
10657
10657
  0 => '1 s',
10658
10658
  1 => '1/2 s',
@@ -10898,7 +10898,7 @@ this information.
10898
10898
 
10899
10899
  =head1 AUTHOR
10900
10900
 
10901
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
10901
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
10902
10902
 
10903
10903
  This library is free software; you can redistribute it and/or modify it
10904
10904
  under the same terms as Perl itself.
@@ -2077,7 +2077,7 @@ Nikon cameras such as the D6 and Z7mk2.
2077
2077
 
2078
2078
  =head1 AUTHOR
2079
2079
 
2080
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2080
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2081
2081
 
2082
2082
  This library is free software; you can redistribute it and/or modify it
2083
2083
  under the same terms as Perl itself.
@@ -107,7 +107,7 @@ interpret Nintendo maker notes EXIF meta information.
107
107
 
108
108
  =head1 AUTHOR
109
109
 
110
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
110
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
111
111
 
112
112
  This library is free software; you can redistribute it and/or modify it
113
113
  under the same terms as Perl itself.
@@ -395,7 +395,7 @@ archives of XML files.
395
395
 
396
396
  =head1 AUTHOR
397
397
 
398
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
398
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
399
399
 
400
400
  This library is free software; you can redistribute it and/or modify it
401
401
  under the same terms as Perl itself.
@@ -17,7 +17,7 @@ use strict;
17
17
  use vars qw($VERSION);
18
18
  use Image::ExifTool qw(:DataAccess :Utils);
19
19
 
20
- $VERSION = '1.02';
20
+ $VERSION = '1.03';
21
21
 
22
22
  my $MAX_PACKETS = 2; # maximum packets to scan from each stream at start of file
23
23
 
@@ -189,7 +189,7 @@ sub ProcessOGG($$)
189
189
  if (defined $numFlac and defined $val{$stream}) {
190
190
  # process FLAC headers as if it was a complete FLAC file
191
191
  require Image::ExifTool::FLAC;
192
- my %dirInfo = ( RAF => new File::RandomAccess(\$val{$stream}) );
192
+ my %dirInfo = ( RAF => File::RandomAccess->new(\$val{$stream}) );
193
193
  Image::ExifTool::FLAC::ProcessFLAC($et, \%dirInfo);
194
194
  }
195
195
  return $success;
@@ -214,7 +214,7 @@ information from Ogg bitstream container files.
214
214
 
215
215
  =head1 AUTHOR
216
216
 
217
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
217
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
218
218
 
219
219
  This library is free software; you can redistribute it and/or modify it
220
220
  under the same terms as Perl itself.
@@ -4181,7 +4181,7 @@ Olympus or Epson maker notes in EXIF information.
4181
4181
 
4182
4182
  =head1 AUTHOR
4183
4183
 
4184
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
4184
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
4185
4185
 
4186
4186
  This library is free software; you can redistribute it and/or modify it
4187
4187
  under the same terms as Perl itself.
@@ -321,7 +321,7 @@ information from OpenEXR images.
321
321
 
322
322
  =head1 AUTHOR
323
323
 
324
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
324
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
325
325
 
326
326
  This library is free software; you can redistribute it and/or modify it
327
327
  under the same terms as Perl itself.
@@ -69,7 +69,7 @@ information from Ogg Opus audio files.
69
69
 
70
70
  =head1 AUTHOR
71
71
 
72
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
72
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
73
73
 
74
74
  This library is free software; you can redistribute it and/or modify it
75
75
  under the same terms as Perl itself.
@@ -71,7 +71,7 @@ information from Portable FloatMap (PFM) images.
71
71
 
72
72
  =head1 AUTHOR
73
73
 
74
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
74
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
75
75
 
76
76
  This library is free software; you can redistribute it and/or modify it
77
77
  under the same terms as Perl itself.
@@ -114,7 +114,7 @@ information from PC Paintbrush (PCX) files.
114
114
 
115
115
  =head1 AUTHOR
116
116
 
117
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
117
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
118
118
 
119
119
  This library is free software; you can redistribute it and/or modify it
120
120
  under the same terms as Perl itself.
@@ -21,7 +21,7 @@ use vars qw($VERSION $AUTOLOAD $lastFetched);
21
21
  use Image::ExifTool qw(:DataAccess :Utils);
22
22
  require Exporter;
23
23
 
24
- $VERSION = '1.57';
24
+ $VERSION = '1.58';
25
25
 
26
26
  sub FetchObject($$$$);
27
27
  sub ExtractObject($$;$$);
@@ -178,6 +178,9 @@ my %supportedFilter = (
178
178
  AcroForm => {
179
179
  SubDirectory => { TagTable => 'Image::ExifTool::PDF::AcroForm' },
180
180
  },
181
+ AF => {
182
+ SubDirectory => { TagTable => 'Image::ExifTool::PDF::AF' },
183
+ },
181
184
  Lang => 'Language',
182
185
  PageLayout => { },
183
186
  PageMode => { },
@@ -251,6 +254,37 @@ my %supportedFilter = (
251
254
  },
252
255
  );
253
256
 
257
+ # tags extracted from AF dictionary
258
+ %Image::ExifTool::PDF::AF = (
259
+ PROCESS_PROC => \&ProcessAF,
260
+ NOTES => 'Processed only for C2PA information if AFRelationship is "/C2PA_Manifest".',
261
+ EF => {
262
+ SubDirectory => { TagTable => 'Image::ExifTool::PDF::EF' },
263
+ },
264
+ );
265
+
266
+ # tags extracted from EF dictionary
267
+ %Image::ExifTool::PDF::EF = (
268
+ F => {
269
+ Name => 'F_', # (don't want single-letter tag names)
270
+ SubDirectory => { TagTable => 'Image::ExifTool::PDF::F' },
271
+ },
272
+ );
273
+
274
+ # tags extracted from F dictionary
275
+ %Image::ExifTool::PDF::F = (
276
+ NOTES => 'C2PA JUMBF metadata extracted from "/C2PA_Manifest" file.',
277
+ _stream => {
278
+ Name => 'JUMBF',
279
+ Condition => '$$self{AFRelationship} eq "/C2PA_Manifest"',
280
+ SubDirectory => {
281
+ TagTable => 'Image::ExifTool::Jpeg2000::Main',
282
+ DirName => 'JUMBF',
283
+ ByteOrder => 'BigEndian',
284
+ },
285
+ },
286
+ );
287
+
254
288
  # tags in PDF Kids dictionary
255
289
  %Image::ExifTool::PDF::Kids = (
256
290
  Metadata => {
@@ -1739,6 +1773,19 @@ sub ProcessAcroForm($$$$;$$)
1739
1773
  {
1740
1774
  my ($et, $tagTablePtr, $dict, $xref, $nesting, $type) = @_;
1741
1775
  $et->HandleTag($tagTablePtr, '_has_xfa', $$dict{XFA} ? 'true' : 'false');
1776
+ return 1 unless $et->Options('Verbose');
1777
+ return ProcessDict($et, $tagTablePtr, $dict, $xref, $nesting, $type);
1778
+ }
1779
+
1780
+ #------------------------------------------------------------------------------
1781
+ # Process AF dictionary to extract C2PA manifest
1782
+ # Inputs: Same as ProcessDict
1783
+ sub ProcessAF($$$$;$$)
1784
+ {
1785
+ my ($et, $tagTablePtr, $dict, $xref, $nesting, $type) = @_;
1786
+ $$et{AFRelationship} = $$dict{AFRelationship} || '';
1787
+ # go no further unless Verbose or this is the C2PA_Manifest item
1788
+ return 1 unless $et->Options('Verbose') or $$et{AFRelationship} eq '/C2PA_Manifest';
1742
1789
  return ProcessDict($et, $tagTablePtr, $dict, $xref, $nesting, $type);
1743
1790
  }
1744
1791
 
@@ -1987,7 +2034,8 @@ sub ProcessDict($$$$;$$)
1987
2034
  $$et{INDENT} .= '| ';
1988
2035
  $$et{DIR_NAME} = $tag;
1989
2036
  $et->VerboseDir($tag, scalar(@{$$subDict{_tags}}));
1990
- ProcessDict($et, $subTablePtr, $subDict, $xref, $nesting);
2037
+ my $proc = $$subTablePtr{PROCESS_PROC} || \&ProcessDict;
2038
+ &$proc($et, $subTablePtr, $subDict, $xref, $nesting);
1991
2039
  $$et{INDENT} = $oldIndent;
1992
2040
  $$et{DIR_NAME} = $oldDir;
1993
2041
  }
@@ -2087,7 +2135,8 @@ sub ProcessDict($$$$;$$)
2087
2135
  ($tag = $$dict{Subtype} . $tag) =~ s/^\/// if $$dict{Subtype};
2088
2136
  last unless $$tagTablePtr{$tag};
2089
2137
  my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag) or last;
2090
- unless ($$tagInfo{SubDirectory}) {
2138
+ my $subdir = $$tagInfo{SubDirectory};
2139
+ unless ($subdir) {
2091
2140
  # don't build filter lists across different images
2092
2141
  delete $$et{LIST_TAGS}{$$tagTablePtr{Filter}};
2093
2142
  # we arrive here only when extracting embedded images
@@ -2120,8 +2169,9 @@ sub ProcessDict($$$$;$$)
2120
2169
  DirStart => 0,
2121
2170
  DirLen => length $$dict{_stream},
2122
2171
  Parent => 'PDF',
2172
+ DirName => $$subdir{DirName},
2123
2173
  );
2124
- my $subTablePtr = GetTagTable($tagInfo->{SubDirectory}->{TagTable});
2174
+ my $subTablePtr = GetTagTable($$subdir{TagTable});
2125
2175
  unless ($et->ProcessDirectory(\%dirInfo, $subTablePtr)) {
2126
2176
  $et->Warn("Error processing $$tagInfo{Name} information");
2127
2177
  }
@@ -2416,7 +2466,7 @@ and AESV3 (AES-256).
2416
2466
 
2417
2467
  =head1 AUTHOR
2418
2468
 
2419
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2469
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2420
2470
 
2421
2471
  This library is free software; you can redistribute it and/or modify it
2422
2472
  under the same terms as Perl itself.
@@ -119,7 +119,7 @@ information from Progressive Graphics File (PGF) images.
119
119
 
120
120
  =head1 AUTHOR
121
121
 
122
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
122
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
123
123
 
124
124
  This library is free software; you can redistribute it and/or modify it
125
125
  under the same terms as Perl itself.
@@ -1236,7 +1236,7 @@ Verbose or the Unknown option.
1236
1236
 
1237
1237
  =head1 AUTHOR
1238
1238
 
1239
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1239
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1240
1240
 
1241
1241
  This library is free software; you can redistribute it and/or modify it
1242
1242
  under the same terms as Perl itself.
@@ -21,7 +21,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
21
21
  use Image::ExifTool::XMP;
22
22
  use Image::ExifTool::GPS;
23
23
 
24
- $VERSION = '1.11';
24
+ $VERSION = '1.12';
25
25
 
26
26
  sub ExtractObject($$;$);
27
27
  sub Get24u($$);
@@ -351,9 +351,9 @@ sub ProcessBinaryPLIST($$;$)
351
351
  my $start = $$dirInfo{DirStart};
352
352
  if ($start or ($$dirInfo{DirLen} and $$dirInfo{DirLen} != length $$dataPt)) {
353
353
  my $buf2 = substr($$dataPt, $start || 0, $$dirInfo{DirLen});
354
- $$dirInfo{RAF} = new File::RandomAccess(\$buf2);
354
+ $$dirInfo{RAF} = File::RandomAccess->new(\$buf2);
355
355
  } else {
356
- $$dirInfo{RAF} = new File::RandomAccess($dataPt);
356
+ $$dirInfo{RAF} = File::RandomAccess->new($dataPt);
357
357
  }
358
358
  my $strt = $$dirInfo{DirStart} || 0;
359
359
  }
@@ -450,7 +450,7 @@ This module decodes both the binary and XML-based PLIST format.
450
450
 
451
451
  =head1 AUTHOR
452
452
 
453
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
453
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
454
454
 
455
455
  This library is free software; you can redistribute it and/or modify it
456
456
  under the same terms as Perl itself.
@@ -2601,7 +2601,7 @@ Definitions for PLUS (Picture Licensing Universal System) tags.
2601
2601
 
2602
2602
  =head1 AUTHOR
2603
2603
 
2604
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2604
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2605
2605
 
2606
2606
  This library is free software; you can redistribute it and/or modify it
2607
2607
  under the same terms as Perl itself.
@@ -36,7 +36,7 @@ use strict;
36
36
  use vars qw($VERSION $AUTOLOAD %stdCase);
37
37
  use Image::ExifTool qw(:DataAccess :Utils);
38
38
 
39
- $VERSION = '1.65';
39
+ $VERSION = '1.66';
40
40
 
41
41
  sub ProcessPNG_tEXt($$$);
42
42
  sub ProcessPNG_iTXt($$$);
@@ -351,6 +351,27 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
351
351
  TagTable => 'Image::ExifTool::PNG::CICodePoints',
352
352
  },
353
353
  },
354
+ cpIp => { # OLE information found in PNG Plus images written by Picture It!
355
+ Name => 'OLEInfo',
356
+ Condition => q{
357
+ # set FileType to "PNG Plus"
358
+ if ($$self{VALUE}{FileType} and $$self{VALUE}{FileType} eq "PNG") {
359
+ $$self{VALUE}{FileType} = 'PNG Plus';
360
+ }
361
+ return 1;
362
+ },
363
+ SubDirectory => {
364
+ TagTable => 'Image::ExifTool::FlashPix::Main',
365
+ ProcessProc => 'Image::ExifTool::FlashPix::ProcessFPX',
366
+ },
367
+ },
368
+ meTa => { # XML in UTF-16 BOM format written by Picture It!
369
+ SubDirectory => {
370
+ TagTable => 'Image::ExifTool::XMP::XML',
371
+ IgnoreProp => { meta => 1 }, # ignore 'meta' container
372
+ },
373
+ },
374
+ # mkBF,mkTS,mkBS,mkBT ? - written by Adobe FireWorks
354
375
  );
355
376
 
356
377
  # PNG IHDR chunk
@@ -970,6 +991,7 @@ sub FoundPNG($$$$;$$$$)
970
991
  TagInfo => $tagInfo,
971
992
  ReadOnly => 1, # (used only by WriteXMP)
972
993
  OutBuff => $outBuff,
994
+ IgnoreProp => $$subdir{IgnoreProp}, # (XML hack for meTa chunk)
973
995
  );
974
996
  # no need to re-decompress if already done
975
997
  undef $processProc if $wasCompressed and $processProc and $processProc eq \&ProcessPNG_Compressed;
@@ -1656,7 +1678,7 @@ and JNG (JPEG Network Graphics) images.
1656
1678
 
1657
1679
  =head1 AUTHOR
1658
1680
 
1659
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1681
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1660
1682
 
1661
1683
  This library is free software; you can redistribute it and/or modify it
1662
1684
  under the same terms as Perl itself.
@@ -143,7 +143,7 @@ BitMap) images.
143
143
 
144
144
  =head1 AUTHOR
145
145
 
146
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
146
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
147
147
 
148
148
  This library is free software; you can redistribute it and/or modify it
149
149
  under the same terms as Perl itself.
@@ -284,7 +284,7 @@ information from Paint Shop Pro images.
284
284
 
285
285
  =head1 AUTHOR
286
286
 
287
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
287
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
288
288
 
289
289
  This library is free software; you can redistribute it and/or modify it
290
290
  under the same terms as Perl itself.
@@ -379,7 +379,7 @@ KF7 and KF8 books (AZW and AZW3).
379
379
 
380
380
  =head1 AUTHOR
381
381
 
382
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
382
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
383
383
 
384
384
  This library is free software; you can redistribute it and/or modify it
385
385
  under the same terms as Perl itself.