You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2015/07/19 21:00:38 UTC

svn commit: r1691843 [2/30] - in /poi/branches/common_sl: ./ .settings/ legal/ osgi/ osgi/src/ src/examples/src/org/apache/poi/hpsf/examples/ src/examples/src/org/apache/poi/hssf/usermodel/examples/ src/examples/src/org/apache/poi/ss/examples/ src/exam...

Modified: poi/branches/common_sl/.settings/org.eclipse.jdt.ui.prefs
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/.settings/org.eclipse.jdt.ui.prefs?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/.settings/org.eclipse.jdt.ui.prefs (original)
+++ poi/branches/common_sl/.settings/org.eclipse.jdt.ui.prefs Sun Jul 19 19:00:32 2015
@@ -1,12 +1,75 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=false
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=false
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Apache POI
+cleanup_settings_version=2
 eclipse.preferences.version=1
 editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=false
 formatter_profile=_Apache POI
 formatter_settings_version=12
 org.eclipse.jdt.ui.exception.name=e
 org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
 org.eclipse.jdt.ui.javadoc=false
 org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=10
 org.eclipse.jdt.ui.overrideannotation=false
+org.eclipse.jdt.ui.staticondemandthreshold=10
 org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_co
 ntext" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/* \=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\n   Licensed to the Apache Software Foundation (ASF) under one or more\n   contributor license agreements.  See the NOTICE file distributed with\n   this work for additional information regarding copyright ownership.\n   The ASF licenses this file to You under the Apache License, Version 2.0\n   (the "License"); you may not use this file except in compliance with\n   the License.  You may obtain a copy of the License at\n\n       http\://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an "AS IS" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or impli
 ed.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\= */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n *\n * ${tags}\n */</templat
 e><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\n * ${see_to_overridden}\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.j
 dt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated cat
 ch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true"
  id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
 sp_cleanup.add_default_serial_version_id=true
 sp_cleanup.add_generated_serial_version_id=false
@@ -21,10 +84,12 @@ sp_cleanup.always_use_blocks=true
 sp_cleanup.always_use_parentheses_in_expressions=false
 sp_cleanup.always_use_this_for_non_static_field_access=false
 sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
 sp_cleanup.convert_to_enhanced_for_loop=true
 sp_cleanup.correct_indentation=false
 sp_cleanup.format_source_code=false
 sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
 sp_cleanup.make_local_variable_final=false
 sp_cleanup.make_parameters_final=false
 sp_cleanup.make_private_fields_final=true
@@ -40,6 +105,7 @@ sp_cleanup.qualify_static_member_accesse
 sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
 sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
 sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_type_arguments=false
 sp_cleanup.remove_trailing_whitespaces=false
 sp_cleanup.remove_trailing_whitespaces_all=true
 sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
@@ -53,10 +119,13 @@ sp_cleanup.remove_unused_private_methods
 sp_cleanup.remove_unused_private_types=true
 sp_cleanup.sort_members=false
 sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
 sp_cleanup.use_blocks=true
 sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=false
 sp_cleanup.use_parentheses_in_expressions=false
 sp_cleanup.use_this_for_non_static_field_access=false
 sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
 sp_cleanup.use_this_for_non_static_method_access=false
 sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+sp_cleanup.use_type_arguments=false

Modified: poi/branches/common_sl/KEYS
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/KEYS?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/KEYS (original)
+++ poi/branches/common_sl/KEYS Sun Jul 19 19:00:32 2015
@@ -1796,3 +1796,348 @@ qoiVaXWfFHwg8u4bSHunrzNja17GyaZHdCEmM9vF
 FZwpzgut7DanaPcCDk7LMBbntaJwRC72M0qcj16SUAdAuGt1yQ==
 =0DjT
 -----END PGP PUBLIC KEY BLOCK-----
