]>
granicus.if.org Git - taglib/log
Lukáš Lalinský [Sat, 10 Nov 2007 15:58:10 +0000 (15:58 +0000)]
Ignore all autotools and cmake generated files.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@734971
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Lukáš Lalinský [Sat, 10 Nov 2007 15:16:49 +0000 (15:16 +0000)]
Use Unicode filenames on Windows.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@734944
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Lukáš Lalinský [Tue, 6 Nov 2007 18:50:09 +0000 (18:50 +0000)]
WavPack support.
CCBUG:114982
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@733568
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Lukáš Lalinský [Tue, 6 Nov 2007 18:27:47 +0000 (18:27 +0000)]
Decode unsynch-encoded tag (ID3v2.3) and frame (ID3v2.4) data before parsing them.
BUG:138829
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@733565
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Lukáš Lalinský [Mon, 5 Nov 2007 02:04:10 +0000 (02:04 +0000)]
Use separate DLL export macro for libtag_c and use the right DEFINE_SYMBOL.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@732908
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Lukáš Lalinský [Mon, 5 Nov 2007 01:58:56 +0000 (01:58 +0000)]
Remove duplicate check for zlib and make zlib optional.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@732907
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 21 Oct 2007 17:37:28 +0000 (17:37 +0000)]
SVN_SILENT didn't mean for that to go in
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@727756
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 21 Oct 2007 17:35:40 +0000 (17:35 +0000)]
More TAGLIB_EXPORTs from Lukas.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@727755
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Wed, 10 Oct 2007 18:22:58 +0000 (18:22 +0000)]
Got permission from all (non-trivial) contributors to dual license under the MPL.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@723791
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Tue, 9 Oct 2007 17:46:48 +0000 (17:46 +0000)]
Install header.
CCMAIL:taglib-devel@kde.org
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@723447
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Thu, 27 Sep 2007 21:41:12 +0000 (21:41 +0000)]
Note OGA as the new extension for Ogg FLAC.
(Note: for the bug report, this won't actually make things work in Amarok, in fact, this change
wasn't needed at all for it to work there.)
BUG:149987
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@717998
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Thu, 27 Sep 2007 20:52:50 +0000 (20:52 +0000)]
Add a few checks to make sure that we don't blow up when trying to read zero-byte
values.
BUG:150250
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@717984
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Christian Ehrlicher [Sat, 15 Sep 2007 16:01:02 +0000 (16:01 +0000)]
more win32 fixes
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@712894
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Christian Ehrlicher [Sat, 15 Sep 2007 10:12:27 +0000 (10:12 +0000)]
win32 install fixes
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@712787
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Christian Ehrlicher [Sat, 15 Sep 2007 09:03:22 +0000 (09:03 +0000)]
we also need config.h on win32!
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@712779
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Kevin Krammer [Wed, 29 Aug 2007 23:33:30 +0000 (23:33 +0000)]
Unfix compiler warning. Compiler warnings good, BIC changes bad.
Make it a bit more obvious for the next poor fellow
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@706333
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Kevin Krammer [Wed, 29 Aug 2007 22:57:23 +0000 (22:57 +0000)]
Fixing compiler warning about missing virtual destructor in class with virtual methods
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@706328
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Adriaan de Groot [Mon, 27 Aug 2007 20:05:44 +0000 (20:05 +0000)]
Still need the C++ runtime for the C bindings on Solaris; need stdlib.h for various prototypes.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@705364
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Adriaan de Groot [Mon, 27 Aug 2007 19:41:38 +0000 (19:41 +0000)]
Need ostream for std::ostream in some STLs
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@705359
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Adriaan de Groot [Mon, 27 Aug 2007 13:58:19 +0000 (13:58 +0000)]
Actually, forcing a particular STL implementation on the C bindings is a bad idea.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@705222
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Laurent Montel [Mon, 27 Aug 2007 07:04:18 +0000 (07:04 +0000)]
Don't hardcode version
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@705092
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Laurent Montel [Mon, 27 Aug 2007 07:02:29 +0000 (07:02 +0000)]
Don't hardcode version number
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@705090
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Adriaan de Groot [Tue, 21 Aug 2007 09:41:41 +0000 (09:41 +0000)]
Want div_t
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@702849
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Mon, 20 Aug 2007 11:59:02 +0000 (11:59 +0000)]
Fix the automake build.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@702323
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Christian Ehrlicher [Sun, 19 Aug 2007 15:16:35 +0000 (15:16 +0000)]
more exports from Serhiy Kachaniuk
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@701861
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Adriaan de Groot [Thu, 16 Aug 2007 12:05:50 +0000 (12:05 +0000)]
The C bindings use the C++ library which uses the C++ runtime. On Solaris, this doesn't automatically mean that applications linking to the C bindings get the C++ runtime; add the C++ runtime explicitly to the bindings library so that the runtime gets pulled in by apps. aka. make-it-link.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@700769
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Adriaan de Groot [Thu, 16 Aug 2007 11:47:08 +0000 (11:47 +0000)]
Somewhat hackish; might be better off as a downstream patch.
Sun Studio fails on taglib because Map specializes in too many ways;
adding the class keyword reduces the specializations to one and it's ok,
but not all specializations of Map actually use T as a template class
parameter. So introduce a #define to switch that around.
Original patch from Stefan Teleman, pared down by me.
CCMAIL: kde-solaris@kde.org
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@700759
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Laurent Montel [Tue, 14 Aug 2007 07:33:36 +0000 (07:33 +0000)]
Not generate/install pkgconfig file on windows we can't use it
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@699889
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Christian Ehrlicher [Sat, 11 Aug 2007 08:33:49 +0000 (08:33 +0000)]
exported the rest of the classes (hope I got all)
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@698836
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Christian Ehrlicher [Sat, 11 Aug 2007 08:29:23 +0000 (08:29 +0000)]
(initial) win32 export support
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@698835
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Laurent Montel [Sun, 29 Jul 2007 09:38:17 +0000 (09:38 +0000)]
Fix pc filesx
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@693853
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Thu, 19 Jul 2007 15:20:10 +0000 (15:20 +0000)]
Work around the fact that iTunes can't properly parse ID3v2.4 numerical genres.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689932
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Thu, 19 Jul 2007 00:44:37 +0000 (00:44 +0000)]
Don't include empty strings in the text field list. This is a slight deviation
from the standard, but major editors (i.e. iTunes) mess up ID3v2 text frames with
null termination (which technically indicates a field with content, plus an empty
field).
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689739
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Thu, 19 Jul 2007 00:04:37 +0000 (00:04 +0000)]
This didn't work in the case of an empty buffer read since subtracting 1
from a unsigned value, well, left a lot of room at the end.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689729
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Wed, 18 Jul 2007 17:08:09 +0000 (17:08 +0000)]
Update APE location after adding new tags.
BUG:122700
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689608
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Wed, 18 Jul 2007 16:41:10 +0000 (16:41 +0000)]
Make sure that we only write the number of bytes that we read.
BUG:122698
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689596
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Wed, 18 Jul 2007 15:50:52 +0000 (15:50 +0000)]
Fix SV4 MPC file length. (Read the length at the correct offset.)
BUG:133959
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689576
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Wed, 18 Jul 2007 15:23:18 +0000 (15:23 +0000)]
Add a string reading function to the frame base class and then use that to read strings
(thus making them unicode safe).
BUG:135123
BUG:135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123135123
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689562
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Wed, 18 Jul 2007 14:38:40 +0000 (14:38 +0000)]
Brian is right. It makes more sense to compute the alignment based on the offset than the the beginning of the vector.
CCBUG:135123
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689545
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Wed, 18 Jul 2007 12:52:07 +0000 (12:52 +0000)]
Promote the int to a float so that the calcualtion works properly. Patch from Stephen Booth.
BUG:143938
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689510
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Wed, 18 Jul 2007 12:48:24 +0000 (12:48 +0000)]
Spelling fixes (first part of a patch from Lucas Lalinsky)
CCBUG:138829
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689506
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Wed, 18 Jul 2007 11:36:26 +0000 (11:36 +0000)]
Fix RVA setting / parsing. Patch from Stephen Booth.
BUG:107025
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@689477
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Martin Aumüller [Wed, 4 Jul 2007 10:12:22 +0000 (10:12 +0000)]
set correct install_name for os x
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@683171
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Fri, 8 Jun 2007 11:02:49 +0000 (11:02 +0000)]
Remove empty Xiph comments. Patch from Stephan Booth.
BUG:145532
CCMAIL:taglib-devel@kde.org
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@672863
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Michael Pyne [Wed, 6 Jun 2007 03:56:38 +0000 (03:56 +0000)]
Fix another MSVC 2007 STL bug (our bug, not theirs) by not resizing a buffer in
writeBlock. It was possible to resize it to 0 and although it would not be written to
again, the address would be taken of the buffer and MSVC 2007's STL implementation is
strict and will not allow the address of an empty buffer to be taken.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@672039
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Dirk Mueller [Thu, 31 May 2007 20:51:55 +0000 (20:51 +0000)]
the usual daily unbreak compilation
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@670244
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Michael Pyne [Sat, 26 May 2007 23:03:17 +0000 (23:03 +0000)]
Don't allow address of zero-length array to be taken to prevent run-time errors with
strict STL implementations.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@668610
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Dirk Mueller [Fri, 4 May 2007 16:15:11 +0000 (16:15 +0000)]
the usual "daily unbreak compilation"
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@661112
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Christian Ehrlicher [Sat, 28 Apr 2007 16:31:29 +0000 (16:31 +0000)]
win32 compile / warnings--
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@658841
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Christian Ehrlicher [Sat, 28 Apr 2007 16:17:30 +0000 (16:17 +0000)]
win32 compile / warnings--
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@658838
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Stephan Kulow [Wed, 11 Apr 2007 20:35:37 +0000 (20:35 +0000)]
don't dereference d twice (CID 3444)
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@652702
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Stephan Kulow [Wed, 11 Apr 2007 20:34:57 +0000 (20:34 +0000)]
don't deref d twice (CID 3445)
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@652701
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 1 Apr 2007 22:22:53 +0000 (22:22 +0000)]
Check for CBR Info headers also.
BUG:141681
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@649037
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 1 Apr 2007 22:21:44 +0000 (22:21 +0000)]
SVN_SILENT too many emacs modes...
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@649036
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 1 Apr 2007 22:08:44 +0000 (22:08 +0000)]
Strip nulls from the end of ID3v2 text fields.
Simplified version of the patch from Xavier Duret.
BUG:141680
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@649032
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 1 Apr 2007 21:07:08 +0000 (21:07 +0000)]
Add a comment about valid encoding types for ID3v2 tags.
CCBUG:135122
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@649003
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 1 Apr 2007 20:54:13 +0000 (20:54 +0000)]
Switch to using a list of genres and checking for membership in there to avoid repeated values.
Based on a patch from Xavier Duret.
BUG:141679
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@648998
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 1 Apr 2007 20:49:15 +0000 (20:49 +0000)]
SVN_SILENT grr, accidentally inserted tabs
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@648997
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 1 Apr 2007 20:31:03 +0000 (20:31 +0000)]
Strip whitespaces from the end of ID3v1 fields on the way into TagLib.
BUG:141678
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@648986
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 1 Apr 2007 20:25:54 +0000 (20:25 +0000)]
Delete APE tag.
BUG:141682
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@648984
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Thu, 22 Mar 2007 17:30:29 +0000 (17:30 +0000)]
Fix signature.
BUG:143103
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@645468
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Mon, 26 Feb 2007 11:40:05 +0000 (11:40 +0000)]
SVN_SILENT tabs -> spaces
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@637415
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Fri, 16 Feb 2007 16:15:55 +0000 (16:15 +0000)]
SVN_SILENT whoops, those were tabs
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@634206
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Fri, 16 Feb 2007 14:29:40 +0000 (14:29 +0000)]
Delete d-pointer.
CCBUG:141682
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@634161
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Tue, 13 Feb 2007 10:19:20 +0000 (10:19 +0000)]
SVN_SILENT whoops
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633141
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Tue, 13 Feb 2007 10:18:30 +0000 (10:18 +0000)]
Read the frame data length as a synch-safe int. (Mostly only relevant to
compressed frames)
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633140
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Tue, 13 Feb 2007 09:55:56 +0000 (09:55 +0000)]
Don't try to parse invalid frames.
BUG:137635
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633133
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Tue, 13 Feb 2007 09:26:31 +0000 (09:26 +0000)]
Add another sanity check -- don't let invalid frames try to allocate anything
larger than the tag size.
BUG:140515
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633123
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Tue, 13 Feb 2007 08:40:58 +0000 (08:40 +0000)]
Fix the byte ordering for UTF16BE
BUG:135121
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633110
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Tue, 13 Feb 2007 07:21:45 +0000 (07:21 +0000)]
Rework the read-only check so that it gets along better with networked file systems.
CCMAIL:apoikos@gmail.com
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633092
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Tue, 13 Feb 2007 05:43:10 +0000 (05:43 +0000)]
Actually overwrite the value, as documented.
BUG:141496
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@633078
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 7 Jan 2007 15:33:21 +0000 (15:33 +0000)]
correct docs
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@620852
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 7 Jan 2007 15:31:01 +0000 (15:31 +0000)]
Revert this as this change isn't BC
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@620850
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Brad Hards [Tue, 2 Jan 2007 11:54:03 +0000 (11:54 +0000)]
A few spelling fixes, identified using krazy.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@618883
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Jeff Mitchell [Sat, 23 Dec 2006 01:34:01 +0000 (01:34 +0000)]
Remove check as condition will always be true (checked in the if condition, above).
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@615877
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Laurent Montel [Thu, 7 Dec 2006 14:13:46 +0000 (14:13 +0000)]
Fix warning
Fix create HAVE_ZLIB variable
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@611286
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
André Wöbbeking [Mon, 27 Nov 2006 18:17:05 +0000 (18:17 +0000)]
-pedantic
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@608497
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
André Wöbbeking [Mon, 27 Nov 2006 18:15:11 +0000 (18:15 +0000)]
copied gcc compile flags from FindKDE4Internal.cmake
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@608496
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Laurent Montel [Fri, 10 Nov 2006 10:43:59 +0000 (10:43 +0000)]
Fix compile under windows
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@603814
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 15 Oct 2006 17:24:13 +0000 (17:24 +0000)]
Uhh, no. Once again, TagLib is not part of KDE and is still used by a lot more things
than JuK, most of which still use Qt 3. If you want to fix the defines to check for the version
that's fine. I'm not too worried about it since the code still works with Qt 4.
CCMAIL:Tim Beaulen <tbscope@gmail.com>
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@595794
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Tim Beaulen [Sun, 15 Oct 2006 08:04:12 +0000 (08:04 +0000)]
replace uft8() with toUtf8() to silence warnings in Juk.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@595632
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Thu, 12 Oct 2006 21:11:48 +0000 (21:11 +0000)]
Don't dereference the iterator before checking its validity.
CCMAIL:taglib-devel@kde.org
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@594940
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
David Faure [Thu, 12 Oct 2006 10:50:45 +0000 (10:50 +0000)]
fix make install - I guess examples shouldn't actually be installed
(I see that Makefile.am required "make examples" explicitly)
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@594795
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Mon, 9 Oct 2006 02:51:52 +0000 (02:51 +0000)]
SVN_SILENT spacing
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@593781
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Brad Hards [Sun, 8 Oct 2006 06:28:19 +0000 (06:28 +0000)]
Change the taglib build system to use relative include paths.
This allows you to build taglib either as part of kdesupport
(i.e. with a source directory of kdesupport/) or by itself
(i.e. with a source directory of kdesupport/taglib/).
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@593544
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sat, 7 Oct 2006 22:29:06 +0000 (22:29 +0000)]
Don't try to erase a key that isn't there.
BUG:134726
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@593479
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sat, 7 Oct 2006 22:17:07 +0000 (22:17 +0000)]
Make the Xing header publically accessible.
WISH:133757
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@593475
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Brad Hards [Sat, 7 Oct 2006 11:45:35 +0000 (11:45 +0000)]
Compile fix, correcting the include paths.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@593292
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Laurent Montel [Thu, 5 Oct 2006 08:03:42 +0000 (08:03 +0000)]
Fix install files
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@592630
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Laurent Montel [Wed, 4 Oct 2006 15:21:01 +0000 (15:21 +0000)]
Add support for examples
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@592362
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Laurent Montel [Wed, 4 Oct 2006 15:12:47 +0000 (15:12 +0000)]
Add tests directory into build
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@592361
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
David Faure [Fri, 29 Sep 2006 09:36:22 +0000 (09:36 +0000)]
Make paths relative so that it works with running cmake on kdesupport/ or on kdesupport/taglib.
Added toplevel cmake file so that kdesvn-build can build kdesupport using cmake.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@590077
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Laurent Montel [Wed, 27 Sep 2006 08:57:22 +0000 (08:57 +0000)]
Fix compile
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588867
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 24 Sep 2006 20:57:22 +0000 (20:57 +0000)]
Forgot something. ;-)
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588077
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 24 Sep 2006 18:36:42 +0000 (18:36 +0000)]
This is how it's done elsewhere.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588044
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 24 Sep 2006 18:10:30 +0000 (18:10 +0000)]
And now get everything building again...
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588037
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 24 Sep 2006 17:28:14 +0000 (17:28 +0000)]
Add KDE 3.5 admin as external.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588027
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 24 Sep 2006 17:12:40 +0000 (17:12 +0000)]
This is starting to look more sane.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588022
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 24 Sep 2006 17:10:42 +0000 (17:10 +0000)]
add this first, hopefully the next attempt at fixing the dirs will work
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588021
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da
Scott Wheeler [Sun, 24 Sep 2006 16:59:54 +0000 (16:59 +0000)]
One more step. Wow, this was impressively broken.
git-svn-id: svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib@588016
283d02a7 -25f6-0310-bc7c-
ecb5cbfe19da