Merge from Chromium at DEPS revision 37.0.2062.34

This commit was generated by merge_to_master.py.

Change-Id: Iace2841ff698138e27700e5b50490b4b5c5f5ab9
diff --git a/DEPS b/DEPS
index 273b966..885b425 100644
--- a/DEPS
+++ b/DEPS
@@ -506,7 +506,7 @@
   "android": {
     "src/third_party/android_tools":
       Var("chromium_git") + "/android_tools.git" +
-      "@fbd4205a1da1939ba1dc470b33cb5b3b1acf235d",
+      "@e91e44dc29517115794a72eea554616d067925ae",
 
     "src/third_party/aosp":
       "/trunk/deps/third_party/aosp@148330",
diff --git a/android_webview/common/aw_switches.cc b/android_webview/common/aw_switches.cc
index f309623..c3088a6 100644
--- a/android_webview/common/aw_switches.cc
+++ b/android_webview/common/aw_switches.cc
@@ -6,7 +6,4 @@
 
 namespace switches {
 
-const char kDisableRecordDocumentWorkaround[] =
-    "disable-record-document-workaround";
-
 }  // namespace switches
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContentsStatics.java b/android_webview/java/src/org/chromium/android_webview/AwContentsStatics.java
index 1d52ba8..aeec329 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContentsStatics.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContentsStatics.java
@@ -70,6 +70,10 @@
         return sUnreachableWebDataUrl;
     }
 
+    public static void setRecordFullDocument(boolean recordFullDocument) {
+        nativeSetRecordFullDocument(recordFullDocument);
+    }
+
     //--------------------------------------------------------------------------------------------
     //  Native methods
     //--------------------------------------------------------------------------------------------
@@ -77,4 +81,5 @@
     private static native void nativeSetDataReductionProxyKey(String key);
     private static native void nativeSetDataReductionProxyEnabled(boolean enabled);
     private static native String nativeGetUnreachableWebDataUrl();
+    private static native void nativeSetRecordFullDocument(boolean recordFullDocument);
 }
diff --git a/android_webview/lib/main/aw_main_delegate.cc b/android_webview/lib/main/aw_main_delegate.cc
index 224292f..1102806 100644
--- a/android_webview/lib/main/aw_main_delegate.cc
+++ b/android_webview/lib/main/aw_main_delegate.cc
@@ -8,7 +8,6 @@
 #include "android_webview/browser/browser_view_renderer.h"
 #include "android_webview/browser/gpu_memory_buffer_factory_impl.h"
 #include "android_webview/browser/scoped_allow_wait_for_legacy_web_view_api.h"
-#include "android_webview/common/aw_switches.h"
 #include "android_webview/lib/aw_browser_dependency_factory_impl.h"
 #include "android_webview/native/aw_quota_manager_bridge_impl.h"
 #include "android_webview/native/aw_web_contents_view_delegate.h"
@@ -77,9 +76,6 @@
   // WebRTC hardware decoding is not supported, internal bug 15075307
   cl->AppendSwitch(switches::kDisableWebRtcHWDecoding);
 
-  if (cl->HasSwitch(switches::kDisableRecordDocumentWorkaround))
-    content::SynchronousCompositor::DisableRecordFullLayer();
-
   return false;
 }
 
diff --git a/android_webview/native/aw_contents_statics.cc b/android_webview/native/aw_contents_statics.cc
index b1fdcbb..4fe0302 100644
--- a/android_webview/native/aw_contents_statics.cc
+++ b/android_webview/native/aw_contents_statics.cc
@@ -9,6 +9,7 @@
 #include "base/android/scoped_java_ref.h"
 #include "base/callback.h"
 #include "components/data_reduction_proxy/browser/data_reduction_proxy_settings.h"
+#include "content/public/browser/android/synchronous_compositor.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/common/url_constants.h"
 #include "jni/AwContentsStatics_jni.h"
@@ -70,6 +71,11 @@
              env, content::kUnreachableWebDataURL).Release();
 }
 
+// static
+void SetRecordFullDocument(JNIEnv* env, jclass, jboolean record_full_document) {
+  content::SynchronousCompositor::SetRecordFullDocument(record_full_document);
+}
+
 bool RegisterAwContentsStatics(JNIEnv* env) {
   return RegisterNativesImpl(env);
 }
diff --git a/ash/system/user/user_view.cc b/ash/system/user/user_view.cc
index ddfae38..40a3f48 100644
--- a/ash/system/user/user_view.cc
+++ b/ash/system/user/user_view.cc
@@ -174,10 +174,7 @@
 
   add_user_ = new views::View;
   add_user_->SetBorder(views::Border::CreateEmptyBorder(
-      kTrayPopupUserCardVerticalPadding,
-      kTrayPopupPaddingHorizontal - kTrayUserTileHoverBorderInset,
-      kTrayPopupUserCardVerticalPadding,
-      kTrayPopupPaddingHorizontal - kTrayUserTileHoverBorderInset));
+      0, kTrayUserTileHoverBorderInset, 0, 0));
 
   add_user_->SetLayoutManager(new views::BoxLayout(
       views::BoxLayout::kHorizontal, 0, 0, kTrayPopupPaddingBetweenItems));
diff --git a/ash/wm/overview/window_grid.cc b/ash/wm/overview/window_grid.cc
index 99ea37c..8275c97 100644
--- a/ash/wm/overview/window_grid.cc
+++ b/ash/wm/overview/window_grid.cc
@@ -136,7 +136,6 @@
       continue;
     (*iter)->AddObserver(this);
     observed_windows_.insert(*iter);
-    WindowSelectorItem* item = NULL;
 
     if ((*iter)->type() == ui::wm::WINDOW_TYPE_PANEL &&
         wm::GetWindowState(*iter)->panel_attached()) {
@@ -147,20 +146,12 @@
         window_list_.push_back(panels_item);
       }
       panels_item->AddWindow(*iter);
-      item = panels_item;
     } else {
-      item = new WindowSelectorWindow(*iter);
-      item->PrepareForOverview();
-      window_list_.push_back(item);
+      window_list_.push_back(new WindowSelectorWindow(*iter));
     }
   }
   if (window_list_.empty())
     return;
-
-  if (panels_item)
-    panels_item->PrepareForOverview();
-
-  PositionWindows(true);
 }
 
 WindowGrid::~WindowGrid() {
@@ -170,6 +161,13 @@
   }
 }
 
+void WindowGrid::PrepareForOverview() {
+  for (ScopedVector<WindowSelectorItem>::iterator iter = window_list_.begin();
+       iter != window_list_.end(); ++iter) {
+    (*iter)->PrepareForOverview();
+  }
+}
+
 void WindowGrid::PositionWindows(bool animate) {
   CHECK(!window_list_.empty());
 
diff --git a/ash/wm/overview/window_grid.h b/ash/wm/overview/window_grid.h
index fe4bf78..28af47c 100644
--- a/ash/wm/overview/window_grid.h
+++ b/ash/wm/overview/window_grid.h
@@ -51,6 +51,10 @@
              WindowSelector* window_selector);
   virtual ~WindowGrid();
 
+  // Prepares the windows in this grid for overview. This will restore all
+  // minimized windows and ensure they are visible.
+  void PrepareForOverview();
+
   // Positions all the windows in the grid.
   void PositionWindows(bool animate);
 
diff --git a/ash/wm/overview/window_selector.cc b/ash/wm/overview/window_selector.cc
index 467aca6..4c3930c 100644
--- a/ash/wm/overview/window_selector.cc
+++ b/ash/wm/overview/window_selector.cc
@@ -124,6 +124,15 @@
     grid_list_.push_back(grid.release());
   }
 
+  // Do not call PrepareForOverview until all items are added to window_list_ as
+  // we don't want to cause any window updates until all windows in overview
+  // are observed. See http://crbug.com/384495.
+  for (ScopedVector<WindowGrid>::iterator iter = grid_list_.begin();
+       iter != grid_list_.end(); ++iter) {
+    (*iter)->PrepareForOverview();
+    (*iter)->PositionWindows(true);
+  }
+
   DCHECK(!grid_list_.empty());
   UMA_HISTOGRAM_COUNTS_100("Ash.WindowSelector.Items", num_items_);
 
diff --git a/base/debug/tsan_suppressions.cc b/base/debug/tsan_suppressions.cc
index 8cf79fc..70ce21e 100644
--- a/base/debug/tsan_suppressions.cc
+++ b/base/debug/tsan_suppressions.cc
@@ -281,8 +281,6 @@
 
 // http://crbug.com/374135
 "race:media::AlsaWrapper::PcmWritei\n"
-"deadlock:media::AudioOutputDispatcherImpl::StopStream\n"
-"deadlock:media::AudioStreamHandler::AudioStreamContainer::OnMoreData\n"
 
 // False positive in libc's tzset_internal, http://crbug.com/379738.
 "race:tzset_internal\n"
diff --git a/base/memory/discardable_memory.h b/base/memory/discardable_memory.h
index 9189b5e..d16ed3e 100644
--- a/base/memory/discardable_memory.h
+++ b/base/memory/discardable_memory.h
@@ -97,6 +97,16 @@
   // Create a DiscardableMemory instance with preferred type and |size|.
   static scoped_ptr<DiscardableMemory> CreateLockedMemory(size_t size);
 
+  // Discardable memory implementations might allow an elevated usage level
+  // while in frequent use. Call this to have the usage reduced to the base
+  // level. Returns true if there's no need to call this again until
+  // memory instances have been used. This indicates that all discardable
+  // memory implementations have reduced usage to the base level or below.
+  // Note: calling this too often or while discardable memory is in frequent
+  // use can hurt performance, whereas calling it too infrequently can result
+  // in memory bloat.
+  static bool ReduceMemoryUsage();
+
   // Locks the memory so that it will not be purged by the system. Returns
   // DISCARDABLE_MEMORY_LOCK_STATUS_SUCCESS on success. If the return value is
   // DISCARDABLE_MEMORY_LOCK_STATUS_FAILED then this object should be
diff --git a/base/memory/discardable_memory_android.cc b/base/memory/discardable_memory_android.cc
index c3de3a3..33d3808 100644
--- a/base/memory/discardable_memory_android.cc
+++ b/base/memory/discardable_memory_android.cc
@@ -32,7 +32,10 @@
 // Holds the shared state used for allocations.
 struct SharedState {
   SharedState()
-      : manager(kAshmemMemoryLimit, kAshmemMemoryLimit),
+      : manager(kAshmemMemoryLimit,
+                kAshmemMemoryLimit,
+                kAshmemMemoryLimit,
+                TimeDelta::Max()),
         allocator(kAshmemAllocatorName,
                   GetOptimalAshmemRegionSizeForAllocator()) {}
 
@@ -54,6 +57,11 @@
 }
 
 // static
+bool DiscardableMemory::ReduceMemoryUsage() {
+  return internal::DiscardableMemoryEmulated::ReduceMemoryUsage();
+}
+
+// static
 void DiscardableMemory::GetSupportedTypes(
     std::vector<DiscardableMemoryType>* types) {
   const DiscardableMemoryType supported_types[] = {
diff --git a/base/memory/discardable_memory_emulated.cc b/base/memory/discardable_memory_emulated.cc
index 140fdb0..340a181 100644
--- a/base/memory/discardable_memory_emulated.cc
+++ b/base/memory/discardable_memory_emulated.cc
@@ -10,16 +10,19 @@
 namespace base {
 namespace {
 
-// This is admittedly pretty magical. It's approximately enough memory for four
-// 2560x1600 images.
-const size_t kEmulatedMemoryLimit = 64 * 1024 * 1024;
-const size_t kEmulatedBytesToKeepUnderModeratePressure =
-    kEmulatedMemoryLimit / 4;
+// This is admittedly pretty magical.
+const size_t kEmulatedMemoryLimit = 512 * 1024 * 1024;
+const size_t kEmulatedSoftMemoryLimit = 32 * 1024 * 1024;
+const size_t kEmulatedBytesToKeepUnderModeratePressure = 4 * 1024 * 1024;
+const size_t kEmulatedHardMemoryLimitExpirationTimeMs = 1000;
 
 struct SharedState {
   SharedState()
       : manager(kEmulatedMemoryLimit,
-                kEmulatedBytesToKeepUnderModeratePressure) {}
+                kEmulatedSoftMemoryLimit,
+                kEmulatedBytesToKeepUnderModeratePressure,
+                TimeDelta::FromMilliseconds(
+                    kEmulatedHardMemoryLimitExpirationTimeMs)) {}
 
   internal::DiscardableMemoryManager manager;
 };
@@ -52,6 +55,11 @@
 }
 
 // static
+bool DiscardableMemoryEmulated::ReduceMemoryUsage() {
+  return g_shared_state.Pointer()->manager.ReduceMemoryUsage();
+}
+
+// static
 void DiscardableMemoryEmulated::PurgeForTesting() {
   g_shared_state.Pointer()->manager.PurgeAll();
 }
diff --git a/base/memory/discardable_memory_emulated.h b/base/memory/discardable_memory_emulated.h
index 3242245..64e9951 100644
--- a/base/memory/discardable_memory_emulated.h
+++ b/base/memory/discardable_memory_emulated.h
@@ -21,6 +21,7 @@
 
   static void RegisterMemoryPressureListeners();
   static void UnregisterMemoryPressureListeners();
+  static bool ReduceMemoryUsage();
 
   static void PurgeForTesting();
 
diff --git a/base/memory/discardable_memory_linux.cc b/base/memory/discardable_memory_linux.cc
index fbd496d..b9342e9 100644
--- a/base/memory/discardable_memory_linux.cc
+++ b/base/memory/discardable_memory_linux.cc
@@ -21,6 +21,11 @@
 }
 
 // static
+bool DiscardableMemory::ReduceMemoryUsage() {
+  return internal::DiscardableMemoryEmulated::ReduceMemoryUsage();
+}
+
+// static
 void DiscardableMemory::GetSupportedTypes(
     std::vector<DiscardableMemoryType>* types) {
   const DiscardableMemoryType supported_types[] = {
diff --git a/base/memory/discardable_memory_mac.cc b/base/memory/discardable_memory_mac.cc
index b2982fc..b2184e7 100644
--- a/base/memory/discardable_memory_mac.cc
+++ b/base/memory/discardable_memory_mac.cc
@@ -25,7 +25,11 @@
 const size_t kMacMemoryLimit = 512 * 1024 * 1024;
 
 struct SharedState {
-  SharedState() : manager(kMacMemoryLimit, kMacMemoryLimit) {}
+  SharedState()
+      : manager(kMacMemoryLimit,
+                kMacMemoryLimit,
+                kMacMemoryLimit,
+                TimeDelta::Max()) {}
 
   internal::DiscardableMemoryManager manager;
 };
@@ -166,6 +170,11 @@
 }
 
 // static
+bool DiscardableMemory::ReduceMemoryUsage() {
+  return internal::DiscardableMemoryEmulated::ReduceMemoryUsage();
+}
+
+// static
 void DiscardableMemory::GetSupportedTypes(
     std::vector<DiscardableMemoryType>* types) {
   const DiscardableMemoryType supported_types[] = {
diff --git a/base/memory/discardable_memory_manager.cc b/base/memory/discardable_memory_manager.cc
index 49ecc48..d976da2 100644
--- a/base/memory/discardable_memory_manager.cc
+++ b/base/memory/discardable_memory_manager.cc
@@ -17,13 +17,17 @@
 
 DiscardableMemoryManager::DiscardableMemoryManager(
     size_t memory_limit,
-    size_t bytes_to_keep_under_moderate_pressure)
+    size_t soft_memory_limit,
+    size_t bytes_to_keep_under_moderate_pressure,
+    TimeDelta hard_memory_limit_expiration_time)
     : allocations_(AllocationMap::NO_AUTO_EVICT),
-      bytes_allocated_(0),
+      bytes_allocated_(0u),
       memory_limit_(memory_limit),
+      soft_memory_limit_(soft_memory_limit),
       bytes_to_keep_under_moderate_pressure_(
-          bytes_to_keep_under_moderate_pressure) {
-  BytesAllocatedChanged();
+          bytes_to_keep_under_moderate_pressure),
+      hard_memory_limit_expiration_time_(hard_memory_limit_expiration_time) {
+  BytesAllocatedChanged(bytes_allocated_);
 }
 
 DiscardableMemoryManager::~DiscardableMemoryManager() {
@@ -48,7 +52,13 @@
 void DiscardableMemoryManager::SetMemoryLimit(size_t bytes) {
   AutoLock lock(lock_);
   memory_limit_ = bytes;
-  EnforcePolicyWithLockAcquired();
+  PurgeIfNotUsedSinceTimestampUntilUsageIsWithinLimitWithLockAcquired(
+      Now(), memory_limit_);
+}
+
+void DiscardableMemoryManager::SetSoftMemoryLimit(size_t bytes) {
+  AutoLock lock(lock_);
+  soft_memory_limit_ = bytes;
 }
 
 void DiscardableMemoryManager::SetBytesToKeepUnderModeratePressure(
@@ -57,6 +67,16 @@
   bytes_to_keep_under_moderate_pressure_ = bytes;
 }
 
+void DiscardableMemoryManager::SetHardMemoryLimitExpirationTime(
+    TimeDelta hard_memory_limit_expiration_time) {
+  AutoLock lock(lock_);
+  hard_memory_limit_expiration_time_ = hard_memory_limit_expiration_time;
+}
+
+bool DiscardableMemoryManager::ReduceMemoryUsage() {
+  return PurgeIfNotUsedSinceHardLimitCutoffUntilWithinSoftMemoryLimit();
+}
+
 void DiscardableMemoryManager::Register(Allocation* allocation, size_t bytes) {
   AutoLock lock(lock_);
   // A registered memory listener is currently required. This DCHECK can be
@@ -78,7 +98,7 @@
     size_t bytes_purgable = info.bytes;
     DCHECK_LE(bytes_purgable, bytes_allocated_);
     bytes_allocated_ -= bytes_purgable;
-    BytesAllocatedChanged();
+    BytesAllocatedChanged(bytes_allocated_);
   }
   allocations_.Erase(it);
 }
@@ -95,6 +115,7 @@
   if (!info->bytes)
     return false;
 
+  TimeTicks now = Now();
   size_t bytes_required = info->purgable ? 0u : info->bytes;
 
   if (memory_limit_) {
@@ -102,7 +123,8 @@
     if (bytes_required < memory_limit_)
       limit = memory_limit_ - bytes_required;
 
-    PurgeLRUWithLockAcquiredUntilUsageIsWithin(limit);
+    PurgeIfNotUsedSinceTimestampUntilUsageIsWithinLimitWithLockAcquired(now,
+                                                                        limit);
   }
 
   // Check for overflow.
@@ -111,9 +133,10 @@
 
   *purged = !allocation->AllocateAndAcquireLock();
   info->purgable = false;
+  info->last_usage = now;
   if (bytes_required) {
     bytes_allocated_ += bytes_required;
-    BytesAllocatedChanged();
+    BytesAllocatedChanged(bytes_allocated_);
   }
   return true;
 }
@@ -126,14 +149,18 @@
   DCHECK(it != allocations_.end());
   AllocationInfo* info = &it->second;
 
+  TimeTicks now = Now();
   allocation->ReleaseLock();
   info->purgable = true;
-  EnforcePolicyWithLockAcquired();
+  info->last_usage = now;
+
+  PurgeIfNotUsedSinceTimestampUntilUsageIsWithinLimitWithLockAcquired(
+      now, memory_limit_);
 }
 
 void DiscardableMemoryManager::PurgeAll() {
   AutoLock lock(lock_);
-  PurgeLRUWithLockAcquiredUntilUsageIsWithin(0);
+  PurgeIfNotUsedSinceTimestampUntilUsageIsWithinLimitWithLockAcquired(Now(), 0);
 }
 
 bool DiscardableMemoryManager::IsRegisteredForTest(
@@ -159,7 +186,7 @@
     MemoryPressureListener::MemoryPressureLevel pressure_level) {
   switch (pressure_level) {
     case MemoryPressureListener::MEMORY_PRESSURE_MODERATE:
-      Purge();
+      PurgeUntilWithinBytesToKeepUnderModeratePressure();
       return;
     case MemoryPressureListener::MEMORY_PRESSURE_CRITICAL:
       PurgeAll();
@@ -169,21 +196,28 @@
   NOTREACHED();
 }
 
-void DiscardableMemoryManager::Purge() {
+void
+DiscardableMemoryManager::PurgeUntilWithinBytesToKeepUnderModeratePressure() {
   AutoLock lock(lock_);
 
-  PurgeLRUWithLockAcquiredUntilUsageIsWithin(
-      bytes_to_keep_under_moderate_pressure_);
+  PurgeIfNotUsedSinceTimestampUntilUsageIsWithinLimitWithLockAcquired(
+      Now(), bytes_to_keep_under_moderate_pressure_);
 }
 
-void DiscardableMemoryManager::PurgeLRUWithLockAcquiredUntilUsageIsWithin(
-    size_t limit) {
-  TRACE_EVENT1(
-      "base",
-      "DiscardableMemoryManager::PurgeLRUWithLockAcquiredUntilUsageIsWithin",
-      "limit",
-      limit);
+bool DiscardableMemoryManager::
+    PurgeIfNotUsedSinceHardLimitCutoffUntilWithinSoftMemoryLimit() {
+  AutoLock lock(lock_);
 
+  PurgeIfNotUsedSinceTimestampUntilUsageIsWithinLimitWithLockAcquired(
+      Now() - hard_memory_limit_expiration_time_, soft_memory_limit_);
+
+  return bytes_allocated_ <= soft_memory_limit_;
+}
+
+void DiscardableMemoryManager::
+    PurgeIfNotUsedSinceTimestampUntilUsageIsWithinLimitWithLockAcquired(
+        TimeTicks timestamp,
+        size_t limit) {
   lock_.AssertAcquired();
 
   size_t bytes_allocated_before_purging = bytes_allocated_;
@@ -195,7 +229,9 @@
 
     if (bytes_allocated_ <= limit)
       break;
-    if (!info->purgable)
+
+    bool purgable = info->purgable && info->last_usage <= timestamp;
+    if (!purgable)
       continue;
 
     size_t bytes_purgable = info->bytes;
@@ -206,19 +242,21 @@
   }
 
   if (bytes_allocated_ != bytes_allocated_before_purging)
-    BytesAllocatedChanged();
+    BytesAllocatedChanged(bytes_allocated_);
 }
 
-void DiscardableMemoryManager::EnforcePolicyWithLockAcquired() {
-  PurgeLRUWithLockAcquiredUntilUsageIsWithin(memory_limit_);
-}
-
-void DiscardableMemoryManager::BytesAllocatedChanged() const {
-  TRACE_COUNTER_ID1("base", "DiscardableMemoryUsage", this, bytes_allocated_);
+void DiscardableMemoryManager::BytesAllocatedChanged(
+    size_t new_bytes_allocated) const {
+  TRACE_COUNTER_ID1(
+      "base", "DiscardableMemoryUsage", this, new_bytes_allocated);
 
   static const char kDiscardableMemoryUsageKey[] = "dm-usage";
   base::debug::SetCrashKeyValue(kDiscardableMemoryUsageKey,
-                                Uint64ToString(bytes_allocated_));
+                                Uint64ToString(new_bytes_allocated));
+}
+
+TimeTicks DiscardableMemoryManager::Now() const {
+  return TimeTicks::Now();
 }
 
 }  // namespace internal
diff --git a/base/memory/discardable_memory_manager.h b/base/memory/discardable_memory_manager.h
index 8297b81..a61f141 100644
--- a/base/memory/discardable_memory_manager.h
+++ b/base/memory/discardable_memory_manager.h
@@ -10,6 +10,7 @@
 #include "base/containers/mru_cache.h"
 #include "base/memory/memory_pressure_listener.h"
 #include "base/synchronization/lock.h"
+#include "base/time/time.h"
 
 namespace base {
 namespace internal {
@@ -68,8 +69,10 @@
   typedef DiscardableMemoryManagerAllocation Allocation;
 
   DiscardableMemoryManager(size_t memory_limit,
-                           size_t bytes_to_keep_under_moderate_pressure);
-  ~DiscardableMemoryManager();
+                           size_t soft_memory_limit,
+                           size_t bytes_to_keep_under_moderate_pressure,
+                           TimeDelta hard_memory_limit_expiration_time);
+  virtual ~DiscardableMemoryManager();
 
   // Call this to register memory pressure listener. Must be called on a thread
   // with a MessageLoop current.
@@ -79,13 +82,25 @@
   void UnregisterMemoryPressureListener();
 
   // The maximum number of bytes of memory that may be allocated before we force
-  // a purge. If this amount is zero, it is interpreted as having no limit at
-  // all.
+  // a purge.
   void SetMemoryLimit(size_t bytes);
 
+  // The number of bytes of memory that may be allocated but unused for the hard
+  // limit expiration time without getting purged.
+  void SetSoftMemoryLimit(size_t bytes);
+
   // Sets the amount of memory to keep when we're under moderate pressure.
   void SetBytesToKeepUnderModeratePressure(size_t bytes);
 
+  // Sets the memory usage cutoff time for hard memory limit.
+  void SetHardMemoryLimitExpirationTime(
+      TimeDelta hard_memory_limit_expiration_time);
+
+  // This will attempt to reduce memory footprint until within soft memory
+  // limit. Returns true if there's no need to call this again until allocations
+  // have been used.
+  bool ReduceMemoryUsage();
+
   // Adds the given allocation to the manager's collection.
   void Register(Allocation* allocation, size_t bytes);
 
@@ -122,6 +137,7 @@
 
     const size_t bytes;
     bool purgable;
+    TimeTicks last_usage;
   };
   typedef HashingMRUCache<Allocation*, AllocationInfo> AllocationMap;
 
@@ -129,20 +145,28 @@
   void OnMemoryPressure(
       MemoryPressureListener::MemoryPressureLevel pressure_level);
 
-  // Purges memory until usage is within
+  // Purges memory until usage is less or equal to
   // |bytes_to_keep_under_moderate_pressure_|.
-  void Purge();
+  void PurgeUntilWithinBytesToKeepUnderModeratePressure();
 
-  // Purges least recently used memory until usage is less or equal to |limit|.
+  // Purges memory not used since |hard_memory_limit_expiration_time_| before
+  // "right now" until usage is less or equal to |soft_memory_limit_|.
+  // Returns true if total amount of memory is less or equal to soft memory
+  // limit.
+  bool PurgeIfNotUsedSinceHardLimitCutoffUntilWithinSoftMemoryLimit();
+
+  // Purges memory that has not been used since |timestamp| until usage is less
+  // or equal to |limit|.
   // Caller must acquire |lock_| prior to calling this function.
-  void PurgeLRUWithLockAcquiredUntilUsageIsWithin(size_t limit);
-
-  // Ensures that we don't allocate beyond our memory limit. Caller must acquire
-  // |lock_| prior to calling this function.
-  void EnforcePolicyWithLockAcquired();
+  void PurgeIfNotUsedSinceTimestampUntilUsageIsWithinLimitWithLockAcquired(
+      TimeTicks timestamp,
+      size_t limit);
 
   // Called when a change to |bytes_allocated_| has been made.
-  void BytesAllocatedChanged() const;
+  void BytesAllocatedChanged(size_t new_bytes_allocated) const;
+
+  // Virtual for tests.
+  virtual TimeTicks Now() const;
 
   // Needs to be held when accessing members.
   mutable Lock lock_;
@@ -156,6 +180,11 @@
   // The maximum number of bytes of memory that may be allocated.
   size_t memory_limit_;
 
+  // The number of bytes of memory that may be allocated but not used for
+  // |hard_memory_limit_expiration_time_| amount of time when receiving an idle
+  // notification.
+  size_t soft_memory_limit_;
+
   // Under moderate memory pressure, we will purge memory until usage is within
   // this limit.
   size_t bytes_to_keep_under_moderate_pressure_;
@@ -164,6 +193,10 @@
   // pressure.
   scoped_ptr<MemoryPressureListener> memory_pressure_listener_;
 
+  // Amount of time it takes for an allocation to become affected by
+  // |soft_memory_limit_|.
+  TimeDelta hard_memory_limit_expiration_time_;
+
   DISALLOW_COPY_AND_ASSIGN(DiscardableMemoryManager);
 };
 
diff --git a/base/memory/discardable_memory_manager_unittest.cc b/base/memory/discardable_memory_manager_unittest.cc
index 8b08cf6..ef5739a 100644
--- a/base/memory/discardable_memory_manager_unittest.cc
+++ b/base/memory/discardable_memory_manager_unittest.cc
@@ -45,13 +45,30 @@
 // Tests can assume that the default limit is at least 1024. Tests that rely on
 // something else needs to explicit set the limit.
 const size_t kDefaultMemoryLimit = 1024;
+const size_t kDefaultSoftMemoryLimit = kDefaultMemoryLimit;
 const size_t kDefaultBytesToKeepUnderModeratePressure = kDefaultMemoryLimit;
 
+class TestDiscardableMemoryManagerImpl
+    : public internal::DiscardableMemoryManager {
+ public:
+  TestDiscardableMemoryManagerImpl()
+      : DiscardableMemoryManager(kDefaultMemoryLimit,
+                                 kDefaultSoftMemoryLimit,
+                                 kDefaultBytesToKeepUnderModeratePressure,
+                                 TimeDelta::Max()) {}
+
+  void SetNow(TimeTicks now) { now_ = now; }
+
+ private:
+  // Overriden from internal::DiscardableMemoryManager:
+  virtual TimeTicks Now() const OVERRIDE { return now_; }
+
+  TimeTicks now_;
+};
+
 class DiscardableMemoryManagerTestBase {
  public:
-  DiscardableMemoryManagerTestBase()
-      : manager_(kDefaultMemoryLimit,
-                 kDefaultBytesToKeepUnderModeratePressure) {
+  DiscardableMemoryManagerTestBase() {
     manager_.RegisterMemoryPressureListener();
   }
 
@@ -66,10 +83,16 @@
 
   void SetMemoryLimit(size_t bytes) { manager_.SetMemoryLimit(bytes); }
 
+  void SetSoftMemoryLimit(size_t bytes) { manager_.SetSoftMemoryLimit(bytes); }
+
   void SetBytesToKeepUnderModeratePressure(size_t bytes) {
     manager_.SetBytesToKeepUnderModeratePressure(bytes);
   }
 
+  void SetHardMemoryLimitExpirationTime(TimeDelta time) {
+    manager_.SetHardMemoryLimitExpirationTime(time);
+  }
+
   void Register(TestAllocationImpl* allocation, size_t bytes) {
     manager_.Register(allocation, bytes);
   }
@@ -102,9 +125,13 @@
     return manager_.CanBePurgedForTest(allocation);
   }
 
+  void SetNow(TimeTicks now) { manager_.SetNow(now); }
+
+  bool ReduceMemoryUsage() { return manager_.ReduceMemoryUsage(); }
+
  private:
   MessageLoopForIO message_loop_;
-  internal::DiscardableMemoryManager manager_;
+  TestDiscardableMemoryManagerImpl manager_;
 };
 
 class DiscardableMemoryManagerTest : public DiscardableMemoryManagerTestBase,
@@ -392,6 +419,51 @@
   EXPECT_EQ(0u, BytesAllocated());
 }
 
+TEST_F(DiscardableMemoryManagerTest, ReduceMemoryUsage) {
+  SetMemoryLimit(3072);
+  SetSoftMemoryLimit(1024);
+  SetHardMemoryLimitExpirationTime(TimeDelta::FromInternalValue(1));
+
+  size_t size = 1024;
+  TestAllocationImpl allocation[3];
+  RegisterAndLock(&allocation[0], size);
+  RegisterAndLock(&allocation[1], size);
+  RegisterAndLock(&allocation[2], size);
+  EXPECT_EQ(3072u, BytesAllocated());
+
+  // Above soft limit but nothing that can be purged.
+  EXPECT_FALSE(ReduceMemoryUsage());
+
+  SetNow(TimeTicks::FromInternalValue(0));
+  Unlock(&allocation[0]);
+
+  // Above soft limit but still nothing that can be purged as all unlocked
+  // allocations are within the hard limit cutoff time.
+  EXPECT_FALSE(ReduceMemoryUsage());
+
+  SetNow(TimeTicks::FromInternalValue(1));
+  Unlock(&allocation[1]);
+
+  // One unlocked allocation is no longer within the hard limit cutoff time. It
+  // should be purged and ReduceMemoryUsage() should return false as we're not
+  // yet within the soft memory limit.
+  EXPECT_FALSE(ReduceMemoryUsage());
+  EXPECT_EQ(2048u, BytesAllocated());
+
+  // One more unlocked allocation is no longer within the hard limit cutoff
+  // time. It should be purged and ReduceMemoryUsage() should return true as
+  // we're now within the soft memory limit.
+  SetNow(TimeTicks::FromInternalValue(2));
+  EXPECT_TRUE(ReduceMemoryUsage());
+  EXPECT_EQ(1024u, BytesAllocated());
+
+  Unlock(&allocation[2]);
+
+  Unregister(&allocation[0]);
+  Unregister(&allocation[1]);
+  Unregister(&allocation[2]);
+}
+
 class ThreadedDiscardableMemoryManagerTest
     : public DiscardableMemoryManagerTest {
  public:
diff --git a/base/memory/discardable_memory_win.cc b/base/memory/discardable_memory_win.cc
index fbd496d..b9342e9 100644
--- a/base/memory/discardable_memory_win.cc
+++ b/base/memory/discardable_memory_win.cc
@@ -21,6 +21,11 @@
 }
 
 // static
+bool DiscardableMemory::ReduceMemoryUsage() {
+  return internal::DiscardableMemoryEmulated::ReduceMemoryUsage();
+}
+
+// static
 void DiscardableMemory::GetSupportedTypes(
     std::vector<DiscardableMemoryType>* types) {
   const DiscardableMemoryType supported_types[] = {
diff --git a/base/sys_info_android.cc b/base/sys_info_android.cc
index def3870..8884e15 100644
--- a/base/sys_info_android.cc
+++ b/base/sys_info_android.cc
@@ -4,12 +4,54 @@
 
 #include "base/sys_info.h"
 
+#include <dlfcn.h>
 #include <sys/system_properties.h>
 
+#include "base/lazy_instance.h"
 #include "base/logging.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/stringprintf.h"
+#include "base/sys_info_internal.h"
+
+// TODO(rmcilroy): Update API level when 'L' gets an official API level.
+#if (__ANDROID_API__ >= 9999 /* 'L' */)
+
+namespace {
+
+typedef int (SystemPropertyGetFunction)(const char*, char*);
+
+SystemPropertyGetFunction* DynamicallyLoadRealSystemPropertyGet() {
+  // libc.so should already be open, get a handle to it.
+  void* handle = dlopen("libc.so", RTLD_NOLOAD);
+  if (!handle) {
+    LOG(FATAL) << "Cannot dlopen libc.so: " << dlerror();
+  }
+  SystemPropertyGetFunction* real_system_property_get =
+      reinterpret_cast<SystemPropertyGetFunction*>(
+          dlsym(handle, "__system_property_get"));
+  if (!real_system_property_get) {
+    LOG(FATAL) << "Cannot resolve __system_property_get(): " << dlerror();
+  }
+  return real_system_property_get;
+}
+
+static base::LazyInstance<base::internal::LazySysInfoValue<
+    SystemPropertyGetFunction*, DynamicallyLoadRealSystemPropertyGet> >::Leaky
+    g_lazy_real_system_property_get = LAZY_INSTANCE_INITIALIZER;
+
+}  // namespace
+
+// Android 'L' removes __system_property_get from the NDK, however it is still
+// a hidden symbol in libc. Until we remove all calls of __system_property_get
+// from Chrome we work around this by defining a weak stub here, which uses
+// dlsym to but ensures that Chrome uses the real system
+// implementatation when loaded.  http://crbug.com/392191.
+int __system_property_get(const char* name, char* value) {
+  return g_lazy_real_system_property_get.Get().value()(name, value);
+}
+
+#endif
 
 namespace {
 
diff --git a/build/android/gyp/generate_v14_compatible_resources.py b/build/android/gyp/generate_v14_compatible_resources.py
index 03874f0..1961622 100755
--- a/build/android/gyp/generate_v14_compatible_resources.py
+++ b/build/android/gyp/generate_v14_compatible_resources.py
@@ -281,9 +281,6 @@
   return options
 
 def GenerateV14Resources(res_dir, res_v14_dir, verify_only):
-  build_utils.DeleteDirectory(res_v14_dir)
-  build_utils.MakeDirectory(res_v14_dir)
-
   for name in os.listdir(res_dir):
     if not os.path.isdir(os.path.join(res_dir, name)):
       continue
@@ -337,8 +334,12 @@
 def main():
   options = ParseArgs()
 
-  GenerateV14Resources(
-      options.res_dir, options.res_v14_compatibility_dir, options.verify_only)
+  res_v14_dir = options.res_v14_compatibility_dir
+
+  build_utils.DeleteDirectory(res_v14_dir)
+  build_utils.MakeDirectory(res_v14_dir)
+
+  GenerateV14Resources(options.res_dir, res_v14_dir, options.verify_only)
 
   if options.stamp:
     build_utils.Touch(options.stamp)
diff --git a/build/android/gyp/proguard.py b/build/android/gyp/proguard.py
index 22000be..b27365b 100755
--- a/build/android/gyp/proguard.py
+++ b/build/android/gyp/proguard.py
@@ -20,7 +20,8 @@
   # the output.
   if os.path.exists(options.output_path):
     os.remove(options.output_path)
-  proguard_cmd = [options.proguard_path,
+  proguard_cmd = ['java', '-jar',
+                  options.proguard_path,
                   '-injars', injars,
                   '-outjars', outjars,
                   '-libraryjars', libraryjars,
diff --git a/build/android/pylib/constants.py b/build/android/pylib/constants.py
index cb026da..a41438c 100644
--- a/build/android/pylib/constants.py
+++ b/build/android/pylib/constants.py
@@ -133,8 +133,8 @@
 
 SCREENSHOTS_DIR = os.path.join(DIR_SOURCE_ROOT, 'out_screenshots')
 
-ANDROID_SDK_VERSION = 19
-ANDROID_SDK_BUILD_TOOLS_VERSION = '19.0.0'
+ANDROID_SDK_VERSION = 20
+ANDROID_SDK_BUILD_TOOLS_VERSION = '20.0.0'
 ANDROID_SDK_ROOT = os.path.join(DIR_SOURCE_ROOT,
                                 'third_party/android_tools/sdk')
 ANDROID_SDK_TOOLS = os.path.join(ANDROID_SDK_ROOT,
diff --git a/build/android/pylib/instrumentation/test_jar.py b/build/android/pylib/instrumentation/test_jar.py
index ee781c5..183ea86 100644
--- a/build/android/pylib/instrumentation/test_jar.py
+++ b/build/android/pylib/instrumentation/test_jar.py
@@ -42,10 +42,10 @@
       raise Exception('%s not found, please build it' % jar_path)
 
     self._PROGUARD_PATH = os.path.join(constants.ANDROID_SDK_ROOT,
-                                       'tools/proguard/bin/proguard.sh')
+                                       'tools/proguard/lib/proguard.jar')
     if not os.path.exists(self._PROGUARD_PATH):
       self._PROGUARD_PATH = os.path.join(os.environ['ANDROID_BUILD_TOP'],
-                                         'external/proguard/bin/proguard.sh')
+                                         'external/proguard/lib/proguard.jar')
     self._jar_path = jar_path
     self._annotation_map = collections.defaultdict(list)
     self._pickled_proguard_name = self._jar_path + '-proguard.pickle'
@@ -71,7 +71,8 @@
     return False
 
   def _GetProguardData(self):
-    proguard_output = cmd_helper.GetCmdOutput([self._PROGUARD_PATH,
+    proguard_output = cmd_helper.GetCmdOutput(['java', '-jar',
+                                               self._PROGUARD_PATH,
                                                '-injars', self._jar_path,
                                                '-dontshrink',
                                                '-dontoptimize',
diff --git a/build/common.gypi b/build/common.gypi
index e67291f..5e14a3b 100644
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -1609,12 +1609,11 @@
             # they're passed to ant which uses a different relative path from
             # gyp.
             'android_ndk_root%': '<!(cd <(DEPTH) && pwd -P)/third_party/android_tools/ndk/',
-            'android_ndk_experimental_root%': '<!(cd <(DEPTH) && pwd -P)/third_party/android_tools/ndk_experimental/',
             'android_sdk_root%': '<!(cd <(DEPTH) && pwd -P)/third_party/android_tools/sdk/',
             'android_host_arch%': '<!(uname -m)',
             # Android API-level of the SDK used for compilation.
-            'android_sdk_version%': '19',
-            'android_sdk_build_tools_version%': '19.0.0',
+            'android_sdk_version%': '20',
+            'android_sdk_build_tools_version%': '20.0.0',
             'host_os%': "<!(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')",
           },
           # Copy conditionally-set variables out one scope.
@@ -1641,11 +1640,10 @@
             }],
             ['target_arch == "x64"', {
               'android_app_abi%': 'x86_64',
-              'android_gdbserver%': '<(android_ndk_experimental_root)/prebuilt/android-x86_64/gdbserver/gdbserver',
-              'android_ndk_sysroot%': '<(android_ndk_experimental_root)/platforms/android-L/arch-x86_64',
+              'android_gdbserver%': '<(android_ndk_root)/prebuilt/android-x86_64/gdbserver/gdbserver',
+              'android_ndk_sysroot%': '<(android_ndk_root)/platforms/android-L/arch-x86_64',
               'android_ndk_lib_dir%': 'usr/lib64',
-              'android_toolchain%': '<(android_ndk_experimental_root)/toolchains/x86_64-4.9/prebuilt/<(host_os)-<(android_host_arch)/bin',
-              'android_stlport_root': '<(android_ndk_experimental_root)/sources/cxx-stl/stlport',
+              'android_toolchain%': '<(android_ndk_root)/toolchains/x86_64-4.9/prebuilt/<(host_os)-<(android_host_arch)/bin',
             }],
             ['target_arch=="arm"', {
               'conditions': [
@@ -1662,11 +1660,10 @@
             }],
             ['target_arch == "arm64"', {
               'android_app_abi%': 'arm64-v8a',
-              'android_gdbserver%': '<(android_ndk_experimental_root)/prebuilt/android-arm64/gdbserver/gdbserver',
-              'android_ndk_sysroot%': '<(android_ndk_experimental_root)/platforms/android-L/arch-arm64',
+              'android_gdbserver%': '<(android_ndk_root)/prebuilt/android-arm64/gdbserver/gdbserver',
+              'android_ndk_sysroot%': '<(android_ndk_root)/platforms/android-L/arch-arm64',
               'android_ndk_lib_dir%': 'usr/lib',
-              'android_toolchain%': '<(android_ndk_experimental_root)/toolchains/aarch64-linux-android-4.9/prebuilt/<(host_os)-<(android_host_arch)/bin',
-              'android_stlport_root': '<(android_ndk_experimental_root)/sources/cxx-stl/stlport',
+              'android_toolchain%': '<(android_ndk_root)/toolchains/aarch64-linux-android-4.9/prebuilt/<(host_os)-<(android_host_arch)/bin',
             }],
             ['target_arch == "mipsel"', {
               'android_app_abi%': 'mips',
diff --git a/build/config/android/config.gni b/build/config/android/config.gni
index 1e3601d..819fe4d 100644
--- a/build/config/android/config.gni
+++ b/build/config/android/config.gni
@@ -9,6 +9,9 @@
     # Absolute directory containing the Android source code.
     android_src = ""
 
+    android_sdk_root = "//third_party/android_tools/sdk"
+    android_sdk_version = "20"
+
     # This is set when building the Android WebView inside the Android build
     # system, using the 'android' gyp backend. The WebView code is still built
     # when this is unset, but builds using the normal chromium build system.
@@ -46,12 +49,18 @@
   # than just the current one) since these are needed by the Android toolchain
   # file to define toolchains for all possible targets in one pass.
 
+  android_sdk = "${android_sdk_root}/platforms/android-${android_sdk_version}"
+
   # Path to the Android NDK and SDK.
   android_ndk_root = "//third_party/android_tools/ndk"
-  android_sdk_root = "//third_party/android_tools/sdk"
+
+  android_sdk = "${android_sdk_root}/platforms/android-${android_sdk_version}"
+
+  android_sdk_tools = "${android_sdk_root}/tools"
+  android_sdk_build_tools = "${android_sdk_root}/build-tools/20.0.0"
 
   # Path to the SDK's android.jar
-  android_sdk_jar = "$android_sdk_root/platforms/android-19/android.jar"
+  android_sdk_jar = "$android_sdk/android.jar"
 
   # Subdirectories inside android_ndk_root that contain the sysroot for the
   # associated platform.
@@ -76,7 +85,7 @@
   } else if (cpu_arch == "arm") {
     android_libgcc_file =
       "$arm_android_toolchain_root/lib/gcc/arm-linux-androideabi/${_android_toolchain_version}/libgcc.a"
-  } else if (cpu_arch == "mips") {
+  } else if (cpu_arch == "mipsel") {
     android_libgcc_file =
       "$mips_android_toolchain_root/lib/gcc/mipsel-linux-android/${_android_toolchain_version}/libgcc.a"
   } else {
diff --git a/build/java.gypi b/build/java.gypi
index 641dc77..205f746 100644
--- a/build/java.gypi
+++ b/build/java.gypi
@@ -193,7 +193,7 @@
           'action_name': 'proguard_<(_target_name)',
           'message': 'Proguard preprocessing <(_target_name) jar',
           'inputs': [
-            '<(android_sdk_root)/tools/proguard/bin/proguard.sh',
+            '<(android_sdk_root)/tools/proguard/lib/proguard.jar',
             '<(DEPTH)/build/android/gyp/util/build_utils.py',
             '<(DEPTH)/build/android/gyp/proguard.py',
             '<(javac_jar_path)',
@@ -204,7 +204,7 @@
           ],
           'action': [
             'python', '<(DEPTH)/build/android/gyp/proguard.py',
-            '--proguard-path=<(android_sdk_root)/tools/proguard/bin/proguard.sh',
+            '--proguard-path=<(android_sdk_root)/tools/proguard/lib/proguard.jar',
             '--input-path=<(javac_jar_path)',
             '--output-path=<(jar_path)',
             '--proguard-config=<(proguard_config)',
diff --git a/build/java_apk.gypi b/build/java_apk.gypi
index 92c8cfa..bef0811 100644
--- a/build/java_apk.gypi
+++ b/build/java_apk.gypi
@@ -495,7 +495,7 @@
 
         '--proguard-file', '<(generated_proguard_file)',
 
-        '--resource-dir', '<(resource_dir)',
+        '--resource-dirs', '<(resource_dir)',
         '--resource-zip-out', '<(resource_zip_path)',
 
         '--R-dir', '<(intermediate_dir)/gen',
diff --git a/build/java_prebuilt.gypi b/build/java_prebuilt.gypi
index 5a86775..a3a8cc0 100644
--- a/build/java_prebuilt.gypi
+++ b/build/java_prebuilt.gypi
@@ -56,7 +56,7 @@
           'action_name': 'proguard_<(_target_name)',
           'message': 'Proguard preprocessing <(_target_name) jar',
           'inputs': [
-            '<(android_sdk_root)/tools/proguard/bin/proguard.sh',
+            '<(android_sdk_root)/tools/proguard/lib/proguard.jar',
             '<(DEPTH)/build/android/gyp/util/build_utils.py',
             '<(DEPTH)/build/android/gyp/proguard.py',
             '<(jar_path)',
@@ -67,7 +67,7 @@
           ],
           'action': [
             'python', '<(DEPTH)/build/android/gyp/proguard.py',
-            '--proguard-path=<(android_sdk_root)/tools/proguard/bin/proguard.sh',
+            '--proguard-path=<(android_sdk_root)/tools/proguard/lib/proguard.jar',
             '--input-path=<(jar_path)',
             '--output-path=<(dex_input_jar_path)',
             '--proguard-config=<(proguard_config)',
diff --git a/build/util/LASTCHANGE b/build/util/LASTCHANGE
index dc5eb20..af4f2f7 100644
--- a/build/util/LASTCHANGE
+++ b/build/util/LASTCHANGE
@@ -1 +1 @@
-LASTCHANGE=283208
+LASTCHANGE=284645
diff --git a/build/util/LASTCHANGE.blink b/build/util/LASTCHANGE.blink
index 2efb4f3..e37d81a 100644
--- a/build/util/LASTCHANGE.blink
+++ b/build/util/LASTCHANGE.blink
@@ -1 +1 @@
-LASTCHANGE=178179
+LASTCHANGE=178617
diff --git a/chrome/VERSION b/chrome/VERSION
index 326364c..5d4cbde 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=37
 MINOR=0
 BUILD=2062
-PATCH=21
+PATCH=34
diff --git a/chrome/android/java/res/drawable-hdpi/dismiss.png b/chrome/android/java/res/drawable-hdpi/dismiss.png
deleted file mode 100644
index 8742b9a..0000000
--- a/chrome/android/java/res/drawable-hdpi/dismiss.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_autofill.png b/chrome/android/java/res/drawable-hdpi/infobar_autofill.png
deleted file mode 100644
index 25c667e..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_autofill.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_autofill_cc.png b/chrome/android/java/res/drawable-hdpi/infobar_autofill_cc.png
new file mode 100644
index 0000000..9337356
--- /dev/null
+++ b/chrome/android/java/res/drawable-hdpi/infobar_autofill_cc.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_autologin.png b/chrome/android/java/res/drawable-hdpi/infobar_autologin.png
deleted file mode 100644
index ae77a5e7..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_autologin.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_blocked_popups.png b/chrome/android/java/res/drawable-hdpi/infobar_blocked_popups.png
index 02c265b..09bf522 100644
--- a/chrome/android/java/res/drawable-hdpi/infobar_blocked_popups.png
+++ b/chrome/android/java/res/drawable-hdpi/infobar_blocked_popups.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_button_normal_floating_enabled.9.png b/chrome/android/java/res/drawable-hdpi/infobar_button_normal_floating_enabled.9.png
deleted file mode 100644
index 3bbce22..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_button_normal_floating_enabled.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_button_normal_floating_pressed.9.png b/chrome/android/java/res/drawable-hdpi/infobar_button_normal_floating_pressed.9.png
deleted file mode 100644
index 67c3bbc..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_button_normal_floating_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_button_warning_floating_enabled.9.png b/chrome/android/java/res/drawable-hdpi/infobar_button_warning_floating_enabled.9.png
deleted file mode 100644
index 8fbc7f8..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_button_warning_floating_enabled.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_button_warning_floating_pressed.9.png b/chrome/android/java/res/drawable-hdpi/infobar_button_warning_floating_pressed.9.png
deleted file mode 100644
index 9e64e67..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_button_warning_floating_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_camera.png b/chrome/android/java/res/drawable-hdpi/infobar_camera.png
index 3f224b1..c0e332d 100644
--- a/chrome/android/java/res/drawable-hdpi/infobar_camera.png
+++ b/chrome/android/java/res/drawable-hdpi/infobar_camera.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_close_button.png b/chrome/android/java/res/drawable-hdpi/infobar_close_button.png
new file mode 100644
index 0000000..fa76f86
--- /dev/null
+++ b/chrome/android/java/res/drawable-hdpi/infobar_close_button.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_cookie.png b/chrome/android/java/res/drawable-hdpi/infobar_cookie.png
deleted file mode 100644
index fa89316..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_cookie.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_desktop_notifications.png b/chrome/android/java/res/drawable-hdpi/infobar_desktop_notifications.png
deleted file mode 100644
index 3cc46eb..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_desktop_notifications.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_didyoumean.png b/chrome/android/java/res/drawable-hdpi/infobar_didyoumean.png
deleted file mode 100644
index da32721..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_didyoumean.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_geolocation.png b/chrome/android/java/res/drawable-hdpi/infobar_geolocation.png
index f687555..15ad919 100644
--- a/chrome/android/java/res/drawable-hdpi/infobar_geolocation.png
+++ b/chrome/android/java/res/drawable-hdpi/infobar_geolocation.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_microphone.png b/chrome/android/java/res/drawable-hdpi/infobar_microphone.png
index f9f1df6..fd1c9e7 100644
--- a/chrome/android/java/res/drawable-hdpi/infobar_microphone.png
+++ b/chrome/android/java/res/drawable-hdpi/infobar_microphone.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_midi.png b/chrome/android/java/res/drawable-hdpi/infobar_midi.png
new file mode 100644
index 0000000..dffd240
--- /dev/null
+++ b/chrome/android/java/res/drawable-hdpi/infobar_midi.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_multiple_downloads.png b/chrome/android/java/res/drawable-hdpi/infobar_multiple_downloads.png
index 34a68ec..03ea359 100644
--- a/chrome/android/java/res/drawable-hdpi/infobar_multiple_downloads.png
+++ b/chrome/android/java/res/drawable-hdpi/infobar_multiple_downloads.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_plugin.png b/chrome/android/java/res/drawable-hdpi/infobar_plugin.png
deleted file mode 100644
index 3c5fe51..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_plugin.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_plugin_crashed.png b/chrome/android/java/res/drawable-hdpi/infobar_plugin_crashed.png
deleted file mode 100644
index 4f9455e..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_plugin_crashed.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_protected_media_identifier.png b/chrome/android/java/res/drawable-hdpi/infobar_protected_media_identifier.png
new file mode 100644
index 0000000..52d38f5
--- /dev/null
+++ b/chrome/android/java/res/drawable-hdpi/infobar_protected_media_identifier.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_restore.png b/chrome/android/java/res/drawable-hdpi/infobar_restore.png
deleted file mode 100644
index 7eaeac2..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_restore.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_savepassword.png b/chrome/android/java/res/drawable-hdpi/infobar_savepassword.png
deleted file mode 100644
index ae77a5e7..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_savepassword.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_savepassword_autologin.png b/chrome/android/java/res/drawable-hdpi/infobar_savepassword_autologin.png
new file mode 100644
index 0000000..9c2c9a0
--- /dev/null
+++ b/chrome/android/java/res/drawable-hdpi/infobar_savepassword_autologin.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_theme.png b/chrome/android/java/res/drawable-hdpi/infobar_theme.png
deleted file mode 100644
index 05c5dbc..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_theme.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_translate.png b/chrome/android/java/res/drawable-hdpi/infobar_translate.png
index 9c6808c..e30f89b 100644
--- a/chrome/android/java/res/drawable-hdpi/infobar_translate.png
+++ b/chrome/android/java/res/drawable-hdpi/infobar_translate.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_update_uma.png b/chrome/android/java/res/drawable-hdpi/infobar_update_uma.png
deleted file mode 100644
index ea4761a..0000000
--- a/chrome/android/java/res/drawable-hdpi/infobar_update_uma.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/infobar_warning.png b/chrome/android/java/res/drawable-hdpi/infobar_warning.png
index af92bd9..911422b 100644
--- a/chrome/android/java/res/drawable-hdpi/infobar_warning.png
+++ b/chrome/android/java/res/drawable-hdpi/infobar_warning.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-hdpi/warning.png b/chrome/android/java/res/drawable-hdpi/warning.png
deleted file mode 100644
index 47a8895..0000000
--- a/chrome/android/java/res/drawable-hdpi/warning.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/dismiss.png b/chrome/android/java/res/drawable-mdpi/dismiss.png
deleted file mode 100644
index 9112451..0000000
--- a/chrome/android/java/res/drawable-mdpi/dismiss.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_autofill.png b/chrome/android/java/res/drawable-mdpi/infobar_autofill.png
deleted file mode 100644
index 29584d0..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_autofill.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_autofill_cc.png b/chrome/android/java/res/drawable-mdpi/infobar_autofill_cc.png
new file mode 100644
index 0000000..5244c65
--- /dev/null
+++ b/chrome/android/java/res/drawable-mdpi/infobar_autofill_cc.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_autologin.png b/chrome/android/java/res/drawable-mdpi/infobar_autologin.png
deleted file mode 100644
index e13101a..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_autologin.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_blocked_popups.png b/chrome/android/java/res/drawable-mdpi/infobar_blocked_popups.png
index a84d726..f6e45ef 100644
--- a/chrome/android/java/res/drawable-mdpi/infobar_blocked_popups.png
+++ b/chrome/android/java/res/drawable-mdpi/infobar_blocked_popups.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_button_normal_floating_enabled.9.png b/chrome/android/java/res/drawable-mdpi/infobar_button_normal_floating_enabled.9.png
deleted file mode 100644
index 7010897..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_button_normal_floating_enabled.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_button_normal_floating_pressed.9.png b/chrome/android/java/res/drawable-mdpi/infobar_button_normal_floating_pressed.9.png
deleted file mode 100644
index fdd092f..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_button_normal_floating_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_button_warning_floating_enabled.9.png b/chrome/android/java/res/drawable-mdpi/infobar_button_warning_floating_enabled.9.png
deleted file mode 100644
index a8a1bef..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_button_warning_floating_enabled.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_button_warning_floating_pressed.9.png b/chrome/android/java/res/drawable-mdpi/infobar_button_warning_floating_pressed.9.png
deleted file mode 100644
index f1b451e..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_button_warning_floating_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_camera.png b/chrome/android/java/res/drawable-mdpi/infobar_camera.png
index 3a38d8a..f6dbec5 100644
--- a/chrome/android/java/res/drawable-mdpi/infobar_camera.png
+++ b/chrome/android/java/res/drawable-mdpi/infobar_camera.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_close_button.png b/chrome/android/java/res/drawable-mdpi/infobar_close_button.png
new file mode 100644
index 0000000..b5a9dee
--- /dev/null
+++ b/chrome/android/java/res/drawable-mdpi/infobar_close_button.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_cookie.png b/chrome/android/java/res/drawable-mdpi/infobar_cookie.png
deleted file mode 100644
index 9c7adca..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_cookie.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_desktop_notifications.png b/chrome/android/java/res/drawable-mdpi/infobar_desktop_notifications.png
deleted file mode 100644
index 93ffe83..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_desktop_notifications.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_didyoumean.png b/chrome/android/java/res/drawable-mdpi/infobar_didyoumean.png
deleted file mode 100644
index a7dd276..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_didyoumean.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_geolocation.png b/chrome/android/java/res/drawable-mdpi/infobar_geolocation.png
index 2cb3419..7a21d16 100644
--- a/chrome/android/java/res/drawable-mdpi/infobar_geolocation.png
+++ b/chrome/android/java/res/drawable-mdpi/infobar_geolocation.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_microphone.png b/chrome/android/java/res/drawable-mdpi/infobar_microphone.png
index 1115fdf..ddaddc4 100644
--- a/chrome/android/java/res/drawable-mdpi/infobar_microphone.png
+++ b/chrome/android/java/res/drawable-mdpi/infobar_microphone.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_midi.png b/chrome/android/java/res/drawable-mdpi/infobar_midi.png
new file mode 100644
index 0000000..1969331
--- /dev/null
+++ b/chrome/android/java/res/drawable-mdpi/infobar_midi.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_multiple_downloads.png b/chrome/android/java/res/drawable-mdpi/infobar_multiple_downloads.png
index 7919e9f..3d1591f 100644
--- a/chrome/android/java/res/drawable-mdpi/infobar_multiple_downloads.png
+++ b/chrome/android/java/res/drawable-mdpi/infobar_multiple_downloads.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_plugin.png b/chrome/android/java/res/drawable-mdpi/infobar_plugin.png
deleted file mode 100644
index 890533d..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_plugin.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_plugin_crashed.png b/chrome/android/java/res/drawable-mdpi/infobar_plugin_crashed.png
deleted file mode 100644
index 8e11652..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_plugin_crashed.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_protected_media_identifier.png b/chrome/android/java/res/drawable-mdpi/infobar_protected_media_identifier.png
index c3d87d4..818b458 100644
--- a/chrome/android/java/res/drawable-mdpi/infobar_protected_media_identifier.png
+++ b/chrome/android/java/res/drawable-mdpi/infobar_protected_media_identifier.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_restore.png b/chrome/android/java/res/drawable-mdpi/infobar_restore.png
deleted file mode 100644
index 4280b95..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_restore.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_savepassword.png b/chrome/android/java/res/drawable-mdpi/infobar_savepassword.png
deleted file mode 100644
index e13101a..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_savepassword.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_savepassword_autologin.png b/chrome/android/java/res/drawable-mdpi/infobar_savepassword_autologin.png
new file mode 100644
index 0000000..b27576f
--- /dev/null
+++ b/chrome/android/java/res/drawable-mdpi/infobar_savepassword_autologin.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_theme.png b/chrome/android/java/res/drawable-mdpi/infobar_theme.png
deleted file mode 100644
index bd3469e..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_theme.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_translate.png b/chrome/android/java/res/drawable-mdpi/infobar_translate.png
index c10b0ec..ff92910 100644
--- a/chrome/android/java/res/drawable-mdpi/infobar_translate.png
+++ b/chrome/android/java/res/drawable-mdpi/infobar_translate.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_update_uma.png b/chrome/android/java/res/drawable-mdpi/infobar_update_uma.png
deleted file mode 100644
index 77c340d..0000000
--- a/chrome/android/java/res/drawable-mdpi/infobar_update_uma.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/infobar_warning.png b/chrome/android/java/res/drawable-mdpi/infobar_warning.png
index 5973a94..16a4069 100644
--- a/chrome/android/java/res/drawable-mdpi/infobar_warning.png
+++ b/chrome/android/java/res/drawable-mdpi/infobar_warning.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-mdpi/warning.png b/chrome/android/java/res/drawable-mdpi/warning.png
deleted file mode 100644
index 157c545..0000000
--- a/chrome/android/java/res/drawable-mdpi/warning.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-tvdpi/infobar_button_normal_floating_enabled.9.png b/chrome/android/java/res/drawable-tvdpi/infobar_button_normal_floating_enabled.9.png
deleted file mode 100644
index e0cebe0..0000000
--- a/chrome/android/java/res/drawable-tvdpi/infobar_button_normal_floating_enabled.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-tvdpi/infobar_button_normal_floating_pressed.9.png b/chrome/android/java/res/drawable-tvdpi/infobar_button_normal_floating_pressed.9.png
deleted file mode 100644
index 5d2b98d..0000000
--- a/chrome/android/java/res/drawable-tvdpi/infobar_button_normal_floating_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-tvdpi/infobar_button_warning_floating_enabled.9.png b/chrome/android/java/res/drawable-tvdpi/infobar_button_warning_floating_enabled.9.png
deleted file mode 100644
index 3b70d55..0000000
--- a/chrome/android/java/res/drawable-tvdpi/infobar_button_warning_floating_enabled.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-tvdpi/infobar_button_warning_floating_pressed.9.png b/chrome/android/java/res/drawable-tvdpi/infobar_button_warning_floating_pressed.9.png
deleted file mode 100644
index aa35e77..0000000
--- a/chrome/android/java/res/drawable-tvdpi/infobar_button_warning_floating_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-tvdpi/infobar_update_uma.png b/chrome/android/java/res/drawable-tvdpi/infobar_update_uma.png
deleted file mode 100644
index 6f3ad48..0000000
--- a/chrome/android/java/res/drawable-tvdpi/infobar_update_uma.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/dismiss.png b/chrome/android/java/res/drawable-xhdpi/dismiss.png
deleted file mode 100644
index 1ecc3c1..0000000
--- a/chrome/android/java/res/drawable-xhdpi/dismiss.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_autofill.png b/chrome/android/java/res/drawable-xhdpi/infobar_autofill.png
deleted file mode 100644
index b6a6676..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_autofill.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_autofill_cc.png b/chrome/android/java/res/drawable-xhdpi/infobar_autofill_cc.png
new file mode 100644
index 0000000..05ac67c
--- /dev/null
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_autofill_cc.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_autologin.png b/chrome/android/java/res/drawable-xhdpi/infobar_autologin.png
deleted file mode 100644
index 2639c5f..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_autologin.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_blocked_popups.png b/chrome/android/java/res/drawable-xhdpi/infobar_blocked_popups.png
index c890188..23410fd 100644
--- a/chrome/android/java/res/drawable-xhdpi/infobar_blocked_popups.png
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_blocked_popups.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_button_normal_floating_enabled.9.png b/chrome/android/java/res/drawable-xhdpi/infobar_button_normal_floating_enabled.9.png
deleted file mode 100644
index 0dfe375..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_button_normal_floating_enabled.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_button_normal_floating_pressed.9.png b/chrome/android/java/res/drawable-xhdpi/infobar_button_normal_floating_pressed.9.png
deleted file mode 100644
index 6ca3036..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_button_normal_floating_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_button_warning_floating_enabled.9.png b/chrome/android/java/res/drawable-xhdpi/infobar_button_warning_floating_enabled.9.png
deleted file mode 100644
index 53601fd..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_button_warning_floating_enabled.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_button_warning_floating_pressed.9.png b/chrome/android/java/res/drawable-xhdpi/infobar_button_warning_floating_pressed.9.png
deleted file mode 100644
index b675478..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_button_warning_floating_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_camera.png b/chrome/android/java/res/drawable-xhdpi/infobar_camera.png
index 252f1e2..4ec18b7 100644
--- a/chrome/android/java/res/drawable-xhdpi/infobar_camera.png
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_camera.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_close_button.png b/chrome/android/java/res/drawable-xhdpi/infobar_close_button.png
new file mode 100644
index 0000000..af781b8
--- /dev/null
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_close_button.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_cookie.png b/chrome/android/java/res/drawable-xhdpi/infobar_cookie.png
deleted file mode 100644
index 85ec7ce..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_cookie.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_desktop_notifications.png b/chrome/android/java/res/drawable-xhdpi/infobar_desktop_notifications.png
deleted file mode 100644
index 785455f..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_desktop_notifications.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_didyoumean.png b/chrome/android/java/res/drawable-xhdpi/infobar_didyoumean.png
deleted file mode 100644
index d008037..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_didyoumean.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_geolocation.png b/chrome/android/java/res/drawable-xhdpi/infobar_geolocation.png
index 653648e..8ae1acd 100644
--- a/chrome/android/java/res/drawable-xhdpi/infobar_geolocation.png
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_geolocation.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_microphone.png b/chrome/android/java/res/drawable-xhdpi/infobar_microphone.png
index 4a4f6b8..cc5fb2b 100644
--- a/chrome/android/java/res/drawable-xhdpi/infobar_microphone.png
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_microphone.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_midi.png b/chrome/android/java/res/drawable-xhdpi/infobar_midi.png
new file mode 100644
index 0000000..a684d59
--- /dev/null
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_midi.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_multiple_downloads.png b/chrome/android/java/res/drawable-xhdpi/infobar_multiple_downloads.png
index 3f1cc02..68f9d74 100644
--- a/chrome/android/java/res/drawable-xhdpi/infobar_multiple_downloads.png
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_multiple_downloads.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_plugin.png b/chrome/android/java/res/drawable-xhdpi/infobar_plugin.png
deleted file mode 100644
index fd1d6c1..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_plugin.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_plugin_crashed.png b/chrome/android/java/res/drawable-xhdpi/infobar_plugin_crashed.png
deleted file mode 100644
index a08517f..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_plugin_crashed.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_protected_media_identifier.png b/chrome/android/java/res/drawable-xhdpi/infobar_protected_media_identifier.png
index 2751b3c..3cd3a9f 100644
--- a/chrome/android/java/res/drawable-xhdpi/infobar_protected_media_identifier.png
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_protected_media_identifier.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_restore.png b/chrome/android/java/res/drawable-xhdpi/infobar_restore.png
deleted file mode 100644
index d1331b0..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_restore.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_savepassword.png b/chrome/android/java/res/drawable-xhdpi/infobar_savepassword.png
deleted file mode 100644
index cb4ed7d..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_savepassword.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_savepassword_autologin.png b/chrome/android/java/res/drawable-xhdpi/infobar_savepassword_autologin.png
new file mode 100644
index 0000000..99809f8
--- /dev/null
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_savepassword_autologin.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_theme.png b/chrome/android/java/res/drawable-xhdpi/infobar_theme.png
deleted file mode 100644
index 0a3c6c0..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_theme.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_translate.png b/chrome/android/java/res/drawable-xhdpi/infobar_translate.png
index 03ae907..ba6a38b 100644
--- a/chrome/android/java/res/drawable-xhdpi/infobar_translate.png
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_translate.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_update_uma.png b/chrome/android/java/res/drawable-xhdpi/infobar_update_uma.png
deleted file mode 100644
index 3c15c02..0000000
--- a/chrome/android/java/res/drawable-xhdpi/infobar_update_uma.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/infobar_warning.png b/chrome/android/java/res/drawable-xhdpi/infobar_warning.png
index 4ab0f4e..26a72fb 100644
--- a/chrome/android/java/res/drawable-xhdpi/infobar_warning.png
+++ b/chrome/android/java/res/drawable-xhdpi/infobar_warning.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xhdpi/warning.png b/chrome/android/java/res/drawable-xhdpi/warning.png
deleted file mode 100644
index 09e459f..0000000
--- a/chrome/android/java/res/drawable-xhdpi/warning.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_autofill_cc.png b/chrome/android/java/res/drawable-xxhdpi/infobar_autofill_cc.png
new file mode 100644
index 0000000..5ef1852
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_autofill_cc.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_blocked_popups.png b/chrome/android/java/res/drawable-xxhdpi/infobar_blocked_popups.png
new file mode 100644
index 0000000..b8235d9
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_blocked_popups.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_camera.png b/chrome/android/java/res/drawable-xxhdpi/infobar_camera.png
new file mode 100644
index 0000000..8b8665f
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_camera.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_close_button.png b/chrome/android/java/res/drawable-xxhdpi/infobar_close_button.png
new file mode 100644
index 0000000..86bc0ea
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_close_button.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_geolocation.png b/chrome/android/java/res/drawable-xxhdpi/infobar_geolocation.png
new file mode 100644
index 0000000..8269f2d
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_geolocation.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_microphone.png b/chrome/android/java/res/drawable-xxhdpi/infobar_microphone.png
new file mode 100644
index 0000000..6909939
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_microphone.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_midi.png b/chrome/android/java/res/drawable-xxhdpi/infobar_midi.png
new file mode 100644
index 0000000..d9b1ab7
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_midi.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_multiple_downloads.png b/chrome/android/java/res/drawable-xxhdpi/infobar_multiple_downloads.png
new file mode 100644
index 0000000..aed2c39
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_multiple_downloads.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_protected_media_identifier.png b/chrome/android/java/res/drawable-xxhdpi/infobar_protected_media_identifier.png
new file mode 100644
index 0000000..cd5d402
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_protected_media_identifier.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_savepassword_autologin.png b/chrome/android/java/res/drawable-xxhdpi/infobar_savepassword_autologin.png
new file mode 100644
index 0000000..505db3a
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_savepassword_autologin.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_translate.png b/chrome/android/java/res/drawable-xxhdpi/infobar_translate.png
new file mode 100644
index 0000000..cbea4f5
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_translate.png
Binary files differ
diff --git a/chrome/android/java/res/drawable-xxhdpi/infobar_warning.png b/chrome/android/java/res/drawable-xxhdpi/infobar_warning.png
new file mode 100644
index 0000000..14d4b31
--- /dev/null
+++ b/chrome/android/java/res/drawable-xxhdpi/infobar_warning.png
Binary files differ
diff --git a/chrome/android/java/res/drawable/btn_infobar_blue.xml b/chrome/android/java/res/drawable/btn_infobar_blue.xml
new file mode 100644
index 0000000..73e7e0b
--- /dev/null
+++ b/chrome/android/java/res/drawable/btn_infobar_blue.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2014 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_pressed="false"
+        android:state_focused="false"
+        android:state_selected="false">
+        <shape>
+            <solid android:color="@color/infobar_accent_blue" />
+            <corners android:radius="1dp" />
+        </shape>
+    </item>
+    <item>
+        <shape>
+            <solid android:color="@color/infobar_accent_blue_pressed" />
+            <corners android:radius="1dp" />
+        </shape>
+    </item>
+</selector>
diff --git a/chrome/android/java/res/drawable/infobar_button_normal_floating.xml b/chrome/android/java/res/drawable/infobar_button_normal_floating.xml
deleted file mode 100644
index 4853014..0000000
--- a/chrome/android/java/res/drawable/infobar_button_normal_floating.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright 2013 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_pressed="false"
-        android:state_focused="false"
-        android:drawable="@drawable/infobar_button_normal_floating_enabled" />
-    <item
-        android:drawable="@drawable/infobar_button_normal_floating_pressed" />
-</selector>
diff --git a/chrome/android/java/res/drawable/infobar_button_normal_full_left.xml b/chrome/android/java/res/drawable/infobar_button_normal_full_left.xml
deleted file mode 100644
index 09f4b77..0000000
--- a/chrome/android/java/res/drawable/infobar_button_normal_full_left.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright 2013 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_pressed="false"
-        android:state_focused="false"
-        android:drawable="@drawable/infobar_button_normal_full_left_enabled" />
-    <item
-        android:drawable="@drawable/infobar_button_normal_full_left_pressed" />
-</selector>
diff --git a/chrome/android/java/res/drawable/infobar_button_normal_full_right.xml b/chrome/android/java/res/drawable/infobar_button_normal_full_right.xml
deleted file mode 100644
index b938b9b..0000000
--- a/chrome/android/java/res/drawable/infobar_button_normal_full_right.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright 2013 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_pressed="false"
-        android:state_focused="false"
-        android:drawable="@drawable/infobar_button_normal_full_right_enabled" />
-    <item
-        android:drawable="@drawable/infobar_button_normal_full_right_pressed" />
-</selector>
diff --git a/chrome/android/java/res/drawable/infobar_button_warning_floating.xml b/chrome/android/java/res/drawable/infobar_button_warning_floating.xml
deleted file mode 100644
index bebd323..0000000
--- a/chrome/android/java/res/drawable/infobar_button_warning_floating.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright 2013 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_pressed="false"
-        android:state_focused="false"
-        android:drawable="@drawable/infobar_button_warning_floating_enabled" />
-    <item
-        android:drawable="@drawable/infobar_button_warning_floating_pressed" />
-</selector>
diff --git a/chrome/android/java/res/drawable/infobar_button_warning_full_left.xml b/chrome/android/java/res/drawable/infobar_button_warning_full_left.xml
deleted file mode 100644
index 31e265a..0000000
--- a/chrome/android/java/res/drawable/infobar_button_warning_full_left.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright 2013 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_pressed="false"
-        android:state_focused="false"
-        android:drawable="@drawable/infobar_button_warning_full_left_enabled" />
-    <item
-        android:drawable="@drawable/infobar_button_warning_full_left_pressed" />
-</selector>
diff --git a/chrome/android/java/res/drawable/infobar_button_warning_full_right.xml b/chrome/android/java/res/drawable/infobar_button_warning_full_right.xml
deleted file mode 100644
index d8f04f7..0000000
--- a/chrome/android/java/res/drawable/infobar_button_warning_full_right.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright 2013 The Chromium Authors. All rights reserved.
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_pressed="false"
-        android:state_focused="false"
-        android:drawable="@drawable/infobar_button_warning_full_right_enabled" />
-    <item
-        android:drawable="@drawable/infobar_button_warning_full_right_pressed" />
-</selector>
diff --git a/chrome/android/java/res/drawable/infobar_close_bg.xml b/chrome/android/java/res/drawable/infobar_close_bg.xml
deleted file mode 100644
index 4847d20..0000000
--- a/chrome/android/java/res/drawable/infobar_close_bg.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright 2013 The Chromium Authors. All rights reserved.
-
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_pressed="false"
-        android:state_focused="false"
-        android:drawable="@android:color/transparent" />
-    <item
-        android:state_pressed="false"
-        android:state_focused="true"
-        android:drawable="@drawable/infobar_close_button_focused" />
-    <item
-        android:drawable="@drawable/infobar_close_button_pressed" />
-</selector>
diff --git a/chrome/android/java/res/drawable/infobar_close_button_focused.xml b/chrome/android/java/res/drawable/infobar_close_button_focused.xml
deleted file mode 100644
index 45f4f5a..0000000
--- a/chrome/android/java/res/drawable/infobar_close_button_focused.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright 2013 The Chromium Authors. All rights reserved.
-
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file.
--->
-
-<shape
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-    <corners android:radius="1dp" />
-    <solid android:color="@color/button_focused" />
-    <stroke
-        android:width="1px"
-        android:color="#80000000" />
-</shape>
diff --git a/chrome/android/java/res/drawable/infobar_close_button_pressed.xml b/chrome/android/java/res/drawable/infobar_close_button_pressed.xml
deleted file mode 100644
index b4adae6..0000000
--- a/chrome/android/java/res/drawable/infobar_close_button_pressed.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright 2013 The Chromium Authors. All rights reserved.
-
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file.
--->
-
-<shape
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-    <corners android:radius="1dp" />
-    <solid android:color="@color/button_pressed" />
-</shape>
diff --git a/chrome/android/java/res/drawable/infobar_info_background.xml b/chrome/android/java/res/drawable/infobar_info_background.xml
deleted file mode 100644
index c1e30b7..0000000
--- a/chrome/android/java/res/drawable/infobar_info_background.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright 2013 The Chromium Authors. All rights reserved.
-
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-    <gradient
-        android:startColor="#fffbfbfb"
-        android:endColor="#fff2f2f2"
-        android:angle="270" />
-</shape>
diff --git a/chrome/android/java/res/drawable/infobar_midi.png b/chrome/android/java/res/drawable/infobar_midi.png
deleted file mode 100644
index a5c4cdc..0000000
--- a/chrome/android/java/res/drawable/infobar_midi.png
+++ /dev/null
Binary files differ
diff --git a/chrome/android/java/res/drawable/infobar_warning_background.xml b/chrome/android/java/res/drawable/infobar_warning_background.xml
deleted file mode 100644
index 768166d..0000000
--- a/chrome/android/java/res/drawable/infobar_warning_background.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright 2013 The Chromium Authors. All rights reserved.
-
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-    <gradient
-        android:startColor="#ffffe991"
-        android:endColor="#fffee289"
-        android:angle="270" />
-</shape>
diff --git a/chrome/android/java/res/layout/app_banner_view.xml b/chrome/android/java/res/layout/app_banner_view.xml
index cb5a4b9..3263699 100644
--- a/chrome/android/java/res/layout/app_banner_view.xml
+++ b/chrome/android/java/res/layout/app_banner_view.xml
@@ -71,7 +71,7 @@
             android:id="@+id/close_button"
             android:contentDescription="@string/infobar_close"
             android:adjustViewBounds="true"
-            android:src="@drawable/dismiss"
+            android:src="@drawable/infobar_close_button"
             android:background="@drawable/app_banner_button_close"
             android:padding="@dimen/app_banner_close_button_padding"
             android:layout_width="wrap_content"
diff --git a/chrome/android/java/res/layout/infobar_button.xml b/chrome/android/java/res/layout/infobar_button.xml
index b45f10f..a35e04b 100644
--- a/chrome/android/java/res/layout/infobar_button.xml
+++ b/chrome/android/java/res/layout/infobar_button.xml
@@ -7,16 +7,13 @@
 <Button xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:minWidth="60dp"
-    android:minHeight="@dimen/infobar_touch_target_height"
+    android:background="?android:attr/selectableItemBackground"
+    android:fontFamily="sans-serif-medium"
+    android:minWidth="88dp"
+    android:minHeight="36dp"
     android:textSize="@dimen/infobar_button_text_size"
-    android:textColor="@drawable/infobar_button_text"
-    android:shadowColor="#FFF"
-    android:shadowDx="1.0"
-    android:shadowDy="1.0"
-    android:shadowRadius="1.0"
-    android:background="@drawable/infobar_button_normal_floating"
     android:paddingStart="@dimen/infobar_button_horizontal_padding"
     android:paddingEnd="@dimen/infobar_button_horizontal_padding"
     android:paddingTop="5dp"
-    android:paddingBottom="5dp" />
+    android:paddingBottom="5dp"
+    android:textAllCaps="true" />
diff --git a/chrome/android/java/res/layout/infobar_text.xml b/chrome/android/java/res/layout/infobar_text.xml
index 95c47b4..d56dd76 100644
--- a/chrome/android/java/res/layout/infobar_text.xml
+++ b/chrome/android/java/res/layout/infobar_text.xml
@@ -11,6 +11,7 @@
     android:layout_marginBottom="@dimen/infobar_margin"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
+    android:lineSpacingMultiplier="1.25"
     android:textDirection="locale"
     android:textSize="@dimen/infobar_text_size"
     android:textColor="@color/infobar_text" />
diff --git a/chrome/android/java/res/values/colors.xml b/chrome/android/java/res/values/colors.xml
index 7627e3b..06730b2 100644
--- a/chrome/android/java/res/values/colors.xml
+++ b/chrome/android/java/res/values/colors.xml
@@ -5,10 +5,13 @@
 -->
 
 <resources>
-    <!-- Colors were copied from browser/views/infobars/infobars.cc -->
-    <color name="infobar_text">#000000</color>
-    <color name="infobar_info_background_separator">#afafaf</color>
-    <color name="infobar_warning_background_separator">#ccb771</color>
+    <!-- Infobar colors -->
+    <color name="infobar_text">#333</color>
+    <color name="infobar_background">#fff</color>
+    <color name="infobar_background_separator">#afafaf</color>
+    <color name="infobar_accent_blue">#4285f4</color>
+    <color name="infobar_accent_blue_pressed">#679df6</color>
+    <color name="infobar_tertiary_button_text">#969696</color>
 
     <!-- Tab Switcher Colors -->
     <color name="tab_switcher_background">#111111</color>
@@ -21,10 +24,6 @@
     <color name="accessibility_tab_switcher_list_item">#252525</color>
     <color name="accessibility_close_undo_text">#33b5e5</color>
 
-    <!-- Button Colors -->
-    <color name="button_pressed">#ff77c5e1</color>
-    <color name="button_focused">#ffa9d0df</color>
-
     <!--  App banner colors -->
     <color name="app_banner_install_button_fg">#ffffff</color>
     <color name="app_banner_open_button_fg">#777777</color>
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
index 0bd31d0..9a54044 100644
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -27,21 +27,21 @@
     <dimen name="edge_swipe_in_additional_slop">50dp</dimen>
     <dimen name="edge_swipe_out_slop">18dp</dimen>
     
-        <!-- Infobar dimensions -->
-    <!-- Text size of the InfoBar message. -->
+    <!-- Infobar dimensions -->
+    <!-- Text size of the infobar message. -->
     <dimen name="infobar_text_size">16sp</dimen>
-    <!-- Text size of text inside InfoBar buttons. -->
-    <dimen name="infobar_button_text_size">16sp</dimen>
-    <!-- Minimum dimension (height or width) of the upper row of an InfoBar. -->
-    <dimen name="infobar_min_size">60dp</dimen>
-    <!-- Margin between items in an InfoBar. -->
-    <dimen name="infobar_margin">10dp</dimen>
+    <!-- Text size of text inside infobar buttons. -->
+    <dimen name="infobar_button_text_size">12sp</dimen>
+    <!-- Minimum width of an infobar. -->
+    <dimen name="infobar_min_width">220dp</dimen>
+    <!-- Margin between items in an infobar. -->
+    <dimen name="infobar_margin">16dp</dimen>
     <!-- Left/right padding for infobar button text. -->
-    <dimen name="infobar_button_horizontal_padding">30dp</dimen>
+    <dimen name="infobar_button_horizontal_padding">20dp</dimen>
     <!-- Minimum height for a touch target. -->
     <dimen name="infobar_touch_target_height">40dp</dimen>
-    <!-- Dimension (height or width) of the InfoBar icon. -->
-    <dimen name="infobar_icon_size">31dp</dimen>
+    <!-- Width and height of the infobar icon. -->
+    <dimen name="infobar_icon_size">36dp</dimen>
 
     <!-- App banner dimensions -->
     <dimen name="app_banner_max_width">424dp</dimen>
diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml
index ae109ff..5a2946c 100644
--- a/chrome/android/java/res/values/values.xml
+++ b/chrome/android/java/res/values/values.xml
@@ -9,5 +9,6 @@
     <item type="id" name="infobar_close_button" />
     <item type="id" name="button_primary" />
     <item type="id" name="button_secondary" />
+    <item type="id" name="button_tertiary" />
     <item type="id" name="infobar_extra_check" />
 </resources>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/EmptyTabObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/EmptyTabObserver.java
index 0ee5470..2ec6b9b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/EmptyTabObserver.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/EmptyTabObserver.java
@@ -63,5 +63,5 @@
             boolean isIframeSrcdoc) { }
 
     @Override
-    public void onDidChangeBrandColor(int color) { }
+    public void onDidChangeThemeColor(int color) { }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java
index c98b45a..9762af9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ShortcutHelper.java
@@ -14,14 +14,17 @@
 
 import org.chromium.base.CalledByNative;
 
+import java.io.ByteArrayOutputStream;
 import java.util.UUID;
 
 /**
  * This is a helper class to create shortcuts on the Android home screen.
  */
 public class ShortcutHelper {
+    public static final String EXTRA_ICON = "org.chromium.chrome.browser.webapp_icon";
     public static final String EXTRA_ID = "org.chromium.chrome.browser.webapp_id";
     public static final String EXTRA_MAC = "org.chromium.chrome.browser.webapp_mac";
+    public static final String EXTRA_TITLE = "org.chromium.chrome.browser.webapp_title";
     public static final String EXTRA_URL = "org.chromium.chrome.browser.webapp_url";
 
     private static String sFullScreenAction;
@@ -62,13 +65,24 @@
             int red, int green, int blue, boolean isWebappCapable) {
         assert sFullScreenAction != null;
 
-        Intent shortcutIntent = null;
+        Intent shortcutIntent;
         if (isWebappCapable) {
+            // Encode the favicon as a base64 string (Launcher drops Bitmaps in the Intent).
+            String encodedIcon = "";
+            if (favicon != null) {
+                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+                favicon.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
+                byte[] byteArray = byteArrayOutputStream.toByteArray();
+                encodedIcon = Base64.encodeToString(byteArray, Base64.DEFAULT);
+            }
+
             // Add the shortcut as a launcher icon for a full-screen Activity.
             shortcutIntent = new Intent();
             shortcutIntent.setAction(sFullScreenAction);
-            shortcutIntent.putExtra(EXTRA_URL, url);
+            shortcutIntent.putExtra(EXTRA_ICON, encodedIcon);
             shortcutIntent.putExtra(EXTRA_ID, UUID.randomUUID().toString());
+            shortcutIntent.putExtra(EXTRA_TITLE, title);
+            shortcutIntent.putExtra(EXTRA_URL, url);
 
             // The only reason we convert to a String here is because Android inexplicably eats a
             // byte[] when adding the shortcut -- the Bundle received by the launched Activity even
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/Tab.java b/chrome/android/java/src/org/chromium/chrome/browser/Tab.java
index c3835b6..1c28820 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/Tab.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/Tab.java
@@ -283,9 +283,9 @@
         }
 
         @Override
-        public void didChangeBrandColor(int color) {
+        public void didChangeThemeColor(int color) {
             for (TabObserver observer : mObservers) {
-                observer.onDidChangeBrandColor(color);
+                observer.onDidChangeThemeColor(color);
             }
         }
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/TabObserver.java
index f48abad..42f0eb6 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/TabObserver.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/TabObserver.java
@@ -144,8 +144,8 @@
             boolean isErrorPage, boolean isIframeSrcdoc);
 
     /**
-     * Called when the brand color is changed
+     * Called when the theme color is changed
      * @param color the new color in ARGB format.
      */
-    public void onDidChangeBrandColor(int color);
+    public void onDidChangeThemeColor(int color);
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/AnimationHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/AnimationHelper.java
index cb5354b..3e71ebd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/AnimationHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/AnimationHelper.java
@@ -124,7 +124,6 @@
         if (mAnimationStarted) return;
         mAnimationStarted = true;
 
-        boolean infoBarsOnTop = mContainer.areInfoBarsOnTop();
         int indexOfWrapperView = mContainer.indexOfChild(mTargetWrapperView);
         assert indexOfWrapperView != -1;
 
@@ -136,16 +135,14 @@
         int cumulativeTopStart = 0;
         int cumulativeTopEnd = 0;
         int cumulativeEndHeight = 0;
-        if (!infoBarsOnTop) {
-            if (heightDifference >= 0) {
-                // The current container is smaller than the final container, so the current 0
-                // coordinate will be >= 0 in the final container.
-                cumulativeTopStart = heightDifference;
-            } else {
-                // The current container is bigger than the final container, so the current 0
-                // coordinate will be < 0 in the final container.
-                cumulativeTopEnd = -heightDifference;
-            }
+        if (heightDifference >= 0) {
+            // The current container is smaller than the final container, so the current 0
+            // coordinate will be >= 0 in the final container.
+            cumulativeTopStart = heightDifference;
+        } else {
+            // The current container is bigger than the final container, so the current 0
+            // coordinate will be < 0 in the final container.
+            cumulativeTopEnd = -heightDifference;
         }
 
         for (int i = 0; i < mContainer.getChildCount(); ++i) {
@@ -169,13 +166,12 @@
             } else {
                 // A translation is required to move the View into place.
                 int translation = heightDifference;
-                if (infoBarsOnTop) translation *= -1;
 
-                boolean translateDownward = false;
+                boolean translateDownward;
                 if (topStart < topEnd) {
-                    translateDownward = infoBarsOnTop;
+                    translateDownward = false;
                 } else if (topStart > topEnd) {
-                    translateDownward = !infoBarsOnTop;
+                    translateDownward = true;
                 } else {
                     translateDownward = bottomEnd > bottomStart;
                 }
@@ -204,28 +200,16 @@
 
         // Lock the InfoBarContainer's size at its largest during the animation to avoid
         // clipping issues.
-        final int oldContainerTop = mContainer.getTop();
-        final int oldContainerBottom = mContainer.getBottom();
-        final int newContainerTop;
-        final int newContainerBottom;
-        if (infoBarsOnTop) {
-            newContainerTop = oldContainerTop;
-            newContainerBottom = newContainerTop + cumulativeEndHeight;
-        } else {
-            newContainerBottom = oldContainerBottom;
-            newContainerTop = newContainerBottom - cumulativeEndHeight;
-        }
-        final int biggestContainerTop = Math.min(oldContainerTop, newContainerTop);
-        final int biggestContainerBottom = Math.max(oldContainerBottom, newContainerBottom);
+        int oldContainerTop = mContainer.getTop();
+        int newContainerTop = mContainer.getBottom() - cumulativeEndHeight;
+        int biggestContainerTop = Math.min(oldContainerTop, newContainerTop);
         mContainer.setTop(biggestContainerTop);
-        mContainer.setBottom(biggestContainerBottom);
 
         // Set up and run all of the animations.
         mAnimatorSet.addListener(new AnimatorListenerAdapter() {
             @Override
             public void onAnimationStart(Animator animation) {
                 mTargetWrapperView.startTransition();
-                mContainer.startTransition();
             }
 
             @Override
@@ -236,8 +220,7 @@
                 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && mToShow != null &&
                         (mAnimationType == ANIMATION_TYPE_SHOW ||
                                 mAnimationType == ANIMATION_TYPE_SWAP)) {
-                    mToShow.announceForAccessibility(
-                            mInfoBar.getMessageText(mContainer.getContext()));
+                    mToShow.announceForAccessibility(mInfoBar.getMessage());
                 }
             }
         });
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/ConfirmInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/ConfirmInfoBar.java
index b210709..af84fef 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/ConfirmInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/ConfirmInfoBar.java
@@ -4,88 +4,38 @@
 
 package org.chromium.chrome.browser.infobar;
 
-import android.content.Context;
-import android.text.SpannableStringBuilder;
-import android.text.Spanned;
-import android.text.TextUtils;
-import android.text.style.ClickableSpan;
-import android.view.View;
-
 /**
- * An infobar that presents the user with 2 buttons (typically OK, Cancel).
+ * An infobar that presents the user with several buttons.
+ *
+ * TODO(newt): merge this into InfoBar.java.
  */
-public class ConfirmInfoBar extends TwoButtonInfoBar {
-    // Message to prompt the user.
-    private final String mMessage;
-
-    // Link text shown to the user, in addition to the message.
-    private final String mLinkText;
-
-    // Typically set to "OK", or some other positive action.
+public class ConfirmInfoBar extends InfoBar {
+    /** Text shown on the primary button, e.g. "OK". */
     private final String mPrimaryButtonText;
 
-    // Typically set to "Cancel", or some other negative action.
+    /** Text shown on the secondary button, e.g. "Cancel".*/
     private final String mSecondaryButtonText;
 
-    // Listens for when either of the buttons is clicked.
+    /** Text shown on the extra button, e.g. "More info". */
+    private final String mTertiaryButtonText;
+
+    /** Notified when one of the buttons is clicked. */
     private final InfoBarListeners.Confirm mConfirmListener;
 
-    public ConfirmInfoBar(InfoBarListeners.Confirm confirmListener, int backgroundType,
-            int iconDrawableId, String message, String primaryButtonText,
-            String secondaryButtonText) {
-        this(confirmListener, backgroundType, iconDrawableId, message, null, primaryButtonText,
-                secondaryButtonText);
-    }
-
-    public ConfirmInfoBar(InfoBarListeners.Confirm confirmListener, int backgroundType,
+    public ConfirmInfoBar(long nativeInfoBar, InfoBarListeners.Confirm confirmListener,
             int iconDrawableId, String message, String linkText, String primaryButtonText,
             String secondaryButtonText) {
-        this(0, confirmListener, backgroundType, iconDrawableId, message, linkText,
-                primaryButtonText, secondaryButtonText);
-    }
-
-    public ConfirmInfoBar(long nativeInfoBar, InfoBarListeners.Confirm confirmListener,
-            int backgroundType, int iconDrawableId, String message, String linkText,
-            String primaryButtonText, String secondaryButtonText) {
-        super(confirmListener, backgroundType, iconDrawableId);
-        mMessage = message;
-        mLinkText = linkText;
+        super(confirmListener, iconDrawableId, message);
         mPrimaryButtonText = primaryButtonText;
         mSecondaryButtonText = secondaryButtonText;
+        mTertiaryButtonText = linkText;
         mConfirmListener = confirmListener;
         setNativeInfoBar(nativeInfoBar);
     }
 
     @Override
-    public CharSequence getMessageText(Context context) {
-        // Construct text to be displayed on the infobar.
-        SpannableStringBuilder infobarMessage = new SpannableStringBuilder(mMessage);
-
-        // If we have a link text to display, append it.
-        if (!TextUtils.isEmpty(mLinkText)) {
-            SpannableStringBuilder spannableLinkText = new SpannableStringBuilder(mLinkText);
-            ClickableSpan onLinkClicked = new ClickableSpan() {
-                @Override
-                public void onClick(View view) {
-                    onLinkClicked();
-                }
-            };
-            spannableLinkText.setSpan(onLinkClicked, 0, spannableLinkText.length(),
-                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-            infobarMessage.append(" ");
-            infobarMessage.append(spannableLinkText);
-        }
-        return infobarMessage;
-    }
-
-    @Override
-    public String getPrimaryButtonText(Context context) {
-        return mPrimaryButtonText;
-    }
-
-    @Override
-    public String getSecondaryButtonText(Context context) {
-        return mSecondaryButtonText;
+    public void createContent(InfoBarLayout layout) {
+        layout.setButtons(mPrimaryButtonText, mSecondaryButtonText, mTertiaryButtonText);
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/ConfirmInfoBarDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/ConfirmInfoBarDelegate.java
index b43830e..d99fb15 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/ConfirmInfoBarDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/ConfirmInfoBarDelegate.java
@@ -36,11 +36,8 @@
             String linkText, String buttonOk, String buttonCancel) {
         int drawableId = ResourceId.mapToDrawableId(enumeratedIconId);
 
-        // Apparently, yellow was the popular choice at the time these InfoBars were implemented
-        // because they stuck out more (hence the BACKGROUND_TYPE_WARNING) default.
-        ConfirmInfoBar infoBar = new ConfirmInfoBar(nativeInfoBar, null,
-                InfoBar.BACKGROUND_TYPE_WARNING, drawableId, message, linkText, buttonOk,
-                buttonCancel);
+        ConfirmInfoBar infoBar = new ConfirmInfoBar(nativeInfoBar, null, drawableId, message,
+                linkText, buttonOk, buttonCancel);
         return infoBar;
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/ContentWrapperView.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/ContentWrapperView.java
index 1bf45fd..216b35f 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/ContentWrapperView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/ContentWrapperView.java
@@ -16,7 +16,6 @@
 import android.view.ViewParent;
 import android.widget.FrameLayout;
 
-import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.chrome.R;
 
 import java.util.ArrayList;
@@ -36,7 +35,6 @@
     private static final int CONTENT_INDEX = 0;
 
     private final int mGravity;
-    private final boolean mInfoBarsFromTop;
     private final InfoBar mInfoBar;
 
     private View mViewToHide;
@@ -46,32 +44,22 @@
      * Constructs a ContentWrapperView object.
      * @param context The context to create this View with.
      */
-    public ContentWrapperView(Context context, InfoBar infoBar, int backgroundType, View panel,
-            boolean infoBarsFromTop) {
+    public ContentWrapperView(Context context, InfoBar infoBar, View panel) {
         // Set up this ViewGroup.
         super(context);
         mInfoBar = infoBar;
-        mGravity = infoBarsFromTop ? Gravity.BOTTOM : Gravity.TOP;
-        mInfoBarsFromTop = infoBarsFromTop;
-
-        // Pull out resources we need for the backgrounds.  Defaults to the INFO type.
-        int separatorBackground = R.color.infobar_info_background_separator;
-        int layoutBackground = R.drawable.infobar_info_background;
-        if (backgroundType == InfoBar.BACKGROUND_TYPE_WARNING) {
-            layoutBackground = R.drawable.infobar_warning_background;
-            separatorBackground = R.color.infobar_warning_background_separator;
-        }
+        mGravity = Gravity.TOP;
 
         // Set up this view.
         Resources resources = context.getResources();
         LayoutParams wrapParams = new LayoutParams(LayoutParams.MATCH_PARENT,
                 LayoutParams.WRAP_CONTENT);
         setLayoutParams(wrapParams);
-        ApiCompatibilityUtils.setBackgroundForView(this, resources.getDrawable(layoutBackground));
+        setBackgroundColor(resources.getColor(R.color.infobar_background));
 
         // Add a separator line that delineates different InfoBars.
         View separator = new View(context);
-        separator.setBackgroundColor(resources.getColor(separatorBackground));
+        separator.setBackgroundColor(resources.getColor(R.color.infobar_background_separator));
         addView(separator, new LayoutParams(LayoutParams.MATCH_PARENT, getBoundaryHeight(context),
                 mGravity));
 
@@ -161,20 +149,6 @@
 
             // We're transitioning between two views; set the alpha so it doesn't pop in.
             if (mViewToHide != null) mViewToShow.setAlpha(0.0f);
-
-            // Because of layout scheduling, we need to move the child Views downward before it
-            // occurs.  Failure to do so results in the Views being located incorrectly during the
-            // first few frames of the animation.
-            if (mInfoBarsFromTop && getViewToShowHeight() > getViewToHideHeight()) {
-                getLayoutParams().height = getViewToShowHeight();
-
-                int translation = getTransitionHeightDifference();
-                for (int i = 0; i < getChildCount(); ++i) {
-                    View v = getChildAt(i);
-                    v.setTop(v.getTop() + translation);
-                    v.setBottom(v.getBottom() + translation);
-                }
-            }
         }
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java
index 3b6ee18..403bf7d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBar.java
@@ -36,12 +36,8 @@
     public static final int ACTION_TYPE_TRANSLATE = 3;
     public static final int ACTION_TYPE_TRANSLATE_SHOW_ORIGINAL = 4;
 
-    // Background types
-    public static final int BACKGROUND_TYPE_INFO = 0;
-    public static final int BACKGROUND_TYPE_WARNING = 1;
-
-    private final int mBackgroundType;
     private final int mIconDrawableId;
+    private final CharSequence mMessage;
 
     private InfoBarListeners.Dismiss mListener;
     private ContentWrapperView mContentView;
@@ -66,18 +62,25 @@
 
     /**
      * @param listener Listens to when buttons have been clicked on the InfoBar.
-     * @param backgroundType Background type to use (INFO or WARNING).
      * @param iconDrawableId ID of the resource to use for the Icon.  If 0, no icon will be shown.
+     * @param message The message to show in the infobar.
      */
-    public InfoBar(InfoBarListeners.Dismiss listener, int backgroundType, int iconDrawableId) {
+    public InfoBar(InfoBarListeners.Dismiss listener, int iconDrawableId, CharSequence message) {
         mListener = listener;
         mId = generateId();
-        mBackgroundType = backgroundType;
         mIconDrawableId = iconDrawableId;
+        mMessage = message;
         mExpireOnNavigation = true;
     }
 
     /**
+     * @return The message shown in the infobar, useful for accessibility.
+     */
+    public CharSequence getMessage() {
+        return mMessage;
+    }
+
+    /**
      * Stores a pointer to the native-side counterpart of this InfoBar.
      * @param nativeInfoBarPtr Pointer to the NativeInfoBar.
      */
@@ -92,18 +95,20 @@
     /**
      * Change the pointer to the native-side counterpart of this InfoBar.  Native-side code is
      * responsible for managing the cleanup of the pointer.
-     * @param nativeInfoBarPtr Pointer to the NativeInfoBar.
+     * @param newInfoBarPtr Pointer to the NativeInfoBar.
      */
     protected void replaceNativePointer(long newInfoBarPtr) {
         mNativeInfoBarPtr = newInfoBarPtr;
     }
 
-    // Determine if the infobar should be dismissed when |url| is loaded.  Calling
-    // setExpireOnNavigation(true/false) causes this method always to return true/false.
-    // This only applies to java-only infobars. C++ infobars will use the same logic
-    // as other platforms so they are not attempted to be dismissed twice.
-    // It should really be removed once all infobars have a C++ counterpart.
-    public final boolean shouldExpire(String url) {
+    /**
+     * Determine if the infobar should be dismissed when a new page starts loading. Calling
+     * setExpireOnNavigation(true/false) causes this method always to return true/false.
+     * This only applies to java-only infobars. C++ infobars will use the same logic
+     * as other platforms so they are not attempted to be dismissed twice.
+     * It should really be removed once all infobars have a C++ counterpart.
+     */
+    public final boolean shouldExpire() {
         return mExpireOnNavigation && mNativeInfoBarPtr == 0;
     }
 
@@ -147,7 +152,10 @@
      */
     protected final View createView() {
         assert mContext != null;
-        return new InfoBarLayout(mContext, this, mBackgroundType, mIconDrawableId);
+
+        InfoBarLayout layout = new InfoBarLayout(mContext, this, mIconDrawableId, mMessage);
+        createContent(layout);
+        return layout;
     }
 
     /**
@@ -178,8 +186,7 @@
 
     protected ContentWrapperView getContentWrapper(boolean createIfNotFound) {
         if (mContentView == null && createIfNotFound) {
-            mContentView = new ContentWrapperView(getContext(), this, mBackgroundType,
-                    createView(), getInfoBarContainer().areInfoBarsOnTop());
+            mContentView = new ContentWrapperView(getContext(), this, createView());
             mContentView.setFocusable(false);
         }
         return mContentView;
@@ -208,10 +215,16 @@
     public void setControlsEnabled(boolean state) {
         mControlsEnabled = state;
 
-        // Handle the close button.
+        // Disable all buttons on the infobar.
         if (mContentView != null) {
             View closeButton = mContentView.findViewById(R.id.infobar_close_button);
+            View primaryButton = mContentView.findViewById(R.id.button_primary);
+            View secondaryButton = mContentView.findViewById(R.id.button_secondary);
+            View tertiaryButton = mContentView.findViewById(R.id.button_tertiary);
             if (closeButton != null) closeButton.setEnabled(state);
+            if (primaryButton != null) primaryButton.setEnabled(state);
+            if (secondaryButton != null) secondaryButton.setEnabled(state);
+            if (tertiaryButton != null) tertiaryButton.setEnabled(state);
         }
     }
 
@@ -228,16 +241,6 @@
     public void createContent(InfoBarLayout layout) {
     }
 
-    @Override
-    public String getPrimaryButtonText(Context context) {
-        return null;
-    }
-
-    @Override
-    public String getSecondaryButtonText(Context context) {
-        return null;
-    }
-
     /**
      * Returns the id of the tab this infobar is showing into.
      */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java
index a378301..2b3c5be 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarContainer.java
@@ -16,11 +16,9 @@
 
 import com.google.common.annotations.VisibleForTesting;
 
-import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.base.CalledByNative;
 import org.chromium.content_public.browser.WebContents;
 import org.chromium.ui.UiUtils;
-import org.chromium.ui.base.DeviceFormFactor;
 
 import java.util.ArrayDeque;
 import java.util.ArrayList;
@@ -77,9 +75,6 @@
 
     private final AutoLoginDelegate mAutoLoginDelegate;
 
-    // Whether the infobar are shown on top (below the location bar) or at the bottom of the screen.
-    private final boolean mInfoBarsOnTop;
-
     // The list of all infobars in this container, regardless of whether they've been shown yet.
     private final ArrayList<InfoBar> mInfoBars = new ArrayList<InfoBar>();
 
@@ -114,9 +109,7 @@
         mAnimationSizer = new FrameLayout(activity);
         mAnimationSizer.setVisibility(INVISIBLE);
 
-        // The tablet has the infobars below the location bar. On the phone they are at the bottom.
-        mInfoBarsOnTop = DeviceFormFactor.isTablet(activity);
-        setGravity(determineGravity());
+        setGravity(Gravity.BOTTOM);
 
         // Chromium's InfoBarContainer may add an InfoBar immediately during this initialization
         // call, so make sure everything in the InfoBarContainer is completely ready beforehand.
@@ -132,9 +125,8 @@
         return mAnimationListener;
     }
 
-
     public boolean areInfoBarsOnTop() {
-        return mInfoBarsOnTop;
+        return false;
     }
 
     @Override
@@ -155,13 +147,9 @@
         }
     }
 
-    private int determineGravity() {
-        return mInfoBarsOnTop ? Gravity.TOP : Gravity.BOTTOM;
-    }
-
     private FrameLayout.LayoutParams createLayoutParams() {
         return new FrameLayout.LayoutParams(
-                LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, determineGravity());
+                LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM);
     }
 
     public void removeFromParentView() {
@@ -357,7 +345,7 @@
             targetView = info.target.getContentWrapper(true);
             assert mInfoBars.contains(info.target);
             toShow = targetView.detachCurrentView();
-            addView(targetView, mInfoBarsOnTop ? getChildCount() : 0,
+            addView(targetView, 0,
                     new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
         } else {
             targetView = info.target.getContentWrapper(false);
@@ -369,11 +357,11 @@
     }
 
     // Called by the tab when it has started loading a new page.
-    public void onPageStarted(String url) {
+    public void onPageStarted() {
         LinkedList<InfoBar> barsToRemove = new LinkedList<InfoBar>();
 
         for (InfoBar infoBar : mInfoBars) {
-            if (infoBar.shouldExpire(url)) {
+            if (infoBar.shouldExpire()) {
                 barsToRemove.add(infoBar);
             }
         }
@@ -445,14 +433,6 @@
         }
     }
 
-    public void startTransition() {
-        if (mInfoBarsOnTop) {
-            // We need to clip this view to its bounds while it is animated because the layout's
-            // z-ordering puts it on top of other infobars as it's being animated.
-            ApiCompatibilityUtils.postInvalidateOnAnimation(this);
-        }
-    }
-
     /**
      * Finishes off whatever animation is running.
      */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarLayout.java
index 8443ae4..d5b2e3c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarLayout.java
@@ -5,8 +5,13 @@
 package org.chromium.chrome.browser.infobar;
 
 import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.Color;
+import android.graphics.drawable.Drawable;
 import android.text.TextUtils;
 import android.text.method.LinkMovementMethod;
+import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -15,740 +20,525 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.chrome.R;
-import org.chromium.ui.base.LocalizationUtils;
-
-import java.util.ArrayList;
 
 /**
- * Layout that can be used to arrange an InfoBar's View.
- * All InfoBars consist of at least:
- * - An icon representing the InfoBar's purpose on the left side.
+ * Layout that arranges an InfoBar's views. An InfoBarLayout consists of:
  * - A message describing the action that the user can take.
  * - A close button on the right side.
+ * - (optional) An icon representing the infobar's purpose on the left side.
+ * - (optional) Additional "custom" views (e.g. a checkbox and text, or a pair of spinners)
+ * - (optional) One or two buttons with text at the bottom.
  *
- * Views should never be added with anything but a call to addGroup() to ensure that groups are not
- * broken apart.
- *
- * Widths and heights defined in the LayoutParams will be overwritten due to the nature of the
- * layout algorithm.  However, setting a minimum width in another way, like TextView.getMinWidth(),
- * should still be obeyed.
+ * When adding custom views, widths and heights defined in the LayoutParams will be ignored.
+ * However, setting a minimum width in another way, like TextView.getMinWidth(), should still be
+ * obeyed.
  *
  * Logic for what happens when things are clicked should be implemented by the InfoBarView.
  */
 public class InfoBarLayout extends ViewGroup implements View.OnClickListener {
-    private static final String TAG = "InfoBarLayout";
 
     /**
      * Parameters used for laying out children.
      */
-    public static class LayoutParams extends ViewGroup.LayoutParams {
-        /** Alignment parameters that determine where in the main row an item will float. */
-        public static final int ALIGN_START = 0;
-        public static final int ALIGN_END = 1;
+    private static class LayoutParams extends ViewGroup.LayoutParams {
 
-        /** Whether the View is meant for the main row. */
-        public boolean isInMainRow;
+        public int startMargin;
+        public int endMargin;
+        public int topMargin;
+        public int bottomMargin;
 
-        /** Views grouped together are laid out together immediately adjacent to each other. */
-        public boolean isGroupedWithNextView;
+        // Where this view will be laid out. These values are assigned in onMeasure() and used in
+        // onLayout().
+        public int start;
+        public int top;
 
-        /** When on the main row, indicates whether the control floats on the left or the right. */
-        public int align;
-
-        /** If the control is a button, ID of the resource that was last used as its background. */
-        public int background;
-
-        public LayoutParams() {
+        LayoutParams(int startMargin, int topMargin, int endMargin, int bottomMargin) {
             super(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
-            align = ALIGN_END;
-            isInMainRow = true;
-        }
-
-        public LayoutParams(LayoutParams other) {
-            super(other);
-            isGroupedWithNextView = other.isGroupedWithNextView;
-            align = other.align;
-            isInMainRow = other.isInMainRow;
+            this.startMargin = startMargin;
+            this.topMargin = topMargin;
+            this.endMargin = endMargin;
+            this.bottomMargin = bottomMargin;
         }
     }
 
-    private static class GroupInfo {
-        public int numViews;
-        public int width;
-        public int greatestMemberWidth;
-        public int endIndex;
-        public boolean hasButton;
-    };
+    private static class Group {
+        public View[] views;
 
-    private final int mDimensionMinSize;
-    private final int mDimensionMargin;
-    private final int mDimensionIconSize;
-    private final boolean mLayoutRTL;
+        /**
+         * The gravity of each view in Group. Must be either Gravity.START, Gravity.END, or
+         * Gravity.FILL_HORIZONTAL.
+         */
+        public int gravity = Gravity.START;
+
+        /** Whether the views are vertically stacked. */
+        public boolean isStacked;
+
+        void setHorizontalMode(int horizontalSpacing, int startMargin, int endMargin) {
+            isStacked = false;
+            for (int i = 0; i < views.length; i++) {
+                LayoutParams lp = (LayoutParams) views[i].getLayoutParams();
+                lp.startMargin = i == 0 ? startMargin : horizontalSpacing;
+                lp.topMargin = 0;
+                lp.endMargin = i == views.length - 1 ? endMargin : 0;
+                lp.bottomMargin = 0;
+            }
+
+        }
+
+        void setVerticalMode(int verticalSpacing, int bottomMargin) {
+            isStacked = true;
+            for (int i = 0; i < views.length; i++) {
+                LayoutParams lp = (LayoutParams) views[i].getLayoutParams();
+                lp.startMargin = 0;
+                lp.topMargin = i == 0 ? 0 : verticalSpacing;
+                lp.endMargin = 0;
+                lp.bottomMargin = i == views.length - 1 ? bottomMargin : 0;
+            }
+        }
+    }
+
+    private static final int ROW_MAIN = 1;
+    private static final int ROW_OTHER = 2;
+
+    private final int mMargin;
+    private final int mIconSize;
+    private final int mMinWidth;
+    private final int mAccentColor;
+
     private final InfoBarView mInfoBarView;
-
-    private final ImageView mIconView;
     private final TextView mMessageView;
     private final ImageButton mCloseButton;
+    private ImageView mIconView;
 
-    /** Background resource IDs to use for the buttons. */
-    private final int mBackgroundFloating;
-    private final int mBackgroundFullLeft;
-    private final int mBackgroundFullRight;
+    private Group mMainGroup;
+    private Group mCustomGroup;
+    private Group mButtonGroup;
 
     /**
-     * Indices of child Views that start new layout rows.
-     * The last entry is the number of child Views, allowing calculation of the size of each row by
-     * taking the difference between subsequent indices.
+     * These values are used during onMeasure() to track where the next view will be placed.
+     *
+     * mWidth is the infobar width.
+     * [mStart, mEnd) is the range of unoccupied space on the current row.
+     * mTop and mBottom are the top and bottom of the current row.
+     *
+     * These values, along with a view's gravity, are used to position the next view.
+     * These values are updated after placing a view and after starting a new row.
      */
-    private final ArrayList<Integer> mIndicesOfRows;
+    private int mWidth;
+    private int mStart;
+    private int mEnd;
+    private int mTop;
+    private int mBottom;
 
     /**
-     * Constructs the layout for the specified InfoBar.
+     * Constructs a layout for the specified InfoBar. After calling this, be sure to set the
+     * message, the buttons, and/or the custom content using setMessage(), setButtons(), and
+     * setCustomContent().
+     *
      * @param context The context used to render.
      * @param infoBarView InfoBarView that listens to events.
-     * @param backgroundType Type of InfoBar background being shown.
      * @param iconResourceId ID of the icon to use for the InfoBar.
+     * @param message The message to show in the infobar.
      */
-    public InfoBarLayout(Context context, InfoBarView infoBarView, int backgroundType,
-            int iconResourceId) {
+    public InfoBarLayout(Context context, InfoBarView infoBarView, int iconResourceId,
+            CharSequence message) {
         super(context);
-        mIndicesOfRows = new ArrayList<Integer>();
-        mLayoutRTL = LocalizationUtils.isLayoutRtl();
         mInfoBarView = infoBarView;
 
-        // Determine what backgrounds we'll be needing for the buttons.
-        if (backgroundType == InfoBar.BACKGROUND_TYPE_INFO) {
-            mBackgroundFloating = R.drawable.infobar_button_normal_floating;
-            mBackgroundFullLeft = R.drawable.infobar_button_normal_full_left;
-            mBackgroundFullRight = R.drawable.infobar_button_normal_full_right;
-        } else {
-            mBackgroundFloating = R.drawable.infobar_button_warning_floating;
-            mBackgroundFullLeft = R.drawable.infobar_button_warning_full_left;
-            mBackgroundFullRight = R.drawable.infobar_button_warning_full_right;
-        }
-
         // Grab the dimensions.
-        mDimensionMinSize =
-                context.getResources().getDimensionPixelSize(R.dimen.infobar_min_size);
-        mDimensionMargin =
-                context.getResources().getDimensionPixelSize(R.dimen.infobar_margin);
-        mDimensionIconSize =
-                context.getResources().getDimensionPixelSize(R.dimen.infobar_icon_size);
+        Resources res = getResources();
+        mMargin = res.getDimensionPixelOffset(R.dimen.infobar_margin);
+        mIconSize = res.getDimensionPixelSize(R.dimen.infobar_icon_size);
+        mMinWidth = res.getDimensionPixelSize(R.dimen.infobar_min_width);
+        mAccentColor = res.getColor(R.color.infobar_accent_blue);
 
-        // Create the main controls.
+        // Set up the close button. Apply padding so it has a big touch target.
         mCloseButton = new ImageButton(context);
-        mIconView = new ImageView(context);
-        mMessageView = (TextView) LayoutInflater.from(context).inflate(R.layout.infobar_text, null);
-        addGroup(mCloseButton, mIconView, mMessageView);
-
-        // Set up the close button.
         mCloseButton.setId(R.id.infobar_close_button);
-        mCloseButton.setImageResource(R.drawable.dismiss);
-        mCloseButton.setBackgroundResource(R.drawable.infobar_close_bg);
+        mCloseButton.setImageResource(R.drawable.infobar_close_button);
+        TypedArray a = getContext().obtainStyledAttributes(
+                new int [] {android.R.attr.selectableItemBackground});
+        Drawable closeButtonBackground = a.getDrawable(0);
+        a.recycle();
+        ApiCompatibilityUtils.setBackgroundForView(mCloseButton, closeButtonBackground);
+        mCloseButton.setPadding(mMargin, mMargin, mMargin, mMargin);
         mCloseButton.setOnClickListener(this);
-
-        mCloseButton.setContentDescription(getResources().getString(R.string.infobar_close));
+        mCloseButton.setContentDescription(res.getString(R.string.infobar_close));
+        mCloseButton.setLayoutParams(new LayoutParams(0, -mMargin, -mMargin, -mMargin));
+        addView(mCloseButton);
 
         // Set up the icon.
-        mIconView.setFocusable(false);
         if (iconResourceId != 0) {
+            mIconView = new ImageView(context);
             mIconView.setImageResource(iconResourceId);
-        } else {
-            mIconView.setVisibility(View.INVISIBLE);
+            mIconView.setFocusable(false);
+            mIconView.setLayoutParams(new LayoutParams(0, 0, mMargin / 2, 0));
+            mIconView.getLayoutParams().width = mIconSize;
+            mIconView.getLayoutParams().height = mIconSize;
         }
 
-        // Set up the TextView.
+        // Set up the message view.
+        mMessageView = (TextView) LayoutInflater.from(context).inflate(R.layout.infobar_text, null);
+        mMessageView.setText(message, TextView.BufferType.SPANNABLE);
         mMessageView.setMovementMethod(LinkMovementMethod.getInstance());
-        mMessageView.setText(infoBarView.getMessageText(context), TextView.BufferType.SPANNABLE);
+        mMessageView.setLinkTextColor(mAccentColor);
+        mMessageView.setLayoutParams(new LayoutParams(0, mMargin / 4, 0, 0));
 
-        // Only the close button floats to the right; the icon and the message both float left.
-        ((LayoutParams) mIconView.getLayoutParams()).align = LayoutParams.ALIGN_START;
-        ((LayoutParams) mMessageView.getLayoutParams()).align = LayoutParams.ALIGN_START;
-
-        // Vertically center the icon and close buttons of an unstretched InfoBar.  If the InfoBar
-        // is stretched, they both stay in place.
-        mIconView.getLayoutParams().width = mDimensionIconSize;
-        mIconView.getLayoutParams().height = mDimensionIconSize;
-
-        // We apply padding to the close button so that it has a big touch target.
-        int closeButtonHeight = mCloseButton.getDrawable().getIntrinsicHeight();
-        int closePadding = (mDimensionMinSize - closeButtonHeight) / 2;
-        if (closePadding >= 0) {
-            mCloseButton.setPadding(closePadding, closePadding, closePadding, closePadding);
+        if (mIconView != null) {
+            mMainGroup = addGroup(mIconView, mMessageView);
         } else {
-            assert closePadding >= 0 : "Assets are too large for this layout.";
+            mMainGroup = addGroup(mMessageView);
+        }
+    }
+
+    /**
+     * Sets the message to show on the infobar.
+     */
+    public void setMessage(CharSequence message) {
+        mMessageView.setText(message, TextView.BufferType.SPANNABLE);
+    }
+
+    /**
+     * Sets the custom content of the infobar. These views will be displayed in addition to the
+     * standard infobar controls (icon, text, buttons). Depending on the available space, view1 and
+     * view2 will be laid out:
+     *  - Side by side on the main row,
+     *  - Side by side on a separate row, each taking up half the width of the infobar,
+     *  - Stacked above each other on two separate rows, taking up the full width of the infobar.
+     */
+    public void setCustomContent(View view1, View view2) {
+        mCustomGroup = addGroup(view1, view2);
+    }
+
+    /**
+     * Sets the custom content of the infobar to a single view. This view will be displayed in
+     * addition to the standard infobar controls. Depending on the available space, the view will be
+     * displayed:
+     *  - On the main row, start-aligned or end-aligned depending on whether there are also
+     *    buttons on the main row, OR
+     *  - On a separate row, start-aligned
+     */
+    public void setCustomContent(View view) {
+        mCustomGroup = addGroup(view);
+    }
+
+    /**
+     * Calls setButtons(primaryText, secondaryText, null).
+     */
+    public void setButtons(String primaryText, String secondaryText) {
+        setButtons(primaryText, secondaryText, null);
+    }
+
+    /**
+     * Adds one, two, or three buttons to the layout.
+     *
+     * @param primaryText Text for the primary button.
+     * @param secondaryText Text for the secondary button, or null if there isn't a second button.
+     * @param tertiaryText Text for the tertiary button, or null if there isn't a third button.
+     */
+    public void setButtons(String primaryText, String secondaryText, String tertiaryText) {
+        if (TextUtils.isEmpty(primaryText)) return;
+
+        LayoutInflater inflater = LayoutInflater.from(getContext());
+        Button primaryButton = (Button) inflater.inflate(R.layout.infobar_button, null);
+        primaryButton.setId(R.id.button_primary);
+        primaryButton.setOnClickListener(this);
+        primaryButton.setText(primaryText);
+        primaryButton.setBackgroundResource(R.drawable.btn_infobar_blue);
+        primaryButton.setTextColor(Color.WHITE);
+
+        if (TextUtils.isEmpty(secondaryText)) {
+            mButtonGroup = addGroup(primaryButton);
+            return;
         }
 
-        // Add all of the other InfoBar specific controls.
-        infoBarView.createContent(this);
+        Button secondaryButton = (Button) inflater.inflate(R.layout.infobar_button, null);
+        secondaryButton.setId(R.id.button_secondary);
+        secondaryButton.setOnClickListener(this);
+        secondaryButton.setText(secondaryText);
+        secondaryButton.setTextColor(mAccentColor);
+
+        if (TextUtils.isEmpty(tertiaryText)) {
+            mButtonGroup = addGroup(secondaryButton, primaryButton);
+            return;
+        }
+
+        Button tertiaryButton = (Button) inflater.inflate(R.layout.infobar_button, null);
+        tertiaryButton.setId(R.id.button_tertiary);
+        tertiaryButton.setOnClickListener(this);
+        tertiaryButton.setText(tertiaryText);
+        tertiaryButton.setPadding(mMargin / 2, tertiaryButton.getPaddingTop(), mMargin / 2,
+                tertiaryButton.getPaddingBottom());
+        tertiaryButton.setTextColor(
+                getContext().getResources().getColor(R.color.infobar_tertiary_button_text));
+
+        mButtonGroup = addGroup(tertiaryButton, secondaryButton, primaryButton);
+    }
+
+    /**
+     * Adds a group of Views that are measured and laid out together.
+     */
+    private Group addGroup(View... views) {
+        Group group = new Group();
+        group.views = views;
+
+        for (View v : views) {
+            addView(v);
+        }
+        return group;
     }
 
     @Override
     protected LayoutParams generateDefaultLayoutParams() {
-        return new LayoutParams();
-    }
-
-    /**
-     * Add a view to the Layout.
-     * This function must never be called with an index that isn't -1 to ensure that groups aren't
-     * broken apart.
-     */
-    @Override
-    public void addView(View child, int index, ViewGroup.LayoutParams params) {
-        if (index == -1) {
-            super.addView(child, index, params);
-        } else {
-            assert false : "Adding children at random places can break group structure.";
-            super.addView(child, -1, params);
-        }
-    }
-
-    /**
-     * Add a group of Views that are measured and laid out together.
-     */
-    public void addGroup(View... group) {
-        for (int i = 0; i < group.length; i++) {
-            final View member = group[i];
-            addView(member);
-
-            LayoutParams params = (LayoutParams) member.getLayoutParams();
-            params.isGroupedWithNextView = (i != group.length - 1);
-        }
-    }
-
-    /**
-     * Add up to two buttons to the layout.
-     *
-     * Buttons with null text are hidden from view.  The secondary button may only exist if the
-     * primary button does.
-     *
-     * @param primaryText Text for the primary button.
-     * @param secondaryText Text for the secondary button.
-     */
-    public void addButtons(String primaryText, String secondaryText) {
-        Button primaryButton = null;
-        Button secondaryButton = null;
-
-        if (!TextUtils.isEmpty(secondaryText)) {
-            secondaryButton = (Button) LayoutInflater.from(getContext()).inflate(
-                    R.layout.infobar_button, null);
-            secondaryButton.setId(R.id.button_secondary);
-            secondaryButton.setOnClickListener(this);
-            secondaryButton.setText(secondaryText);
-        }
-
-        if (!TextUtils.isEmpty(primaryText)) {
-            primaryButton = (Button) LayoutInflater.from(getContext()).inflate(
-                    R.layout.infobar_button, null);
-            primaryButton.setId(R.id.button_primary);
-            primaryButton.setOnClickListener(this);
-            primaryButton.setText(primaryText);
-        }
-
-        // Group the buttons together so that they are laid out next to each other.
-        if (primaryButton == null && secondaryButton != null) {
-            assert false : "When using only one button, make it the primary button.";
-        } else if (primaryButton != null && secondaryButton != null) {
-            addGroup(secondaryButton, primaryButton);
-        } else if (primaryButton != null) {
-            addGroup(primaryButton);
-        }
+        return new LayoutParams(0, 0, 0, 0);
     }
 
     @Override
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
-        final int rowWidth = right - left;
-        int rowTop = layoutMainRow(rowWidth);
-        for (int row = 1; row < mIndicesOfRows.size() - 1; row++) {
-            rowTop = layoutRow(row, rowTop, rowWidth);
+        // Place all the views in the positions already determined during onMeasure().
+        int width = right - left;
+        boolean isRtl = ApiCompatibilityUtils.isLayoutRtl(this);
+
+        for (int i = 0; i < getChildCount(); i++) {
+            View child = getChildAt(i);
+            LayoutParams lp = (LayoutParams) child.getLayoutParams();
+            int childLeft = lp.start;
+            int childRight = lp.start + child.getMeasuredWidth();
+
+            if (isRtl) {
+                int tmp = width - childRight;
+                childRight = width - childLeft;
+                childLeft = tmp;
+            }
+
+            child.layout(childLeft, lp.top, childRight, lp.top + child.getMeasuredHeight());
         }
     }
 
     /**
-     * Lays out the controls in the main row.
-     *
-     * This method is complicated mainly because of the arbitrariness for when a control can
-     * float either left or right, and whether we're doing an RTL layout.
-     *
-     * Layout proceeds in three phases:
-     * - Laying out of the icon and close button are done separately from the rest of the controls
-     *   because they are locked into their respective corners.  These two controls bound the rest
-     *   of the controls in the main row.
-     *
-     * - Items floating to the left are then laid out, traversing the children array in a forwards
-     *   manner.  This includes the InfoBar message.
-     *
-     * - A final pass lays out items aligned to the end of the bar, traversing the children array
-     *   backwards so that the correct ordering of the children is preserved.  Going forwards would
-     *   cause buttons to flip (e.g.).
-     *
-     * @param width Maximum width of the row.
-     * @return How tall the main row is.
+     * Measures *and* assigns positions to all of the views in the infobar. These positions are
+     * saved in each view's LayoutParams (lp.start and lp.top) and used during onLayout(). All of
+     * the interesting logic happens inside onMeasure(); onLayout() just assigns the already-
+     * determined positions and mirrors everything for RTL, if needed.
      */
-    private int layoutMainRow(int width) {
-        final int rowStart = mIndicesOfRows.get(0);
-        final int rowEnd = mIndicesOfRows.get(1);
-        final int rowHeight = computeMainRowHeight(rowStart, rowEnd);
-
-        // Lay out the icon and the close button.
-        int closeLeft;
-        int iconPadding = (mDimensionMinSize - mDimensionIconSize) / 2;
-        int iconLeft = iconPadding;
-        if (mLayoutRTL) {
-            iconLeft += width - mDimensionMinSize;
-            closeLeft = 0;
-        } else {
-            closeLeft = width - mCloseButton.getMeasuredWidth();
-        }
-        mIconView.layout(iconLeft, iconPadding, iconLeft + mDimensionIconSize,
-                iconPadding + mDimensionIconSize);
-        mCloseButton.layout(closeLeft, 0, closeLeft + mDimensionMinSize, mDimensionMinSize);
-
-        // Go from left to right to catch all items aligned with the start of the InfoBar.
-        int rowLeft = mDimensionMinSize;
-        int rowRight = width - mDimensionMinSize;
-        for (int i = rowStart; i < rowEnd; i++) {
-            final View child = getChildAt(i);
-            LayoutParams params = (LayoutParams) child.getLayoutParams();
-            if (params.align != LayoutParams.ALIGN_START || child.getVisibility() == View.GONE
-                    || child == mCloseButton || child == mIconView) {
-                continue;
-            }
-
-            // Everything is vertically centered.
-            int childTop = (rowHeight - child.getMeasuredHeight()) / 2;
-            int childLeft;
-
-            if (mLayoutRTL) {
-                if (!isMainControl(child)) rowRight -= mDimensionMargin;
-                childLeft = rowRight - child.getMeasuredWidth();
-                rowRight -= child.getMeasuredWidth();
-            } else {
-                if (!isMainControl(child)) rowLeft += mDimensionMargin;
-                childLeft = rowLeft;
-                rowLeft += child.getMeasuredWidth();
-            }
-
-            child.layout(childLeft, childTop, childLeft + child.getMeasuredWidth(),
-                    childTop + child.getMeasuredHeight());
-        }
-
-        // Go from right to left to catch all items aligned with the end of the InfoBar.
-        for (int i = rowEnd - 1; i >= rowStart; i--) {
-            final View child = getChildAt(i);
-            LayoutParams params = (LayoutParams) child.getLayoutParams();
-            if (params.align != LayoutParams.ALIGN_END || child.getVisibility() == View.GONE
-                    || child == mCloseButton || child == mIconView) {
-                continue;
-            }
-
-            // Everything is vertically centered.
-            int childTop = (rowHeight - child.getMeasuredHeight()) / 2;
-            int childLeft;
-
-            if (!mLayoutRTL) {
-                childLeft = rowRight - child.getMeasuredWidth();
-                rowRight -= child.getMeasuredWidth();
-                if (!isMainControl(child)) rowRight -= mDimensionMargin;
-            } else {
-                childLeft = rowLeft;
-                rowLeft += child.getMeasuredWidth();
-                if (!isMainControl(child)) rowLeft += mDimensionMargin;
-            }
-
-            child.layout(childLeft, childTop, childLeft + child.getMeasuredWidth(),
-                    childTop + child.getMeasuredHeight());
-        }
-
-        return rowHeight;
-    }
-
-    /**
-     * Lays out the controls in the row other than the main one.
-     *
-     * This case is much simpler than the main row since the items are all equally sized and simply
-     * entails moving through the children and laying them down from the start of the InfoBar to the
-     * end.
-     *
-     * @param row Index of the row
-     * @param rowTop Y-coordinate of the layout the controls should be aligned to.
-     * @param width Maximum width of the row.
-     * @return How tall the row is.
-     */
-    private int layoutRow(int row, int rowTop, int width) {
-        final int rowStart = mIndicesOfRows.get(row);
-        final int rowEnd = mIndicesOfRows.get(row + 1);
-        final boolean hasButton = isButton(getChildAt(rowStart));
-
-        int rowLeft = hasButton ? 0 : mDimensionMargin;
-        int rowRight = width - (hasButton ? 0 : mDimensionMargin);
-
-        for (int i = rowStart; i < rowEnd; i++) {
-            final View child = getChildAt(i);
-            if (child.getVisibility() == View.GONE) continue;
-
-            int childLeft;
-            if (mLayoutRTL) {
-                childLeft = rowRight - child.getMeasuredWidth();
-                rowRight -= child.getMeasuredWidth() + (hasButton ? 0 : mDimensionMargin);
-            } else {
-                childLeft = rowLeft;
-                rowLeft += child.getMeasuredWidth() + (hasButton ? 0 : mDimensionMargin);
-            }
-
-            child.layout(childLeft, rowTop, childLeft + child.getMeasuredWidth(),
-                    rowTop + child.getMeasuredHeight());
-        }
-
-        return rowTop + computeRowHeight(rowStart, rowEnd);
-    }
-
-    /**
-     * Checks if the child is one of the main InfoBar controls.
-     * @param child View to check.
-     * @return True if the child is one of the main controls.
-     */
-    private boolean isMainControl(View child) {
-        return child == mIconView || child == mMessageView || child == mCloseButton;
-    }
-
-    /**
-     * Marks that the given index is the start of its own row.
-     * @param rowStartIndex Index of the child view at the start of the next row.
-     */
-    private void addRowStartIndex(int rowStartIndex) {
-        if (mIndicesOfRows.size() == 0
-                || rowStartIndex != mIndicesOfRows.get(mIndicesOfRows.size() - 1)) {
-            mIndicesOfRows.add(rowStartIndex);
-        }
-    }
-
-    /**
-     * Computes properties of the next group of Views to assign to rows.
-     * @param startIndex Index of the first child in the group.
-     * @return GroupInfo containing information about the current group.
-     */
-    private GroupInfo getNextGroup(int startIndex) {
-        GroupInfo groupInfo = new GroupInfo();
-        groupInfo.endIndex = startIndex;
-
-        final int childCount = getChildCount();
-        int currentChildIndex = startIndex;
-        while (groupInfo.endIndex < childCount) {
-            final View groupChild = getChildAt(groupInfo.endIndex);
-            if (groupChild.getVisibility() != View.GONE) {
-                groupInfo.hasButton |= isButton(groupChild);
-                groupInfo.width += groupChild.getMeasuredWidth();
-                groupInfo.greatestMemberWidth =
-                        Math.max(groupInfo.greatestMemberWidth, groupChild.getMeasuredWidth());
-                groupInfo.numViews++;
-            }
-            groupInfo.endIndex++;
-
-            LayoutParams params = (LayoutParams) groupChild.getLayoutParams();
-            if (!params.isGroupedWithNextView) break;
-        }
-
-        return groupInfo;
-    }
-
-    @Override
-    protected void measureChild(View child, int widthSpec, int heightSpec) {
-        // If a control is on the main row, then it should be only as large as it wants to be.
-        // Otherwise, it must occupy the same amount of space as everything else on its row.
-        LayoutParams params = (LayoutParams) child.getLayoutParams();
-        params.width = params.isInMainRow ? LayoutParams.WRAP_CONTENT : LayoutParams.MATCH_PARENT;
-        super.measureChild(child, widthSpec, heightSpec);
-    }
-
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         assert getLayoutParams().height == LayoutParams.WRAP_CONTENT
                 : "InfoBar heights cannot be constrained.";
 
-        final int maxWidth = MeasureSpec.getSize(widthMeasureSpec);
-        mIndicesOfRows.clear();
-
-        // Measure all children with the assumption that they may take up the full size of the
-        // parent.  This determines how big each child wants to be.
-        final int childCount = getChildCount();
-        for (int numChild = 0; numChild < childCount; numChild++) {
-            final View child = getChildAt(numChild);
-            if (child.getVisibility() == View.GONE) continue;
-            ((LayoutParams) child.getLayoutParams()).isInMainRow = true;
-            measureChild(child, widthMeasureSpec, heightMeasureSpec);
+        // Measure all children without imposing any size constraints on them. This determines how
+        // big each child wants to be.
+        int unspecifiedSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
+        for (int i = 0; i < getChildCount(); i++) {
+            measureChild(getChildAt(i), unspecifiedSpec, unspecifiedSpec);
         }
 
-        // Allocate as many Views as possible to the main row, then place everything else on the
-        // following rows.
-        int currentChildIndex = measureMainRow(maxWidth);
-        measureRemainingRows(maxWidth, currentChildIndex);
+        // Avoid overlapping views, division by zero, infinite heights, and other fun problems that
+        // could arise with extremely narrow infobars.
+        mWidth = Math.max(MeasureSpec.getSize(widthMeasureSpec), mMinWidth);
+        mTop = mBottom = 0;
+        placeGroups();
 
-        // Buttons must have their backgrounds manually changed to give the illusion of having a
-        // single pixel boundary between them.
-        updateBackgroundsForButtons();
-
-        // Determine how tall the container should be by measuring all the children in their rows.
-        int layoutHeight = computeHeight();
-        setMeasuredDimension(resolveSize(maxWidth, widthMeasureSpec),
-                resolveSize(layoutHeight, heightMeasureSpec));
+        setMeasuredDimension(mWidth, resolveSize(mBottom, heightMeasureSpec));
     }
 
     /**
-     * Assign as many Views as can fit onto the main row.
-     *
-     * The main row consists of at least the icon, the close button, and the message.  Groups of
-     * controls are added to the main row as long as they can fit within the width of the InfoBar.
-     *
-     * @param maxWidth The maximum width of the main row.
-     * @return The index of the last child that couldn't fit on the main row.
+     * Assigns positions to all of the views in the infobar. The icon, text, and close button are
+     * placed on the main row. The custom content and finally the buttons are placed on the main row
+     * if they fit. Otherwise, they go on their own rows.
      */
-    private int measureMainRow(int maxWidth) {
-        final int childCount = getChildCount();
+    private void placeGroups() {
+        startRow();
+        placeChild(mCloseButton, Gravity.END);
+        placeGroup(mMainGroup);
 
-        // The main row has the icon and the close button taking the upper left and upper right
-        // corners of the InfoBar, each of which occupies a square of
-        // mDimensionMinSize x mDimensionMinSize pixels.
-        GroupInfo mainControlInfo = getNextGroup(0);
-        int remainingWidth = maxWidth - (mDimensionMinSize * 2) - mMessageView.getMeasuredWidth();
-        addRowStartIndex(0);
-
-        // Go through the rest of the Views and keep adding them until they can't fit.
-        int currentChildIndex = mainControlInfo.endIndex;
-        while (currentChildIndex < childCount && remainingWidth > 0) {
-            GroupInfo groupInfo = getNextGroup(currentChildIndex);
-            int widthWithMargins = groupInfo.width + mDimensionMargin * groupInfo.numViews;
-
-            if (widthWithMargins <= remainingWidth) {
-                // If the group fits on the main row, add it.
-                currentChildIndex = groupInfo.endIndex;
-                remainingWidth -= widthWithMargins;
-            } else {
-                // We can't fit the current group on the main row.
-                break;
-            }
-        }
-        addRowStartIndex(currentChildIndex);
-
-        // The icon and the close button are set to be squares occupying the upper left and
-        // upper right corners of the InfoBar.
-        int specWidth = MeasureSpec.makeMeasureSpec(mDimensionMinSize, MeasureSpec.EXACTLY);
-        int specHeight = MeasureSpec.makeMeasureSpec(mDimensionMinSize, MeasureSpec.EXACTLY);
-        measureChild(mIconView, specWidth, specHeight);
-        measureChild(mCloseButton, specWidth, specHeight);
-
-        // Measure out everything else except the message.
-        remainingWidth = maxWidth - (mDimensionMinSize * 2);
-        for (int i = 0; i < currentChildIndex; i++) {
-            final View child = getChildAt(i);
-            if (child.getVisibility() == View.GONE || isMainControl(child)) continue;
-
-            specWidth = MeasureSpec.makeMeasureSpec(remainingWidth, MeasureSpec.AT_MOST);
-            specHeight = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
-            measureChild(child, specWidth, specHeight);
-            remainingWidth -= child.getMeasuredWidth() + mDimensionMargin;
+        int customGroupWidth = 0;
+        if (mCustomGroup != null) {
+            updateCustomGroupForRow(ROW_MAIN);
+            customGroupWidth = getWidthWithMargins(mCustomGroup);
         }
 
-        // The message sucks up the remaining width on the line after all other controls
-        // have gotten all the space they requested.
-        specWidth = MeasureSpec.makeMeasureSpec(remainingWidth, MeasureSpec.AT_MOST);
-        specHeight = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
-        measureChild(mMessageView, specWidth, specHeight);
+        int buttonGroupWidth = 0;
+        if (mButtonGroup != null) {
+            updateButtonGroupForRow(ROW_MAIN);
+            buttonGroupWidth = getWidthWithMargins(mButtonGroup);
+        }
 
-        return currentChildIndex;
-    }
+        boolean customGroupOnMainRow = customGroupWidth <= availableWidth();
+        boolean buttonGroupOnMainRow = customGroupWidth + buttonGroupWidth <= availableWidth();
 
-    /**
-     * Assign children to rows in the layout.
-     *
-     * We first try to assign children in the same group to the same row, but only if they fit when
-     * they are of equal width.  Otherwise, we split the group onto multiple rows.
-     *
-     * @param maxWidth Maximum width that the row can take.
-     * @param currentChildIndex Start index of the current group.
-     */
-    private void measureRemainingRows(int maxWidth, int currentChildIndex) {
-        final int childCount = getChildCount();
-        final int specHeight = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
-
-        while (currentChildIndex < childCount) {
-            GroupInfo groupInfo = getNextGroup(currentChildIndex);
-
-            int availableWidth;
-            int boundaryMargins;
-            if (groupInfo.hasButton) {
-                // Buttons take up the full width of the InfoBar.
-                availableWidth = maxWidth;
-                boundaryMargins = 0;
+        if (mCustomGroup != null) {
+            if (customGroupOnMainRow) {
+                mCustomGroup.gravity = (mButtonGroup != null && buttonGroupOnMainRow)
+                        ? Gravity.START : Gravity.END;
             } else {
-                // Other controls obey the side boundaries, and have boundaries between them.
-                availableWidth = maxWidth - mDimensionMargin * 2;
-                boundaryMargins = (groupInfo.numViews - 1) * mDimensionMargin;
+                startRow();
+                updateCustomGroupForRow(ROW_OTHER);
             }
+            placeGroup(mCustomGroup);
+        }
 
-            // Determine how wide each item would be on the same row, including boundaries.
-            int evenWidth = (availableWidth - boundaryMargins) / groupInfo.numViews;
+        if (mButtonGroup != null) {
+            if (!buttonGroupOnMainRow) {
+                startRow();
+                updateButtonGroupForRow(ROW_OTHER);
 
-            if (groupInfo.greatestMemberWidth <= evenWidth) {
-                // Fit everything on the same row.
-                int specWidth = MeasureSpec.makeMeasureSpec(evenWidth, MeasureSpec.EXACTLY);
-                for (int i = currentChildIndex; i < groupInfo.endIndex; i++) {
-                    final View child = getChildAt(i);
-                    if (child.getVisibility() == View.GONE) continue;
-                    ((LayoutParams) child.getLayoutParams()).isInMainRow = false;
-                    measureChild(child, specWidth, specHeight);
-                }
-                addRowStartIndex(currentChildIndex);
-            } else {
-                // Add each member of the group to its own row.
-                int specWidth = MeasureSpec.makeMeasureSpec(availableWidth, MeasureSpec.EXACTLY);
-                for (int i = currentChildIndex; i < groupInfo.endIndex; i++) {
-                    final View child = getChildAt(i);
-                    if (child.getVisibility() == View.GONE) continue;
-                    ((LayoutParams) child.getLayoutParams()).isInMainRow = false;
-                    measureChild(child, specWidth, specHeight);
-                    addRowStartIndex(i);
+                // If the infobar consists of just a main row and a buttons row, the buttons must be
+                // at least 32dp below the bottom of the message text.
+                if (mCustomGroup == null) {
+                    LayoutParams lp = (LayoutParams) mMessageView.getLayoutParams();
+                    int messageBottom = lp.top + mMessageView.getMeasuredHeight();
+                    mTop = Math.max(mTop, messageBottom + 2 * mMargin);
                 }
             }
-
-            currentChildIndex = groupInfo.endIndex;
+            placeGroup(mButtonGroup);
         }
 
-        addRowStartIndex(childCount);
+        startRow();
+
+        // If everything fits on a single row, center everything vertically.
+        if (buttonGroupOnMainRow) {
+            int layoutHeight = mBottom;
+            for (int i = 0; i < getChildCount(); i++) {
+                View child = getChildAt(i);
+                int extraSpace = layoutHeight - child.getMeasuredHeight();
+                LayoutParams lp = (LayoutParams) child.getLayoutParams();
+                lp.top = extraSpace / 2;
+            }
+        }
     }
 
     /**
-     * Calculate how tall the layout is, accounting for margins and children.
-     * @return How big the layout should be.
+     * Places a group of views on the current row, or stacks them over multiple rows if
+     * group.isStacked is true. mStart, mEnd, and mBottom are updated to reflect the space taken by
+     * the group.
      */
-    private int computeHeight() {
-        int cumulativeHeight = 0;
+    private void placeGroup(Group group) {
+        if (group.gravity == Gravity.END) {
+            for (int i = group.views.length - 1; i >= 0; i--) {
+                placeChild(group.views[i], group.gravity);
+                if (group.isStacked && i != 0) startRow();
+            }
+        } else {  // group.gravity is Gravity.START or Gravity.FILL_HORIZONTAL
+            for (int i = 0; i < group.views.length; i++) {
+                placeChild(group.views[i], group.gravity);
+                if (group.isStacked && i != group.views.length - 1) startRow();
+            }
+        }
+    }
 
-        // Calculate how big each row is.
-        final int numRows = mIndicesOfRows.size() - 1;
-        for (int row = 0; row < numRows; row++) {
-            final int rowStart = mIndicesOfRows.get(row);
-            final int rowEnd = mIndicesOfRows.get(row + 1);
+    /**
+     * Places a single view on the current row, and updates the view's layout parameters to remember
+     * its position. mStart, mEnd, and mBottom are updated to reflect the space taken by the view.
+     */
+    private void placeChild(View child, int gravity) {
+        LayoutParams lp = (LayoutParams) child.getLayoutParams();
 
-            if (row == 0) {
-                cumulativeHeight += computeMainRowHeight(rowStart, rowEnd);
+        int availableWidth = Math.max(0, mEnd - mStart - lp.startMargin - lp.endMargin);
+        if (child.getMeasuredWidth() > availableWidth || gravity == Gravity.FILL_HORIZONTAL) {
+            measureChildWithFixedWidth(child, availableWidth);
+        }
+
+        if (gravity == Gravity.START || gravity == Gravity.FILL_HORIZONTAL) {
+            lp.start = mStart + lp.startMargin;
+            mStart = lp.start + child.getMeasuredWidth() + lp.endMargin;
+        } else {  // gravity == Gravity.END
+            lp.start = mEnd - lp.endMargin - child.getMeasuredWidth();
+            mEnd = lp.start - lp.startMargin;
+        }
+
+        lp.top = mTop + lp.topMargin;
+        mBottom = Math.max(mBottom, lp.top + child.getMeasuredHeight() + lp.bottomMargin);
+    }
+
+    /**
+     * Advances the current position to the next row and adds margins on the left, right, and top
+     * of the new row.
+     */
+    private void startRow() {
+        mStart = mMargin;
+        mEnd = mWidth - mMargin;
+        mTop = mBottom + mMargin;
+        mBottom = mTop;
+    }
+
+    private int availableWidth() {
+        return mEnd - mStart;
+    }
+
+    /**
+     * @return The width of the group, including the items' margins.
+     */
+    private int getWidthWithMargins(Group group) {
+        if (group.isStacked) return getWidthWithMargins(group.views[0]);
+
+        int width = 0;
+        for (View v : group.views) {
+            width += getWidthWithMargins(v);
+        }
+        return width;
+    }
+
+    private int getWidthWithMargins(View child) {
+        LayoutParams lp = (LayoutParams) child.getLayoutParams();
+        return child.getMeasuredWidth() + lp.startMargin + lp.endMargin;
+    }
+
+    private void measureChildWithFixedWidth(View child, int width) {
+        int widthSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY);
+        int heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
+        child.measure(widthSpec, heightSpec);
+    }
+
+    /**
+     * The button group has different layout properties (margins, gravity, etc) when placed on the
+     * main row as opposed to on a separate row. This updates the layout properties of the button
+     * group to prepare for placing it on either the main row or a separate row.
+     *
+     * @param row One of ROW_MAIN or ROW_OTHER.
+     */
+    private void updateButtonGroupForRow(int row) {
+        int startEndMargin = row == ROW_MAIN ? mMargin : 0;
+        mButtonGroup.setHorizontalMode(mMargin / 2, startEndMargin, startEndMargin);
+        mButtonGroup.gravity = Gravity.END;
+
+        if (row == ROW_OTHER && mButtonGroup.views.length >= 2) {
+            int extraWidth = availableWidth() - getWidthWithMargins(mButtonGroup);
+            if (extraWidth < 0) {
+                // Group is too wide to fit on a single row, so stack the group items vertically.
+                mButtonGroup.setVerticalMode(mMargin / 2, 0);
+                mButtonGroup.gravity = Gravity.FILL_HORIZONTAL;
+            } else if (mButtonGroup.views.length == 3) {
+                // Align tertiary button at the start and the other two buttons at the end.
+                ((LayoutParams) mButtonGroup.views[0].getLayoutParams()).endMargin += extraWidth;
+            }
+        }
+    }
+
+    /**
+     * Analagous to updateButtonGroupForRow(), but for the custom group istead of the button group.
+     */
+    private void updateCustomGroupForRow(int row) {
+        int startEndMargin = row == ROW_MAIN ? mMargin : 0;
+        mCustomGroup.setHorizontalMode(mMargin, startEndMargin, startEndMargin);
+        mCustomGroup.gravity = Gravity.START;
+
+        if (row == ROW_OTHER && mCustomGroup.views.length == 2) {
+            int extraWidth = availableWidth() - getWidthWithMargins(mCustomGroup);
+            if (extraWidth < 0) {
+                // Group is too wide to fit on a single row, so stack the group items vertically.
+                mCustomGroup.setVerticalMode(0, mMargin);
+                mCustomGroup.gravity = Gravity.FILL_HORIZONTAL;
             } else {
-                cumulativeHeight += computeRowHeight(rowStart, rowEnd);
-            }
-        }
-
-        return cumulativeHeight;
-    }
-
-    /**
-     * Computes how tall the main row is.
-     * @param rowStart Index of the first child.
-     * @param rowEnd One past the index of the last child.
-     */
-    private int computeMainRowHeight(int rowStart, int rowEnd) {
-        // The icon and close button already have their margins baked into their padding values,
-        // but the other Views have a margin above and below.
-        final int verticalMargins = mDimensionMargin * 2;
-        int rowHeight = mDimensionMinSize;
-        for (int i = rowStart; i < rowEnd; i++) {
-            View child = getChildAt(i);
-            if (child == mCloseButton || child == mIconView || child.getVisibility() == View.GONE) {
-                continue;
-            }
-            rowHeight = Math.max(rowHeight, child.getMeasuredHeight() + verticalMargins);
-        }
-        return rowHeight;
-    }
-
-    /**
-     * Computes how tall a row below the main row is.
-     *
-     * Margins are only applied downward since the rows above are handling the margin on their side.
-     * Buttons ignore margins since they have to be right against the boundary.
-     *
-     * @param rowStart Index of the first child.
-     * @param rowEnd One past the index of the last child.
-     */
-    private int computeRowHeight(int rowStart, int rowEnd) {
-        boolean isButtonRow = isButton(getChildAt(rowStart));
-        final int verticalMargins = isButtonRow ? 0 : mDimensionMargin;
-        int rowHeight = 0;
-        for (int i = rowStart; i < rowEnd; i++) {
-            final View child = getChildAt(i);
-            if (child.getVisibility() == View.GONE) continue;
-            rowHeight = Math.max(rowHeight, child.getMeasuredHeight() + verticalMargins);
-        }
-        return rowHeight;
-    }
-
-    /**
-     * Determines if the given View is either the primary or secondary button.
-     * @param child View to check.
-     * @return Whether the child is the primary or secondary button.
-     */
-    private boolean isButton(View child) {
-        return child.getId() == R.id.button_secondary || child.getId() == R.id.button_primary;
-    }
-
-    /**
-     * Update the backgrounds for the buttons to account for their current positioning.
-     * The primary and secondary buttons are special-cased in that their backgrounds change to
-     * create the illusion of a single-stroke boundary between them.
-     */
-    private void updateBackgroundsForButtons() {
-        boolean bothButtonsExist = findViewById(R.id.button_primary) != null
-                && findViewById(R.id.button_secondary) != null;
-
-        for (int row = 0; row < mIndicesOfRows.size() - 1; row++) {
-            final int rowStart = mIndicesOfRows.get(row);
-            final int rowEnd = mIndicesOfRows.get(row + 1);
-            final int rowSize = rowEnd - rowStart;
-
-            for (int i = rowStart; i < rowEnd; i++) {
-                final View child = getChildAt(i);
-                if (child.getVisibility() == View.GONE || !isButton(child)) continue;
-
-                // Determine which background we need to show.
-                int background;
-                if (row == 0) {
-                    // Button will be floating.
-                    background = mBackgroundFloating;
-                } else if (rowSize == 1 || !bothButtonsExist) {
-                    // Button takes up the full width of the screen.
-                    background = mBackgroundFullRight;
-                } else if (mLayoutRTL) {
-                    // Primary button will be to the left of the secondary.
-                    background = child.getId() == R.id.button_primary
-                            ? mBackgroundFullLeft : mBackgroundFullRight;
-                } else {
-                    // Primary button will be to the right of the secondary.
-                    background = child.getId() == R.id.button_primary
-                            ? mBackgroundFullRight : mBackgroundFullLeft;
-                }
-
-                // Update the background.
-                LayoutParams params = (LayoutParams) child.getLayoutParams();
-                if (params.background != background) {
-                    params.background = background;
-
-                    // Save the padding; Android decides to overwrite it on some builds.
-                    int paddingLeft = child.getPaddingLeft();
-                    int paddingTop = child.getPaddingTop();
-                    int paddingRight = child.getPaddingRight();
-                    int paddingBottom = child.getPaddingBottom();
-                    int buttonWidth = child.getMeasuredWidth();
-                    int buttonHeight = child.getMeasuredHeight();
-
-                    // Set the background, then restore the padding.
-                    child.setBackgroundResource(background);
-                    child.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
-
-                    // Re-measuring is necessary to correct the text gravity.
-                    int specWidth = MeasureSpec.makeMeasureSpec(buttonWidth, MeasureSpec.EXACTLY);
-                    int specHeight = MeasureSpec.makeMeasureSpec(buttonHeight, MeasureSpec.EXACTLY);
-                    measureChild(child, specWidth, specHeight);
-                }
+                // Expand the children to take up the entire row.
+                View view0 = mCustomGroup.views[0];
+                View view1 = mCustomGroup.views[1];
+                int extraWidth0 = extraWidth / 2;
+                int extraWidth1 = extraWidth - extraWidth0;
+                measureChildWithFixedWidth(view0, view0.getMeasuredWidth() + extraWidth0);
+                measureChildWithFixedWidth(view1, view1.getMeasuredWidth() + extraWidth1);
             }
         }
     }
@@ -760,14 +550,20 @@
      */
     @Override
     public void onClick(View view) {
-        mInfoBarView.setControlsEnabled(false);
+        // Disable the infobar controls unless the user clicked the tertiary button, which by
+        // convention is the "learn more" link.
+        if (view.getId() != R.id.button_tertiary) {
+            mInfoBarView.setControlsEnabled(false);
+        }
+
         if (view.getId() == R.id.infobar_close_button) {
             mInfoBarView.onCloseButtonClicked();
         } else if (view.getId() == R.id.button_primary) {
             mInfoBarView.onButtonClicked(true);
         } else if (view.getId() == R.id.button_secondary) {
             mInfoBarView.onButtonClicked(false);
+        } else if (view.getId() == R.id.button_tertiary) {
+            mInfoBarView.onLinkClicked();
         }
     }
-
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarView.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarView.java
index 49d5ebd..44d1c76 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/InfoBarView.java
@@ -4,52 +4,24 @@
 
 package org.chromium.chrome.browser.infobar;
 
-import android.content.Context;
 
 /**
  * Functions needed to display an InfoBar UI.
  */
 public interface InfoBarView {
     /**
-     * Prepare the InfoBar for display and adding InfoBar-specific controls to the layout.
+     * Prepares the InfoBar for display and adds InfoBar-specific controls to the layout.
      * @param layout Layout containing all of the controls.
      */
     public void createContent(InfoBarLayout layout);
 
     /**
-     * Returns the message indicating what the InfoBar is informing or asking the user about.
-     * @param context Context to pull the string from.
-     * @return The string to display.
-     */
-    public CharSequence getMessageText(Context context);
-
-    /**
-     * Returns text to display on the primary button indicating that some action will be taken.
-     * Setting this to null prevents the button from being created.
-     * @param context Context to pull the string from.
-     * @return The string to display.
-     */
-    public String getPrimaryButtonText(Context context);
-
-    /**
-     * Returns text to display on the secondary button, typically indicating that some action will
-     * not be taken.
-     *
-     * Example text includes "Cancel" or "Nope".  Setting this to null prevents the button from
-     * being created.  It is illegal to have a secondary button without a primary button.
-     *
-     * @param context Context to pull the string from.
-     * @return The string to display.
-     */
-    public String getSecondaryButtonText(Context context);
-
-    /**
-     * Take some action related to the link being clicked.
+     * Takes some action related to the link being clicked.
      */
     public void onLinkClicked();
 
     /**
-     * Take some action related to the close button being clicked.
+     * Takes some action related to the close button being clicked.
      */
     public void onCloseButtonClicked();
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/MessageInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/MessageInfoBar.java
index 20c3aea..941f0e2 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/MessageInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/MessageInfoBar.java
@@ -4,66 +4,33 @@
 
 package org.chromium.chrome.browser.infobar;
 
-import android.content.Context;
-
-import org.chromium.chrome.R;
 
 /**
  * A simple infobar that contains a message and a close icon on the right side.
  * This is used only in the context of Java code and is not associated with any native
  * InfoBarDelegate.
+ *
+ * TODO(newt): merge this into InfoBar.java
  */
 public class MessageInfoBar extends InfoBar {
-    private final CharSequence mTitle;
 
     /**
-     * Creates and returns an infobar with a white background and a close button on the right.
+     * Creates an infobar with a message and a close button.
      * @param title the text displayed in the infobar
-     * @return the infobar.
      */
-    public static MessageInfoBar createInfoBar(CharSequence title) {
-        return new MessageInfoBar(null, 0, title, BACKGROUND_TYPE_INFO);
+    public MessageInfoBar(CharSequence title) {
+        this(null, 0, title);
     }
 
     /**
-     * Creates and returns an infobar with a white background and a close button on the right.
-     * @param iconResourceId the icon shown on the right
-     * @param title the text displayed in the infobar
-     * @return the infobar.
+     * Creates an infobar with an icon, a message and a close button.
+     * @param listener A listener to be notified when the infobar is dismissed, or null.
+     * @param iconResourceId The icon to display in the infobar, or 0 if no icon should be shown.
+     * @param title The text to display in the infobar.
      */
-    public static MessageInfoBar createInfoBar(int iconResourceId, CharSequence title) {
-        return new MessageInfoBar(null, iconResourceId, title, BACKGROUND_TYPE_INFO);
-    }
-
-    /**
-     * Creates a warning infobar, with a yellow background and a warning icon on the right.
-     * @param title the text displayed in the infobar
-     * @return the infobar.
-     */
-    public static MessageInfoBar createWarningInfoBar(CharSequence title) {
-        return createWarningInfoBar(null, title);
-    }
-
-    /**
-     * Creates a warning infobar, with a yellow background and a warning icon on the right.
-     * @param listener an infobar dismissed listener
-     * @param title the text displayed in the infobar
-     * @return the infobar.
-     */
-    public static MessageInfoBar createWarningInfoBar(InfoBarListeners.Dismiss listener,
+    public MessageInfoBar(InfoBarListeners.Dismiss listener, int iconResourceId,
             CharSequence title) {
-        return new MessageInfoBar(listener, R.drawable.warning, title, BACKGROUND_TYPE_WARNING);
-    }
-
-    protected MessageInfoBar(InfoBarListeners.Dismiss listener, int iconResourceId,
-            CharSequence title, int backgroundType) {
-        super(listener, backgroundType, iconResourceId);
-        mTitle = title;
-    }
-
-    @Override
-    public CharSequence getMessageText(Context context) {
-        return mTitle;
+        super(listener, iconResourceId, title);
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/SavePasswordInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/SavePasswordInfoBar.java
index 5788a60..0584270 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/SavePasswordInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/SavePasswordInfoBar.java
@@ -20,8 +20,8 @@
     public SavePasswordInfoBar(long nativeInfoBar, SavePasswordInfoBarDelegate delegate,
             int iconDrawableId, String message, String primaryButtonText,
             String secondaryButtonText) {
-        super(nativeInfoBar, null, InfoBar.BACKGROUND_TYPE_WARNING, iconDrawableId,
-                message, null, primaryButtonText, secondaryButtonText);
+        super(nativeInfoBar, null, iconDrawableId, message,
+                null, primaryButtonText, secondaryButtonText);
         mNativeInfoBar = nativeInfoBar;
         mDelegate = delegate;
     }
@@ -32,7 +32,7 @@
             mUseAdditionalAuthenticationCheckbox = new CheckBox(getContext());
             mUseAdditionalAuthenticationCheckbox.setText(
                     PasswordAuthenticationManager.getPasswordProtectionString());
-            layout.addGroup(mUseAdditionalAuthenticationCheckbox);
+            layout.setCustomContent(mUseAdditionalAuthenticationCheckbox);
         }
 
         super.createContent(layout);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateAlwaysPanel.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateAlwaysPanel.java
index e0d413b..a3de964 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateAlwaysPanel.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateAlwaysPanel.java
@@ -4,7 +4,6 @@
 package org.chromium.chrome.browser.infobar;
 
 import android.content.Context;
-import android.widget.TextView;
 
 import org.chromium.chrome.R;
 
@@ -23,16 +22,15 @@
 
     @Override
     public void createContent(Context context, InfoBarLayout layout) {
-        TextView panelMessage = (TextView) layout.findViewById(R.id.infobar_message);
-        panelMessage.setText(context.getString(
+        layout.setMessage(context.getString(
                 R.string.translate_infobar_translation_done, mOptions.targetLanguage()));
 
         if (!mOptions.triggeredFromMenu()) {
-            TranslateCheckBox checkBox = new TranslateCheckBox(mOptions, mListener);
-            checkBox.createContent(context, layout);
+            TranslateCheckBox checkBox = new TranslateCheckBox(context, mOptions, mListener);
+            layout.setCustomContent(checkBox);
         }
 
-        layout.addButtons(context.getString(R.string.translate_button_done),
+        layout.setButtons(context.getString(R.string.translate_button_done),
                 context.getString(R.string.translate_show_original));
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCheckBox.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCheckBox.java
index 1b2ba16..4cf4f85 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCheckBox.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCheckBox.java
@@ -6,38 +6,35 @@
 import android.content.Context;
 import android.widget.CheckBox;
 import android.widget.CompoundButton;
+import android.widget.CompoundButton.OnCheckedChangeListener;
 
 import org.chromium.chrome.R;
 
 /**
  * A check box used to determine if a page should always be translated.
  */
-public class TranslateCheckBox {
+public class TranslateCheckBox extends CheckBox implements OnCheckedChangeListener {
     private final SubPanelListener mListener;
     private final TranslateOptions mOptions;
 
-    public TranslateCheckBox(TranslateOptions options, SubPanelListener listener) {
+    public TranslateCheckBox(Context context, TranslateOptions options, SubPanelListener listener) {
+        super(context);
         mOptions = options;
         mListener = listener;
+
+        setId(R.id.infobar_extra_check);
+        setText(context.getString(R.string.translate_always_text, mOptions.sourceLanguage()));
+        setChecked(mOptions.alwaysTranslateLanguageState());
+        setOnCheckedChangeListener(this);
     }
 
-    public void createContent(Context context, InfoBarLayout layout) {
-        CheckBox checkBox = new CheckBox(context);
-        checkBox.setId(R.id.infobar_extra_check);
-        checkBox.setText(context.getString(R.string.translate_always_text,
-                mOptions.sourceLanguage()));
-        checkBox.setChecked(mOptions.alwaysTranslateLanguageState());
-        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
-            @Override
-            public void onCheckedChanged(CompoundButton view, boolean isChecked) {
-                mOptions.toggleAlwaysTranslateLanguageState(isChecked);
-                if (isChecked) {
-                    mListener.onPanelClosed(InfoBar.ACTION_TYPE_NONE);
-                } else {
-                    mListener.onOptionsChanged();
-                }
-            }
-        });
-        layout.addGroup(checkBox);
+    @Override
+    public void onCheckedChanged(CompoundButton view, boolean isChecked) {
+        mOptions.toggleAlwaysTranslateLanguageState(isChecked);
+        if (isChecked) {
+            mListener.onPanelClosed(InfoBar.ACTION_TYPE_NONE);
+        } else {
+            mListener.onOptionsChanged();
+        }
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java
index 9300c01..56cc46e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateInfoBar.java
@@ -19,7 +19,7 @@
 /**
  * Java version of the translate infobar
  */
-public class TranslateInfoBar extends TwoButtonInfoBar implements SubPanelListener {
+public class TranslateInfoBar extends InfoBar implements SubPanelListener {
     // Needs to be kept in sync with the Type enum in translate_infobar_delegate.h.
     public static final int BEFORE_TRANSLATE_INFOBAR = 0;
     public static final int TRANSLATING_INFOBAR = 1;
@@ -45,9 +45,7 @@
             int infoBarType, int sourceLanguageIndex, int targetLanguageIndex,
             boolean autoTranslatePair, boolean shouldShowNeverBar,
             boolean triggeredFromMenu, String[] languages) {
-        super(null, BACKGROUND_TYPE_INFO,
-                R.drawable.infobar_translate);
-
+        super(null, R.drawable.infobar_translate, null);
         mTranslateDelegate = delegate;
         mOptions = new TranslateOptions(sourceLanguageIndex, targetLanguageIndex, languages,
                 autoTranslatePair, triggeredFromMenu);
@@ -112,8 +110,7 @@
         return action;
     }
 
-    @Override
-    public CharSequence getMessageText(Context context) {
+    private CharSequence getMessageText(Context context) {
         switch (getInfoBarType()) {
             case BEFORE_TRANSLATE_INFOBAR:
                 String template = context.getString(R.string.translate_infobar_text);
@@ -138,8 +135,7 @@
         }
     }
 
-    @Override
-    public String getPrimaryButtonText(Context context) {
+    private String getPrimaryButtonText(Context context) {
         switch (getInfoBarType()) {
             case BEFORE_TRANSLATE_INFOBAR:
                 return context.getString(R.string.translate_button);
@@ -155,8 +151,7 @@
         }
     }
 
-    @Override
-    public String getSecondaryButtonText(Context context) {
+    private String getSecondaryButtonText(Context context) {
         switch (getInfoBarType()) {
             case BEFORE_TRANSLATE_INFOBAR:
                 return context.getString(R.string.translate_nope);
@@ -182,15 +177,17 @@
             return;
         }
 
+        Context context = layout.getContext();
+        layout.setMessage(getMessageText(context));
+        layout.setButtons(getPrimaryButtonText(context), getSecondaryButtonText(context));
+
         if (getInfoBarType() == AFTER_TRANSLATE_INFOBAR &&
                 !needsAlwaysPanel() &&
                 !mOptions.triggeredFromMenu()) {
             // Long always translate version
-             TranslateCheckBox checkBox = new TranslateCheckBox(mOptions, this);
-             checkBox.createContent(getContext(), layout);
+            TranslateCheckBox checkBox = new TranslateCheckBox(context, mOptions, this);
+            layout.setCustomContent(checkBox);
         }
-
-        super.createContent(layout);
     }
 
     // SubPanelListener implementation
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateLanguagePanel.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateLanguagePanel.java
index 7375eb3..fb48247 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateLanguagePanel.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateLanguagePanel.java
@@ -70,15 +70,14 @@
         mTargetSpinner = null;
 
         String changeLanguage = context.getString(R.string.translate_infobar_change_languages);
-        TextView panelMessage = (TextView) layout.findViewById(R.id.infobar_message);
-        panelMessage.setText(changeLanguage);
+        layout.setMessage(changeLanguage);
 
         // Set up the spinners.
         createSpinners(context);
-        layout.addGroup(mSourceSpinner, mTargetSpinner);
+        layout.setCustomContent(mSourceSpinner, mTargetSpinner);
 
         // Set up the buttons.
-        layout.addButtons(context.getString(R.string.translate_button_done),
+        layout.setButtons(context.getString(R.string.translate_button_done),
                 context.getString(R.string.cancel));
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateNeverPanel.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateNeverPanel.java
index 882ba38..81a5fe8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateNeverPanel.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateNeverPanel.java
@@ -4,7 +4,6 @@
 package org.chromium.chrome.browser.infobar;
 
 import android.content.Context;
-import android.widget.TextView;
 
 import org.chromium.chrome.R;
 
@@ -25,11 +24,9 @@
     public void createContent(Context context, InfoBarLayout layout) {
         String changeLanguage = context.getString(
                 R.string.translate_never_translate_message_text, mOptions.sourceLanguage());
+        layout.setMessage(changeLanguage);
 
-        TextView panelMessage = (TextView) layout.findViewById(R.id.infobar_message);
-        panelMessage.setText(changeLanguage);
-
-        layout.addButtons(
+        layout.setButtons(
                 context.getString(R.string.translate_never_translate_site),
                 context.getString(R.string.translate_never_translate_language,
                         mOptions.sourceLanguage()));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TwoButtonInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TwoButtonInfoBar.java
deleted file mode 100644
index 4f3b951..0000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TwoButtonInfoBar.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.chrome.browser.infobar;
-
-import android.content.Context;
-import android.widget.Button;
-
-import org.chromium.chrome.R;
-
-/**
- * An infobar that presents the user with up to 2 buttons.
- */
-public abstract class TwoButtonInfoBar extends InfoBar {
-    public TwoButtonInfoBar(InfoBarListeners.Dismiss dismissListener, int backgroundType,
-            int iconDrawableId) {
-        super(dismissListener, backgroundType, iconDrawableId);
-    }
-
-    /**
-     * Creates controls for the current InfoBar.
-     * @param layout InfoBarLayout to find controls in.
-     */
-    @Override
-    public void createContent(InfoBarLayout layout) {
-        Context context = layout.getContext();
-        layout.addButtons(getPrimaryButtonText(context), getSecondaryButtonText(context));
-    }
-
-    @Override
-    public void setControlsEnabled(boolean state) {
-        super.setControlsEnabled(state);
-
-        // Handle the buttons.
-        ContentWrapperView wrapper = getContentWrapper(false);
-        if (wrapper != null) {
-            Button primary = (Button) wrapper.findViewById(R.id.button_primary);
-            Button secondary = (Button) wrapper.findViewById(R.id.button_secondary);
-            if (primary != null) primary.setEnabled(state);
-            if (secondary != null) secondary.setEnabled(state);
-        }
-    }
-}
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index f16662f..9f3efbc 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -2078,6 +2078,12 @@
                    desc="In Title Case: Download context menu: Show information about interrupted downloads">
             &amp;More Information
           </message>
+        </if>  <!-- not use_titlecase -->
+        <if expr="is_win">
+          <message name="IDS_DOWNLOAD_MENU_ALWAYS_OPEN_PDF_IN_READER"
+                   desc="Download context menu: Open when download using Adobe Reader">
+            Always open in Adobe Reader
+          </message>
         </if>
       </if>
 
diff --git a/chrome/app/theme/default_100_percent/common/infobar_autofill.png b/chrome/app/theme/default_100_percent/common/infobar_autofill_cc.png
similarity index 100%
rename from chrome/app/theme/default_100_percent/common/infobar_autofill.png
rename to chrome/app/theme/default_100_percent/common/infobar_autofill_cc.png
Binary files differ
diff --git a/chrome/app/theme/default_200_percent/common/infobar_autofill.png b/chrome/app/theme/default_200_percent/common/infobar_autofill_cc.png
similarity index 100%
rename from chrome/app/theme/default_200_percent/common/infobar_autofill.png
rename to chrome/app/theme/default_200_percent/common/infobar_autofill_cc.png
Binary files differ
diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd
index 772214b..fa8ff52 100644
--- a/chrome/app/theme/theme_resources.grd
+++ b/chrome/app/theme/theme_resources.grd
@@ -402,7 +402,7 @@
       </if>
       <structure type="chrome_scaled_image" name="IDR_INFOBAR_3D_BLOCKED" file="common/infobar_3d_blocked.png" />
       <structure type="chrome_scaled_image" name="IDR_INFOBAR_ALT_NAV_URL" file="common/infobar_alt_nav_url.png" />
-      <structure type="chrome_scaled_image" name="IDR_INFOBAR_AUTOFILL" file="common/infobar_autofill.png" />
+      <structure type="chrome_scaled_image" name="IDR_INFOBAR_AUTOFILL_CC" file="common/infobar_autofill_cc.png" />
       <structure type="chrome_scaled_image" name="IDR_INFOBAR_AUTOLOGIN" file="common/infobar_autologin.png" />
       <structure type="chrome_scaled_image" name="IDR_INFOBAR_COOKIE" file="common/infobar_cookie.png" />
       <structure type="chrome_scaled_image" name="IDR_INFOBAR_DESKTOP_NOTIFICATIONS" file="common/infobar_desktop_notifications.png" />
diff --git a/chrome/browser/android/resource_id.h b/chrome/browser/android/resource_id.h
index 3bac565..ccf61fd 100644
--- a/chrome/browser/android/resource_id.h
+++ b/chrome/browser/android/resource_id.h
@@ -14,27 +14,20 @@
 DEFINE_RESOURCE_ID(0, 0)
 
 // InfoBar resources.
-DEFINE_RESOURCE_ID(IDR_INFOBAR_ALT_NAV_URL, R.drawable.infobar_didyoumean)
-DEFINE_RESOURCE_ID(IDR_INFOBAR_AUTOFILL, R.drawable.infobar_autofill)
-DEFINE_RESOURCE_ID(IDR_INFOBAR_AUTOLOGIN, R.drawable.infobar_autologin)
-DEFINE_RESOURCE_ID(IDR_INFOBAR_COOKIE, R.drawable.infobar_cookie)
-DEFINE_RESOURCE_ID(IDR_INFOBAR_DESKTOP_NOTIFICATIONS,\
-                   R.drawable.infobar_desktop_notifications)
+DEFINE_RESOURCE_ID(IDR_INFOBAR_AUTOFILL_CC, R.drawable.infobar_autofill_cc)
+DEFINE_RESOURCE_ID(IDR_INFOBAR_AUTOLOGIN,\
+                   R.drawable.infobar_savepassword_autologin)
 DEFINE_RESOURCE_ID(IDR_INFOBAR_GEOLOCATION, R.drawable.infobar_geolocation)
 DEFINE_RESOURCE_ID(IDR_INFOBAR_MEDIA_STREAM_CAMERA, R.drawable.infobar_camera)
 DEFINE_RESOURCE_ID(IDR_INFOBAR_MEDIA_STREAM_MIC, R.drawable.infobar_microphone)
 DEFINE_RESOURCE_ID(IDR_INFOBAR_MIDI, R.drawable.infobar_midi)
 DEFINE_RESOURCE_ID(IDR_INFOBAR_MULTIPLE_DOWNLOADS,\
                    R.drawable.infobar_multiple_downloads)
-DEFINE_RESOURCE_ID(IDR_INFOBAR_PLUGIN_CRASHED,\
-                   R.drawable.infobar_plugin_crashed)
-DEFINE_RESOURCE_ID(IDR_INFOBAR_PLUGIN_INSTALL, R.drawable.infobar_plugin)
 DEFINE_RESOURCE_ID(IDR_INFOBAR_PROTECTED_MEDIA_IDENTIFIER,
                    R.drawable.infobar_protected_media_identifier)
-DEFINE_RESOURCE_ID(IDR_INFOBAR_RESTORE_SESSION, R.drawable.infobar_restore)
-DEFINE_RESOURCE_ID(IDR_INFOBAR_SAVE_PASSWORD, R.drawable.infobar_savepassword)
+DEFINE_RESOURCE_ID(IDR_INFOBAR_SAVE_PASSWORD,\
+                   R.drawable.infobar_savepassword_autologin)
 DEFINE_RESOURCE_ID(IDR_INFOBAR_WARNING, R.drawable.infobar_warning)
-DEFINE_RESOURCE_ID(IDR_INFOBAR_THEME, R.drawable.infobar_theme)
 DEFINE_RESOURCE_ID(IDR_INFOBAR_TRANSLATE, R.drawable.infobar_translate)
 DEFINE_RESOURCE_ID(IDR_BLOCKED_POPUPS, R.drawable.infobar_blocked_popups)
 
diff --git a/chrome/browser/android/signin/signin_manager_android.cc b/chrome/browser/android/signin/signin_manager_android.cc
index 37cd951..858384c 100644
--- a/chrome/browser/android/signin/signin_manager_android.cc
+++ b/chrome/browser/android/signin/signin_manager_android.cc
@@ -23,6 +23,7 @@
 #include "components/bookmarks/browser/bookmark_model.h"
 #include "components/signin/core/browser/profile_oauth2_token_service.h"
 #include "components/signin/core/browser/signin_manager.h"
+#include "components/signin/core/browser/signin_metrics.h"
 #include "components/signin/core/common/profile_management_switches.h"
 #include "jni/SigninManager_jni.h"
 
@@ -133,7 +134,8 @@
 }
 
 void SigninManagerAndroid::SignOut(JNIEnv* env, jobject obj) {
-  SigninManagerFactory::GetForProfile(profile_)->SignOut();
+  SigninManagerFactory::GetForProfile(profile_)->SignOut(
+      signin_metrics::USER_CLICKED_SIGNOUT_SETTINGS);
 }
 
 base::android::ScopedJavaLocalRef<jstring>
diff --git a/chrome/browser/autofill/autofill_cc_infobar_delegate.cc b/chrome/browser/autofill/autofill_cc_infobar_delegate.cc
index 3bad774..7d13104 100644
--- a/chrome/browser/autofill/autofill_cc_infobar_delegate.cc
+++ b/chrome/browser/autofill/autofill_cc_infobar_delegate.cc
@@ -58,7 +58,7 @@
 }
 
 int AutofillCCInfoBarDelegate::GetIconID() const {
-  return IDR_INFOBAR_AUTOFILL;
+  return IDR_INFOBAR_AUTOFILL_CC;
 }
 
 infobars::InfoBarDelegate::Type AutofillCCInfoBarDelegate::GetInfoBarType()
diff --git a/chrome/browser/chromeos/input_method/input_method_engine.cc b/chrome/browser/chromeos/input_method/input_method_engine.cc
index f8e6c87..540766a 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine.cc
+++ b/chrome/browser/chromeos/input_method/input_method_engine.cc
@@ -470,14 +470,6 @@
   return active_;
 }
 
-void InputMethodEngine::KeyEventDone(input_method::KeyEventHandle* key_data,
-                                     bool handled) {
-  KeyEventDoneCallback* callback =
-      reinterpret_cast<KeyEventDoneCallback*>(key_data);
-  callback->Run(handled);
-  delete callback;
-}
-
 bool InputMethodEngine::DeleteSurroundingText(int context_id,
                                               int offset,
                                               size_t number_of_chars,
diff --git a/chrome/browser/chromeos/input_method/input_method_engine.h b/chrome/browser/chromeos/input_method/input_method_engine.h
index 716d136..d841a57 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine.h
+++ b/chrome/browser/chromeos/input_method/input_method_engine.h
@@ -77,8 +77,6 @@
   virtual bool SetMenuItems(const std::vector<MenuItem>& items) OVERRIDE;
   virtual bool UpdateMenuItems(const std::vector<MenuItem>& items) OVERRIDE;
   virtual bool IsActive() const OVERRIDE;
-  virtual void KeyEventDone(input_method::KeyEventHandle* key_data,
-                            bool handled) OVERRIDE;
   virtual bool DeleteSurroundingText(int context_id,
                                      int offset,
                                      size_t number_of_chars,
diff --git a/chrome/browser/chromeos/input_method/input_method_engine_interface.h b/chrome/browser/chromeos/input_method/input_method_engine_interface.h
index f60ed45..71d4298 100644
--- a/chrome/browser/chromeos/input_method/input_method_engine_interface.h
+++ b/chrome/browser/chromeos/input_method/input_method_engine_interface.h
@@ -231,10 +231,6 @@
   // Returns true if this IME is active, false if not.
   virtual bool IsActive() const = 0;
 
-  // Inform the engine that a key event has been processed.
-  virtual void KeyEventDone(input_method::KeyEventHandle* key_data,
-                            bool handled) = 0;
-
   // Deletes |number_of_chars| unicode characters as the basis of |offset| from
   // the surrounding text. The |offset| is relative position based on current
   // caret.
diff --git a/chrome/browser/chromeos/input_method/mock_input_method_engine.cc b/chrome/browser/chromeos/input_method/mock_input_method_engine.cc
index fe104e3..2c3228a 100644
--- a/chrome/browser/chromeos/input_method/mock_input_method_engine.cc
+++ b/chrome/browser/chromeos/input_method/mock_input_method_engine.cc
@@ -90,10 +90,6 @@
   return true;
 }
 
-void MockInputMethodEngine::KeyEventDone(input_method::KeyEventHandle* key_data,
-                                         bool handled) {
-}
-
 bool MockInputMethodEngine::DeleteSurroundingText(int context_id,
                                                   int offset,
                                                   size_t number_of_chars,
diff --git a/chrome/browser/chromeos/input_method/mock_input_method_engine.h b/chrome/browser/chromeos/input_method/mock_input_method_engine.h
index 3dc6173..c22ac5d 100644
--- a/chrome/browser/chromeos/input_method/mock_input_method_engine.h
+++ b/chrome/browser/chromeos/input_method/mock_input_method_engine.h
@@ -66,8 +66,6 @@
   virtual bool SetMenuItems(const std::vector<MenuItem>& items) OVERRIDE;
   virtual bool UpdateMenuItems(const std::vector<MenuItem>& items) OVERRIDE;
   virtual bool IsActive() const OVERRIDE;
-  virtual void KeyEventDone(input_method::KeyEventHandle* key_data,
-                            bool handled) OVERRIDE;
   virtual bool DeleteSurroundingText(int context_id,
                                      int offset,
                                      size_t number_of_chars,
diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc
index 2a8d6c6..8e81539 100644
--- a/chrome/browser/download/chrome_download_manager_delegate.cc
+++ b/chrome/browser/download/chrome_download_manager_delegate.cc
@@ -184,29 +184,6 @@
   return mime_type;
 }
 
-bool IsOpenInBrowserPreferreredForFile(const base::FilePath& path) {
-  // On Android, always prefer opening with an external app. On ChromeOS, there
-  // are no external apps so just allow all opens to be handled by the "System."
-#if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) && defined(ENABLE_PLUGINS)
-  // TODO(asanka): Consider other file types and MIME types.
-  // http://crbug.com/323561
-  if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf")) ||
-      path.MatchesExtension(FILE_PATH_LITERAL(".htm")) ||
-      path.MatchesExtension(FILE_PATH_LITERAL(".html")) ||
-      path.MatchesExtension(FILE_PATH_LITERAL(".shtm")) ||
-      path.MatchesExtension(FILE_PATH_LITERAL(".shtml")) ||
-      path.MatchesExtension(FILE_PATH_LITERAL(".svg")) ||
-      path.MatchesExtension(FILE_PATH_LITERAL(".xht")) ||
-      path.MatchesExtension(FILE_PATH_LITERAL(".xhtm")) ||
-      path.MatchesExtension(FILE_PATH_LITERAL(".xhtml")) ||
-      path.MatchesExtension(FILE_PATH_LITERAL(".xsl")) ||
-      path.MatchesExtension(FILE_PATH_LITERAL(".xslt"))) {
-    return true;
-  }
-#endif
-  return false;
-}
-
 }  // namespace
 
 ChromeDownloadManagerDelegate::ChromeDownloadManagerDelegate(Profile* profile)
@@ -722,3 +699,35 @@
                target_info->danger_type,
                target_info->intermediate_path);
 }
+
+bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile(
+    const base::FilePath& path) {
+  // On Windows, PDFs should open in Acrobat Reader if the user chooses.
+#if defined(OS_WIN)
+  if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf")) &&
+      DownloadTargetDeterminer::IsAdobeReaderUpToDate()) {
+    return !download_prefs_->ShouldOpenPdfInAdobeReader();
+  }
+#endif
+
+  // On Android, always prefer opening with an external app. On ChromeOS, there
+  // are no external apps so just allow all opens to be handled by the "System."
+#if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) && defined(ENABLE_PLUGINS)
+  // TODO(asanka): Consider other file types and MIME types.
+  // http://crbug.com/323561
+  if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf")) ||
+      path.MatchesExtension(FILE_PATH_LITERAL(".htm")) ||
+      path.MatchesExtension(FILE_PATH_LITERAL(".html")) ||
+      path.MatchesExtension(FILE_PATH_LITERAL(".shtm")) ||
+      path.MatchesExtension(FILE_PATH_LITERAL(".shtml")) ||
+      path.MatchesExtension(FILE_PATH_LITERAL(".svg")) ||
+      path.MatchesExtension(FILE_PATH_LITERAL(".xht")) ||
+      path.MatchesExtension(FILE_PATH_LITERAL(".xhtm")) ||
+      path.MatchesExtension(FILE_PATH_LITERAL(".xhtml")) ||
+      path.MatchesExtension(FILE_PATH_LITERAL(".xsl")) ||
+      path.MatchesExtension(FILE_PATH_LITERAL(".xslt"))) {
+    return true;
+  }
+#endif
+  return false;
+}
diff --git a/chrome/browser/download/chrome_download_manager_delegate.h b/chrome/browser/download/chrome_download_manager_delegate.h
index 7cf2c45..ff89300 100644
--- a/chrome/browser/download/chrome_download_manager_delegate.h
+++ b/chrome/browser/download/chrome_download_manager_delegate.h
@@ -170,6 +170,9 @@
       const content::DownloadTargetCallback& callback,
       scoped_ptr<DownloadTargetInfo> target_info);
 
+  // Returns true if |path| should open in the browser.
+  bool IsOpenInBrowserPreferreredForFile(const base::FilePath& path);
+
   Profile* profile_;
   uint32 next_download_id_;
   IdCallbackVector id_callbacks_;
diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download/download_prefs.cc
index 750e11b..99abc2c 100644
--- a/chrome/browser/download/download_prefs.cc
+++ b/chrome/browser/download/download_prefs.cc
@@ -22,6 +22,7 @@
 #include "chrome/browser/download/download_extensions.h"
 #include "chrome/browser/download/download_service.h"
 #include "chrome/browser/download/download_service_factory.h"
+#include "chrome/browser/download/download_target_determiner.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/common/chrome_paths.h"
@@ -37,6 +38,10 @@
 #include "chrome/browser/chromeos/file_manager/path_util.h"
 #endif
 
+#if defined(OS_WIN)
+#include "chrome/browser/ui/pdf/adobe_reader_info_win.h"
+#endif
+
 using content::BrowserContext;
 using content::BrowserThread;
 using content::DownloadManager;
@@ -91,7 +96,7 @@
   DISALLOW_COPY_AND_ASSIGN(DefaultDownloadDirectory);
 };
 
-static base::LazyInstance<DefaultDownloadDirectory>
+base::LazyInstance<DefaultDownloadDirectory>
     g_default_download_directory = LAZY_INSTANCE_INITIALIZER;
 
 }  // namespace
@@ -126,6 +131,11 @@
                  GetDefaultDownloadDirectoryForProfile()));
 #endif  // defined(OS_CHROMEOS)
 
+#if defined(OS_WIN)
+  should_open_pdf_in_adobe_reader_ =
+      prefs->GetBoolean(prefs::kOpenPdfDownloadInAdobeReader);
+#endif
+
   // If the download path is dangerous we forcefully reset it. But if we do
   // so we set a flag to make sure we only do it once, to avoid fighting
   // the user if he really wants it on an unsafe place such as the desktop.
@@ -194,6 +204,12 @@
       prefs::kSaveFileDefaultDirectory,
       default_download_path,
       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
+#if defined(OS_WIN)
+  registry->RegisterBooleanPref(
+      prefs::kOpenPdfDownloadInAdobeReader,
+      false,
+      user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
+#endif
 }
 
 base::FilePath DownloadPrefs::GetDefaultDownloadDirectoryForProfile() const {
@@ -268,6 +284,10 @@
 }
 
 bool DownloadPrefs::IsAutoOpenUsed() const {
+#if defined(OS_WIN)
+  if (ShouldOpenPdfInAdobeReader())
+    return true;
+#endif
   return !auto_open_.empty();
 }
 
@@ -278,6 +298,12 @@
     return false;
   DCHECK(extension[0] == base::FilePath::kExtensionSeparator);
   extension.erase(0, 1);
+#if defined(OS_WIN)
+  if (extension == FILE_PATH_LITERAL("pdf") &&
+      DownloadTargetDeterminer::IsAdobeReaderUpToDate() &&
+      ShouldOpenPdfInAdobeReader())
+    return true;
+#endif
   return auto_open_.find(extension) != auto_open_.end();
 }
 
@@ -305,7 +331,24 @@
   SaveAutoOpenState();
 }
 
+#if defined(OS_WIN)
+void DownloadPrefs::SetShouldOpenPdfInAdobeReader(bool should_open) {
+  if (should_open_pdf_in_adobe_reader_ == should_open)
+    return;
+  should_open_pdf_in_adobe_reader_ = should_open;
+  profile_->GetPrefs()->SetBoolean(prefs::kOpenPdfDownloadInAdobeReader,
+                                   should_open);
+}
+
+bool DownloadPrefs::ShouldOpenPdfInAdobeReader() const {
+  return should_open_pdf_in_adobe_reader_;
+}
+#endif
+
 void DownloadPrefs::ResetAutoOpen() {
+#if defined(OS_WIN)
+  SetShouldOpenPdfInAdobeReader(false);
+#endif
   auto_open_.clear();
   SaveAutoOpenState();
 }
diff --git a/chrome/browser/download/download_prefs.h b/chrome/browser/download/download_prefs.h
index eca19d3..8d3db57 100644
--- a/chrome/browser/download/download_prefs.h
+++ b/chrome/browser/download/download_prefs.h
@@ -73,6 +73,15 @@
   // Disables auto-open based on file extension.
   void DisableAutoOpenBasedOnExtension(const base::FilePath& file_name);
 
+#if defined(OS_WIN)
+  // Store the user preference to disk. If |should_open| is true, also disable
+  // the built-in PDF plugin. If |should_open| is false, enable the PDF plugin.
+  void SetShouldOpenPdfInAdobeReader(bool should_open);
+
+  // Return whether the user prefers to open PDF downloads in Adobe Reader.
+  bool ShouldOpenPdfInAdobeReader() const;
+#endif
+
   void ResetAutoOpen();
 
  private:
@@ -94,6 +103,10 @@
                    AutoOpenCompareFunctor> AutoOpenSet;
   AutoOpenSet auto_open_;
 
+#if defined(OS_WIN)
+  bool should_open_pdf_in_adobe_reader_;
+#endif
+
   DISALLOW_COPY_AND_ASSIGN(DownloadPrefs);
 };
 
diff --git a/chrome/browser/download/download_shelf_context_menu.cc b/chrome/browser/download/download_shelf_context_menu.cc
index b7f0858..55704c9 100644
--- a/chrome/browser/download/download_shelf_context_menu.cc
+++ b/chrome/browser/download/download_shelf_context_menu.cc
@@ -9,6 +9,7 @@
 #include "chrome/browser/download/download_crx_util.h"
 #include "chrome/browser/download/download_item_model.h"
 #include "chrome/browser/download/download_prefs.h"
+#include "chrome/browser/download/download_target_determiner.h"
 #include "chrome/browser/safe_browsing/download_protection_service.h"
 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
 #include "chrome/common/url_constants.h"
@@ -20,15 +21,18 @@
 #include "grit/generated_resources.h"
 #include "ui/base/l10n/l10n_util.h"
 
+#if defined(OS_WIN)
+#include "chrome/browser/ui/pdf/adobe_reader_info_win.h"
+#endif
+
 using content::DownloadItem;
-using extensions::Extension;
 
 namespace {
 
 // Returns true if downloads resumption is enabled.
 bool IsDownloadResumptionEnabled() {
-  const CommandLine& command_line = *CommandLine::ForCurrentProcess();
-  return command_line.HasSwitch(switches::kEnableDownloadResumption);
+  return base::CommandLine::ForCurrentProcess()->HasSwitch(
+      switches::kEnableDownloadResumption);
 }
 
 }  // namespace
@@ -44,6 +48,14 @@
       navigator_(navigator) {
   DCHECK(download_item_);
   download_item_->AddObserver(this);
+
+#if defined(OS_WIN)
+  is_pdf_reader_up_to_date_ = false;
+  if (IsDownloadPdf() && IsAdobeReaderDefaultPDFViewer()) {
+    is_pdf_reader_up_to_date_ =
+        DownloadTargetDeterminer::IsAdobeReaderUpToDate();
+  }
+#endif  // defined(OS_WIN)
 }
 
 ui::SimpleMenuModel* DownloadShelfContextMenu::GetMenuModel() {
@@ -97,6 +109,7 @@
     case LEARN_MORE_INTERRUPTED:
       return true;
   }
+  NOTREACHED();
   return false;
 }
 
@@ -109,6 +122,13 @@
       return download_item_->GetOpenWhenComplete() ||
           download_crx_util::IsExtensionDownload(*download_item_);
     case ALWAYS_OPEN_TYPE:
+#if defined(OS_WIN)
+      if (CanOpenPdfInReader()) {
+        DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(
+            download_item_->GetBrowserContext());
+        return prefs->ShouldOpenPdfInAdobeReader();
+      }
+#endif
       return download_item_->ShouldOpenFileBasedOnExtension();
     case TOGGLE_PAUSE:
       return download_item_->IsPaused();
@@ -116,6 +136,16 @@
   return false;
 }
 
+bool DownloadShelfContextMenu::IsCommandIdVisible(int command_id) const {
+  if (!download_item_)
+    return false;
+
+  if (command_id == PLATFORM_OPEN)
+    return (DownloadItemModel(download_item_).ShouldPreferOpeningInBrowser());
+
+  return true;
+}
+
 void DownloadShelfContextMenu::ExecuteCommand(int command_id, int event_flags) {
   if (!download_item_)
     return;
@@ -128,13 +158,22 @@
       download_item_->OpenDownload();
       break;
     case ALWAYS_OPEN_TYPE: {
+      bool is_checked = IsCommandIdChecked(ALWAYS_OPEN_TYPE);
       DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(
           download_item_->GetBrowserContext());
+#if defined(OS_WIN)
+      if (CanOpenPdfInReader()) {
+        prefs->SetShouldOpenPdfInAdobeReader(!is_checked);
+        DownloadItemModel(download_item_).SetShouldPreferOpeningInBrowser(
+            is_checked);
+        break;
+      }
+#endif
       base::FilePath path = download_item_->GetTargetFilePath();
-      if (!IsCommandIdChecked(ALWAYS_OPEN_TYPE))
-        prefs->EnableAutoOpenBasedOnExtension(path);
-      else
+      if (is_checked)
         prefs->DisableAutoOpenBasedOnExtension(path);
+      else
+        prefs->EnableAutoOpenBasedOnExtension(path);
       break;
     }
     case PLATFORM_OPEN:
@@ -203,7 +242,7 @@
         return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE);
       return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_OPEN);
     case ALWAYS_OPEN_TYPE:
-      return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
+      return l10n_util::GetStringUTF16(GetAlwaysOpenStringId());
     case PLATFORM_OPEN:
       return l10n_util::GetStringUTF16(IDS_DOWNLOAD_MENU_PLATFORM_OPEN);
     case CANCEL:
@@ -250,7 +289,7 @@
   in_progress_download_menu_model_->AddCheckItemWithStringId(
       OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN_WHEN_COMPLETE);
   in_progress_download_menu_model_->AddCheckItemWithStringId(
-      ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
+      ALWAYS_OPEN_TYPE, GetAlwaysOpenStringId());
   in_progress_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
   in_progress_download_menu_model_->AddItemWithStringId(
       TOGGLE_PAUSE, IDS_DOWNLOAD_MENU_PAUSE_ITEM);
@@ -272,10 +311,9 @@
   finished_download_menu_model_->AddItemWithStringId(
       OPEN_WHEN_COMPLETE, IDS_DOWNLOAD_MENU_OPEN);
   finished_download_menu_model_->AddCheckItemWithStringId(
-      ALWAYS_OPEN_TYPE, IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE);
-  if (DownloadItemModel(download_item_).ShouldPreferOpeningInBrowser())
-    finished_download_menu_model_->AddItemWithStringId(
-        PLATFORM_OPEN, IDS_DOWNLOAD_MENU_PLATFORM_OPEN);
+      ALWAYS_OPEN_TYPE, GetAlwaysOpenStringId());
+  finished_download_menu_model_->AddItemWithStringId(
+      PLATFORM_OPEN, IDS_DOWNLOAD_MENU_PLATFORM_OPEN);
   finished_download_menu_model_->AddSeparator(ui::NORMAL_SEPARATOR);
   finished_download_menu_model_->AddItemWithStringId(
       SHOW_IN_FOLDER, IDS_DOWNLOAD_MENU_SHOW);
@@ -333,8 +371,7 @@
   return maybe_malicious_download_menu_model_.get();
 }
 
-ui::SimpleMenuModel*
-DownloadShelfContextMenu::GetMaliciousMenuModel() {
+ui::SimpleMenuModel* DownloadShelfContextMenu::GetMaliciousMenuModel() {
   if (malicious_download_menu_model_)
     return malicious_download_menu_model_.get();
 
@@ -346,3 +383,22 @@
 
   return malicious_download_menu_model_.get();
 }
+
+int DownloadShelfContextMenu::GetAlwaysOpenStringId() const {
+#if defined(OS_WIN)
+  if (CanOpenPdfInReader())
+    return IDS_DOWNLOAD_MENU_ALWAYS_OPEN_PDF_IN_READER;
+#endif
+  return IDS_DOWNLOAD_MENU_ALWAYS_OPEN_TYPE;
+}
+
+#if defined(OS_WIN)
+bool DownloadShelfContextMenu::IsDownloadPdf() const {
+  base::FilePath path = download_item_->GetTargetFilePath();
+  return path.MatchesExtension(FILE_PATH_LITERAL(".pdf"));
+}
+
+bool DownloadShelfContextMenu::CanOpenPdfInReader() const {
+  return (is_pdf_reader_up_to_date_ && IsDownloadPdf());
+}
+#endif
diff --git a/chrome/browser/download/download_shelf_context_menu.h b/chrome/browser/download/download_shelf_context_menu.h
index 15b6504..a5d8a5e 100644
--- a/chrome/browser/download/download_shelf_context_menu.h
+++ b/chrome/browser/download/download_shelf_context_menu.h
@@ -52,6 +52,7 @@
   // ui::SimpleMenuModel::Delegate:
   virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE;
   virtual bool IsCommandIdChecked(int command_id) const OVERRIDE;
+  virtual bool IsCommandIdVisible(int command_id) const OVERRIDE;
   virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE;
   virtual bool GetAcceleratorForCommandId(
       int command_id,
@@ -73,6 +74,13 @@
   ui::SimpleMenuModel* GetMaybeMaliciousMenuModel();
   ui::SimpleMenuModel* GetMaliciousMenuModel();
 
+  int GetAlwaysOpenStringId() const;
+
+#if defined(OS_WIN)
+  bool IsDownloadPdf() const;
+  bool CanOpenPdfInReader() const;
+#endif
+
   // We show slightly different menus if the download is in progress vs. if the
   // download has finished.
   scoped_ptr<ui::SimpleMenuModel> in_progress_download_menu_model_;
@@ -87,6 +95,10 @@
   // Used to open tabs.
   content::PageNavigator* navigator_;
 
+#if defined(OS_WIN)
+  bool is_pdf_reader_up_to_date_;
+#endif
+
   DISALLOW_COPY_AND_ASSIGN(DownloadShelfContextMenu);
 };
 
diff --git a/chrome/browser/download/download_target_determiner.cc b/chrome/browser/download/download_target_determiner.cc
index e7bb16d..971a904 100644
--- a/chrome/browser/download/download_target_determiner.cc
+++ b/chrome/browser/download/download_target_determiner.cc
@@ -33,6 +33,10 @@
 #include "content/public/common/webplugininfo.h"
 #endif
 
+#if defined(OS_WIN)
+#include "chrome/browser/ui/pdf/adobe_reader_info_win.h"
+#endif
+
 using content::BrowserThread;
 using content::DownloadItem;
 
@@ -56,7 +60,12 @@
       (first_visit.LocalMidnight() < base::Time::Now().LocalMidnight()));
 }
 
-} // namespace
+#if defined(OS_WIN)
+// Keeps track of whether Adobe Reader is up to date.
+bool g_is_adobe_reader_up_to_date_ = false;
+#endif
+
+}  // namespace
 
 DownloadTargetInfo::DownloadTargetInfo()
     : is_filetype_handled_safely(false) {}
@@ -131,6 +140,9 @@
       case STATE_DETERMINE_IF_HANDLED_SAFELY_BY_BROWSER:
         result = DoDetermineIfHandledSafely();
         break;
+      case STATE_DETERMINE_IF_ADOBE_READER_UP_TO_DATE:
+        result = DoDetermineIfAdobeReaderUpToDate();
+        break;
       case STATE_CHECK_DOWNLOAD_URL:
         result = DoCheckDownloadUrl();
         break;
@@ -447,8 +459,8 @@
       BrowserThread::UI, FROM_HERE, base::Bind(callback, is_handled_safely));
 }
 
-} // namespace
-#endif  // ENABLE_PLUGINS
+}  // namespace
+#endif  // defined(ENABLE_PLUGINS)
 
 DownloadTargetDeterminer::Result
     DownloadTargetDeterminer::DoDetermineIfHandledSafely() {
@@ -457,7 +469,7 @@
   DCHECK(!local_path_.empty());
   DCHECK(!is_filetype_handled_safely_);
 
-  next_state_ = STATE_CHECK_DOWNLOAD_URL;
+  next_state_ = STATE_DETERMINE_IF_ADOBE_READER_UP_TO_DATE;
 
   if (mime_type_.empty())
     return CONTINUE;
@@ -485,14 +497,51 @@
 #endif
 }
 
+#if defined(ENABLE_PLUGINS)
 void DownloadTargetDeterminer::DetermineIfHandledSafelyDone(
     bool is_handled_safely) {
   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
   DVLOG(20) << "Is file type handled safely: " << is_filetype_handled_safely_;
-  DCHECK_EQ(STATE_CHECK_DOWNLOAD_URL, next_state_);
+  DCHECK_EQ(STATE_DETERMINE_IF_ADOBE_READER_UP_TO_DATE, next_state_);
   is_filetype_handled_safely_ = is_handled_safely;
   DoLoop();
 }
+#endif
+
+DownloadTargetDeterminer::Result
+    DownloadTargetDeterminer::DoDetermineIfAdobeReaderUpToDate() {
+  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+  next_state_ = STATE_CHECK_DOWNLOAD_URL;
+
+#if defined(OS_WIN)
+  if (!local_path_.MatchesExtension(FILE_PATH_LITERAL(".pdf")))
+    return CONTINUE;
+  if (!IsAdobeReaderDefaultPDFViewer())
+    return CONTINUE;
+
+  base::PostTaskAndReplyWithResult(
+      BrowserThread::GetBlockingPool(),
+      FROM_HERE,
+      base::Bind(&::IsAdobeReaderUpToDate),
+      base::Bind(&DownloadTargetDeterminer::DetermineIfAdobeReaderUpToDateDone,
+                 weak_ptr_factory_.GetWeakPtr()));
+  return QUIT_DOLOOP;
+#else
+  return CONTINUE;
+#endif
+}
+
+#if defined(OS_WIN)
+void DownloadTargetDeterminer::DetermineIfAdobeReaderUpToDateDone(
+    bool adobe_reader_up_to_date) {
+  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+  DVLOG(20) << "Is Adobe Reader Up To Date: " << adobe_reader_up_to_date;
+  DCHECK_EQ(STATE_CHECK_DOWNLOAD_URL, next_state_);
+  g_is_adobe_reader_up_to_date_ = adobe_reader_up_to_date;
+  DoLoop();
+}
+#endif
 
 DownloadTargetDeterminer::Result
     DownloadTargetDeterminer::DoCheckDownloadUrl() {
@@ -821,3 +870,10 @@
     const base::FilePath& suggested_path) {
   return base::FilePath(suggested_path.value() + kCrdownloadSuffix);
 }
+
+#if defined(OS_WIN)
+// static
+bool DownloadTargetDeterminer::IsAdobeReaderUpToDate() {
+  return g_is_adobe_reader_up_to_date_;
+}
+#endif
diff --git a/chrome/browser/download/download_target_determiner.h b/chrome/browser/download/download_target_determiner.h
index a244331..4f6e5c0 100644
--- a/chrome/browser/download/download_target_determiner.h
+++ b/chrome/browser/download/download_target_determiner.h
@@ -79,6 +79,13 @@
   // Returns a .crdownload intermediate path for the |suggested_path|.
   static base::FilePath GetCrDownloadPath(const base::FilePath& suggested_path);
 
+#if defined(OS_WIN)
+  // Returns true if Adobe Reader is up to date. This information refreshed
+  // only when Start() gets called for a PDF and Adobe Reader is the default
+  // System PDF viewer.
+  static bool IsAdobeReaderUpToDate();
+#endif
+
  private:
   // The main workflow is controlled via a set of state transitions. Each state
   // has an associated handler. The handler for STATE_FOO is DoFoo. Each handler
@@ -93,6 +100,7 @@
     STATE_DETERMINE_LOCAL_PATH,
     STATE_DETERMINE_MIME_TYPE,
     STATE_DETERMINE_IF_HANDLED_SAFELY_BY_BROWSER,
+    STATE_DETERMINE_IF_ADOBE_READER_UP_TO_DATE,
     STATE_CHECK_DOWNLOAD_URL,
     STATE_CHECK_VISITED_REFERRER_BEFORE,
     STATE_DETERMINE_INTERMEDIATE_PATH,
@@ -205,12 +213,26 @@
   // Determine if the file type can be handled safely by the browser if it were
   // to be opened via a file:// URL.
   // Next state:
-  // - STATE_CHECK_DOWNLOAD_URL.
+  // - STATE_DETERMINE_IF_ADOBE_READER_UP_TO_DATE.
   Result DoDetermineIfHandledSafely();
 
+#if defined(ENABLE_PLUGINS)
   // Callback invoked when a decision is available about whether the file type
   // can be handled safely by the browser.
   void DetermineIfHandledSafelyDone(bool is_handled_safely);
+#endif
+
+  // Determine if Adobe Reader is up to date. Only do the check on Windows for
+  // .pdf file targets.
+  // Next state:
+  // - STATE_CHECK_DOWNLOAD_URL.
+  Result DoDetermineIfAdobeReaderUpToDate();
+
+#if defined(OS_WIN)
+  // Callback invoked when a decision is available about whether Adobe Reader
+  // is up to date.
+  void DetermineIfAdobeReaderUpToDateDone(bool adobe_reader_up_to_date);
+#endif
 
   // Checks whether the downloaded URL is malicious. Invokes the
   // DownloadProtectionService via the delegate.
diff --git a/chrome/browser/extensions/api/identity/account_tracker_unittest.cc b/chrome/browser/extensions/api/identity/account_tracker_unittest.cc
index 998462a..216aa3e 100644
--- a/chrome/browser/extensions/api/identity/account_tracker_unittest.cc
+++ b/chrome/browser/extensions/api/identity/account_tracker_unittest.cc
@@ -330,7 +330,7 @@
   void NotifyRemoveAccount(const std::string& username) {
 #if !defined(OS_CHROMEOS)
     if (username == kPrimaryAccountKey)
-      fake_signin_manager_->SignOut();
+      fake_signin_manager_->SignOut(signin_metrics::SIGNOUT_TEST);
     else
       account_tracker()->GoogleSignedOut(username);
 #else
diff --git a/chrome/browser/extensions/api/input_ime/input_ime_api.cc b/chrome/browser/extensions/api/input_ime/input_ime_api.cc
index 2ae8213..b698b8b 100644
--- a/chrome/browser/extensions/api/input_ime/input_ime_api.cc
+++ b/chrome/browser/extensions/api/input_ime/input_ime_api.cc
@@ -7,12 +7,15 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/values.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
+#include "chrome/browser/extensions/extension_service.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/common/extensions/api/input_ime.h"
 #include "chrome/common/extensions/api/input_ime/input_components_handler.h"
 #include "extensions/browser/event_router.h"
 #include "extensions/browser/extension_function_registry.h"
 #include "extensions/browser/extension_registry.h"
+#include "extensions/browser/extension_system.h"
+#include "extensions/common/manifest_handlers/background_info.h"
 
 #if defined(USE_X11)
 #include "chrome/browser/chromeos/input_method/input_method_engine.h"
@@ -80,13 +83,32 @@
       ->DispatchEventToExtension(extension_id, event.Pass());
 }
 
+void CallbackKeyEventHandle(chromeos::input_method::KeyEventHandle* key_data,
+                            bool handled) {
+  base::Callback<void(bool consumed)>* callback =
+      reinterpret_cast<base::Callback<void(bool consumed)>*>(key_data);
+  callback->Run(handled);
+  delete callback;
+}
+
 }  // namespace
 
 namespace chromeos {
 class ImeObserver : public InputMethodEngineInterface::Observer {
  public:
   ImeObserver(Profile* profile, const std::string& extension_id)
-      : profile_(profile), extension_id_(extension_id) {}
+      : profile_(profile), extension_id_(extension_id), has_background_(false) {
+    extensions::ExtensionSystem* extension_system =
+        extensions::ExtensionSystem::Get(profile_);
+    ExtensionService* extension_service = extension_system->extension_service();
+    const extensions::Extension* extension =
+        extension_service->GetExtensionById(extension_id, false);
+    DCHECK(extension);
+    extensions::BackgroundInfo* info = static_cast<extensions::BackgroundInfo*>(
+        extension->GetManifestData("background"));
+    if (info)
+      has_background_ = info->has_background_page();
+  }
 
   virtual ~ImeObserver() {}
 
@@ -163,13 +185,10 @@
 
     // If there is no listener for the event, no need to dispatch the event to
     // extension. Instead, releases the key event for default system behavior.
-    if (!HasKeyEventListener()) {
+    if (!ShouldForwardKeyEvent()) {
       // Continue processing the key event so that the physical keyboard can
       // still work.
-      base::Callback<void(bool consumed)>* callback =
-          reinterpret_cast<base::Callback<void(bool consumed)>*>(key_data);
-      callback->Run(false);
-      delete callback;
+      CallbackKeyEventHandle(key_data, false);
       return;
     }
 
@@ -281,14 +300,20 @@
   }
 
  private:
-  bool HasKeyEventListener() const {
-    return extensions::EventRouter::Get(profile_)
+  // Returns true if the extension is ready to accept key event, otherwise
+  // returns false.
+  bool ShouldForwardKeyEvent() const {
+    // Need to check the background page first since the
+    // ExtensionHasEventListner returns true if the extension does not have a
+    // background page. See crbug.com/394682.
+    return has_background_ && extensions::EventRouter::Get(profile_)
         ->ExtensionHasEventListener(extension_id_,
                                     input_ime::OnKeyEvent::kEventName);
   }
 
   Profile* profile_;
   std::string extension_id_;
+  bool has_background_;
 
   DISALLOW_COPY_AND_ASSIGN(ImeObserver);
 };
@@ -412,13 +437,7 @@
   chromeos::input_method::KeyEventHandle* key_data = request->second.second;
   request_map_.erase(request);
 
-  InputMethodEngineInterface* engine = GetEngine(extension_id, engine_id);
-  if (!engine) {
-    LOG(ERROR) << "Engine does not exist: " << engine_id;
-    return;
-  }
-
-  engine->KeyEventDone(key_data, handled);
+  CallbackKeyEventHandle(key_data, handled);
 }
 
 std::string InputImeEventRouter::AddRequest(
diff --git a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
index e5fd06b..43fefca 100644
--- a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
+++ b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
@@ -342,7 +342,7 @@
   }
 
   void SignOut() {
-    signin_manager_->SignOut();
+    signin_manager_->SignOut(signin_metrics::SIGNOUT_TEST);
     waiter_.PumpIOLoop();
   }
 
diff --git a/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc b/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc
index b6deb41..adcaa80 100644
--- a/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc
+++ b/chrome/browser/policy/cloud/component_cloud_policy_browsertest.cc
@@ -214,7 +214,7 @@
     SigninManager* signin_manager =
         SigninManagerFactory::GetForProfile(browser()->profile());
     ASSERT_TRUE(signin_manager);
-    signin_manager->SignOut();
+    signin_manager->SignOut(signin_metrics::SIGNOUT_TEST);
   }
 #endif
 
diff --git a/chrome/browser/policy/cloud/user_policy_signin_service_unittest.cc b/chrome/browser/policy/cloud/user_policy_signin_service_unittest.cc
index 70b6ee9..51db158 100644
--- a/chrome/browser/policy/cloud/user_policy_signin_service_unittest.cc
+++ b/chrome/browser/policy/cloud/user_policy_signin_service_unittest.cc
@@ -87,7 +87,7 @@
   void ForceSignOut() {
     // Allow signing out now.
     prohibit_signout_ = false;
-    SignOut();
+    SignOut(signin_metrics::SIGNOUT_TEST);
   }
 
   static KeyedService* Build(content::BrowserContext* profile) {
@@ -569,7 +569,8 @@
   EXPECT_CALL(*mock_store_, Clear());
 
   // Now sign out.
-  SigninManagerFactory::GetForProfile(profile_.get())->SignOut();
+  SigninManagerFactory::GetForProfile(profile_.get())->SignOut(
+      signin_metrics::SIGNOUT_TEST);
 
   // UserCloudPolicyManager should be shut down.
   ASSERT_FALSE(manager_->core()->service());
diff --git a/chrome/browser/profiles/gaia_info_update_service_unittest.cc b/chrome/browser/profiles/gaia_info_update_service_unittest.cc
index bb91052..ae618a0 100644
--- a/chrome/browser/profiles/gaia_info_update_service_unittest.cc
+++ b/chrome/browser/profiles/gaia_info_update_service_unittest.cc
@@ -173,7 +173,7 @@
   EXPECT_FALSE(service()->GetCachedPictureURL().empty());
 
   // Log out.
-  signin_manager->SignOut();
+  signin_manager->SignOut(signin_metrics::SIGNOUT_TEST);
   // Verify that the GAIA name and picture, and picture URL are unset.
   EXPECT_TRUE(GetCache()->GetGAIANameOfProfileAtIndex(0).empty());
   EXPECT_EQ(NULL, GetCache()->GetGAIAPictureOfProfileAtIndex(0));
diff --git a/chrome/browser/resources/chromeos/about_os_credits.html b/chrome/browser/resources/chromeos/about_os_credits.html
index 11547a0..c3a6fe8 100644
--- a/chrome/browser/resources/chromeos/about_os_credits.html
+++ b/chrome/browser/resources/chromeos/about_os_credits.html
@@ -250,6 +250,19 @@
 
 
 <div class="product">
+<span class="title">audiotest-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">autoconf-2.13</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.gnu.org/software/autoconf/autoconf.html">homepage</a></span>
@@ -328,6 +341,527 @@
 
 
 <div class="product">
+<span class="title">autotest-all-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-chrome-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-client-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-deps-0.0.4</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-deps-cellular-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-deps-glbench-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-deps-glmark2-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="https://launchpad.net/glmark2">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-3'>Gentoo Package Stock License GPL-3</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-deps-graphics-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-deps-ltp-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-deps-p2p-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-deps-piglit-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://cgit.freedesktop.org/piglit">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+<li><a href='#LGPL-3'>Gentoo Package Stock License LGPL-3</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-deps-touchpad-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-deps-webgl-mpd-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-deps-webgl-perf-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-factory-install-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-fakemodem-conf-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-private-0.2.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-private-all-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-private-tests-echoprivate-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-private-tests-pagecycler-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-private-tests-quickoffice-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-server-tests-0.0.2</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-server-tests-bluetooth-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-server-tests-shill-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-server-tests-telemetry-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-0.0.3</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-audio-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-cellular-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-cros-disks-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-cryptohome-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-debugd-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-graphics-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-ltp-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-ownershipapi-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-p2p-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-power-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-security-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-shill-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-touchpad-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">autotest-tests-tpm-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">avahi-0.6.31</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://avahi.org/">homepage</a></span>
@@ -367,6 +901,19 @@
 
 
 <div class="product">
+<span class="title">avtest_label_detect-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">baselayout-2.0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://src.chromium.org/">homepage</a></span>
@@ -393,6 +940,198 @@
 
 
 <div class="product">
+<span class="title">beaker-1.5.4</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://beaker.groovie.org/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License Beaker-1.5.4/Beaker.egg-info/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: Beaker
+Version: 1.5.4
+Summary: A Session and Caching library with WSGI Middleware
+Home-page: http://beaker.groovie.org
+Author: Ben Bangert, Mike Bayer, Philip Jenvey
+Author-email: ben@groovie.org, pjenvey@groovie.org
+License: BSD
+Description: Cache and Session Library
+        +++++++++++++++++++++++++
+        
+        About
+        =====
+        
+        Beaker is a web session and general caching library that includes WSGI 
+        middleware for use in web applications.
+        
+        As a general caching library, Beaker can handle storing for various times
+        any Python object that can be pickled with optional back-ends on a 
+        fine-grained basis.
+        
+        Beaker was built largely on the code from MyghtyUtils, then refactored and
+        extended with database support.
+        
+        Beaker includes Cache and Session WSGI middleware to ease integration with
+        WSGI capable frameworks, and is automatically used by `Pylons 
+        &lt;http://pylonshq.com/&gt;`_.
+        
+        
+        Features
+        ========
+        
+        * Fast, robust performance
+        * Multiple reader/single writer lock system to avoid duplicate simultaneous 
+          cache creation
+        * Cache back-ends include dbm, file, memory, memcached, and database (Using
+          SQLAlchemy for multiple-db vendor support)
+        * Signed cookie's to prevent session hijacking/spoofing
+        * Cookie-only sessions to remove the need for a db or file backend (ideal 
+          for clustered systems)
+        * Extensible Container object to support new back-ends
+        * Cache's can be divided into namespaces (to represent templates, objects, 
+          etc.) then keyed for different copies
+        * Create functions for automatic call-backs to create new cache copies after
+          expiration
+        * Fine-grained toggling of back-ends, keys, and expiration per Cache object
+        
+        
+        Documentation
+        =============
+        
+        Documentation can be found on the `Official Beaker Docs site
+        &lt;http://beaker.groovie.org/&gt;`_.
+        
+        
+        Source
+        ======
+        
+        The latest developer version is available in a `Mercurial repository
+        &lt;http://bitbucket.org/bbangert/beaker/get/tip.gz#egg=Beaker-dev&gt;`_.
+        
+Keywords: wsgi myghty session web cache middleware
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Programming Language :: Python
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License Beaker-1.5.4/LICENSE:
+
+Copyright (c) 2006, 2007 Ben Bangert, Mike Bayer, Philip Jenvey
+                         and contributors.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. 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.
+3. The name of the author or contributors may not be used to endorse or
+   promote products derived from this software without specific prior
+   written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License Beaker-1.5.4/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: Beaker
+Version: 1.5.4
+Summary: A Session and Caching library with WSGI Middleware
+Home-page: http://beaker.groovie.org
+Author: Ben Bangert, Mike Bayer, Philip Jenvey
+Author-email: ben@groovie.org, pjenvey@groovie.org
+License: BSD
+Description: Cache and Session Library
+        +++++++++++++++++++++++++
+        
+        About
+        =====
+        
+        Beaker is a web session and general caching library that includes WSGI 
+        middleware for use in web applications.
+        
+        As a general caching library, Beaker can handle storing for various times
+        any Python object that can be pickled with optional back-ends on a 
+        fine-grained basis.
+        
+        Beaker was built largely on the code from MyghtyUtils, then refactored and
+        extended with database support.
+        
+        Beaker includes Cache and Session WSGI middleware to ease integration with
+        WSGI capable frameworks, and is automatically used by `Pylons 
+        &lt;http://pylonshq.com/&gt;`_.
+        
+        
+        Features
+        ========
+        
+        * Fast, robust performance
+        * Multiple reader/single writer lock system to avoid duplicate simultaneous 
+          cache creation
+        * Cache back-ends include dbm, file, memory, memcached, and database (Using
+          SQLAlchemy for multiple-db vendor support)
+        * Signed cookie's to prevent session hijacking/spoofing
+        * Cookie-only sessions to remove the need for a db or file backend (ideal 
+          for clustered systems)
+        * Extensible Container object to support new back-ends
+        * Cache's can be divided into namespaces (to represent templates, objects, 
+          etc.) then keyed for different copies
+        * Create functions for automatic call-backs to create new cache copies after
+          expiration
+        * Fine-grained toggling of back-ends, keys, and expiration per Cache object
+        
+        
+        Documentation
+        =============
+        
+        Documentation can be found on the `Official Beaker Docs site
+        &lt;http://beaker.groovie.org/&gt;`_.
+        
+        
+        Source
+        ======
+        
+        The latest developer version is available in a `Mercurial repository
+        &lt;http://bitbucket.org/bbangert/beaker/get/tip.gz#egg=Beaker-dev&gt;`_.
+        
+Keywords: wsgi myghty session web cache middleware
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Programming Language :: Python
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">bigreqsproto-1.1.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
@@ -458,7 +1197,7 @@
 
 
 <div class="product">
-<span class="title">bluez-5.17</span>
+<span class="title">bluez-5.19</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.bluez.org/">homepage</a></span>
 <div class="licence">
@@ -552,6 +1291,63 @@
 
 
 <div class="product">
+<span class="title">btsocket-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License btsocket-0.0.1/LICENSE:
+
+// Copyright (c) 2013 The Chromium OS Authors. 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 Google 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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">busybox-1.21.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.busybox.net/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">bzip2-1.0.6</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.bzip.org/">homepage</a></span>
@@ -1263,6 +2059,110 @@
 
 
 <div class="product">
+<span class="title">cherrypy-3.2.2</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.cherrypy.org/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License CherryPy-3.2.2/CherryPy.egg-info/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: CherryPy
+Version: 3.2.2
+Summary: Object-Oriented HTTP framework
+Home-page: http://www.cherrypy.org
+Author: CherryPy Team
+Author-email: team@cherrypy.org
+License: BSD
+Download-URL: http://download.cherrypy.org/cherrypy/3.2.2/
+Description: CherryPy is a pythonic, object-oriented HTTP framework
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: Freely Distributable
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: Internet :: WWW/HTTP
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
+Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
+Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License CherryPy-3.2.2/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: CherryPy
+Version: 3.2.2
+Summary: Object-Oriented HTTP framework
+Home-page: http://www.cherrypy.org
+Author: CherryPy Team
+Author-email: team@cherrypy.org
+License: BSD
+Download-URL: http://download.cherrypy.org/cherrypy/3.2.2/
+Description: CherryPy is a pythonic, object-oriented HTTP framework
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: Freely Distributable
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: Internet :: WWW/HTTP
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
+Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
+Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Server
+Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License CherryPy-3.2.2/cherrypy/LICENSE.txt:
+
+Copyright (c) 2004-2011, CherryPy Team (team@cherrypy.org)
+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 the CherryPy Team 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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">chinese-input-1.1.0.0</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.google.com/inputtools/">homepage</a></span>
@@ -1289,20 +2189,7 @@
 
 
 <div class="product">
-<span class="title">chromeos-assets-0.0.1</span>
-<a class="show" href="#" onclick="return toggle(this);">show license text</a>
-<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
-<div class="licence">
-<pre></pre>
-<ul>
-<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
-</ul>
-</div>
-</div>
-
-
-<div class="product">
-<span class="title">chromeos-assets-split-0.1.0</span>
+<span class="title">chromeos-assets-0.0.2</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
 <div class="licence">
@@ -1380,7 +2267,7 @@
 
 
 <div class="product">
-<span class="title">chromeos-chrome-36.0.1985.19_rc</span>
+<span class="title">chromeos-chrome-37.0.2062.28_rc</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
 <div class="licence">
@@ -1407,7 +2294,7 @@
 
 
 <div class="product">
-<span class="title">chromeos-default-apps-1.1.0</span>
+<span class="title">chromeos-default-apps-1.2.0</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="">homepage</a></span>
 <div class="licence">
@@ -1420,7 +2307,59 @@
 
 
 <div class="product">
-<span class="title">chromeos-disableecho-0.0.1</span>
+<span class="title">chromeos-dev-root-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">chromeos-factory-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">chromeos-factory-board-3.0.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">chromeos-factory-regions-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">chromeos-factoryinstall-0.0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
 <div class="licence">
@@ -1472,7 +2411,7 @@
 
 
 <div class="product">
-<span class="title">chromeos-hangul-1.2.0.1</span>
+<span class="title">chromeos-hangul-1.2.0.3</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="https://code.google.com/p/google-input-tools/">homepage</a></span>
 <div class="licence">
@@ -1485,6 +2424,19 @@
 
 
 <div class="product">
+<span class="title">chromeos-hwid-0.0.2</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">chromeos-imageburner-0.0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
@@ -1511,6 +2463,19 @@
 
 
 <div class="product">
+<span class="title">chromeos-initramfs-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">chromeos-installer-0.0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
@@ -1524,6 +2489,19 @@
 
 
 <div class="product">
+<span class="title">chromeos-installshim-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">chromeos-keyboards-1.1.4.0</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="https://code.google.com/p/google-input-tools">homepage</a></span>
@@ -1563,6 +2541,58 @@
 
 
 <div class="product">
+<span class="title">chromeos-test-init-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">chromeos-test-root-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">chromeos-test-testauthkeys-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">chromite-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">chvt-0.0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="">homepage</a></span>
@@ -1576,6 +2606,142 @@
 
 
 <div class="product">
+<span class="title">ckermit-8.0.211</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.kermit-project.org/">homepage</a></span>
+<div class="licence">
+<pre>Gentoo Package Stock License Kermit:
+
+THE C-KERMIT 7.0 AND 8.0 LICENSE
+
+  Last update: Thu Feb  8 17:41:07 2002
+
+This is the new C-Kermit 7.0 and 8.0 license.  The intention is to allow
+C-Kermit to be distributed with "free" operating systems such as GNU/Linux,
+FreeBSD, NetBSD, OpenBSD, The Hurd, etc, even when the distributions
+themselves (such as Red Hat or Caldera) might be sold and/or might include
+applications that are not free, and yet still require a license to include
+C-Kermit in or with "non-free" products such as commercial OS's, commercial
+software packages, embedded systems, and hardware (other than general-purpose
+computers preloaded with "free" operating systems), since these licenses
+furnish a large portion of the Kermit Project's funding.
+
+There have been some questions about the provision in Clause (A) that:
+
+                                                                  The
+    C-Kermit source code may not be changed without the consent of the
+    Kermit Project, which will not be unreasonably withheld (this is
+    simply a matter of keeping a consistent and supportable code base).
+
+The intention of this clause is primarily to make sure that anybody who
+makes modifications sends them back to us, since we are the ones have to
+support C-Kermit, and so we can carry them through to future releases (so
+you don't have to make the same changes again and again).
+
+Secondarily it is to protect Columbia University in the unlikely event of
+modifications made with deliberate intent to offend or cause damage.
+
+Any redistributor of C-Kermit under Clause (A) below should rest assured
+there is no intention of preventing them from constructing a distribution in
+the appropriate format (RPM or whatever) for their product or from issuing
+any patches required for their products; we simply want to be informed so we
+can maintain a consistent code base and a solid, supportable software
+package.  We are happy to work with any redistributor an any issues that
+concern them.  If you have questions, send them to kermit@columbia.edu.
+
+Note: All changes to this file since 1 January 2000 (the C-Kermit 7.0
+release date) are above; the license itself has not changed, except to
+update the most recent copyright date.
+
+(Begin)
+
+Copyright (C) 1985, 2002,
+  The Trustees of Columbia University in the City of New York.
+  All rights reserved.
+
+PERMISSIONS:
+
+The C-Kermit software may be obtained directly from the Kermit Project at
+Columbia University (or from any source explicitly licensed by the Kermit
+Project or implicitly licensed by Clause (A) below) by any individual for
+his or her OWN USE, and by any company or other organization for its own
+INTERNAL DISTRIBUTION and use, including installation on servers that are
+accessed by customers or clients, WITHOUT EXPLICIT LICENSE.
+
+Conditions for REDISTRIBUTION are as follows:
+
+(A) The C-Kermit software, in source and/or binary form, may be
+    included WITHOUT EXPLICIT LICENSE in distributions of OPERATING
+    SYSTEMS that have OSI (Open Source Initiative, www.opensource.org)
+    approved licenses, even if non-Open-Source applications (but not
+    operating systems) are included in the same distribution.  Such
+    distributions include, but are not limited to, CD-ROM, FTP site,
+    Web site, or preinstalled software on a new GENERAL-PURPOSE
+    computer, as long as the primary character of the distribution is
+    an Open Source operating system with accompanying utilities.  The
+    C-Kermit source code may not be changed without the consent of the
+    Kermit Project, which will not be unreasonably withheld (this is
+    simply a matter of keeping a consistent and supportable code base).
+
+(B) Inclusion of C-Kermit software in whole or in part, in any form, in
+    or with any product not covered by Clause (A), or its distribution
+    by any commercial enterprise to its actual or potential customers
+    or clients except as in Clause (A), requires a license from the
+    Kermit Project, Columbia University; contact kermit@columbia.edu.
+
+The name of Columbia University may not be used to endorse or promote
+products derived from or including the C-Kermit software without specific
+prior written permission.
+
+DISCLAIMER:
+
+  THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE
+  TRUSTEES OF COLUMBIA UNIVERSITY IN THE CITY OF NEW YORK AS TO ITS
+  FITNESS FOR ANY PURPOSE, AND WITHOUT WARRANTY BY THE TRUSTEES OF
+  COLUMBIA UNIVERSITY IN THE CITY OF NEW YORK OF ANY KIND, EITHER
+  EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
+  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+  THE TRUSTEES OF COLUMBIA UNIVERSITY IN THE CITY OF NEW YORK SHALL NOT
+  BE LIABLE FOR ANY DAMAGES, INCLUDING SPECIAL, INDIRECT, INCIDENTAL,
+  OR CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM ARISING OUT OF OR
+  IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN IF IT HAS BEEN OR IS
+  HEREAFTER ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  YOU SHALL
+  INDEMNIFY AND HOLD HARMLESS THE TRUSTEES OF COLUMBIA UNIVERSITY IN
+  THE CITY OF NEW YORK, ITS EMPLOYEES AND AGENTS FROM AND AGAINST ANY
+  AND ALL CLAIMS, DEMANDS, LOSS, DAMAGE OR EXPENSE (INCLUDING
+  ATTORNEYS' FEES) ARISING OUT OF YOUR USE OF THIS SOFTWARE.
+
+The above copyright notice, permissions notice, and disclaimer may not be
+removed, altered, or obscured and shall be included in all copies of the
+C-Kermit software.  The Trustees of Columbia University in the City of
+New York reserve the right to revoke this permission if any of the terms
+of use set forth above are breached.
+
+(End)
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">common-assets-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">compositeproto-0.4.2</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
@@ -1634,6 +2800,19 @@
 
 
 <div class="product">
+<span class="title">confuse-2.7</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.nongnu.org/confuse/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#ISC'>Gentoo Package Stock License ISC</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">coreboot-2013.04</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.coreboot.org/">homepage</a></span>
@@ -2321,6 +3500,383 @@
 
 
 <div class="product">
+<span class="title">dbus-python-0.84.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.freedesktop.org/wiki/Software/DBusBindings">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License dbus-python-0.84.0/COPYING:
+
+As of version 0.82.4, dbus-python is released under the following permissive
+non-copyleft license (the same one used for D-Bus core):
+
+	Permission is hereby granted, free of charge, to any person
+	obtaining a copy of this software and associated documentation
+	files (the "Software"), to deal in the Software without
+	restriction, including without limitation the rights to use, copy,
+	modify, merge, publish, distribute, sublicense, and/or sell copies
+	of the Software, and to permit persons to whom the Software is
+	furnished to do so, subject to the following conditions:
+
+	The above copyright notice and this permission notice shall be
+	included in all copies or substantial portions of the Software.
+
+	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+	EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+	MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+	NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+	HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+	WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+	DEALINGS IN THE SOFTWARE.
+
+Copyright holders and licensing are indicated in the source files.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">dbus-spy-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://vidner.net/martin/software/dbus-spy/">homepage</a></span>
+<div class="licence">
+<pre>Gentoo Package Stock License CC-BY-3.0:
+
+Creative Commons Legal Code
+
+Attribution 3.0 Unported
+
+    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+    LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+    INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+    REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+    DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
+TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
+BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
+CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
+CONDITIONS.
+
+1. Definitions
+
+ a. "Adaptation" means a work based upon the Work, or upon the Work and
+    other pre-existing works, such as a translation, adaptation,
+    derivative work, arrangement of music or other alterations of a
+    literary or artistic work, or phonogram or performance and includes
+    cinematographic adaptations or any other form in which the Work may be
+    recast, transformed, or adapted including in any form recognizably
+    derived from the original, except that a work that constitutes a
+    Collection will not be considered an Adaptation for the purpose of
+    this License. For the avoidance of doubt, where the Work is a musical
+    work, performance or phonogram, the synchronization of the Work in
+    timed-relation with a moving image ("synching") will be considered an
+    Adaptation for the purpose of this License.
+ b. "Collection" means a collection of literary or artistic works, such as
+    encyclopedias and anthologies, or performances, phonograms or
+    broadcasts, or other works or subject matter other than works listed
+    in Section 1(f) below, which, by reason of the selection and
+    arrangement of their contents, constitute intellectual creations, in
+    which the Work is included in its entirety in unmodified form along
+    with one or more other contributions, each constituting separate and
+    independent works in themselves, which together are assembled into a
+    collective whole. A work that constitutes a Collection will not be
+    considered an Adaptation (as defined above) for the purposes of this
+    License.
+ c. "Distribute" means to make available to the public the original and
+    copies of the Work or Adaptation, as appropriate, through sale or
+    other transfer of ownership.
+ d. "Licensor" means the individual, individuals, entity or entities that
+    offer(s) the Work under the terms of this License.
+ e. "Original Author" means, in the case of a literary or artistic work,
+    the individual, individuals, entity or entities who created the Work
+    or if no individual or entity can be identified, the publisher; and in
+    addition (i) in the case of a performance the actors, singers,
+    musicians, dancers, and other persons who act, sing, deliver, declaim,
+    play in, interpret or otherwise perform literary or artistic works or
+    expressions of folklore; (ii) in the case of a phonogram the producer
+    being the person or legal entity who first fixes the sounds of a
+    performance or other sounds; and, (iii) in the case of broadcasts, the
+    organization that transmits the broadcast.
+ f. "Work" means the literary and/or artistic work offered under the terms
+    of this License including without limitation any production in the
+    literary, scientific and artistic domain, whatever may be the mode or
+    form of its expression including digital form, such as a book,
+    pamphlet and other writing; a lecture, address, sermon or other work
+    of the same nature; a dramatic or dramatico-musical work; a
+    choreographic work or entertainment in dumb show; a musical
+    composition with or without words; a cinematographic work to which are
+    assimilated works expressed by a process analogous to cinematography;
+    a work of drawing, painting, architecture, sculpture, engraving or
+    lithography; a photographic work to which are assimilated works
+    expressed by a process analogous to photography; a work of applied
+    art; an illustration, map, plan, sketch or three-dimensional work
+    relative to geography, topography, architecture or science; a
+    performance; a broadcast; a phonogram; a compilation of data to the
+    extent it is protected as a copyrightable work; or a work performed by
+    a variety or circus performer to the extent it is not otherwise
+    considered a literary or artistic work.
+ g. "You" means an individual or entity exercising rights under this
+    License who has not previously violated the terms of this License with
+    respect to the Work, or who has received express permission from the
+    Licensor to exercise rights under this License despite a previous
+    violation.
+ h. "Publicly Perform" means to perform public recitations of the Work and
+    to communicate to the public those public recitations, by any means or
+    process, including by wire or wireless means or public digital
+    performances; to make available to the public Works in such a way that
+    members of the public may access these Works from a place and at a
+    place individually chosen by them; to perform the Work to the public
+    by any means or process and the communication to the public of the
+    performances of the Work, including by public digital performance; to
+    broadcast and rebroadcast the Work by any means including signs,
+    sounds or images.
+ i. "Reproduce" means to make copies of the Work by any means including
+    without limitation by sound or visual recordings and the right of
+    fixation and reproducing fixations of the Work, including storage of a
+    protected performance or phonogram in digital form or other electronic
+    medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce,
+limit, or restrict any uses free from copyright or rights arising from
+limitations or exceptions that are provided for in connection with the
+copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License,
+Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+perpetual (for the duration of the applicable copyright) license to
+exercise the rights in the Work as stated below:
+
+ a. to Reproduce the Work, to incorporate the Work into one or more
+    Collections, and to Reproduce the Work as incorporated in the
+    Collections;
+ b. to create and Reproduce Adaptations provided that any such Adaptation,
+    including any translation in any medium, takes reasonable steps to
+    clearly label, demarcate or otherwise identify that changes were made
+    to the original Work. For example, a translation could be marked "The
+    original work was translated from English to Spanish," or a
+    modification could indicate "The original work has been modified.";
+ c. to Distribute and Publicly Perform the Work including as incorporated
+    in Collections; and,
+ d. to Distribute and Publicly Perform Adaptations.
+ e. For the avoidance of doubt:
+
+     i. Non-waivable Compulsory License Schemes. In those jurisdictions in
+        which the right to collect royalties through any statutory or
+        compulsory licensing scheme cannot be waived, the Licensor
+        reserves the exclusive right to collect such royalties for any
+        exercise by You of the rights granted under this License;
+    ii. Waivable Compulsory License Schemes. In those jurisdictions in
+        which the right to collect royalties through any statutory or
+        compulsory licensing scheme can be waived, the Licensor waives the
+        exclusive right to collect such royalties for any exercise by You
+        of the rights granted under this License; and,
+   iii. Voluntary License Schemes. The Licensor waives the right to
+        collect royalties, whether individually or, in the event that the
+        Licensor is a member of a collecting society that administers
+        voluntary licensing schemes, via that society, from any exercise
+        by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now
+known or hereafter devised. The above rights include the right to make
+such modifications as are technically necessary to exercise the rights in
+other media and formats. Subject to Section 8(f), all rights not expressly
+granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made
+subject to and limited by the following restrictions:
+
+ a. You may Distribute or Publicly Perform the Work only under the terms
+    of this License. You must include a copy of, or the Uniform Resource
+    Identifier (URI) for, this License with every copy of the Work You
+    Distribute or Publicly Perform. You may not offer or impose any terms
+    on the Work that restrict the terms of this License or the ability of
+    the recipient of the Work to exercise the rights granted to that
+    recipient under the terms of the License. You may not sublicense the
+    Work. You must keep intact all notices that refer to this License and
+    to the disclaimer of warranties with every copy of the Work You
+    Distribute or Publicly Perform. When You Distribute or Publicly
+    Perform the Work, You may not impose any effective technological
+    measures on the Work that restrict the ability of a recipient of the
+    Work from You to exercise the rights granted to that recipient under
+    the terms of the License. This Section 4(a) applies to the Work as
+    incorporated in a Collection, but this does not require the Collection
+    apart from the Work itself to be made subject to the terms of this
+    License. If You create a Collection, upon notice from any Licensor You
+    must, to the extent practicable, remove from the Collection any credit
+    as required by Section 4(b), as requested. If You create an
+    Adaptation, upon notice from any Licensor You must, to the extent
+    practicable, remove from the Adaptation any credit as required by
+    Section 4(b), as requested.
+ b. If You Distribute, or Publicly Perform the Work or any Adaptations or
+    Collections, You must, unless a request has been made pursuant to
+    Section 4(a), keep intact all copyright notices for the Work and
+    provide, reasonable to the medium or means You are utilizing: (i) the
+    name of the Original Author (or pseudonym, if applicable) if supplied,
+    and/or if the Original Author and/or Licensor designate another party
+    or parties (e.g., a sponsor institute, publishing entity, journal) for
+    attribution ("Attribution Parties") in Licensor's copyright notice,
+    terms of service or by other reasonable means, the name of such party
+    or parties; (ii) the title of the Work if supplied; (iii) to the
+    extent reasonably practicable, the URI, if any, that Licensor
+    specifies to be associated with the Work, unless such URI does not
+    refer to the copyright notice or licensing information for the Work;
+    and (iv) , consistent with Section 3(b), in the case of an Adaptation,
+    a credit identifying the use of the Work in the Adaptation (e.g.,
+    "French translation of the Work by Original Author," or "Screenplay
+    based on original Work by Original Author"). The credit required by
+    this Section 4(b) may be implemented in any reasonable manner;
+    provided, however, that in the case of a Adaptation or Collection, at
+    a minimum such credit will appear, if a credit for all contributing
+    authors of the Adaptation or Collection appears, then as part of these
+    credits and in a manner at least as prominent as the credits for the
+    other contributing authors. For the avoidance of doubt, You may only
+    use the credit required by this Section for the purpose of attribution
+    in the manner set out above and, by exercising Your rights under this
+    License, You may not implicitly or explicitly assert or imply any
+    connection with, sponsorship or endorsement by the Original Author,
+    Licensor and/or Attribution Parties, as appropriate, of You or Your
+    use of the Work, without the separate, express prior written
+    permission of the Original Author, Licensor and/or Attribution
+    Parties.
+ c. Except as otherwise agreed in writing by the Licensor or as may be
+    otherwise permitted by applicable law, if You Reproduce, Distribute or
+    Publicly Perform the Work either by itself or as part of any
+    Adaptations or Collections, You must not distort, mutilate, modify or
+    take other derogatory action in relation to the Work which would be
+    prejudicial to the Original Author's honor or reputation. Licensor
+    agrees that in those jurisdictions (e.g. Japan), in which any exercise
+    of the right granted in Section 3(b) of this License (the right to
+    make Adaptations) would be deemed to be a distortion, mutilation,
+    modification or other derogatory action prejudicial to the Original
+    Author's honor and reputation, the Licensor will waive or not assert,
+    as appropriate, this Section, to the fullest extent permitted by the
+    applicable national law, to enable You to reasonably exercise Your
+    right under Section 3(b) of this License (right to make Adaptations)
+    but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
+OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
+KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
+WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
+LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
+ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
+ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. This License and the rights granted hereunder will terminate
+    automatically upon any breach by You of the terms of this License.
+    Individuals or entities who have received Adaptations or Collections
+    from You under this License, however, will not have their licenses
+    terminated provided such individuals or entities remain in full
+    compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
+    survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted here is
+    perpetual (for the duration of the applicable copyright in the Work).
+    Notwithstanding the above, Licensor reserves the right to release the
+    Work under different license terms or to stop distributing the Work at
+    any time; provided, however that any such election will not serve to
+    withdraw this License (or any other license that has been, or is
+    required to be, granted under the terms of this License), and this
+    License will continue in full force and effect unless terminated as
+    stated above.
+
+8. Miscellaneous
+
+ a. Each time You Distribute or Publicly Perform the Work or a Collection,
+    the Licensor offers to the recipient a license to the Work on the same
+    terms and conditions as the license granted to You under this License.
+ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
+    offers to the recipient a license to the original Work on the same
+    terms and conditions as the license granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+    applicable law, it shall not affect the validity or enforceability of
+    the remainder of the terms of this License, and without further action
+    by the parties to this agreement, such provision shall be reformed to
+    the minimum extent necessary to make such provision valid and
+    enforceable.
+ d. No term or provision of this License shall be deemed waived and no
+    breach consented to unless such waiver or consent shall be in writing
+    and signed by the party to be charged with such waiver or consent.
+ e. This License constitutes the entire agreement between the parties with
+    respect to the Work licensed here. There are no understandings,
+    agreements or representations with respect to the Work not specified
+    here. Licensor shall not be bound by any additional provisions that
+    may appear in any communication from You. This License may not be
+    modified without the mutual written agreement of the Licensor and You.
+ f. The rights granted under, and the subject matter referenced, in this
+    License were drafted utilizing the terminology of the Berne Convention
+    for the Protection of Literary and Artistic Works (as amended on
+    September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
+    Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
+    and the Universal Copyright Convention (as revised on July 24, 1971).
+    These rights and subject matter take effect in the relevant
+    jurisdiction in which the License terms are sought to be enforced
+    according to the corresponding provisions of the implementation of
+    those treaty provisions in the applicable national law. If the
+    standard suite of rights granted under applicable copyright law
+    includes additional rights not granted under this License, such
+    additional rights are deemed to be included in the License; this
+    License is not intended to restrict the license of any rights under
+    applicable law.
+
+
+Creative Commons Notice
+
+    Creative Commons is not a party to this License, and makes no warranty
+    whatsoever in connection with the Work. Creative Commons will not be
+    liable to You or any party on any legal theory for any damages
+    whatsoever, including without limitation any general, special,
+    incidental or consequential damages arising in connection to this
+    license. Notwithstanding the foregoing two (2) sentences, if Creative
+    Commons has expressly identified itself as the Licensor hereunder, it
+    shall have all rights and obligations of Licensor.
+
+    Except for the limited purpose of indicating to the public that the
+    Work is licensed under the CCPL, Creative Commons does not authorize
+    the use by either party of the trademark "Creative Commons" or any
+    related trademark or logo of Creative Commons without the prior
+    written consent of Creative Commons. Any permitted use will be in
+    compliance with Creative Commons' then-current trademark usage
+    guidelines, as may be published on its website or otherwise made
+    available upon request from time to time. For the avoidance of doubt,
+    this trademark restriction does not form part of this License.
+
+    Creative Commons may be contacted at http://creativecommons.org/.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">dejavu-2.33</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://dejavu.sourceforge.net/">homepage</a></span>
@@ -2475,6 +4031,157 @@
 
 
 <div class="product">
+<span class="title">dhcp-4.2.2</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.isc.org/products/DHCP">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License dhcp-4.2.2/LICENSE:
+
+# Copyright (c) 2004-2011 by Internet Systems Consortium, Inc. ("ISC")
+# Copyright (c) 1995-2003 by Internet Software Consortium
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+#   Internet Systems Consortium, Inc.
+#   950 Charter Street
+#   Redwood City, CA 94063
+#   &lt;info@isc.org&gt;
+#   https://www.isc.org/
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License dhcp-4.2.2/bind/bind-9.8.0-P4/COPYRIGHT:
+
+Copyright (C) 2004-2011  Internet Systems Consortium, Inc. ("ISC")
+Copyright (C) 1996-2003  Internet Software Consortium.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+$Id: COPYRIGHT,v 1.17 2011-01-04 23:47:13 tbox Exp $
+
+Portions Copyright (C) 1996-2001  Nominum, Inc.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License dhcp-4.2.2/bind/bind-9.8.0-P4/contrib/idn/idnkit-1.0-src/LICENSE.txt:
+
+Copyright (c) 2000-2002 Japan Network Information Center.  All rights reserved.
+ 
+By using this file, you agree to the terms and conditions set forth bellow.
+
+			LICENSE TERMS AND CONDITIONS 
+
+The following License Terms and Conditions apply, unless a different
+license is obtained from Japan Network Information Center ("JPNIC"),
+a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
+Chiyoda-ku, Tokyo 101-0047, Japan.
+
+1. Use, Modification and Redistribution (including distribution of any
+   modified or derived work) in source and/or binary forms is permitted
+   under this License Terms and Conditions.
+
+2. Redistribution of source code must retain the copyright notices as they
+   appear in each source code file, this License Terms and Conditions.
+
+3. Redistribution in binary form must reproduce the Copyright Notice,
+   this License Terms and Conditions, in the documentation and/or other
+   materials provided with the distribution.  For the purposes of binary
+   distribution the "Copyright Notice" refers to the following language:
+   "Copyright (c) 2000-2002 Japan Network Information Center.  All rights reserved."
+
+4. The name of JPNIC may not be used to endorse or promote products
+   derived from this Software without specific prior written approval of
+   JPNIC.
+
+5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
+   "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 JPNIC 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 DAMAGES.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License dhcp-4.2.2/bind/bind-9.8.0-P4/contrib/zkt/LICENSE:
+
+Copyright (c) 2005 - 2008, Holger Zuleger HZnet. All rights reserved.
+
+This software is open source.
+
+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 Holger Zuleger HZnet 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 REGENTS 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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+<li><a href='#as-is'>Gentoo Package Stock License as-is</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">dhcpcd-5.1.4</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://roy.marples.name/projects/dhcpcd/">homepage</a></span>
@@ -2541,6 +4248,19 @@
 
 
 <div class="product">
+<span class="title">dnsmasq-2.50</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.thekelleys.org.uk/dnsmasq/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">docbook-xml-dtd-4.1.2</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.docbook.org/">homepage</a></span>
@@ -2567,6 +4287,66 @@
 
 
 <div class="product">
+<span class="title">dpkt-1.8</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://code.google.com/p/dpkt/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License dpkt-1.8/LICENSE:
+
+  
+  Copyright (c) 2004 Dug Song &lt;dugsong@monkey.org&gt;
+  All rights reserved, all wrongs reversed.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions
+  are met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+  2. 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.
+  3. The names of the authors and copyright holders may not be used to
+     endorse or promote products derived from this software without
+     specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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.
+
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License dpkt-1.8/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: dpkt
+Version: 1.8
+Summary: dumb packet module
+Home-page: http://dpkt.googlecode.com/
+Author: Dug Song &lt;dugsong@monkey.org&gt;
+Author-email: UNKNOWN
+License: UNKNOWN
+Description: UNKNOWN
+Platform: UNKNOWN
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">dri2proto-2.6</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
@@ -4437,6 +6217,19 @@
 
 
 <div class="product">
+<span class="title">evtest-1.29</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://cgit.freedesktop.org/evtest/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">exfat-utils-1.0.2_pre401</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://code.google.com/p/exfat/">homepage</a></span>
@@ -4489,6 +6282,65 @@
 
 
 <div class="product">
+<span class="title">fftw-3.2.2</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.fftw.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">file-5.15</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.darwinsys.com/file/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License file-5.15/COPYING:
+
+$File: COPYING,v 1.1 2008/02/05 19:08:11 christos Exp $
+Copyright (c) Ian F. Darwin 1986, 1987, 1989, 1990, 1991, 1992, 1994, 1995.
+Software written by Ian F. Darwin and others;
+maintained 1994- Christos Zoulas.
+
+This software is not subject to any export provision of the United States
+Department of Commerce, and may be exported to any country or planet.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice immediately at the beginning of the file, without modification,
+   this list of conditions, and the following disclaimer.
+2. 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.
+ 
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">findutils-4.4.2</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.gnu.org/software/findutils/">homepage</a></span>
@@ -4502,6 +6354,19 @@
 
 
 <div class="product">
+<span class="title">fio-2.1.8</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://brick.kernel.dk/snaps/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">fixesproto-5.0</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
@@ -4921,6 +6786,208 @@
 
 
 <div class="product">
+<span class="title">freeglut-2.4.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://freeglut.sourceforge.net/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License freeglut-2.4.0/COPYING:
+
+
+  Freeglut Copyright
+  ------------------
+  
+  Freeglut code without an explicit copyright is covered by the following 
+  copyright:
+  
+  Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
+  Permission is hereby granted, free of charge,  to any person obtaining a copy 
+  of this software and associated documentation files (the "Software"), to deal
+  in the Software without restriction,  including without limitation the rights 
+  to use, copy,  modify, merge,  publish, distribute,  sublicense,  and/or sell 
+  copies or substantial portions of the Software.
+  
+  The above  copyright notice  and this permission notice  shall be included in 
+  all copies or substantial portions of the Software.
+  
+  THE SOFTWARE  IS PROVIDED "AS IS",  WITHOUT WARRANTY OF ANY KIND,  EXPRESS OR 
+  IMPLIED,  INCLUDING  BUT  NOT LIMITED  TO THE WARRANTIES  OF MERCHANTABILITY, 
+  FITNESS  FOR  A PARTICULAR PURPOSE  AND NONINFRINGEMENT.  IN  NO EVENT  SHALL 
+  PAWEL W. OLSZTA BE LIABLE FOR ANY CLAIM,  DAMAGES OR OTHER LIABILITY, WHETHER 
+  IN  AN ACTION  OF CONTRACT,  TORT OR OTHERWISE,  ARISING FROM,  OUT OF  OR IN 
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+  
+  Except as contained in this notice,  the name of Pawel W. Olszta shall not be 
+  used  in advertising  or otherwise to promote the sale, use or other dealings 
+  in this Software without prior written authorization from Pawel W. Olszta.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">freeimage-3.15.3</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://freeimage.sourceforge.net/">homepage</a></span>
+<div class="licence">
+<pre>Gentoo Package Stock License FIPL-1.0:
+
+FreeImage Public License - Version 1.0
+---------------------------------------------
+
+1. Definitions.
+
+1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications.
+
+1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
+
+1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
+
+1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data.
+
+1.5. "Executable" means Covered Code in any form other than Source Code.
+
+1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
+
+1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
+
+1.8. "License" means this document.
+
+1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a
+Modification is:
+
+A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
+
+B. Any new file that contains any part of the Original Code or previous Modifications.
+
+1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
+
+1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control
+compilation and installation of an Executable, or a list of source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
+
+1.12. "You" means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the
+direction or management of such entity, whether by contract or otherwise, or (b) ownership of fifty percent (50%) or more of the outstanding shares or beneficial ownership of such entity.
+
+2. Source Code License.
+
+2.1. The Initial Developer Grant.
+The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+
+(a) to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, or as part of a Larger Work; and
+
+(b) under patents now or hereafter owned or controlled by Initial Developer, to make, have made, use and sell ("Utilize") the Original Code (or portions thereof), but solely to the extent that
+any such patent is reasonably necessary to enable You to Utilize the Original Code (or portions thereof) and not to any greater extent that may be necessary to Utilize further Modifications or
+combinations.
+
+2.2. Contributor Grant.
+Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
+
+(a) to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code or as part of a Larger Work; and
+
+(b) under patents now or hereafter owned or controlled by Contributor, to Utilize the Contributor Version (or portions thereof), but solely to the extent that any such patent is reasonably necessary to enable You to Utilize the Contributor Version (or portions thereof), and not to any greater extent that
+may be necessary to Utilize further Modifications or combinations.
+
+3. Distribution Obligations.
+
+3.1. Application of License.
+The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or
+restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
+
+3.2. Availability of Source Code.
+Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
+
+3.3. Description of Modifications.
+You must cause all Covered Code to which you contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
+
+3.4. Intellectual Property Matters
+
+(a) Third Party Claims.
+If You have knowledge that a party claims an intellectual property right in particular functionality or code (or its utilization under this License), you must include a text file with the source code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If you obtain such knowledge after You make Your Modification available as described in Section 3.2, You shall promptly modify the LEGAL file in all copies You make
+available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.
+
+(b) Contributor APIs.
+If Your Modification is an application programming interface and You own or control patents which are reasonably necessary to implement that API, you must also include this information in the LEGAL file.
+
+3.5. Required Notices.
+You must duplicate the notice in Exhibit A in each file of the Source Code, and this License in any documentation for the Source Code, where You describe recipients' rights relating to Covered Code. If You created one or more Modification(s), You may add your name as a Contributor to the notice described in Exhibit A. If it is not possible to put such notice in a particular Source Code file due to its
+structure, then you must include such notice in a location (such as a relevant directory file) where a user would be likely to look for such a notice. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or
+liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of
+warranty, support, indemnity or liability terms You offer.
+
+3.6. Distribution of Executable Versions.
+You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You
+describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code under a license of Your choice, which may contain terms different from this License,
+provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
+
+3.7. Larger Works.
+You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
+
+5. Application of this License.
+
+This License applies to code to which the Initial Developer has attached the notice in Exhibit A, and to related Covered Code.
+
+6. Versions of the License.
+
+6.1. New Versions.
+Floris van den Berg may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
+
+6.2. Effect of New Versions.
+Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Floris van den Berg
+No one other than Floris van den Berg has the right to modify the terms applicable to Covered Code created under this License.
+
+6.3. Derivative Works.
+If you create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), you must (a) rename Your license so that the phrases "FreeImage", `FreeImage Public License", "FIPL", or any confusingly similar phrase do not appear anywhere in your license and (b) otherwise make it clear that your version of the license contains terms which differ from the FreeImage Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
+
+9. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
+
+11. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by Dutch law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in, the The Netherlands: (a) unless otherwise agreed in writing, all disputes relating to this License (excepting any dispute relating to intellectual property rights) shall be subject to final and binding arbitration, with the losing party paying all costs of arbitration; (b) any arbitration relating to this Agreement shall be held in Almelo, The Netherlands; and (c) any litigation relating to this Agreement shall be subject to the jurisdiction of the court of Almelo, The Netherlands with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys fees and expenses. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+Except in cases where another Contributor has failed to comply with Section 3.4, You are responsible for damages arising, directly or indirectly, out of Your utilization of rights under this License, based
+on the number of copies of Covered Code you made available, the revenues you received from utilizing such rights, and other relevant factors. You agree to work with affected parties to distribute
+responsibility on an equitable basis.
+
+EXHIBIT A.
+
+"The contents of this file are subject to the FreeImage Public License Version 1.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://home.wxs.nl/~flvdberg/freeimage-license.txt
+
+Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. 
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">freetype-2.5.0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.freetype.org/">homepage</a></span>
@@ -5377,6 +7444,20 @@
 
 
 <div class="product">
+<span class="title">gdb-7.7.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://sourceware.org/gdb/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+<li><a href='#LGPL-2'>Gentoo Package Stock License LGPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">gdbm-1.9.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.gnu.org/software/gdbm/">homepage</a></span>
@@ -5528,6 +7609,19 @@
 
 
 <div class="product">
+<span class="title">glmark2-285</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="https://launchpad.net/glmark2">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-3'>Gentoo Package Stock License GPL-3</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">glog-0.3.2</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://code.google.com/p/google-glog/">homepage</a></span>
@@ -5663,6 +7757,32 @@
 
 
 <div class="product">
+<span class="title">glu-9.0.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://cgit.freedesktop.org/mesa/glu/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#SGI-B-2.0'>Gentoo Package Stock License SGI-B-2.0</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">gmerge-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">gmock-1.6.0</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://code.google.com/p/googlemock/">homepage</a></span>
@@ -6079,7 +8199,7 @@
 
 
 <div class="product">
-<span class="title">GoogleKeyboardInput-keyboards-1.3.2.1</span>
+<span class="title">GoogleKeyboardInput-keyboards-1.3.2.3</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="https://code.google.com/p/google-input-tools">homepage</a></span>
 <div class="licence">
@@ -6092,7 +8212,7 @@
 
 
 <div class="product">
-<span class="title">GoogleKeyboardInput-xkb-1.0.3.1</span>
+<span class="title">GoogleKeyboardInput-xkb-1.1.2.0</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.google.com/inputtools">homepage</a></span>
 <div class="licence">
@@ -6105,6 +8225,61 @@
 
 
 <div class="product">
+<span class="title">gpsd-3.4</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://catb.org/gpsd/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License gpsd-3.4/COPYING:
+
+			COPYRIGHTS
+
+Compilation copyright is held by the GPSD project.  All rights reserved.
+
+GPSD project copyrights are assigned to the project lead, currently
+Eric S. Raymond. Other portions of the GPSD code are Copyright (c)
+1997, 1998, 1999, 2000, 2001, 2002 by Remco Treffkorn, and others
+Copyright (c) 2005 by Eric S. Raymond.  For other copyrights, see
+individual files.
+
+			BSD LICENSE
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:&lt;P&gt;
+
+Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.&lt;P&gt;
+
+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.&lt;P&gt;
+
+Neither name of the GPSD project 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 REGENTS 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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">grep-2.14</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.gnu.org/software/grep/">homepage</a></span>
@@ -6118,6 +8293,58 @@
 
 
 <div class="product">
+<span class="title">gsm-1.0.13</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://packages.qa.debian.org/libg/libgsm.html">homepage</a></span>
+<div class="licence">
+<pre>Gentoo Package Stock License gsm:
+
+Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
+Technische Universitaet Berlin
+
+Any use of this software is permitted provided that this notice is not
+removed and that neither the authors nor the Technische Universitaet Berlin
+are deemed to have made any representations as to the suitability of this
+software for any purpose nor are held responsible for any defects of
+this software.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
+
+As a matter of courtesy, the authors request to be informed about uses
+this software has found, about bugs in this software, and about any
+improvements that may be of general interest.
+
+Berlin, 28.11.1994
+Jutta Degener
+Carsten Bormann
+
+                                 oOo
+
+Since the original terms of 15 years ago maybe do not make our
+intentions completely clear given today's refined usage of the legal
+terms, we append this additional permission:
+
+      Permission to use, copy, modify, and distribute this software
+      for any purpose with or without fee is hereby granted,
+      provided that this notice is not removed and that neither
+      the authors nor the Technische Universitaet Berlin are
+      deemed to have made any representations as to the suitability
+      of this software for any purpose nor are held responsible
+      for any defects of this software.  THERE IS ABSOLUTELY NO
+      WARRANTY FOR THIS SOFTWARE.
+
+Berkeley/Bremen, 05.04.2009
+Jutta Degener
+Carsten Bormann
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">gtalk-62219080</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.google.com">homepage</a></span>
@@ -6176,6 +8403,19 @@
 
 
 <div class="product">
+<span class="title">gtk+-2.20.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.gtk.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2'>Gentoo Package Stock License LGPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">gtk-doc-am-1.18</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.gtk.org/gtk-doc/">homepage</a></span>
@@ -6943,6 +9183,19 @@
 
 
 <div class="product">
+<span class="title">hdctools-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">hdparm-9.39</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://sourceforge.net/projects/hdparm/">homepage</a></span>
@@ -6991,6 +9244,45 @@
 
 
 <div class="product">
+<span class="title">hostapd-2.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://hostap.epitest.fi">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">htmltidy-20090325</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://tidy.sourceforge.net/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">htpdate-1.0.4</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.clevervest.com/htp/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">hwids-20130915.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="https://github.com/gentoo/hwids">homepage</a></span>
@@ -7005,6 +9297,32 @@
 
 
 <div class="product">
+<span class="title">i2c-tools-3.0.2</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.lm-sensors.org/wiki/I2CTools">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">i7z-0.27</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://code.google.com/p/i7z/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">ibus-1.4.99.20120314</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://code.google.com/p/ibus/">homepage</a></span>
@@ -7018,6 +9336,126 @@
 
 
 <div class="product">
+<span class="title">imagemagick-6.7.8.7</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.imagemagick.org/">homepage</a></span>
+<div class="licence">
+<pre>Gentoo Package Stock License imagemagick:
+
+Before we get to the text of the license, lets just review what the license says in simple terms:
+
+It allows you to:
+
+  * freely download and use ImageMagick software, in whole or in part, for personal, company internal, or commercial purposes;
+  * use ImageMagick software in packages or distributions that you create;
+  * link against a library under a different license;
+  * link code under a different license against a library under this license;
+  * merge code into a work under a different license;
+  * extend patent grants to any code using code under this license;
+  * and extend patent protection.
+
+It forbids you to:
+
+  * redistribute any piece of ImageMagick-originated software without proper attribution;
+  * use any marks owned by ImageMagick Studio LLC in any way that might state or imply that ImageMagick Studio LLC endorses your distribution;
+  * use any marks owned by ImageMagick Studio LLC in any way that might state or imply that you created the ImageMagick software in question.
+
+It requires you to:
+
+  * include a copy of the license in any redistribution you may make that includes ImageMagick software;
+  * provide clear attribution to ImageMagick Studio LLC for any distributions that include ImageMagick software.
+
+It does not require you to:
+
+  * include the source of the ImageMagick software itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it;
+  * submit changes that you make to the software back to the ImageMagick Studio LLC (though such feedback is encouraged).
+
+A few other clarifications include:
+
+  * ImageMagick is freely available without charge;
+  * you may include ImageMagick on a DVD as long as you comply with the terms of the license;
+  * you can give modified code away for free or sell it under the terms of the ImageMagick license or distribute the result under a different license, but you need to acknowledge the use of the ImageMagick software;
+  * the license is compatible with the GPL V3.
+  * when exporting the ImageMagick software, review its export classification.
+
+Terms and Conditions for Use, Reproduction, and Distribution
+
+The legally binding and authoritative terms and conditions for use, reproduction, and distribution of ImageMagick follow:
+
+Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available.
+
+1. Definitions.
+
+License shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+Legal Entity shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, control means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+You (or Your) shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+Source form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+Object form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+Work shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+Derivative Works shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+Contribution shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as Not a Contribution.
+
+Contributor shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+  * You must give any other recipients of the Work or Derivative Works a copy of this License; and
+  * You must cause any modified files to carry prominent notices stating that You changed the files; and
+  * You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+  * If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+How to Apply the License to your Work
+
+To apply the ImageMagick License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information (don't include the brackets). The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the ImageMagick License (the "License"); you may not use
+   this file except in compliance with the License.  You may obtain a copy
+   of the License at
+
+     http://www.imagemagick.org/script/license.php
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+   WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+   License for the specific language governing permissions and limitations
+   under the License.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">iniparser-3.0b</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://ndevilla.free.fr/iniparser/">homepage</a></span>
@@ -7056,7 +9494,7 @@
 
 
 <div class="product">
-<span class="title">input-tools-4.1.2.7</span>
+<span class="title">input-tools-4.3.2.5</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.google.com/inputtools">homepage</a></span>
 <div class="licence">
@@ -7162,6 +9600,131 @@
 
 
 <div class="product">
+<span class="title">intel-gpu-tools-1.3</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License intel-gpu-tools-1.3/COPYING:
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Copyright 2003,2006 Tungsten Graphics, Inc., Cedar Park, Texas.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Copyright © 2006-2011 Intel Corporation
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+
+Copyright © 2010 Red Hat, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Copyright © 2011 Daniel Vetter
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+IN THE SOFTWARE.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">intltool-0.50.2</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="https://launchpad.net/intltool/">homepage</a></span>
@@ -7188,6 +9751,76 @@
 
 
 <div class="product">
+<span class="title">iperf-2.0.4</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://iperf.sourceforge.net/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License iperf-2.0.4/COPYING:
+
+Copyright (c) 1999-2007, The Board of Trustees of the University of Illinois
+All Rights Reserved.
+
+Iperf performance test
+Mark Gates
+Ajay Tirumala
+Jim Ferguson
+Jon Dugan
+Feng Qin
+Kevin Gibbs
+John Estabrook
+National Laboratory for Applied Network Research 
+National Center for Supercomputing Applications 
+University of Illinois at Urbana-Champaign 
+http://www.ncsa.uiuc.edu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software (Iperf) and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+
+Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimers.
+
+Redistributions in binary form must reproduce the above copyright notice, this
+list of conditions and the following disclaimers in the documentation and/or
+other materials provided with the distribution.
+
+Neither the names of the University of Illinois, NCSA, nor the names of its
+contributors may be used to endorse or promote products derived from this
+Software without specific prior written permission.  THE SOFTWARE IS PROVIDED
+"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
+AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTIBUTORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+<li><a href='#as-is'>Gentoo Package Stock License as-is</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">iproute2-3.8.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">iptables-1.4.16.3</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.iptables.org/">homepage</a></span>
@@ -7277,6 +9910,32 @@
 
 
 <div class="product">
+<span class="title">japanese-input-1.0.0.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://code.google.com/p/mozc">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#Apache-2.0'>Gentoo Package Stock License Apache-2.0</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">joystick-1.4.2</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://sourceforge.net/projects/linuxconsole/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">jsoncpp-0.6.0_rc2</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://jsoncpp.sourceforge.net/">homepage</a></span>
@@ -7290,6 +9949,19 @@
 
 
 <div class="product">
+<span class="title">jsonrpclib-0_pre20110820</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="https://github.com/joshmarshall/jsonrpclib">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#Apache-2.0'>Gentoo Package Stock License Apache-2.0</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">kbd-1.15.3</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://freshmeat.net/projects/kbd/">homepage</a></span>
@@ -7369,7 +10041,7 @@
 
 
 <div class="product">
-<span class="title">kmod-15</span>
+<span class="title">kmod-17</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://git.kernel.org/?p=utils/kernel/kmod/kmod.git">homepage</a></span>
 <div class="licence">
@@ -7501,6 +10173,19 @@
 
 
 <div class="product">
+<span class="title">ktop-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="https://chromium.googlesource.com/chromiumos/third_party/ktop">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">ladspa-sdk-1.13</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.ladspa.org/">homepage</a></span>
@@ -7527,6 +10212,19 @@
 
 
 <div class="product">
+<span class="title">less-457</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.greenwoodsoftware.com/less/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-3'>Gentoo Package Stock License GPL-3</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">leveldb-0.0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://code.google.com/p/leveldb/">homepage</a></span>
@@ -7571,6 +10269,19 @@
 
 
 <div class="product">
+<span class="title">libaio-0.3.109</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.kernel.org/pub/linux/kernel/people/andrea/libaio/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2'>Gentoo Package Stock License LGPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">libatomic_ops-7.2d</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.hpl.hp.com/research/linux/atomic_ops/">homepage</a></span>
@@ -8358,6 +11069,46 @@
 
 
 <div class="product">
+<span class="title">libc-bench-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.etalabs.net/libc-bench.html">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License libc-bench-0.0.1/COPYRIGHT:
+
+libc-bench, a performance and memory usage benchmark for comparing
+libc implementations
+
+Copyright © 2011 Rich Felker
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">libcap-2.17</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.friedhoff.org/posixfilecaps.html">homepage</a></span>
@@ -8462,7 +11213,20 @@
 
 
 <div class="product">
-<span class="title">libchrome-242728</span>
+<span class="title">libcap-ng-0.6.6</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://people.redhat.com/sgrubb/libcap-ng/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2.1'>Gentoo Package Stock License LGPL-2.1</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">libchrome-271506</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://dev.chromium.org/chromium-os/packages/libchrome">homepage</a></span>
 <div class="licence">
@@ -8475,7 +11239,7 @@
 
 
 <div class="product">
-<span class="title">libchrome_crypto-242728</span>
+<span class="title">libchrome_crypto-271506</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://dev.chromium.org/chromium-os/packages/libchrome">homepage</a></span>
 <div class="licence">
@@ -8488,6 +11252,32 @@
 
 
 <div class="product">
+<span class="title">libchromeos-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://dev.chromium.org/chromium-os/platform">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">libchromeos-use-flags-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">libdaemon-0.14</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://0pointer.de/lennart/projects/libdaemon/">homepage</a></span>
@@ -8501,51 +11291,20 @@
 
 
 <div class="product">
-<span class="title">libdivsufsort-2.0.1</span>
+<span class="title">libdrm-2.4.54</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
-<span class="homepage"><a href="http://code.google.com/p/libdivsufsort/">homepage</a></span>
+<span class="homepage"><a href="http://dri.freedesktop.org/">homepage</a></span>
 <div class="licence">
-<pre>Scanned Source License libdivsufsort-2.0.1/COPYING:
-
-The libdivsufsort copyright is as follows:
-
-Copyright (c) 2003-2008 Yuta Mori All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-See also the libdivsufsort web site:
-  http://libdivsufsort.googlecode.com/ for more information.
-
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-</pre>
+<pre></pre>
 <ul>
-
+<li><a href='#X'>Custom License X</a></li>
 </ul>
 </div>
 </div>
 
 
 <div class="product">
-<span class="title">libdrm-2.4.52</span>
+<span class="title">libdrm-tests-2.4.54</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://dri.freedesktop.org/">homepage</a></span>
 <div class="licence">
@@ -8686,6 +11445,19 @@
 
 
 <div class="product">
+<span class="title">libftdi-1.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.intra2net.com/en/developer/libftdi/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2'>Gentoo Package Stock License LGPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">libgcrypt-1.4.6</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.gnupg.org/">homepage</a></span>
@@ -8699,6 +11471,19 @@
 
 
 <div class="product">
+<span class="title">libglade-2.6.4</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.gnome.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2'>Gentoo Package Stock License LGPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">libgpg-error-1.10</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.gnupg.org/related_software/libgpg-error">homepage</a></span>
@@ -8713,6 +11498,180 @@
 
 
 <div class="product">
+<span class="title">libICE-1.0.7</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License libICE-1.0.7/COPYING:
+
+Copyright 1993, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+Author: Ralph Mor, X Consortium
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">libjpeg-turbo-1.2.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://libjpeg-turbo.virtualgl.org/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License debian/copyright:
+
+This is Debian's prepackaged version of the `jpeg library' by the Independent
+JPEG Group.
+
+This package was created by Mark Mickan &lt;mmickan@debian.org&gt; from sources
+which can be found at ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
+
+It is partly based on the libjpeg6a package originally put together by
+Andy Guy &lt;awpguy@acs.ucalgary.ca&gt; and later maintained by Mark Mickan.
+
+Current Debian maintainer is Bill Allombert &lt;ballombe@debian.org&gt;.
+
+LEGAL ISSUES [ from README supplied with source - MM ]
+============
+
+In plain English:
+
+1. We don't promise that this software works.  (But if you find any bugs,
+   please let us know!)
+2. You can use this software for whatever you want.  You don't have to pay us.
+3. You may not pretend that you wrote this software.  If you use it in a
+   program, you must acknowledge somewhere in your documentation that
+   you've used the IJG code.
+
+In legalese:
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose.  This software is provided "AS IS", and you,
+its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1991-2010, Thomas G. Lane, Guido Vollbeding.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to these
+conditions:
+(1) If any part of the source code for this software is distributed, then this
+README file must be included, with this copyright and no-warranty notice
+unaltered; and any additions, deletions, or changes to the original files
+must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work of
+the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG code,
+not just to the unmodified library.  If you use our work, you ought to
+acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company name
+in advertising or publicity relating to this software or products derived from
+it.  This software may be referred to only as "the Independent JPEG Group's
+software".
+
+We specifically permit and encourage the use of this software as the basis of
+commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
+
+
+ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
+sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
+ansi2knr.c is NOT covered by the above copyright and conditions, but instead
+by the usual distribution terms of the Free Software Foundation; principally,
+that you must include source code if you redistribute it.  (See the file
+ansi2knr.c for full details.)  However, since ansi2knr.c is not needed as part
+of any program generated from the IJG code, this does not limit you more than
+the foregoing paragraphs do.
+
+The Unix configuration script "configure" was produced with GNU Autoconf.
+It is copyright by the Free Software Foundation but is freely distributable.
+The same holds for its supporting scripts (config.guess, config.sub,
+ltmain.sh).  Another support script, install-sh, is copyright by X Consortium
+but is also freely distributable.
+
+The IJG distribution formerly included code to read and write GIF files.
+To avoid entanglement with the Unisys LZW patent, GIF reading support has
+been removed altogether, and the GIF writer has been simplified to produce
+"uncompressed GIFs".  This technique does not use the LZW algorithm; the
+resulting GIF files are larger than usual, but are readable by all standard
+GIF decoders.
+
+We are required to state that
+    "The Graphics Interchange Format(c) is the Copyright property of
+    CompuServe Incorporated.  GIF(sm) is a Service Mark property of
+    CompuServe Incorporated."
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License libjpeg-turbo-1.2.0/release/License.rtf:
+
+{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}}
+{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}}
+\margl1440\margr1440\vieww9820\viewh8480\viewkind0
+\deftab720
+\pard\pardeftab720
+
+\f0\fs24 \cf0 Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\
+\
+\pard\tx220\tx720\pardeftab720\li720\fi-720
+\ls1\ilvl0\cf0 {\listtext	\'95	}Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\
+{\listtext	\'95	}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.\
+{\listtext	\'95	}Neither the name of the libjpeg-turbo Project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\
+\pard\pardeftab720\qc
+\cf0 \
+\pard\pardeftab720
+\cf0 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 HOLDERS 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.\
+}
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License libjpeg-turbo-1.2.0/release/copyright:
+
+libjpeg-turbo is released under a BSD-style license (see README and README-turbo.txt)
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">libmbim-1.9.0</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://cgit.freedesktop.org/libmbim/">homepage</a></span>
@@ -8726,19 +11685,6 @@
 
 
 <div class="product">
-<span class="title">libmnl-1.0.3</span>
-<a class="show" href="#" onclick="return toggle(this);">show license text</a>
-<span class="homepage"><a href="http://netfilter.org/projects/libmnl">homepage</a></span>
-<div class="licence">
-<pre></pre>
-<ul>
-<li><a href='#LGPL-2.1'>Gentoo Package Stock License LGPL-2.1</a></li>
-</ul>
-</div>
-</div>
-
-
-<div class="product">
 <span class="title">libmtp-0.0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://libmtp.sourceforge.net/">homepage</a></span>
@@ -8804,7 +11750,7 @@
 
 
 <div class="product">
-<span class="title">libnl-3.2.14</span>
+<span class="title">libnl-3.2.24</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.infradead.org/~tgr/libnl/">homepage</a></span>
 <div class="licence">
@@ -8830,11 +11776,11 @@
 
 
 <div class="product">
-<span class="title">libpcap-1.5.2</span>
+<span class="title">libpcap-1.5.3</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.tcpdump.org/">homepage</a></span>
 <div class="licence">
-<pre>Scanned Source License libpcap-1.5.2/LICENSE:
+<pre>Scanned Source License libpcap-1.5.3/LICENSE:
 
 License: BSD
  
@@ -9675,6 +12621,65 @@
 
 
 <div class="product">
+<span class="title">libSM-1.2.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License libSM-1.2.0/COPYING:
+
+Copyright 2002 Sun Microsystems, Inc.  All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+Copyright 1993, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">libtool-2.4.2</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.gnu.org/software/libtool/">homepage</a></span>
@@ -9688,25 +12693,12 @@
 
 
 <div class="product">
-<span class="title">libusb-0.1.12</span>
+<span class="title">libusb-1.0.18</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://libusb.sourceforge.net/">homepage</a></span>
 <div class="licence">
 <pre></pre>
 <ul>
-<li><a href='#LGPL-2'>Gentoo Package Stock License LGPL-2</a></li>
-</ul>
-</div>
-</div>
-
-
-<div class="product">
-<span class="title">libusb-1.0.9</span>
-<a class="show" href="#" onclick="return toggle(this);">show license text</a>
-<span class="homepage"><a href="http://libusb.org/">homepage</a></span>
-<div class="licence">
-<pre></pre>
-<ul>
 <li><a href='#LGPL-2.1'>Gentoo Package Stock License LGPL-2.1</a></li>
 </ul>
 </div>
@@ -9714,11 +12706,37 @@
 
 
 <div class="product">
-<span class="title">libva-1.2.1</span>
+<span class="title">libusb-compat-0.1.5</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://libusb.sourceforge.net/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2.1'>Gentoo Package Stock License LGPL-2.1</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">libv4l-0.8.8</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://git.linuxtv.org/v4l-utils.git">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2.1'>Gentoo Package Stock License LGPL-2.1</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">libva-1.3.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.freedesktop.org/wiki/Software/vaapi">homepage</a></span>
 <div class="licence">
-<pre>Scanned Source License libva-1.2.1/COPYING:
+<pre>Scanned Source License libva-1.3.1/COPYING:
 
     Permission is hereby granted, free of charge, to any person obtaining a
     copy of this software and associated documentation files (the
@@ -9742,7 +12760,7 @@
 
 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
-Scanned Source License libva-1.2.1/debian.upstream/copyright:
+Scanned Source License libva-1.3.1/debian.upstream/copyright:
 
 This package was debianized by Waldo Bastian &lt;waldo.bastian@intel.com&gt; on
 Mon, 18 Jun 2007 21:35:31 -0700.
@@ -9799,11 +12817,11 @@
 
 
 <div class="product">
-<span class="title">libva-intel-driver-1.2.2</span>
+<span class="title">libva-intel-driver-1.3.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.freedesktop.org/wiki/Software/vaapi">homepage</a></span>
 <div class="licence">
-<pre>Scanned Source License libva-intel-driver-1.2.2/COPYING:
+<pre>Scanned Source License libva-intel-driver-1.3.1/COPYING:
 
     Permission is hereby granted, free of charge, to any person obtaining a
     copy of this software and associated documentation files (the
@@ -9827,7 +12845,7 @@
 
 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
-Scanned Source License libva-intel-driver-1.2.2/debian.upstream/copyright:
+Scanned Source License libva-intel-driver-1.3.1/debian.upstream/copyright:
 
 This package is maintained by:
 Gwenole Beauchesne &lt;gwenole.beauchesne@intel.com&gt;
@@ -12050,6 +15068,220 @@
 
 
 <div class="product">
+<span class="title">libXmu-1.1.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License libXmu-1.1.0/COPYING:
+
+Copyright 1989, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+-----------
+
+Xmu/StrToBmap.c and Xmu/GrayPixmap.c also have:
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its 
+documentation for any purpose and without fee is hereby granted, 
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in 
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+-----------
+
+And Xmu/Clip.c has:
+
+Copyright (c) 1998 by The XFree86 Project, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the XFree86 Project shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+XFree86 Project.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">libXpm-3.5.9</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License libXpm-3.5.9/COPYING:
+
+Copyright (C) 1989-95 GROUPE BULL
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of GROUPE BULL shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from GROUPE BULL.
+
+Copyright (C) 1998 Arnaud LE HORS
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+Arnaud LE HORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Arnaud LE HORS shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from Arnaud LE HORS.
+
+Copyright (C) 19896 Lorens Younes
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+Lorens Younes BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Lorens Younes shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from Lorens Younes.
+
+
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License libXpm-3.5.9/COPYRIGHT:
+
+/*
+ * Copyright (C) 1989-95 GROUPE BULL
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of GROUPE BULL shall not be
+ * used in advertising or otherwise to promote the sale, use or other dealings
+ * in this Software without prior written authorization from GROUPE BULL.
+ */
+
+Arnaud LE HORS      BULL Research FRANCE -- Koala Project 
+                    (XPM - X PixMap format version 2 &amp; 3)
+    Internet:       lehors@sophia.inria.fr
+Surface Mail:       Arnaud LE HORS, INRIA - Sophia Antipolis, 
+                    2004, route des Lucioles, 06565 Valbonne Cedex -- FRANCE
+ Voice phone:       (33) 93.65.77.71, Fax: (33) 93 65 77 66, Telex: 97 00 50 F
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">libXrandr-1.4.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
@@ -12187,20 +15419,82 @@
 
 
 <div class="product">
-<span class="title">libXScrnSaver-1.2.1</span>
+<span class="title">libXt-1.1.4</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
 <div class="licence">
-<pre>Scanned Source License libXScrnSaver-1.2.1/COPYING:
+<pre>Scanned Source License libXt-1.1.4/COPYING:
 
-Copyright (c) 1992  X Consortium
 
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+Copyright © 2001,2003 Keith Packard
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Keith Packard not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Keith Packard makes no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+Copyright (c) 1993, 2011, Oracle and/or its affiliates. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+Copyright 1987, 1988, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
 
 The above copyright notice and this permission notice shall be included in
 all copies or substantial portions of the Software.
@@ -12208,40 +15502,39 @@
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-Except as contained in this notice, the name of the X Consortium shall not be
+Except as contained in this notice, the name of The Open Group shall not be
 used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from the X Consortium.
+in this Software without prior written authorization from The Open Group.
 
 
-Copyright (C) 2003 The XFree86 Project, Inc.  All Rights Reserved.
+Copyright (c) 1993, 1994  X Consortium
 
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software furnished to do so, subject to the following conditions:
 
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES
-OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
 
-Except as contained in this notice, the name of the XFree86 Project
-shall not be used in advertising or otherwise to promote the sale, use
-or other dealings in this Software without prior written authorization
-from the XFree86 Project.
+Except as contained in this notice, the name of the X Consortium shall not
+be used in advertising or otherwise to promote the sale, use or other
+dealing in this Software without prior written authorization from the
+X Consortium.
 
 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 </pre>
@@ -12710,6 +16003,19 @@
 
 
 <div class="product">
+<span class="title">lmbench-3.0_alpha9</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.bitmover.com/lmbench/whatis_lmbench.html">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">lohitfonts-cros-2.5.0</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://fedorahosted.org/lohit">homepage</a></span>
@@ -12822,6 +16128,19 @@
 
 
 <div class="product">
+<span class="title">lrzsz-0.12.20</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.ohse.de/uwe/software/lrzsz.html">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">lsof-4.81</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/">homepage</a></span>
@@ -13031,6 +16350,293 @@
 
 
 <div class="product">
+<span class="title">mako-0.7.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.makotemplates.org/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License Mako-0.7.0/LICENSE:
+
+This is the MIT license: http://www.opensource.org/licenses/mit-license.php
+
+Copyright (C) 2006-2012 the Mako authors and contributors &lt;see AUTHORS file&gt;.
+Mako is a trademark of Michael Bayer.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this
+software and associated documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License Mako-0.7.0/Mako.egg-info/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: Mako
+Version: 0.7.0
+Summary: A super-fast templating language that borrows the  best ideas from the existing templating languages.
+Home-page: http://www.makotemplates.org/
+Author: Mike Bayer
+Author-email: mike@zzzcomputing.com
+License: MIT
+Description: README.rst
+Keywords: wsgi myghty mako
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License Mako-0.7.0/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: Mako
+Version: 0.7.0
+Summary: A super-fast templating language that borrows the  best ideas from the existing templating languages.
+Home-page: http://www.makotemplates.org/
+Author: Mike Bayer
+Author-email: mike@zzzcomputing.com
+License: MIT
+Description: README.rst
+Keywords: wsgi myghty mako
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">markupsafe-0.18</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://pypi.python.org/pypi/MarkupSafe">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License MarkupSafe-0.18/LICENSE:
+
+Copyright (c) 2010 by Armin Ronacher and contributors.  See AUTHORS
+for more details.
+
+Some rights reserved.
+
+Redistribution and use in source and binary forms of the software as well
+as documentation, 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.
+
+* The names of the contributors may not be used to endorse or
+  promote products derived from this software without specific
+  prior written permission.
+
+THIS SOFTWARE AND DOCUMENTATION 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 AND DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License MarkupSafe-0.18/MarkupSafe.egg-info/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: MarkupSafe
+Version: 0.18
+Summary: Implements a XML/HTML/XHTML Markup safe string for Python
+Home-page: http://github.com/mitsuhiko/markupsafe
+Author: Armin Ronacher
+Author-email: armin.ronacher@active-4.com
+License: BSD
+Description: MarkupSafe
+        ==========
+        
+        Implements a unicode subclass that supports HTML strings:
+        
+        &gt;&gt;&gt; from markupsafe import Markup, escape
+        &gt;&gt;&gt; escape("&lt;script&gt;alert(document.cookie);&lt;/script&gt;")
+        Markup(u'&amp;lt;script&amp;gt;alert(document.cookie);&amp;lt;/script&amp;gt;')
+        &gt;&gt;&gt; tmpl = Markup("&lt;em&gt;%s&lt;/em&gt;")
+        &gt;&gt;&gt; tmpl % "Peter &gt; Lustig"
+        Markup(u'&lt;em&gt;Peter &amp;gt; Lustig&lt;/em&gt;')
+        
+        If you want to make an object unicode that is not yet unicode
+        but don't want to lose the taint information, you can use the
+        `soft_unicode` function.  (On Python 3 you can also use `soft_str` which
+        is a different name for the same function).
+        
+        &gt;&gt;&gt; from markupsafe import soft_unicode
+        &gt;&gt;&gt; soft_unicode(42)
+        u'42'
+        &gt;&gt;&gt; soft_unicode(Markup('foo'))
+        Markup(u'foo')
+        
+        Objects can customize their HTML markup equivalent by overriding
+        the `__html__` function:
+        
+        &gt;&gt;&gt; class Foo(object):
+        ...  def __html__(self):
+        ...   return '&lt;strong&gt;Nice&lt;/strong&gt;'
+        ...
+        &gt;&gt;&gt; escape(Foo())
+        Markup(u'&lt;strong&gt;Nice&lt;/strong&gt;')
+        &gt;&gt;&gt; Markup(Foo())
+        Markup(u'&lt;strong&gt;Nice&lt;/strong&gt;')
+        
+        Since MarkupSafe 0.10 there is now also a separate escape function
+        called `escape_silent` that returns an empty string for `None` for
+        consistency with other systems that return empty strings for `None`
+        when escaping (for instance Pylons' webhelpers).
+        
+        If you also want to use this for the escape method of the Markup
+        object, you can create your own subclass that does that::
+        
+            from markupsafe import Markup, escape_silent as escape
+        
+            class SilentMarkup(Markup):
+                __slots__ = ()
+        
+                @classmethod
+                def escape(cls, s):
+                    return cls(escape(s))
+        
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: Topic :: Text Processing :: Markup :: HTML
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License MarkupSafe-0.18/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: MarkupSafe
+Version: 0.18
+Summary: Implements a XML/HTML/XHTML Markup safe string for Python
+Home-page: http://github.com/mitsuhiko/markupsafe
+Author: Armin Ronacher
+Author-email: armin.ronacher@active-4.com
+License: BSD
+Description: MarkupSafe
+        ==========
+        
+        Implements a unicode subclass that supports HTML strings:
+        
+        &gt;&gt;&gt; from markupsafe import Markup, escape
+        &gt;&gt;&gt; escape("&lt;script&gt;alert(document.cookie);&lt;/script&gt;")
+        Markup(u'&amp;lt;script&amp;gt;alert(document.cookie);&amp;lt;/script&amp;gt;')
+        &gt;&gt;&gt; tmpl = Markup("&lt;em&gt;%s&lt;/em&gt;")
+        &gt;&gt;&gt; tmpl % "Peter &gt; Lustig"
+        Markup(u'&lt;em&gt;Peter &amp;gt; Lustig&lt;/em&gt;')
+        
+        If you want to make an object unicode that is not yet unicode
+        but don't want to lose the taint information, you can use the
+        `soft_unicode` function.  (On Python 3 you can also use `soft_str` which
+        is a different name for the same function).
+        
+        &gt;&gt;&gt; from markupsafe import soft_unicode
+        &gt;&gt;&gt; soft_unicode(42)
+        u'42'
+        &gt;&gt;&gt; soft_unicode(Markup('foo'))
+        Markup(u'foo')
+        
+        Objects can customize their HTML markup equivalent by overriding
+        the `__html__` function:
+        
+        &gt;&gt;&gt; class Foo(object):
+        ...  def __html__(self):
+        ...   return '&lt;strong&gt;Nice&lt;/strong&gt;'
+        ...
+        &gt;&gt;&gt; escape(Foo())
+        Markup(u'&lt;strong&gt;Nice&lt;/strong&gt;')
+        &gt;&gt;&gt; Markup(Foo())
+        Markup(u'&lt;strong&gt;Nice&lt;/strong&gt;')
+        
+        Since MarkupSafe 0.10 there is now also a separate escape function
+        called `escape_silent` that returns an empty string for `None` for
+        consistency with other systems that return empty strings for `None`
+        when escaping (for instance Pylons' webhelpers).
+        
+        If you also want to use this for the escape method of the Markup
+        object, you can create your own subclass that does that::
+        
+            from markupsafe import Markup, escape_silent as escape
+        
+            class SilentMarkup(Markup):
+                __slots__ = ()
+        
+                @classmethod
+                def escape(cls, s):
+                    return cls(escape(s))
+        
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: Topic :: Text Processing :: Markup :: HTML
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">marvell_sd8787-14.64.2.47</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.marvell.com/">homepage</a></span>
@@ -13069,6 +16675,32 @@
 
 
 <div class="product">
+<span class="title">mem-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">memento_softwareupdate-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">memtester-4.2.2</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://pyropus.ca/software/memtester/">homepage</a></span>
@@ -13082,11 +16714,11 @@
 
 
 <div class="product">
-<span class="title">mesa-10.1</span>
+<span class="title">mesa-10.3</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://mesa3d.sourceforge.net/">homepage</a></span>
 <div class="licence">
-<pre>Scanned Source License Mesa-10.1/docs/COPYING:
+<pre>Scanned Source License Mesa-10.3/docs/COPYING:
 
 
 Some parts of Mesa are copyrighted under the GNU LGPL.  See the
@@ -13581,7 +17213,7 @@
 
 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
-Scanned Source License Mesa-10.1/docs/license.html:
+Scanned Source License Mesa-10.3/docs/license.html:
 
 &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
 &lt;html lang="en"&gt;
@@ -13688,6 +17320,9 @@
 
 Ext headers       include/GL/glext.h     Khronos
                   include/GL/glxext.h
+
+C11 thread        include/c11/threads*.h Boost (permissive)
+emulation
 &lt;/pre&gt;
 
 &lt;p&gt;
@@ -13709,6 +17344,19 @@
 
 
 <div class="product">
+<span class="title">mesa-progs-8.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://mesa3d.sourceforge.net/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2'>Gentoo Package Stock License LGPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">mime-types-9</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.gentoo.org/">homepage</a></span>
@@ -13722,6 +17370,32 @@
 
 
 <div class="product">
+<span class="title">minicom-2.7</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://alioth.debian.org/projects/minicom">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">minifakedns-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://code.activestate.com/recipes/491264-mini-fake-dns-server/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#PSF-2'>Gentoo Package Stock License PSF-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">mkfontdir-1.0.6</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
@@ -13908,44 +17582,13 @@
 
 
 <div class="product">
-<span class="title">mobile-providers-0.0.1</span>
+<span class="title">modem-diagnostics-0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
-<span class="homepage"><a href="http://live.gnome.org/NetworkManager/MobileBroadband/ServiceProviders">homepage</a></span>
+<span class="homepage"><a href="">homepage</a></span>
 <div class="licence">
-<pre>Gentoo Package Stock License CC-PD:
-
-THIS WORK IS IN PUBLIC DOMAIN:
-The person or persons who have associated work with this document
-(the "Dedicator" or "Certifier") hereby either (a) certifies that, to the best
-of his knowledge, the work of authorship identified is in the public domain of
-the country from which the work is published, or (b) hereby dedicates whatever
-copyright the dedicators holds in the work of authorship identified below
-(the "Work") to the public domain. A certifier, moreover, dedicates any
-copyright interest he may have in the associated work, and for these purposes,
-is described as a "dedicator" below.
-
-A certifier has taken reasonable steps to verify the copyright status of this
-work. Certifier recognizes that his good faith efforts may not shield him from
-liability if in fact the work certified is not in the public domain.
-
-Dedicator makes this dedication for the benefit of the public at large and to
-the detriment of the Dedicator's heirs and successors. Dedicator intends this
-dedication to be an overt act of relinquishment in perpetuity of all present
-and future rights under copyright law, whether vested or contingent, in the
-Work. Dedicator understands that such relinquishment of all rights includes the
-relinquishment of all rights to enforce (by lawsuit or otherwise) those
-copyrights in the Work.
-
-Dedicator recognizes that, once placed in the public domain, the Work may be
-freely reproduced, distributed, transmitted, used, modified, built upon, or
-otherwise exploited by anyone for any purpose, commercial or non-commercial,
-and in any way, including by methods that have not yet been invented or
-conceived.
-
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-</pre>
+<pre></pre>
 <ul>
-
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
 </ul>
 </div>
 </div>
@@ -14070,6 +17713,32 @@
 
 
 <div class="product">
+<span class="title">mtplot-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">mttools-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">my-padauk-2.50</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=padauk">homepage</a></span>
@@ -14083,19 +17752,6 @@
 
 
 <div class="product">
-<span class="title">nacl-mozc-1.14.1639.104</span>
-<a class="show" href="#" onclick="return toggle(this);">show license text</a>
-<span class="homepage"><a href="http://code.google.com/p/mozc">homepage</a></span>
-<div class="licence">
-<pre></pre>
-<ul>
-<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
-</ul>
-</div>
-</div>
-
-
-<div class="product">
 <span class="title">ncurses-5.9</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.gnu.org/software/ncurses/">homepage</a></span>
@@ -14282,6 +17938,136 @@
 
 
 <div class="product">
+<span class="title">netifaces-0.8</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://alastairs-place.net/netifaces/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License netifaces-0.8/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: netifaces
+Version: 0.8
+Summary: Portable network interface information.
+Home-page: http://alastairs-place.net/netifaces
+Author: Alastair Houghton
+Author-email: alastair@alastairs-place.net
+License: MIT License
+Description: netifaces provides a (hopefully portable-ish) way for Python programmers to
+        get access to a list of the network interfaces on the local machine, and to
+        obtain the addresses of those network interfaces.
+        
+        The package has been tested on Mac OS X, Windows XP, Windows Vista, Linux
+        and Solaris.
+        
+        It should work on other UNIX-like systems provided they implement
+        either getifaddrs() or support the SIOCGIFxxx socket options, although the
+        data provided by the socket options is normally less complete.
+        
+Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Topic :: System :: Networking
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License netifaces-0.8/netifaces.egg-info/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: netifaces
+Version: 0.8
+Summary: Portable network interface information.
+Home-page: http://alastairs-place.net/netifaces
+Author: Alastair Houghton
+Author-email: alastair@alastairs-place.net
+License: MIT License
+Description: netifaces provides a (hopefully portable-ish) way for Python programmers to
+        get access to a list of the network interfaces on the local machine, and to
+        obtain the addresses of those network interfaces.
+        
+        The package has been tested on Mac OS X, Windows XP, Windows Vista, Linux
+        and Solaris.
+        
+        It should work on other UNIX-like systems provided they implement
+        either getifaddrs() or support the SIOCGIFxxx socket options, although the
+        data provided by the socket options is normally less complete.
+        
+Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Topic :: System :: Networking
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">netperf-2.4.4</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.netperf.org/">homepage</a></span>
+<div class="licence">
+<pre>Gentoo Package Stock License netperf:
+
+
+ 
+              Copyright (C) 1993 Hewlett-Packard Company
+                         ALL RIGHTS RESERVED.
+ 
+  The enclosed software and documentation includes copyrighted works
+  of Hewlett-Packard Co. For as long as you comply with the following
+  limitations, you are hereby authorized to (i) use, reproduce, and
+  modify the software and documentation, and to (ii) distribute the
+  software and documentation, including modifications, for
+  non-commercial purposes only.
+      
+  1.  The enclosed software and documentation is made available at no
+      charge in order to advance the general development of
+      high-performance networking products.
+ 
+  2.  You may not delete any copyright notices contained in the
+      software or documentation. All hard copies, and copies in
+      source code or object code form, of the software or
+      documentation (including modifications) must contain at least
+      one of the copyright notices.
+ 
+  3.  The enclosed software and documentation has not been subjected
+      to testing and quality control and is not a Hewlett-Packard Co.
+      product. At a future time, Hewlett-Packard Co. may or may not
+      offer a version of the software and documentation as a product.
+  
+  4.  THE SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS".
+      HEWLETT-PACKARD COMPANY DOES NOT WARRANT THAT THE USE,
+      REPRODUCTION, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR
+      DOCUMENTATION WILL NOT INFRINGE A THIRD PARTY'S INTELLECTUAL
+      PROPERTY RIGHTS. HP DOES NOT WARRANT THAT THE SOFTWARE OR
+      DOCUMENTATION IS ERROR FREE. HP DISCLAIMS ALL WARRANTIES,
+      EXPRESS AND IMPLIED, WITH REGARD TO THE SOFTWARE AND THE
+      DOCUMENTATION. HP SPECIFICALLY DISCLAIMS ALL WARRANTIES OF
+      MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+  
+  5.  HEWLETT-PACKARD COMPANY WILL NOT IN ANY EVENT BE LIABLE FOR ANY
+      DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
+      (INCLUDING LOST PROFITS) RELATED TO ANY USE, REPRODUCTION,
+      MODIFICATION, OR DISTRIBUTION OF THE SOFTWARE OR DOCUMENTATION.
+ 
+
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">notofonts-20140130</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="">homepage</a></span>
@@ -14295,7 +18081,7 @@
 
 
 <div class="product">
-<span class="title">nspr-4.10.2</span>
+<span class="title">nspr-4.10.4</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.mozilla.org/projects/nspr/">homepage</a></span>
 <div class="licence">
@@ -14310,7 +18096,22 @@
 
 
 <div class="product">
-<span class="title">nss-3.15.4</span>
+<span class="title">nss-3.16</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.mozilla.org/projects/security/pki/nss/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2.1'>Gentoo Package Stock License LGPL-2.1</a></li>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+<li><a href='#MPL-2.0'>Gentoo Package Stock License MPL-2.0</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">nss-3.16</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.mozilla.org/projects/security/pki/nss/">homepage</a></span>
 <div class="licence">
@@ -14338,6 +18139,235 @@
 
 
 <div class="product">
+<span class="title">numpy-1.7.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://numpy.scipy.org/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License numpy-1.7.1/LICENSE.txt:
+
+Copyright (c) 2005-2011, NumPy Developers.
+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 the NumPy Developers nor the names of any
+       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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License numpy-1.7.1/PKG-INFO:
+
+Metadata-Version: 1.1
+Name: numpy
+Version: 1.7.1
+Summary: NumPy: array processing for numbers, strings, records, and objects.
+Home-page: http://www.numpy.org
+Author: NumPy Developers
+Author-email: numpy-discussion@scipy.org
+License: BSD
+Download-URL: http://sourceforge.net/projects/numpy/files/NumPy/
+Description: NumPy is a general-purpose array-processing package designed to
+        efficiently manipulate large multi-dimensional arrays of arbitrary
+        records without sacrificing too much speed for small multi-dimensional
+        arrays.  NumPy is built on the Numeric code base and adds features
+        introduced by numarray as well as an extended C-API and the ability to
+        create arrays of arbitrary type which also makes NumPy suitable for
+        interfacing with general-purpose data-base applications.
+        
+        There are also basic facilities for discrete fourier transform,
+        basic linear algebra and random number generation.
+        
+Platform: Windows
+Platform: Linux
+Platform: Solaris
+Platform: Mac OS-X
+Platform: Unix
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Science/Research
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved
+Classifier: Programming Language :: C
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: Software Development
+Classifier: Topic :: Scientific/Engineering
+Classifier: Operating System :: Microsoft :: Windows
+Classifier: Operating System :: POSIX
+Classifier: Operating System :: Unix
+Classifier: Operating System :: MacOS
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License numpy-1.7.1/doc/source/license.rst:
+
+*************
+Numpy License
+*************
+
+Copyright (c) 2005, NumPy Developers
+
+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 the NumPy Developers nor the names of any
+  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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License numpy-1.7.1/doc/sphinxext/LICENSE.txt:
+
+-------------------------------------------------------------------------------
+    The files
+    - numpydoc.py
+    - docscrape.py
+    - docscrape_sphinx.py
+    - phantom_import.py
+    have the following license:
+
+Copyright (C) 2008 Stefan van der Walt &lt;stefan@mentat.za.net&gt;, Pauli Virtanen &lt;pav@iki.fi&gt;
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. 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.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 files
+    - compiler_unparse.py
+    - comment_eater.py
+    - traitsdoc.py
+    have the following license:
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+Copyright (c) 2006, Enthought, 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 Enthought, 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 file
+    - plot_directive.py
+    originates from Matplotlib (http://matplotlib.sf.net/) which has
+    the following license:
+
+Copyright (c) 2002-2008 John D. Hunter; All Rights Reserved.
+
+1. This LICENSE AGREEMENT is between John D. Hunter (“JDH”), and the Individual or Organization (“Licensee”) accessing and otherwise using matplotlib software in source or binary form and its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, JDH hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use matplotlib 0.98.3 alone or in any derivative version, provided, however, that JDH’s License Agreement and JDH’s notice of copyright, i.e., “Copyright (c) 2002-2008 John D. Hunter; All Rights Reserved” are retained in matplotlib 0.98.3 alone or in any derivative version prepared by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on or incorporates matplotlib 0.98.3 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to matplotlib 0.98.3.
+
+4. JDH is making matplotlib 0.98.3 available to Licensee on an “AS IS” basis. JDH MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, JDH MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF MATPLOTLIB 0.98.3 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. JDH SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF MATPLOTLIB 0.98.3 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING MATPLOTLIB 0.98.3, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between JDH and Licensee. This License Agreement does not grant permission to use JDH trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using matplotlib 0.98.3, Licensee agrees to be bound by the terms and conditions of this License Agreement.
+
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">oem-customization-0.0.2</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
@@ -14351,6 +18381,422 @@
 
 
 <div class="product">
+<span class="title">opencryptoki-2.2.8</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://sourceforge.net/projects/opencryptoki">homepage</a></span>
+<div class="licence">
+<pre>Gentoo Package Stock License CPL-0.5:
+
+
+Common Public License Version 0.5
+
+   THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON
+   PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+   THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+   1. DEFINITIONS
+
+   "Contribution" means:
+
+     a) in the case of the initial Contributor, the initial code and
+     documentation distributed under this Agreement, and
+
+     b) in the case of each subsequent Contributor:
+
+     i) changes to the Program, and
+
+     ii) additions to the Program;
+
+     where such changes and/or additions to the Program originate from
+     and are distributed by that particular Contributor. A Contribution
+     'originates' from a Contributor if it was added to the Program by
+     such Contributor itself or anyone acting on such Contributor's
+     behalf. Contributions do not include additions to the Program
+     which: (i) are separate modules of software distributed in
+     conjunction with the Program under their own license agreement, and
+     (ii) are not derivative works of the Program.
+
+   "Contributor" means any person or entity that distributes the Program.
+
+   "Licensed Patents " mean patent claims licensable by a Contributor
+   which are necessarily infringed by the use or sale of its Contribution
+   alone or when combined with the Program.
+
+   "Program" means the Contributions distributed in accordance with this
+   Agreement.
+
+   "Recipient" means anyone who receives the Program under this
+   Agreement, including all Contributors.
+
+   2. GRANT OF RIGHTS
+
+     a) Subject to the terms of this Agreement, each Contributor hereby
+     grants Recipient a non-exclusive, worldwide, royalty-free copyright
+     license to reproduce, prepare derivative works of, publicly
+     display, publicly perform, distribute and sublicense the
+     Contribution of such Contributor, if any, and such derivative
+     works, in source code and object code form.
+
+     b) Subject to the terms of this Agreement, each Contributor hereby
+     grants Recipient a non-exclusive, worldwide, royalty-free patent
+     license under Licensed Patents to make, use, sell, offer to sell,
+     import and otherwise transfer the Contribution of such Contributor,
+     if any, in source code and object code form. This patent license
+     shall apply to the combination of the Contribution and the Program
+     if, at the time the Contribution is added by the Contributor, such
+     addition of the Contribution causes such combination to be covered
+     by the Licensed Patents. The patent license shall not apply to any
+     other combinations which include the Contribution. No hardware per
+     se is licensed hereunder.
+
+     c) Recipient understands that although each Contributor grants the
+     licenses to its Contributions set forth herein, no assurances are
+     provided by any Contributor that the Program does not infringe the
+     patent or other intellectual property rights of any other entity.
+     Each Contributor disclaims any liability to Recipient for claims
+     brought by any other entity based on infringement of intellectual
+     property rights or otherwise. As a condition to exercising the
+     rights and licenses granted hereunder, each Recipient hereby
+     assumes sole responsibility to secure any other intellectual
+     property rights needed, if any. For example, if a third party
+     patent license is required to allow Recipient to distribute the
+     Program, it is Recipient's responsibility to acquire that license
+     before distributing the Program.
+
+     d) Each Contributor represents that to its knowledge it has
+     sufficient copyright rights in its Contribution, if any, to grant
+     the copyright license set forth in this Agreement.
+
+   3. REQUIREMENTS
+
+   A Contributor may choose to distribute the Program in object code form
+   under its own license agreement, provided that:
+
+     a) it complies with the terms and conditions of this Agreement; and
+
+     b) its license agreement:
+
+     i) effectively disclaims on behalf of all Contributors all
+     warranties and conditions, express and implied, including
+     warranties or conditions of title and non-infringement, and implied
+     warranties or conditions of merchantability and fitness for a
+     particular purpose;
+
+     ii) effectively excludes on behalf of all Contributors all
+     liability for damages, including direct, indirect, special,
+     incidental and consequential damages, such as lost profits;
+
+     iii) states that any provisions which differ from this Agreement
+     are offered by that Contributor alone and not by any other party;
+     and
+
+     iv) states that source code for the Program is available from such
+     Contributor, and informs licensees how to obtain it in a reasonable
+     manner on or through a medium customarily used for software
+     exchange.
+
+   When the Program is made available in source code form:
+
+     a) it must be made available under this Agreement; and
+
+     b) a copy of this Agreement must be included with each copy of the
+     Program.
+
+   Contributors may not remove or alter any copyright notices contained
+   within the Program.
+
+   Each Contributor must identify itself as the originator of its
+   Contribution, if any, in a manner that reasonably allows subsequent
+   Recipients to identify the originator of the Contribution.
+
+   4. COMMERCIAL DISTRIBUTION
+
+   Commercial distributors of software may accept certain
+   responsibilities with respect to end users, business partners and the
+   like. While this license is intended to facilitate the commercial use
+   of the Program, the Contributor who includes the Program in a
+   commercial product offering should do so in a manner which does not
+   create potential liability for other Contributors. Therefore, if a
+   Contributor includes the Program in a commercial product offering,
+   such Contributor ("Commercial Contributor") hereby agrees to defend
+   and indemnify every other Contributor ("Indemnified Contributor")
+   against any losses, damages and costs (collectively "Losses") arising
+   from claims, lawsuits and other legal actions brought by a third party
+   against the Indemnified Contributor to the extent caused by the acts
+   or omissions of such Commercial Contributor in connection with its
+   distribution of the Program in a commercial product offering. The
+   obligations in this section do not apply to any claims or Losses
+   relating to any actual or alleged intellectual property infringement.
+   In order to qualify, an Indemnified Contributor must: a) promptly
+   notify the Commercial Contributor in writing of such claim, and b)
+   allow the Commercial Contributor to control, and cooperate with the
+   Commercial Contributor in, the defense and any related settlement
+   negotiations. The Indemnified Contributor may participate in any such
+   claim at its own expense.
+
+   For example, a Contributor might include the Program in a commercial
+   product offering, Product X. That Contributor is then a Commercial
+   Contributor. If that Commercial Contributor then makes performance
+   claims, or offers warranties related to Product X, those performance
+   claims and warranties are such Commercial Contributor's responsibility
+   alone. Under this section, the Commercial Contributor would have to
+   defend claims against the other Contributors related to those
+   performance claims and warranties, and if a court requires any other
+   Contributor to pay any damages as a result, the Commercial Contributor
+   must pay those damages.
+
+   5. NO WARRANTY
+
+   EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+   PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
+   WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+   OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+   responsible for determining the appropriateness of using and
+   distributing the Program and assumes all risks associated with its
+   exercise of rights under this Agreement, including but not limited to
+   the risks and costs of program errors, compliance with applicable
+   laws, damage to or loss of data, programs or equipment, and
+   unavailability or interruption of operations.
+
+   6. DISCLAIMER OF LIABILITY
+
+   EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+   ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+   WITHOUT LIMITATION LOST PROFITS), 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 OR
+   DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+   HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+   7. GENERAL
+
+   If any provision of this Agreement is invalid or unenforceable under
+   applicable law, it shall not affect the validity or enforceability of
+   the remainder of the terms of this Agreement, and without further
+   action by the parties hereto, such provision shall be reformed to the
+   minimum extent necessary to make such provision valid and enforceable.
+
+   If Recipient institutes patent litigation against a Contributor with
+   respect to a patent applicable to software (including a cross-claim or
+   counterclaim in a lawsuit), then any patent licenses granted by that
+   Contributor to such Recipient under this Agreement shall terminate as
+   of the date such litigation is filed. In addition, If Recipient
+   institutes patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Program
+   itself (excluding combinations of the Program with other software or
+   hardware) infringes such Recipient's patent(s), then such Recipient's
+   rights granted under Section 2(b) shall terminate as of the date such
+   litigation is filed.
+
+   All Recipient's rights under this Agreement shall terminate if it
+   fails to comply with any of the material terms or conditions of this
+   Agreement and does not cure such failure in a reasonable period of
+   time after becoming aware of such noncompliance. If all Recipient's
+   rights under this Agreement terminate, Recipient agrees to cease use
+   and distribution of the Program as soon as reasonably practicable.
+   However, Recipient's obligations under this Agreement and any licenses
+   granted by Recipient relating to the Program shall continue and
+   survive.
+
+   Everyone is permitted to copy and distribute copies of this Agreement,
+   but in order to avoid inconsistency the Agreement is copyrighted and
+   may only be modified in the following manner. The Agreement Steward
+   reserves the right to publish new versions (including revisions) of
+   this Agreement from time to time. No one other than the Agreement
+   Steward has the right to modify this Agreement. IBM is the initial
+   Agreement Steward. IBM may assign the responsibility to serve as the
+   Agreement Steward to a suitable separate entity. Each new version of
+   the Agreement will be given a distinguishing version number. The
+   Program (including Contributions) may always be distributed subject to
+   the version of the Agreement under which it was received. In addition,
+   after a new version of the Agreement is published, Contributor may
+   elect to distribute the Program (including its Contributions) under
+   the new version. Except as expressly stated in Sections 2(a) and 2(b)
+   above, Recipient receives no rights or licenses to the intellectual
+   property of any Contributor under this Agreement, whether expressly,
+   by implication, estoppel or otherwise. All rights in the Program not
+   expressly granted under this Agreement are reserved.
+
+   This Agreement is governed by the laws of the State of New York and
+   the intellectual property laws of the United States of America. No
+   party to this Agreement will bring a legal action under this Agreement
+   more than one year after the cause of action arose. Each party waives
+   its rights to a jury trial in any resulting litigation.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">opencv-2.3.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://opencv.willowgarage.com">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License OpenCV-2.3.0/3rdparty/ilmimf/LICENSE:
+
+Copyright (c) 2004, Industrial Light &amp; Magic, a division of Lucasfilm
+Entertainment Company Ltd.  Portions contributed and copyright held by
+others as indicated.  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 Industrial Light &amp; Magic nor the names of
+      any other contributors to this software 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.
+
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License OpenCV-2.3.0/3rdparty/libjasper/LICENSE:
+
+JasPer License Version 2.0
+
+Copyright (c) 2001-2006 Michael David Adams
+Copyright (c) 1999-2000 Image Power, Inc.
+Copyright (c) 1999-2000 The University of British Columbia
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person (the
+"User") obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge,
+publish, distribute, and/or sell copies of the Software, and to permit
+persons to whom the Software is furnished to do so, subject to the
+following conditions:
+
+1.  The above copyright notices and this permission notice (which
+includes the disclaimer below) shall be included in all copies or
+substantial portions of the Software.
+
+2.  The name of a copyright holder shall not be used to endorse or
+promote products derived from the Software without specific prior
+written permission.
+
+THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
+LICENSE.  NO USE OF THE SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER
+THIS DISCLAIMER.  THE SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS
+"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.  IN NO
+EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  NO ASSURANCES ARE
+PROVIDED BY THE COPYRIGHT HOLDERS THAT THE SOFTWARE DOES NOT INFRINGE
+THE PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OF ANY OTHER ENTITY.
+EACH COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY TO THE USER FOR CLAIMS
+BROUGHT BY ANY OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL
+PROPERTY RIGHTS OR OTHERWISE.  AS A CONDITION TO EXERCISING THE RIGHTS
+GRANTED HEREUNDER, EACH USER HEREBY ASSUMES SOLE RESPONSIBILITY TO SECURE
+ANY OTHER INTELLECTUAL PROPERTY RIGHTS NEEDED, IF ANY.  THE SOFTWARE
+IS NOT FAULT-TOLERANT AND IS NOT INTENDED FOR USE IN MISSION-CRITICAL
+SYSTEMS, SUCH AS THOSE USED IN THE OPERATION OF NUCLEAR FACILITIES,
+AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL
+SYSTEMS, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH
+THE FAILURE OF THE SOFTWARE OR SYSTEM COULD LEAD DIRECTLY TO DEATH,
+PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH
+RISK ACTIVITIES").  THE COPYRIGHT HOLDERS SPECIFICALLY DISCLAIM ANY
+EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES.
+
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License OpenCV-2.3.0/doc/license.txt:
+
+IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. 
+
+ By downloading, copying, installing or using the software you agree to this license.
+ If you do not agree to this license, do not download, install,
+ copy or use the software.
+
+
+                          License Agreement
+               For Open Source Computer Vision Library
+
+Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
+Copyright (C) 2008-2011, Willow Garage Inc., all rights reserved.
+Third party copyrights are property of their respective owners.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+  * Redistribution's of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+
+  * Redistribution's 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.
+
+  * The name of the copyright holders may not 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 Intel Corporation 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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">opensc-0.12.2</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.opensc-project.org/opensc/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2.1'>Gentoo Package Stock License LGPL-2.1</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">openssh-6.4_p1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.openssh.org/">homepage</a></span>
@@ -14708,7 +19154,20 @@
 
 
 <div class="product">
-<span class="title">openssl-1.0.1g</span>
+<span class="title">openssh-server-init-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#BSD-Google'>Custom License BSD-Google</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">openssl-1.0.1h</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.openssl.org/">homepage</a></span>
 <div class="licence">
@@ -14984,7 +19443,7 @@
 
 
 <div class="product">
-<span class="title">pepper-flash-14.0.0.95</span>
+<span class="title">pepper-flash-14.0.0.145</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://git-scm.com/">homepage</a></span>
 <div class="licence">
@@ -14997,6 +19456,19 @@
 
 
 <div class="product">
+<span class="title">perceptualdiff-1.1.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://pdiff.sourceforge.net/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">perf-3.14</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://perf.wiki.kernel.org/">homepage</a></span>
@@ -15023,6 +19495,59 @@
 
 
 <div class="product">
+<span class="title">pexpect-2.4</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://pexpect.sourceforge.net/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License pexpect-2.4/LICENSE:
+
+Free, open source, and all that good stuff.
+Pexpect Copyright (c) 2008 Noah Spurrier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License pexpect-2.4/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: pexpect
+Version: 2.4
+Summary: Pexpect is a pure Python Expect. It allows easy control of other applications.
+Home-page: http://pexpect.sourceforge.net/
+Author: Noah Spurrier
+Author-email: noah@noah.org
+License: MIT license
+Description: UNKNOWN
+Platform: UNIX
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">pixman-0.28.2</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
@@ -15095,7 +19620,7 @@
 
 
 <div class="product">
-<span class="title">platform2-0.0.1</span>
+<span class="title">platform2-0.0.3</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
 <div class="licence">
@@ -15186,6 +19711,19 @@
 
 
 <div class="product">
+<span class="title">powertop-2.5</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="https://01.org/powertop/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">ppp-2.4.5</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.samba.org/ppp">homepage</a></span>
@@ -15675,6 +20213,19 @@
 
 
 <div class="product">
+<span class="title">protobuf-python-2.3.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://code.google.com/p/protobuf/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#Apache-2.0'>Gentoo Package Stock License Apache-2.0</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">protofiles-0.0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://chromium.org">homepage</a></span>
@@ -15688,6 +20239,32 @@
 
 
 <div class="product">
+<span class="title">psmisc-22.20</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://psmisc.sourceforge.net/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">punybench-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="https://chromium.googlesource.com/chromiumos/platform/punybench">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">pv-1.3.4</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.ivarch.com/programs/pv.shtml">homepage</a></span>
@@ -15906,6 +20483,227 @@
 
 
 <div class="product">
+<span class="title">pycairo-1.10.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://cairographics.org/pycairo/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2.1'>Gentoo Package Stock License LGPL-2.1</a></li>
+<li><a href='#LGPL-3'>Gentoo Package Stock License LGPL-3</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">pygobject-2.18.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.pygtk.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2.1'>Gentoo Package Stock License LGPL-2.1</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">pygtk-2.14.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.pygtk.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2.1'>Gentoo Package Stock License LGPL-2.1</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">pyserial-2.5_rc2</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://pyserial.sourceforge.net/">homepage</a></span>
+<div class="licence">
+<pre>Gentoo Package Stock License PYTHON:
+
+HISTORY OF THE SOFTWARE
+=======================
+
+Python was created in the early 1990s by Guido van Rossum at Stichting
+Mathematisch Centrum (CWI) in the Netherlands as a successor of a
+language called ABC.  Guido is Python's principal author, although it
+includes many contributions from others.  The last version released
+from CWI was Python 1.2.  In 1995, Guido continued his work on Python
+at the Corporation for National Research Initiatives (CNRI) in Reston,
+Virginia where he released several versions of the software.  Python
+1.6 was the last of the versions released by CNRI.  In 2000, Guido and
+the Python core developement team moved to BeOpen.com to form the
+BeOpen PythonLabs team (www.pythonlabs.com).  Python 2.0 is the first
+release from PythonLabs.  Thanks to the many outside volunteers who
+have worked under Guido's direction to make this release possible.
+
+
+
+BEOPEN.COM TERMS AND CONDITIONS FOR PYTHON 2.0
+==============================================
+
+BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
+-----------------------------------------------------
+
+1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
+office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
+Individual or Organization ("Licensee") accessing and otherwise using
+this software in source or binary form and its associated
+documentation ("the Software").
+
+2. Subject to the terms and conditions of this BeOpen Python License
+Agreement, BeOpen hereby grants Licensee a non-exclusive,
+royalty-free, world-wide license to reproduce, analyze, test, perform
+and/or display publicly, prepare derivative works, distribute, and
+otherwise use the Software alone or in any derivative version,
+provided, however, that the BeOpen Python License is retained in the
+Software, alone or in any derivative version prepared by Licensee.
+
+3. BeOpen is making the Software available to Licensee on an "AS IS"
+basis.  BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
+SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
+AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
+DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+5. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+6. This License Agreement shall be governed by and interpreted in all
+respects by the law of the State of California, excluding conflict of
+law provisions.  Nothing in this License Agreement shall be deemed to
+create any relationship of agency, partnership, or joint venture
+between BeOpen and Licensee.  This License Agreement does not grant
+permission to use BeOpen trademarks or trade names in a trademark
+sense to endorse or promote products or services of Licensee, or any
+third party.  As an exception, the "BeOpen Python" logos available at
+http://www.pythonlabs.com/logos.html may be used according to the
+permissions granted on that web page.
+
+7. By copying, installing or otherwise using the software, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+
+CNRI OPEN SOURCE LICENSE AGREEMENT
+----------------------------------
+
+Python 1.6 CNRI OPEN SOURCE LICENSE AGREEMENT
+
+IMPORTANT: PLEASE READ THE FOLLOWING AGREEMENT CAREFULLY. BY CLICKING
+ON "ACCEPT" WHERE INDICATED BELOW, OR BY COPYING, INSTALLING OR
+OTHERWISE USING PYTHON 1.6 SOFTWARE, YOU ARE DEEMED TO HAVE AGREED TO
+THE TERMS AND CONDITIONS OF THIS LICENSE AGREEMENT.
+
+1. This LICENSE AGREEMENT is between the Corporation for National
+Research Initiatives, having an office at 1895 Preston White Drive,
+Reston, VA 20191 ("CNRI"), and the Individual or Organization
+("Licensee") accessing and otherwise using Python 1.6 software in
+source or binary form and its associated documentation, as released at
+the www.python.org Internet site on September 5, 2000 ("Python 1.6").
+
+2. Subject to the terms and conditions of this License Agreement, CNRI
+hereby grants Licensee a nonexclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display publicly,
+prepare derivative works, distribute, and otherwise use Python 1.6
+alone or in any derivative version, provided, however, that CNRI's
+License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
+1995-2000 Corporation for National Research Initiatives; All Rights
+Reserved" are retained in Python 1.6 alone or in any derivative
+version prepared by
+
+Licensee. Alternately, in lieu of CNRI's License Agreement, Licensee
+may substitute the following text (omitting the quotes): "Python 1.6
+is made available subject to the terms and conditions in CNRI's
+License Agreement. This Agreement together with Python 1.6 may be
+located on the Internet using the following unique, persistent
+identifier (known as a handle): 1895.22/1012. This Agreement may also
+be obtained from a proxy server on the Internet using the following
+URL: http://hdl.handle.net/1895.22/1012".
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python 1.6 or any part thereof, and wants to make the
+derivative work available to others as provided herein, then Licensee
+hereby agrees to include in any such work a brief summary of the
+changes made to Python 1.6.
+
+4. CNRI is making Python 1.6 available to Licensee on an "AS IS"
+basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6 WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+1.6 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A
+RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6, OR
+ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. This License Agreement shall be governed by and interpreted in all
+respects by the law of the State of Virginia, excluding conflict of
+law provisions. Nothing in this License Agreement shall be deemed to
+create any relationship of agency, partnership, or joint venture
+between CNRI and Licensee. This License Agreement does not grant
+permission to use CNRI trademarks or trade name in a trademark sense
+to endorse or promote products or services of Licensee, or any third
+party.
+
+8. By clicking on the "ACCEPT" button where indicated, or by copying,
+installing or otherwise using Python 1.6, Licensee agrees to be bound
+by the terms and conditions of this License Agreement.
+
+ACCEPT
+
+
+CWI PERMISSIONS STATEMENT AND DISCLAIMER
+----------------------------------------
+
+Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
+The Netherlands.  All rights reserved.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">python-2.7.3</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.python.org/">homepage</a></span>
@@ -17320,6 +22118,51 @@
 
 
 <div class="product">
+<span class="title">python-evdev-0.3.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://gvalkov.github.com/python-evdev/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License python-evdev-0.3.1/LICENSE:
+
+Copyright (c) 2012 Georgi Valkov. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  1. Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   
+  2. 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.
+
+  3. Neither the name of author 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 GEORGI VALKOV 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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">python-exec-0.3.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="https://bitbucket.org/mgorny/python-exec/">homepage</a></span>
@@ -17480,6 +22323,911 @@
 
 
 <div class="product">
+<span class="title">pyudev-0.12</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://packages.python.org/pyudev/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License pyudev-0.12/COPYING:
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    &lt;one line to give the library's name and a brief idea of what it does.&gt;
+    Copyright (C) &lt;year&gt;  &lt;name of author&gt;
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  &lt;signature of Ty Coon&gt;, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License pyudev-0.12/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: pyudev
+Version: 0.12
+Summary: A libudev binding
+Home-page: http://packages.python.org/pyudev
+Author: Sebastian Wiesner
+Author-email: lunaryorn@googlemail.com
+License: MIT/X11
+Description: ######
+        pyudev
+        ######
+        
+        http://packages.python.org/pyudev
+        
+        pyudev is a Python_ binding for libudev_, available under the terms fo the
+        `GNU LGPL 2.1`_ (see ``COPYING``).
+        
+        Refer to the website_ for detailed information and API documentation.
+        
+        
+        Installation
+        ============
+        
+        The basic binding is implemented in pure Python atop of ctypes_.  The only
+        dependencies are udev_ and Python.pyudev supports CPython_ 2.6 or newer
+        (including 3.x) and PyPy_ 1.5 or newer, and is tested against udev_ 151 and
+        newer.  Older versions of older versions of udev_ may or may not work.
+        
+        The toolkit integration modules in ``pyudev.pyqt4``, ``pyudev.pyside`` and
+        ``pyudev.glib`` require some libraries from the corresponding toolkit.
+        Refer to the documentation of these modules for a more precise description.
+        
+        Installation is rather simple, just run::
+        
+           python setup.py install
+        
+        
+        Issues and Feedback
+        ===================
+        
+        There is a mailing list at pyudev@librelist.com for user questions and
+        development discussions around pyudev.  To subscribe to this list, just send
+        a mail to pyudev@librelist.com and reply to the configuration mail.  The
+        original mail is ditched.
+        
+        Issues or enhancement proposals should be reported to the `issue tracker`_.
+        Thank you.
+        
+        
+        Development
+        ===========
+        
+        Development happens on GitHub_.  The complete source code is available in a
+        git_ repository::
+        
+           git clone --recursive git://github.com/lunaryorn/pyudev.git
+        
+        Feel free to fork the repository.  Pull requests and patches are welcome!
+        
+        .. _GNU LGPL 2.1: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
+        .. _Python: http://www.python.org/
+        .. _CPython: http://www.python.org/
+        .. _PyPy: http://codespeak.net/pypy/
+        .. _PyQt4: http://www.riverbankcomputing.co.uk/software/pyqt/intro/
+        .. _udev: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
+        .. _libudev: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
+        .. _website: http://packages.python.org/pyudev
+        .. _ctypes: http://docs.python.org/library/ctypes.html
+        .. _issue tracker: http://github.com/lunaryorn/pyudev/issues
+        .. _GitHub: http://github.com/lunaryorn/pyudev
+        .. _git: http://www.git-scm.com/
+        
+Platform: Linux
+Classifier: Development Status :: 4 - Beta
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Operating System :: POSIX :: Linux
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: Software Development :: Libraries
+Classifier: Topic :: System :: Hardware
+Classifier: Topic :: System :: Operating System Kernels :: Linux
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License pyudev-0.12/pyudev.egg-info/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: pyudev
+Version: 0.12
+Summary: A libudev binding
+Home-page: http://packages.python.org/pyudev
+Author: Sebastian Wiesner
+Author-email: lunaryorn@googlemail.com
+License: MIT/X11
+Description: ######
+        pyudev
+        ######
+        
+        http://packages.python.org/pyudev
+        
+        pyudev is a Python_ binding for libudev_, available under the terms fo the
+        `GNU LGPL 2.1`_ (see ``COPYING``).
+        
+        Refer to the website_ for detailed information and API documentation.
+        
+        
+        Installation
+        ============
+        
+        The basic binding is implemented in pure Python atop of ctypes_.  The only
+        dependencies are udev_ and Python.pyudev supports CPython_ 2.6 or newer
+        (including 3.x) and PyPy_ 1.5 or newer, and is tested against udev_ 151 and
+        newer.  Older versions of older versions of udev_ may or may not work.
+        
+        The toolkit integration modules in ``pyudev.pyqt4``, ``pyudev.pyside`` and
+        ``pyudev.glib`` require some libraries from the corresponding toolkit.
+        Refer to the documentation of these modules for a more precise description.
+        
+        Installation is rather simple, just run::
+        
+           python setup.py install
+        
+        
+        Issues and Feedback
+        ===================
+        
+        There is a mailing list at pyudev@librelist.com for user questions and
+        development discussions around pyudev.  To subscribe to this list, just send
+        a mail to pyudev@librelist.com and reply to the configuration mail.  The
+        original mail is ditched.
+        
+        Issues or enhancement proposals should be reported to the `issue tracker`_.
+        Thank you.
+        
+        
+        Development
+        ===========
+        
+        Development happens on GitHub_.  The complete source code is available in a
+        git_ repository::
+        
+           git clone --recursive git://github.com/lunaryorn/pyudev.git
+        
+        Feel free to fork the repository.  Pull requests and patches are welcome!
+        
+        .. _GNU LGPL 2.1: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
+        .. _Python: http://www.python.org/
+        .. _CPython: http://www.python.org/
+        .. _PyPy: http://codespeak.net/pypy/
+        .. _PyQt4: http://www.riverbankcomputing.co.uk/software/pyqt/intro/
+        .. _udev: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
+        .. _libudev: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
+        .. _website: http://packages.python.org/pyudev
+        .. _ctypes: http://docs.python.org/library/ctypes.html
+        .. _issue tracker: http://github.com/lunaryorn/pyudev/issues
+        .. _GitHub: http://github.com/lunaryorn/pyudev
+        .. _git: http://www.git-scm.com/
+        
+Platform: Linux
+Classifier: Development Status :: 4 - Beta
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Operating System :: POSIX :: Linux
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 3
+Classifier: Topic :: Software Development :: Libraries
+Classifier: Topic :: System :: Hardware
+Classifier: Topic :: System :: Operating System Kernels :: Linux
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">pyusb-1.0.0_beta1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://pyusb.sourceforge.net/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License pyusb-1.0.0b1/LICENSE:
+
+Copyright (C) 2009-2011 Wander Lairson Costa. All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. 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.
+
+3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR "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 AUTHOR 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.
+
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License pyusb-1.0.0b1/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: pyusb
+Version: 1.0.0b1
+Summary: Python USB access module
+Home-page: http://pyusb.sourceforge.net
+Author: Wander Lairson Costa
+Author-email: wander.lairson@gmail.com
+License: BSD
+Description: 
+        PyUSB offers easy USB devices communication in Python.
+        It should work without additional code in any environment with
+        Python &gt;= 2.4, ctypes and an pre-built usb backend library
+        (currently, libusb 0.1.x, libusb 1.x, and OpenUSB).
+        
+Platform: UNKNOWN
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">pyyaml-3.09</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://pyyaml.org/wiki/PyYAML">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License PyYAML-3.09/LICENSE:
+
+Copyright (c) 2006 Kirill Simonov
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License PyYAML-3.09/PKG-INFO:
+
+Metadata-Version: 1.0
+Name: PyYAML
+Version: 3.09
+Summary: YAML parser and emitter for Python
+Home-page: http://pyyaml.org/wiki/PyYAML
+Author: Kirill Simonov
+Author-email: xi@resolvent.net
+License: MIT
+Download-URL: http://pyyaml.org/download/pyyaml/PyYAML-3.09.tar.gz
+Description: YAML is a data serialization format designed for human readability
+        and interaction with scripting languages.  PyYAML is a YAML parser
+        and emitter for Python.
+        
+        PyYAML features a complete YAML 1.1 parser, Unicode support, pickle
+        support, capable extension API, and sensible error messages.  PyYAML
+        supports standard YAML tags and provides Python-specific tags that
+        allow to represent an arbitrary Python object.
+        
+        PyYAML is applicable for a broad range of tasks from complex
+        configuration files to object serialization and persistance.
+Platform: Any
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: MIT License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.3
+Classifier: Programming Language :: Python :: 2.4
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.0
+Classifier: Programming Language :: Python :: 3.1
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: Topic :: Text Processing :: Markup
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">qemacs-0.4.0_pre20090420</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://savannah.nongnu.org/projects/qemacs">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#LGPL-2.1'>Gentoo Package Stock License LGPL-2.1</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">radvd-1.9.8</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://v6web.litech.org/radvd/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License radvd-1.9.8/COPYRIGHT:
+
+  The author(s) grant permission for redistribution and use in source and
+binary forms, with or without modification, of the software and documentation
+provided that the following conditions are met:
+
+0. If you receive a version of the software that is specifically labelled
+   as not being for redistribution (check the version message and/or README),
+   you are not permitted to redistribute that version of the software in any
+   way or form.
+1. All terms of all other applicable copyrights and licenses must be
+   followed.
+2. Redistributions of source code must retain the authors' copyright
+   notice(s), this list of conditions, and the following disclaimer.
+3. Redistributions in binary form must reproduce the authors' copyright
+   notice(s), this list of conditions, and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+4. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement with the name(s) of the
+   authors as specified in the copyright notice(s) substituted where
+   indicated:
+
+        This product includes software developed by the authors which are 
+	mentioned at the start of the source files and other contributors.
+
+5. Neither the name(s) of the author(s) 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 ITS AUTHORS 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 AUTHORS 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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+</pre>
+<ul>
+
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">randrproto-1.4.0</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
@@ -17519,6 +23267,19 @@
 
 
 <div class="product">
+<span class="title">read-edid-1.4.2</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.polypux.org/projects/read-edid/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">readline-6.2_p1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html">homepage</a></span>
@@ -17622,6 +23383,19 @@
 
 
 <div class="product">
+<span class="title">recover-duts-0.0.1</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">renderproto-0.11.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
@@ -17698,67 +23472,6 @@
 
 
 <div class="product">
-<span class="title">rgb-1.0.4</span>
-<a class="show" href="#" onclick="return toggle(this);">show license text</a>
-<span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
-<div class="licence">
-<pre>Scanned Source License rgb-1.0.4/COPYING:
-
-Copyright 1985, 1989, 1998  The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-Copyright (c) 1994, 2008, Oracle and/or its affiliates. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next
-paragraph) shall be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-</pre>
-<ul>
-
-</ul>
-</div>
-</div>
-
-
-<div class="product">
 <span class="title">root-certificates-0.0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://src.chromium.org">homepage</a></span>
@@ -17813,6 +23526,19 @@
 
 
 <div class="product">
+<span class="title">rxvt-unicode-9.10</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://software.schmorp.de/pkg/rxvt-unicode.html">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">salsa-0.0.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://www.chromium.org/">homepage</a></span>
@@ -17908,6 +23634,19 @@
 
 
 <div class="product">
+<span class="title">screen-4.0.3</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://www.gnu.org/software/screen/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#GPL-2'>Gentoo Package Stock License GPL-2</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
 <span class="title">scrnsaverproto-1.2.1</span>
 <a class="show" href="#" onclick="return toggle(this);">show license text</a>
 <span class="homepage"><a href="http://xorg.freedesktop.org/">homepage</a></span>
@@ -17962,6 +23701,331 @@
 
 
 <div class="product">
+<span class="title">selenium-2.29.0</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://pypi.python.org/pypi/selenium/">homepage</a></span>
+<div class="licence">
+<pre></pre>
+<ul>
+<li><a href='#Apache-2.0'>Gentoo Package Stock License Apache-2.0</a></li>
+</ul>
+</div>
+</div>
+
+
+<div class="product">
+<span class="title">setproctitle-1.1.8</span>
+<a class="show" href="#" onclick="return toggle(this);">show license text</a>
+<span class="homepage"><a href="http://code.google.com/p/py-setproctitle/">homepage</a></span>
+<div class="licence">
+<pre>Scanned Source License setproctitle-1.1.8/COPYRIGHT:
+
+Copyright (c) 2009-2012, Daniele Varrazzo &lt;daniele.varrazzo@gmail.com&gt;
+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.
+* The name of Daniele Varrazzo may not 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 HOLDER 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.
+
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Scanned Source License setproctitle-1.1.8/PKG-INFO:
+
+Metadata-Version: 1.1
+Name: setproctitle
+Version: 1.1.8
+Summary: A library to allow customization of the process title.
+Home-page: http://code.google.com/p/py-setproctitle/
+Author: Daniele Varrazzo
+Author-email: daniele.varrazzo@gmail.com
+License: BSD
+Download-URL: http://pypi.python.org/pypi/setproctitle/
+Description: A ``setproctitle`` implementation for Python
+        ============================================
+        
+        :author: Daniele Varrazzo
+        
+        The library allows a process to change its title (as displayed by system tools
+        such as ``ps`` and ``top``).
+        
+        Changing the title is mostly useful in multi-process systems, for example
+        when a master process is forked: changing the children's title allows to
+        identify the task each process is busy with.  The technique is used by
+        PostgreSQL_ and the `OpenSSH Server`_ for example.
+        
+        The procedure is hardly portable across different systems.  PostgreSQL provides
+        a good `multi-platform implementation`__:  this module is a Python wrapper
+        around PostgreSQL code.
+        
+        - `Homepage &lt;http://code.google.com/p/py-setproctitle/&gt;`__