+
+pub   4096R/B4812553 2014-02-26 [expires: 2019-02-25]
+uid                  David North <da...@dnorth.net>
+uid                  David North (Oxford CompSoc) <no...@ox.compsoc.net>
+uid                  David North (ASF Committer ID) <dn...@apache.org>
+
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+mQINBFMOLVsBEADW2N1bQ6GFDDSbC+IKggdS/lwhaEo5Av4Z5B2es83A43boyJZ1
+bn9xfd5TriHubI6VBgjbuB0peoCZye3PzEz9cfZYXsPiAqZngWk95or0N+vwrGoI
+9gJM6aBYjE06fxHZRTAi4ADPLW5sV0bT230/u1xpqg1lcko5eGV5sAjI9HaVdfvR
+68gQdNVK6TciOeM2EQcTHlRd8D9D2/XTp9aCFynNaFoKmBTOsc+VlczmIgd+1jzW
+qWcaGTkEtZKzAxUfxlWgO0xHjs3H4CGqtWWCqj8W1alkwIVHBeXIwHDoHlbmkXok
+65jfeQd9tWzTHGXETU7bBbxksbwRlrJrutgolLW+/v9F1je2aG/BKMwOLjF7dk8+
+gvSKlu4PwoItGN0qraWsqAGDR4/bWLihqPluW+pUL544li702DUeZiVxFEb22yDb
+p2oWdFafEFhQz4FxRCam/4bfVt6bGLGE8GEd1jeahgmpkIAcbAoI9UOFAVaoSWFv
+AqYphVfONeZz7MMIcNlyHth5VAvQQF7/uBWCsNtlvBtVirR+nis+eEwoNRDwYx3N
+OKu1GTFPMMHUauB0ORD2ywsFQkIjDbnQMNhwQoC49bs46vCusBb42qmOpjP0viVs
+qGI3Ae78F4KEBpa5AVbYRbbicOPeV/tRrHFWMyXmH312898j29qO57e+awARAQAB
+tB5EYXZpZCBOb3J0aCA8ZGF2aWRAZG5vcnRoLm5ldD6JAkAEEwEIACoCGwMFCQlm
+AYAFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AFAlMOL4ECGQEACgkQ+bj6w7SBJVML
+Mg//To6EADRjfp11ZGu3cARitfx67276xAkt017sxw76LBzHoF60RtPjcRBBRCYk
+0P1URdip6nC2M7Ol151YdTUIfKNWDRzAUVgpWrGfUIRPUgClyO2boTijblS3heZS
+gCKz9x3WwRn5elR3Qf6u/wZGIuHBjmh9Jwoa/c6G6ikIoLjoUvXBWR53FlLIpHIF
+/q6mzwhXdCwohDsfDI7ckSuSv5yMJsYLZRpEKB3zLgWo4CQP6edaewBd0bVb/Uzy
+/5aeolwEfwoNSJ2J4+tQ39U1vxPr1NLEALNl4qW4Gn2fSACnWyEjDHrLltDvolU/
+iLXjgb//9ge93vZUfZmH6vPkrt4TzOfar4wLHTgiEX8nKaOwiMU72wgSL1DLJgry
+udf0zSIYDldm/Wy4ggywd/mSyp4oWR3pJFI926CyiQrnA4fSxKrE3yI4Pm5kZNBM
+5fhDwtPEtp4F/7kLxGK6MCxyeL94x9QnZdp4FHyRcO3XCCMhfAKT3qLiuHpTiNOt
+mOu3Ea1DsEVbSOw+gJzqEZN2ruB8z9DsOxNxlLsdW+sSQRSNgErnLlBLlkXpSawB
+imhbwfOHKqZ6eoEqz9ufbrJjIkOEDbIbW93hpyG7zdKSkKsXLR9HbOZ7kgMgzPVi
+KNAhc7axmvps55Jx7aXP7G+8c9d8iWhuwD9MemqvhRKyzeeJAj0EEwEIACcFAlMO
+LVsCGwMFCQlmAYAFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQ+bj6w7SBJVPR
+6A/9Gk3J6BV0IPuybnmxrkKUicPsIoXgRnzU9LF2TIC6mYJBjb3Tllw0kahsTwLa
+vfXEEk971zushOUH/z/wLLgrQ8rzJq3RfbvWRMz9BurIJYGWCnkkINr+lURV0Od1
+IzilZlLuCWCh+WS8w4sJuoziF71Ick3Pf0DCpPIte6PMqBWerrbmXlRfYZgP+vrH
+JZ6ZHUEkOVawuY91QRW5HKsM/8RDwgLP7zvXtt7BaVey0XW9pRVQM0fzYzW9wufc
+B9DMQeampdXv2R3iXVDQRo86zCRo+7UrqEpBGNXBNhWozucw5eidJo28U+76fWng
+7rpDrOPSOUWcg/IfWDrm+zrPyjX/9sFuyjP2w+/dsxmerYk4yXYOQaVHJYaBgAO4
+O11WsjhZZ0bvYgxqJjHs9WGfg7ZfuobzIK2Pl1ZwU0lAcePwuHTBTBFlI6wUxmhG
+KM2V8vZUMopxUSw3AE4lWZV756ST8Tc9cVVllBg9eRGHdFN2NKullRzTvLMuUwLc
+IGkL6h7VrPmQUhgjyHO4mWgE0or4bm7pHRjP+1D+dxTlr/OZUAiCMgxaBo749Mas
+zgvDqcxJOtH/9J3dUeTzN8C1RoKPQPv1znmJ3OgpOKs0cNz1qNIQGQkYasl4awq3
+nPz7QUqcKeZgy/6KIInOPJ8ys2+R54hFhOj/NUBBZID8EX+IRgQQEQIABgUCUw4x
+bwAKCRA7Ok8Kx55balZeAJ99U3htpjHcxLxLS9lkGT2+YiBIdgCbBLVVwOBCU7qt
+mdHezw/Xp2oxxNKIRgQQEQgABgUCUxNB9AAKCRCgJ0huCLbaUCjLAJ9Iht8ctGWu
+SiDFxodDIHmyJ2z8wACbBDGyGhDA5TVJphdJm9Qo1LYKgc2JBBwEEAEKAAYFAlMT
+McUACgkQsAucyC163ywE0CAAtVzeWwkCwf5ISyWjXosLnbxohXvmq7uh6bdTVoxW
+d1V882pi1UAxU/UZFhb7NSvLaz/hr6+WK0wldl27BF74d6j5rE/3r47KVeOEUuAw
+g/J/tLEfzhWtficG13qnLWyf/iTyP6fCIaFRNHL5PK6Br8xZHS0YF9zRHaCutwTm
+MHV5KinKktgA6Su7YmGwB3f1lirXxUa+RiGAkvg8tIs8Hn+V2x+FDD22QgW4FDh4
+CFYrzz8NsUiIkYawlIHQdnCkQqiFii7MZOG+EsJ86P0lfYbfJfxEY+4nI737YfXH
+SCiWjDTiZG0Hkvrx3qbt0L+Ixydn3oGkrfP+ZngPBj6n7QkALAUFBA34+cylobOD
+jb1nKGM32iqPx50GpaS3KH3WmqqXaR2+6SbUUdZvmwac6vQvtRRfEhVtWB9irXUS
+wn218Ki2EgprAHwrsvLeMJYoR1U9v1UvSrFj5qtiagJYecxDhsM6ozHmcB2PKdE1
+VkIv2vPRzVsfuWeEFnPOSOODsV1Zu00AfceotvAEZd+VdXNkJ3MfWEy7VT52FnG7
+FntzqDXxGkYZLxK6zn0Qh6udvRz65Q3G0nd+USkAmhEBMTr1/La1LfMAibyUyiyL
+0bTRHkjXQc8SpibduFzpcWyrMELVqt1PXgaqtujcjVoHwo00NgJIedBosHVuGBXW
+PpUQx2DkTnIUn5Qkncf8SpgCCGFs6Z3qwcqrc6Pb1Sg6XQ6GpMTYMZO0yaLdSSrS
+vl6wdiJAzvlP1haafInnNFAo6qgaGNgdiSr1r+SpYycFHORCdqimLax5ggOxh1Y+
+V5uZxDDvOSJQUNKO8bDfREke6gIsNRCj7hRutz9F2K566pu5Tn9UAiv1ZfqYxBub
++mkjkctRw61DlqHepJkY1KQTLBphVM9CAADzWPKGRVZtjeYyLNPBap2GbciBQgzr
+/2UCCWAGraxpniCizgkFRPRFaOSp4p0p8DozR3/7xftLPXNgudUbRjxNlRX+uPj4
+0jSEJT1Yrc1/hKgOWvmP13WTbT9/8F2tT+Gd8DTLHa2pXMePOX/dPmF7g7IiEUo9
+Pmci3gFMd0MU1+tgjGZlFs771MZUBnq9rrsX6K5PcikE+UV354mTuF/GdL5Qvwbn
+7DQ0Z88FQ4jTatPucEghTLnO9ahB+5ZlE9ri5hWTKRMZNkX0KlCcgcNpPTJ9Ya3e
+vWUnuhPHmxq7jD0Fc8VLjiKMWSMMiqTrxdgit41ocZinCH54JKtYb41lsH55rx9q
+8crmWdsIKC/Dru7h0MXQW0iU92eMOxiCbXuwNqnzYxWkhjjydhUXmOcufgzfh9Ry
+S8zBC/rw5AkhmuMEZK9Ksskt7SvDPqdd0209JrHt+SA8G4kCHAQQAQIABgUCUxDx
++gAKCRC9U3Jvvaau2NoJEACzaTZ8rR1F8+pIy+JdUfQxmZ80CI2CMCjUt+WieiRz
+3ZH2sgKqwx4T0c53n8938cwXmwdh5xG17sGWDS8VpXUQ3eq8nHPbc12zJFOWM+Ix
+fUIT6zapz18m9x4BjfP78QovU5OyqeE0KtvfwXNvp0OjdoEs70WCaGdmAAcpOd1N
+Einz71DOtDcvRdS7A6jqUwfohemu2iPGj7gvUoykb5gg3Nql4K1zQg+Ymo9RH8Bu
+MA+ebOvwaRaozi9q1Gjg5erXsN+H9TivoMwRiAHdlfeETuGWTFJl0EhtXMHiUjpz
+fA6UsR8LgRMehar8rcsWRY2x8oH6L7Wf2JLc+XnZhAe6wKij5BlbJrJBZc7FcoMJ
+KqxGlgLnMDXL5nmHfaIxiJUU6qe9DSRvGyMB1rr9xxeHp3s9DVR8G6Zaub6ufa7k
+8lfCKbJBru5UD/FrWPMNztiG8fgRg9krmU41ZgvhT5ksZmH5rcFgK7IOowiN9Bxg
+tAclbURX6uNc8CYmWVkR1f+zFS2ChPEebyK+R/VZm0WH3Rz6tacWUtzxr1GryLUU
+wTmxGnyXflD9ySAkjEO60NdwUpofeX9qMzza/sJPpxZsGmy3PHByS/AhK7wnPSlH
+52o9BTVqwY9b6B+oOnswjccgoNyQmtQu84CnGlUKG0y40ho3F1DCHH/l4jrYaxsY
+J4kCHAQQAQIABgUCUxHKygAKCRDABX5xTWlPsl7XEADlAVK6EiOs88azKcH6h/uY
+luxi8F97MOEcyjKrfliRxc5Wt2Ry417ngVelhrIzZPoUi4iT8znazQ+GQWBHS1SY
+51AEqPN0wrbLpMnhM7cHOZ+Yh8za/G8mIpXCInrsFoDsGTm6jBuwhsmD80HJ8ctq
+7DTxrxEfklPuKmQ0ZgbH4wwEmTeU8pzzLlBe9yiDOYVXscG6xffPp6Jml+H2buAb
+B7zZKD/yXuNKgs7AonMLrA6d297wslMAZd9lZ67jmLvWLUhd7LGaA2xVNO2+5yNx
+gMXrdL0wY6NdUY+yy/48b8izD4Hxc0+7wfnZgeND2tgg3av+hbX0sRbIoP7uZgrl
+JKuYuHpgmzQ0Y4eoMklWiWl1o7A8d/vVPuGSOztXUhlQF4nKfEAyn9pFyu4UXjfu
+NueBTQl8Hqii/wN2nMk9vZz2xFN2bnsqvIhjnMA2yoQl5bs576yj8Rbji9eK4ZUg
+WMAkuOkB675DX5rYrXUnDNo3aBS96NQG4CbG/jaM5i0a+ClVg9tVboGksBJZRzUs
+lUQxo8AXS+h74iipJrokigsrq20jO2t/WdxRdxduXu5IOs+hB6ae81JjjHjTFNDu
+uteDnnLNG1dBfebw/RkH3cjp+lsvnAks/mINStMoPEH7/Obvzuku32UvAxglkY47
+QSCJfS4QpkD4G/NUvNFhVokCHAQTAQIABgUCUx5jgwAKCRCtltamwB49Z5zGD/9G
+Is/hfe5iQrSP9NFNChQjaeafjprCMfi30glYsaXM3y2rrXZJh7zKAvOhYcZwbWK2
++9meRzuMX2P2iG3WZ7iyaoPALb1WpPlSQef34g3SJRV1UDVKwYpkJSZCsqIX1bhB
+sr4qjY7pN46B7GX7RrGl79qDy/CUzLciJ1bX/BiB4L3+ls4qrrfomO3+r10ngqzT
+MMmn5hjVWE1BDcuViKYwhW0u/HcTulIVkIp3+Vs6nX54d7nG45YHdmBeLPA5fEFv
+Xe3Q3Q0YwK4r/bZwEqlg2GVg5npYIB7SB7MbU1znuHJvyUpTeO0z8lNWjYjKFedb
+YmO/tQSoJ82GQt9HMaENKxKP4Tk8Wr3SV3y177nD8+6jFWJQZ8lqsQ/GxZukFWPV
+0Eo9dRsQx5v+B5h2213hK4YcOhJaiVtBggUodIKiGz8sW89V2L8EATMb3lAJsvPu
+FiQkuQDOhDlbqAj0yQfyBxKmKCHOfAJ2Q3aYBhvFFXho+DBnPjS9r3QfL1z3UYNc
+Y8tCT9Um+MX6h/2iAodpxtu4xqHd2PavOxLsOA0IFKIcSNOp731VaMPdptgCOoCk
+r7JL7PrH+7QwBPQzCr74rQhiTfuDd1vbmgJGm/D/MuPX5+KemVqOiE+o6xotCb6Y
+KqAWu9CqW2m2L8QuD4hNR9NV+StJWmmNaCoOOXZQXIkCHAQTAQIABgUCUx5k3gAK
+CRAObqOOk0fwLFbMEACNkB4OlOW32GFzalq6uf2vmG9H99+/pBiKyGKvc50obLwK
+x4g8RM/dH6zduHUZ/uJJ08Qvx5h53JVYPOdxk7cXvWVnFJXRQNqgRotOLj9r8Hpa
+Rijh4GrTDXeVrNY1rw+Okw7v2iyNwWQDVOkAzrg/fZ5cZRp9e2Ti0cN4COcGJVQJ
+lHYfa13GuiSUSdc2OisYiQZWXdT8SnjHLb5cL6GRgmDDhOC/FISiu1L+LFIsyXoZ
+9pzFY/43sGTmZJjFnudoxEQHuXmbQZ4Z6o0yAncU2bow0QEQQ/949z4GHNcbXduz
+eXBWXO0kA6z4Lu8YLBk9ihrka3kw1Y4VtvIuWQDuLV7DR/k3/YHZzUUvzGH3c8Vn
++DTK5f/dp2TrK63Py+x4/7E62V9uk/VB+TVy0E6vic0Tk3+KMGUHsVWGZiYXYnso
+ZpVw7/2vMmiPxai35RMe/yi8r7pAYrQc6su9o/WMS1Hxhp3VPa/g4S/mBfk8jse3
+tHof6ZTYAG7t3FhxVGXgHRYa0nnmHf9bLtNOHrAJ4M07z1VB5wMkFJ491nf05oVr
+cyBA3swvliwAilskCfJFFy1yttnOlYY1hLVq7fUAoMfjux9BZglXlmCPp5HlaT2t
+rF6VThREOAI8/Es/zrYAgntLuPFLJcYvjqPEChttT8I0H5KlzoSMfHZybsyW04hG
+BBMRAgAGBQJTHmQGAAoJECKBkcFWfiwXbtEAoNyetrXS29ORsTlasGUPwumYgHaa
+AKCv7Ky87jcPLoQHLp5ugFOyMAXKc4kCHAQTAQIABgUCUx5kQwAKCRAo9QGWxDgC
+6wDkEADFhTXNCEedftkHSLl6GxWCGEi1qI418U+cn01hRCtIY0nVjzGYJaxHamtD
+2cepVSDDdIeXj9C4mcy3na0/mME7+H/tLuZiOv5d5rFIIK6gODmE/69LrCGSLJL/
+1ULCQMqQ8IcKDEkZTmStEKJZPvE/lPmfjn1XGf5gC8zbTg59hN6op/bRuQpQHsIi
+LNn7jEW4X65Ygig/HcRK0Xj6iTEjPc0ITMthLPG5XHUjMeRt+syc65Hl+Q18zwsX
+i6bjp/DKLgDUdLvmXdBSxmsDZgZjJtfE5C/C0Yom/VpVesXCWCZqe++GT/K95dSq
+pZbu0DSVKtrSTqglRJf3gPeVwQUFixjj/tynZHiO/7cZq0pazRrX2qM2ZZB1hkhZ
+VkISzBMUFC8YPkbVDKVYisyUJLdUEKdSB18RcX/ZxLUOsYTo3CsUIwoTH6aL4yQB
+C8rB0OkbJeaZbU/3dlHnycAas4ze6hzvEdiYyb2jrg37qbJwg0CPDevsNkLu/Ie/
+6BqqXcLszWS52aNcyLMPTpjvQIC2gV1f450chsiw9yeMUtsgVFXADO6+8zM1io9B
+1dtEjRXvaiI3jD/jqV+g8TV1i411NHw5sW9c/Jx0UuXDa7gmb6+6VvavIHCF0pLL
+FKUCMmoFePtp0dvdqN1Ysv1RBn7GKl4GGImE0dh5T8pPlXc57IhGBBMRAgAGBQJT
+HmRrAAoJEFk2rKVTkFoB0E0Aniydu8kZjiaob6/OT9hYtOkLaQRqAKCD+l2caV7i
+J/SkLCBgY2relojE2YkCGwQQAQIABgUCVGuZsAAKCRAXscp9ZAiVKMxYD/iZPK6P
+qwHxzEuQjquo8f9f0q1RkX4AZa1j5hvXcqAddUa3HpihHDFnW0UDpptlyonryxUE
+imhD9a22/eIsCz4sF8gAgrp9b1gRBJmJMvtRgVHaFn1u02/5IEvRj7JsWgVXzWFU
+yh9zLaiQtcpfvfFzmdZKtZ3hl0TGl8NFMLxUsownR2tx0iuc8r+NpzzKpxQeXlYS
+98DrDLjE3AKVSZcc8DUBTlwhCZLiXEaQjAKXW+Mxfg8C2E4hQIAsqLWhj8PRQEpG
+w9F0Wdrh9w4ePsKKnzsIaprkRve3vzEuDLvmHV+9DQd/sh+C5W1LjL4h+vC0eXhd
+42lIWrfgOhai2rrwgfSNEFnMAsB1zdWcwMgVSP97sSVfyrqMlDJWXuW8v2KR36ws
+zZnqVPsgQk0Uy53mItUnWblgabSb/udVa+ZI6NeOv1bMGMgKaFqXCn6aHD1X1/E3
+0XtCy2dE6reTAU0zNaRc9ZJOLvxJj8ymP+pUqzkvxLMWAuqpCKsM6YNFlCFkzdfO
+LHxhqGp68jKPUfuG7z6yRkgDZF84k55SUK7td8lHmJpbeiL1+N8Sm9CujQ+TEAbA
+ZFAQjonwnzXWxzI4N+1TWM8BbhLmFpG814JNxyswYdmps6pdKCWHi8zC60dYZ6Mw
+IQZfNWpkeLh7W44NuSJ7pIXuSfEaFCKXX+RwtIpEYXZpZCBOb3J0aCAoT3hmb3Jk
+IENvbXBTb2MpIChJIGRvbid0IHVzZSB0aGlzIGFkZHJlc3MgbXVjaCwgYW5kIGl0
+IHJvdXRlcyB0byB0aGUgc2FtZSBtYWlsYm94IGFzIG15IG1haW4gdXNlciBJRC4p
+IDxub3J0aEBveC5jb21wc29jLm5ldD6JAj0EEwEIACcFAlMOLj4CGwMFCQlmAYAF
+CwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQ+bj6w7SBJVMTXw/+PqnnuxB7vBpk
+/rSeunEmZ+qhswnAqjazDLe7gBAPZXKYe6fIdBu0cZpPc1dqlKUY7s7OAUB/egF6
+nHZI7Ise3fq1PJgh1ZKXHtJv5tDdIHZ7H68H+1f+JxOBDDAIdhbr2sogoBRkeYxv
+qE4H4oZt2Ntp474ThU4RHUjHaIVM8uOo9f2xvy0hCUGUHPs9lM8l293LwAtwTMMq
+unUzwXQTnXcZv+4AffBiR438u1FFizRKxiVsFZanAWdzW4Es5XSpeSZYsqofR63i
+lYukjYYRUYjqtAOqCh34hHdUCp2edENG0alSjHded+T1H8WtFARTihyb7Dd5oMP1
+wA6pIzhhKXl9eSMXqpmFvPbrFiD0dlOes/guY6smy+z0S3BldUe+vqF18hhIHpIC
+NPrPc354Vg0hgnsx3oHKYcD7uMAS/vJrOUfJV+xFSjySHadvX9U10Blv9l18su2b
+AT7s7go04eEleKXJwaPVaYZUVaWFmd9WYay0GoNg8aKjke7Fj8cvPhmhn5gHlbj6
+9BBot7eNcHLEAYvhjiO5kBBYRn0skEPRvgxapwddG+9VkpYWi34IX7kC2c1yaQAu
+GQCio641oribB9PDwU2gmvr5L70XexkxfT6Jh8L3Qur0gcnKKDRuqq9LHAAen131
+DpL+Bv2qmYuUb21cy1JYVBDpbn7j2AqIRgQQEQIABgUCUw4xbwAKCRA7Ok8Kx55b
+amtlAKC3RJdB/Csdw+gnbImjWoVGs+E8yQCgpeMDerQA72Py4Si6qgpDEWFhOhCI
+RgQQEQgABgUCUxNB9AAKCRCgJ0huCLbaUJXOAJ4x85jehtQViJV2WmteRuPQm9aK
+6QCeLA4NmWELWo1X+Yeyf5iVPH3jp+6JBBwEEAEKAAYFAlMTMcUACgkQsAucyC16
+3yw85B//S1KwKCIKAlpqRP4x/815btZlDMFr1ve4VkFoSiCAiQTtreYlKqt6Ia8s
+oApHgvSFmCFo1S0q221ohIlW2At4BVKUVWqkwmEzGP+uImI8JzjfRWkfZukyXwYt
+AbDaaKn6nH1mP8gIsaV3Y5jM7mcfcLZVpiXE/+UVvudGjixonN37BsgHV+9lp/AF
+IMs0rH+Yl0tRFpYfAWCBwP3ZVOzyPbtN1gVKc3LXMhPOBfNG+7knFzI1b0eor/E+
+0vPXZ4pZEknRtulli/95ME0WkzFbvz0fx8AVAYWkJytqDF/gIsjiCq5FNAYWA/7C
+T05Np/3g5IbTSceH+bywHA/BH1PGf+zb8edIRhzKi7GbtcHm0kHSiRTnGEhDqy5F
+RDy8WOI43KMw1gDV2EhS67Ns4oMa2g10RZizTDFIhQeiayxM4irYzz0MmWvr4SMC
++jU+H140MxzD+VeZCbpPTBgFoMAZV5RO4bG6BiPFZ4bKGkXaKteWcR2Z6xkyLrcm
+rV1OQw6tKDslqUJnIgbr4eQy8PmgKZ+WZi7i30YZU62nOzzK8FRgBcxULbF4QF3L
+/T282rBM6YA58pdbBTQZ8RQm5gsl3zhtIC5LVPMYHAtmm9dQpZgrrrRhJYzJOCte
+SJuIh11vbK0b6THLX3jzybmgeetcBzI01gXSAhnczQwJnEjvxRA84blk1zAFbZyI
+j5h9+XGnCLGmupYX5yKoJ+IQyvPJn6yO1cc1gMT30jCK4yRpGcq9spDETxB9k/oC
+tYXu4db0LvqhIsiVYhBzha5x44WxwOysnMCVcSWSo9Xr4HkycbxstwvZVraT9oxy
+9AIjJJ6ZS8ntCNGUofxeSPdojyz6B+LXXrgOPxh5yHVH6vDfFQzgDTISTPO4KNWB
+vOMw2IXhcSNKZzmk8UQBOHTCQ/Pyu52Sb9MDP8d8nPCfVxZjiO+2PpuJnraL+zge
+BlIOm1mLMZelYJXyKF7bkE8yeaBtmCR6bgqpRsIAuw91wxTXG0/B3oiiVW3WXi9O
+611ycF4YvjlB5boAC9t7cxS2MXFFE75Zh8az1LuEkgq+/pJBCf4v+IXxrC3kxxLm
+OPgu1iPVuDigviWbftdAeLQ9bsQSQv0jR+/jGQzyQllxHq5ar4zKUBhxRlke4jHG
+KUOSyYznXQwCGlCgvKWLaY2WMjrPuh5vAWbDKRvORlto9Jgr+pcD7H8Hs1380eE0
+elBcYtlHO0mMSX66ycnjhNRLKzMUHZMw+UO2mhUV0+9fQmfGR5u4996+usiu0kL2
+9x207gBN7RKDZ0/XVuUzXaHuS8rY0fhuSj2C1WIUcCy8sTvR9tWznsCG58GsP99f
+ylrvBtKg3vTLjsyBoZFsfDzVmjvVuIkCHAQQAQIABgUCUxDx+gAKCRC9U3Jvvaau
+2H8PD/4+g4mVKclHKIcrjjKvmB4Y7iqOcNeI/Nn5HB8p5Vz19AekYDWBbJX+KxPY
+x7puto5fNASl7LMAFbNt2PVmNJ2wBO3Duda0weHooIiEKm8aLGNWw2BjQYkwTJKn
+rO7E0I1FkXxOByZQdAMshILthfRUZ+jJ2uNyHgCgU28TNoPSUXgpfA5e5KnQF3LF
+0YuFFHSmOFsCAmMO5w/VbVwZxvsj/0CMW4mrIBjBvcR7zEhDI/cefhzXcU0JC6lO
+auyca7NuYs2ytqWqB83wNXQ0zBZI8X+lB3mstKn1kdC6ajRdM4VPn29Hk4bxqiRW
+9IjL+pmnm6BWiTJV3G3givp8tsbtI77lrLfE/RUinEO16QJCs0oUcgY21n0aFaWo
+3c8VA7ThrAvINiwHwiS/5C5FfpfIzUBcOJXMaqmRdvQJ6Urxj6R/P92pj4dZRYg4
+iJFl7BJ8VeG2ecHaE/d5VB9r52SRCtCAckeLDUmD69xF4k2kYpwqf9FgwP5N6D+9
+zZkL8eqotrIoEfrc4d5Ja3P59Go3Tw6P715yISyTrN+qvHSCnHw+ciYEDN6cfVeo
+mi93qU5202ZYIGDFqWzYoY9AO7rk2CIYkul14jeq5Nm+8EZjtghg+1ADqS00ojoq
+LfxIMmNKDoQx+Mb2PRUiJYbA6MzsX5JCDk7+N5gR1zbrqqg1gYkCHAQQAQIABgUC
+UxHKygAKCRDABX5xTWlPsoY3D/9sDReRlVGBiZ6FQkhRVjv5Vv16mev09oRHinK1
+HDK6gdfOO9UWvsVNoi7qTillY7dsp4bAnFvuu0/FG58cD0LDqJ4gzFO6ZRqlUtPV
+T145SatUYuhXv1x/+pAK7mIoVndMvplcEjP+mJl2R2G/pGVDdJRJ+AS8MGLaO+SR
+5ITUwvDllg2rr7HTnxwvT4mMzKozFWlM09cFMU1LYysoh7YJlwMMcyEr7Pc7D+G8
+r6KSQJA2PNVceCICiEvNOd+BsBQuEuAQ3qnBfQ2Hr6GyTtkGKbu96b8CjV+U2chf
+BFe9l2ulVhtN2X+RwLVuYHFBipg9oOhLZ2cHjTSPV96+Oiad+UYplTufQphumjHa
+1FeH6M1lgB7cANxBdGbY8ZFc0wtbYkCFgsUjSFlYS4AbVcTrdlQvEK36WsQOP1uV
+s/pbsCDgH+dKtRAPfUzSre8gslyj9oGuyqnTsIyCpavSbL09UPPBxQEUsAdlvOCs
+p8KpXT4/4DRcJvvMVeBtYHHrEyJ1oIdWJd58m4Rls71Cuc6OCJQYkLJqWkbFtegA
+rqoVYEXPjXCP0zBkGblsZKK5o5r9m6tDDbzqamSg0AfQgDhbvWGtjPXLj40VB9cI
+J8ntBYyuFAO64llK1qWS8BlCSismWx7EcVpXIr3umCPGI/aa4/S9hlfrFqOGmZy+
+1+P1sYkCHAQTAQIABgUCUx5jhQAKCRCtltamwB49Z/KND/4kU2frZUkl2GXF/DO5
+wj8wk+9nM8zkhqC6BMO8quJviNW0Bhl4OY4jwVjiasYwcPppDyZWW9WAAprECCI7
+t89mbvRC/B6KIl9n5w6jCgg/jAITZ+YajBMmZxdD+m8Bc47nDp3iQubsWMzlvA+O
+OeJWc0Fnlcv49OzpaU3gAD52evZTyrpjRJ2zkggLxJVmpOQVmqHdg/GGicJHVkSo
+YfDyO1IAoAQkzN1OZRBx981xa4hCLIF8DOuBC6Re+SgelVcODYe2dMQnDQuhgfeo
+DTO6Raf2UDdfYcV1tbEZwO5+UV1sPbRhfyu2PYpTYWoceDPu8SxKTRFbSGpX8Zx2
+0PMkLsPYr8+iY4VciLOJ28CKwooU6rGm/LNGTtKRymd7oalHiM4DJ//vVEcZ3P5X
+666yTbgZ8n8Ui95KERGSmSQbr/VbsTivUaeL00On2IxL87j+31gjAC/8zG/it/5f
+8MRozyDl2R2k05wPZtg8v48QuarKbLR4fzI5flV9Jqmcyn6THSXmUJftfY+cGHMk
+/SxCtzpL4w/v7T7nnKzD7PuWPVd7KGJ0A70123A5mbw1KvaQfEJotwW8Ym1fBaFv
+21A+iz7KrmGkWq8I8yFpiIuvjTF56eJLp6AM6Xe+K7mxvCJnn806HT1qe8iFRryb
+GeaGoLj1K4vbJnxFoU1wum5JmIkCHAQTAQIABgUCUx5k3wAKCRAObqOOk0fwLNCT
+D/9ivD2rhfPAoQ5KSkaXdAPHug1jdYkZCUyK8XJl7hM1yFKwRDEjpYZOb5IASo2D
+uSvB5oys1lfWaYmM0LgSL2ONhvpdsrK21y90dH5o+DM81hhVSxKQyvXOmg24G8XJ
+rco+y031iDHdsjNfJH5H/OWITTqKuDKmecQs3Z48zTD9Vr3SkmVlWtyptlc19Jzh
+M5FLYIH3Zzo1qmDyFtMW7h+H1RkkgWH+EIQu0oLePEOTkKNcZm8e1+qncgTmcdH0
+LQr9lonWdR1tb0dB00OUa5pmzFaVqmAHYI/GmUOyEIGuiAAb4N5JYTKxEZAxxELk
+aTbVhGmzh89mqt9tuFIwjDzY9vgh50EM+7XQPqk6dwm2RufxU3b/ueEUNQyWij3P
+oJCBZYE7qCsLL8mxk+KLMSmsmglJB77TJm1XE7C43CBpTXMv7MVnjIibVp6KVfsE
+MtL7A/mGISZHWxuEgG8V4CwM9eXU3jnVdg6yXvYu1JN/7+qebNRD5SG9a71nXQU4
+bEsNtYsC+FcF2BhC4JlWME32O7kRueBrG20O7UlbCipPPdAwEAQW4qHPlO7PQic3
+AqUmvp5ovyAxzMwXkkMYDNdo58eh+Srsi0uOFMXP48bBQLcG/b1/PBKXaVNlBEZP
+yxzo8kp7Dh3+gVHsNJ08HcSSf5/ExJg111wTqVI9gREje4hGBBMRAgAGBQJTHmQI
+AAoJECKBkcFWfiwXw18AnAhNT8OumByLV/egAwlovu4x6B9eAKDDUQa3pWjcH1RD
+BQgY56nsRmP3fIkCHAQTAQIABgUCUx5kRAAKCRAo9QGWxDgC669YD/sG/FxpU2rx
+8ajhDWRou7S6VkcOc9LqoNjmgklqCDdVzYpb0MyTeYQB6tkkrCrH0SiVPAiV0582
+U1AS5iujoxBEoeqULIQOCOjtDsUFpUSiWBKN75b4SIQGdUjZRSlW2WpEiznOIew9
+zFoWFnUgu2Oa6mCHEX8RJr5hnq541xmwSahnwoLC7O2ZzZjtsnoS0GC3I2PYW3RZ
+S5Vb2qhGMur23eGMycqxud6PAVL9sHrdtaFpkXdxRTTcxdicHMYca783ZXm+Ikyg
+QTfA850ezt2EeF8DcYT/r3Q0eqTBxgTEaJOUyDoeDAbaZUtSw0dEAcOE5zwfP222
+WYdXTaeGJj6HyZyyW3/BLn9Sp8dzsc0MxIzjSTWihE6D3Kk9FXK+AZEl4nPzah5G
+oIA7QSyEIQsQWOjhcU6Q4yy1ACns+2nlZP2IWsbolIMgfPXCpGT0SW0lF7bGIvRy
+ZnddnvIoKPi5uvto9woq6a+6CD6rF7kdg8j26mjxVcysX0T+Ajb2DWCEAjYFRBvw
+I04HLZT4owpVQLLME0f8GIOuI6fYgGR4nXLb9obrvjU2We3/6ShqvmDyNSH/xJ05
+qIsGemuhisAk7RRrZPMphBwP9BhxvNljjzukIWd6ckkEQe61DixjyYFccD7b4C4z
+ThRfbqtwL69fmUPb/wzs4bfqPwU2Vav6yYhGBBMRAgAGBQJTHmRsAAoJEFk2rKVT
+kFoBeNUAnRR70AEUF099PtlG6DGtgZnq7AJLAKC8dPOV27zhMZc8J+Kqgdo7H+HE
+zYkCHAQQAQIABgUCVGuZsAAKCRAXscp9ZAiVKAktD/4hDcYJoDMQMbq1aApcfl3G
+DDohSdqpquAigGNXZ1DjjVcIe09mnER+20fZOCYMwemzcczqjMj7OB961bKyZG4Z
+DaQ63vBPWIa4Z1l8u0nmQp1bAxl5BYGnFeguAIgcn5bQGN8EG3guEEOqz3ItDG+R
+OX6VUitRjJQcAc/MVYvk3F7flnRt9WlAOlsBMW/xAFaXamlABAH2+IPYfCeZfWEl
+pdDl40xuH/MB5YzsaBqROezakDh9R172SnebFgibeqBGtIwaZ1KvnvKbWPuCZZZ/
+DuyTMkghAKgp7U28mtR2xZ0tMsT5sjXgZTMDocnR3zkgMeDw8NACpYD3Q5GES5Z2
+TImXXzNbiRlmkcZUwSEEhaD2sG2n5o28OHidnUq9LrRjfT7qH1y4ChbTvpF83XU5
+7OtyqXEDav8RORA4gMOKoyLeQf5PEc4QhpSObOKYT+acaJlpc8I7BKgjy/muqO/m
+WkdKRMkNwmlAEPpI161gE2LbRfd4UqtaikVUdQzFuEjt0sOfq2676k/Dm5ubMx1X
+PuF+dS9e6kwPUfLs9bcrIyZHrhHWx0nW7Emg/GVsuMbzaWYSxBWs5PfoMkR/fl/b
+g4INzoGKiWl3W6TAQdgYwlzzlOSy47ETXjsk0eRAIzbwN8E4Sj+FHUqWBAVq9tU1
+GOycWaP+95muxZyQSTWKCbQyRGF2aWQgTm9ydGggKEFTRiBDb21taXR0ZXIgSUQp
+IDxkbm9ydGhAYXBhY2hlLm9yZz6JAj0EEwEIACcFAlVu+0kCGwMFCQlmAYAFCwkI
+BwMFFQoJCAsFFgIDAQACHgECF4AACgkQ+bj6w7SBJVPdNg/8CqkzQThpSx/bWEed
+e6es+DWvVzppNiwwM/y0X24EbObQARGOc60Bqh0GcnGO/oAj8Dr5QozutUmF1ZiE
+RX/BSBTdQvfGDtWj4I4jf7rbusFoqulF8ECAWjiF58xLg657NpVteVxbmRKTtLgD
+H7BRTaCsxgqjt/2jjWf3LhO9QqosDYBZ6i109aSgNfSrQwYHRi0qQA50Yp0tLpIo
+7udcr3GNZZS71MhBSwfsmwP0tEBhI5WcDkgRY0IX1VGpgapO6fwRqB2NOeBI53ap
+4yZq4Rhc2Q+kZS0v2Uqg/42JfKasrKzhkL2PQI+0d7rFatgsI653viobo9Y/3L08
+Jq+u6st0htNLo3XHxKMwvV6CXVBWA6nylOGjLnzA/sRkpkKxhSJ1xktztPrn0x7e
+NtcXSq6tZTW+uHmdjXfLyArlqgIVOxotLpRPjI1JAcYnwkv00KWtVqzpMGKmwyoO
+1QOneHE52xbhx/yfPBK7uZHXXtMb44He3CfZM0Jfh7gZwVu+6k5WZTuEysBBTuNL
+86wxbSBwNRByIxVL64Fi6UsdvbzE7UJmFohygeo9myZRgKLEYjnWellsaoEkgJ1P
+s1RczyOPJbVeU0PQPWWn+pVqqjgQxE6zaRu+JfVuMyHQM3SnmoyuZfciCVrJd4EH
+h+Qrcq4frzvFFmkB7sdx0//Jp7u5Ag0EUw4tWwEQAMOW2F/ARC8Qaco29TnCvZtz
+q6szMgWoMpxd1vfOi+i6EifFAcHDEdyBIa2CW/QMh9zpRQamO82iIOC9wBmcN4iu
+Bi4ZH3wlxAAfuEMSwdsmPVfZQCgODZrlkCGr/4bgHnX5VGFiwlzZUUDemfIzleIo
+d7FzHZ2zIPxUQbMmPriS/cxUry635fZ0Y5YRlgq9AJzif0hNnx7PnZimxVx0hVBA
+OJmDcc4/st3YwKvCqEuKgaJDJNE82WE5a9KldgPtQdykmyxaKMneht9b8St4lZkB
+Sdz90JhSj1GPsDNl88ui+BuIbgGWobAYVW9gY2h/lP95MM1YNtdBAdcyjGe4RhA6
+T+JD5eznikI5EIOyb0zH9CiVDO0CZVH7tuGtJwBVaRSDTtUdNeR4k6xczFjWBmRr
+3n9en+JD/LrYPN5b6P5Cf/SC5YhVD6scaCKdQFOBOClEKxa2dr5eu/7JgsyJCayA
+dZhsHvph0rMVnbSK5DepiRAjJRryXiJvFOD4PbRAyoaA25cSRbjYVN9TLdMhCnBZ
+Nol5z/AxT6ZH2E6CmcvlFfVE6UhvZFfmF7zHTFxvU/eT4kdd9xJZcY1I+y+5bzm3
+LuKIe5W94DpPJ6aebyBX2rr5OXrK3jILjsk+Zof0nxk3SOOKcrLBhs0dtbA8gv7A
+YIW5c9iKjl9X8i3CiSjVABEBAAGJAiUEGAEIAA8FAlMOLVsCGwwFCQlmAYAACgkQ
++bj6w7SBJVNe4BAAxmSonXAhNxohcplTKZpZvzqzU0+92PGIj6D17rJDy18N1DI6
+7bU1XDjIsR5OC/JknK2nuJKimhIymDJZv+b2VLKEZF+LW4HzPTsdEdHMyzW7WssA
+uQGSnHmELagkUnXLk12zbcieugctN8y2H9efuTL3tl9ARkR/Ns4MhVgzP+2XclOW
+V04fa8GLW9dC0MGzZQJvMk2mzs/2vV7/v1ve3IRZqeLDmpkmZSNTpdB3tUmFARKq
+SduvInOfNqPIcRheVz2TwhghRnwkzJHoJ9Bk+rCThU6QLKZv8o4bf6YKPMkY5z+l
+6S9QXf33vNqwIUDn5qxayT8kRz7/GSChJ9twXVVflb5VTTP5FVNUNjDYxCuHBPlC
+UisOlrHjk/jYf8lX3+JFiUMZN+M7wZIakHe4SyRjMEHWUCnC+iObMP0KJ+DoQJK1
+0Hqhah9I+iJZk8n2WkYp4kt6QSwFi+g4QaLQ6byVbBeYA5JPTikQJlpbVgKrKr0C
+LaodHywrloaA6lW+e+WMlx9T2t13s1XQNxM3WnnRYYMh/nEcgtcw7mZRL6h55erS
+NPfXcVvbo0b+iing/HrOtjK4xU0lypGlQlXcfQcMr0RaNAMv4ExgIzQj38jMzNaw
+9a52BMKzZF8059sQF4VfrIVt2eZZyRUa84QI9R3um3tAho1ORUaOtEyOJn8=
+=keWk
+-----END PGP PUBLIC KEY BLOCK-----
+pub   4096R/27B9F635 2015-06-22
+uid                  Dominik Stadler <ce...@apache.org>
+sub   4096R/EF9D5EA6 2015-06-22
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+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
+kg==
+=rPGm
+-----END PGP PUBLIC KEY BLOCK-----

