--- zend-framework-1.7.5.orig/debian/Makefile
+++ zend-framework-1.7.5/debian/Makefile
@@ -0,0 +1,20 @@
+DESTDIR =
+
+TARGETDIR = $(DESTDIR)/usr/share/php/libzend-framework-php/
+DOCPATH   = $(DESTDIR)/usr/share/doc/libzend-framework-php/
+
+LIBS = $(wildcard library/Zend/*)
+TOPFILES  = README.txt 
+
+install:
+	install -d -o www-data -m 755 $(TARGETDIR)/
+
+	cp -r library/Zend $(TARGETDIR)/
+	chown -Rf www-data:www-data $(TARGETDIR)/Zend
+	find $(TARGETDIR)/ -type f -exec chmod 644 {} \;
+
+	install -d -m 755 $(DOCPATH)/
+	install -m 644 $(TOPFILES) $(DOCPATH)/
+	cp -r demos $(DOCPATH)/
+	cp -r tests $(DOCPATH)/
+
--- zend-framework-1.7.5.orig/debian/rules
+++ zend-framework-1.7.5/debian/rules
@@ -0,0 +1,55 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+include /usr/share/quilt/quilt.make
+
+
+build: patch
+	dh_testdir
+
+clean: unpatch
+	dh_testdir
+	dh_testroot
+	[ ! -e Makefile ] || rm -f Makefile
+	dh_clean 
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k 
+	dh_installdirs
+
+# Add here commands to install the package into debian/zend-framwork.
+	cp debian/Makefile .
+	$(MAKE) install DESTDIR=$(CURDIR)/debian/libzend-framework-php/
+	mkdir -p $(CURDIR)/debian/libzend-framework-php/usr/share/lintian/overrides/
+	mkdir -p $(CURDIR)/debian/libzend-framework-php/etc/php5/conf.d/
+	cp debian/libzend-framework-php.lintian.overrides $(CURDIR)/debian/libzend-framework-php/usr/share/lintian/overrides/libzend-framework-php
+	cp debian/zend-framework.ini $(CURDIR)/debian/libzend-framework-php/etc/php5/conf.d/zend-framework.ini
+
+
+# Build architecture-independent files here.
+binary-arch: install
+
+binary-indep: install
+	dh_testdir
+	dh_testroot
+	dh_installchangelogs -Nzend-framework
+	dh_installdocs  -Nzend-framework
+	dh_install
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep  binary-arch
+.PHONY: build clean binary-indep binary-arch binary install 
--- zend-framework-1.7.5.orig/debian/control
+++ zend-framework-1.7.5/debian/control
@@ -0,0 +1,29 @@
+Source: zend-framework
+Section: web
+Priority: extra
+Maintainer: Ubuntu MOTU Developers <ubuntu-motu@lists.ubuntu.com>
+XSBC-Original-Maintainer: Stephan Hermann <sh@sourcecode.de>
+Build-Depends: debhelper (>= 6), quilt
+Standards-Version: 3.7.3
+
+Package: libzend-framework-php
+Architecture: all
+Depends: php5 | php5-cgi | php5-cli | libapache2-mod-php5
+Description: a simple, straightforward, open-source software framework for PHP 5
+ Zend Framework is a simple, straightforward, open-source software framework for
+ PHP 5 designed to eliminate the tedious details of coding and let you focus 
+ on the big picture. 
+ One of its strengths is the highly modular Model-View-Controller (MVC)
+ design, making your code more reusable and easier to maintain.
+
+Package: zend-framework
+Architecture: all
+Depends: libzend-framework-php (>= 1.5.0-0ubuntu1)
+Description: a simple, straightforward, open-source software framework for PHP 5
+ Zend Framework is a simple, straightforward, open-source software framework for
+ PHP 5 designed to eliminate the tedious details of coding and let you focus 
+ on the big picture. 
+ One of its strengths is the highly modular Model-View-Controller (MVC)
+ design, making your code more reusable and easier to maintain.
+ .
+ This is a transitional package.
--- zend-framework-1.7.5.orig/debian/changelog
+++ zend-framework-1.7.5/debian/changelog
@@ -0,0 +1,232 @@
+zend-framework (1.7.5-0ubuntu2.1) jaunty-security; urgency=low
+
+  * SECURITY UPDATE: (LP: #345682)
+    Announcement: http://www.nabble.com/SECURITY-ADVISORY-tp22609193p22609193.html
+    From Zend PHP FW Mailing List:
+    The Zend Framework team was recently notified of an XSS attack vector in its Zend_Filter_StripTags class. 
+    Zend_Filter_StripTags offers the ability to strip HTML tags from text, but also to selectively choose 
+    which tags and specific attributes of those tags to keep.
+    The XSS attack vector was due to a bug in matching HTML tag attributes to retain. 
+    If whitespace was introduced surrounding the attribute assignment operator or the value included newline characters, 
+    the attribute would always be included in the final output- even if it was not marked to retain.
+    A security fix has been created and released with Zend Framework 1.7.7.
+    Additionally, the fix has been back-ported to the 1.6, 1.5, and 1.0 release branches.
+  * debian/patches/zf_Zend_Filter_security_fix.patch:
+    Fixes security issue according to 
+    http://framework.zend.com/svn/framework/standard/branches/release-1.7/library/Zend/Filter/StripTags.php
+
+ -- Stephan Hermann <sh@sourcecode.de>  Thu, 14 May 2009 12:13:41 +0000
+
+zend-framework (1.7.5-0ubuntu2) jaunty; urgency=low
+
+  * debian/patches/zf_176_fixes.patch:
+    Added library/ and tests/ fixes from ZendFramework 1.7.6 to 1.7.5 package version
+    A complete list of fixes you can find here:
+    http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=10953
+
+ -- Stephan Hermann <sh@sourcecode.de>  Wed, 04 Mar 2009 08:44:28 +0000
+
+zend-framework (1.7.5-0ubuntu1) jaunty; urgency=low
+
+  * New Upstream version
+    - Bugfix / Security Release
+    - A list of fixes you can find here:
+      http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=10951
+
+ -- Stephan Hermann <sh@sourcecode.de>  Wed, 18 Feb 2009 08:24:46 +0000
+
+zend-framework (1.7.4-0ubuntu1) jaunty; urgency=low
+
+  * New Upstream version
+    - Bugfix Release
+    - A list of fixes you can find here:
+      http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=10944
+  * cleaned debian/patches
+
+ -- Stephan Hermann <sh@sourcecode.de>  Thu, 05 Feb 2009 15:23:34 +0000
+
+zend-framework (1.7.3-0ubuntu2) jaunty; urgency=low
+
+  * added debian/patches/zend-framework-pl1.patch (via quilt)
+
+ -- Stephan Hermann <sh@sourcecode.de>  Thu, 29 Jan 2009 11:51:36 +0000
+
+zend-framework (1.7.3-0ubuntu1) jaunty; urgency=low
+
+  * New Upstream Version
+    - Bug Fix Release
+    - A list of fixes you can find here:
+      http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=10934
+
+ -- Stephan Hermann <sh@sourcecode.de>  Wed, 21 Jan 2009 15:21:59 +0000
+
+zend-framework (1.7.2-0ubuntu1) jaunty; urgency=low
+
+  * New Upstream Version
+    - Bug Fix Release
+    - A list of fixes you can find here: 
+      http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=10923
+
+ -- Stephan Hermann <sh@sourcecode.de>  Wed, 07 Jan 2009 10:02:06 +0000
+
+zend-framework (1.7.1-0ubuntu1) jaunty; urgency=low
+
+  * New Upstream version
+  * New features and components:
+    + Zend_Amf with support for AMF0 and AMF3 protocols
+    + Dojo Toolkit 1.2.1 (Not installed in Ubuntu Package)
+    + Support for dijit editor available in the Dojo Toolkit
+    + Zend_Service_Twitter
+    + ZendX_JQuery in extras library
+    + Metadata API in Zend_Cache
+    + Google book search API in Zend_Gdata
+    + Preliminary support for GData Protocol v2 in Zend_Gdata
+    + Support for skip data processing in Zend_Search_Lucene
+    + Support for Open Office XML documents in Zend_Search_Lucene indexer
+    + Performance enhancements in Zend_Loader, Zend_Controller, and server components
+    + Zend_Mail_Storage_Writable_Maildir enhancements for mail delivery
+    + Zend_Tool in incubator
+    + Zend_Text_Table for formatting table using characters
+    + Zend_ProgressBar
+    + Zend_Config_Writer
+    + ZendX_Console_Unix_Process in the extras library
+    + Zend_Db_Table_Select support for Zend_Paginator
+    + Global parameters for routes
+    + Using Chain-Routes for Hostname-Routes via Zend_Config
+    + I18N improvements
+      - Application wide locale for all classes
+      - Data retrieving methods are now static
+      - Additional cache handling methods in all I18N classes
+      - Zend_Translate API simplified 
+    + File transfer enhancements
+      - Support for file elements in subforms
+      - Support for multifile elements
+      - Support for MAX_FILES_SIZE in form
+      - Support for breaking validation chain
+      - Support for translation of failure ,messages
+      - New IsCompressed, IsImage, ExcludeMimeType, ExcludeExtension validators
+      - Support for FileInfo extension in MimeType validator 
+    + Zend_Db_Table_Select adapater for Zend_Paginator
+    + Support for custom adapters in Zend_Paginator
+    + More flexible handling of complex types in Zend_Soap
+    + All bugs which are fixed you can find here: 
+      - http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=10903
+  * Do not install the dojo toolkit which is being shipped inside the original tarball of Zend
+  * Do not install the incubator which is being shipped inside the original tarball of Zend
+  * debian/control: remove quilt from build-depends, not needed anymore
+  * debian/rules: 
+    - remove all quilt relevant patch rules and includes
+    - copy debian/zend-framework.ini to the right location (/etc/php5/conf.d/)
+  * added debian/zend-framework.ini (LP: #220719)
+  * debian/README.Debian:
+    - Updated to the new world order for enabling zend-framework
+
+ -- Stephan Hermann <sh@sourcecode.de>  Tue, 02 Dec 2008 12:22:54 +0000
+
+zend-framework (1.5.3-0ubuntu2) intrepid; urgency=low
+
+  * debian/patches/ubuntu_01_fix_mail.diff:
+    + Fixes upstream bugs:
+      - ZF-3912
+      - ZF-3641
+      - ZF-3865
+  * debian/control:
+    + added quilt to b-d
+  * debian/rules:
+    + added quilt targets to patch source
+
+ -- Stephan Hermann <sh@sourcecode.de>  Mon, 18 Aug 2008 15:26:22 +0200
+
+zend-framework (1.5.3-0ubuntu1) intrepid; urgency=low
+
+  * New upstream version
+    a detailed list of bugs which are fixed you can find at
+    http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=10811
+
+ -- Stephan Hermann <sh@sourcecode.de>  Wed, 06 Aug 2008 17:11:49 +0200
+
+zend-framework (1.5.2-0ubuntu1) intrepid; urgency=low
+
+  * New bugfox release
+    a detailed list of bugs which are fixed you can find at 
+    http://framework.zend.com/issues/secure/IssueNavigator.jspa?pager/start=0
+  * debian/control: 
+    - bumbed debhelper version to >= 6
+  * debian/compat:
+    - bumbed compat version to 6
+
+ -- Stephan Hermann <sh@sourcecode.de>  Wed, 21 May 2008 10:14:51 +0200
+
+zend-framework (1.5.1-0ubuntu1) hardy; urgency=low
+
+  * New bugfix release
+    You can find the bugs fixed at 
+    http://framework.zend.com/issues/secure/IssueNavigator.jspa?mode=hide&requestId=10711
+
+ -- Stephan Hermann <sh@sourcecode.de>  Thu, 27 Mar 2008 10:07:48 +0100
+
+zend-framework (1.5.0-0ubuntu1) hardy; urgency=low
+
+  * New upstream release (LP: #204016)
+  * New Features:
+    + New Zend_Form component with support for AJAX-enabled form elements
+    + New action and view helpers for automating and facilitating AJAX requests
+      and
+      alternate response formats
+    + LDAP, Infocard, and OpenID authentication adapters
+    + Support for complex Lucene searches, including fuzzy, date-range, and
+      wildcard
+      queries
+    + Support for Lucene 2.1 index file format
+    + Partial, Placeholder, Action, and Header view helpers for advanced view
+      composition and rendering
+    + New Zend_Layout component for automating and facilitating site layouts
+    + UTF-8 support for PDF documents
+  * Enhancement and Bugfixes
+    * Zend_Json has been augmented to convert from XML to JSON format
+    * New Zend_TimeSync component supporting the Network Time Protocol (NTP)
+    * Improved performance of Zend_Translate with new caching option
+    * addRoute(), addRoutes(), addConfig(), removeRoute(), removeDefaultRoutes()
+      methods of Zend_Controller_Router_Rewrite now support method chaining
+    * Yahoo web service supports Yahoo! Site Explorer and video searches
+    * Database adapter for Firebird/Interbase
+    * Query modifiers for fetch and find methods in Zend_Db_Table
+    * 'init' hook to modify initialization behaviour in subclasses Zend_Db_Table,
+       Rowset, and Row
+    * Support for HTTP CONNECT requests in Zend_Http_Client
+    * Support for PHP's hash() for read/write control in Zend_Cache
+    * Zend_Cache_Backend_File may be configured to call ignore_user_abort() to
+      maintain cache data integrity
+    * Timezone in Zend_Date may be set by locale
+    * Zend_Cache can now use custom frontend and backend classes
+  * debian/control:
+    - Introduce binary package libzend-framework-php according to Debians PHP
+      Policy (http://webapps-common.alioth.debian.org/draft-php/html/index.htm)
+    - Make zend-framework (old binary package) a transitional one, with
+      depends on the new binary package
+  * debian/rules:
+    - Don't install NEWS.txt as Changelog replacement anymore, it doesn't
+      exists in the upstream tarball anymore
+  * debian/Makefile: 
+    - Remove VERSION.txt from instal target, this file doesn't exist anymore,
+      too
+
+ -- Stephan Hermann <sh@sourcecode.de>  Tue, 18 Mar 2008 09:19:57 +0100
+
+zend-framework (1.0.4-0ubuntu1) hardy; urgency=low
+
+  * New upstream version
+    - This version is a bugfix release
+   
+
+ -- Stephan Hermann <sh@sourcecode.de>  Tue, 26 Feb 2008 21:00:10 +0100
+
+zend-framework (1.0.2-0ubuntu1) hardy; urgency=low
+
+  * Initial release 
+  * Latest Stable version 1.0.3 has bugs, which prevent apps to determine the
+    correct locale on the system. It's being fixed in latest SVN, but this is
+    too unstable
+
+ -- Stephan Hermann <sh@sourcecode.de>  Thu, 07 Feb 2008 11:14:22 +0100
+
--- zend-framework-1.7.5.orig/debian/copyright
+++ zend-framework-1.7.5/debian/copyright
@@ -0,0 +1,49 @@
+This package was debianized by Stephan Hermann <sh@sourcecode.de> on
+Thu, 07 Feb 2008 11:14:22 +0100.
+
+It was downloaded from http://framework.zend.com/releases/ZendFramework-1.0.3/ZendFramework-1.0.2.tar.gz
+
+Upstream Author: 
+
+    Zend Technologies USA Inc. <info@zend.com>
+
+Copyright: 
+
+    (C) 2005-2008 Zend Technologies Inc. (http://www.zend.com)
+
+License:
+
+New BSD License
+
+Copyright (c) 2006-2007, Zend Technologies USA, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+
+    * Neither the name of Zend Technologies USA, Inc. nor the names of its
+      contributors may be used to endorse or promote products derived from this
+      software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+			
+
+The Debian packaging is (C) 2008, Stephan Hermann <sh@sourcecode.de> and
+is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
+
--- zend-framework-1.7.5.orig/debian/libzend-framework-php.lintian.overrides
+++ zend-framework-1.7.5/debian/libzend-framework-php.lintian.overrides
@@ -0,0 +1,13 @@
+zend-framework: package-contains-empty-directory usr/share/doc/zend-framework/tests/Zend/Controller/_files/modules/bar/views/helpers/
+zend-framework: package-contains-empty-directory usr/share/doc/zend-framework/tests/Zend/Controller/views/helpers/
+zend-framework: package-contains-empty-directory usr/share/doc/zend-framework/tests/Zend/Memory/_files/
+zend-framework: package-contains-empty-directory usr/share/doc/zend-framework/tests/Zend/Search/Lucene/_files/_index/
+zend-framework: package-contains-empty-directory usr/share/doc/zend-framework/tests/Zend/Search/Lucene/Storage/_tempFiles/
+zend-framework: package-contains-empty-directory usr/share/php/zend-framework/Zend/View/Filter/
+zend-framework: package-contains-empty-directory usr/share/doc/zend-framework/tests/Zend/Controller/_files/modules/foo/views/helpers/
+zend-framework: package-contains-empty-directory usr/share/doc/zend-framework/tests/Zend/Controller/_files/modules/default/controllers/
+zend-framework: package-contains-empty-directory usr/share/doc/zend-framework/tests/Zend/Db/Table/_files/
+zend-framework: package-contains-empty-directory usr/share/doc/zend-framework/tests/Zend/Controller/views/filters/
+zend-framework: zero-byte-file-in-doc-directory usr/share/doc/zend-framework/tests/Zend/Http/Client/_files/testHeaders.php
+zend-framework: package-contains-empty-directory usr/share/doc/zend-framework/tests/Zend/Controller/_files/modules/bar/views/filters/
+zend-framework: zero-byte-file-in-doc-directory usr/share/doc/zend-framework/tests/Zend/Filter/_files/file.1
--- zend-framework-1.7.5.orig/debian/dirs
+++ zend-framework-1.7.5/debian/dirs
@@ -0,0 +1,3 @@
+usr/share/php/libzend-framework-php
+usr/share/doc/libzend-framework-php
+/usr/share/lintian/overrides
--- zend-framework-1.7.5.orig/debian/zend-framework.ini
+++ zend-framework-1.7.5/debian/zend-framework.ini
@@ -0,0 +1,3 @@
+[Zend]
+; include_path=${include_path} ":/usr/share/php/libzend-framework-php"
+
--- zend-framework-1.7.5.orig/debian/README.Debian
+++ zend-framework-1.7.5/debian/README.Debian
@@ -0,0 +1,11 @@
+Installation
+
+In order to use the Zend Framework from your php scripts, you'll have to add
+/usr/share/php/zend-framework/ on the include_path of php4/php5.
+This is done easily: vi /etc/php5/conf.d/zend-framework.ini and remove the ";" 
+from the beginning of the include_path line. For this to work properly, you need also
+to remove the comment sign from the 'include_path' configuration variable in your php.ini.
+If you don't do this, php will segfault. (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=497453)
+
+ -- Stephan Hermann <sh@sourcecode.de>,  Wed Feb 13 14:00:00 2008
+
--- zend-framework-1.7.5.orig/debian/compat
+++ zend-framework-1.7.5/debian/compat
@@ -0,0 +1 @@
+6
--- zend-framework-1.7.5.orig/debian/patches/series
+++ zend-framework-1.7.5/debian/patches/series
@@ -0,0 +1,2 @@
+zf_176_fixes.patch
+zf_Zend_Filter_security_fix.patch
--- zend-framework-1.7.5.orig/debian/patches/zf_Zend_Filter_security_fix.patch
+++ zend-framework-1.7.5/debian/patches/zf_Zend_Filter_security_fix.patch
@@ -0,0 +1,18 @@
+Description: fix XSS attack vector in Zend_Filter_StripTags
+Upstream: http://www.nabble.com/SECURITY-ADVISORY-td22609193.html
+Ubuntu: https://bugs.edge.launchpad.net/bugs/345682
+
+Index: zend-framework-1.7.5/library/Zend/Filter/StripTags.php
+===================================================================
+--- zend-framework-1.7.5.orig/library/Zend/Filter/StripTags.php	2009-05-14 11:56:32.737151698 +0000
++++ zend-framework-1.7.5/library/Zend/Filter/StripTags.php	2009-05-14 12:07:36.987150697 +0000
+@@ -256,7 +256,8 @@
+         // If there are non-whitespace characters in the attribute string
+         if (strlen($tagAttributes)) {
+             // Parse iteratively for well-formed attributes
+-            preg_match_all('/(\w+)=([\'"])((.(?!=\2))+)\2/s', $tagAttributes, $matches);
++            preg_match_all('/(\w+)\s*=\s*(?:(")(.*?)"|(\')(.*?)\')/s', $tagAttributes, $matches);
++
+             // Initialize valid attribute accumulator
+             $tagAttributes = '';
+             // Iterate over each matched attribute
--- zend-framework-1.7.5.orig/debian/patches/zf_176_fixes.patch
+++ zend-framework-1.7.5/debian/patches/zf_176_fixes.patch
@@ -0,0 +1,5076 @@
+Index: ZendFramework-1.7.5/library/Zend/Config/Writer/Ini.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Config/Writer/Ini.php	2009-03-04 08:43:42.620002405 +0000
++++ ZendFramework-1.7.5/library/Zend/Config/Writer/Ini.php	2009-03-04 08:44:00.380001517 +0000
+@@ -16,7 +16,7 @@
+  * @package    Zend_Config
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: Ini.php 13709 2009-01-20 12:26:34Z dasprid $
++ * @version    $Id: Ini.php 14176 2009-02-26 22:21:26Z dasprid $
+  */
+ 
+ /**
+@@ -134,15 +134,22 @@
+             $iniString .= '[' . $sectionName . ']' . "\n"
+                        .  $this->_addBranch($this->_config)
+                        .  "\n";
+-        } else {       
++        } else {
+             foreach ($this->_config as $sectionName => $data) {
+-                if (isset($extends[$sectionName])) {
+-                    $sectionName .= ' : ' . $extends[$sectionName];
++                if (!($data instanceof Zend_Config)) {
++                    $iniString .= $sectionName
++                               .  ' = '
++                               .  $this->_prepareValue($data)
++                               .  "\n";
++                } else {
++                    if (isset($extends[$sectionName])) {
++                        $sectionName .= ' : ' . $extends[$sectionName];
++                    }
++                    
++                    $iniString .= '[' . $sectionName . ']' . "\n"
++                               .  $this->_addBranch($data)
++                               .  "\n";
+                 }
+-                
+-                $iniString .= '[' . $sectionName . ']' . "\n"
+-                           .  $this->_addBranch($data)
+-                           .  "\n";
+             }
+         }
+        
+Index: ZendFramework-1.7.5/library/Zend/Config/Writer/Xml.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Config/Writer/Xml.php	2009-03-04 08:43:42.660002354 +0000
++++ ZendFramework-1.7.5/library/Zend/Config/Writer/Xml.php	2009-03-04 08:44:00.380001517 +0000
+@@ -16,7 +16,7 @@
+  * @package    Zend_Config
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: Xml.php 13709 2009-01-20 12:26:34Z dasprid $
++ * @version    $Id: Xml.php 14176 2009-02-26 22:21:26Z dasprid $
+  */
+ 
+ /**
+@@ -117,16 +117,16 @@
+         } else {
+             foreach ($this->_config as $sectionName => $data) {
+                 if (!($data instanceof Zend_Config)) {
+-                    continue;
+-                }
+-            
+-                $child = $xml->addChild($sectionName);
+-                
+-                if (isset($extends[$sectionName])) {
+-                    $child->addAttribute('extends', $extends[$sectionName]);
++                    $xml->addChild($sectionName, (string) $data);
++                } else {
++                    $child = $xml->addChild($sectionName);
++                    
++                    if (isset($extends[$sectionName])) {
++                        $child->addAttribute('extends', $extends[$sectionName]);
++                    }
++        
++                    $this->_addBranch($data, $child);
+                 }
+-    
+-                $this->_addBranch($data, $child);
+             }
+         }
+                 
+Index: ZendFramework-1.7.5/library/Zend/Db/Select.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Db/Select.php	2009-03-04 08:43:42.700001690 +0000
++++ ZendFramework-1.7.5/library/Zend/Db/Select.php	2009-03-04 08:44:00.380001517 +0000
+@@ -1233,7 +1233,7 @@
+             trigger_error($e->getMessage(), E_USER_WARNING);
+             $sql = '';
+         }
+-        return $sql;
++        return (string)$sql;
+     }
+ 
+ }
+Index: ZendFramework-1.7.5/library/Zend/Dojo/View/Helper/Dojo/Container.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Dojo/View/Helper/Dojo/Container.php	2009-03-04 08:43:42.750003034 +0000
++++ ZendFramework-1.7.5/library/Zend/Dojo/View/Helper/Dojo/Container.php	2009-03-04 08:44:00.380001517 +0000
+@@ -16,7 +16,7 @@
+  * @package    Zend_Dojo
+  * @subpackage View
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+- * @version    $Id: Container.php 11991 2008-10-16 15:12:15Z matthew $
++ * @version    $Id: Container.php 14166 2009-02-25 17:58:58Z matthew $
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+  */
+ 
+@@ -577,6 +577,20 @@
+     }
+ 
+     /**
++     * Prepend an onLoad event to the list of onLoad actions
++     * 
++     * @param  string $callback Lambda
++     * @return Zend_Dojo_View_Helper_Dojo_Container
++     */
++    public function prependOnLoad($callback)
++    {
++        if (!in_array($callback, $this->_onLoadActions, true)) {
++            array_unshift($this->_onLoadActions, $callback);
++        }
++        return $this;
++    }
++
++    /**
+      * Retrieve all registered onLoad actions
+      * 
+      * @return array
+@@ -776,7 +790,7 @@
+ }
+ EOJ;
+             $this->requireModule('dojo.parser');
+-            $this->addOnLoad($js);
++            $this->prependOnLoad($js);
+             $this->addJavascript('var zendDijits = ' . $this->dijitsToJson() . ';');
+             $this->_dijitLoaderRegistered = true;
+         }
+Index: ZendFramework-1.7.5/library/Zend/Gdata/App.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Gdata/App.php	2009-03-04 08:43:42.830002382 +0000
++++ ZendFramework-1.7.5/library/Zend/Gdata/App.php	2009-03-04 08:44:00.390001376 +0000
+@@ -16,7 +16,7 @@
+  * @category   Zend
+  * @package    Zend_Gdata
+  * @subpackage App
+- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+  */
+ 
+@@ -48,7 +48,7 @@
+  * @category   Zend
+  * @package    Zend_Gdata
+  * @subpackage App
+- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+  */
+ class Zend_Gdata_App
+@@ -502,8 +502,7 @@
+         } elseif ($data instanceof Zend_Gdata_App_MediaEntry) {
+             $rawData = $data->encode();
+             if ($data->getMediaSource() !== null) {
+-                $finalContentType = 'multipart/related; boundary="' .
+-                    $data->getBoundary() . '"';
++                $finalContentType = $rawData->getContentType();
+                 $headers['MIME-version'] = '1.0';
+                 $headers['Slug'] = $data->getMediaSource()->getSlug();
+             } else {
+@@ -635,10 +634,39 @@
+         $this->_httpClient->setHeaders($headers);
+         $this->_httpClient->setUri($url);
+         $this->_httpClient->setConfig(array('maxredirects' => 0));
+-        $this->_httpClient->setRawData($body, $contentType);
++
++        // Set the proper adapter if we are handling a streaming upload
++        $usingMimeStream = false;
++        $oldHttpAdapter = null;
++
++        if ($body instanceof Zend_Gdata_MediaMimeStream) {
++            $usingMimeStream = true;
++            $this->_httpClient->setRawDataStream($body, $contentType);
++            $oldHttpAdapter = $this->_httpClient->getAdapter();
++
++            if ($oldHttpAdapter instanceof Zend_Http_Client_Adapter_Proxy) {
++                require_once 'Zend/Gdata/HttpAdapterStreamingProxy.php';
++                $newAdapter = new Zend_Gdata_HttpAdapterStreamingProxy();
++            } else {
++                require_once 'Zend/Gdata/HttpAdapterStreamingSocket.php';
++                $newAdapter = new Zend_Gdata_HttpAdapterStreamingSocket();
++            }
++            $this->_httpClient->setAdapter($newAdapter);
++        } else {
++            $this->_httpClient->setRawData($body, $contentType);
++        }
++
+         try {
+             $response = $this->_httpClient->request($method);
++            // reset adapter
++            if ($usingMimeStream) {
++                $this->_httpClient->setAdapter($oldHttpAdapter);
++            }
+         } catch (Zend_Http_Client_Exception $e) {
++            // reset adapter
++            if ($usingMimeStream) {
++                $this->_httpClient->setAdapter($oldHttpAdapter);
++            }
+             require_once 'Zend/Gdata/App/HttpException.php';
+             throw new Zend_Gdata_App_HttpException($e->getMessage(), $e);
+         }
+Index: ZendFramework-1.7.5/library/Zend/Gdata/App/MediaEntry.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Gdata/App/MediaEntry.php	2009-03-04 08:43:42.790002613 +0000
++++ ZendFramework-1.7.5/library/Zend/Gdata/App/MediaEntry.php	2009-03-04 08:44:00.380001517 +0000
+@@ -16,7 +16,7 @@
+  * @category   Zend
+  * @package    Zend_Gdata
+  * @subpackage App
+- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+  */
+ 
+@@ -31,15 +31,9 @@
+ require_once 'Zend/Gdata/App/MediaSource.php';
+ 
+ /**
+- * @see Zend_Mime
++ * @see Zend_Gdata_MediaMimeStream
+  */
+-require_once 'Zend/Mime.php';
+-
+-/**
+- * @see Zend_Mime_Message
+- */
+-require_once 'Zend/Mime/Message.php';
+-
++require_once 'Zend/Gdata/MediaMimeStream.php';
+ 
+ /**
+  * Concrete class for working with Atom entries containing multi-part data.
+@@ -47,7 +41,7 @@
+  * @category   Zend
+  * @package    Zend_Gdata
+  * @subpackage App
+- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+  */
+ class Zend_Gdata_App_MediaEntry extends Zend_Gdata_App_Entry
+@@ -55,18 +49,11 @@
+     /**
+      * The attached MediaSource/file
+      *
+-     * @var Zend_Gdata_App_MediaSource 
++     * @var Zend_Gdata_App_MediaSource
+      */
+     protected $_mediaSource = null;
+ 
+     /**
+-     * The Zend_Mime object used to generate the boundary
+-     *
+-     * @var Zend_Mime 
+-     */
+-    protected $_mime = null;
+-   
+-    /**
+      * Constructs a new MediaEntry, representing XML data and optional
+      * file to upload
+      *
+@@ -76,50 +63,29 @@
+     public function __construct($element = null, $mediaSource = null)
+     {
+         parent::__construct($element);
+-        $this->_mime = new Zend_Mime();
+         $this->_mediaSource = $mediaSource;
+     }
+- 
+-    /**
+-     * Return the Zend_Mime object associated with this MediaEntry.  This
+-     * object is used to generate the media boundaries.
+-     * 
+-     * @return Zend_Mime The Zend_Mime object associated with this MediaEntry.
+-     */
+-    public function getMime()
+-    {
+-        return $this->_mime;
+-    }
+-    
++
+     /**
+      * Return the MIME multipart representation of this MediaEntry.
+      *
+-     * @return string The MIME multipart representation of this MediaEntry
++     * @return string|Zend_Gdata_MediaMimeStream The MIME multipart
++     *         representation of this MediaEntry. If the entry consisted only
++     *         of XML, a string is returned.
+      */
+     public function encode()
+     {
+         $xmlData = $this->saveXML();
+-        if ($this->getMediaSource() === null) {
++        $mediaSource = $this->getMediaSource();
++        if ($mediaSource === null) {
+             // No attachment, just send XML for entry
+             return $xmlData;
+         } else {
+-            $mimeMessage = new Zend_Mime_Message();
+-            $mimeMessage->setMime($this->_mime);
+-           
+-            $xmlPart = new Zend_Mime_Part($xmlData);
+-            $xmlPart->type = 'application/atom+xml';
+-            $xmlPart->encoding = null;
+-            $mimeMessage->addPart($xmlPart);
+-            
+-            $binaryPart = new Zend_Mime_Part($this->getMediaSource()->encode());
+-            $binaryPart->type = $this->getMediaSource()->getContentType();
+-            $binaryPart->encoding = null;
+-            $mimeMessage->addPart($binaryPart);
+-
+-            return $mimeMessage->generateMessage();
++            return new Zend_Gdata_MediaMimeStream($xmlData,
++                $mediaSource->getFilename(), $mediaSource->getContentType());
+         }
+     }
+-   
++
+     /**
+      * Return the MediaSource object representing the file attached to this
+      * MediaEntry.
+@@ -148,15 +114,5 @@
+         }
+         return $this;
+     }
+-    
+-    /**
+-     * Return the boundary used in the MIME multipart message
+-     *
+-     * @return string The boundary used in the MIME multipart message 
+-     */
+-    public function getBoundary()
+-    {
+-        return $this->_mime->boundary();
+-    }
+ 
+ }
+Index: ZendFramework-1.7.5/library/Zend/Gdata/Extension/When.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Gdata/Extension/When.php	2009-03-04 08:43:42.880002052 +0000
++++ ZendFramework-1.7.5/library/Zend/Gdata/Extension/When.php	2009-03-04 08:44:00.390001376 +0000
+@@ -113,8 +113,8 @@
+ 
+     public function __toString()
+     {
+-        if ($valueString)
+-            return $valueString;
++        if ($this->_valueString)
++            return $this->_valueString;
+         else {
+             return 'Starts: ' . $this->getStartTime() . ' ' .
+                    'Ends: ' .  $this->getEndTime();
+Index: ZendFramework-1.7.5/library/Zend/Gdata/HttpAdapterStreamingProxy.php
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ ZendFramework-1.7.5/library/Zend/Gdata/HttpAdapterStreamingProxy.php	2009-03-04 08:44:00.390001376 +0000
+@@ -0,0 +1,126 @@
++<?php
++
++/**
++ * Zend Framework
++ *
++ * LICENSE
++ *
++ * This source file is subject to the new BSD license that is bundled
++ * with this package in the file LICENSE.txt.
++ * It is also available through the world-wide-web at this URL:
++ * http://framework.zend.com/license/new-bsd
++ * If you did not receive a copy of the license and are unable to
++ * obtain it through the world-wide-web, please send an email
++ * to license@zend.com so we can send you a copy immediately.
++ *
++ * @category   Zend
++ * @package    Zend_Gdata
++ * @subpackage Gdata
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license    http://framework.zend.com/license/new-bsd     New BSD License
++ */
++
++/**
++ * @see Zend_Http_Client_Adapter_Proxy
++ */
++require_once 'Zend/Http/Client/Adapter/Proxy.php';
++
++/**
++ * Extends the proxy HTTP adapter to handle streams instead of discrete body
++ * strings.
++ *
++ * @category   Zend
++ * @package    Zend_Gdata
++ * @subpackage Gdata
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license    http://framework.zend.com/license/new-bsd     New BSD License
++ */
++class Zend_Gdata_HttpAdapterStreamingProxy extends Zend_Http_Client_Adapter_Proxy
++{
++    /**
++     * The amount read from a stream source at a time.
++     *
++     * @var integer
++     */
++    const CHUNK_SIZE = 1024;
++
++    /**
++     * Send request to the proxy server with streaming support
++     *
++     * @param string        $method
++     * @param Zend_Uri_Http $uri
++     * @param string        $http_ver
++     * @param array         $headers
++     * @param string        $body
++     * @return string Request as string
++     */
++    public function write($method, $uri, $http_ver = '1.1', $headers = array(), $body = '')
++    {
++        // If no proxy is set, throw an error
++        if (! $this->config['proxy_host']) {
++        	require_once 'Zend/Http/Client/Adapter/Exception.php';
++            throw new Zend_Http_Client_Adapter_Exception('No proxy host set!');
++        }
++
++        // Make sure we're properly connected
++        if (! $this->socket) {
++            require_once 'Zend/Http/Client/Adapter/Exception.php';
++            throw new Zend_Http_Client_Adapter_Exception(
++                'Trying to write but we are not connected');
++        }
++
++        $host = $this->config['proxy_host'];
++        $port = $this->config['proxy_port'];
++
++        if ($this->connected_to[0] != $host || $this->connected_to[1] != $port) {
++            require_once 'Zend/Http/Client/Adapter/Exception.php';
++            throw new Zend_Http_Client_Adapter_Exception(
++                'Trying to write but we are connected to the wrong proxy ' .
++                'server');
++        }
++
++        // Add Proxy-Authorization header
++        if ($this->config['proxy_user'] && ! isset($headers['proxy-authorization'])) {
++            $headers['proxy-authorization'] = Zend_Http_Client::encodeAuthHeader(
++                $this->config['proxy_user'], $this->config['proxy_pass'], $this->config['proxy_auth']
++            );
++        }
++                
++        // if we are proxying HTTPS, preform CONNECT handshake with the proxy
++        if ($uri->getScheme() == 'https' && (! $this->negotiated)) {
++            $this->connectHandshake($uri->getHost(), $uri->getPort(), $http_ver, $headers);
++            $this->negotiated = true;
++        }
++        
++        // Save request method for later
++        $this->method = $method;
++
++        // Build request headers
++        $request = "{$method} {$uri->__toString()} HTTP/{$http_ver}\r\n";
++
++        // Add all headers to the request string
++        foreach ($headers as $k => $v) {
++            if (is_string($k)) $v = "$k: $v";
++            $request .= "$v\r\n";
++        }
++
++        $request .= "\r\n";
++
++        // Send the request headers
++        if (! @fwrite($this->socket, $request)) {
++            require_once 'Zend/Http/Client/Adapter/Exception.php';
++            throw new Zend_Http_Client_Adapter_Exception(
++                'Error writing request to proxy server');
++        }
++
++        //read from $body, write to socket
++        while ($body->hasData()) {
++            if (! @fwrite($this->socket, $body->read(self::CHUNK_SIZE))) {
++                require_once 'Zend/Http/Client/Adapter/Exception.php';
++                throw new Zend_Http_Client_Adapter_Exception(
++                    'Error writing request to server');
++            }
++        }
++        return 'Large upload, request is not cached.';
++    }
++}
+Index: ZendFramework-1.7.5/library/Zend/Gdata/HttpAdapterStreamingSocket.php
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ ZendFramework-1.7.5/library/Zend/Gdata/HttpAdapterStreamingSocket.php	2009-03-04 08:44:00.390001376 +0000
+@@ -0,0 +1,107 @@
++<?php
++
++/**
++ * Zend Framework
++ *
++ * LICENSE
++ *
++ * This source file is subject to the new BSD license that is bundled
++ * with this package in the file LICENSE.txt.
++ * It is also available through the world-wide-web at this URL:
++ * http://framework.zend.com/license/new-bsd
++ * If you did not receive a copy of the license and are unable to
++ * obtain it through the world-wide-web, please send an email
++ * to license@zend.com so we can send you a copy immediately.
++ *
++ * @category   Zend
++ * @package    Zend_Gdata
++ * @subpackage Gdata
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license    http://framework.zend.com/license/new-bsd     New BSD License
++ */
++
++/**
++ * @see Zend_Http_Client_Adapter_Socket
++ */
++require_once 'Zend/Http/Client/Adapter/Socket.php';
++
++/**
++ * Extends the default HTTP adapter to handle streams instead of discrete body
++ * strings.
++ *
++ * @category   Zend
++ * @package    Zend_Gdata
++ * @subpackage Gdata
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license    http://framework.zend.com/license/new-bsd     New BSD License
++ */
++class Zend_Gdata_HttpAdapterStreamingSocket extends Zend_Http_Client_Adapter_Socket
++{
++
++    /**
++     * The amount read from a stream source at a time.
++     *
++     * @var integer
++     */
++    const CHUNK_SIZE = 1024;
++
++    /**
++     * Send request to the remote server with streaming support.
++     *
++     * @param string        $method
++     * @param Zend_Uri_Http $uri
++     * @param string        $http_ver
++     * @param array         $headers
++     * @param string        $body
++     * @return string Request as string
++     */
++    public function write($method, $uri, $http_ver = '1.1', $headers = array(),
++        $body = '')
++    {
++        // Make sure we're properly connected
++        if (! $this->socket) {
++            require_once 'Zend/Http/Client/Adapter/Exception.php';
++            throw new Zend_Http_Client_Adapter_Exception(
++                'Trying to write but we are not connected');
++        }
++
++        $host = $uri->getHost();
++        $host = (strtolower($uri->getScheme()) == 'https' ? $this->config['ssltransport'] : 'tcp') . '://' . $host;
++        if ($this->connected_to[0] != $host || $this->connected_to[1] != $uri->getPort()) {
++            require_once 'Zend/Http/Client/Adapter/Exception.php';
++            throw new Zend_Http_Client_Adapter_Exception(
++                'Trying to write but we are connected to the wrong host');
++        }
++
++        // Save request method for later
++        $this->method = $method;
++
++        // Build request headers
++        $path = $uri->getPath();
++        if ($uri->getQuery()) $path .= '?' . $uri->getQuery();
++        $request = "{$method} {$path} HTTP/{$http_ver}\r\n";
++        foreach ($headers as $k => $v) {
++            if (is_string($k)) $v = ucfirst($k) . ": $v";
++            $request .= "$v\r\n";
++        }
++
++        // Send the headers over
++        $request .= "\r\n";
++        if (! @fwrite($this->socket, $request)) {
++            require_once 'Zend/Http/Client/Adapter/Exception.php';
++            throw new Zend_Http_Client_Adapter_Exception(
++                'Error writing request to server');
++        }
++
++
++        //read from $body, write to socket
++        while ($body->hasData()) {
++            if (! @fwrite($this->socket, $body->read(self::CHUNK_SIZE))) {
++                require_once 'Zend/Http/Client/Adapter/Exception.php';
++                throw new Zend_Http_Client_Adapter_Exception(
++                    'Error writing request to server');
++            }
++        }
++        return 'Large upload, request is not cached.';
++    }
++}
+Index: ZendFramework-1.7.5/library/Zend/Gdata/HttpClient.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Gdata/HttpClient.php	2009-03-04 08:43:42.990003061 +0000
++++ ZendFramework-1.7.5/library/Zend/Gdata/HttpClient.php	2009-03-04 08:44:00.400001565 +0000
+@@ -16,7 +16,7 @@
+  * @category   Zend
+  * @package    Zend_Gdata
+  * @subpackage Gdata
+- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+  */
+ 
+@@ -40,7 +40,7 @@
+  * @category   Zend
+  * @package    Zend_Gdata
+  * @subpackage Gdata
+- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+  */
+ class Zend_Gdata_HttpClient extends Zend_Http_Client
+@@ -81,6 +81,14 @@
+     private $_clientLoginKey = null;
+ 
+     /**
++     * True if this request is being made with data supplied by
++     * a stream object instead of a raw encoded string.
++     *
++     * @var bool
++     */
++    protected $_streamingRequest = null;
++
++    /**
+      * Sets the PEM formatted private key, as read from a file.
+      *
+      * This method reads the file and then calls setAuthSubPrivateKey()
+@@ -244,4 +252,102 @@
+         return $response;
+     }
+ 
++    /**
++     * Return the current connection adapter
++     *
++     * @return Zend_Http_Client_Adapter_Interface|string $adapter
++     */
++    public function getAdapter()
++    {
++    	return $this->adapter;
++    }
++
++   /**
++     * Load the connection adapter
++     *
++     * @param Zend_Http_Client_Adapter_Interface $adapter
++     * @return void
++     */
++    public function setAdapter($adapter)
++    {
++        if ($adapter == null) {
++            $this->adapter = $adapter;
++        } else {
++        	  parent::setAdapter($adapter);
++        }
++    }
++
++    /**
++     * Set the streamingRequest variable which controls whether we are
++     * sending the raw (already encoded) POST data from a stream source.
++     *
++     * @param boolean $value The value to set.
++     * @return void
++     */
++    public function setStreamingRequest($value)
++    {
++        $this->_streamingRequest = $value;
++    }
++
++    /**
++     * Check whether the client is set to perform streaming requests.
++     *
++     * @return boolean True if yes, false otherwise.
++     */
++    public function getStreamingRequest()
++    {
++        if ($this->_streamingRequest()) {
++            return true;
++        } else {
++            return false;
++        }
++    }
++
++    /**
++     * Prepare the request body (for POST and PUT requests)
++     *
++     * @return string
++     * @throws Zend_Http_Client_Exception
++     */
++    protected function _prepareBody()
++    {
++        if($this->_streamingRequest) {
++            $this->setHeaders(self::CONTENT_LENGTH,
++                $this->raw_post_data->getTotalSize());
++            return $this->raw_post_data;
++        }
++        else {
++            return parent::_prepareBody();
++        }
++    }
++
++    /**
++     * Clear all custom parameters we set.
++     *
++     * @return Zend_Http_Client
++     */
++    public function resetParameters()
++    {
++        $this->_streamingRequest = false;
++
++        return parent::resetParameters();
++    }
++
++    /**
++     * Set the raw (already encoded) POST data from a stream source.
++     *
++     * This is used to support POSTing from open file handles without
++     * caching the entire body into memory. It is a wrapper around
++     * Zend_Http_Client::setRawData().
++     *
++     * @param string $data The request data
++     * @param string $enctype The encoding type
++     * @return Zend_Http_Client
++     */
++    public function setRawDataStream($data, $enctype = null)
++    {
++        $this->_streamingRequest = true;
++        return $this->setRawData($data, $enctype);
++    }
++
+ }
+Index: ZendFramework-1.7.5/library/Zend/Gdata/MediaMimeStream.php
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ ZendFramework-1.7.5/library/Zend/Gdata/MediaMimeStream.php	2009-03-04 08:44:00.400001565 +0000
+@@ -0,0 +1,513 @@
++<?php
++
++/**
++ * Zend Framework
++ *
++ * LICENSE
++ *
++ * This source file is subject to the new BSD license that is bundled
++ * with this package in the file LICENSE.txt.
++ * It is also available through the world-wide-web at this URL:
++ * http://framework.zend.com/license/new-bsd
++ * If you did not receive a copy of the license and are unable to
++ * obtain it through the world-wide-web, please send an email
++ * to license@zend.com so we can send you a copy immediately.
++ *
++ * @category   Zend
++ * @package    Zend_Gdata
++ * @subpackage Gdata
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license    http://framework.zend.com/license/new-bsd     New BSD License
++ */
++
++/**
++ * A streaming Media MIME class that allows for buffered read operations.
++ *
++ * @category   Zend
++ * @package    Zend_Gdata
++ * @subpackage Gdata
++ * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license    http://framework.zend.com/license/new-bsd     New BSD License
++ */
++class Zend_Gdata_MediaMimeStream
++{
++
++    /**
++     * The Content-Type section that precedes the XML data in the message.
++     *
++     * @var string
++     */
++    // TODO (jhartmann) Add support for charset [ZF-5768]
++    const XML_HEADER = "Content-Type: application/atom+xml\r\n\r\n";
++
++    /**
++     * A constant indicating the xml string part of the message
++     *
++     * @var integer
++     */
++    const PART_XML_STRING = 0;
++
++    /**
++     * A constant indicating the file binary part of the message
++     *
++     * @var integer
++     */
++    const PART_FILE_BINARY = 1;
++
++    /**
++     * A constant indicating the closing boundary string of the message
++     *
++     * @var integer
++     */
++    const PART_CLOSING_XML_STRING = 2;
++
++    /**
++     * The maximum buffer size that can be used.
++     *
++     * @var integer
++     */
++    const MAX_BUFFER_SIZE = 8192;
++
++    /**
++     * A valid MIME boundary including a linefeed.
++     *
++     * @var string
++     */
++    protected $_boundaryLine = null;
++
++    /**
++     * A valid MIME boundary without a linefeed for use in the header.
++     *
++     * @var string
++     */
++    protected $_boundaryString = null;
++
++    /**
++     * A valid MIME closing boundary including a linefeed.
++     *
++     * @var string
++     */
++    protected $_closingBoundaryLine = null;
++
++    /**
++     * A handle to the file that is part of the message.
++     *
++     * @var resource
++     */
++    protected $_fileHandle = null;
++
++    /**
++     * The headers that preceed the file binary including linefeeds.
++     *
++     * @var string
++     */
++    protected $_fileHeaders = null;
++
++    /**
++     * The internet media type of the enclosed file.
++     *
++     * @var string
++     */
++    protected $_fileContentType = null;
++
++    /**
++     * The file size.
++     *
++     * @var integer
++     */
++    protected $_fileSize = null;
++
++    /**
++     * The total size of the message.
++     *
++     * @var integer
++     */
++    protected $_totalSize = null;
++
++    /**
++     * The XML string that typically represents the entry to be sent.
++     *
++     * @var string
++     */
++    protected $_xmlString = null;
++
++    /**
++     * The number of bytes that have been read so far.
++     *
++     * @var integer
++     */
++    protected $_bytesRead = 0;
++
++    /**
++     * Enumeration indicating the part of the message that is currently being
++     * read. Allowed values are: 0, 1 and 2, corresponding to the constants:
++     * PART_XML_STRING, PART_FILE_BINARY, PART_CLOSING_XML_STRING
++     *
++     * @var integer
++     */
++    protected $_currentPart = 0;
++
++    /**
++     * A nested array containing the message to be sent. Each element contains
++     * an array in the format:
++     *
++     * [integer (size of message)][string (message)]
++     *
++     * Note that the part corresponding to the file only contains a size.
++     *
++     * @var array
++     */
++    protected $_parts = null;
++
++    /**
++     * A boolean to be set immediately once we have finished reading.
++     *
++     * @var boolean
++     */
++    protected $_doneReading = false;
++
++    /**
++     * Create a new MimeMediaStream object.
++     *
++     * @param string $xmlString The string corresponding to the XML section
++     *               of the message, typically an atom entry or feed.
++     * @param string $filePath The path to the file that constitutes the binary
++     *               part of the message.
++     * @param string $fileContentType The valid internet media type of the file.
++     * @throws Zend_Gdata_App_IOException If the file cannot be read or does
++     *         not exist. Also if mbstring.func_overload has been set > 1.
++     */
++    public function __construct($xmlString = null, $filePath = null,
++        $fileContentType = null)
++    {
++        $this->_xmlString = $xmlString;
++        $this->_filePath = $filePath;
++        $this->_fileContentType = $fileContentType;
++
++        if (!file_exists($filePath) || !is_readable($filePath)) {
++            require_once 'Zend/Gdata/App/IOException.php';
++            throw new Zend_Gdata_App_IOException('File to be uploaded at ' .
++                $filePath . ' does not exist or is not readable.');
++        }
++
++        $this->_fileHandle = fopen($filePath, 'rb', true);
++        $this->generateBoundaries();
++        $this->calculatePartSizes();
++    }
++
++    /**
++     * Generate the MIME message boundary strings.
++     *
++     * @return void
++     */
++    private function generateBoundaries()
++    {
++        $this->_boundaryString = '=_' . md5(microtime(1) . rand(1,20));
++        $this->_boundaryLine = "\r\n" . '--' . $this->_boundaryString . "\r\n";
++        $this->_closingBoundaryLine = "\r\n" . '--' . $this->_boundaryString .
++            '--';
++    }
++
++    /**
++     * Calculate the sizes of the MIME message sections.
++     *
++     * @return void
++     */
++    private function calculatePartSizes()
++    {
++        $this->_fileHeaders = 'Content-Type: ' . $this->_fileContentType .
++            "\r\n" . 'Content-Transfer-Encoding: binary' . "\r\n\r\n";
++        $this->_fileSize = filesize($this->_filePath);
++
++        $stringSection = $this->_boundaryLine . self::XML_HEADER .
++            $this->_xmlString . "\r\n" . $this->_boundaryLine .
++            $this->_fileHeaders;
++        $stringLen = strlen($stringSection);
++        $closingBoundaryLen = strlen($this->_closingBoundaryLine);
++
++        $this->_parts = array();
++        $this->_parts[] = array($stringLen, $stringSection);
++        $this->_parts[] = array($this->_fileSize);
++        $this->_parts[] = array($closingBoundaryLen,
++            $this->_closingBoundaryLine);
++
++        $this->_totalSize = $stringLen + $this->_fileSize + $closingBoundaryLen;
++    }
++
++    /**
++     * A wrapper around fread() that doesn't error when $length is 0.
++     *
++     * @param integer $length Number of bytes to read.
++     * @return string Results of byte operation.
++     */
++    private function smartfread($length)
++    {
++        if ($length < 1) {
++            return '';
++        } else {
++            return fread($this->_fileHandle, $length);
++        }
++    }
++
++    /**
++     * A non mbstring overloadable strlen-like function.
++     *
++     * @param string $string The string whose length we want to get.
++     * @return integer The length of the string.
++     */
++    private function strlen2($string)
++    {
++        return array_sum(char_count($string));
++    }
++
++    /**
++     * Read a specific chunk of the the MIME multipart message.
++     *
++     * This function works by examining the internal 'parts' array. It
++     * expects that array to consist of basically a string, a file handle
++     * and a closing string.
++     *
++     * An abbreviated version of what this function does is as follows:
++     *
++     * - throw exception if trying to read bigger than the allocated max buffer
++     * - If bufferSize bigger than the entire message: return it and exit.
++     *
++     * - Check how far to read by looking at how much has been read.
++     * - Figure out whether we are crossing sections in this read:
++     *   i.e. -> reading past the xml_string and into the file ?
++     *   - Determine whether we are crossing two sections in this read:
++     *     i.e. xml_string, file and half of the closing string or
++     *     possibly file, closing string and next (non-existant) section
++     *     and handle each case.
++     *   - If we are NOT crossing any sections: read either string and
++     *     increment counter, or read file (no counter needed since fread()
++     *     stores it's own counter.
++     *   - If we are crossing 1 section, figure out how much remains in that
++     *     section that we are currently reading and how far to read into
++     *     the next section. If the section just read is xml_string, then
++     *     immediately unset it from our 'parts' array. If it is the file,
++     *     then close the handle.
++     *
++     * @param integer $bufferSize The size of the chunk that is to be read,
++     *                            must be lower than MAX_BUFFER_SIZE.
++     * @throws Zend_Gdata_App_InvalidArgumentException if buffer size too big.
++     * @return string A corresponding piece of the message. This could be
++     *                binary or regular text.
++     */
++    public function read($bufferSize)
++    {
++        if ($bufferSize > self::MAX_BUFFER_SIZE) {
++            require_once 'Zend/Gdata/App/InvalidArgumentException.php';
++            throw new Zend_Gdata_App_InvalidArgumentException('Buffer size ' .
++                'is larger than the supported max of ' . self::MAX_BUFFER_SIZE);
++        }
++
++        // handle edge cases where bytesRead is negative
++        if ($this->_bytesRead < 0) {
++            $this->_bytesRead = 0;
++        }
++
++        $returnString = null;
++        // If entire message is smaller than the buffer, just return everything
++        if ($bufferSize > $this->_totalSize) {
++            $returnString = $this->_parts[self::PART_XML_STRING][1];
++            $returnString .= fread($this->_fileHandle, $bufferSize);
++            $returnString .= $this->_closingBoundaryLine;
++            $this->closeFileHandle();
++            $this->_doneReading = true;
++            return $returnString;
++        }
++
++        // increment internal counters
++        $readTo = $this->_bytesRead + $bufferSize;
++        $sizeOfCurrentPart = $this->_parts[$this->_currentPart][0];
++        $sizeOfNextPart = 0;
++
++        // if we are in a part past the current part, exit
++        if ($this->_currentPart > self::PART_CLOSING_XML_STRING) {
++            $this->_doneReading = true;
++            return;
++        }
++
++        // if bytes read is bigger than the current part and we are
++        // at the end, return
++        if (($this->_bytesRead > $sizeOfCurrentPart) &&
++            ($this->_currentPart == self::PART_CLOSING_XML_STRING)) {
++                $this->_doneReading = true;
++                return;
++        }
++
++        // check if we have a next part
++        if ($this->_currentPart != self::PART_CLOSING_XML_STRING) {
++            $nextPart = $this->_currentPart + 1;
++            $sizeOfNextPart = $this->_parts[$nextPart][0];
++        }
++
++        $readIntoNextPart = false;
++        $readFromRemainingPart = null;
++        $readFromNextPart = null;
++
++        // are we crossing into multiple sections of the message in
++        // this read?
++        if ($readTo > ($sizeOfCurrentPart + $sizeOfNextPart)) {
++            if ($this->_currentPart == self::PART_XML_STRING) {
++                // If we are in XML string and have crossed over the file
++                // return that and whatever we can from the closing boundary
++                // string.
++                $returnString = $this->_parts[self::PART_XML_STRING][1];
++                unset($this->_parts[self::PART_XML_STRING]);
++                $returnString .= fread($this->_fileHandle,
++                    self::MAX_BUFFER_SIZE);
++                $this->closeFileHandle();
++
++                $readFromClosingString = $readTo -
++                    ($sizeOfCurrentPart + $sizeOfNextPart);
++                $returnString .= substr(
++                    $this->_parts[self::PART_CLOSING_XML_STRING][1], 0,
++                    $readFromClosingString);
++                $this->_bytesRead = $readFromClosingString;
++                $this->_currentPart = self::PART_CLOSING_XML_STRING;
++                return $returnString;
++
++            } elseif ($this->_currentPart == self::PART_FILE_BINARY) {
++                // We have read past the entire message, so return it.
++                $returnString .= fread($this->_fileHandle,
++                    self::MAX_BUFFER_SIZE);
++                $returnString .= $this->_closingBoundaryLine;
++                $this->closeFileHandle();
++                $this->_doneReading = true;
++                return $returnString;
++            }
++        // are we just crossing from one section into another?
++        } elseif ($readTo >= $sizeOfCurrentPart) {
++            $readIntoNextPart = true;
++            $readFromRemainingPart = $sizeOfCurrentPart - $this->_bytesRead;
++            $readFromNextPart = $readTo - $sizeOfCurrentPart;
++        }
++
++        if (!$readIntoNextPart) {
++            // we are not crossing any section so just return something
++            // from the current part
++            switch ($this->_currentPart) {
++                case self::PART_XML_STRING:
++                    $returnString = $this->readFromStringPart(
++                        $this->_currentPart, $this->_bytesRead, $bufferSize);
++                    break;
++                case self::PART_FILE_BINARY:
++                    $returnString = fread($this->_fileHandle, $bufferSize);
++                    break;
++                case self::PART_CLOSING_XML_STRING:
++                    $returnString = $this->readFromStringPart(
++                        $this->_currentPart, $this->_bytesRead, $bufferSize);
++                    break;
++            }
++        } else {
++            // we are crossing from one section to another, so figure out
++            // where we are coming from and going to
++            switch ($this->_currentPart) {
++                case self::PART_XML_STRING:
++                    // crossing from string to file
++                    $returnString = $this->readFromStringPart(
++                        $this->_currentPart, $this->_bytesRead,
++                        $readFromRemainingPart);
++                    // free up string
++                    unset($this->_parts[self::PART_XML_STRING]);
++                    $returnString .= $this->smartfread($this->_fileHandle,
++                            $readFromNextPart);
++                    $this->_bytesRead = $readFromNextPart - 1;
++                    break;
++                case self::PART_FILE_BINARY:
++                    // skipping past file section
++                    $returnString = $this->smartfread($this->_fileHandle,
++                            $readFromRemainingPart);
++                    $this->closeFileHandle();
++                    // read closing boundary string
++                    $returnString = $this->readFromStringPart(
++                        self::PART_CLOSING_XML_STRING, 0, $readFromNextPart);
++                    // have we read past the entire closing boundary string?
++                    if ($readFromNextPart >=
++                        $this->_parts[self::PART_CLOSING_XML_STRING][0]) {
++                        $this->_doneReading = true;
++                        return $returnString;
++                    }
++
++                    // Reset counter appropriately since we are now just
++                    // counting how much of the final string is being read.
++                    $this->_bytesRead = $readFromNextPart - 1;
++                    break;
++                case self::PART_CLOSING_XML_STRING:
++                    // reading past the end of the closing boundary
++                    if ($readFromRemainingPart > 0) {
++                        $returnString = $this->readFromStringPart(
++                            $this->_currentPart, $this->_bytesRead,
++                            $readFromRemainingPart);
++                        $this->_doneReading = true;
++                    }
++                    return $returnString;
++            }
++            $this->_currentPart++;
++        }
++        $this->_bytesRead += $bufferSize;
++        return $returnString;
++    }
++
++    /**
++     * Convenience method to shorthand the reading of non-file parts of the
++     * message.
++     *
++     * @param integer $part The part from which to read (supports only 0 or 2).
++     * @param integer $start The point at which to read from.
++     * @param integer $length How many characters to read.
++     * @return string A string of characters corresponding to the requested
++     *                section.
++     */
++    private function readFromStringPart($part, $start, $length)
++    {
++        return substr($this->_parts[$part][1], $start, $length);
++    }
++
++    /**
++     * Return the total size of the mime message.
++     *
++     * @return integer Total size of the message to be sent.
++     */
++    public function getTotalSize()
++    {
++        return $this->_totalSize;
++    }
++
++    /**
++     * Check whether we have data left to read.
++     *
++     * @return boolean True if there is data remaining in the mime message,
++     *                 false, otherwise.
++     */
++    public function hasData()
++    {
++        return !($this->_doneReading);
++    }
++
++    /**
++     * Close the internal file that we are streaming to the socket.
++     *
++     * @return void
++     */
++    protected function closeFileHandle()
++    {
++        if ($this->_fileHandle !== null) {
++            fclose($this->_fileHandle);
++        }
++    }
++
++    /**
++     * Return a Content-type header that includes the current boundary string.
++     *
++     * @return string A valid HTTP Content-Type header.
++     */
++    public function getContentType()
++    {
++        return 'multipart/related; boundary="' .
++            $this->_boundaryString . '"' . "\r\n";
++    }
++
++}
+Index: ZendFramework-1.7.5/library/Zend/Http/Cookie.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Http/Cookie.php	2009-03-04 08:43:43.070001581 +0000
++++ ZendFramework-1.7.5/library/Zend/Http/Cookie.php	2009-03-04 08:44:00.400001565 +0000
+@@ -16,7 +16,7 @@
+  * @package    Zend_Http
+  * @subpackage Cookie
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com/)
+- * @version    $Id: Cookie.php 9098 2008-03-30 19:29:10Z thomas $
++ * @version    $Id: Cookie.php 14130 2009-02-21 11:24:22Z yoshida@zend.co.jp $
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+  */
+ 
+@@ -90,8 +90,8 @@
+      *
+      * @param string $name
+      * @param string $value
+-     * @param int $expires
+      * @param string $domain
++     * @param int $expires
+      * @param string $path
+      * @param bool $secure
+      */
+@@ -222,7 +222,7 @@
+ 
+         // Make sure we have a valid Zend_Uri_Http object
+         if (! ($uri->valid() && ($uri->getScheme() == 'http' || $uri->getScheme() =='https'))) {
+-            require_once 'Zend/Http/Exception.php';    
++            require_once 'Zend/Http/Exception.php';
+             throw new Zend_Http_Exception('Passed URI is not a valid HTTP or HTTPS URI');
+         }
+ 
+@@ -319,7 +319,7 @@
+         }
+ 
+         if ($name !== '') {
+-            return new Zend_Http_Cookie($name, $value, $domain, $expires, $path, $secure);
++            return new self($name, $value, $domain, $expires, $path, $secure);
+         } else {
+             return false;
+         }
+Index: ZendFramework-1.7.5/library/Zend/Locale/Format.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Locale/Format.php	2009-03-04 08:43:43.110002340 +0000
++++ ZendFramework-1.7.5/library/Zend/Locale/Format.php	2009-03-04 08:44:00.400001565 +0000
+@@ -16,7 +16,7 @@
+  * @package    Zend_Locale
+  * @subpackage Format
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+- * @version    $Id: Format.php 12057 2008-10-21 17:19:43Z thomas $
++ * @version    $Id: Format.php 14171 2009-02-26 12:39:23Z alexander $
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+  */
+ 
+@@ -504,8 +504,18 @@
+         $symbols = Zend_Locale_Data::getList($options['locale'],'symbols');
+ 
+         // Parse input locale aware
+-        $regex = '/^([' . $symbols['minus'] . '-]){0,1}(\d+(\\' . $symbols['group']
+-            . '){0,1})*(\\' . $symbols['decimal'] . '){0,1}\d+$/';
++        $regex =
++              '/^'
++            . '([' . $symbols['minus'] . $symbols['plus'] . '-+])?'  // Optional plus/minus sign
++            . '(\d+(\\' . $symbols['group'] . ')?)*'                 // Optional integer part of number or mantissa
++                                                                     //   optionally grouped by language dependent group symbol
++            . '((\\' . $symbols['decimal'] . ')\d*)?'                // Optional fractional part of number or mantissa
++                                                                     // Optional exponent part for E notation:
++            . '(([' . $symbols['exponent'] . 'E])?'                        // E symbol
++            .    '([' . $symbols['minus'] . $symbols['plus'] . '+-])?'     // Optional plus/minus sign
++            .    '\d+)?'                                                   // Exponent
++            . '$/';
++
+         preg_match($regex, $input, $found);
+ 
+         if (!isset($found[0]))
+Index: ZendFramework-1.7.5/library/Zend/ProgressBar.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/ProgressBar.php	2009-03-04 08:43:43.330001999 +0000
++++ ZendFramework-1.7.5/library/Zend/ProgressBar.php	2009-03-04 08:44:00.420001861 +0000
+@@ -14,7 +14,7 @@
+  * @package    Zend_ProgressBar
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: ProgressBar.php 12296 2008-11-05 11:26:37Z dasprid $
++ * @version    $Id: ProgressBar.php 14176 2009-02-26 22:21:26Z dasprid $
+  */
+ 
+ /**
+@@ -163,7 +163,7 @@
+         }
+ 
+         // Calculate percent
+-        $percent  = (float) ($this->_current - $this->_min) / ($this->_max - $this->_min);
++        $percent = (float) ($this->_current - $this->_min) / ($this->_max - $this->_min);
+ 
+         // Calculate ETA
+         $timeTaken = time() - $this->_startTime;
+Index: ZendFramework-1.7.5/library/Zend/ProgressBar/Adapter.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/ProgressBar/Adapter.php	2009-03-04 08:43:43.280002743 +0000
++++ ZendFramework-1.7.5/library/Zend/ProgressBar/Adapter.php	2009-03-04 08:44:00.410001559 +0000
+@@ -16,7 +16,7 @@
+  * @package   Zend_ProgressBar
+  * @copyright Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license   http://framework.zend.com/license/new-bsd     New BSD License
+- * @version   $Id: Adapter.php 12233 2008-11-01 00:11:01Z dasprid $
++ * @version   $Id: Adapter.php 14112 2009-02-19 06:32:51Z yoshida@zend.co.jp $
+  */
+ 
+ /**
+@@ -31,7 +31,7 @@
+ {
+     /**
+      * Option keys to skip when calling setOptions()
+-     * 
++     *
+      * @var array
+      */
+     protected $_skipOptions = array(
+@@ -41,9 +41,9 @@
+ 
+     /**
+      * Create a new adapter
+-     * 
++     *
+      * $options may be either be an array or a Zend_Config object which
+-     * specifies adapter related options. 
++     * specifies adapter related options.
+      *
+      * @param null|array|Zend_Config $options
+      */
+@@ -55,7 +55,7 @@
+             $this->setConfig($options);
+         }
+     }
+-    
++
+     /**
+      * Set options via a Zend_Config instance
+      *
+@@ -65,10 +65,10 @@
+     public function setConfig(Zend_Config $config)
+     {
+         $this->setOptions($config->toArray());
+-        
++
+         return $this;
+     }
+-    
++
+     /**
+      * Set options via an array
+      *
+@@ -87,23 +87,23 @@
+                 $this->$method($value);
+             }
+         }
+-        
++
+         return $this;
+     }
+-    
++
+     /**
+      * Notify the adapter about an update
+      *
+      * @param  float   $current       Current progress value
+      * @param  float   $max           Max progress value
+-     * @param  flaot   $percent       Current percent value
++     * @param  float   $percent       Current percent value
+      * @param  integer $timeTaken     Taken time in seconds
+      * @param  integer $timeRemaining Remaining time in seconds
+      * @param  string  $text          Status text
+      * @return void
+      */
+     abstract public function notify($current, $max, $percent, $timeTaken, $timeRemaining, $text);
+-    
++
+     /**
+      * Called when the progress is explicitly finished
+      *
+Index: ZendFramework-1.7.5/library/Zend/ProgressBar/Adapter/Console.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/ProgressBar/Adapter/Console.php	2009-03-04 08:43:43.150001680 +0000
++++ ZendFramework-1.7.5/library/Zend/ProgressBar/Adapter/Console.php	2009-03-04 08:44:00.400001565 +0000
+@@ -14,7 +14,7 @@
+  * @package    Zend_ProgressBar
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: Console.php 12233 2008-11-01 00:11:01Z dasprid $
++ * @version    $Id: Console.php 14112 2009-02-19 06:32:51Z yoshida@zend.co.jp $
+  */
+ 
+ /**
+@@ -38,7 +38,7 @@
+      * Percentage value of the progress
+      */
+     const ELEMENT_PERCENT = 'ELEMENT_PERCENT';
+-    
++
+     /**
+      * Visual value of the progress
+      */
+@@ -48,34 +48,34 @@
+      * ETA of the progress
+      */
+     const ELEMENT_ETA = 'ELEMENT_ETA';
+-    
++
+     /**
+      * Text part of the progress
+      */
+     const ELEMENT_TEXT = 'ELEMENT_TEXT';
+-    
++
+     /**
+      * Finish action: End of Line
+      */
+     const FINISH_ACTION_EOL = 'FINISH_ACTION_EOL';
+-    
++
+     /**
+      * Finish action: Clear Line
+      */
+     const FINISH_ACTION_CLEAR_LINE = 'FINISH_ACTION_CLEAR_LINE';
+-    
++
+     /**
+      * Finish action: None
+      */
+     const FINISH_ACTION_NONE = 'FINISH_ACTION_NONE';
+-    
++
+     /**
+      * Width of the progressbar
+      *
+      * @var integer
+      */
+     protected $_width = null;
+-    
++
+     /**
+      * Elements to display
+      *
+@@ -84,21 +84,21 @@
+     protected $_elements = array(self::ELEMENT_PERCENT,
+                                  self::ELEMENT_BAR,
+                                  self::ELEMENT_ETA);
+-    
++
+     /**
+      * Which action to do at finish call
+      *
+      * @var string
+      */
+     protected $_finishAction = self::FINISH_ACTION_EOL;
+-    
++
+     /**
+      * Width of the bar element
+      *
+      * @var integer
+      */
+     protected $_barWidth;
+-    
++
+     /**
+      * Left character(s) within the bar
+      *
+@@ -112,56 +112,56 @@
+      * @var string
+      */
+     protected $_barIndicatorChar = '';
+-    
++
+     /**
+      * Right character(s) within the bar
+      *
+      * @var string
+      */
+     protected $_barRightChar = '-';
+-       
++
+     /**
+      * Stdout stream, when STDOUT is not defined (e.g. in CGI)
+-     * 
++     *
+      * @var resource
+      */
+     protected $_stdout = null;
+-       
++
+     /**
+      * Width of the text element
+      *
+      * @var string
+      */
+     protected $_textWidth = 20;
+-    
++
+     /**
+      * Wether the output started yet or not
+      *
+      * @var boolean
+      */
+     protected $_outputStarted = false;
+-    
++
+     /**
+      * Defined by Zend_ProgressBar_Adapter
+      *
+      * @param null|array|Zend_Config $options
+      */
+     public function __construct($options = null)
+-    {       
++    {
+         // If STDOUT isn't defined, open a local resource
+         if (!defined('STDOUT')) {
+             $this->_stdout = fopen('php://stdout', 'w');
+         }
+-        
++
+         // Call parent constructor with options
+         parent::__construct($options);
+-        
++
+         // Check if a width was set, else use auto width
+         if ($this->_width === null) {
+             $this->setWidth();
+         }
+     }
+-       
++
+     /**
+      * Close local stdout, when open
+      */
+@@ -171,7 +171,7 @@
+             fclose($this->_stdout);
+         }
+     }
+-    
++
+     /**
+      * Set the width of the progressbar
+      *
+@@ -186,27 +186,27 @@
+                 // terminal always has a fixed width of 80 characters and the
+                 // cursor is counted to the line, else windows would line break
+                 // after every update.
+-                $this->_width = 79; 
++                $this->_width = 79;
+             } else {
+                 // Set the default width of 80
+                 $this->_width = 80;
+-                
++
+                 // Try to determine the width through stty
+                 if (preg_match('#\d+ (\d+)#', @shell_exec('stty size'), $match) === 1) {
+                     $this->_width = (int) $match[1];
+-                } else if (preg_match('#columns = (\d+);#', @shell_exec('stty'), $match) === 1) {                       
++                } else if (preg_match('#columns = (\d+);#', @shell_exec('stty'), $match) === 1) {
+                     $this->_width = (int) $match[1];
+                 }
+             }
+         } else {
+             $this->_width = (int) $width;
+         }
+-        
++
+         $this->_calculateBarWidth();
+-        
++
+         return $this;
+     }
+-    
++
+     /**
+      * Set the elements to display with the progressbar
+      *
+@@ -220,19 +220,19 @@
+                                  self::ELEMENT_BAR,
+                                  self::ELEMENT_ETA,
+                                  self::ELEMENT_TEXT);
+-                                 
++
+         if (count(array_diff($elements, $allowedElements)) > 0) {
+             require_once 'Zend/ProgressBar/Adapter/Exception.php';
+-            throw new Zend_ProgressBar_Adapter_Exception('Invalid element found in $elements array');                
++            throw new Zend_ProgressBar_Adapter_Exception('Invalid element found in $elements array');
+         }
+-        
++
+         $this->_elements = $elements;
+-        
++
+         $this->_calculateBarWidth();
+-        
++
+         return $this;
+     }
+-    
++
+     /**
+      * Set the left-hand character for the bar
+      *
+@@ -244,14 +244,14 @@
+     {
+         if (empty($char)) {
+             require_once 'Zend/ProgressBar/Adapter/Exception.php';
+-            throw new Zend_ProgressBar_Adapter_Exception('Character may not be empty');                
++            throw new Zend_ProgressBar_Adapter_Exception('Character may not be empty');
+         }
+-        
++
+         $this->_barLeftChar = (string) $char;
+-        
++
+         return $this;
+     }
+-    
++
+     /**
+      * Set the right-hand character for the bar
+      *
+@@ -263,14 +263,14 @@
+     {
+         if (empty($char)) {
+             require_once 'Zend/ProgressBar/Adapter/Exception.php';
+-            throw new Zend_ProgressBar_Adapter_Exception('Character may not be empty');                
++            throw new Zend_ProgressBar_Adapter_Exception('Character may not be empty');
+         }
+-        
++
+         $this->_barRightChar = (string) $char;
+-        
++
+         return $this;
+     }
+-    
++
+     /**
+      * Set the indicator character for the bar
+      *
+@@ -280,7 +280,7 @@
+     public function setBarIndicatorChar($char)
+     {
+         $this->_barIndicatorChar = (string) $char;
+-        
++
+         return $this;
+     }
+ 
+@@ -293,12 +293,12 @@
+     public function setTextWidth($width)
+     {
+         $this->_textWidth = (int) $width;
+-        
++
+         $this->_calculateBarWidth();
+-        
++
+         return $this;
+     }
+-    
++
+     /**
+      * Set the finish action
+      *
+@@ -311,23 +311,23 @@
+         $allowedActions = array(self::FINISH_ACTION_CLEAR_LINE,
+                                 self::FINISH_ACTION_EOL,
+                                 self::FINISH_ACTION_NONE);
+-                     
++
+         if (!in_array($action, $allowedActions)) {
+             require_once 'Zend/ProgressBar/Adapter/Exception.php';
+-            throw new Zend_ProgressBar_Adapter_Exception('Invalid finish action specified');                
++            throw new Zend_ProgressBar_Adapter_Exception('Invalid finish action specified');
+         }
+-        
++
+         $this->_finishAction = $action;
+-        
++
+         return $this;
+     }
+-    
++
+     /**
+      * Defined by Zend_ProgressBar_Adapter_Interface
+      *
+      * @param  float   $current       Current progress value
+      * @param  float   $max           Max progress value
+-     * @param  flaot   $percent       Current percent value
++     * @param  float   $percent       Current percent value
+      * @param  integer $timeTaken     Taken time in seconds
+      * @param  integer $timeRemaining Remaining time in seconds
+      * @param  string  $text          Status text
+@@ -342,39 +342,39 @@
+             $data = '';
+             $this->_outputStarted = true;
+         }
+-               
++
+         // Build all elements
+         $renderedElements = array();
+-        
++
+         foreach ($this->_elements as $element) {
+             switch ($element) {
+                 case self::ELEMENT_BAR:
+-                    $visualWidth = $this->_barWidth - 2;                    
++                    $visualWidth = $this->_barWidth - 2;
+                     $bar         = '[';
+-                    
++
+                     $indicatorWidth = strlen($this->_barIndicatorChar);
+-                    
++
+                     $doneWidth = min($visualWidth - $indicatorWidth, round($visualWidth * $percent));
+                     if ($doneWidth > 0) {
+                         $bar .= substr(str_repeat($this->_barLeftChar, ceil($doneWidth / strlen($this->_barLeftChar))), 0, $doneWidth);
+                     }
+-                    
++
+                     $bar .= $this->_barIndicatorChar;
+-                    
++
+                     $leftWidth = $visualWidth - $doneWidth - $indicatorWidth;
+                     if ($leftWidth > 0) {
+-                        $bar .= substr(str_repeat($this->_barRightChar, ceil($leftWidth / strlen($this->_barRightChar))), 0, $leftWidth); 
++                        $bar .= substr(str_repeat($this->_barRightChar, ceil($leftWidth / strlen($this->_barRightChar))), 0, $leftWidth);
+                     }
+-                    
++
+                     $bar .= ']';
+-                    
++
+                     $renderedElements[] = $bar;
+                     break;
+-                    
++
+                 case self::ELEMENT_PERCENT:
+                     $renderedElements[] = str_pad(round($percent * 100), 3, ' ', STR_PAD_LEFT) . '%';
+                     break;
+-                    
++
+                 case self::ELEMENT_ETA:
+                     // In the first 5 seconds we don't get accurate results,
+                     // this skipping technique is found in many progressbar
+@@ -383,19 +383,19 @@
+                         $renderedElements[] = str_repeat(' ', 12);
+                         break;
+                     }
+-                                        
++
+                     if ($timeRemaining === null || $timeRemaining > 86400) {
+                         $etaFormatted = '??:??:??';
+                     } else {
+                         $hours   = floor($timeRemaining / 3600);
+                         $minutes = floor(($timeRemaining % 3600) / 60);
+                         $seconds = ($timeRemaining % 3600 % 60);
+-                                           
++
+                         $etaFormatted = sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
+                     }
+-                    
++
+                     $renderedElements[] = 'ETA ' . $etaFormatted;
+-                    break;  
++                    break;
+ 
+                 case self::ELEMENT_TEXT:
+                     $renderedElements[] = str_pad(substr($text, 0, $this->_textWidth), $this->_textWidth, ' ');
+@@ -404,11 +404,11 @@
+         }
+ 
+         $data .= implode(' ', $renderedElements);
+-        
++
+         // Output line data
+         $this->_outputData($data);
+     }
+-    
++
+     /**
+      * Defined by Zend_ProgressBar_Adapter_Interface
+      *
+@@ -420,22 +420,22 @@
+             case self::FINISH_ACTION_EOL:
+                 $this->_outputData(PHP_EOL);
+                 break;
+-                
++
+             case self::FINISH_ACTION_CLEAR_LINE:
+                 if ($this->_outputStarted) {
+                     $data = str_repeat("\x08", $this->_width)
+                           . str_repeat(' ', $this->_width)
+                           . str_repeat("\x08", $this->_width);
+-                          
++
+                     $this->_outputData($data);
+                 }
+                 break;
+-                
++
+             case self::FINISH_ACTION_NONE:
+                 break;
+         }
+     }
+-    
++
+     /**
+      * Calculate the bar width when other elements changed
+      *
+@@ -445,26 +445,26 @@
+     {
+         if (in_array(self::ELEMENT_BAR, $this->_elements)) {
+             $barWidth = $this->_width;
+-            
++
+             if (in_array(self::ELEMENT_PERCENT, $this->_elements)) {
+                 $barWidth -= 4;
+             }
+-            
++
+             if (in_array(self::ELEMENT_ETA, $this->_elements)) {
+                 $barWidth -= 12;
+             }
+-            
++
+             if (in_array(self::ELEMENT_TEXT, $this->_elements)) {
+                 $barWidth -= $this->_textWidth;
+             }
+-            
++
+             $this->_barWidth = $barWidth - (count($this->_elements) - 1);
+         }
+     }
+-    
++
+     /**
+      * Outputs given data to STDOUT.
+-     * 
++     *
+      * This split-off is required for unit-testing.
+      *
+      * @param  string $data
+@@ -476,6 +476,6 @@
+             fwrite($this->_stdout, $data);
+         } else {
+             fwrite(STDOUT, $data);
+-        }            
++        }
+     }
+ }
+\ No newline at end of file
+Index: ZendFramework-1.7.5/library/Zend/ProgressBar/Adapter/JsPull.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/ProgressBar/Adapter/JsPull.php	2009-03-04 08:43:43.200002054 +0000
++++ ZendFramework-1.7.5/library/Zend/ProgressBar/Adapter/JsPull.php	2009-03-04 08:44:00.400001565 +0000
+@@ -45,7 +45,7 @@
+      * @var boolean
+      */
+     protected $_exitAfterSend = true;
+-    
++
+     /**
+      * Set wether to exit after json data send or not
+      *
+@@ -56,13 +56,13 @@
+     {
+         $this->_exitAfterSend = $exitAfterSend;
+     }
+-    
++
+     /**
+      * Defined by Zend_ProgressBar_Adapter_Interface
+      *
+      * @param  float   $current       Current progress value
+      * @param  float   $max           Max progress value
+-     * @param  flaot   $percent       Current percent value
++     * @param  float   $percent       Current percent value
+      * @param  integer $timeTaken     Taken time in seconds
+      * @param  integer $timeRemaining Remaining time in seconds
+      * @param  string  $text          Status text
+@@ -77,15 +77,15 @@
+             'timeTaken'     => $timeTaken,
+             'timeRemaining' => $timeRemaining,
+             'text'          => $text,
+-            'finished'      => false            
++            'finished'      => false
+         );
+-        
++
+         $data = Zend_Json::encode($arguments);
+ 
+         // Output the data
+         $this->_outputData($data);
+     }
+-    
++
+     /**
+      * Defined by Zend_ProgressBar_Adapter_Interface
+      *
+@@ -94,13 +94,13 @@
+     public function finish()
+     {
+         $data = Zend_Json::encode(array('finished' => true));
+-              
++
+         $this->_outputData($data);
+     }
+-    
++
+     /**
+      * Outputs given data the user agent.
+-     * 
++     *
+      * This split-off is required for unit-testing.
+      *
+      * @param  string $data
+@@ -108,7 +108,7 @@
+      */
+     protected function _outputData($data)
+     {
+-        echo $data;   
++        echo $data;
+ 
+         if ($this->_exitAfterSend) {
+             exit;
+Index: ZendFramework-1.7.5/library/Zend/ProgressBar/Adapter/JsPush.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/ProgressBar/Adapter/JsPush.php	2009-03-04 08:43:43.240002129 +0000
++++ ZendFramework-1.7.5/library/Zend/ProgressBar/Adapter/JsPush.php	2009-03-04 08:44:00.410001559 +0000
+@@ -14,7 +14,7 @@
+  * @package    Zend_ProgressBar
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: JsPush.php 12233 2008-11-01 00:11:01Z dasprid $
++ * @version    $Id: JsPush.php 14112 2009-02-19 06:32:51Z yoshida@zend.co.jp $
+  */
+ 
+ /**
+@@ -45,14 +45,14 @@
+      * @var string
+      */
+     protected $_updateMethodName = 'Zend_ProgressBar_Update';
+-    
++
+     /**
+      * Name of the JavaScript method to call on finish
+      *
+      * @var string
+      */
+     protected $_finishMethodName;
+-    
++
+     /**
+      * Set the update method name
+      *
+@@ -75,16 +75,16 @@
+     public function setFinishMethodName($methodName)
+     {
+         $this->_finishMethodName = $methodName;
+-        
++
+         return $this;
+     }
+-    
++
+     /**
+      * Defined by Zend_ProgressBar_Adapter_Interface
+      *
+      * @param  float   $current       Current progress value
+      * @param  float   $max           Max progress value
+-     * @param  flaot   $percent       Current percent value
++     * @param  float   $percent       Current percent value
+      * @param  integer $timeTaken     Taken time in seconds
+      * @param  integer $timeRemaining Remaining time in seconds
+      * @param  string  $text          Status text
+@@ -98,17 +98,17 @@
+             'percent'       => ($percent * 100),
+             'timeTaken'     => $timeTaken,
+             'timeRemaining' => $timeRemaining,
+-            'text'          => $text            
++            'text'          => $text
+         );
+-        
+-        $data = '<script type="text/javascript">' 
++
++        $data = '<script type="text/javascript">'
+               . 'parent.' . $this->_updateMethodName . '(' . Zend_Json::encode($arguments) . ');'
+               . '</script>';
+ 
+         // Output the data
+         $this->_outputData($data);
+     }
+-    
++
+     /**
+      * Defined by Zend_ProgressBar_Adapter_Interface
+      *
+@@ -119,17 +119,17 @@
+         if ($this->_finishMethodName === null) {
+             return;
+         }
+-        
+-        $data = '<script type="text/javascript">' 
++
++        $data = '<script type="text/javascript">'
+               . 'parent.' . $this->_finishMethodName . '();'
+               . '</script>';
+-              
++
+         $this->_outputData($data);
+     }
+-    
++
+     /**
+      * Outputs given data the user agent.
+-     * 
++     *
+      * This split-off is required for unit-testing.
+      *
+      * @param  string $data
+@@ -141,8 +141,8 @@
+         // for Internet Explorer. The <br /> is required so Safari actually
+         // executes the <script />
+         echo str_pad($data . '<br />', 1024, ' ', STR_PAD_RIGHT) . "\n";
+-        
++
+         flush();
+-        ob_flush();            
++        ob_flush();
+     }
+ }
+Index: ZendFramework-1.7.5/library/Zend/Service/Amazon/Accessories.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Service/Amazon/Accessories.php	2009-03-04 08:43:43.370002877 +0000
++++ ZendFramework-1.7.5/library/Zend/Service/Amazon/Accessories.php	2009-03-04 08:44:00.420001861 +0000
+@@ -18,7 +18,7 @@
+  * @subpackage Amazon
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: Accessories.php 8064 2008-02-16 10:58:39Z thomas $
++ * @version    $Id: Accessories.php 14126 2009-02-20 16:15:52Z sidhighwind $
+  */
+ 
+ 
+@@ -32,6 +32,16 @@
+ class Zend_Service_Amazon_Accessories
+ {
+     /**
++     * @var string
++     */
++    public $ASIN;
++
++    /**
++     * @var string
++     */
++    public $Title;
++
++    /**
+      * Assigns values to properties relevant to Accessories
+      *
+      * @param  DOMElement $dom
+Index: ZendFramework-1.7.5/library/Zend/Service/Amazon/CustomerReview.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Service/Amazon/CustomerReview.php	2009-03-04 08:43:43.410002559 +0000
++++ ZendFramework-1.7.5/library/Zend/Service/Amazon/CustomerReview.php	2009-03-04 08:44:00.420001861 +0000
+@@ -18,7 +18,7 @@
+  * @subpackage Amazon
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: CustomerReview.php 8064 2008-02-16 10:58:39Z thomas $
++ * @version    $Id: CustomerReview.php 14126 2009-02-20 16:15:52Z sidhighwind $
+  */
+ 
+ 
+@@ -32,6 +32,41 @@
+ class Zend_Service_Amazon_CustomerReview
+ {
+     /**
++     * @var string
++     */
++    public $Rating;
++
++    /**
++     * @var string
++     */
++    public $HelpfulVotes;
++
++    /**
++     * @var string
++     */
++    public $CustomerId;
++
++    /**
++     * @var string
++     */
++    public $TotalVotes;
++
++    /**
++     * @var string
++     */
++    public $Date;
++
++    /**
++     * @var string
++     */
++    public $Summary;
++
++    /**
++     * @var string
++     */
++    public $Content;
++
++    /**
+      * Assigns values to properties relevant to CustomerReview
+      *
+      * @param  DOMElement $dom
+Index: ZendFramework-1.7.5/library/Zend/Service/Amazon/EditorialReview.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Service/Amazon/EditorialReview.php	2009-03-04 08:43:43.460002423 +0000
++++ ZendFramework-1.7.5/library/Zend/Service/Amazon/EditorialReview.php	2009-03-04 08:44:00.430001651 +0000
+@@ -18,7 +18,7 @@
+  * @subpackage Amazon
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: EditorialReview.php 8064 2008-02-16 10:58:39Z thomas $
++ * @version    $Id: EditorialReview.php 14126 2009-02-20 16:15:52Z sidhighwind $
+  */
+ 
+ 
+@@ -32,6 +32,16 @@
+ class Zend_Service_Amazon_EditorialReview
+ {
+     /**
++     * @var string
++     */
++    public $Source;
++
++    /**
++     * @var string
++     */
++    public $Content;
++
++    /**
+      * Assigns values to properties relevant to EditorialReview
+      *
+      * @param  DOMElement $dom
+Index: ZendFramework-1.7.5/library/Zend/Service/Amazon/Item.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Service/Amazon/Item.php	2009-03-04 08:43:43.500001571 +0000
++++ ZendFramework-1.7.5/library/Zend/Service/Amazon/Item.php	2009-03-04 08:44:00.440001729 +0000
+@@ -18,7 +18,7 @@
+  * @subpackage Amazon
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: Item.php 8064 2008-02-16 10:58:39Z thomas $
++ * @version    $Id: Item.php 14126 2009-02-20 16:15:52Z sidhighwind $
+  */
+ 
+ 
+@@ -31,20 +31,80 @@
+  */
+ class Zend_Service_Amazon_Item
+ {
++    /**
++     * @var string
++     */
+     public $ASIN;
++
++    /**
++     * @var string
++     */
+     public $DetailPageURL;
++
++    /**
++     * @var int
++     */
+     public $SalesRank;
++
++    /**
++     * @var int
++     */
++    public $TotalReviews;
++
++    /**
++     * @var int
++     */
++    public $AverageRating;
++
++    /**
++     * @var string
++     */
+     public $SmallImage;
++
++    /**
++     * @var string
++     */
+     public $MediumImage;
++
++    /**
++     * @var string
++     */
+     public $LargeImage;
++
++    /**
++     * @var string
++     */
+     public $Subjects;
++
++    /**
++     * @var Zend_Service_Amazon_OfferSet
++     */
+     public $Offers;
+-    public $CustomerReviews;
+-    public $SimilarProducts;
+-    public $Accessories;
+-    public $Tracks;
+-    public $ListmaniaLists;
+-    public $PromotionalTag;
++
++    /**
++     * @var Zend_Service_Amazon_CustomerReview[]
++     */
++    public $CustomerReviews = array();
++
++    /**
++     * @var Zend_Service_Amazon_SimilarProducts[]
++     */
++    public $SimilarProducts = array();
++
++    /**
++     * @var Zend_Service_Amazon_Accessories[]
++     */
++    public $Accessories = array();
++
++    /**
++     * @var array
++     */
++    public $Tracks = array();
++
++    /**
++     * @var Zend_Service_Amazon_ListmaniaLists[]
++     */
++    public $ListmaniaLists = array();
+ 
+     protected $_dom;
+ 
+@@ -153,7 +213,9 @@
+         if ($result->length > 1) {
+             foreach ($result as $disk) {
+                 foreach ($xpath->query('./*/text()', $disk) as $t) {
+-                    $this->Tracks[$disk->getAttribute('number')] = (string) $t->data;
++                    // TODO: For consistency in a bugfix all tracks are appended to one single array
++                    // Erroreous line: $this->Tracks[$disk->getAttribute('number')] = (string) $t->data;
++                    $this->Tracks[] = (string) $t->data;
+                 }
+             }
+         } else if ($result->length == 1) {
+Index: ZendFramework-1.7.5/library/Zend/Service/Amazon/ListmaniaList.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Service/Amazon/ListmaniaList.php	2009-03-04 08:43:43.540002269 +0000
++++ ZendFramework-1.7.5/library/Zend/Service/Amazon/ListmaniaList.php	2009-03-04 08:44:00.440001729 +0000
+@@ -18,7 +18,7 @@
+  * @subpackage Amazon
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: ListmaniaList.php 8064 2008-02-16 10:58:39Z thomas $
++ * @version    $Id: ListmaniaList.php 14126 2009-02-20 16:15:52Z sidhighwind $
+  */
+ 
+ 
+@@ -32,6 +32,16 @@
+ class Zend_Service_Amazon_ListmaniaList
+ {
+     /**
++     * @var string
++     */
++    public $ListId;
++
++    /**
++     * @var string
++     */
++    public $ListName;
++
++    /**
+      * Assigns values to properties relevant to ListmaniaList
+      *
+      * @param  DOMElement $dom
+Index: ZendFramework-1.7.5/library/Zend/Service/Amazon/Offer.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Service/Amazon/Offer.php	2009-03-04 08:43:43.580002539 +0000
++++ ZendFramework-1.7.5/library/Zend/Service/Amazon/Offer.php	2009-03-04 08:44:00.450001624 +0000
+@@ -18,7 +18,7 @@
+  * @subpackage Amazon
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: Offer.php 8064 2008-02-16 10:58:39Z thomas $
++ * @version    $Id: Offer.php 14126 2009-02-20 16:15:52Z sidhighwind $
+  */
+ 
+ 
+@@ -32,6 +32,46 @@
+ class Zend_Service_Amazon_Offer
+ {
+     /**
++     * @var string
++     */
++    public $MerchantId;
++
++    /**
++     * @var string
++     */
++    public $GlancePage;
++
++    /**
++     * @var string
++     */
++    public $Condition;
++
++    /**
++     * @var string
++     */
++    public $OfferListingId;
++
++    /**
++     * @var string
++     */
++    public $Price;
++
++    /**
++     * @var string
++     */
++    public $CurrentyCode;
++
++    /**
++     * @var string
++     */
++    public $Availability;
++
++    /**
++     * @var boolean
++     */
++    public $IsEligibleForSuperSaverShipping = false;
++
++    /**
+      * Parse the given Offer element
+      *
+      * @param  DOMElement $dom
+@@ -47,7 +87,10 @@
+         $this->OfferListingId = (string) $xpath->query('./az:OfferListing/az:OfferListingId/text()', $dom)->item(0)->data;
+         $this->Price = (int) $xpath->query('./az:OfferListing/az:Price/az:Amount/text()', $dom)->item(0)->data;
+         $this->CurrencyCode = (string) $xpath->query('./az:OfferListing/az:Price/az:CurrencyCode/text()', $dom)->item(0)->data;
+-        $this->Availability = (string) $xpath->query('./az:OfferListing/az:Availability/text()', $dom)->item(0)->data;
++        $availability = $xpath->query('./az:OfferListing/az:Availability/text()', $dom)->item(0);
++        if($availability instanceof DOMText) {
++            $this->Availability = (string) $availability->data;
++        }
+         $result = $xpath->query('./az:OfferListing/az:IsEligibleForSuperSaverShipping/text()', $dom);
+         if ($result->length >= 1) {
+             $this->IsEligibleForSuperSaverShipping = (bool) $result->item(0)->data;
+Index: ZendFramework-1.7.5/library/Zend/Service/Amazon/OfferSet.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Service/Amazon/OfferSet.php	2009-03-04 08:43:43.630002847 +0000
++++ ZendFramework-1.7.5/library/Zend/Service/Amazon/OfferSet.php	2009-03-04 08:44:00.460001708 +0000
+@@ -18,7 +18,7 @@
+  * @subpackage Amazon
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: OfferSet.php 8064 2008-02-16 10:58:39Z thomas $
++ * @version    $Id: OfferSet.php 14126 2009-02-20 16:15:52Z sidhighwind $
+  */
+ 
+ 
+@@ -32,6 +32,51 @@
+ class Zend_Service_Amazon_OfferSet
+ {
+     /**
++     * @var string
++     */
++    public $LowestNewPrice;
++
++    /**
++     * @var string
++     */
++    public $LowestNewPriceCurrency;
++
++    /**
++     * @var string
++     */
++    public $LowestUsedPrice;
++
++    /**
++     * @var string
++     */
++    public $LowestUsedPriceCurrency;
++
++    /**
++     * @var int
++     */
++    public $TotalNew;
++
++    /**
++     * @var int
++     */
++    public $TotalUsed;
++
++    /**
++     * @var int
++     */
++    public $TotalCollectible;
++
++    /**
++     * @var int
++     */
++    public $TotalRefurbished;
++
++    /**
++     * @var Zend_Service_Amazon_Offer[]
++     */
++    public $Offers;
++
++    /**
+      * Parse the given Offer Set Element
+      *
+      * @param  DOMElement $dom
+Index: ZendFramework-1.7.5/library/Zend/Service/Amazon/SimilarProduct.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Service/Amazon/SimilarProduct.php	2009-03-04 08:43:43.670003210 +0000
++++ ZendFramework-1.7.5/library/Zend/Service/Amazon/SimilarProduct.php	2009-03-04 08:44:00.460001708 +0000
+@@ -18,7 +18,7 @@
+  * @subpackage Amazon
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: SimilarProduct.php 8064 2008-02-16 10:58:39Z thomas $
++ * @version    $Id: SimilarProduct.php 14126 2009-02-20 16:15:52Z sidhighwind $
+  */
+ 
+ 
+@@ -32,6 +32,16 @@
+ class Zend_Service_Amazon_SimilarProduct
+ {
+     /**
++     * @var string
++     */
++    public $ASIN;
++
++    /**
++     * @var string
++     */
++    public $Title;
++
++    /**
+      * Assigns values to properties relevant to SimilarProduct
+      *
+      * @param  DOMElement $dom
+Index: ZendFramework-1.7.5/library/Zend/Service/Twitter.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Service/Twitter.php	2009-03-04 08:43:43.710002163 +0000
++++ ZendFramework-1.7.5/library/Zend/Service/Twitter.php	2009-03-04 08:44:00.470001534 +0000
+@@ -55,7 +55,7 @@
+      * Date format for 'since' strings
+      * @var string
+      */
+-    protected $_dateFormat = 'D, d M Y H:i:s e';
++    protected $_dateFormat = 'D, d M Y H:i:s T';
+ 
+     /**
+      * Username
+@@ -251,7 +251,9 @@
+      *
+      * $params may include one or more of the following keys
+      * - id: ID of a friend whose timeline you wish to receive
++     * - count: how many statuses to return
+      * - since: return results only after the date specified
++     * - since_id: return results only after the specific tweet
+      * - page: return page X of results
+      *
+      * @param  array $params
+@@ -264,6 +266,18 @@
+         $_params = array();
+         foreach ($params as $key => $value) {
+             switch (strtolower($key)) {
++                case 'count':
++                    $count = (int) $value;
++                    if (0 >= $count) {
++                        $count = 1;
++                    } elseif (200 < $count) {
++                        $count = 200;
++                    }
++                    $_params['count'] = (int) $count;
++                    break;
++                case 'since_id':
++                    $_params['since_id'] = (int) $value;
++                    break;
+                 case 'since':
+                     $this->_setDate($value);
+                     break;
+Index: ZendFramework-1.7.5/library/Zend/Soap/Wsdl/Strategy/Abstract.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Soap/Wsdl/Strategy/Abstract.php	2009-03-04 08:43:43.760002549 +0000
++++ ZendFramework-1.7.5/library/Zend/Soap/Wsdl/Strategy/Abstract.php	2009-03-04 08:44:00.470001534 +0000
+@@ -1,7 +1,41 @@
+ <?php
++/**
++ * Zend Framework
++ *
++ * LICENSE
++ *
++ * This source file is subject to the new BSD license that is bundled
++ * with this package in the file LICENSE.txt.
++ * It is also available through the world-wide-web at this URL:
++ * http://framework.zend.com/license/new-bsd
++ * If you did not receive a copy of the license and are unable to
++ * obtain it through the world-wide-web, please send an email
++ * to license@zend.com so we can send you a copy immediately.
++ *
++ * @category   Zend
++ * @package    Zend_Soap
++ * @subpackage Wsdl
++ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license    http://framework.zend.com/license/new-bsd     New BSD License
++ * @version    $Id$
++ */
+ 
++/**
++ * Abstract class for Zend_Soap_Wsdl_Strategy.
++ *
++ * @category   Zend
++ * @package    Zend_Soap
++ * @subpackage Wsdl
++ * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license    http://framework.zend.com/license/new-bsd     New BSD License
++ */
+ abstract class Zend_Soap_Wsdl_Strategy_Abstract implements Zend_Soap_Wsdl_Strategy_Interface
+ {
++    /**
++     * Context object
++     *
++     * @var Zend_Soap_Wsdl
++     */
+     protected $_context;
+ 
+     /**
+Index: ZendFramework-1.7.5/library/Zend/Version.php
+===================================================================
+--- ZendFramework-1.7.5.orig/library/Zend/Version.php	2009-03-04 08:43:43.800001598 +0000
++++ ZendFramework-1.7.5/library/Zend/Version.php	2009-03-04 08:44:00.480001639 +0000
+@@ -16,7 +16,7 @@
+  * @package    Zend_Version
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: Version.php 14080 2009-02-13 13:18:53Z alexander $
++ * @version    $Id: Version.php 14180 2009-02-27 07:46:44Z alexander $
+  */
+ 
+ /**
+@@ -32,7 +32,7 @@
+     /**
+      * Zend Framework version identification - see compareVersion()
+      */
+-    const VERSION = '1.7.5';
++    const VERSION = '1.7.6';
+ 
+     /**
+      * Compare the specified Zend Framework version string $version
+@@ -49,3 +49,4 @@
+         return version_compare($version, self::VERSION);
+     }
+ }
++
+Index: ZendFramework-1.7.5/tests/AllTests.php
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/AllTests.php	2009-03-04 08:43:50.380001765 +0000
++++ ZendFramework-1.7.5/tests/AllTests.php	2009-03-04 08:44:05.430001502 +0000
+@@ -16,7 +16,7 @@
+  * @package    UnitTests
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: AllTests.php 11973 2008-10-15 16:00:56Z matthew $
++ * @version    $Id: AllTests.php 14182 2009-02-27 08:00:13Z alexander $
+  */
+ 
+ if (!defined('PHPUnit_MAIN_METHOD')) {
+Index: ZendFramework-1.7.5/tests/TestConfiguration.php.dist
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/TestConfiguration.php.dist	2009-03-04 08:43:50.420002373 +0000
++++ ZendFramework-1.7.5/tests/TestConfiguration.php.dist	2009-03-04 08:44:05.430001502 +0000
+@@ -17,7 +17,7 @@
+  * @package    UnitTests
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: TestConfiguration.php.dist 14077 2009-02-13 01:33:06Z jhartmann $
++ * @version    $Id: TestConfiguration.php.dist 14182 2009-02-27 08:00:13Z alexander $
+  */
+ 
+ /**
+Index: ZendFramework-1.7.5/tests/TestHelper.php
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/TestHelper.php	2009-03-04 08:43:50.460002487 +0000
++++ ZendFramework-1.7.5/tests/TestHelper.php	2009-03-04 08:44:05.430001502 +0000
+@@ -16,7 +16,7 @@
+  * @package    UnitTests
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: TestHelper.php 11973 2008-10-15 16:00:56Z matthew $
++ * @version    $Id: TestHelper.php 14182 2009-02-27 08:00:13Z alexander $
+  */
+ 
+ /*
+Index: ZendFramework-1.7.5/tests/Zend/Config/Writer/IniTest.php
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/Zend/Config/Writer/IniTest.php	2009-03-04 08:43:50.510001721 +0000
++++ ZendFramework-1.7.5/tests/Zend/Config/Writer/IniTest.php	2009-03-04 08:44:05.440001919 +0000
+@@ -17,7 +17,7 @@
+  * @subpackage UnitTests
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: IniTest.php 12221 2008-10-31 20:32:43Z dasprid $
++ * @version    $Id: IniTest.php 14176 2009-02-26 22:21:26Z dasprid $
+  */
+ 
+ /**
+@@ -109,6 +109,19 @@
+         $this->assertEquals('foo', $config->default->test);
+     }
+     
++    public function testNoSection()
++    {
++        $config = new Zend_Config(array('test' => 'foo', 'test2' => array('test3' => 'bar')));
++
++        $writer = new Zend_Config_Writer_Ini(array('config' => $config, 'filename' => $this->_tempName));
++        $writer->write();
++                
++        $config = new Zend_Config_Ini($this->_tempName, null);
++        
++        $this->assertEquals('foo', $config->test);
++        $this->assertEquals('bar', $config->test2->test3);
++    }
++    
+     public function testWriteAndReadSingleSection()
+     {
+         $config = new Zend_Config_Ini(dirname(__FILE__) . '/files/allsections.ini', 'staging', array('skipExtends' => true));
+Index: ZendFramework-1.7.5/tests/Zend/Config/Writer/XmlTest.php
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/Zend/Config/Writer/XmlTest.php	2009-03-04 08:43:50.550003107 +0000
++++ ZendFramework-1.7.5/tests/Zend/Config/Writer/XmlTest.php	2009-03-04 08:44:05.440001919 +0000
+@@ -17,7 +17,7 @@
+  * @subpackage UnitTests
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: XmlTest.php 12221 2008-10-31 20:32:43Z dasprid $
++ * @version    $Id: XmlTest.php 14176 2009-02-26 22:21:26Z dasprid $
+  */
+ 
+ /**
+@@ -109,6 +109,19 @@
+         $this->assertEquals('foo', $config->default->test);
+     }
+     
++    public function testNoSection()
++    {
++        $config = new Zend_Config(array('test' => 'foo', 'test2' => array('test3' => 'bar')));
++
++        $writer = new Zend_Config_Writer_Xml(array('config' => $config, 'filename' => $this->_tempName));
++        $writer->write();
++                
++        $config = new Zend_Config_Xml($this->_tempName, null);
++        
++        $this->assertEquals('foo', $config->test);
++        $this->assertEquals('bar', $config->test2->test3);
++    }
++    
+     public function testWriteAndReadSingleSection()
+     {
+         $config = new Zend_Config_Xml(dirname(__FILE__) . '/files/allsections.xml', 'staging', array('skipExtends' => true));
+Index: ZendFramework-1.7.5/tests/Zend/Dojo/View/Helper/DojoTest.php
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/Zend/Dojo/View/Helper/DojoTest.php	2009-03-04 08:43:50.590001558 +0000
++++ ZendFramework-1.7.5/tests/Zend/Dojo/View/Helper/DojoTest.php	2009-03-04 08:44:05.440001919 +0000
+@@ -17,7 +17,7 @@
+  * @subpackage UnitTests
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: DojoTest.php 11991 2008-10-16 15:12:15Z matthew $
++ * @version    $Id: DojoTest.php 14166 2009-02-25 17:58:58Z matthew $
+  */
+ 
+ // Call Zend_Dojo_View_Helper_DojoTest::main() if this source file is executed directly.
+@@ -835,6 +835,18 @@
+         $this->assertNull($test);
+     }
+ 
++    /**
++     * @group ZF-4587
++     * @group ZF-5808
++     */
++    public function testZendDijitOnLoadMarkupShouldPrecedeAllOtherOnLoadEvents()
++    {
++        $this->helper->addOnLoad('zend.custom');
++        $this->view->textBox('foo', 'bar');
++        $test = $this->helper->__toString();
++        $this->assertRegexp('/zendDijits.*?(zend\.custom)/s', $test, 'Generated markup: ' . $test);
++    }
++
+     public function setupDojo()
+     {
+         $this->helper->requireModule('dijit.layout.ContentPane')
+Index: ZendFramework-1.7.5/tests/Zend/Gdata/GdataOnlineTest.php
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/Zend/Gdata/GdataOnlineTest.php	2009-03-04 08:43:50.670001965 +0000
++++ ZendFramework-1.7.5/tests/Zend/Gdata/GdataOnlineTest.php	2009-03-04 08:44:05.450001547 +0000
+@@ -132,6 +132,8 @@
+         $blogsUrl = 'http://www.blogger.com/feeds/default/blogs';
+         $blogsQuery = $this->gdata->newQuery($blogsUrl);
+         $retrievedFeed = $this->gdata->getFeed($blogsQuery);
++        // rewind the retrieved feed first
++        $retrievedFeed->rewind();
+ 
+         // Make sure the iterator and array impls match
+         $entry1 = $retrievedFeed->current();
+@@ -229,6 +231,15 @@
+         $this->assertEquals('My New Test Photo',
+                 $createdPhotoMultipart->title->text);
+ 
++        // cleanup and remove the album 
++        // first we wait 5 seconds
++        sleep(5);
++        try {
++            $albumEntry->delete();
++        } catch (Zend_Gdata_App_Exception $e) {
++            $this->fail('Tried to delete the test album, got exception: ' .
++                $e->getMessage());
++        }
+     }
+ 
+     function testIsAuthenticated()
+Index: ZendFramework-1.7.5/tests/Zend/Gdata/MediaMimeStreamTest.php
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ ZendFramework-1.7.5/tests/Zend/Gdata/MediaMimeStreamTest.php	2009-03-04 08:44:05.450001547 +0000
+@@ -0,0 +1,181 @@
++<?php
++/**
++ * Zend Framework
++ *
++ * LICENSE
++ *
++ * This source file is subject to the new BSD license that is bundled
++ * with this package in the file LICENSE.txt.
++ * It is also available through the world-wide-web at this URL:
++ * http://framework.zend.com/license/new-bsd
++ * If you did not receive a copy of the license and are unable to
++ * obtain it through the world-wide-web, please send an email
++ * to license@zend.com so we can send you a copy immediately.
++ *
++ * @category   Zend
++ * @package    Zend_Gdata
++ * @subpackage UnitTests
++ * @copyright  Copyright (c) 2006-2009 Zend Technologies USA Inc. (http://www.zend.com)
++ * @license    http://framework.zend.com/license/new-bsd     New BSD License
++ */
++
++require_once 'Zend/Gdata/MediaMimeStream.php';
++
++/**
++ * @package Zend_Gdata
++ * @subpackage UnitTests
++ */
++class Zend_Gdata_MediaMimeStreamTest extends PHPUnit_Framework_TestCase
++{
++
++    public function setUp()
++    {
++        $this->locationOfFakeBinary =
++            'Zend/Gdata/_files/MediaMimeStreamSample1.txt';
++        $this->smallXMLString = '<xml><entry><title>foo</title></entry>';
++        $this->testMediaType = 'video/mpeg';
++        $this->mediaMimeStream = new Zend_Gdata_MediaMimeStream(
++            $this->smallXMLString, $this->locationOfFakeBinary,
++            $this->testMediaType);
++        $this->exceptedLenOfMimeMessage = 283;
++    }
++
++    public function testExceptionOnUnreadableFile()
++    {
++        $exceptionThrown = false;
++        try {
++            $mediaMimeStream = new Zend_Gdata_MediaMimeStream(
++                $this->smallXMLString, '/non/existant/path/to/nowhere');
++        } catch (Zend_Gdata_App_IOException $e) {
++            $exceptionThrown = true;
++        }
++        $this->assertTrue($exceptionThrown, 'Was expecting an exception on ' .
++            'attempting to read an unreadable or non-existant file');
++    }
++
++    public function testGetTotalSize()
++    {
++        $this->assertEquals($this->exceptedLenOfMimeMessage,
++            $this->mediaMimeStream->getTotalSize());
++    }
++
++    public function testHasData()
++    {
++        $this->assertTrue($this->mediaMimeStream->hasData());
++    }
++
++    public function testGetContentType()
++    {
++        $pattern =
++        '/multipart\/related;\sboundary=\"=_[a-z0-9]{32,}.*\"/';
++        $this->assertEquals(1, preg_match($pattern,
++            $this->mediaMimeStream->getContentType()));
++    }
++
++    /**
++     * Ensure that nothing breaks if we read past the end of the messsage in a
++     * single read.
++     *
++     * Note: The test message has the following part sizes in length:
++     * 211, 22, 39 for a total size of 272. This test performs a single read
++     * for 400 bytes.
++     */
++    public function testReadAll()
++    {
++        $this->assertEquals($this->exceptedLenOfMimeMessage,
++            $this->mediaMimeStream->getTotalSize());
++        $outputArray = array();
++        while ($this->mediaMimeStream->hasData()) {
++            $outputArray = explode("\r\n", $this->mediaMimeStream->read(400));
++        }
++        $mimeBoundaryPattern = '/--=_[a-z0-9]{32,}/';
++        $mimeClosingBoundaryPattern = '/--=_[a-z0-9]{32,}--/';
++        $this->assertEquals('', $outputArray[0]);
++        $this->assertEquals(1,
++            preg_match($mimeBoundaryPattern, $outputArray[1]));
++        $this->assertEquals('Content-Type: application/atom+xml',
++            $outputArray[2]);
++        $this->assertEquals('', $outputArray[3]);
++        $this->assertEquals($this->smallXMLString, $outputArray[4]);
++        $this->assertEquals('', $outputArray[5]);
++        $this->assertEquals(1,
++            preg_match($mimeBoundaryPattern, $outputArray[6]));
++        $this->assertEquals('Content-Type: video/mpeg', $outputArray[7]);
++        $this->assertEquals('Content-Transfer-Encoding: binary',
++            $outputArray[8]);
++        $this->assertEquals('', $outputArray[9]);
++        $this->assertEquals(file_get_contents($this->locationOfFakeBinary),
++            $outputArray[10]);
++        $this->assertEquals(1,
++            preg_match($mimeClosingBoundaryPattern, $outputArray[11]));
++    }
++
++    /**
++     * Ensure that a variety of different stream sizes work.
++     *
++     * Note: The test message has the following part sizes in length:
++     * 211, 22, 39 for a total size of 287.
++     */
++    public function testReadVariousBufferSizes()
++    {
++        $bufferSizesToTest = array(2, 20, 33, 44, 88, 100, 201);
++        foreach($bufferSizesToTest as $sizeToTest) {
++            $mediaMimeStream = new Zend_Gdata_MediaMimeStream(
++                $this->smallXMLString, $this->locationOfFakeBinary,
++                $this->testMediaType);
++            $this->assertEquals($sizeToTest,
++                strlen($mediaMimeStream->read($sizeToTest)));
++        }
++    }
++
++    /**
++     * Ensure that nothing breaks if we read a message 1 byte at time.
++     */
++    public function testReadWithoutCrossingSections()
++    {
++        $outputString = '';
++        while ($this->mediaMimeStream->hasData()) {
++            $outputString .= $this->mediaMimeStream->read(1);
++        }
++        $this->assertEquals($this->exceptedLenOfMimeMessage,
++            strlen($outputString));
++    }
++
++    /**
++     * Ensure that nothing breaks if we read past at least two sections of
++     * the message.
++     *
++     * Note: The test message has the following part sizes in length:
++     * 211, 22, 39 for a total size of 272. This test reads 250 bytes at a time
++     * to make sure that we cross sections 1 and 2 and then read part of
++     * section 3.
++     */
++    public function testReadCrossing2Sections()
++    {
++        $outputString = '';
++        while ($this->mediaMimeStream->hasData()) {
++            $outputString .= $this->mediaMimeStream->read(250);
++        }
++        $this->assertEquals($this->exceptedLenOfMimeMessage,
++            strlen($outputString));
++    }
++
++    /**
++     * Ensure that nothing breaks if we read past at least one section of
++     * the message.
++     *
++     * Note: The test message has the following part sizes in length:
++     * 211, 22, 39 for a total size of 272. This test reads 230 bytes at a time
++     * to make sure that we cross section 1 and then read sections 2 and 3.
++     */
++    public function testReadCrossing1Section()
++    {
++        $outputString = '';
++        while ($this->mediaMimeStream->hasData()) {
++            $outputString .= $this->mediaMimeStream->read(230);
++        }
++        $this->assertEquals($this->exceptedLenOfMimeMessage,
++            strlen($outputString));
++    }
++
++}
+Index: ZendFramework-1.7.5/tests/Zend/Gdata/WhenTest.php
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/Zend/Gdata/WhenTest.php	2009-03-04 08:43:50.750001623 +0000
++++ ZendFramework-1.7.5/tests/Zend/Gdata/WhenTest.php	2009-03-04 08:44:05.450001547 +0000
+@@ -133,4 +133,9 @@
+         $this->assertEquals("2005-06-06T17:00:00-08:00", $this->when->startTime);
+     }
+ 
++    public function testToStringCanReturnValueString() {
++        $this->when->transferFromXML($this->whenText);
++        $this->assertEquals('Tomorrow @ 5 PM', $this->when->__toString());
++    }
++
+ }
+Index: ZendFramework-1.7.5/tests/Zend/Gdata/YouTubeOnlineTest.php
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/Zend/Gdata/YouTubeOnlineTest.php	2009-03-04 08:43:50.790002591 +0000
++++ ZendFramework-1.7.5/tests/Zend/Gdata/YouTubeOnlineTest.php	2009-03-04 08:44:05.450001547 +0000
+@@ -311,26 +311,26 @@
+                                           $loginCaptcha = null,
+                                           $authenticationURL);
+ 
+-        $this->gdata = new Zend_Gdata_YouTube(
++        $yt = new Zend_Gdata_YouTube(
+             $httpClient, 'Google-UnitTests-1.0',
+             'ytapi-gdataops-12345-u78960r7-0',
+             'AI39si6c-ZMGFZ5fkDAEJoCNHP9LOM2LSO1XuycZF7E' . 
+             'yu1IuvkioESqzRcf3voDLymIUGIrxdMx2aTufdbf5D7E51NyLYyfeaw');
+ 
+-        $this->gdata->setMajorProtocolVersion(2);
+-        $feed = $this->gdata->getPlaylistListFeed($this->ytAccount);
++        $yt->setMajorProtocolVersion(2);
++        $feed = $yt->getPlaylistListFeed($this->ytAccount);
+ 
+         // Add new
+-        $newPlaylist = $this->gdata->newPlaylistListEntry();
++        $newPlaylist = $yt->newPlaylistListEntry();
+         $newPlaylist->setMajorProtocolVersion(2);
+         $titleString = $this->generateRandomString(10);
+-        $newPlaylist->title = $this->gdata->newTitle()->setText($titleString);
+-        $newPlaylist->summary = $this->gdata->newSummary()->setText('testing');
++        $newPlaylist->title = $yt->newTitle()->setText($titleString);
++        $newPlaylist->summary = $yt->newSummary()->setText('testing');
+         $postUrl = 'http://gdata.youtube.com/feeds/api/users/default/playlists';
+         $successfulInsertion = true;
+ 
+         try {
+-            $this->gdata->insertEntry($newPlaylist, $postUrl);
++            $yt->insertEntry($newPlaylist, $postUrl);
+         } catch (Zend_Gdata_App_Exception $e) {
+             $successfulInsertion = false;
+         }
+@@ -338,7 +338,7 @@
+         $this->assertTrue($successfulInsertion, 'Failed to insert a new ' .
+             'playlist.');
+ 
+-        $playlistListFeed = $this->gdata->getPlaylistListFeed('default');
++        $playlistListFeed = $yt->getPlaylistListFeed('default');
+ 
+         $playlistFound = false;
+         $newPlaylistEntry = null;
+@@ -396,21 +396,55 @@
+                                           $loginCaptcha = null,
+                                           $authenticationURL);
+ 
+-        $this->gdata = new Zend_Gdata_YouTube(
++        $yt = new Zend_Gdata_YouTube(
+             $httpClient, 'Google-UnitTests-1.0',
+             'ytapi-gdataops-12345-u78960r7-0',
+             'AI39si6c-ZMGFZ5fkDAEJoCNHP9LOM2LSO1XuycZF7E' . 
+             'yu1IuvkioESqzRcf3voDLymIUGIrxdMx2aTufdbf5D7E51NyLYyfeaw');
+ 
+-        $this->gdata->setMajorProtocolVersion(2);
++        $yt->setMajorProtocolVersion(2);
++
++        $channelToSubscribeTo = 'AssociatedPress';
++
++        // Test for deletion first in case something went wrong
++        // last time the test was run (network, etc...)
++        $subscriptionFeed = $yt->getSubscriptionFeed($this->ytAccount);
++        $successDeletionUpFront = true;
++        $message = null;
++        foreach($subscriptionFeed as $subscriptionEntry) {
++            $subscriptionType = null;
++            $categories = $subscriptionEntry->getCategory();
++            // examine the correct category element since there are multiple
++            foreach($categories as $category) {
++                if ($category->getScheme() ==
++                    'http://gdata.youtube.com/schemas/2007/' . 
++                    'subscriptiontypes.cat') {
++                        $subscriptionType = $category->getTerm();
++                    }
++            }
++            if ($subscriptionType == 'channel') {
++                if ($subscriptionEntry->getUsername()->text ==
++                    $channelToSubscribeTo) {
++                    try {
++                        $subscriptionEntry->delete();
++                    } catch (Zend_App_Exception $e) {
++                        $message = $e->getMessage();
++                        $successDeletionUpFront = false;
++                    }
++                }
++            }
++        }
++        $this->assertTrue($successDeletionUpFront, 'Found existing ' .
++            'subscription in unit test, could not delete prior to running ' . 
++            'test -- ' . $message);
+ 
+         // Channel
+-        $newSubscription = $this->gdata->newSubscriptionEntry();
++        $newSubscription = $yt->newSubscriptionEntry();
+         $newSubscription->category = array(
+-            $this->gdata->newCategory('channel',
++            $yt->newCategory('channel',
+             $this->subscriptionTypeSchema));
+-        $newSubscription->setUsername($this->gdata->newUsername(
+-            'AssociatedPress'));
++        $newSubscription->setUsername($yt->newUsername(
++            $channelToSubscribeTo));
+         
+         $postUrl =
+             'http://gdata.youtube.com/feeds/api/users/default/subscriptions';
+@@ -419,18 +453,19 @@
+         $message = null;
+         $insertedSubscription = null;
+         try {
+-            $insertedSubscription = $this->gdata->insertEntry(
++            $insertedSubscription = $yt->insertEntry(
+                 $newSubscription, $postUrl,
+                 'Zend_Gdata_YouTube_SubscriptionEntry');
+         } catch (Zend_App_Exception $e) {
+             $message = $e->getMessage();
+             $successPosting = false;
+         }
+-        
++
+         $this->assertTrue($successPosting, $message);
+ 
+         // Delete it
+         $successDeletion = true;
++        $message = null;
+         try {
+             $insertedSubscription->delete();
+         } catch (Zend_App_Exception $e) {
+@@ -458,21 +493,55 @@
+                                           $loginCaptcha = null,
+                                           $authenticationURL);
+ 
+-        $this->gdata = new Zend_Gdata_YouTube(
++        $yt = new Zend_Gdata_YouTube(
+             $httpClient, 'Google-UnitTests-1.0',
+             'ytapi-gdataops-12345-u78960r7-0',
+             'AI39si6c-ZMGFZ5fkDAEJoCNHP9LOM2LSO1XuycZF7E' . 
+             'yu1IuvkioESqzRcf3voDLymIUGIrxdMx2aTufdbf5D7E51NyLYyfeaw');
+ 
+-        $this->gdata->setMajorProtocolVersion(2);
++        $yt->setMajorProtocolVersion(2);
++        
++        $usernameOfFavoritesToSubscribeTo = 'CBS';
++        
++        // Test for deletion first in case something went wrong
++        // last time the test was run (network, etc...)
++        $subscriptionFeed = $yt->getSubscriptionFeed($this->ytAccount);
++        $successDeletionUpFront = true;
++        $message = null;
++        foreach($subscriptionFeed as $subscriptionEntry) {
++            $subscriptionType = null;
++            $categories = $subscriptionEntry->getCategory();
++            // examine the correct category element since there are multiple
++            foreach($categories as $category) {
++                if ($category->getScheme() ==
++                    'http://gdata.youtube.com/schemas/2007/' . 
++                    'subscriptiontypes.cat') {
++                        $subscriptionType = $category->getTerm();
++                    }
++            }
++            if ($subscriptionType == 'favorites') {
++                if ($subscriptionEntry->getUsername()->text ==
++                    $usernameOfFavoritesToSubscribeTo) {
++                    try {
++                        $subscriptionEntry->delete();
++                    } catch (Zend_App_Exception $e) {
++                        $message = $e->getMessage();
++                        $successDeletionUpFront = false;
++                    }
++                }
++            }
++        }
++        $this->assertTrue($successDeletionUpFront, 'Found existing ' .
++            'subscription in unit test, could not delete prior to running ' . 
++            'test -- ' . $message);
+ 
+         // CBS's favorites
+-        $newSubscription = $this->gdata->newSubscriptionEntry();
++        $newSubscription = $yt->newSubscriptionEntry();
+         $newSubscription->category = array(
+-            $this->gdata->newCategory('favorites',
++            $yt->newCategory('favorites',
+             $this->subscriptionTypeSchema));
+-        $newSubscription->setUsername($this->gdata->newUsername(
+-            'CBS'));
++        $newSubscription->setUsername($yt->newUsername(
++            $usernameOfFavoritesToSubscribeTo));
+         
+         $postUrl =
+             'http://gdata.youtube.com/feeds/api/users/default/subscriptions';
+@@ -481,7 +550,7 @@
+         $message = null;
+         $insertedSubscription = null;
+         try {
+-            $insertedSubscription = $this->gdata->insertEntry(
++            $insertedSubscription = $yt->insertEntry(
+                 $newSubscription, $postUrl,
+                 'Zend_Gdata_YouTube_SubscriptionEntry');
+         } catch (Zend_App_Exception $e) {
+@@ -493,6 +562,7 @@
+ 
+         // Delete it
+         $successDeletion = true;
++        $message = null;
+         try {
+             $insertedSubscription->delete();
+         } catch (Zend_App_Exception $e) {
+@@ -520,22 +590,55 @@
+                                           $loginCaptcha = null,
+                                           $authenticationURL);
+ 
+-        $this->gdata = new Zend_Gdata_YouTube(
++        $yt = new Zend_Gdata_YouTube(
+             $httpClient, 'Google-UnitTests-1.0',
+             'ytapi-gdataops-12345-u78960r7-0',
+             'AI39si6c-ZMGFZ5fkDAEJoCNHP9LOM2LSO1XuycZF7E' . 
+             'yu1IuvkioESqzRcf3voDLymIUGIrxdMx2aTufdbf5D7E51NyLYyfeaw');
+ 
+-        $this->gdata->setMajorProtocolVersion(2);
++        $yt->setMajorProtocolVersion(2);
++        $playlistIdToSubscribeTo = '7A2BB4AFFEBED2A4';
++        
++        // Test for deletion first in case something went wrong
++        // last time the test was run (network, etc...)
++        $subscriptionFeed = $yt->getSubscriptionFeed($this->ytAccount);
++        $successDeletionUpFront = true;
++        $message = null;
++        foreach($subscriptionFeed as $subscriptionEntry) {
++            $subscriptionType = null;
++            $categories = $subscriptionEntry->getCategory();
++            // examine the correct category element since there are multiple
++            foreach($categories as $category) {
++                if ($category->getScheme() ==
++                    'http://gdata.youtube.com/schemas/2007/' . 
++                    'subscriptiontypes.cat') {
++                        $subscriptionType = $category->getTerm();
++                    }
++            }
++            if ($subscriptionType == 'playlist') {
++                if ($subscriptionEntry->getPlaylistId()->text ==
++                    $playlistIdToSubscribeTo) {
++                    try {
++                        $subscriptionEntry->delete();
++                    } catch (Zend_App_Exception $e) {
++                        $message = $e->getMessage();
++                        $successDeletionUpFront = false;
++                    }
++                }
++            }
++        }
++        $this->assertTrue($successDeletionUpFront, 'Found existing ' .
++            'subscription in unit test, could not delete prior to running ' . 
++            'test -- ' . $message);
+ 
+         // Playlist of McGyver videos
+-        $newSubscription = $this->gdata->newSubscriptionEntry();
++        $newSubscription = $yt->newSubscriptionEntry();
+         $newSubscription->setMajorProtocolVersion(2);
+         $newSubscription->category = array(
+-            $this->gdata->newCategory('playlist',
++            $yt->newCategory('playlist',
+             $this->subscriptionTypeSchema));
+-        $newSubscription->setPlaylistId($this->gdata->newPlaylistId(
+-            '7A2BB4AFFEBED2A4'));
++        $newSubscription->setPlaylistId($yt->newPlaylistId(
++            $playlistIdToSubscribeTo));
+         
+         $postUrl =
+             'http://gdata.youtube.com/feeds/api/users/default/subscriptions';
+@@ -544,7 +647,7 @@
+         $message = null;
+         $insertedSubscription = null;
+         try {
+-            $insertedSubscription = $this->gdata->insertEntry(
++            $insertedSubscription = $yt->insertEntry(
+                 $newSubscription, $postUrl,
+                 'Zend_Gdata_YouTube_SubscriptionEntry');
+         } catch (Zend_App_Exception $e) {
+@@ -556,6 +659,7 @@
+ 
+         // Delete it
+         $successDeletion = true;
++        $message = null;
+         try {
+             $insertedSubscription->delete();
+         } catch (Zend_App_Exception $e) {
+@@ -583,21 +687,54 @@
+                                           $loginCaptcha = null,
+                                           $authenticationURL);
+ 
+-        $this->gdata = new Zend_Gdata_YouTube(
++        $yt = new Zend_Gdata_YouTube(
+             $httpClient, 'Google-UnitTests-1.0',
+             'ytapi-gdataops-12345-u78960r7-0',
+             'AI39si6c-ZMGFZ5fkDAEJoCNHP9LOM2LSO1XuycZF7E' . 
+             'yu1IuvkioESqzRcf3voDLymIUGIrxdMx2aTufdbf5D7E51NyLYyfeaw');
+ 
+-        $this->gdata->setMajorProtocolVersion(2);
++        $yt->setMajorProtocolVersion(2);
++        $queryStringToSubscribeTo = 'zend';
++        
++        // Test for deletion first in case something went wrong
++        // last time the test was run (network, etc...)
++        $subscriptionFeed = $yt->getSubscriptionFeed($this->ytAccount);
++        $successDeletionUpFront = true;
++        $message = null;
++        foreach($subscriptionFeed as $subscriptionEntry) {
++            $subscriptionType = null;
++            $categories = $subscriptionEntry->getCategory();
++            // examine the correct category element since there are multiple
++            foreach($categories as $category) {
++                if ($category->getScheme() ==
++                    'http://gdata.youtube.com/schemas/2007/' . 
++                    'subscriptiontypes.cat') {
++                        $subscriptionType = $category->getTerm();
++                    }
++            }
++            if ($subscriptionType == 'query') {
++                if ($subscriptionEntry->getQueryString() ==
++                    $queryStringToSubscribeTo) {
++                    try {
++                        $subscriptionEntry->delete();
++                    } catch (Zend_App_Exception $e) {
++                        $message = $e->getMessage();
++                        $successDeletionUpFront = false;
++                    }
++                }
++            }
++        }
++        $this->assertTrue($successDeletionUpFront, 'Found existing ' .
++            'subscription in unit test, could not delete prior to running ' . 
++            'test -- ' . $message);
+ 
+         // Query
+-        $newSubscription = $this->gdata->newSubscriptionEntry();
++        $newSubscription = $yt->newSubscriptionEntry();
+         $newSubscription->category = array(
+-            $this->gdata->newCategory('query',
++            $yt->newCategory('query',
+             $this->subscriptionTypeSchema));
+-        $newSubscription->setQueryString($this->gdata->newQueryString(
+-            'zend'));
++        $newSubscription->setQueryString($yt->newQueryString(
++            $queryStringToSubscribeTo));
+         
+         $postUrl =
+             'http://gdata.youtube.com/feeds/api/users/default/subscriptions';
+@@ -606,7 +743,7 @@
+         $message = null;
+         $insertedSubscription = null;
+         try {
+-            $insertedSubscription = $this->gdata->insertEntry(
++            $insertedSubscription = $yt->insertEntry(
+                 $newSubscription, $postUrl,
+                 'Zend_Gdata_YouTube_SubscriptionEntry');
+         } catch (Zend_App_Exception $e) {
+@@ -618,6 +755,7 @@
+ 
+         // Delete it
+         $successDeletion = true;
++        $message = null;
+         try {
+             $insertedSubscription->delete();
+         } catch (Zend_App_Exception $e) {
+@@ -691,11 +829,12 @@
+             $clientId, $developerKey);
+         $youtube->setMajorProtocolVersion(2);
+ 
+-        $feed = $youtube->getActivityForUser($this->ytAccount . ',zfgdata');
++        $feed = $youtube->getActivityForUser($this->ytAccount .
++            ',associatedpress');
+         $this->assertTrue($feed instanceof Zend_Gdata_YouTube_ActivityFeed);
+         $this->assertTrue((count($feed->entries) > 0));
+-        $this->assertEquals('Activity of ' . $this->ytAccount . ',zfgdata',
+-            $feed->title->text);
++        $this->assertEquals('Activity of ' . $this->ytAccount .
++            ',associatedpress', $feed->title->text);
+     }
+     
+     public function testRetrieveFriendFeed()
+@@ -717,7 +856,7 @@
+         $feed = $youtube->getFriendActivityForCurrentUser();
+         $this->assertTrue($feed instanceof Zend_Gdata_YouTube_ActivityFeed);
+         $this->assertTrue((count($feed->entries) > 0));
+-        $this->assertEquals('Activity of ' . $this->ytAccount . "'s friends",
++        $this->assertEquals('Activity of the friends of ' . $this->ytAccount,
+             $feed->title->text);
+     }
+ 
+@@ -745,8 +884,4 @@
+             'specified in YouTube.php');
+     }
+ 
+-
+-
+-
+-
+ }
+Index: ZendFramework-1.7.5/tests/Zend/Gdata/_files/MediaMimeStreamSample1.txt
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ ZendFramework-1.7.5/tests/Zend/Gdata/_files/MediaMimeStreamSample1.txt	2009-03-04 08:44:05.440001919 +0000
+@@ -0,0 +1 @@
++aaa---fakeBinary---bbb
+\ No newline at end of file
+Index: ZendFramework-1.7.5/tests/Zend/Locale/FormatTest.php
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/Zend/Locale/FormatTest.php	2009-03-04 08:43:50.840002366 +0000
++++ ZendFramework-1.7.5/tests/Zend/Locale/FormatTest.php	2009-03-04 08:44:05.450001547 +0000
+@@ -18,7 +18,7 @@
+  * @subpackage UnitTests
+  * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: FormatTest.php 10113 2008-07-15 20:07:16Z thomas $
++ * @version    $Id: FormatTest.php 14171 2009-02-26 12:39:23Z alexander $
+  */
+ 
+ 
+@@ -123,6 +123,19 @@
+         $this->assertFalse(Zend_Locale_Format::isNumber('textwithoutnumber', array('locale' => 'de_AT')));
+     }
+ 
++    /**
++     * test isNumber
++     * expected boolean
++     *
++     * @group ZF-5879
++     */
++    public function testIsNumberENotation()
++    {
++        $this->assertTrue( Zend_Locale_Format::isNumber('5,0004E+5',  array('locale' => 'de_AT')));
++        $this->assertTrue( Zend_Locale_Format::isNumber('2.34E-7',    array('locale' => 'de_AT')));
++        $this->assertFalse(Zend_Locale_Format::isNumber('2.34E-7E-7', array('locale' => 'de_AT')));
++    }
++
+ 
+     /**
+      * test getFloat
+Index: ZendFramework-1.7.5/tests/Zend/Service/Amazon/OfflineTest.php
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/Zend/Service/Amazon/OfflineTest.php	2009-03-04 08:43:50.910002353 +0000
++++ ZendFramework-1.7.5/tests/Zend/Service/Amazon/OfflineTest.php	2009-03-04 08:44:05.450001547 +0000
+@@ -18,7 +18,7 @@
+  * @subpackage UnitTests
+  * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
+  * @license    http://framework.zend.com/license/new-bsd     New BSD License
+- * @version    $Id: OfflineTest.php 11973 2008-10-15 16:00:56Z matthew $
++ * @version    $Id: OfflineTest.php 14126 2009-02-20 16:15:52Z sidhighwind $
+  */
+ 
+ 
+@@ -31,6 +31,10 @@
+  * @see Zend_Service_Amazon
+  */
+ require_once 'Zend/Service/Amazon.php';
++/**
++ * @see Zend_Service_Amazon_ResultSet
++ */
++require_once 'Zend/Service/Amazon/ResultSet.php';
+ 
+ /**
+  * @see Zend_Http_Client_Adapter_Socket
+@@ -92,4 +96,34 @@
+             $this->assertContains('Unknown country code', $e->getMessage());
+         }
+     }
++
++    /**
++     * @group ZF-2056
++     */
++    public function testMozardSearchFromFile()
++    {
++        $xml = file_get_contents(dirname(__FILE__)."/_files/mozart_result.xml");
++        $dom = new DOMDocument();
++        $dom->loadXML($xml);
++
++        $mozartTracks = array(
++            'B00005A8JZ' => '29',
++            'B0000058HV' => '25',
++            'B000BLI3K2' => '500',
++            'B00004X0QF' => '9',
++            'B000004194' => '19',
++            'B00000I9M0' => '9',
++            'B000004166' => '20',
++            'B00002DEH1' => '58',
++            'B0000041EV' => '12',
++            'B00004SA87' => '42',
++        );
++
++        $result = new Zend_Service_Amazon_ResultSet($dom);
++
++        foreach($result AS $item) {
++            $trackCount = $mozartTracks[$item->ASIN];
++            $this->assertEquals($trackCount, count($item->Tracks));
++        }
++    }
+ }
+Index: ZendFramework-1.7.5/tests/Zend/Service/Amazon/_files/mozart_result.xml
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ ZendFramework-1.7.5/tests/Zend/Service/Amazon/_files/mozart_result.xml	2009-03-04 08:44:05.450001547 +0000
+@@ -0,0 +1,1504 @@
++<?xml version="1.0"?>
++<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05">
++  <OperationRequest>
++    <HTTPHeaders>
++      <Header Name="UserAgent" Value="Zend_Http_Client"/>
++    </HTTPHeaders>
++    <RequestId></RequestId>
++    <Arguments>
++      <Argument Name="Operation" Value="ItemSearch"/>
++      <Argument Name="Service" Value="AWSECommerceService"/>
++      <Argument Name="ResponseGroup" Value="Small,Tracks,Offers,Request"/>
++      <Argument Name="SubscriptionId" Value=""/>
++      <Argument Name="SearchIndex" Value="Music"/>
++      <Argument Name="Keywords" Value="Mozart"/>
++    </Arguments>
++    <RequestProcessingTime>0.1464630000000000</RequestProcessingTime>
++  </OperationRequest>
++  <Items>
++    <Request>
++      <IsValid>True</IsValid>
++      <ItemSearchRequest>
++        <Condition>New</Condition>
++        <DeliveryMethod>Ship</DeliveryMethod>
++        <Keywords>Mozart</Keywords>
++        <MerchantId>Amazon</MerchantId>
++        <ResponseGroup>Small</ResponseGroup>
++        <ResponseGroup>Tracks</ResponseGroup>
++        <ResponseGroup>Offers</ResponseGroup>
++        <ResponseGroup>Request</ResponseGroup>
++        <SearchIndex>Music</SearchIndex>
++      </ItemSearchRequest>
++    </Request>
++    <TotalResults>20917</TotalResults>
++    <TotalPages>2092</TotalPages>
++    <Item>
++      <ASIN>B00005A8JZ</ASIN>
++      <DetailPageURL>http://www.amazon.com/Essential-Mozart-His-Greatest-Masterpieces/dp/B00005A8JZ%3FSubscriptionId%3D0CM6AXEW4QM6RZCH28R2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00005A8JZ</DetailPageURL>
++      <ItemAttributes>
++        <Creator Role="Performer">Fritz Dolezal</Creator>
++        <Creator Role="Performer">Franklin Cohen</Creator>
++        <Creator Role="Performer">Peter Schmidl</Creator>
++        <Creator Role="Composer">Wolfgang Amadeus Mozart</Creator>
++        <Creator Role="Conductor">Christoph von Dohn&#xE1;nyi</Creator>
++        <Creator Role="Conductor">Christopher Hogwood</Creator>
++        <Creator Role="Conductor">David Hill</Creator>
++        <Creator Role="Conductor">Georg Solti</Creator>
++        <Creator Role="Conductor">George Guest</Creator>
++        <Creator Role="Conductor">Gyorgy Fischer</Creator>
++        <Creator Role="Conductor">Herbert von Karajan</Creator>
++        <Creator Role="Conductor">Jack Brymer</Creator>
++        <Creator Role="Conductor">Myung-Whun Chung</Creator>
++        <Creator Role="Conductor">Neville Marriner</Creator>
++        <Creator Role="Conductor">Peter Maag</Creator>
++        <Creator Role="Conductor">Stephen Cleobury</Creator>
++        <Creator Role="Conductor">Uri Segal</Creator>
++        <Creator Role="Conductor">Willi Boskovsky</Creator>
++        <Creator Role="Performer">Academy of Ancient Music</Creator>
++        <Creator Role="Performer">Academy of St. Martin-in-the-Fields</Creator>
++        <Manufacturer>Decca</Manufacturer>
++        <ProductGroup>Music</ProductGroup>
++        <Title>Essential Mozart: 32 Of His Greatest Masterpieces</Title>
++      </ItemAttributes>
++      <OfferSummary>
++        <LowestNewPrice>
++          <Amount>742</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$7.42</FormattedPrice>
++        </LowestNewPrice>
++        <LowestUsedPrice>
++          <Amount>796</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$7.96</FormattedPrice>
++        </LowestUsedPrice>
++        <TotalNew>30</TotalNew>
++        <TotalUsed>8</TotalUsed>
++        <TotalCollectible>0</TotalCollectible>
++        <TotalRefurbished>0</TotalRefurbished>
++      </OfferSummary>
++      <Offers>
++        <TotalOffers>1</TotalOffers>
++        <TotalOfferPages>1</TotalOfferPages>
++        <Offer>
++          <Merchant>
++            <MerchantId>ATVPDKIKX0DER</MerchantId>
++            <GlancePage>http://www.amazon.com/gp/help/seller/home.html?seller=ATVPDKIKX0DER</GlancePage>
++          </Merchant>
++          <OfferAttributes>
++            <Condition>New</Condition>
++            <SubCondition>new</SubCondition>
++          </OfferAttributes>
++          <OfferListing>
++            <OfferListingId>miWNU7zpV2gjBgUxK0ySvB7%2FKRv7Rjl9dQAV%2FnwzkVW%2BLYVYm9V2NcorkZEz5pey6eT9O1JS6ijZ4%2BkTLrHZ5w%3D%3D</OfferListingId>
++            <Price>
++              <Amount>1099</Amount>
++              <CurrencyCode>USD</CurrencyCode>
++              <FormattedPrice>$10.99</FormattedPrice>
++            </Price>
++            <Availability>Usually ships in 24 hours</Availability>
++            <IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
++          </OfferListing>
++        </Offer>
++      </Offers>
++      <Tracks>
++        <Disc Number="1">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Voi che sapete</Track>
++          <Track Number="4">Largetto</Track>
++          <Track Number="5">Laudate Dominum</Track>
++          <Track Number="6">Andantino</Track>
++          <Track Number="7">Overture</Track>
++          <Track Number="8">Trio: Soava sia il vento</Track>
++          <Track Number="9">Andante con moto</Track>
++          <Track Number="10">Rondo</Track>
++          <Track Number="11">Serenade: Deh, vieni alla finestra</Track>
++          <Track Number="12">No. 1 Non pi&#xF9; andrai</Track>
++          <Track Number="13">No. 3 Sleigh Ride</Track>
++          <Track Number="14">Adagio</Track>
++          <Track Number="15">Presto</Track>
++        </Disc>
++        <Disc Number="2">
++          <Track Number="1">Molto allegro</Track>
++          <Track Number="2">Queen of the Night aria, Der H&#xF6;lle Rache</Track>
++          <Track Number="3">Adagio</Track>
++          <Track Number="4">L&#xE0; ci darem la mano</Track>
++          <Track Number="5">Adagio</Track>
++          <Track Number="6">Der Vogelf&#xE4;nger bin ich ja</Track>
++          <Track Number="7">Dove sono</Track>
++          <Track Number="8">Adagio</Track>
++          <Track Number="9">Lacrimosa</Track>
++          <Track Number="10">Rondo alla turca</Track>
++          <Track Number="11">Champagne aria: Fin ch'han dal vino</Track>
++          <Track Number="12">Minuet &amp; Trio</Track>
++          <Track Number="13">Alleluja</Track>
++          <Track Number="14">Finale: Molto allegro</Track>
++        </Disc>
++      </Tracks>
++    </Item>
++    <Item>
++      <ASIN>B0000058HV</ASIN>
++      <DetailPageURL>http://www.amazon.com/25-Mozart-Favorites/dp/B0000058HV%3FSubscriptionId%3D0CM6AXEW4QM6RZCH28R2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB0000058HV</DetailPageURL>
++      <ItemAttributes>
++        <Creator Role="Performer">John Sant'Ambrogio</Creator>
++        <Creator Role="Performer">George Silfies</Creator>
++        <Creator Role="Performer">Jost Michaels</Creator>
++        <Creator Role="Composer">Wolfgang Amadeus Mozart</Creator>
++        <Creator Role="Conductor">Alfred Scholz</Creator>
++        <Creator Role="Conductor">Ferdinand Grossmann</Creator>
++        <Creator Role="Conductor">Franz Bauer-Theussl</Creator>
++        <Creator Role="Conductor">Gunter Kehr</Creator>
++        <Creator Role="Conductor">H. Reichert</Creator>
++        <Creator Role="Conductor">Helmuth Rilling</Creator>
++        <Creator Role="Conductor">Henry Adolph</Creator>
++        <Creator Role="Conductor">J&#xF6;rg Faerber</Creator>
++        <Creator Role="Conductor">Leopold Hager</Creator>
++        <Creator Role="Conductor">Peter Maag</Creator>
++        <Creator Role="Conductor">Philip Gibson</Creator>
++        <Creator Role="Conductor">Roland Bader</Creator>
++        <Creator Role="Conductor">Stanislaw Skrowaczewski</Creator>
++        <Creator Role="Performer">New York Philomusica Winds</Creator>
++        <Creator Role="Performer">Philharmonia Hungarica</Creator>
++        <Creator Role="Performer">Stuttgart Bach Collegium</Creator>
++        <Manufacturer>Vox (Classical)</Manufacturer>
++        <ProductGroup>Music</ProductGroup>
++        <Title>25 Mozart Favorites</Title>
++      </ItemAttributes>
++      <OfferSummary>
++        <LowestNewPrice>
++          <Amount>172</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$1.72</FormattedPrice>
++        </LowestNewPrice>
++        <LowestUsedPrice>
++          <Amount>96</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$0.96</FormattedPrice>
++        </LowestUsedPrice>
++        <TotalNew>29</TotalNew>
++        <TotalUsed>13</TotalUsed>
++        <TotalCollectible>0</TotalCollectible>
++        <TotalRefurbished>0</TotalRefurbished>
++      </OfferSummary>
++      <Offers>
++        <TotalOffers>1</TotalOffers>
++        <TotalOfferPages>1</TotalOfferPages>
++        <Offer>
++          <Merchant>
++            <MerchantId>ATVPDKIKX0DER</MerchantId>
++            <GlancePage>http://www.amazon.com/gp/help/seller/home.html?seller=ATVPDKIKX0DER</GlancePage>
++          </Merchant>
++          <OfferAttributes>
++            <Condition>New</Condition>
++            <SubCondition>new</SubCondition>
++          </OfferAttributes>
++          <OfferListing>
++            <OfferListingId>C6bDMocDw5QcPLgm7AooGHkjBCa6joJIj9z10snNdzQuJa%2FvOa1lJeOjDfprvj9T7Rtqke5KjzDC6HNuDFUf1A%3D%3D</OfferListingId>
++            <Price>
++              <Amount>299</Amount>
++              <CurrencyCode>USD</CurrencyCode>
++              <FormattedPrice>$2.99</FormattedPrice>
++            </Price>
++            <Availability>Usually ships in 24 hours</Availability>
++            <IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
++          </OfferListing>
++        </Offer>
++      </Offers>
++      <Tracks>
++        <Disc Number="1">
++          <Track Number="1">Overture</Track>
++          <Track Number="2">II. Andante</Track>
++          <Track Number="3">I. Allegro Con Brio</Track>
++          <Track Number="4">II. Andantino</Track>
++          <Track Number="5">I. Allegro</Track>
++          <Track Number="6">Overture</Track>
++          <Track Number="7">I. Molto Allegro</Track>
++          <Track Number="8">III. Finale: Presto</Track>
++          <Track Number="9">III. Andante</Track>
++          <Track Number="10">I. Allegro</Track>
++          <Track Number="11">II. Andante ma non troppo</Track>
++          <Track Number="12">II. Larghetto</Track>
++          <Track Number="13">II. Adagio</Track>
++          <Track Number="14">I. Allegro maestoso</Track>
++          <Track Number="15">II. Adagio</Track>
++          <Track Number="16">IV. Finale: Allegro</Track>
++          <Track Number="17">III. Allegro</Track>
++          <Track Number="18">II. Andante</Track>
++          <Track Number="19">I. Allegro maestoso</Track>
++          <Track Number="20">I. Allegro vivace assai</Track>
++          <Track Number="21">II. Andante cantabile</Track>
++          <Track Number="22">II. Adagio</Track>
++          <Track Number="23">IV. Presto</Track>
++          <Track Number="24">Confutatis Maledictis</Track>
++          <Track Number="25">Alleluia</Track>
++        </Disc>
++      </Tracks>
++    </Item>
++    <Item>
++      <ASIN>B000BLI3K2</ASIN>
++      <DetailPageURL>http://www.amazon.com/Mozart-Complete-Works-170-Box/dp/B000BLI3K2%3FSubscriptionId%3D0CM6AXEW4QM6RZCH28R2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB000BLI3K2</DetailPageURL>
++      <ItemAttributes>
++        <Creator Role="Composer">Wolfgang Amadeus Mozart</Creator>
++        <Creator Role="Performer">Bruce Abel</Creator>
++        <Creator Role="Performer">Christian Tchelebiev</Creator>
++        <Creator Role="Performer">Christof Fischesser</Creator>
++        <Creator Role="Performer">Ezio Maria Tisi</Creator>
++        <Creator Role="Performer">Gottfried Hornik</Creator>
++        <Creator Role="Performer">Hermann-Christian Polster</Creator>
++        <Creator Role="Performer">Klaus Mertens</Creator>
++        <Creator Role="Performer">Manfred Bittner</Creator>
++        <Creator Role="Performer">Peter Schneyder</Creator>
++        <Manufacturer>Brilliant Classics</Manufacturer>
++        <ProductGroup>Music</ProductGroup>
++        <Title>Mozart Edition: Complete Works (170 CD Box Set)</Title>
++      </ItemAttributes>
++      <OfferSummary>
++        <LowestNewPrice>
++          <Amount>10824</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$108.24</FormattedPrice>
++        </LowestNewPrice>
++        <LowestUsedPrice>
++          <Amount>10497</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$104.97</FormattedPrice>
++        </LowestUsedPrice>
++        <TotalNew>20</TotalNew>
++        <TotalUsed>9</TotalUsed>
++        <TotalCollectible>0</TotalCollectible>
++        <TotalRefurbished>0</TotalRefurbished>
++      </OfferSummary>
++      <Offers>
++        <TotalOffers>1</TotalOffers>
++        <TotalOfferPages>1</TotalOfferPages>
++        <Offer>
++          <Merchant>
++            <MerchantId>ATVPDKIKX0DER</MerchantId>
++            <GlancePage>http://www.amazon.com/gp/help/seller/home.html?seller=ATVPDKIKX0DER</GlancePage>
++          </Merchant>
++          <OfferAttributes>
++            <Condition>New</Condition>
++            <SubCondition>new</SubCondition>
++          </OfferAttributes>
++          <OfferListing>
++            <OfferListingId>pBHmKisDdqGh1zcoHasxardfvdwt4mCm4NgPdqjmyDJ0vUUJnm0Nbe%2B90H8%2F6JSkw2fRouM%2FDKLqRto7JTWaICGw65404CJm</OfferListingId>
++            <Price>
++              <Amount>14399</Amount>
++              <CurrencyCode>USD</CurrencyCode>
++              <FormattedPrice>$143.99</FormattedPrice>
++            </Price>
++            <Availability>Usually ships in 24 hours</Availability>
++            <IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
++          </OfferListing>
++        </Offer>
++      </Offers>
++      <Tracks>
++        <Disc Number="1">
++          <Track Number="1">Molto allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Presto</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Andante</Track>
++          <Track Number="6">Presto</Track>
++          <Track Number="7">Allegro assai</Track>
++          <Track Number="8">Andante</Track>
++          <Track Number="9">Presto</Track>
++          <Track Number="10">Allegro</Track>
++          <Track Number="11">Andante</Track>
++          <Track Number="12">Molto allegro</Track>
++          <Track Number="13">Allegro</Track>
++          <Track Number="14">Andante</Track>
++          <Track Number="15">Menuetto &amp; trio</Track>
++          <Track Number="16">Allegro</Track>
++          <Track Number="17">Molto allegro</Track>
++          <Track Number="18">Andante</Track>
++          <Track Number="19">Menuetto &amp; trio</Track>
++          <Track Number="20">Molto allegro</Track>
++        </Disc>
++        <Disc Number="2">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Menuetto &amp; trio</Track>
++          <Track Number="4">Molto allegro</Track>
++          <Track Number="5">Allegro</Track>
++          <Track Number="6">Andante</Track>
++          <Track Number="7">Menuetto &amp; trio</Track>
++          <Track Number="8">Molto allegro</Track>
++          <Track Number="9">Allegro-andante</Track>
++          <Track Number="10">Allegro</Track>
++          <Track Number="11">Allegro</Track>
++          <Track Number="12">Andante</Track>
++          <Track Number="13">Menuetto &amp; trio</Track>
++          <Track Number="14">Allegro</Track>
++          <Track Number="15">Allegro</Track>
++          <Track Number="16">Andante</Track>
++          <Track Number="17">Menuetto &amp; trio</Track>
++          <Track Number="18">Molto allegro</Track>
++        </Disc>
++        <Disc Number="3">
++          <Track Number="1">Allegro moderato</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Menuetto &amp; trio</Track>
++          <Track Number="4">Molto allegro</Track>
++          <Track Number="5">Allegro</Track>
++          <Track Number="6">Andante</Track>
++          <Track Number="7">Menuetto &amp; trio</Track>
++          <Track Number="8">Presto</Track>
++          <Track Number="9">Allegro maestoso</Track>
++          <Track Number="10">Andante grazioso</Track>
++          <Track Number="11">Allegro</Track>
++          <Track Number="12">Allegro</Track>
++          <Track Number="13">Andante</Track>
++          <Track Number="14">Allegro</Track>
++        </Disc>
++        <Disc Number="4">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Menuetto &amp; trio</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Allegro</Track>
++          <Track Number="6">Andante</Track>
++          <Track Number="7">Menuetto &amp; trio</Track>
++          <Track Number="8">Allegro</Track>
++          <Track Number="9">Allegro assai</Track>
++          <Track Number="10">Andantino grazioso</Track>
++          <Track Number="11">Presto assai</Track>
++          <Track Number="12">Allegro spiritoso</Track>
++          <Track Number="13">Andantino grazioso</Track>
++          <Track Number="14">Presto assai</Track>
++        </Disc>
++        <Disc Number="5">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andantino grazioso</Track>
++          <Track Number="3">Presto</Track>
++          <Track Number="4">Allegro spiritoso</Track>
++          <Track Number="5">Andante</Track>
++          <Track Number="6">Menuetto &amp; trio</Track>
++          <Track Number="7">Presto</Track>
++          <Track Number="8">Molto allegro</Track>
++          <Track Number="9">Andantino con moto</Track>
++          <Track Number="10">Menuetto &amp; trio</Track>
++          <Track Number="11">Presto</Track>
++        </Disc>
++        <Disc Number="6">
++          <Track Number="1">Allegro assai</Track>
++          <Track Number="2">Andante grazioso</Track>
++          <Track Number="3">Presto</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Andantino grazioso</Track>
++          <Track Number="6">Menuetto</Track>
++          <Track Number="7">Molto allegro</Track>
++          <Track Number="8">Allegro</Track>
++          <Track Number="9">Andante</Track>
++          <Track Number="10">Menuetto</Track>
++          <Track Number="11">Allegro</Track>
++          <Track Number="12">Allegro con brio</Track>
++          <Track Number="13">Andante</Track>
++          <Track Number="14">Menuetto</Track>
++          <Track Number="15">Allegro</Track>
++        </Disc>
++        <Disc Number="7">
++          <Track Number="1">Allegro spiritoso</Track>
++          <Track Number="2">Andantino grazioso</Track>
++          <Track Number="3">Allegro</Track>
++          <Track Number="4">Molto presto</Track>
++          <Track Number="5">Andante</Track>
++          <Track Number="6">Allegro</Track>
++          <Track Number="7">Symphony in D major: Allegro molto</Track>
++          <Track Number="8">Symphony in D major: Andantino grazioso</Track>
++          <Track Number="9">Symphony in D major: Allegro</Track>
++          <Track Number="10">Allegro moderato</Track>
++          <Track Number="11">Andante</Track>
++          <Track Number="12">Menuetto</Track>
++          <Track Number="13">Allegro con spirito</Track>
++          <Track Number="14">Allegro spiritoso</Track>
++          <Track Number="15">Andante</Track>
++          <Track Number="16">Primo tempo</Track>
++        </Disc>
++        <Disc Number="8">
++          <Track Number="1">Allegro assai</Track>
++          <Track Number="2">Andante moderato</Track>
++          <Track Number="3">Menuetto</Track>
++          <Track Number="4">Allegro assai</Track>
++          <Track Number="5">Allegro vivace</Track>
++          <Track Number="6">Andante di molto pi&#xF9; tosto allegretto</Track>
++          <Track Number="7">Allegro vivace</Track>
++          <Track Number="8">Allegro con spirito</Track>
++          <Track Number="9">Andante</Track>
++          <Track Number="10">Menuetto. Presto</Track>
++        </Disc>
++        <Disc Number="9">
++          <Track Number="1">Allegro assai</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Allegro</Track>
++          <Track Number="4">Adagio - allegro con spirito</Track>
++          <Track Number="5">Andante</Track>
++          <Track Number="6">Menuetto</Track>
++          <Track Number="7">Presto</Track>
++          <Track Number="8">Molto allegro</Track>
++          <Track Number="9">Andante</Track>
++          <Track Number="10">Menuetto</Track>
++          <Track Number="11">Allegro assai</Track>
++        </Disc>
++        <Disc Number="10">
++          <Track Number="1">Adagio - allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Presto</Track>
++          <Track Number="4">Adagio - allegro</Track>
++          <Track Number="5">Andante con moto</Track>
++          <Track Number="6">Menuetto</Track>
++          <Track Number="7">Allegro</Track>
++        </Disc>
++        <Disc Number="11">
++          <Track Number="1">Molto allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Menuetto</Track>
++          <Track Number="4">Allegro assai</Track>
++          <Track Number="5">Allegro vivace</Track>
++          <Track Number="6">Andante cantabile</Track>
++          <Track Number="7">Menuetto</Track>
++          <Track Number="8">Molto allegro</Track>
++        </Disc>
++        <Disc Number="12">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Tempo di Menuetto</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Allegretto (tema con 4 variazioni)</Track>
++          <Track Number="6">Allegro</Track>
++          <Track Number="7">Allegretto</Track>
++          <Track Number="8">Allegro di molto</Track>
++          <Track Number="9">Andante di molto</Track>
++          <Track Number="10">Minuetto</Track>
++          <Track Number="11">Allegro</Track>
++          <Track Number="12">Allegretto</Track>
++          <Track Number="13">Allegro</Track>
++          <Track Number="14">Rondeau, allegretto</Track>
++        </Disc>
++        <Disc Number="13">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Larghetto</Track>
++          <Track Number="3">Allegretto</Track>
++          <Track Number="4">Allegro maestoso</Track>
++          <Track Number="5">Andante</Track>
++          <Track Number="6">Presto</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Andante</Track>
++          <Track Number="9">Allegro</Track>
++        </Disc>
++        <Disc Number="14">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Adagio</Track>
++          <Track Number="3">Allegro assai</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Larghetto</Track>
++          <Track Number="6">Tempo di menuetto</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Andante</Track>
++          <Track Number="9">Allegro</Track>
++        </Disc>
++        <Disc Number="15">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Allegro vivace assai</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Andante</Track>
++          <Track Number="6">Allegro</Track>
++          <Track Number="7">Allegro maestoso</Track>
++          <Track Number="8">Andante</Track>
++          <Track Number="9">Allegretto</Track>
++        </Disc>
++        <Disc Number="16">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andantino</Track>
++          <Track Number="3">Rondeau, presto</Track>
++          <Track Number="4">Allegro spiritoso</Track>
++          <Track Number="5">Andante staccato</Track>
++          <Track Number="6">Molto allegro</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Andante</Track>
++          <Track Number="9">Rondeau, allegretto</Track>
++        </Disc>
++        <Disc Number="17">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Allegretto, presto</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Andante ma un poco adagio</Track>
++          <Track Number="6">Allegro</Track>
++          <Track Number="7">Allegro aperto</Track>
++          <Track Number="8">Andante un poco adagio</Track>
++          <Track Number="9">Roneau, allegro</Track>
++        </Disc>
++        <Disc Number="18">
++          <Track Number="1">Allegro assai</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Rondo, allegro di molto</Track>
++          <Track Number="4">Allegro aperto</Track>
++          <Track Number="5">Andante</Track>
++          <Track Number="6">Tempo di menuetto</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Allegretto</Track>
++          <Track Number="9">Allegro assai</Track>
++        </Disc>
++        <Disc Number="19">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Romanze</Track>
++          <Track Number="3">Allegro assai</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Andante</Track>
++          <Track Number="6">Allegro</Track>
++        </Disc>
++        <Disc Number="20">
++          <Track Number="1">Allegro vivace</Track>
++          <Track Number="2">Andante un poco sostenuto</Track>
++          <Track Number="3">Allegro vivace</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Larghetto</Track>
++          <Track Number="6">Allegretto</Track>
++        </Disc>
++        <Disc Number="21">
++          <Track Number="1">Allegro vivace</Track>
++          <Track Number="2">Andantino</Track>
++          <Track Number="3">Allegro ma non troppo</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Andante</Track>
++          <Track Number="6">Molto allegro</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Larghetto</Track>
++          <Track Number="9">Rondo, allegro</Track>
++        </Disc>
++        <Disc Number="22">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Rondo, allegro</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Adagio</Track>
++          <Track Number="6">Rondo, tempo di minuetto</Track>
++        </Disc>
++        <Disc Number="23">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Adagio</Track>
++          <Track Number="3">Rondo, allegro</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Andantino</Track>
++          <Track Number="6">Rondeau, allegro</Track>
++        </Disc>
++        <Disc Number="24">
++          <Track Number="1">Allegro maestoso</Track>
++          <Track Number="2">Adagio non troppo</Track>
++          <Track Number="3">Tempo di menuetto</Track>
++          <Track Number="4">Allegro aperto</Track>
++          <Track Number="5">Andante ma non troppo</Track>
++          <Track Number="6">Allegro</Track>
++        </Disc>
++        <Disc Number="25">
++          <Track Number="1">Allegro aperto</Track>
++          <Track Number="2">Andante ma non troppo</Track>
++          <Track Number="3">Allegro</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Andante ma adagio</Track>
++          <Track Number="6">Rondeau, tempo di menuetto</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Adagio</Track>
++          <Track Number="9">Andantino con variazioni</Track>
++        </Disc>
++        <Disc Number="26">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Rondo, allegro</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Romance, larghetto</Track>
++          <Track Number="6">Allegro</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Rondo, allegro</Track>
++          <Track Number="9">Allegro</Track>
++          <Track Number="10">Rondeau, allegro</Track>
++          <Track Number="11">Allegro</Track>
++          <Track Number="12">Andante</Track>
++          <Track Number="13">Allegro</Track>
++        </Disc>
++        <Disc Number="27">
++          <Track Number="1">Allegro moderato</Track>
++          <Track Number="2">Adagio</Track>
++          <Track Number="3">Presto</Track>
++          <Track Number="4">Allegro moderato</Track>
++          <Track Number="5">Andante</Track>
++          <Track Number="6">Rondeau, allegro</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Adagio</Track>
++          <Track Number="9">Rondeau</Track>
++        </Disc>
++        <Disc Number="28">
++          <Track Number="1">Allegro moderato</Track>
++          <Track Number="2">Andante cantabile</Track>
++          <Track Number="3">Rondeau</Track>
++          <Track Number="4">Allegro aperto</Track>
++          <Track Number="5">Adagio</Track>
++          <Track Number="6">Rondeau</Track>
++        </Disc>
++        <Disc Number="29">
++          <Track Number="1">Allegro maestoso</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Presto</Track>
++          <Track Number="4">Allegro spiritoso</Track>
++          <Track Number="5">Andantino grazioso</Track>
++          <Track Number="6">Tempo di menuetto</Track>
++        </Disc>
++        <Disc Number="30">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Presto</Track>
++          <Track Number="4">Andante</Track>
++          <Track Number="5">Allegro di molto</Track>
++          <Track Number="6">Allegro assai</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Andante</Track>
++          <Track Number="9">Presto</Track>
++          <Track Number="10">Allegro</Track>
++          <Track Number="11">Andante</Track>
++          <Track Number="12">Menuetto</Track>
++          <Track Number="13">Adagio</Track>
++          <Track Number="14">Menuetto</Track>
++          <Track Number="15">Rondo Allegro</Track>
++        </Disc>
++        <Disc Number="31">
++          <Track Number="1">Andante</Track>
++          <Track Number="2">Allegretto grazioso</Track>
++          <Track Number="3">Menuetto</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Menuetto</Track>
++          <Track Number="6">Adagio cantabile</Track>
++          <Track Number="7">Presto</Track>
++          <Track Number="8">Allegro</Track>
++          <Track Number="9">Romance. Andante</Track>
++          <Track Number="10">Menuetto</Track>
++          <Track Number="11">Rondo. Allegro</Track>
++        </Disc>
++        <Disc Number="32">
++          <Track Number="1">Marche</Track>
++          <Track Number="2">Allegro</Track>
++          <Track Number="3">Andante</Track>
++          <Track Number="4">Menuett</Track>
++          <Track Number="5">Adagio</Track>
++          <Track Number="6">Menuett</Track>
++          <Track Number="7">Finale: Allegro assai</Track>
++          <Track Number="8">Marcia</Track>
++          <Track Number="9">Allegro moderato</Track>
++          <Track Number="10">Andante</Track>
++          <Track Number="11">Menuett</Track>
++          <Track Number="12">Andante</Track>
++          <Track Number="13">Menuett</Track>
++          <Track Number="14">Allegro</Track>
++          <Track Number="15">Molto allegro</Track>
++          <Track Number="16">Menuetto</Track>
++          <Track Number="17">Andantino</Track>
++          <Track Number="18">Menuetto (tema con variazioni)</Track>
++          <Track Number="19">Rondeau, allegro assai</Track>
++          <Track Number="20">Marcia alla francese</Track>
++        </Disc>
++        <Disc Number="33">
++          <Track Number="1">Largo</Track>
++          <Track Number="2">Menuetto</Track>
++          <Track Number="3">Menuetto</Track>
++          <Track Number="4">Adagio</Track>
++          <Track Number="5">Finale Presto</Track>
++          <Track Number="6">Allegro</Track>
++          <Track Number="7">Andante</Track>
++          <Track Number="8">Menuetto</Track>
++          <Track Number="9">Allegro</Track>
++          <Track Number="10">Allegro</Track>
++          <Track Number="11">Adagio</Track>
++          <Track Number="12">Menuetto</Track>
++          <Track Number="13">Allegretto</Track>
++          <Track Number="14">Menuetto</Track>
++          <Track Number="15">Adagio</Track>
++          <Track Number="16">Allegro assai</Track>
++        </Disc>
++        <Disc Number="34">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Menuetto</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Menuetto</Track>
++          <Track Number="6">Andante</Track>
++          <Track Number="7">Menuetto</Track>
++          <Track Number="8">Allegro</Track>
++          <Track Number="9">Allegro assai</Track>
++          <Track Number="10">Andante moderato</Track>
++          <Track Number="11">Allegro</Track>
++          <Track Number="12">Menuetto &amp; Trio</Track>
++          <Track Number="13">Andante</Track>
++          <Track Number="14">Menuetto &amp; Trio</Track>
++          <Track Number="15">Andantino grazioso &amp; Allegro</Track>
++        </Disc>
++        <Disc Number="35">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante grazioso</Track>
++          <Track Number="3">Menuetto</Track>
++          <Track Number="4">Adagio</Track>
++          <Track Number="5">Menuetto</Track>
++          <Track Number="6">Andante-allegro assai</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Thema mit Variationen-andante grazioso</Track>
++          <Track Number="9">Menuetto</Track>
++          <Track Number="10">Adagio</Track>
++          <Track Number="11">Menuetto</Track>
++          <Track Number="12">Andante-allegro molto</Track>
++        </Disc>
++        <Disc Number="36">
++          <Track Number="1">Marcia-maestoso</Track>
++          <Track Number="2">Menuetto</Track>
++          <Track Number="3">Rondeau</Track>
++          <Track Number="4">Adagio maestoso-allegro con spirito</Track>
++          <Track Number="5">Menuetto-allegretto</Track>
++          <Track Number="6">Concertante-andante grazioso</Track>
++          <Track Number="7">Rondeau-allegro ma non troppo</Track>
++          <Track Number="8">Andantino</Track>
++          <Track Number="9">Menuetto</Track>
++          <Track Number="10">Finale-presto</Track>
++          <Track Number="11">No. 1. molto allegro</Track>
++          <Track Number="12">No. 2. andante</Track>
++          <Track Number="13">No. 4. allegro finale</Track>
++          <Track Number="14">No. 5. Pastorella</Track>
++          <Track Number="15">No. 6-7. Allegro-allegretto</Track>
++          <Track Number="16">No. 8. allegro</Track>
++          <Track Number="17">No. 9. molto adagio</Track>
++          <Track Number="18">No. 10. allegro</Track>
++          <Track Number="19">No. 11-12. largo-molto allegro</Track>
++          <Track Number="20">No. 13-14. andante-allegro</Track>
++          <Track Number="21">No. 15. Menuett</Track>
++          <Track Number="22">No. 16-17. adagio-presto</Track>
++          <Track Number="23">No. 18. Fuga</Track>
++        </Disc>
++        <Disc Number="37">
++          <Track Number="1">Allegro maestoso-allegro molto</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Menuetto</Track>
++          <Track Number="4">Rondo-allegro</Track>
++          <Track Number="5">Menuetto galante</Track>
++          <Track Number="6">Andante</Track>
++          <Track Number="7">Menuetto</Track>
++          <Track Number="8">Adagio-allegro assai</Track>
++        </Disc>
++        <Disc Number="38">
++          <Track Number="1">Allegro assai</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Allegro</Track>
++          <Track Number="4">Menuetto</Track>
++          <Track Number="5">Andante grazioso</Track>
++          <Track Number="6">Menuetto</Track>
++          <Track Number="7">Adagio-allegro assai</Track>
++          <Track Number="8">Andante maestoso-allegro assai</Track>
++          <Track Number="9">Andante</Track>
++          <Track Number="10">Menuetto</Track>
++          <Track Number="11">Allegro</Track>
++          <Track Number="12">Menuetto</Track>
++          <Track Number="13">Andante</Track>
++          <Track Number="14">Menuetto</Track>
++          <Track Number="15">Prestissimo</Track>
++        </Disc>
++        <Disc Number="39">
++          <Track Number="1">D major, KV. 335 No. 1</Track>
++          <Track Number="2">D major, KV. 335 No. 2</Track>
++        </Disc>
++        <Disc Number="40">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Menuetto</Track>
++          <Track Number="3">Adagio</Track>
++          <Track Number="4">Menuetto</Track>
++          <Track Number="5">Rondo</Track>
++          <Track Number="6">Allegro</Track>
++          <Track Number="7">Menuetto</Track>
++          <Track Number="8">Larghetto</Track>
++          <Track Number="9">Menuetto</Track>
++          <Track Number="10">Rondo</Track>
++          <Track Number="11">Allegro</Track>
++          <Track Number="12">Menuetto</Track>
++          <Track Number="13">Adagio</Track>
++          <Track Number="14">Menuetto</Track>
++          <Track Number="15">Rondo</Track>
++        </Disc>
++        <Disc Number="41">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Larghetto</Track>
++          <Track Number="3">Menuetto</Track>
++          <Track Number="4">Adagio</Track>
++          <Track Number="5">Allegretto</Track>
++          <Track Number="6">Adagio</Track>
++          <Track Number="7">Menuetto</Track>
++          <Track Number="8">Adagio</Track>
++          <Track Number="9">Romance</Track>
++          <Track Number="10">Polonaise</Track>
++          <Track Number="11">Divertimento No. 6: Rondo, larghetto</Track>
++          <Track Number="12">Divertimento No. 6: Voi che sapete (from Le Nozze di Figaro)</Track>
++          <Track Number="13">Divertimento No. 6: Non piu andrai (from Le Nozze di Figaro)</Track>
++          <Track Number="14">Divertimento No. 6: La ci darem la mano (from Don Giovanni)</Track>
++          <Track Number="15">Divertimento No. 6: Vedrai, carino (from Don Giovanni)</Track>
++        </Disc>
++        <Disc Number="42">
++          <Track Number="1">Allegro maestoso</Track>
++          <Track Number="2">Menuetto</Track>
++          <Track Number="3">Adagio</Track>
++          <Track Number="4">Menuetto-Trio</Track>
++          <Track Number="5">Allegro</Track>
++          <Track Number="6">Allegro</Track>
++          <Track Number="7">Andante</Track>
++          <Track Number="8">Menuetto-Trio</Track>
++          <Track Number="9">Allegro</Track>
++        </Disc>
++        <Disc Number="43">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Menuetto</Track>
++          <Track Number="3">Andante grazioso</Track>
++          <Track Number="4">Adagio</Track>
++          <Track Number="5">Allegro</Track>
++          <Track Number="6">Allegro assai</Track>
++          <Track Number="7">Menuetto</Track>
++          <Track Number="8">Andante</Track>
++          <Track Number="9">Adagio</Track>
++          <Track Number="10">Allegro</Track>
++          <Track Number="11">Allegro moderato</Track>
++          <Track Number="12">Menuetto</Track>
++          <Track Number="13">Romance</Track>
++          <Track Number="14">Menuetto</Track>
++          <Track Number="15">Rondo</Track>
++          <Track Number="16">Allegro</Track>
++          <Track Number="17">Menuetto</Track>
++          <Track Number="18">Adagio</Track>
++          <Track Number="19">Menuetto</Track>
++          <Track Number="20">Finale</Track>
++        </Disc>
++        <Disc Number="44">
++          <Track Number="1">Allegro spiritoso</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Menuetto</Track>
++          <Track Number="4">Contredanse en rondeau</Track>
++          <Track Number="5">Allegro</Track>
++          <Track Number="6">Andante grazioso</Track>
++          <Track Number="7">Menuetto</Track>
++          <Track Number="8">Allegro</Track>
++          <Track Number="9">Andante</Track>
++          <Track Number="10">Menuetto</Track>
++        </Disc>
++      </Tracks>
++    </Item>
++    <Item>
++      <ASIN>B00004X0QF</ASIN>
++      <DetailPageURL>http://www.amazon.com/Mozart-Effect-Music-Babies-Nighty/dp/B00004X0QF%3FSubscriptionId%3D0CM6AXEW4QM6RZCH28R2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00004X0QF</DetailPageURL>
++      <ItemAttributes>
++        <Creator Role="Performer">Jozsef Balogh</Creator>
++        <Creator Role="Composer">Wolfgang Amadeus Mozart</Creator>
++        <Creator Role="Conductor">Harald Nerat</Creator>
++        <Creator Role="Conductor">Nicholas Ward</Creator>
++        <Creator Role="Performer">Capella Istropolitana</Creator>
++        <Creator Role="Performer">Danubius String Quartet</Creator>
++        <Creator Role="Performer">Netherlands Wind Ensemble</Creator>
++        <Creator Role="Orchestra">Northern Chamber Orchestra</Creator>
++        <Creator Role="Performer">Jeno Jando</Creator>
++        <Manufacturer>Children's Group</Manufacturer>
++        <ProductGroup>Music</ProductGroup>
++        <Title>The Mozart Effect: Music For Babies: Nighty Night</Title>
++      </ItemAttributes>
++      <OfferSummary>
++        <LowestNewPrice>
++          <Amount>370</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$3.70</FormattedPrice>
++        </LowestNewPrice>
++        <LowestUsedPrice>
++          <Amount>497</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$4.97</FormattedPrice>
++        </LowestUsedPrice>
++        <TotalNew>33</TotalNew>
++        <TotalUsed>12</TotalUsed>
++        <TotalCollectible>0</TotalCollectible>
++        <TotalRefurbished>0</TotalRefurbished>
++      </OfferSummary>
++      <Offers>
++        <TotalOffers>1</TotalOffers>
++        <TotalOfferPages>1</TotalOfferPages>
++        <Offer>
++          <Merchant>
++            <MerchantId>ATVPDKIKX0DER</MerchantId>
++            <GlancePage>http://www.amazon.com/gp/help/seller/home.html?seller=ATVPDKIKX0DER</GlancePage>
++          </Merchant>
++          <OfferAttributes>
++            <Condition>New</Condition>
++            <SubCondition>new</SubCondition>
++          </OfferAttributes>
++          <OfferListing>
++            <OfferListingId>DxNxKZYiXIpX68jteXiPko0PVz3HQ5onOdUdJ6OU90UrLR%2BiOC92Twtp5HoXbrPDfjEBfB5heedESCotjypo3g%3D%3D</OfferListingId>
++            <Price>
++              <Amount>698</Amount>
++              <CurrencyCode>USD</CurrencyCode>
++              <FormattedPrice>$6.98</FormattedPrice>
++            </Price>
++            <Availability>Usually ships in 24 hours</Availability>
++            <IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
++          </OfferListing>
++        </Offer>
++      </Offers>
++      <Tracks>
++        <Disc Number="1">
++          <Track Number="1">Den! Vienialla Finestra</Track>
++          <Track Number="2">1. Andante Gransioso</Track>
++          <Track Number="3">3. Adagio</Track>
++          <Track Number="4">2. Andante</Track>
++          <Track Number="5">2. Adagio</Track>
++          <Track Number="6">2. Andante</Track>
++          <Track Number="7">2. Adagio</Track>
++          <Track Number="8">4. Adagio</Track>
++          <Track Number="9">2. Larghetto</Track>
++        </Disc>
++      </Tracks>
++    </Item>
++    <Item>
++      <ASIN>B000004194</ASIN>
++      <DetailPageURL>http://www.amazon.com/Mozart-Great-Piano-Concertos-Vol/dp/B000004194%3FSubscriptionId%3D0CM6AXEW4QM6RZCH28R2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB000004194</DetailPageURL>
++      <ItemAttributes>
++        <Creator Role="Composer">Wolfgang Amadeus Mozart</Creator>
++        <Creator Role="Conductor">Neville Marriner</Creator>
++        <Creator Role="Orchestra">Academy of St. Martin-in-the-Fields</Creator>
++        <Creator Role="Performer">Alfred Brendel</Creator>
++        <Manufacturer>Philips</Manufacturer>
++        <ProductGroup>Music</ProductGroup>
++        <Title>Mozart: The Great Piano Concertos, Vol. 1</Title>
++      </ItemAttributes>
++      <OfferSummary>
++        <LowestNewPrice>
++          <Amount>1048</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$10.48</FormattedPrice>
++        </LowestNewPrice>
++        <LowestUsedPrice>
++          <Amount>1049</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$10.49</FormattedPrice>
++        </LowestUsedPrice>
++        <TotalNew>39</TotalNew>
++        <TotalUsed>12</TotalUsed>
++        <TotalCollectible>0</TotalCollectible>
++        <TotalRefurbished>0</TotalRefurbished>
++      </OfferSummary>
++      <Offers>
++        <TotalOffers>1</TotalOffers>
++        <TotalOfferPages>1</TotalOfferPages>
++        <Offer>
++          <Merchant>
++            <MerchantId>ATVPDKIKX0DER</MerchantId>
++            <GlancePage>http://www.amazon.com/gp/help/seller/home.html?seller=ATVPDKIKX0DER</GlancePage>
++          </Merchant>
++          <OfferAttributes>
++            <Condition>New</Condition>
++            <SubCondition>new</SubCondition>
++          </OfferAttributes>
++          <OfferListing>
++            <OfferListingId>FzDU%2F69oBEZxc6vUvcH96DEH29QpOw84n3192FI91oOkC%2B6cbK8%2B5tX5T6TXhZDYZwr%2B76%2BiI4ZCbrcICKG0Xw%3D%3D</OfferListingId>
++            <Price>
++              <Amount>1399</Amount>
++              <CurrencyCode>USD</CurrencyCode>
++              <FormattedPrice>$13.99</FormattedPrice>
++            </Price>
++            <Availability>Usually ships in 24 hours</Availability>
++            <IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
++          </OfferListing>
++        </Offer>
++      </Offers>
++      <Tracks>
++        <Disc Number="1">
++          <Track Number="1">Piano Concerto No. 19 In F, KV 459: Allegro Vivace</Track>
++          <Track Number="2">Piano Concerto No. 19 In F, KV 459: Allegretto</Track>
++          <Track Number="3">Piano Concerto No. 19 In F, KV 459: Allegro Assai</Track>
++          <Track Number="4">Piano Concerto No. 20 In D Minor, KV 466: Allegro</Track>
++          <Track Number="5">Piano Concerto No. 20 In D Minor, KV 466: Romance</Track>
++          <Track Number="6">Piano Concerto No. 20 In D Minor, KV 466: Allegro Assai</Track>
++          <Track Number="7">Rondo In D, KV 382: Allegretto Grazioso</Track>
++          <Track Number="8">Rondo In D, KV 382: Adagio</Track>
++          <Track Number="9">Rondo In D, KV 382: Allegro</Track>
++          <Track Number="10">Piano Concerto No. 23 In A , KV 488: Allegro</Track>
++        </Disc>
++        <Disc Number="2">
++          <Track Number="1">Piano Concerto No. 23 In A, KV 488: Adagio</Track>
++          <Track Number="2">Piano Concerto No. 23 In A, KV 488: Allegro assai</Track>
++          <Track Number="3">Piano Concerto #21 In C, KV 467: Allegro</Track>
++          <Track Number="4">Piano Concerto #21 In C, KV 467: Andante</Track>
++          <Track Number="5">Piano Concerto #21 In C, KV 467: Allegro Vivace Assai</Track>
++          <Track Number="6">Piano Concerto No. 24 in C Minor, KV 491: Allegro</Track>
++          <Track Number="7">Piano Concerto No. 24 in C Minor, KV 491: Larghetto</Track>
++          <Track Number="8">Piano Concerto No. 24 in C Minor, KV 491: Allegretto</Track>
++          <Track Number="9">Rondo In A, KV 386</Track>
++        </Disc>
++      </Tracks>
++    </Item>
++    <Item>
++      <ASIN>B00000I9M0</ASIN>
++      <DetailPageURL>http://www.amazon.com/Mozart-for-Relaxation/dp/B00000I9M0%3FSubscriptionId%3D0CM6AXEW4QM6RZCH28R2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00000I9M0</DetailPageURL>
++      <ItemAttributes>
++        <Creator Role="Performer">Richard Stoltzman</Creator>
++        <Creator Role="Composer">Wolfgang Amadeus Mozart</Creator>
++        <Creator Role="Conductor">Alexander Schneider [violin]</Creator>
++        <Creator Role="Conductor">Colin Davis</Creator>
++        <Creator Role="Conductor">Eduardo Mata</Creator>
++        <Creator Role="Conductor">Erich Leinsdorf</Creator>
++        <Creator Role="Conductor">James Galway</Creator>
++        <Creator Role="Performer">James Galway</Creator>
++        <Creator Role="Conductor">Libor Hlavacek</Creator>
++        <Creator Role="Performer">Julius Levine</Creator>
++        <Creator Role="Performer">Guarneri Quartet</Creator>
++        <Creator Role="Performer">Tokyo String Quartet</Creator>
++        <Creator Role="Orchestra">Chamber Orchestra of Europe</Creator>
++        <Creator Role="Orchestra">English Chamber Orchestra</Creator>
++        <Creator Role="Orchestra">London Symphony Orchestra</Creator>
++        <Creator Role="Orchestra">New Philharmonia Orchestra</Creator>
++        <Creator Role="Orchestra">Prague Chamber Orchestra</Creator>
++        <Creator Role="Orchestra">Winds of the Bavarian Radio Symphony Orchestra</Creator>
++        <Creator Role="Performer">Alicia de Larrocha</Creator>
++        <Creator Role="Performer">Leontyne Price</Creator>
++        <Manufacturer>RCA</Manufacturer>
++        <ProductGroup>Music</ProductGroup>
++        <Title>Mozart for Relaxation</Title>
++      </ItemAttributes>
++      <OfferSummary>
++        <LowestNewPrice>
++          <Amount>657</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$6.57</FormattedPrice>
++        </LowestNewPrice>
++        <LowestUsedPrice>
++          <Amount>525</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$5.25</FormattedPrice>
++        </LowestUsedPrice>
++        <TotalNew>29</TotalNew>
++        <TotalUsed>16</TotalUsed>
++        <TotalCollectible>0</TotalCollectible>
++        <TotalRefurbished>0</TotalRefurbished>
++      </OfferSummary>
++      <Offers>
++        <TotalOffers>1</TotalOffers>
++        <TotalOfferPages>1</TotalOfferPages>
++        <Offer>
++          <Merchant>
++            <MerchantId>ATVPDKIKX0DER</MerchantId>
++            <GlancePage>http://www.amazon.com/gp/help/seller/home.html?seller=ATVPDKIKX0DER</GlancePage>
++          </Merchant>
++          <OfferAttributes>
++            <Condition>New</Condition>
++            <SubCondition>new</SubCondition>
++          </OfferAttributes>
++          <OfferListing>
++            <OfferListingId>8lrLac8DkxCvQyNAPudBZVKyLFG8MUvEvgCzbtk9X2myKLKNu7eWLebIAAFQ9vMkXATf3YwWDKR6eyvJTFsHLw%3D%3D</OfferListingId>
++            <Price>
++              <Amount>999</Amount>
++              <CurrencyCode>USD</CurrencyCode>
++              <FormattedPrice>$9.99</FormattedPrice>
++            </Price>
++            <Availability>Usually ships in 24 hours</Availability>
++            <IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
++          </OfferListing>
++        </Offer>
++      </Offers>
++      <Tracks>
++        <Disc Number="1">
++          <Track Number="1">II: Andantino</Track>
++          <Track Number="2">II: Romanze, Andante</Track>
++          <Track Number="3">II: Andante cantabile</Track>
++          <Track Number="4">II: Adagio</Track>
++          <Track Number="5">Adagio</Track>
++          <Track Number="6">III: Adagio</Track>
++          <Track Number="7">Act I, Scene 2: Soave sia il vento</Track>
++          <Track Number="8">II: Larghetto</Track>
++          <Track Number="9">II: Andante</Track>
++        </Disc>
++      </Tracks>
++    </Item>
++    <Item>
++      <ASIN>B000004166</ASIN>
++      <DetailPageURL>http://www.amazon.com/Mozart-Violin-Concertos/dp/B000004166%3FSubscriptionId%3D0CM6AXEW4QM6RZCH28R2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB000004166</DetailPageURL>
++      <ItemAttributes>
++        <Artist>Wolfgang Amadeus Mozart</Artist>
++        <Artist>Raymond Leppard</Artist>
++        <Artist>Sir Colin Davis</Artist>
++        <Artist>London Symphony Orchestra</Artist>
++        <Artist>New Philharmonia Orchestra</Artist>
++        <Artist>Arrigo Pelliccia</Artist>
++        <Artist>Arthur Grumiaux</Artist>
++        <Manufacturer>Philips</Manufacturer>
++        <ProductGroup>Music</ProductGroup>
++        <Title>Mozart: Violin Concertos</Title>
++      </ItemAttributes>
++      <OfferSummary>
++        <LowestNewPrice>
++          <Amount>1058</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$10.58</FormattedPrice>
++        </LowestNewPrice>
++        <LowestUsedPrice>
++          <Amount>799</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$7.99</FormattedPrice>
++        </LowestUsedPrice>
++        <TotalNew>34</TotalNew>
++        <TotalUsed>14</TotalUsed>
++        <TotalCollectible>0</TotalCollectible>
++        <TotalRefurbished>0</TotalRefurbished>
++      </OfferSummary>
++      <Offers>
++        <TotalOffers>1</TotalOffers>
++        <TotalOfferPages>1</TotalOfferPages>
++        <Offer>
++          <Merchant>
++            <MerchantId>ATVPDKIKX0DER</MerchantId>
++            <GlancePage>http://www.amazon.com/gp/help/seller/home.html?seller=ATVPDKIKX0DER</GlancePage>
++          </Merchant>
++          <OfferAttributes>
++            <Condition>New</Condition>
++            <SubCondition>new</SubCondition>
++          </OfferAttributes>
++          <OfferListing>
++            <OfferListingId>c%2BThiNmo%2FSef%2BGxOJei3EHV9uJ8B99JaXNamZf55JwkBepI6sRlslryh32vrKpzCAWEHnDIlQ4HCwUN49r%2Bj%2BA%3D%3D</OfferListingId>
++            <Price>
++              <Amount>1399</Amount>
++              <CurrencyCode>USD</CurrencyCode>
++              <FormattedPrice>$13.99</FormattedPrice>
++            </Price>
++            <Availability>Usually ships in 24 hours</Availability>
++            <IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
++          </OfferListing>
++        </Offer>
++      </Offers>
++      <Tracks>
++        <Disc Number="1">
++          <Track Number="1">No. 1 In B Flat, K. 207: Allegro Moderato</Track>
++          <Track Number="2">No. 1 In B Flat, K. 207: Adagio</Track>
++          <Track Number="3">No. 1 In B Flat, K. 207: Presto</Track>
++          <Track Number="4">No. 3 In G, K. 216: Allegro</Track>
++          <Track Number="5">No. 3 In G, K. 216: Adagio</Track>
++          <Track Number="6">No. 3 In G, K. 216: Rondeau (Allegro)</Track>
++          <Track Number="7">No. 4 In D, K. 218: Allegro</Track>
++          <Track Number="8">No. 4 In D, K. 218: Andante Cantabile</Track>
++          <Track Number="9">No. 4 In D, K. 218: Rondeau</Track>
++          <Track Number="10">Adagio In E For Violin And Orchestra, K. 261</Track>
++          <Track Number="11">Rondo In C For Violin And Orchestra, K. 373</Track>
++        </Disc>
++        <Disc Number="2">
++          <Track Number="1">Concerto No. 2 In D, K. 211: Allegro</Track>
++          <Track Number="2">Concerto No. 2 In D, K. 211: Andante</Track>
++          <Track Number="3">Concerto No. 2 In D, K. 211: Rondeau (Allegro)</Track>
++          <Track Number="4">Concerto No. 5 In A, K. 219: Allegro Aperto</Track>
++          <Track Number="5">Concerto No. 5 In A, K. 219: Adagio</Track>
++          <Track Number="6">Concerto No. 5 In A, K. 219: Rondeau (Tempo Di Menuetto)</Track>
++          <Track Number="7">Sinfonia Concertante In E Flat, K. 364 For Violin, Viola And Orchestra: Allegro Maestoso</Track>
++          <Track Number="8">Sinfonia Concertante In E Flat, K. 364 For Violin, Viola And Orchestra: Andante</Track>
++          <Track Number="9">Sinfonia Concertante In E Flat, K. 364 For Violin, Viola And Orchestra: Presto</Track>
++        </Disc>
++      </Tracks>
++    </Item>
++    <Item>
++      <ASIN>B00002DEH1</ASIN>
++      <DetailPageURL>http://www.amazon.com/Mozart-Piano-Sonatas/dp/B00002DEH1%3FSubscriptionId%3D0CM6AXEW4QM6RZCH28R2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00002DEH1</DetailPageURL>
++      <ItemAttributes>
++        <Creator Role="Composer">Wolfgang Amadeus Mozart</Creator>
++        <Creator Role="Performer">Christoph Eschenbach</Creator>
++        <Manufacturer>Deutsche Grammophon</Manufacturer>
++        <ProductGroup>Music</ProductGroup>
++        <Title>Mozart: Piano Sonatas</Title>
++      </ItemAttributes>
++      <OfferSummary>
++        <LowestNewPrice>
++          <Amount>2660</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$26.60</FormattedPrice>
++        </LowestNewPrice>
++        <LowestUsedPrice>
++          <Amount>2692</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$26.92</FormattedPrice>
++        </LowestUsedPrice>
++        <TotalNew>23</TotalNew>
++        <TotalUsed>7</TotalUsed>
++        <TotalCollectible>0</TotalCollectible>
++        <TotalRefurbished>0</TotalRefurbished>
++      </OfferSummary>
++      <Offers>
++        <TotalOffers>1</TotalOffers>
++        <TotalOfferPages>1</TotalOfferPages>
++        <Offer>
++          <Merchant>
++            <MerchantId>ATVPDKIKX0DER</MerchantId>
++            <GlancePage>http://www.amazon.com/gp/help/seller/home.html?seller=ATVPDKIKX0DER</GlancePage>
++          </Merchant>
++          <OfferAttributes>
++            <Condition>New</Condition>
++            <SubCondition>new</SubCondition>
++          </OfferAttributes>
++          <OfferListing>
++            <OfferListingId>MGxz%2FlTy0KPjmQX3kpSoL3bmPjN3mxxYqqEk0SKVAJznTbwO%2BQjjy49TTJxRrwK3ZpW1kTC5n%2BbmQtVmNsOyhg%3D%3D</OfferListingId>
++            <Price>
++              <Amount>3599</Amount>
++              <CurrencyCode>USD</CurrencyCode>
++              <FormattedPrice>$35.99</FormattedPrice>
++            </Price>
++            <Availability>Usually ships in 24 hours</Availability>
++            <IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
++          </OfferListing>
++        </Offer>
++      </Offers>
++      <Tracks>
++        <Disc Number="1">
++          <Track Number="1">1. Allegro</Track>
++          <Track Number="2">2. Menuet I &amp; II</Track>
++          <Track Number="3">1. Allegro</Track>
++          <Track Number="4">2. Menuet I &amp; II</Track>
++          <Track Number="5">Allegro</Track>
++          <Track Number="6">Andante</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Allegro assai</Track>
++          <Track Number="9">Adagio</Track>
++          <Track Number="10">Presto</Track>
++          <Track Number="11">Allegro</Track>
++          <Track Number="12">Andante amoroso</Track>
++          <Track Number="13">Rondeau, Allegro</Track>
++          <Track Number="14">Adagio</Track>
++          <Track Number="15">Menuetto I &amp; II</Track>
++          <Track Number="16">Allegro</Track>
++        </Disc>
++        <Disc Number="2">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Presto</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Rondeau en Polonaise, Andante</Track>
++          <Track Number="6">Thema und 12 Variationen</Track>
++          <Track Number="7">Allegro con spirito</Track>
++          <Track Number="8">Andante un poco Adagio</Track>
++          <Track Number="9">Rondeau, Allegretto grazioso</Track>
++          <Track Number="10">Allegro con spirito</Track>
++          <Track Number="11">Andante con espressione</Track>
++          <Track Number="12">Rondeau, Allegro</Track>
++        </Disc>
++        <Disc Number="3">
++          <Track Number="1">Allegro maestoso</Track>
++          <Track Number="2">Andante cantabile con espressione</Track>
++          <Track Number="3">Presto</Track>
++          <Track Number="4">Allegro moderato</Track>
++          <Track Number="5">Andante cantabile</Track>
++          <Track Number="6">Allegretto</Track>
++          <Track Number="7">Theme, Andante grazioso</Track>
++          <Track Number="8">Menuetto &amp; Trio</Track>
++          <Track Number="9">Alla Turca, Allegretto</Track>
++        </Disc>
++        <Disc Number="4">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Adagio</Track>
++          <Track Number="3">Allegro assai</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Andante cantabile</Track>
++          <Track Number="6">Allegretto grazioso</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Adagio</Track>
++          <Track Number="9">Molto allegro</Track>
++        </Disc>
++        <Disc Number="5">
++          <Track Number="1">Allegro</Track>
++          <Track Number="2">Andante</Track>
++          <Track Number="3">Rondo. Allegretto (K. 494)</Track>
++          <Track Number="4">Allegro</Track>
++          <Track Number="5">Andante</Track>
++          <Track Number="6">Rondo, Allegretto</Track>
++          <Track Number="7">Allegro</Track>
++          <Track Number="8">Adagio</Track>
++          <Track Number="9">Allegretto</Track>
++          <Track Number="10">Allegro</Track>
++          <Track Number="11">Adagio</Track>
++          <Track Number="12">Allegretto</Track>
++        </Disc>
++      </Tracks>
++    </Item>
++    <Item>
++      <ASIN>B0000041EV</ASIN>
++      <DetailPageURL>http://www.amazon.com/Mozart-Mothers-Be-Tender-Lullabies/dp/B0000041EV%3FSubscriptionId%3D0CM6AXEW4QM6RZCH28R2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB0000041EV</DetailPageURL>
++      <ItemAttributes>
++        <Creator Role="Performer">Eva Czako</Creator>
++        <Creator Role="Composer">Wolfgang Amadeus Mozart</Creator>
++        <Creator Role="Conductor">Alexander Gibson</Creator>
++        <Creator Role="Conductor">Neville Marriner</Creator>
++        <Creator Role="Performer">Academy of St. Martin-in-the-Fields</Creator>
++        <Creator Role="Orchestra">Academy of St. Martin-in-the-Fields</Creator>
++        <Creator Role="Performer">Academy of St. Martin-in-the-Fields Chamber Ensemble</Creator>
++        <Creator Role="Performer">Grumiaux Trio</Creator>
++        <Creator Role="Performer">Quartetto Italiano</Creator>
++        <Creator Role="Orchestra">New Philharmonia Orchestra</Creator>
++        <Creator Role="Performer">Georges Janzer</Creator>
++        <Creator Role="Performer">Max Lesueur</Creator>
++        <Creator Role="Performer">Arpad Gerecz</Creator>
++        <Creator Role="Performer">Arthur Grumiaux</Creator>
++        <Manufacturer>Philips</Manufacturer>
++        <ProductGroup>Music</ProductGroup>
++        <Title>Mozart for Mothers-To-Be: Tender Lullabies for Mother and Child</Title>
++      </ItemAttributes>
++      <OfferSummary>
++        <LowestNewPrice>
++          <Amount>349</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$3.49</FormattedPrice>
++        </LowestNewPrice>
++        <LowestUsedPrice>
++          <Amount>300</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$3.00</FormattedPrice>
++        </LowestUsedPrice>
++        <TotalNew>36</TotalNew>
++        <TotalUsed>21</TotalUsed>
++        <TotalCollectible>0</TotalCollectible>
++        <TotalRefurbished>0</TotalRefurbished>
++      </OfferSummary>
++      <Offers>
++        <TotalOffers>1</TotalOffers>
++        <TotalOfferPages>1</TotalOfferPages>
++        <Offer>
++          <Merchant>
++            <MerchantId>ATVPDKIKX0DER</MerchantId>
++            <GlancePage>http://www.amazon.com/gp/help/seller/home.html?seller=ATVPDKIKX0DER</GlancePage>
++          </Merchant>
++          <OfferAttributes>
++            <Condition>New</Condition>
++            <SubCondition>new</SubCondition>
++          </OfferAttributes>
++          <OfferListing>
++            <OfferListingId>xd0JIWdBe6d3hhzubUAq6GY64ZyX6uP4L0ckSYUj4XXwLaSYHiVarWkkGzGvpt1wF5hcXl%2FWRaVyV0bPRHYy3Q%3D%3D</OfferListingId>
++            <Price>
++              <Amount>699</Amount>
++              <CurrencyCode>USD</CurrencyCode>
++              <FormattedPrice>$6.99</FormattedPrice>
++            </Price>
++            <Availability>Usually ships in 24 hours</Availability>
++            <IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
++          </OfferListing>
++        </Offer>
++      </Offers>
++      <Tracks>
++        <Disc Number="1">
++          <Track Number="1">[Unspecified] Divertimento in B-flat: Adagio</Track>
++          <Track Number="2">Adagio</Track>
++          <Track Number="3">[Unspecified] Divertimento G minor: (Andante)</Track>
++          <Track Number="4">Adagio</Track>
++          <Track Number="5">Adagio</Track>
++          <Track Number="6">Romance (Andante)</Track>
++          <Track Number="7">Andante</Track>
++          <Track Number="8">Adagio</Track>
++          <Track Number="9">Prelude</Track>
++          <Track Number="10">Adagio</Track>
++          <Track Number="11">Andante cantabile</Track>
++          <Track Number="12">Adagio</Track>
++        </Disc>
++      </Tracks>
++    </Item>
++    <Item>
++      <ASIN>B00004SA87</ASIN>
++      <DetailPageURL>http://www.amazon.com/Mozart-The-Violin-Sonatas/dp/B00004SA87%3FSubscriptionId%3D0CM6AXEW4QM6RZCH28R2%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00004SA87</DetailPageURL>
++      <ItemAttributes>
++        <Creator Role="Composer">Wolfgang Amadeus Mozart</Creator>
++        <Creator Role="Performer">Daniel Barenboim</Creator>
++        <Creator Role="Performer">Itzhak Perlman</Creator>
++        <Manufacturer>Deutsche Grammophon</Manufacturer>
++        <ProductGroup>Music</ProductGroup>
++        <Title>Mozart: The Violin Sonatas</Title>
++      </ItemAttributes>
++      <OfferSummary>
++        <LowestNewPrice>
++          <Amount>1898</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$18.98</FormattedPrice>
++        </LowestNewPrice>
++        <LowestUsedPrice>
++          <Amount>1899</Amount>
++          <CurrencyCode>USD</CurrencyCode>
++          <FormattedPrice>$18.99</FormattedPrice>
++        </LowestUsedPrice>
++        <TotalNew>31</TotalNew>
++        <TotalUsed>8</TotalUsed>
++        <TotalCollectible>0</TotalCollectible>
++        <TotalRefurbished>0</TotalRefurbished>
++      </OfferSummary>
++      <Offers>
++        <TotalOffers>1</TotalOffers>
++        <TotalOfferPages>1</TotalOfferPages>
++        <Offer>
++          <Merchant>
++            <MerchantId>ATVPDKIKX0DER</MerchantId>
++            <GlancePage>http://www.amazon.com/gp/help/seller/home.html?seller=ATVPDKIKX0DER</GlancePage>
++          </Merchant>
++          <OfferAttributes>
++            <Condition>New</Condition>
++            <SubCondition>new</SubCondition>
++          </OfferAttributes>
++          <OfferListing>
++            <OfferListingId>VhgCmNPkXUUBD67bVqUThLmsIvSsG%2BQ3WrgOPfbik5aVnv6Bmgkn35RnfJZCYN9ZkKMHyxkPS0XipJiy15OULg%3D%3D</OfferListingId>
++            <Price>
++              <Amount>2799</Amount>
++              <CurrencyCode>USD</CurrencyCode>
++              <FormattedPrice>$27.99</FormattedPrice>
++            </Price>
++            <Availability>Usually ships in 24 hours</Availability>
++            <IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
++          </OfferListing>
++        </Offer>
++      </Offers>
++      <Tracks>
++        <Disc Number="1">
++          <Track Number="1">1. Allegro con spirito</Track>
++          <Track Number="2">2. Allegro</Track>
++          <Track Number="3">1. Allegro</Track>
++          <Track Number="4">2. Rondo. Andante grazioso</Track>
++          <Track Number="5">1. Adagio - Molto allegro</Track>
++          <Track Number="6">2. Tempo di Menuetto</Track>
++          <Track Number="7">1. Allegro di molto</Track>
++          <Track Number="8">2. Thema. Andante grazioso - Variazioni 1-6</Track>
++          <Track Number="9">1. Allegro vivace</Track>
++          <Track Number="10">2. Andante sostenuto</Track>
++          <Track Number="11">3. Rondeau. Allegro</Track>
++        </Disc>
++        <Disc Number="2">
++          <Track Number="1">1. Allegro</Track>
++          <Track Number="2">2. Tempo di Menuetto</Track>
++          <Track Number="3">1. Allegro con spirito</Track>
++          <Track Number="4">2. Andantino cantabile</Track>
++          <Track Number="5">3. Allegretto</Track>
++          <Track Number="6">1. Allegro moderato</Track>
++          <Track Number="7">2. Andantino sostenuto e cantabile</Track>
++          <Track Number="8">3. Rondeau. Allegro</Track>
++          <Track Number="9">1. Adagio -  Allegro</Track>
++          <Track Number="10">2. Thema. Andantino cantabile - Var. 1-5 - Thema. Allegretto</Track>
++        </Disc>
++        <Disc Number="3">
++          <Track Number="1">1. Allegro</Track>
++          <Track Number="2">2. Andante</Track>
++          <Track Number="3">3. Rondeau. Allegretto grazioso</Track>
++          <Track Number="4">1. Allegro</Track>
++          <Track Number="5">2. Thema. Andante - Variationen 1-6</Track>
++          <Track Number="6">3. Tempo di Menuetto</Track>
++          <Track Number="7">1. Allegro</Track>
++          <Track Number="8">2. Andante con moto</Track>
++          <Track Number="9">3. Rondeau. Allegro</Track>
++          <Track Number="10">1. Largo - Allegro</Track>
++          <Track Number="11">2. Andante</Track>
++          <Track Number="12">3. Allegretto</Track>
++        </Disc>
++        <Disc Number="4">
++          <Track Number="1">1. Molto Allegro</Track>
++          <Track Number="2">2. Adagio</Track>
++          <Track Number="3">3. Thema. Allegretto - Var. 1-5 - Var. 6. Allegro</Track>
++          <Track Number="4">1. Molto Allegro</Track>
++          <Track Number="5">2. Andante</Track>
++          <Track Number="6">3. Presto</Track>
++          <Track Number="7">1. Andantino cantabile</Track>
++          <Track Number="8">2. Allegro</Track>
++          <Track Number="9">3. Thema. Andante - Var. 1-6</Track>
++        </Disc>
++      </Tracks>
++    </Item>
++  </Items>
++</ItemSearchResponse>
+Index: ZendFramework-1.7.5/tests/Zend/Service/TwitterTest.php
+===================================================================
+--- ZendFramework-1.7.5.orig/tests/Zend/Service/TwitterTest.php	2009-03-04 08:43:50.960002562 +0000
++++ ZendFramework-1.7.5/tests/Zend/Service/TwitterTest.php	2009-03-04 08:44:05.460001574 +0000
+@@ -375,6 +375,23 @@
+     /**
+      * @return void
+      */
++    public function testFriendsTimelineWithCountReturnsResults()
++    {
++        /* @var $response Zend_Rest_Client_Result */
++        $response = $this->twitter->status->friendsTimeline( array('id' => 'zftestuser1', 'count' => '2') );
++        $this->assertTrue($response instanceof Zend_Rest_Client_Result);
++        $httpClient    = Zend_Service_Twitter::getHttpClient();
++        $httpRequest   = $httpClient->getLastRequest();
++        $httpResponse  = $httpClient->getLastResponse();
++        $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
++
++        $this->assertTrue(isset($response->status));
++        $this->assertEquals(2, count($response->status), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
++    }
++
++    /**
++     * @return void
++     */
+     public function testUserTimelineStatusWithPageAndTwoTweetsReturnsResults()
+     {
+         /* @var $response Zend_Rest_Client_Result */
+@@ -390,7 +407,7 @@
+         $this->assertEquals(2, count($response->status), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+     }
+ 
+-    public function testUserTimelineStatusShouldReturnTwentyResults()
++    public function testUserTimelineStatusShouldReturnFortyResults()
+     {
+         /* @var $response Zend_Rest_Client_Result */
+         $response = $this->twitter->status->userTimeline( array('id' => 'zftestuser1', 'count' => 40) );
+@@ -401,7 +418,7 @@
+         $this->assertTrue($httpResponse->isSuccessful(), $httpResponse->getStatus() . ': ' . var_export($httpRequest, 1) . '\n' . $httpResponse->getHeadersAsString());
+ 
+         $this->assertTrue(isset($response->status));
+-        $this->assertEquals(20, count($response->status));
++        $this->assertEquals(40, count($response->status));
+     }
+ 
+     /**
+@@ -431,7 +448,7 @@
+         } catch (Exception $e) {
+         }
+     }
+-	
++
+ 	public function testPostStatusUpdateUTF8ShouldNotThrowException()
+ 	{
+ 		try {
+Index: ZendFramework-1.7.5/tests/Zend/View/_stubs/scripts/LfiProtectionCheck.phtml
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ ZendFramework-1.7.5/tests/Zend/View/_stubs/scripts/LfiProtectionCheck.phtml	2009-03-04 08:44:05.460001574 +0000
+@@ -0,0 +1,3 @@
++<p>
++    Sample content for LFI protection check
++</p>