Modified: poi/branches/common_sl/build.xml
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/build.xml?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/build.xml (original)
+++ poi/branches/common_sl/build.xml Sun Jul 19 19:00:32 2015
@@ -47,8 +47,8 @@ under the License.
 
     <description>The Apache POI project Ant build.</description>
 
-    <property name="version.id" value="3.12-beta1"/>
-    <property name="version.rel" value="REL_3_12_BETA1"/>
+    <property name="version.id" value="3.13-beta1"/>
+    <property name="version.rel" value="REL_3_13_BETA1"/>
 
     <property environment="env"/>
     <!-- the repository to download jars from -->
@@ -56,7 +56,7 @@ under the License.
 
     <property name="main.lib" location="lib"/>
     <property name="ooxml.lib" location="ooxml-lib"/>
-	<property name="compile.lib" location="compile-lib"/>
+    <property name="compile.lib" location="compile-lib"/>
     <property name="forrest.home" value="${env.FORREST_HOME}"/>
 
     <!-- compiler options options -->
@@ -82,7 +82,11 @@ under the License.
     <property name="POI.testdata.path" value="test-data"/>
     <property name="java.awt.headless" value="true"/>
     <property name="additionaljar" value=""/>
-    <property name="http_proxy" value="${env.http_proxy}"/>
+	<condition property="http_proxy" 
+	   value="${env.http_proxy}"
+	   else="">
+		<isset property="env.http_proxy"/>
+	</condition>
 
     <!-- Main: -->
     <property name="main.resource1.dir" value="src/resources/main"/>
@@ -175,8 +179,8 @@ under the License.
               value="${repository.m2}/maven2/org/apache/xmlbeans/xmlbeans/2.6.0/xmlbeans-2.6.0.jar"/>
 	
     <!-- coverage libs -->
-    <property name="jacoco.zip" location="${main.lib}/jacoco-0.7.2.201409121644.zip"/>
-    <property name="jacoco.url" value="${repository.m2}/maven2/org/jacoco/jacoco/0.7.2.201409121644/jacoco-0.7.2.201409121644.zip"/>
+    <property name="jacoco.zip" location="${main.lib}/jacoco-0.7.4.201502262128.zip"/>
+    <property name="jacoco.url" value="${repository.m2}/maven2/org/jacoco/jacoco/0.7.4.201502262128/jacoco-0.7.4.201502262128.zip"/>
     <property name="asm.jar" location="${main.lib}/asm-all-5.0.3.jar"/>
     <property name="asm.url" value="${repository.m2}/maven2/org/ow2/asm/asm-all/5.0.3/asm-all-5.0.3.jar"/>
 	
@@ -194,14 +198,14 @@ under the License.
     <property name="ooxml.xsds.src.jar" location="${ooxml.lib}/ooxml-schemas-1.1-sources.jar"/>
     <property name="ooxml.xsds.jar" location="${ooxml.lib}/ooxml-schemas-1.1.jar"/>
 
-	<!-- additional schemas are packed into the poi schemas jar, -->
-	<!-- so we don't have to care about a seperate versioning of the original ooxml schemas -->
-	<property name="ooxml.xsds.dc.1" value="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd"/>
-	<property name="ooxml.xsds.dc.2" value="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd"/>
-	<property name="ooxml.xsds.dc.3" value="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcmitype.xsd"/>
-	<property name="ooxml.xsds.dsig.1" value="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/>
-	<property name="ooxml.xsds.dsig.2" value="http://uri.etsi.org/01903/v1.3.2/XAdES.xsd"/>
-	<property name="ooxml.xsds.dsig.3" value="http://uri.etsi.org/01903/v1.4.1/XAdESv141.xsd"/>
+    <!-- additional schemas are packed into the poi schemas jar, -->
+    <!-- so we don't have to care about a seperate versioning of the original ooxml schemas -->
+    <property name="ooxml.xsds.dc.1" value="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd"/>
+    <property name="ooxml.xsds.dc.2" value="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd"/>
+    <property name="ooxml.xsds.dc.3" value="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcmitype.xsd"/>
+    <property name="ooxml.xsds.dsig.1" value="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/>
+    <property name="ooxml.xsds.dsig.2" value="http://uri.etsi.org/01903/v1.3.2/XAdES.xsd"/>
+    <property name="ooxml.xsds.dsig.3" value="http://uri.etsi.org/01903/v1.4.1/XAdESv141.xsd"/>
     <property name="ooxml.xsds.ozip.2" value="OfficeOpenXML-Part2.zip"/>
     <property name="ooxml.xsds.izip.2" value="OpenPackagingConventions-XMLSchema.zip"/>
     <property name="ooxml.xsds.url.2"
@@ -263,17 +267,18 @@ under the License.
         <pathelement location="${ooxml.xsds.jar}"/>
         <path refid="main.classpath"/>
         <pathelement location="${main.output.dir}"/>
-        <pathelement location="${scratchpad.output.dir}"/>
         <pathelement location="${ooxml.security.jar}"/>
-    	<!-- classes are omitted on test cases outside the xml-dsign area to avoid classpath poisioning -->
+        <!-- classes are omitted on test cases outside the xml-dsign area to avoid classpath poisioning -->
         <!--path refid="ooxml.xmlsec.classpath"/-->
+        <!-- Used only for ExtractorFactory, see #57963 -->
+        <pathelement location="${scratchpad.output.dir}"/>
     </path>
 
     <path id="test.classpath">
         <path refid="main.classpath"/>
         <pathelement location="${main.output.dir}"/>
         <pathelement location="${main.output.test.dir}"/>
-    	<pathelement location="${additionaljar}"/>
+        <pathelement location="${additionaljar}"/>
     </path>
 
     <path id="test.scratchpad.classpath">
@@ -281,7 +286,7 @@ under the License.
         <pathelement location="${main.output.test.dir}"/>
         <pathelement location="${scratchpad.output.dir}"/>
         <pathelement location="${scratchpad.output.test.dir}"/>
-    	<pathelement location="${additionaljar}"/>
+        <pathelement location="${additionaljar}"/>
     </path>
 
     <path id="test.ooxml.classpath">
@@ -289,14 +294,14 @@ under the License.
         <pathelement location="${ooxml.output.dir}"/>
         <pathelement location="${ooxml.output.test.dir}"/>
         <pathelement location="${main.output.test.dir}"/>
-    	<pathelement location="${additionaljar}"/>
+        <pathelement location="${additionaljar}"/>
     </path>
 
     <path id="test.integration.classpath">
         <path refid="scratchpad.classpath"/>
         <path refid="ooxml.classpath"/>
         <pathelement location="${main.output.test.dir}"/>
-    	<pathelement location="${ooxml.output.dir}"/>
+        <pathelement location="${ooxml.output.dir}"/>
         <pathelement location="${integration.output.test.dir}"/>
     </path>
 
@@ -331,7 +336,7 @@ under the License.
         <pathelement location="${excelant.output.dir}"/>
         <pathelement location="${excelant.output.test.dir}"/>
         <pathelement location="${main.output.test.dir}"/>
-    	<pathelement location="${additionaljar}"/>
+        <pathelement location="${additionaljar}"/>
     </path>
 
     <path id="javadoc.classpath">
@@ -360,6 +365,8 @@ under the License.
     - compile     Compile all files from main, ooxml and scratchpad
     - test        Run all unit tests from main, ooxml and scratchpad
     - jar         Produce jar files
+    - jar-src     Produce source-jar files
+    - assemble    Produce the zipped distribution files
     - site        Generate all documentation (Requires Apache Forrest)
     - dist        Create a distribution (Requires Apache Forrest)
         </echo>
@@ -409,6 +416,7 @@ under the License.
     	<!-- remove previous versions of third-party jars to prevent them from lingering around, 
     		we often had hard-to-find build/CI-problems because of these! -->
 		<mkdir dir="${main.lib}"/>
+		<mkdir dir="${compile.lib}"/>
 		<delete verbose="true">
 			<fileset dir="${main.lib}">
 	    		<include name="ant-1.8*"/>
@@ -417,9 +425,13 @@ under the License.
 				<include name="commons-logging-1.1.jar"/>
 				<include name="jacoco-0.6*"/>
 				<include name="jacoco-0.7.1*"/>
+				<include name="jacoco-0.7.2*"/>
+				<include name="jacoco-0.7.3*"/>
 				<include name="log4j-1.2.13*"/>
 				<include name="org.jacoco.*-0.6.*"/>
 				<include name="org.jacoco.*-0.7.1*"/>
+				<include name="org.jacoco.*-0.7.2*"/>
+				<include name="org.jacoco.*-0.7.3*"/>
 				<include name="dom4j*"/>
 				<include name="apache-rat-0.10*"/>
 				<include name="xercesImpl-*.jar"/>
@@ -721,7 +733,7 @@ under the License.
 			<headfilter lines="16"/>
 			</filterchain>
 		</copy>
-		<copy todir="${scratchpad.src}">
+		<copy todir="${main.src}">
 			<fileset dir="${geometry.output.tmpdir}" includes="**/*.java"/>
 		     <filterchain>
 		         <concatfilter prepend="${geometry.output.tmpdir}/apache-license.txt"/>
@@ -976,7 +988,7 @@ under the License.
             <xml destfile="${coverage.dir}/coverage.xml"/>
         </jacoco:report>        
         
-        <echo message="Coverage results are available at coverage\index.html, coverage/coverage.xml" />
+        <echo message="Coverage results are available at ${coverage.dir}/index.html, ${coverage.dir}/coverage.xml" />
     </target>
 
     <target name="-test-main-check">
@@ -1280,7 +1292,7 @@ under the License.
             description="Generates the API documentation">
         <javadoc verbose="false" author="true" destdir="${apidocs.report.dir}"
                  windowtitle="POI API Documentation" use="true" version="true" 
-                 maxmemory="384M" additionalparam="-notimestamp" 
+                 maxmemory="384M" additionalparam="-notimestamp" locale="en_US" 
                  classpathref="javadoc.classpath">
             <packageset dir="${main.src}" defaultexcludes="yes">
                 <include name="org/apache/poi/**"/>
@@ -1440,7 +1452,7 @@ under the License.
         </jar>
     </target>
 
-    <target name="jar-src" description="Sources for Maven">
+    <target name="jar-src" depends="compile-all, compile-version, -manifest" description="Sources for Maven">
         <jar destfile="${dist.dir}/${jar.name}-${version.id}-sources-${DSTAMP}.jar"
              manifest="build/poi-manifest.mf">
             <fileset dir="${main.src}"/>
@@ -1508,12 +1520,12 @@ under the License.
         <mkdir dir="${build.maven.javadocs}"/>
         <javadoc verbose="false" author="false" destdir="${build.maven.javadocs}"
                  windowtitle="POI API Documentation" use="false" version="false" 
-                 maxmemory="384M" additionalparam="-notimestamp -quiet"
+                 maxmemory="384M" additionalparam="-notimestamp -quiet" locale="en_US"
                  classpathref="javadoc.classpath">
             <packageset dir="${srcfolder}" defaultexcludes="yes">
                 <include name="org/apache/poi/**"/>
             </packageset>
-            <link href="https://poi.apache.org/apidocs" packagelistLoc="build/tmp/site/build/site/apidocs"/>
+            <link offline="true" href="https://poi.apache.org/apidocs" packagelistLoc="build/tmp/site/build/site/apidocs"/>
         </javadoc>
         <jar destfile="${dist.dir}/${jarname}-${version.id}-javadocs-${DSTAMP}.jar"
              manifest="build/poi-manifest.mf">
@@ -1628,6 +1640,14 @@ under the License.
         <echo>Use ${dist.dir}/multisign.sh to create md5 checksums and GPG signatures</echo>
     </target>
 
+    <target name="osgi" depends="mvn-install">
+       <echo message="Building OSGi bundle via Maven" />
+       <mvn:mvn pom="osgi/pom.xml">
+          <arg value="-Dpoi.version=${version.id}" />
+          <arg value="install" />
+       </mvn:mvn>
+    </target>
+
     <target name="dist" depends="clean, compile-all, test-all, site, jar, release-notes, assemble"
             description="Creates the entire distribution into build/dist, from scratch">
     </target>
@@ -1744,7 +1764,30 @@ under the License.
 			<sourcePath path="src/java" />
 			<sourcePath path="src/ooxml/java" />
 			<sourcePath path="src/scratchpad/src" />
-		</findbugs>		
+		</findbugs>
+		<findbugs home="${findbugs.home}" output="xml" outputFile="build/findbugs.xml"
+			excludeFilter="src/resources/devtools/findbugs-filters.xml">
+			<fileset dir="${dist.dir}">
+				<include name="poi-${version.id}-*.jar"/>
+				<include name="poi-scratchpad-${version.id}-*.jar"/>
+				<include name="poi-ooxml-${version.id}-*.jar"/>
+				<exclude name="poi-*${version.id}-sources-*.jar"/>
+				<exclude name="poi-*${version.id}-javadocs-*.jar"/>
+			</fileset>
+			<auxClasspath path="${compile.lib}/bcpkix-jdk15on-1.51.jar" />
+			<auxClasspath path="${compile.lib}/bcprov-ext-jdk15on-1.51.jar" />
+			<auxClasspath path="${compile.lib}/slf4j-api-1.7.7.jar" />
+			<auxClasspath path="${compile.lib}/xmlsec-2.0.1.jar" />
+			<auxClasspath path="ooxml-lib/ooxml-schemas-1.1.jar" />
+			<auxClasspath path="ooxml-lib/ooxml-security-1.0.jar" />
+			<auxClasspath path="ooxml-lib/xmlbeans-2.6.0.jar" />
+			<auxClasspath path="lib/commons-codec-1.9.jar" />
+			<auxClasspath path="lib/commons-logging-1.1.3.jar" />
+			<auxClasspath path="lib/junit-4.12.jar" />
+			<sourcePath path="src/java" />
+			<sourcePath path="src/ooxml/java" />
+			<sourcePath path="src/scratchpad/src" />
+		</findbugs>
 	</target>
 
 	<target name="test-scratchpad-download-resources">

Modified: poi/branches/common_sl/doap_POI.rdf
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/doap_POI.rdf?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/doap_POI.rdf (original)
+++ poi/branches/common_sl/doap_POI.rdf Sun Jul 19 19:00:32 2015
@@ -21,20 +21,54 @@
     <category rdf:resource="http://projects.apache.org/category/library" />
     <release>
       <Version>
+        <name>Apache POI 3.12</name>
+        <created>2015-05-11</created>
+        <revision>3.12</revision>
+      </Version>
+    </release>
+    <release>
+      <Version>
+        <name>Apache POI 3.11</name>
+        <created>2014-12-21</created>
+        <revision>3.11</revision>
+      </Version>
+    </release>
+    <release>
+      <Version>
+        <name>Apache POI 3.10.1</name>
+        <created>2014-08-18</created>
+        <revision>3.10.1</revision>
+      </Version>
+    </release>
+    <release>
+      <Version>
+        <name>Apache POI 3.10</name>
+        <created>2014-02-08</created>
+        <revision>3.10</revision>
+      </Version>
+    </release>
+    <release>
+      <Version>
         <name>Apache POI 3.9</name>
         <created>2012-12-03</created>
         <revision>3.9</revision>
       </Version>
+    </release>
+    <release>
       <Version>
         <name>Apache POI 3.8</name>
         <created>2012-03-26</created>
         <revision>3.8</revision>
       </Version>
+    </release>
+    <release>
       <Version>
         <name>Apache POI 3.7</name>
         <created>2010-10-29</created>
         <revision>3.7</revision>
       </Version>
+    </release>
+    <release>
       <Version>
         <name>Apache POI 3.6</name>
         <created>2009-12-14</created>

Modified: poi/branches/common_sl/legal/NOTICE
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/legal/NOTICE?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/legal/NOTICE (original)
+++ poi/branches/common_sl/legal/NOTICE Sun Jul 19 19:00:32 2015
@@ -1,5 +1,5 @@
 Apache POI
-Copyright 2003-2014 The Apache Software Foundation
+Copyright 2003-2015 The Apache Software Foundation
 
 This product includes software developed by
 The Apache Software Foundation (http://www.apache.org/).

Propchange: poi/branches/common_sl/osgi/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sun Jul 19 19:00:32 2015
@@ -0,0 +1 @@
+target

Modified: poi/branches/common_sl/src/examples/src/org/apache/poi/hpsf/examples/ReadCustomPropertySets.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/examples/src/org/apache/poi/hpsf/examples/ReadCustomPropertySets.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/examples/src/org/apache/poi/hpsf/examples/ReadCustomPropertySets.java (original)
+++ poi/branches/common_sl/src/examples/src/org/apache/poi/hpsf/examples/ReadCustomPropertySets.java Sun Jul 19 19:00:32 2015
@@ -93,12 +93,12 @@ public class ReadCustomPropertySets
             out("   No. of sections: " + sectionCount);
 
             /* Print the list of sections: */
-            List sections = ps.getSections();
+            List<Section> sections = ps.getSections();
             int nr = 0;
-            for (Iterator i = sections.iterator(); i.hasNext();)
+            for (Iterator<Section> i = sections.iterator(); i.hasNext();)
             {
                 /* Print a single section: */
-                Section sec = (Section) i.next();
+                Section sec = i.next();
                 out("   Section " + nr++ + ":");
                 String s = hex(sec.getFormatID().getBytes());
                 s = s.substring(0, s.length() - 1);

Modified: poi/branches/common_sl/src/examples/src/org/apache/poi/hssf/usermodel/examples/CreateCells.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/examples/src/org/apache/poi/hssf/usermodel/examples/CreateCells.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/examples/src/org/apache/poi/hssf/usermodel/examples/CreateCells.java (original)
+++ poi/branches/common_sl/src/examples/src/org/apache/poi/hssf/usermodel/examples/CreateCells.java Sun Jul 19 19:00:32 2015
@@ -50,5 +50,7 @@ public class CreateCells {
         FileOutputStream fileOut = new FileOutputStream("workbook.xls");
         wb.write(fileOut);
         fileOut.close();
+
+        wb.close();
     }
 }

Modified: poi/branches/common_sl/src/examples/src/org/apache/poi/ss/examples/ConditionalFormats.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/examples/src/org/apache/poi/ss/examples/ConditionalFormats.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/examples/src/org/apache/poi/ss/examples/ConditionalFormats.java (original)
+++ poi/branches/common_sl/src/examples/src/org/apache/poi/ss/examples/ConditionalFormats.java Sun Jul 19 19:00:32 2015
@@ -21,6 +21,8 @@ package org.apache.poi.ss.examples;
 
 import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.ConditionalFormattingThreshold.RangeType;
+import org.apache.poi.ss.usermodel.IconMultiStateFormatting.IconSet;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
@@ -31,10 +33,9 @@ import java.io.IOException;
  * Excel Conditional Formatting -- Examples
  *
  * <p>
- *   Based on the code snippets from http://www.contextures.com/xlcondformat03.html
+ *   Partly based on the code snippets from 
+ *   http://www.contextures.com/xlcondformat03.html
  * </p>
- *
- * @author Yegor Kozlov
  */
 public class ConditionalFormats {
 
@@ -46,6 +47,7 @@ public class ConditionalFormats {
 
         sameCell(wb.createSheet("Same Cell"));
         multiCell(wb.createSheet("MultiCell"));
+        overlapping(wb.createSheet("Overlapping"));
         errors(wb.createSheet("Errors"));
         hideDupplicates(wb.createSheet("Hide Dups"));
         formatDuplicates(wb.createSheet("Duplicates"));
@@ -53,6 +55,9 @@ public class ConditionalFormats {
         expiry(wb.createSheet("Expiry"));
         shadeAlt(wb.createSheet("Shade Alt"));
         shadeBands(wb.createSheet("Shade Bands"));
+        iconSets(wb.createSheet("Icon Sets"));
+        
+        // TODO Add colour scales, data bars etc, see bug #58130
 
         // Write the output to a file
         String file = "cf-poi.xls";
@@ -60,7 +65,7 @@ public class ConditionalFormats {
         FileOutputStream out = new FileOutputStream(file);
         wb.write(out);
         out.close();
-
+        System.out.println("Generated: " + file);
     }
 
     /**
@@ -139,6 +144,71 @@ public class ConditionalFormats {
 
         sheet.getRow(2).createCell(4).setCellValue("<== Condition 1: Formula Is =$B2>75   (Blue Fill)");
     }
+    
+    /**
+     * Multiple conditional formatting rules can apply to
+     *  one cell, some combining, some beating others.
+     * Done in order of the rules added to the 
+     *  SheetConditionalFormatting object
+     */
+    static void overlapping(Sheet sheet) {
+        for (int i=0; i<40; i++) {
+            int rn = i+1;
+            Row r = sheet.createRow(i);
+            r.createCell(0).setCellValue("This is row " + rn + " (" + i + ")");
+            String str = "";
+            if (rn%2 == 0) str = str + "even ";
+            if (rn%3 == 0) str = str + "x3 ";
+            if (rn%5 == 0) str = str + "x5 ";
+            if (rn%10 == 0) str = str + "x10 ";
+            if (str.length() == 0) str = "nothing special...";
+            r.createCell(1).setCellValue("It is " + str);
+        }
+        sheet.autoSizeColumn(0);
+        sheet.autoSizeColumn(1);
+        
+        sheet.getRow(1).createCell(3).setCellValue("Even rows are blue");
+        sheet.getRow(2).createCell(3).setCellValue("Multiples of 3 have a grey background");
+        sheet.getRow(4).createCell(3).setCellValue("Multiples of 5 are bold");
+        sheet.getRow(9).createCell(3).setCellValue("Multiples of 10 are red (beats even)");
+        
+        SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
+        
+        // Condition 1: Row divides by 10, red (will beat #1)
+        ConditionalFormattingRule rule1 = 
+                sheetCF.createConditionalFormattingRule("MOD(ROW(),10)=0");
+        FontFormatting font1 = rule1.createFontFormatting();
+        font1.setFontColorIndex(IndexedColors.RED.index);
+        
+        // Condition 2: Row is even, blue
+        ConditionalFormattingRule rule2 = 
+                sheetCF.createConditionalFormattingRule("MOD(ROW(),2)=0");
+        FontFormatting font2 = rule2.createFontFormatting();
+        font2.setFontColorIndex(IndexedColors.BLUE.index);
+        
+        // Condition 3: Row divides by 5, bold
+        ConditionalFormattingRule rule3 = 
+                sheetCF.createConditionalFormattingRule("MOD(ROW(),5)=0");
+        FontFormatting font3 = rule3.createFontFormatting();
+        font3.setFontStyle(false, true);
+        
+        // Condition 4: Row divides by 3, grey background
+        ConditionalFormattingRule rule4 = 
+                sheetCF.createConditionalFormattingRule("MOD(ROW(),3)=0");
+        PatternFormatting fill4 = rule4.createPatternFormatting();
+        fill4.setFillBackgroundColor(IndexedColors.GREY_25_PERCENT.index);
+        fill4.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
+        
+        // Apply
+        CellRangeAddress[] regions = {
+                CellRangeAddress.valueOf("A1:F41")
+        };
+
+        sheetCF.addConditionalFormatting(regions, rule1);
+        sheetCF.addConditionalFormatting(regions, rule2);
+        sheetCF.addConditionalFormatting(regions, rule3);
+        sheetCF.addConditionalFormatting(regions, rule4);
+    }
 
     /**
      *  Use Excel conditional formatting to check for errors,
@@ -346,4 +416,64 @@ public class ConditionalFormats {
         sheet.createRow(0).createCell(1).setCellValue("Shade Bands of Rows");
         sheet.createRow(1).createCell(1).setCellValue("Condition: Formula Is  =MOD(ROW(),6)<2   (Light Grey Fill)");
     }
+    
+    /**
+     * Icon Sets / Multi-States allow you to have icons shown which vary
+     *  based on the values, eg Red traffic light / Yellow traffic light /
+     *  Green traffic light
+     */
+    static void iconSets(Sheet sheet) {
+        sheet.createRow(0).createCell(0).setCellValue("Icon Sets");
+        Row r = sheet.createRow(1);
+        r.createCell(0).setCellValue("Reds");
+        r.createCell(1).setCellValue(0);
+        r.createCell(2).setCellValue(0);
+        r.createCell(3).setCellValue(0);
+        r = sheet.createRow(2);
+        r.createCell(0).setCellValue("Yellows");
+        r.createCell(1).setCellValue(5);
+        r.createCell(2).setCellValue(5);
+        r.createCell(3).setCellValue(5);
+        r = sheet.createRow(3);
+        r.createCell(0).setCellValue("Greens");
+        r.createCell(1).setCellValue(10);
+        r.createCell(2).setCellValue(10);
+        r.createCell(3).setCellValue(10);
+                
+        SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
+        
+        CellRangeAddress[] regions = { CellRangeAddress.valueOf("B1:B4") };
+        ConditionalFormattingRule rule1 =
+                sheetCF.createConditionalFormattingRule(IconSet.GYR_3_TRAFFIC_LIGHTS);
+        IconMultiStateFormatting im1 = rule1.getMultiStateFormatting();
+        im1.getThresholds()[0].setRangeType(RangeType.MIN);
+        im1.getThresholds()[1].setRangeType(RangeType.PERCENT);
+        im1.getThresholds()[1].setValue(33d);
+        im1.getThresholds()[2].setRangeType(RangeType.MAX);
+        sheetCF.addConditionalFormatting(regions, rule1);
+        
+        regions = new CellRangeAddress[] { CellRangeAddress.valueOf("C1:C4") };
+        ConditionalFormattingRule rule2 =
+                sheetCF.createConditionalFormattingRule(IconSet.GYR_3_FLAGS);
+        IconMultiStateFormatting im2 = rule1.getMultiStateFormatting();
+        im2.getThresholds()[0].setRangeType(RangeType.PERCENT);
+        im2.getThresholds()[0].setValue(0d);
+        im2.getThresholds()[1].setRangeType(RangeType.PERCENT);
+        im2.getThresholds()[1].setValue(33d);
+        im2.getThresholds()[2].setRangeType(RangeType.PERCENT);
+        im2.getThresholds()[2].setValue(67d);
+        sheetCF.addConditionalFormatting(regions, rule2);
+        
+        regions = new CellRangeAddress[] { CellRangeAddress.valueOf("D1:D4") };
+        ConditionalFormattingRule rule3 =
+                sheetCF.createConditionalFormattingRule(IconSet.GYR_3_SYMBOLS_CIRCLE);
+        IconMultiStateFormatting im3 = rule1.getMultiStateFormatting();
+        im3.setIconOnly(true);
+        im3.getThresholds()[0].setRangeType(RangeType.MIN);
+        im3.getThresholds()[1].setRangeType(RangeType.NUMBER);
+        im3.getThresholds()[1].setValue(3d);
+        im3.getThresholds()[2].setRangeType(RangeType.NUMBER);
+        im3.getThresholds()[2].setValue(7d);
+        sheetCF.addConditionalFormatting(regions, rule3);
+    }
 }

Modified: poi/branches/common_sl/src/examples/src/org/apache/poi/ss/examples/html/ToHtml.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/examples/src/org/apache/poi/ss/examples/html/ToHtml.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/examples/src/org/apache/poi/ss/examples/html/ToHtml.java (original)
+++ poi/branches/common_sl/src/examples/src/org/apache/poi/ss/examples/html/ToHtml.java Sun Jul 19 19:00:32 2015
@@ -289,7 +289,7 @@ public class ToHtml {
     private void fontStyle(CellStyle style) {
         Font font = wb.getFontAt(style.getFontIndex());
 
-        if (font.getBoldweight() >= HSSFFont.BOLDWEIGHT_NORMAL)
+        if (font.getBoldweight() >= HSSFFont.BOLDWEIGHT_BOLD)
             out.format("  font-weight: bold;%n");
         if (font.getItalic())
             out.format("  font-style: italic;%n");
@@ -309,8 +309,12 @@ public class ToHtml {
             style = wb.getCellStyleAt((short) 0);
         StringBuilder sb = new StringBuilder();
         Formatter fmt = new Formatter(sb);
-        fmt.format("style_%02x", style.getIndex());
-        return fmt.toString();
+        try {
+            fmt.format("style_%02x", style.getIndex());
+            return fmt.toString();
+        } finally {
+            fmt.close();
+        }
     }
 
     private <K> void styleOut(String attr, K key, Map<K, String> mapping) {

Modified: poi/branches/common_sl/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java (original)
+++ poi/branches/common_sl/src/examples/src/org/apache/poi/xssf/usermodel/examples/AligningCells.java Sun Jul 19 19:00:32 2015
@@ -114,16 +114,17 @@ public class AligningCells {
 
         // Make the selection
         CTRowImpl ctRow = (CTRowImpl) row.getCTRow();
-        List spanList = new ArrayList();
 
         // Add object with format start_coll:end_coll. For example 1:3 will span from
         // cell 1 to cell 3, where the column index starts with 0
         //
         // You can add multiple spans for one row
         Object span = start_column + ":" + end_column;
+
+        List<Object> spanList = new ArrayList<Object>();
         spanList.add(span);
 
         //add spns to the row
         ctRow.setSpans(spanList);
     }
-} 
\ No newline at end of file
+}

Modified: poi/branches/common_sl/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java (original)
+++ poi/branches/common_sl/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java Sun Jul 19 19:00:32 2015
@@ -23,6 +23,7 @@ import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 import java.util.zip.ZipOutputStream;
 
+import org.apache.poi.openxml4j.opc.internal.ZipHelper;
 import org.apache.poi.ss.usermodel.DateUtil;
 import org.apache.poi.ss.usermodel.IndexedColors;
 import org.apache.poi.ss.util.CellReference;
@@ -165,27 +166,31 @@ public class BigGridDemo {
      * @param out the stream to write the result to
      */
 	private static void substitute(File zipfile, File tmpfile, String entry, OutputStream out) throws IOException {
-        ZipFile zip = new ZipFile(zipfile);
+        ZipFile zip = ZipHelper.openZipFile(zipfile);
 
-        ZipOutputStream zos = new ZipOutputStream(out);
+        try {
+			ZipOutputStream zos = new ZipOutputStream(out);
 
-        @SuppressWarnings("unchecked")
-        Enumeration<ZipEntry> en = (Enumeration<ZipEntry>) zip.entries();
-        while (en.hasMoreElements()) {
-            ZipEntry ze = en.nextElement();
-            if(!ze.getName().equals(entry)){
-                zos.putNextEntry(new ZipEntry(ze.getName()));
-                InputStream is = zip.getInputStream(ze);
-                copyStream(is, zos);
-                is.close();
+			@SuppressWarnings("unchecked")
+			Enumeration<ZipEntry> en = (Enumeration<ZipEntry>) zip.entries();
+			while (en.hasMoreElements()) {
+				ZipEntry ze = en.nextElement();
+				if(!ze.getName().equals(entry)){
+					zos.putNextEntry(new ZipEntry(ze.getName()));
+					InputStream is = zip.getInputStream(ze);
+					copyStream(is, zos);
+					is.close();
+                }
             }
+            zos.putNextEntry(new ZipEntry(entry));
+            InputStream is = new FileInputStream(tmpfile);
+            copyStream(is, zos);
+            is.close();
+    
+            zos.close();
+        } finally {
+        	zip.close();
         }
-        zos.putNextEntry(new ZipEntry(entry));
-        InputStream is = new FileInputStream(tmpfile);
-        copyStream(is, zos);
-        is.close();
-
-        zos.close();
     }
 
     private static void copyStream(InputStream in, OutputStream out) throws IOException {

Modified: poi/branches/common_sl/src/integrationtest/org/apache/poi/TestAllFiles.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/integrationtest/org/apache/poi/TestAllFiles.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/integrationtest/org/apache/poi/TestAllFiles.java (original)
+++ poi/branches/common_sl/src/integrationtest/org/apache/poi/TestAllFiles.java Sun Jul 19 19:00:32 2015
@@ -31,6 +31,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.poi.hwpf.OldWordFileFormatException;
 import org.apache.poi.stress.*;
 import org.apache.tools.ant.DirectoryScanner;
 import org.junit.Test;
@@ -65,83 +66,91 @@ import org.junit.runners.Parameterized.P
  */
 @RunWith(Parameterized.class)
 public class TestAllFiles {
-	private static final File ROOT_DIR = new File("test-data");
+    private static final File ROOT_DIR = new File("test-data");
 
     // map file extensions to the actual mappers
-	private static final Map<String, FileHandler> HANDLERS = new HashMap<String, FileHandler>();
-	static {
-		// Excel
-		HANDLERS.put(".xls", new HSSFFileHandler());
-		HANDLERS.put(".xlsx", new XSSFFileHandler());
-		HANDLERS.put(".xlsm", new XSSFFileHandler());
-		HANDLERS.put(".xltx", new XSSFFileHandler());
-		HANDLERS.put(".xlsb", new XSSFFileHandler());
-		
-		// Word
-		HANDLERS.put(".doc", new HWPFFileHandler());
-		HANDLERS.put(".docx", new XWPFFileHandler());
-		HANDLERS.put(".dotx", new XWPFFileHandler());
-		HANDLERS.put(".docm", new XWPFFileHandler());
-		HANDLERS.put(".ooxml", new XWPFFileHandler());		// OPCPackage
-
-		// Powerpoint
-		HANDLERS.put(".ppt", new HSLFFileHandler());
-		HANDLERS.put(".pptx", new XSLFFileHandler());
-		HANDLERS.put(".pptm", new XSLFFileHandler());
-		HANDLERS.put(".ppsm", new XSLFFileHandler());
-		HANDLERS.put(".ppsx", new XSLFFileHandler());
-		HANDLERS.put(".thmx", new XSLFFileHandler());
-
-		// Outlook
-		HANDLERS.put(".msg", new HSMFFileHandler());
-		
-		// Publisher
-		HANDLERS.put(".pub", new HPBFFileHandler());
-
-		// Visio
-		HANDLERS.put(".vsd", new HDGFFileHandler());
-		
-		// POIFS
-		HANDLERS.put(".ole2", new POIFSFileHandler());
-
-		// Microsoft Admin Template?
-		HANDLERS.put(".adm", new HPSFFileHandler());
-
-		// Microsoft TNEF
-		HANDLERS.put(".dat", new HMEFFileHandler());
-		
-		// TODO: are these readable by some of the formats?
-		HANDLERS.put(".shw", new NullFileHandler());
-		HANDLERS.put(".zvi", new NullFileHandler());
-		HANDLERS.put(".mpp", new NullFileHandler());
-		HANDLERS.put(".qwp", new NullFileHandler());
-		HANDLERS.put(".wps", new NullFileHandler());
-		HANDLERS.put(".bin", new NullFileHandler());
-		HANDLERS.put(".xps", new NullFileHandler());
-		HANDLERS.put(".sldprt", new NullFileHandler());
-		HANDLERS.put(".mdb", new NullFileHandler());
-		HANDLERS.put(".vml", new NullFileHandler());
-
-		// ignore some file types, images, other formats, ...
-		HANDLERS.put(".txt", new NullFileHandler());
-		HANDLERS.put(".pdf", new NullFileHandler());
-		HANDLERS.put(".rtf", new NullFileHandler());
-		HANDLERS.put(".gif", new NullFileHandler());
-		HANDLERS.put(".html", new NullFileHandler());
-		HANDLERS.put(".png", new NullFileHandler());
-		HANDLERS.put(".wmf", new NullFileHandler());
-		HANDLERS.put(".emf", new NullFileHandler());
-		HANDLERS.put(".dib", new NullFileHandler());
-		HANDLERS.put(".svg", new NullFileHandler());
-		HANDLERS.put(".pict", new NullFileHandler());
-		HANDLERS.put(".jpg", new NullFileHandler());
-		HANDLERS.put(".wav", new NullFileHandler());
-		HANDLERS.put(".pfx", new NullFileHandler());
-		HANDLERS.put(".xml", new NullFileHandler());
-		HANDLERS.put(".csv", new NullFileHandler());
-		
-		// map some files without extension
-		HANDLERS.put("spreadsheet/BigSSTRecord", new NullFileHandler());
+    private static final Map<String, FileHandler> HANDLERS = new HashMap<String, FileHandler>();
+    static {
+        // Excel
+        HANDLERS.put(".xls", new HSSFFileHandler());
+        HANDLERS.put(".xlsx", new XSSFFileHandler());
+        HANDLERS.put(".xlsm", new XSSFFileHandler());
+        HANDLERS.put(".xltx", new XSSFFileHandler());
+        HANDLERS.put(".xlsb", new XSSFFileHandler());
+
+        // Word
+        HANDLERS.put(".doc", new HWPFFileHandler());
+        HANDLERS.put(".docx", new XWPFFileHandler());
+        HANDLERS.put(".dotx", new XWPFFileHandler());
+        HANDLERS.put(".docm", new XWPFFileHandler());
+        HANDLERS.put(".ooxml", new XWPFFileHandler());		// OPCPackage
+
+        // Powerpoint
+        HANDLERS.put(".ppt", new HSLFFileHandler());
+        HANDLERS.put(".pptx", new XSLFFileHandler());
+        HANDLERS.put(".pptm", new XSLFFileHandler());
+        HANDLERS.put(".ppsm", new XSLFFileHandler());
+        HANDLERS.put(".ppsx", new XSLFFileHandler());
+        HANDLERS.put(".thmx", new XSLFFileHandler());
+
+        // Outlook
+        HANDLERS.put(".msg", new HSMFFileHandler());
+
+        // Publisher
+        HANDLERS.put(".pub", new HPBFFileHandler());
+
+        // Visio - binary
+        HANDLERS.put(".vsd", new HDGFFileHandler());
+        
+        // Visio - ooxml (currently unsupported)
+        HANDLERS.put(".vsdm", new NullFileHandler());
+        HANDLERS.put(".vsdx", new NullFileHandler());
+        HANDLERS.put(".vssm", new NullFileHandler());
+        HANDLERS.put(".vssx", new NullFileHandler());
+        HANDLERS.put(".vstm", new NullFileHandler());
+        HANDLERS.put(".vstx", new NullFileHandler());
+
+        // POIFS
+        HANDLERS.put(".ole2", new POIFSFileHandler());
+
+        // Microsoft Admin Template?
+        HANDLERS.put(".adm", new HPSFFileHandler());
+
+        // Microsoft TNEF
+        HANDLERS.put(".dat", new HMEFFileHandler());
+
+        // TODO: are these readable by some of the formats?
+        HANDLERS.put(".shw", new NullFileHandler());
+        HANDLERS.put(".zvi", new NullFileHandler());
+        HANDLERS.put(".mpp", new NullFileHandler());
+        HANDLERS.put(".qwp", new NullFileHandler());
+        HANDLERS.put(".wps", new NullFileHandler());
+        HANDLERS.put(".bin", new NullFileHandler());
+        HANDLERS.put(".xps", new NullFileHandler());
+        HANDLERS.put(".sldprt", new NullFileHandler());
+        HANDLERS.put(".mdb", new NullFileHandler());
+        HANDLERS.put(".vml", new NullFileHandler());
+
+        // ignore some file types, images, other formats, ...
+        HANDLERS.put(".txt", new NullFileHandler());
+        HANDLERS.put(".pdf", new NullFileHandler());
+        HANDLERS.put(".rtf", new NullFileHandler());
+        HANDLERS.put(".gif", new NullFileHandler());
+        HANDLERS.put(".html", new NullFileHandler());
+        HANDLERS.put(".png", new NullFileHandler());
+        HANDLERS.put(".wmf", new NullFileHandler());
+        HANDLERS.put(".emf", new NullFileHandler());
+        HANDLERS.put(".dib", new NullFileHandler());
+        HANDLERS.put(".svg", new NullFileHandler());
+        HANDLERS.put(".pict", new NullFileHandler());
+        HANDLERS.put(".jpg", new NullFileHandler());
+        HANDLERS.put(".wav", new NullFileHandler());
+        HANDLERS.put(".pfx", new NullFileHandler());
+        HANDLERS.put(".xml", new NullFileHandler());
+        HANDLERS.put(".csv", new NullFileHandler());
+
+        // map some files without extension
+        HANDLERS.put("spreadsheet/BigSSTRecord", new NullFileHandler());
         HANDLERS.put("spreadsheet/BigSSTRecord2", new NullFileHandler());
         HANDLERS.put("spreadsheet/BigSSTRecord2CR1", new NullFileHandler());
         HANDLERS.put("spreadsheet/BigSSTRecord2CR2", new NullFileHandler());
@@ -151,88 +160,104 @@ public class TestAllFiles {
         HANDLERS.put("spreadsheet/BigSSTRecord2CR6", new NullFileHandler());
         HANDLERS.put("spreadsheet/BigSSTRecord2CR7", new NullFileHandler());
         HANDLERS.put("spreadsheet/BigSSTRecordCR", new NullFileHandler());
-		HANDLERS.put("spreadsheet/test_properties1", new NullFileHandler());
-	}
+        HANDLERS.put("spreadsheet/test_properties1", new NullFileHandler());
+    }
 
-	private static final Set<String> EXPECTED_FAILURES = new HashSet<String>();
-	static {
-		// password protected files
-		EXPECTED_FAILURES.add("spreadsheet/password.xls");
-		EXPECTED_FAILURES.add("spreadsheet/51832.xls");
-		EXPECTED_FAILURES.add("document/PasswordProtected.doc");
-		EXPECTED_FAILURES.add("slideshow/Password_Protected-hello.ppt");
-		EXPECTED_FAILURES.add("slideshow/Password_Protected-56-hello.ppt");
-		EXPECTED_FAILURES.add("slideshow/Password_Protected-np-hello.ppt");
-		EXPECTED_FAILURES.add("slideshow/cryptoapi-proc2356.ppt");
-		//EXPECTED_FAILURES.add("document/bug53475-password-is-pass.docx");
-		//EXPECTED_FAILURES.add("document/bug53475-password-is-solrcell.docx");
-		EXPECTED_FAILURES.add("spreadsheet/xor-encryption-abc.xls");
+    // Old Word Documents where we can at least extract some text
+    private static final Set<String> OLD_FILES = new HashSet<String>();
+    static {
+        OLD_FILES.add("document/Bug49933.doc");
+        OLD_FILES.add("document/Bug51944.doc");
+        OLD_FILES.add("document/Word6.doc");
+        OLD_FILES.add("document/Word6_sections.doc");
+        OLD_FILES.add("document/Word6_sections2.doc");
+        OLD_FILES.add("document/Word95.doc");
+        OLD_FILES.add("document/word95err.doc");
+        OLD_FILES.add("hpsf/TestMickey.doc");
+        OLD_FILES.add("document/52117.doc");
+    }
+
+    private static final Set<String> EXPECTED_FAILURES = new HashSet<String>();
+    static {
+        // password protected files
+        EXPECTED_FAILURES.add("spreadsheet/password.xls");
+        EXPECTED_FAILURES.add("spreadsheet/protected_passtika.xlsx");
+        EXPECTED_FAILURES.add("spreadsheet/51832.xls");
+        EXPECTED_FAILURES.add("document/PasswordProtected.doc");
+        EXPECTED_FAILURES.add("slideshow/Password_Protected-hello.ppt");
+        EXPECTED_FAILURES.add("slideshow/Password_Protected-56-hello.ppt");
+        EXPECTED_FAILURES.add("slideshow/Password_Protected-np-hello.ppt");
+        EXPECTED_FAILURES.add("slideshow/cryptoapi-proc2356.ppt");
+        //EXPECTED_FAILURES.add("document/bug53475-password-is-pass.docx");
+        //EXPECTED_FAILURES.add("document/bug53475-password-is-solrcell.docx");
+        EXPECTED_FAILURES.add("spreadsheet/xor-encryption-abc.xls");
         EXPECTED_FAILURES.add("spreadsheet/35897-type4.xls");
         //EXPECTED_FAILURES.add("poifs/protect.xlsx");
         //EXPECTED_FAILURES.add("poifs/protected_sha512.xlsx");
         //EXPECTED_FAILURES.add("poifs/extenxls_pwd123.xlsx");
         //EXPECTED_FAILURES.add("poifs/protected_agile.docx");
-		
-		// TODO: fails XMLExportTest, is this ok?
-		EXPECTED_FAILURES.add("spreadsheet/CustomXMLMapping-singleattributenamespace.xlsx");
-		EXPECTED_FAILURES.add("spreadsheet/55864.xlsx");
-		
-		// TODO: these fail now with some NPE/file read error because we now try to compute every value via Cell.toString()!
-		EXPECTED_FAILURES.add("spreadsheet/44958.xls");
-		EXPECTED_FAILURES.add("spreadsheet/44958_1.xls");
-		EXPECTED_FAILURES.add("spreadsheet/testArraysAndTables.xls");
-
-		// TODO: good to ignore?
-		EXPECTED_FAILURES.add("spreadsheet/sample-beta.xlsx");
-		EXPECTED_FAILURES.add("spreadsheet/49931.xls");
-		EXPECTED_FAILURES.add("openxml4j/ContentTypeHasParameters.ooxml");
-
-		// This is actually a spreadsheet!
-		EXPECTED_FAILURES.add("hpsf/TestRobert_Flaherty.doc");
-		
-		// some files that are broken, Excel 5.0/95, Word 95, ...
-		EXPECTED_FAILURES.add("spreadsheet/43493.xls");
-		EXPECTED_FAILURES.add("spreadsheet/46904.xls");
-		EXPECTED_FAILURES.add("document/56880.doc");
-		EXPECTED_FAILURES.add("document/Bug49933.doc");
-		EXPECTED_FAILURES.add("document/Bug50955.doc");
-		EXPECTED_FAILURES.add("document/Bug51944.doc");
-		EXPECTED_FAILURES.add("document/Word6.doc");
-		EXPECTED_FAILURES.add("document/Word6_sections.doc");
-		EXPECTED_FAILURES.add("document/Word6_sections2.doc");
-		EXPECTED_FAILURES.add("document/Word95.doc");
-		EXPECTED_FAILURES.add("document/word95err.doc");
-		EXPECTED_FAILURES.add("hpsf/TestMickey.doc");
-		EXPECTED_FAILURES.add("slideshow/PPT95.ppt");
-		EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DCTermsNamespaceLimitedUseFAIL.docx");
-		EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DoNotUseCompatibilityMarkupFAIL.docx");
-		EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_LimitedXSITypeAttribute_NotPresentFAIL.docx");
-		EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_LimitedXSITypeAttribute_PresentWithUnauthorizedValueFAIL.docx");
-		EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_OnlyOneCorePropertiesPartFAIL.docx");
-		EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_UnauthorizedXMLLangAttributeFAIL.docx");
-		EXPECTED_FAILURES.add("openxml4j/OPCCompliance_DerivedPartNameFAIL.docx");
-		EXPECTED_FAILURES.add("spreadsheet/54764-2.xlsx");   // see TestXSSFBugs.bug54764()
-		EXPECTED_FAILURES.add("spreadsheet/54764.xlsx");     // see TestXSSFBugs.bug54764()
+
+        // TODO: fails XMLExportTest, is this ok?
+        EXPECTED_FAILURES.add("spreadsheet/CustomXMLMapping-singleattributenamespace.xlsx");
+        EXPECTED_FAILURES.add("spreadsheet/55864.xlsx");
+
+        // TODO: these fail now with some NPE/file read error because we now try to compute every value via Cell.toString()!
+        EXPECTED_FAILURES.add("spreadsheet/44958.xls");
+        EXPECTED_FAILURES.add("spreadsheet/44958_1.xls");
+        EXPECTED_FAILURES.add("spreadsheet/testArraysAndTables.xls");
+
+        // TODO: good to ignore?
+        EXPECTED_FAILURES.add("spreadsheet/sample-beta.xlsx");
+        EXPECTED_FAILURES.add("spreadsheet/49931.xls");
+        EXPECTED_FAILURES.add("openxml4j/ContentTypeHasParameters.ooxml");
+
+        // This is actually a spreadsheet!
+        EXPECTED_FAILURES.add("hpsf/TestRobert_Flaherty.doc");
+
+        // some files that are broken, eg Word 95, ...
+        EXPECTED_FAILURES.add("spreadsheet/43493.xls");
+        EXPECTED_FAILURES.add("spreadsheet/46904.xls");
+        EXPECTED_FAILURES.add("document/56880.doc");
+        EXPECTED_FAILURES.add("document/Bug50955.doc");
+        EXPECTED_FAILURES.add("slideshow/PPT95.ppt");
+        EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DCTermsNamespaceLimitedUseFAIL.docx");
+        EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_DoNotUseCompatibilityMarkupFAIL.docx");
+        EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_LimitedXSITypeAttribute_NotPresentFAIL.docx");
+        EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_LimitedXSITypeAttribute_PresentWithUnauthorizedValueFAIL.docx");
+        EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_OnlyOneCorePropertiesPartFAIL.docx");
+        EXPECTED_FAILURES.add("openxml4j/OPCCompliance_CoreProperties_UnauthorizedXMLLangAttributeFAIL.docx");
+        EXPECTED_FAILURES.add("openxml4j/OPCCompliance_DerivedPartNameFAIL.docx");
+        EXPECTED_FAILURES.add("spreadsheet/54764-2.xlsx");   // see TestXSSFBugs.bug54764()
+        EXPECTED_FAILURES.add("spreadsheet/54764.xlsx");     // see TestXSSFBugs.bug54764()
         EXPECTED_FAILURES.add("spreadsheet/Simple.xlsb");
+        EXPECTED_FAILURES.add("poifs/unknown_properties.msg"); // POIFS properties corrupted
+        EXPECTED_FAILURES.add("poifs/only-zero-byte-streams.ole2"); // No actual contents
+        
+        // old Excel files, which we only support simple text extraction of
         EXPECTED_FAILURES.add("spreadsheet/testEXCEL_2.xls");
         EXPECTED_FAILURES.add("spreadsheet/testEXCEL_3.xls");
         EXPECTED_FAILURES.add("spreadsheet/testEXCEL_4.xls");
         EXPECTED_FAILURES.add("spreadsheet/testEXCEL_5.xls");
         EXPECTED_FAILURES.add("spreadsheet/testEXCEL_95.xls");
+        
+        // OOXML Strict is not yet supported, see bug #57699
+        EXPECTED_FAILURES.add("spreadsheet/SampleSS.strict.xlsx");
+        EXPECTED_FAILURES.add("spreadsheet/SimpleStrict.xlsx");
+        EXPECTED_FAILURES.add("spreadsheet/sample.strict.xlsx");
+
+        // non-TNEF files
+        EXPECTED_FAILURES.add("ddf/Container.dat");
+        EXPECTED_FAILURES.add("ddf/47143.dat");
+    }
 
-		// non-TNEF files
-		EXPECTED_FAILURES.add("ddf/Container.dat");
-		EXPECTED_FAILURES.add("ddf/47143.dat");
-	}
-	
     @Parameters(name="{index}: {0} using {1}")
     public static Iterable<Object[]> files() {
         DirectoryScanner scanner = new DirectoryScanner();
         scanner.setBasedir(ROOT_DIR);
         scanner.setExcludes(new String[] { "**/.svn/**" });
-        
+
         scanner.scan();
-        
+
         System.out.println("Handling " + scanner.getIncludedFiles().length + " files");
 
         List<Object[]> files = new ArrayList<Object[]>();
@@ -240,47 +265,72 @@ public class TestAllFiles {
             file = file.replace('\\', '/'); // ... failures/handlers lookup doesn't work on windows otherwise
             files.add(new Object[] { file, HANDLERS.get(getExtension(file)) });
         }
-            
+
         return files;
-     }
-    
+    }
+
     @Parameter(value=0)
     public String file;
-    
+
     @Parameter(value=1)
     public FileHandler handler;
-    
+
     @Test
     public void testAllFiles() throws Exception {
-		assertNotNull("Unknown file extension for file: " + file + ": " + getExtension(file), handler);
-		InputStream stream = new BufferedInputStream(new FileInputStream(new File(ROOT_DIR, file)),100);
-		try {
-			handler.handleFile(stream);
-			
-			assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", 
-			        EXPECTED_FAILURES.contains(file));
-		} catch (Exception e) {
-		    // check if we expect failure for this file
-			if(!EXPECTED_FAILURES.contains(file)) {
-			    throw new Exception("While handling " + file, e);
-			}
-		} finally {
-			stream.close();
-		}
-	}
-
-	private static String getExtension(String file) {
-		int pos = file.lastIndexOf('.');
-		if(pos == -1 || pos == file.length()-1) {
-			return file;
-		}
-		
-		return file.substring(pos);
-	}
+        assertNotNull("Unknown file extension for file: " + file + ": " + getExtension(file), handler);
+        File inputFile = new File(ROOT_DIR, file);
+
+        try {
+            InputStream stream = new BufferedInputStream(new FileInputStream(inputFile), 64*1024);
+            try {
+                handler.handleFile(stream);
+
+                assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", 
+                        OLD_FILES.contains(file));
+            } finally {
+                stream.close();
+            }
+
+            handler.handleExtracting(inputFile);
+
+            assertFalse("Expected to fail for file " + file + " and handler " + handler + ", but did not fail!", 
+                    EXPECTED_FAILURES.contains(file));
+        } catch (OldWordFileFormatException e) {
+            // for old word files we should still support extracting text
+            if(OLD_FILES.contains(file)) {
+                handler.handleExtracting(inputFile);
+            } else {
+                // check if we expect failure for this file
+                if(!EXPECTED_FAILURES.contains(file) && !AbstractFileHandler.EXPECTED_EXTRACTOR_FAILURES.contains(file)) {
+                    System.out.println("Failed: " + file);
+                    throw new Exception("While handling " + file, e);
+                }
+            }
+        } catch (Exception e) {
+            // check if we expect failure for this file
+            if(!EXPECTED_FAILURES.contains(file) && !AbstractFileHandler.EXPECTED_EXTRACTOR_FAILURES.contains(file)) {
+                System.out.println("Failed: " + file);
+                throw new Exception("While handling " + file, e);
+            }
+        }
+    }
 
-	private static class NullFileHandler implements FileHandler {
-		@Override
+    private static String getExtension(String file) {
+        int pos = file.lastIndexOf('.');
+        if(pos == -1 || pos == file.length()-1) {
+            return file;
+        }
+
+        return file.substring(pos);
+    }
+
+    private static class NullFileHandler implements FileHandler {
+        @Override
         public void handleFile(InputStream stream) throws Exception {
-		}
-	}
+        }
+
+        @Override
+        public void handleExtracting(File file) throws Exception {
+        }
+    }
 }

Modified: poi/branches/common_sl/src/integrationtest/org/apache/poi/stress/FileHandler.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/integrationtest/org/apache/poi/stress/FileHandler.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/integrationtest/org/apache/poi/stress/FileHandler.java (original)
+++ poi/branches/common_sl/src/integrationtest/org/apache/poi/stress/FileHandler.java Sun Jul 19 19:00:32 2015
@@ -16,6 +16,7 @@
 ==================================================================== */
 package org.apache.poi.stress;
 
+import java.io.File;
 import java.io.InputStream;
 
 /**
@@ -34,4 +35,10 @@ public interface FileHandler {
 	 * @throws Exception
 	 */
 	void handleFile(InputStream stream) throws Exception;
+	
+	/**
+	 * Ensures that extracting text from the given file
+	 * is returning some text. 
+	 */
+	void handleExtracting(File file) throws Exception;
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org