Merge m-c to inbound. a=merge
authorRyan VanderMeulen <ryanvm@gmail.com>
Fri, 21 Jul 2017 09:40:28 -0400
changeset 418938 98d3f0b9791d22f30da5aa9824209118c22a3d03
parent 418937 55330a883a17af8ae34a5fc90f81fd7b916b500e (current diff)
parent 418735 417eea89f792059e88be5e217e6f1a5cecf2d3d0 (diff)
child 418939 057d626fc5e1afbf4086eb9400ebb3718a4cabca
child 419028 41a7b32bdfeb292d9f6fcb3fd42bab74c36727f4
push id7566
push usermtabara@mozilla.com
push dateWed, 02 Aug 2017 08:25:16 +0000
treeherdermozilla-beta@86913f512c3c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone56.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge m-c to inbound. a=merge
browser/components/sessionstore/SessionStore.jsm
browser/components/sessionstore/test/browser.ini
dom/ipc/ContentChild.cpp
dom/ipc/PBrowser.ipdl
dom/ipc/TabChild.cpp
dom/ipc/TabParent.cpp
dom/ipc/TabParent.h
gfx/layers/Layers.cpp
gfx/layers/Layers.h
mobile/android/app/src/australis/res/drawable-hdpi/tip_addsearch.png
mobile/android/app/src/australis/res/drawable-xhdpi/tip_addsearch.png
mobile/android/app/src/australis/res/layout/preference_search_tip.xml
mobile/android/app/src/australis/res/layout/private_tabs_panel.xml
mobile/android/app/src/photon/res/drawable-hdpi/private_illustration_android.png
mobile/android/app/src/photon/res/drawable-hdpi/tip_addsearch.png
mobile/android/app/src/photon/res/drawable-mdpi/private_illustration_android.png
mobile/android/app/src/photon/res/drawable-mdpi/tip_addsearch.png
mobile/android/app/src/photon/res/drawable-xhdpi/private_illustration_android.png
mobile/android/app/src/photon/res/drawable-xhdpi/tip_addsearch.png
mobile/android/app/src/photon/res/drawable-xxhdpi/private_illustration_android.png
mobile/android/app/src/photon/res/drawable-xxhdpi/tip_addsearch.png
mobile/android/app/src/photon/res/drawable-xxxhdpi/private_illustration_android.png
mobile/android/app/src/photon/res/drawable-xxxhdpi/tip_addsearch.png
mobile/android/app/src/photon/res/layout/preference_search_tip.xml
mobile/android/app/src/photon/res/layout/private_tabs_panel.xml
toolkit/components/telemetry/Scalars.yaml
toolkit/xre/nsAppRunner.cpp
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -1493,19 +1493,16 @@ var gBrowserInit = {
         window.focus();
       } else {
         // Note: loadOneOrMoreURIs *must not* be called if window.arguments.length >= 3.
         // Such callers expect that window.arguments[0] is handled as a single URI.
         loadOneOrMoreURIs(uriToLoad, Services.scriptSecurityManager.getSystemPrincipal());
       }
     }
 
-    // Bug 778855 - Perf regression if we do this here. To be addressed in bug 779008.
-    setTimeout(function() { SafeBrowsing.init(); }, 2000);
-
     Services.obs.addObserver(gIdentityHandler, "perm-changed");
     Services.obs.addObserver(gRemoteControl, "remote-active");
     Services.obs.addObserver(gSessionHistoryObserver, "browser:purge-session-history");
     Services.obs.addObserver(gStoragePressureObserver, "QuotaManager::StoragePressure");
     Services.obs.addObserver(gXPInstallObserver, "addon-install-disabled");
     Services.obs.addObserver(gXPInstallObserver, "addon-install-started");
     Services.obs.addObserver(gXPInstallObserver, "addon-install-blocked");
     Services.obs.addObserver(gXPInstallObserver, "addon-install-origin-blocked");
@@ -4986,49 +4983,63 @@ var CombinedStopReload = {
         return;
       this.animate = Services.prefs.getBoolPref("toolkit.cosmeticAnimations.enabled") &&
                      Services.prefs.getBoolPref("browser.stopReloadAnimation.enabled");
       Services.prefs.addObserver("toolkit.cosmeticAnimations.enabled", this);
       this.stopReloadContainer.addEventListener("animationend", this);
     });
   },
 
+  /* This function is necessary to correctly vertically center the animation
+     within the toolbar, which uses -moz-pack-align:stretch; and thus a height
+     which is dependant on the font-size. */
+  setAnimationImageHeightRelativeToToolbarButtonHeight() {
+    let dwu = window.getInterface(Ci.nsIDOMWindowUtils);
+    let toolbarItem = this.stopReloadContainer.closest(".customization-target > toolbaritem");
+    let bounds = dwu.getBoundsWithoutFlushing(toolbarItem);
+    toolbarItem.style.setProperty("--toolbarbutton-height", bounds.height + "px");
+  },
+
   switchToStop(aRequest, aWebProgress) {
     if (!this._initialized || !this._shouldSwitch(aRequest))
       return;
 
     let shouldAnimate = AppConstants.MOZ_PHOTON_ANIMATIONS &&
                         aRequest instanceof Ci.nsIRequest &&
                         aWebProgress.isTopLevel &&
                         aWebProgress.isLoadingDocument &&
                         this.animate;
 
     this._cancelTransition();
-    if (shouldAnimate)
+    if (shouldAnimate) {
+      this.setAnimationImageHeightRelativeToToolbarButtonHeight();
       this.stopReloadContainer.setAttribute("animate", "true");
-    else
+    } else {
       this.stopReloadContainer.removeAttribute("animate");
+    }
     this.reload.setAttribute("displaystop", "true");
   },
 
   switchToReload(aRequest, aWebProgress) {
     if (!this._initialized || !this._shouldSwitch(aRequest) ||
         !this.reload.hasAttribute("displaystop"))
       return;
 
     let shouldAnimate = AppConstants.MOZ_PHOTON_ANIMATIONS &&
                         aRequest instanceof Ci.nsIRequest &&
                         aWebProgress.isTopLevel &&
                         !aWebProgress.isLoadingDocument &&
                         this.animate;
 
-    if (shouldAnimate)
+    if (shouldAnimate) {
+      this.setAnimationImageHeightRelativeToToolbarButtonHeight();
       this.stopReloadContainer.setAttribute("animate", "true");
-    else
+    } else {
       this.stopReloadContainer.removeAttribute("animate");
+    }
 
     this.reload.removeAttribute("displaystop");
 
     if (!shouldAnimate || this._stopClicked) {
       this._stopClicked = false;
       this._cancelTransition();
       this.reload.disabled = XULBrowserWindow.reloadCommand
                                              .getAttribute("disabled") == "true";
--- a/browser/base/content/test/newtab/browser_newtab_focus.js
+++ b/browser/base/content/test/newtab/browser_newtab_focus.js
@@ -3,17 +3,17 @@
 
 /*
  * These tests make sure that focusing the 'New Tab Page' works as expected.
  */
 add_task(async function() {
   await pushPrefs(["accessibility.tabfocus", 7]);
 
   // When the onboarding component is enabled, it would inject extra tour notification into
-  // the newtab page so there would be 2 more notification close button and action button
+  // the newtab page so there would be 3 more overlay button, notification close button and action button
   let onbardingEnabled = AppConstants.NIGHTLY_BUILD && Services.prefs.getBoolPref("browser.onboarding.enabled");
 
   // Focus count in new tab page.
   // 30 = 9 * 3 + 3 = 9 sites, each with link, pin and remove buttons; search
   // bar; search button; and toggle button. Additionaly there may or may not be
   // a scroll bar caused by fix to 1180387, which will eat an extra focus
   let FOCUS_COUNT = 30;
 
@@ -21,28 +21,28 @@ add_task(async function() {
   await setLinks("0,1,2,3,4,5,6,7,8");
   setPinnedLinks("");
 
   if (onbardingEnabled) {
     await promiseNoMuteNotificationOnFirstSession();
   }
   let tab = await addNewTabPageTab();
   if (onbardingEnabled) {
-    FOCUS_COUNT += 2;
+    FOCUS_COUNT += 3;
     await promiseTourNotificationOpened(tab.linkedBrowser);
   }
   gURLBar.focus();
   // Count the focus with the enabled page.
   countFocus(FOCUS_COUNT);
   // Disable page and count the focus with the disabled page.
   NewTabUtils.allPages.enabled = false;
 
   let expectedCount = 4;
   if (onbardingEnabled) {
-    expectedCount += 2;
+    expectedCount += 3;
   }
   countFocus(expectedCount);
 
   NewTabUtils.allPages.enabled = true;
 });
 
 /**
  * Focus the urlbar and count how many focus stops to return again to the urlbar.
--- a/browser/components/nsBrowserGlue.js
+++ b/browser/components/nsBrowserGlue.js
@@ -15,16 +15,19 @@ Cu.import("resource://gre/modules/AppCon
 
 XPCOMUtils.defineLazyServiceGetter(this, "WindowsUIUtils", "@mozilla.org/windows-ui-utils;1", "nsIWindowsUIUtils");
 XPCOMUtils.defineLazyGetter(this, "WeaveService", () =>
   Cc["@mozilla.org/weave/service;1"].getService().wrappedJSObject
 );
 XPCOMUtils.defineLazyModuleGetter(this, "ContextualIdentityService",
                                   "resource://gre/modules/ContextualIdentityService.jsm");
 
+XPCOMUtils.defineLazyModuleGetter(this, "SafeBrowsing",
+                                  "resource://gre/modules/SafeBrowsing.jsm");
+
 // lazy module getters
 
 /* global AboutHome:false, AboutNewTab:false, AddonManager:false, AppMenuNotifications:false,
           AsyncPrefs: false, AsyncShutdown:false, AutoCompletePopup:false, BookmarkHTMLUtils:false,
           BookmarkJSONUtils:false, BrowserUITelemetry:false, BrowserUsageTelemetry:false,
           ContentClick:false, ContentPrefServiceParent:false, ContentSearch:false,
           DateTimePickerHelper:false, DirectoryLinksProvider:false,
           ExtensionsUI:false, Feeds:false,
@@ -1180,16 +1183,20 @@ BrowserGlue.prototype = {
       });
     }
 
     // Let's load the contextual identities.
     Services.tm.idleDispatchToMainThread(() => {
       ContextualIdentityService.load();
     });
 
+    Services.tm.idleDispatchToMainThread(() => {
+      SafeBrowsing.init();
+    }, 5000);
+
     this._sanitizer.onStartup();
     E10SAccessibilityCheck.onWindowsRestored();
   },
 
   _createExtraDefaultProfile() {
     if (!AppConstants.MOZ_DEV_EDITION) {
       return;
     }
--- a/browser/components/sessionstore/SessionStore.jsm
+++ b/browser/components/sessionstore/SessionStore.jsm
@@ -3274,18 +3274,18 @@ var SessionStoreInternal = {
     if (overwriteTabs) {
       for (let i = tabbrowser.browsers.length - 1; i >= 0; i--) {
         if (!tabbrowser.tabs[i].selected) {
           tabbrowser.removeTab(tabbrowser.tabs[i]);
         }
       }
     }
 
-    let restoreTabsLazily = this._prefBranch.getBoolPref("sessionstore.restore_tabs_lazily") &&
-      this._prefBranch.getBoolPref("sessionstore.restore_on_demand");
+    let restoreOnDemand = this._prefBranch.getBoolPref("sessionstore.restore_on_demand");
+    let restoreTabsLazily = this._prefBranch.getBoolPref("sessionstore.restore_tabs_lazily") && restoreOnDemand;
 
     for (var t = 0; t < newTabCount; t++) {
       let tabData = winData.tabs[t];
 
       let userContextId = tabData.userContextId;
       let select = t == selectTab - 1;
       let tab;
 
@@ -3328,16 +3328,23 @@ var SessionStoreInternal = {
                                   userContextId,
                                   skipBackgroundNotify: true });
 
         if (select) {
           let leftoverTab = tabbrowser.selectedTab;
           tabbrowser.selectedTab = tab;
           tabbrowser.removeTab(leftoverTab);
         }
+
+        // Prepare connection to the host when users hover mouse over this
+        // tab. If we're not restoring on demand, we'll prepare connection
+        // when we're restoring next tab.
+        if (!tabData.pinned && restoreOnDemand) {
+          this.speculativeConnectOnTabHover(tab, url);
+        }
       }
 
       tabs.push(tab);
 
       if (tabData.hidden) {
         tabbrowser.hideTab(tab);
       }
 
@@ -3413,16 +3420,52 @@ var SessionStoreInternal = {
     this._sendWindowRestoredNotification(aWindow);
 
     Services.obs.notifyObservers(aWindow, NOTIFY_SINGLE_WINDOW_RESTORED);
 
     this._sendRestoreCompletedNotifications();
   },
 
   /**
+   * Prepare connection to host beforehand.
+   *
+   * @param url
+   *        URL of a host.
+   * @returns a flag indicates whether a connection has been made
+   */
+  prepareConnectionToHost(url) {
+    if (!url.startsWith("about:")) {
+      let sc = Services.io.QueryInterface(Ci.nsISpeculativeConnect);
+      let uri = Services.io.newURI(url);
+      sc.speculativeConnect(uri, null, null);
+      return true;
+    }
+    return false;
+  },
+
+  /**
+   * Make a connection to a host when users hover mouse on a tab.
+   *
+   * @param tab
+   *        A tab to set up a hover listener.
+   * @param url
+   *        URL of a host.
+   */
+  speculativeConnectOnTabHover(tab, url) {
+    tab.addEventListener("mouseover", () => {
+      let prepared = this.prepareConnectionToHost(url);
+      // This is used to test if a connection has been made beforehand.
+      if (gDebuggingEnabled) {
+        tab.__test_connection_prepared = prepared;
+        tab.__test_connection_url = url;
+      }
+    }, {once: true});
+  },
+
+  /**
    * Restore multiple windows using the provided state.
    * @param aWindow
    *        Window reference to the first window to use for restoration.
    *        Additionally required windows will be opened.
    * @param aState
    *        JS object or JSON string
    * @param aOptions
    *        {overwriteTabs: true} to overwrite existing tabs w/ new ones
@@ -3677,16 +3720,29 @@ var SessionStoreInternal = {
       this._sendRestoreHistory(browser, {tabData, epoch, loadArguments});
 
       // This could cause us to ignore MAX_CONCURRENT_TAB_RESTORES a bit, but
       // it ensures each window will have its selected tab loaded.
       if (willRestoreImmediately) {
         this.restoreTabContent(tab, options);
       } else if (!forceOnDemand) {
         TabRestoreQueue.add(tab);
+        // Check if a tab is in queue and will be restored
+        // after the currently loading tabs. If so, prepare
+        // a connection to host to speed up page loading.
+        if (TabRestoreQueue.willRestoreSoon(tab)) {
+          if (activeIndex in tabData.entries) {
+            let url = tabData.entries[activeIndex].url;
+            let prepared = this.prepareConnectionToHost(url);
+            if (gDebuggingEnabled) {
+              tab.__test_connection_prepared = prepared;
+              tab.__test_connection_url = url;
+            }
+          }
+        }
         this.restoreNextTab();
       }
     } else {
       // __SS_lazyData holds data for lazy-browser tabs to proxy for
       // data unobtainable from the unbound browser.  This only applies to lazy
       // browsers and will be removed once the browser is inserted in the document.
       // This must preceed `updateTabLabelAndIcon` call for required data to be present.
       let url = "about:blank";
--- a/browser/components/sessionstore/test/browser.ini
+++ b/browser/components/sessionstore/test/browser.ini
@@ -27,16 +27,17 @@ support-files =
   browser_frame_history_c2.html
   browser_formdata_format_sample.html
   browser_sessionHistory_slow.sjs
   browser_scrollPositions_sample.html
   browser_scrollPositions_sample2.html
   browser_scrollPositions_sample_frameset.html
   browser_scrollPositions_readerModeArticle.html
   browser_sessionStorage.html
+  browser_speculative_connect.html
   browser_248970_b_sample.html
   browser_339445_sample.html
   browser_423132_sample.html
   browser_447951_sample.html
   browser_454908_sample.html
   browser_456342_sample.xhtml
   browser_463205_sample.html
   browser_463206_sample.html
@@ -253,8 +254,10 @@ skip-if = !e10s # GroupedSHistory is e10
 [browser_closed_objects_changed_notifications_windows.js]
 [browser_duplicate_history.js]
 [browser_tabicon_after_bg_tab_crash.js]
 skip-if = !e10s # Tabs can't crash without e10s
 
 [browser_cookies.js]
 [browser_cookies_legacy.js]
 [browser_cookies_privacy.js]
+[browser_speculative_connect.js]
+
new file mode 100644
--- /dev/null
+++ b/browser/components/sessionstore/test/browser_speculative_connect.html
@@ -0,0 +1,9 @@
+<html>
+<header>
+  <title>Dummy html page to test speculative connect</title>
+</header>
+<body>
+  Hello Speculative Connect
+</body>
+</html>
+
new file mode 100644
--- /dev/null
+++ b/browser/components/sessionstore/test/browser_speculative_connect.js
@@ -0,0 +1,96 @@
+const TEST_URLS = [
+  "about:buildconfig",
+  "http://mochi.test:8888/browser/browser/components/sessionstore/test/browser_speculative_connect.html",
+  ""
+];
+
+/**
+ * This will open tabs in browser. This will also make the last tab
+ * inserted to be the selected tab.
+ */
+async function openTabs(win) {
+  for (let i = 0; i < TEST_URLS.length; ++i) {
+    await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URLS[i]);
+  }
+}
+
+add_task(async function speculative_connect_restore_on_demand() {
+  Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", true);
+  is(Services.prefs.getBoolPref("browser.sessionstore.restore_on_demand"), true, "We're restoring on demand");
+  forgetClosedWindows();
+
+  // Open a new window and populate with tabs.
+  let win = await promiseNewWindowLoaded();
+  await openTabs(win);
+
+  // Close the window.
+  await BrowserTestUtils.closeWindow(win);
+
+  // Reopen a window.
+  let newWin = undoCloseWindow(0);
+  // Make sure we wait until this window is restored.
+  await BrowserTestUtils.waitForEvent(newWin, "load");
+  await BrowserTestUtils.waitForEvent(newWin.gBrowser.tabContainer, "SSTabRestored");
+
+  let tabs = newWin.gBrowser.tabs;
+  is(tabs.length, TEST_URLS.length + 1, "Restored right number of tabs");
+
+  let e = new MouseEvent("mouseover");
+
+  // First tab should be ignore, since it's the default blank tab when we open a new window.
+
+  // Trigger a mouse enter on second tab.
+  tabs[1].dispatchEvent(e);
+  is(tabs[1].__test_connection_prepared, false, "Second tab doesn't have a connection prepared");
+  is(tabs[1].__test_connection_url, TEST_URLS[0], "Second tab has correct url");
+
+  // Trigger a mouse enter on third tab.
+  tabs[2].dispatchEvent(e);
+  is(tabs[2].__test_connection_prepared, true, "Third tab has a connection prepared");
+  is(tabs[2].__test_connection_url, TEST_URLS[1], "Third tab has correct url");
+
+  // Last tab is the previously selected tab.
+  tabs[3].dispatchEvent(e);
+  is(tabs[3].__test_connection_prepared, undefined, "Previous selected tab should not have a connection prepared");
+  is(tabs[3].__test_connection_url, undefined, "Previous selected tab should not have a connection prepared");
+
+  await BrowserTestUtils.closeWindow(newWin);
+});
+
+add_task(async function speculative_connect_restore_automatically() {
+  Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", false);
+  is(Services.prefs.getBoolPref("browser.sessionstore.restore_on_demand"), false, "We're restoring automatically");
+  forgetClosedWindows();
+
+  // Open a new window and populate with tabs.
+  let win = await promiseNewWindowLoaded();
+  await openTabs(win);
+
+  // Close the window.
+  await BrowserTestUtils.closeWindow(win);
+
+  // Reopen a window.
+  let newWin = undoCloseWindow(0);
+  // Make sure we wait until this window is restored.
+  await BrowserTestUtils.waitForEvent(newWin, "load");
+  await BrowserTestUtils.waitForEvent(newWin.gBrowser.tabContainer, "SSTabRestored");
+
+  let tabs = newWin.gBrowser.tabs;
+  is(tabs.length, TEST_URLS.length + 1, "Restored right number of tabs");
+
+  // First tab is ignore, since it's the default tab open when we open new window
+
+  // Second tab.
+  is(tabs[1].__test_connection_prepared, false, "Second tab doesn't have a connection prepared");
+  is(tabs[1].__test_connection_url, TEST_URLS[0], "Second tab has correct host url");
+
+  // Third tab.
+  is(tabs[2].__test_connection_prepared, true, "Third tab has a connection prepared");
+  is(tabs[2].__test_connection_url, TEST_URLS[1], "Third tab has correct host url");
+
+  // Last tab is the previously selected tab.
+  is(tabs[3].__test_connection_prepared, undefined, "Selected tab should not have a connection prepared");
+  is(tabs[3].__test_connection_url, undefined, "Selected tab should not have a connection prepared");
+
+  await BrowserTestUtils.closeWindow(newWin);
+});
--- a/browser/components/uitour/UITour.jsm
+++ b/browser/components/uitour/UITour.jsm
@@ -1000,17 +1000,18 @@ this.UITour = {
     return targetElement.id.startsWith(prefix)
              && targetElement.id != "PanelUI-button";
   },
 
   /**
    * Called before opening or after closing a highlight or info panel to see if
    * we need to open or close the appMenu to see the annotation's anchor.
    */
-  _setAppMenuStateForAnnotation(aWindow, aAnnotationType, aShouldOpenForHighlight, aCallback = null) {
+  _setAppMenuStateForAnnotation(aWindow, aAnnotationType, aShouldOpenForHighlight, aTarget = null,
+                                aCallback = null) {
     log.debug("_setAppMenuStateForAnnotation:", aAnnotationType);
     log.debug("_setAppMenuStateForAnnotation: Menu is expected to be:", aShouldOpenForHighlight ? "open" : "closed");
 
     // If the panel is in the desired state, we're done.
     let panelIsOpen = aWindow.PanelUI.panel.state != "closed";
     if (aShouldOpenForHighlight == panelIsOpen) {
       log.debug("_setAppMenuStateForAnnotation: Panel already in expected state");
       if (aCallback)
@@ -1030,17 +1031,26 @@ this.UITour = {
       this.appMenuOpenForAnnotation.add(aAnnotationType);
     } else {
       this.appMenuOpenForAnnotation.delete(aAnnotationType);
     }
 
     // Actually show or hide the menu
     if (this.appMenuOpenForAnnotation.size) {
       log.debug("_setAppMenuStateForAnnotation: Opening the menu");
-      this.showMenu(aWindow, "appMenu", aCallback);
+      this.showMenu(aWindow, "appMenu", async () => {
+        // PanelMultiView's like the AppMenu might shuffle the DOM, which might result
+        // in our target being invalidated if it was anonymous content (since the XBL
+        // binding it belonged to got destroyed). We work around this by re-querying for
+        // the node and stuffing it into the old target structure.
+        log.debug("_setAppMenuStateForAnnotation: Refreshing target");
+        let refreshedTarget = await this.getTarget(aWindow, aTarget.targetName);
+        aTarget.node = refreshedTarget.node;
+        aCallback();
+      });
     } else {
       log.debug("_setAppMenuStateForAnnotation: Closing the menu");
       this.hideMenu(aWindow, "appMenu");
       if (aCallback)
         aCallback();
     }
 
   },
@@ -1147,16 +1157,17 @@ this.UITour = {
     // Prevent showing a panel at an undefined position.
     if (!this.isElementVisible(aTarget.node)) {
       log.warn("showHighlight: Not showing a highlight since the target isn't visible", aTarget);
       return;
     }
 
     this._setAppMenuStateForAnnotation(aChromeWindow, "highlight",
                                        this.targetIsInAppMenu(aTarget),
+                                       aTarget,
                                        showHighlightPanel.bind(this));
   },
 
   hideHighlight(aWindow) {
     let highlighter = aWindow.document.getElementById("UITourHighlight");
     this._removeAnnotationPanelMutationObserver(highlighter.parentElement);
     highlighter.parentElement.hidePopup();
     highlighter.removeAttribute("active");
@@ -1276,19 +1287,27 @@ this.UITour = {
     }
 
     // Prevent showing a panel at an undefined position.
     if (!this.isElementVisible(aAnchor.node)) {
       log.warn("showInfo: Not showing since the target isn't visible", aAnchor);
       return;
     }
 
+    // We need to bind the anchor argument to the showInfoPanel function call
+    // after _setAppMenuStateForAnnotation has finished, since
+    // _setAppMenuStateForAnnotation might have refreshed the anchor node.
+    let callShowInfoPanel = () => {
+      showInfoPanel.call(this, this._correctAnchor(aAnchor.node));
+    };
+
     this._setAppMenuStateForAnnotation(aChromeWindow, "info",
                                        this.targetIsInAppMenu(aAnchor),
-                                       showInfoPanel.bind(this, this._correctAnchor(aAnchor.node)));
+                                       aAnchor,
+                                       callShowInfoPanel);
   },
 
   isInfoOnTarget(aChromeWindow, aTargetName) {
     let document = aChromeWindow.document;
     let tooltip = document.getElementById("UITourTooltip");
     return tooltip.getAttribute("targetName") == aTargetName && tooltip.state != "closed";
   },
 
--- a/browser/components/uitour/test/browser_UITour2.js
+++ b/browser/components/uitour/test/browser_UITour2.js
@@ -10,32 +10,36 @@ var gContentWindow;
 function test() {
   UITourTest();
 }
 
 var tests = [
   function test_info_customize_auto_open_close(done) {
     let popup = document.getElementById("UITourTooltip");
     gContentAPI.showInfo("customize", "Customization", "Customize me please!");
-    UITour.getTarget(window, "customize").then((customizeTarget) => {
-      waitForPopupAtAnchor(popup, customizeTarget.node, function checkPanelIsOpen() {
-        isnot(PanelUI.panel.state, "closed", "Panel should have opened before the popup anchored");
-        ok(PanelUI.panel.hasAttribute("noautohide"), "@noautohide on the menu panel should have been set");
+
+    let shownPromise = promisePanelShown(window);
+    shownPromise.then(() => {
+      UITour.getTarget(window, "customize").then((customizeTarget) => {
+        waitForPopupAtAnchor(popup, customizeTarget.node, function checkPanelIsOpen() {
+          isnot(PanelUI.panel.state, "closed", "Panel should have opened before the popup anchored");
+          ok(PanelUI.panel.hasAttribute("noautohide"), "@noautohide on the menu panel should have been set");
 
-        // Move the info outside which should close the app menu.
-        gContentAPI.showInfo("appMenu", "Open Me", "You know you want to");
-        UITour.getTarget(window, "appMenu").then((target) => {
-          waitForPopupAtAnchor(popup, target.node, function checkPanelIsClosed() {
-            isnot(PanelUI.panel.state, "open",
-                  "Panel should have closed after the info moved elsewhere.");
-            ok(!PanelUI.panel.hasAttribute("noautohide"), "@noautohide on the menu panel should have been cleaned up on close");
-            done();
-          }, "Info should move to the appMenu button");
-        });
-      }, "Info panel should be anchored to the customize button");
+          // Move the info outside which should close the app menu.
+          gContentAPI.showInfo("appMenu", "Open Me", "You know you want to");
+          UITour.getTarget(window, "appMenu").then((target) => {
+            waitForPopupAtAnchor(popup, target.node, function checkPanelIsClosed() {
+              isnot(PanelUI.panel.state, "open",
+                    "Panel should have closed after the info moved elsewhere.");
+              ok(!PanelUI.panel.hasAttribute("noautohide"), "@noautohide on the menu panel should have been cleaned up on close");
+              done();
+            }, "Info should move to the appMenu button");
+          });
+        }, "Info panel should be anchored to the customize button");
+      });
     });
   },
   function test_info_customize_manual_open_close(done) {
     let popup = document.getElementById("UITourTooltip");
     // Manually open the app menu then show an info panel there. The menu should remain open.
     let shownPromise = promisePanelShown(window);
     gContentAPI.showMenu("appMenu");
     shownPromise.then(() => {
--- a/browser/extensions/e10srollout/bootstrap.js
+++ b/browser/extensions/e10srollout/bootstrap.js
@@ -19,27 +19,29 @@ const TEST_THRESHOLD = {
   "esr": 1.0,  // 100%
 };
 
 // If a user qualifies for the e10s-multi experiement, this is how many
 // content processes to use and whether to allow addons for the experiment.
 const MULTI_EXPERIMENT = {
   "beta": { buckets: { 1: .5, 4: 1, }, // 1 process: 50%, 4 processes: 50%
 
-            // See below for an explanation, this only allows webextensions.
-            get addonsDisableExperiment() { return getAddonsDisqualifyForMulti(); } },
-
-  "release": { buckets: { 1: .2, 4: 1 }, // 1 process: 20%, 4 processes: 80%
+            // When on the "beta" channel, getAddonsDisqualifyForMulti
+            // will return true if any addon installed is not a web extension.
+            // Therefore, this returns true if and only if all addons
+            // installed are web extensions or if no addons are installed
+            // at all.
+            addonsDisableExperiment(prefix) { return getAddonsDisqualifyForMulti(); } },
 
-               // When on the "release" channel, getAddonsDisqualifyForMulti
-               // will return true if any addon installed is not a web extension.
-               // Therefore, this returns true if and only if all addons
-               // installed are web extensions or if no addons are installed
-               // at all.
-               get addonsDisableExperiment() { return getAddonsDisqualifyForMulti(); } }
+  "release": { buckets: { 1: .99, 4: 1 }, // 1 process: 99%, 4 processes: 1%
+
+               // We don't want to allow users with any extension
+               // (webextension or otherwise in the experiment). prefix will
+               // be non-empty if there is any addon.
+               addonsDisableExperiment(prefix) { return !!prefix; } }
 };
 
 const ADDON_ROLLOUT_POLICY = {
   "beta": "50allmpc",
   "release": "50allmpc",
   "esr": "esrA", // WebExtensions and Addons with mpc=true
 };
 
@@ -178,17 +180,17 @@ function defineCohort() {
   //   (i.e. there's at least one addon installed) we stop here.
   // - We decided above whether this user qualifies for the experiment.
   // - If the user already opted into multi, then their prefs are already set
   //   correctly, we're done.
   // - If the user has addons that disqualify them for multi, leave them with
   //   the default number of content processes (1 on beta) but still in the
   //   test cohort.
   if (!(updateChannel in MULTI_EXPERIMENT) ||
-      MULTI_EXPERIMENT[updateChannel].addonsDisableExperiment ||
+      MULTI_EXPERIMENT[updateChannel].addonsDisableExperiment(cohortPrefix) ||
       !eligibleForMulti ||
       userOptedIn.multi ||
       disqualified) {
     Preferences.reset(PREF_E10S_PROCESSCOUNT + ".web");
     return;
   }
 
   // If we got here with a cohortPrefix, it must be "addons-set50allmpc-",
--- a/browser/extensions/e10srollout/install.rdf.in
+++ b/browser/extensions/e10srollout/install.rdf.in
@@ -5,17 +5,17 @@
 
 #filter substitution
 
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 
   <Description about="urn:mozilla:install-manifest">
     <em:id>e10srollout@mozilla.org</em:id>
-    <em:version>1.80</em:version>
+    <em:version>1.85</em:version>
     <em:type>2</em:type>
     <em:bootstrap>true</em:bootstrap>
     <em:multiprocessCompatible>true</em:multiprocessCompatible>
 
     <!-- Target Application this theme can install into,
         with minimum and maximum supported versions. -->
     <em:targetApplication>
       <Description>
--- a/browser/extensions/formautofill/FormAutofillContent.jsm
+++ b/browser/extensions/formautofill/FormAutofillContent.jsm
@@ -100,68 +100,73 @@ AutofillProfileAutoCompleteSearch.protot
         onSearchResult: (search, result) => {
           listener.onSearchResult(this, result);
           ProfileAutocomplete.setProfileAutoCompleteResult(result);
         },
       });
       return;
     }
 
-    this._getAddresses({info, searchString}).then((addresses) => {
+    let collectionName = FormAutofillUtils.isAddressField(info.fieldName) ?
+      "addresses" : "creditCards";
+
+    this._getRecords({collectionName, info, searchString}).then((records) => {
       if (this.forceStop) {
         return;
       }
       // Sort addresses by timeLastUsed for showing the lastest used address at top.
-      addresses.sort((a, b) => b.timeLastUsed - a.timeLastUsed);
+      records.sort((a, b) => b.timeLastUsed - a.timeLastUsed);
 
       let handler = FormAutofillContent.getFormHandler(focusedInput);
-      let adaptedAddresses = handler.getAdaptedProfiles(addresses);
+      let adaptedRecords = handler.getAdaptedProfiles(records);
 
       let allFieldNames = FormAutofillContent.getAllFieldNames(focusedInput);
       let result = new ProfileAutoCompleteResult(searchString,
                                                  info.fieldName,
                                                  allFieldNames,
-                                                 adaptedAddresses,
+                                                 adaptedRecords,
                                                  {});
 
       listener.onSearchResult(this, result);
       ProfileAutocomplete.setProfileAutoCompleteResult(result);
     });
   },
 
   /**
    * Stops an asynchronous search that is in progress
    */
   stopSearch() {
     ProfileAutocomplete.setProfileAutoCompleteResult(null);
     this.forceStop = true;
   },
 
   /**
-   * Get the address data from parent process for AutoComplete result.
+   * Get the records from parent process for AutoComplete result.
    *
    * @private
    * @param  {Object} data
    *         Parameters for querying the corresponding result.
+   * @param  {string} data.collectionName
+   *         The name used to specify which collection to retrieve records.
    * @param  {string} data.searchString
-   *         The typed string for filtering out the matched address.
+   *         The typed string for filtering out the matched records.
    * @param  {string} data.info
    *         The input autocomplete property's information.
    * @returns {Promise}
    *          Promise that resolves when addresses returned from parent process.
    */
-  _getAddresses(data) {
-    this.log.debug("_getAddresses with data:", data);
+  _getRecords(data) {
+    this.log.debug("_getRecords with data:", data);
     return new Promise((resolve) => {
-      Services.cpmm.addMessageListener("FormAutofill:Addresses", function getResult(result) {
-        Services.cpmm.removeMessageListener("FormAutofill:Addresses", getResult);
+      Services.cpmm.addMessageListener("FormAutofill:Records", function getResult(result) {
+        Services.cpmm.removeMessageListener("FormAutofill:Records", getResult);
         resolve(result.data);
       });
 
-      Services.cpmm.sendAsyncMessage("FormAutofill:GetAddresses", data);
+      Services.cpmm.sendAsyncMessage("FormAutofill:GetRecords", data);
     });
   },
 };
 
 this.NSGetFactory = XPCOMUtils.generateNSGetFactory([AutofillProfileAutoCompleteSearch]);
 
 let ProfileAutocomplete = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
--- a/browser/extensions/formautofill/FormAutofillParent.jsm
+++ b/browser/extensions/formautofill/FormAutofillParent.jsm
@@ -75,17 +75,17 @@ FormAutofillParent.prototype = {
   _active: null,
 
   /**
    * Initializes ProfileStorage and registers the message handler.
    */
   async init() {
     Services.obs.addObserver(this, "advanced-pane-loaded");
     Services.ppmm.addMessageListener("FormAutofill:InitStorage", this);
-    Services.ppmm.addMessageListener("FormAutofill:GetAddresses", this);
+    Services.ppmm.addMessageListener("FormAutofill:GetRecords", this);
     Services.ppmm.addMessageListener("FormAutofill:SaveAddress", this);
     Services.ppmm.addMessageListener("FormAutofill:RemoveAddresses", this);
     Services.ppmm.addMessageListener("FormAutofill:OpenPreferences", this);
     Services.mm.addMessageListener("FormAutofill:OnFormSubmit", this);
 
     // Observing the pref and storage changes
     Services.prefs.addObserver(ENABLED_PREF, this);
     Services.obs.addObserver(this, "formautofill-storage-changed");
@@ -176,18 +176,18 @@ FormAutofillParent.prototype = {
    * @param   {nsIFrameMessageManager} message.target Caller's message manager.
    */
   receiveMessage({name, data, target}) {
     switch (name) {
       case "FormAutofill:InitStorage": {
         this.profileStorage.initialize();
         break;
       }
-      case "FormAutofill:GetAddresses": {
-        this._getAddresses(data, target);
+      case "FormAutofill:GetRecords": {
+        this._getRecords(data, target);
         break;
       }
       case "FormAutofill:SaveAddress": {
         if (data.guid) {
           this.profileStorage.addresses.update(data.guid, data.address);
         } else {
           this.profileStorage.addresses.add(data.address);
         }
@@ -212,61 +212,68 @@ FormAutofillParent.prototype = {
    * Uninitializes FormAutofillParent. This is for testing only.
    *
    * @private
    */
   _uninit() {
     this.profileStorage._saveImmediately();
 
     Services.ppmm.removeMessageListener("FormAutofill:InitStorage", this);
-    Services.ppmm.removeMessageListener("FormAutofill:GetAddresses", this);
+    Services.ppmm.removeMessageListener("FormAutofill:GetRecords", this);
     Services.ppmm.removeMessageListener("FormAutofill:SaveAddress", this);
     Services.ppmm.removeMessageListener("FormAutofill:RemoveAddresses", this);
     Services.obs.removeObserver(this, "advanced-pane-loaded");
     Services.prefs.removeObserver(ENABLED_PREF, this);
   },
 
   /**
-   * Get the address data from profile store and return addresses back to content
+   * Get the records from profile store and return results back to content
    * process.
    *
    * @private
+   * @param  {string} data.collectionName
+   *         The name used to specify which collection to retrieve records.
    * @param  {string} data.searchString
-   *         The typed string for filtering out the matched address.
+   *         The typed string for filtering out the matched records.
    * @param  {string} data.info
    *         The input autocomplete property's information.
    * @param  {nsIFrameMessageManager} target
    *         Content's message manager.
    */
-  _getAddresses({searchString, info}, target) {
-    let addresses = [];
+  _getRecords({collectionName, searchString, info}, target) {
+    let records;
+    let collection = this.profileStorage[collectionName];
 
-    if (info && info.fieldName) {
-      addresses = this.profileStorage.addresses.getByFilter({searchString, info});
+    if (!collection) {
+      records = [];
+    } else if (info && info.fieldName) {
+      records = collection.getByFilter({searchString, info});
     } else {
-      addresses = this.profileStorage.addresses.getAll();
+      records = collection.getAll();
     }
 
-    target.sendAsyncMessage("FormAutofill:Addresses", addresses);
+    target.sendAsyncMessage("FormAutofill:Records", records);
   },
 
   _updateSavedFieldNames() {
     log.debug("_updateSavedFieldNames");
     if (!Services.ppmm.initialProcessData.autofillSavedFieldNames) {
       Services.ppmm.initialProcessData.autofillSavedFieldNames = new Set();
     } else {
       Services.ppmm.initialProcessData.autofillSavedFieldNames.clear();
     }
 
-    this.profileStorage.addresses.getAll().forEach((address) => {
-      Object.keys(address).forEach((fieldName) => {
-        if (!address[fieldName]) {
-          return;
-        }
-        Services.ppmm.initialProcessData.autofillSavedFieldNames.add(fieldName);
+    ["addresses", "creditCards"].forEach(c => {
+      this.profileStorage[c].getAll().forEach((record) => {
+        Object.keys(record).forEach((fieldName) => {
+          if (!record[fieldName]) {
+            return;
+          }
+          Services.ppmm.initialProcessData.autofillSavedFieldNames.add(fieldName);
+        });
       });
     });
 
     // Remove the internal guid and metadata fields.
     this.profileStorage.INTERNAL_FIELDS.forEach((fieldName) => {
       Services.ppmm.initialProcessData.autofillSavedFieldNames.delete(fieldName);
     });
 
@@ -294,19 +301,23 @@ FormAutofillParent.prototype = {
                 changedGUIDs.push(address.guid);
               } else {
                 this.profileStorage.addresses.remove(address.guid);
               }
               break;
           }
           changedGUIDs.forEach(guid => this.profileStorage.addresses.notifyUsed(guid));
         });
+        // Address should be updated
+        Services.telemetry.scalarAdd("formautofill.addresses.fill_type_autofill_update", 1);
         return;
       }
       this.profileStorage.addresses.notifyUsed(address.guid);
+      // Address is merged successfully
+      Services.telemetry.scalarAdd("formautofill.addresses.fill_type_autofill", 1);
     } else {
       let changedGUIDs = this.profileStorage.addresses.mergeToStorage(address.record);
       if (!changedGUIDs.length) {
         changedGUIDs.push(this.profileStorage.addresses.add(address.record));
       }
       changedGUIDs.forEach(guid => this.profileStorage.addresses.notifyUsed(guid));
 
       // Show first time use doorhanger
@@ -315,12 +326,15 @@ FormAutofillParent.prototype = {
         FormAutofillDoorhanger.show(target, "firstTimeUse").then((state) => {
           if (state !== "open-pref") {
             return;
           }
 
           target.ownerGlobal.openPreferences("panePrivacy",
                                              {origin: "autofillDoorhanger"});
         });
+      } else {
+        // We want to exclude the first time form filling.
+        Services.telemetry.scalarAdd("formautofill.addresses.fill_type_manual", 1);
       }
     }
   },
 };
--- a/browser/extensions/formautofill/content/manageProfiles.js
+++ b/browser/extensions/formautofill/content/manageProfiles.js
@@ -58,37 +58,47 @@ ManageProfileDialog.prototype = {
   },
 
   /**
    * Load addresses and render them.
    *
    * @returns {promise}
    */
   loadAddresses() {
-    return this.getAddresses().then(addresses => {
+    return this.getRecords({collectionName: "addresses"}).then(addresses => {
       log.debug("addresses:", addresses);
       // Sort by last modified time starting with most recent
       addresses.sort((a, b) => b.timeLastModified - a.timeLastModified);
       this.renderAddressElements(addresses);
       this.updateButtonsStates(this._selectedOptions.length);
     });
   },
 
   /**
-   * Get addresses from storage.
+   * Get records from storage.
    *
-   * @returns {promise}
+   * @private
+   * @param  {Object} data
+   *         Parameters for querying the corresponding result.
+   * @param  {string} data.collectionName
+   *         The name used to specify which collection to retrieve records.
+   * @param  {string} data.searchString
+   *         The typed string for filtering out the matched records.
+   * @param  {string} data.info
+   *         The input autocomplete property's information.
+   * @returns {Promise}
+   *          Promise that resolves when addresses returned from parent process.
    */
-  getAddresses() {
+  getRecords(data) {
     return new Promise(resolve => {
-      Services.cpmm.addMessageListener("FormAutofill:Addresses", function getResult(result) {
-        Services.cpmm.removeMessageListener("FormAutofill:Addresses", getResult);
+      Services.cpmm.addMessageListener("FormAutofill:Records", function getResult(result) {
+        Services.cpmm.removeMessageListener("FormAutofill:Records", getResult);
         resolve(result.data);
       });
-      Services.cpmm.sendAsyncMessage("FormAutofill:GetAddresses", {});
+      Services.cpmm.sendAsyncMessage("FormAutofill:GetRecords", data);
     });
   },
 
   /**
    * Render the addresses onto the page while maintaining selected options if
    * they still exist.
    *
    * @param  {array<object>} addresses
--- a/browser/extensions/formautofill/test/browser/browser_manageProfilesDialog.js
+++ b/browser/extensions/formautofill/test/browser/browser_manageProfilesDialog.js
@@ -4,20 +4,20 @@ const TEST_SELECTORS = {
   selAddresses: "#profiles",
   btnRemove: "#remove",
   btnAdd: "#add",
   btnEdit: "#edit",
 };
 
 const DIALOG_SIZE = "width=600,height=400";
 
-function waitForAddresses() {
+function waitForRecords() {
   return new Promise(resolve => {
-    Services.cpmm.addMessageListener("FormAutofill:Addresses", function getResult(result) {
-      Services.cpmm.removeMessageListener("FormAutofill:Addresses", getResult);
+    Services.cpmm.addMessageListener("FormAutofill:Records", function getResult(result) {
+      Services.cpmm.removeMessageListener("FormAutofill:Records", getResult);
       // Wait for the next tick for elements to get rendered.
       SimpleTest.executeSoon(resolve.bind(null, result.data));
     });
   });
 }
 
 add_task(async function test_manageProfilesInitialState() {
   await BrowserTestUtils.withNewTab({gBrowser, url: MANAGE_PROFILES_DIALOG_URL}, async function(browser) {
@@ -49,50 +49,50 @@ add_task(async function test_cancelManag
 });
 
 add_task(async function test_removingSingleAndMultipleProfiles() {
   await saveAddress(TEST_ADDRESS_1);
   await saveAddress(TEST_ADDRESS_2);
   await saveAddress(TEST_ADDRESS_3);
 
   let win = window.openDialog(MANAGE_PROFILES_DIALOG_URL, null, DIALOG_SIZE);
-  await waitForAddresses();
+  await waitForRecords();
 
   let selAddresses = win.document.querySelector(TEST_SELECTORS.selAddresses);
   let btnRemove = win.document.querySelector(TEST_SELECTORS.btnRemove);
   let btnEdit = win.document.querySelector(TEST_SELECTORS.btnEdit);
 
   is(selAddresses.length, 3, "Three addresses");
 
   EventUtils.synthesizeMouseAtCenter(selAddresses.children[0], {}, win);
   is(btnRemove.disabled, false, "Remove button enabled");
   is(btnEdit.disabled, false, "Edit button enabled");
   EventUtils.synthesizeMouseAtCenter(btnRemove, {}, win);
-  await waitForAddresses();
+  await waitForRecords();
   is(selAddresses.length, 2, "Two addresses left");
 
   EventUtils.synthesizeMouseAtCenter(selAddresses.children[0], {}, win);
   EventUtils.synthesizeMouseAtCenter(selAddresses.children[1],
                                      {shiftKey: true}, win);
   is(btnEdit.disabled, true, "Edit button disabled when multi-select");
 
   EventUtils.synthesizeMouseAtCenter(btnRemove, {}, win);
-  await waitForAddresses();
+  await waitForRecords();
   is(selAddresses.length, 0, "All addresses are removed");
 
   win.close();
 });
 
 add_task(async function test_profilesDialogWatchesStorageChanges() {
   let win = window.openDialog(MANAGE_PROFILES_DIALOG_URL, null, DIALOG_SIZE);
-  await waitForAddresses();
+  await waitForRecords();
 
   let selAddresses = win.document.querySelector(TEST_SELECTORS.selAddresses);
 
   await saveAddress(TEST_ADDRESS_1);
-  let addresses = await waitForAddresses();
+  let addresses = await waitForRecords();
   is(selAddresses.length, 1, "One address is shown");
 
   await removeAddresses([addresses[0].guid]);
-  await waitForAddresses();
+  await waitForRecords();
   is(selAddresses.length, 0, "Address is removed");
   win.close();
 });
--- a/browser/extensions/formautofill/test/browser/head.js
+++ b/browser/extensions/formautofill/test/browser/head.js
@@ -59,26 +59,30 @@ async function openPopupOn(browser, sele
   await ContentTask.spawn(browser, {selector}, async function({selector}) {
     content.document.querySelector(selector).focus();
   });
   await sleep(2000);
   await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser);
   await expectPopupOpen(browser);
 }
 
-function getAddresses() {
+function getRecords(data) {
   return new Promise(resolve => {
-    Services.cpmm.addMessageListener("FormAutofill:Addresses", function getResult(result) {
-      Services.cpmm.removeMessageListener("FormAutofill:Addresses", getResult);
+    Services.cpmm.addMessageListener("FormAutofill:Records", function getResult(result) {
+      Services.cpmm.removeMessageListener("FormAutofill:Records", getResult);
       resolve(result.data);
     });
-    Services.cpmm.sendAsyncMessage("FormAutofill:GetAddresses", {});
+    Services.cpmm.sendAsyncMessage("FormAutofill:GetRecords", data);
   });
 }
 
+function getAddresses() {
+  return getRecords({collectionName: "addresses"});
+}
+
 function saveAddress(address) {
   Services.cpmm.sendAsyncMessage("FormAutofill:SaveAddress", {address});
   return TestUtils.topicObserved("formautofill-storage-changed");
 }
 
 function removeAddresses(guids) {
   Services.cpmm.sendAsyncMessage("FormAutofill:RemoveAddresses", {guids});
   return TestUtils.topicObserved("formautofill-storage-changed");
--- a/browser/extensions/formautofill/test/mochitest/formautofill_parent_utils.js
+++ b/browser/extensions/formautofill/test/mochitest/formautofill_parent_utils.js
@@ -6,25 +6,25 @@
 
 const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
 Cu.import("resource://gre/modules/Services.jsm");
 let {profileStorage} = Cu.import("resource://formautofill/ProfileStorage.jsm", {});
 
 var ParentUtils = {
   cleanUpAddress() {
-    Services.cpmm.addMessageListener("FormAutofill:Addresses", function getResult(result) {
-      Services.cpmm.removeMessageListener("FormAutofill:Addresses", getResult);
+    Services.cpmm.addMessageListener("FormAutofill:Records", function getResult(result) {
+      Services.cpmm.removeMessageListener("FormAutofill:Records", getResult);
 
       let addresses = result.data;
       Services.cpmm.sendAsyncMessage("FormAutofill:RemoveAddresses",
                                      {guids: addresses.map(address => address.guid)});
     });
 
-    Services.cpmm.sendAsyncMessage("FormAutofill:GetAddresses", {searchString: ""});
+    Services.cpmm.sendAsyncMessage("FormAutofill:GetRecords", {searchString: "", collectionName: "addresses"});
   },
 
   updateAddress(type, chromeMsg, msgData, contentMsg) {
     Services.cpmm.sendAsyncMessage(chromeMsg, msgData);
     Services.obs.addObserver(function observer(subject, topic, data) {
       if (data != type) {
         return;
       }
@@ -55,18 +55,18 @@ var ParentUtils = {
       if (field in addressA && field in addressB && (addressA[field] !== addressB[field])) {
         return false;
       }
     }
     return true;
   },
 
   checkAddresses({expectedAddresses}) {
-    Services.cpmm.addMessageListener("FormAutofill:Addresses", function getResult(result) {
-      Services.cpmm.removeMessageListener("FormAutofill:Addresses", getResult);
+    Services.cpmm.addMessageListener("FormAutofill:Records", function getResult(result) {
+      Services.cpmm.removeMessageListener("FormAutofill:Records", getResult);
       let addresses = result.data;
       if (addresses.length !== expectedAddresses.length) {
         sendAsyncMessage("FormAutofillTest:areAddressesMatching", false);
         return;
       }
 
       for (let address of addresses) {
         let matching = expectedAddresses.some((expectedAddress) => {
@@ -77,17 +77,17 @@ var ParentUtils = {
           sendAsyncMessage("FormAutofillTest:areAddressesMatching", false);
           return;
         }
       }
 
       sendAsyncMessage("FormAutofillTest:areAddressesMatching", true);
     });
 
-    Services.cpmm.sendAsyncMessage("FormAutofill:GetAddresses", {searchString: ""});
+    Services.cpmm.sendAsyncMessage("FormAutofill:GetRecords", {searchString: "", collectionName: "addresses"});
   },
 };
 
 Services.obs.addObserver(ParentUtils, "formautofill-storage-changed");
 
 addMessageListener("FormAutofillTest:AddAddress", (msg) => {
   ParentUtils.updateAddress("add", "FormAutofill:SaveAddress", msg, "FormAutofillTest:AddressAdded");
 });
new file mode 100644
--- /dev/null
+++ b/browser/extensions/formautofill/test/unit/test_getRecords.js
@@ -0,0 +1,50 @@
+/*
+ * Test for make sure getRecords can retrieve right collection from storag.
+ */
+
+"use strict";
+
+Cu.import("resource://formautofill/FormAutofillParent.jsm");
+Cu.import("resource://formautofill/ProfileStorage.jsm");
+
+add_task(async function test_getRecords() {
+  let formAutofillParent = new FormAutofillParent();
+
+  await formAutofillParent.init();
+  await formAutofillParent.profileStorage.initialize();
+
+  let fakeResult = {
+    addresses: [{
+      "given-name": "Timothy",
+      "additional-name": "John",
+      "family-name": "Berners-Lee",
+      "organization": "World Wide Web Consortium",
+    }],
+    creditCards: [{
+      "cc-name": "John Doe",
+      "cc-number": "1234567812345678",
+      "cc-exp-month": 4,
+      "cc-exp-year": 2017,
+    }],
+  };
+
+  ["addresses", "creditCards", "nonExisting"].forEach(collectionName => {
+    let collection = profileStorage[collectionName];
+    let expectedResult = fakeResult[collectionName] || [];
+    let target = {
+      sendAsyncMessage: function sendAsyncMessage(msg, payload) {},
+    };
+    let mock = sinon.mock(target);
+    mock.expects("sendAsyncMessage").once().withExactArgs("FormAutofill:Records", expectedResult);
+
+    if (collection) {
+      sinon.stub(collection, "getAll");
+      collection.getAll.returns(expectedResult);
+    }
+    formAutofillParent._getRecords({collectionName}, target);
+    mock.verify();
+    if (collection) {
+      do_check_eq(collection.getAll.called, true);
+    }
+  });
+});
--- a/browser/extensions/formautofill/test/unit/xpcshell.ini
+++ b/browser/extensions/formautofill/test/unit/xpcshell.ini
@@ -22,16 +22,17 @@ support-files =
 [test_collectFormFields.js]
 [test_creditCardRecords.js]
 [test_extractLabelStrings.js]
 [test_findLabelElements.js]
 [test_getAdaptedProfiles.js]
 [test_getCategoriesFromFieldNames.js]
 [test_getFormInputDetails.js]
 [test_getInfo.js]
+[test_getRecords.js]
 [test_isCJKName.js]
 [test_isFieldEligibleForAutofill.js]
 [test_markAsAutofillField.js]
 [test_migrateRecords.js]
 [test_nameUtils.js]
 [test_onFormSubmitted.js]
 [test_profileAutocompleteResult.js]
 [test_phoneNumber.js]
--- a/browser/extensions/onboarding/bootstrap.js
+++ b/browser/extensions/onboarding/bootstrap.js
@@ -8,36 +8,39 @@
 const {utils: Cu} = Components;
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "OnboardingTourType",
   "resource://onboarding/modules/OnboardingTourType.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Preferences",
   "resource://gre/modules/Preferences.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Services",
   "resource://gre/modules/Services.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "setTimeout",
-  "resource://gre/modules/Timer.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "fxAccounts",
+  "resource://gre/modules/FxAccounts.jsm");
 
-const BROWSER_READY_NOTIFICATION = "final-ui-startup";
+const BROWSER_READY_NOTIFICATION = "browser-delayed-startup-finished";
+const BROWSER_SESSION_STORE_NOTIFICATION = "sessionstore-windows-restored";
 const PREF_WHITELIST = [
   "browser.onboarding.enabled",
   "browser.onboarding.hidden",
   "browser.onboarding.notification.finished",
   "browser.onboarding.notification.prompt-count",
   "browser.onboarding.notification.last-time-of-changing-tour-sec",
   "browser.onboarding.notification.tour-ids-queue"
 ];
 
 [
-  "onboarding-tour-private-browsing",
   "onboarding-tour-addons",
   "onboarding-tour-customize",
   "onboarding-tour-default-browser",
   "onboarding-tour-library",
+  "onboarding-tour-performance",
+  "onboarding-tour-private-browsing",
   "onboarding-tour-search",
+  "onboarding-tour-singlesearch",
   "onboarding-tour-sync",
 ].forEach(tourId => PREF_WHITELIST.push(`browser.onboarding.tour.${tourId}.completed`));
 
 let waitingForBrowserReady = true;
 
 /**
  * Set pref. Why no `getPrefs` function is due to the priviledge level.
  * We cannot set prefs inside a framescript but can read.
@@ -64,16 +67,64 @@ function initContentMessageListener() {
     switch (msg.data.action) {
       case "set-prefs":
         setPrefs(msg.data.params);
         break;
     }
   });
 }
 
+let syncTourChecker = {
+  registered: false,
+
+  observe() {
+    this.setComplete();
+  },
+
+  init() {
+    if (Services.prefs.getBoolPref("browser.onboarding.tour.onboarding-tour-sync.completed", false)) {
+      return;
+    }
+    // Check if we've already logged in at startup.
+    fxAccounts.getSignedInUser().then(user => {
+      if (user) {
+        this.setComplete();
+        return;
+      }
+      // Observe for login action if we haven't logged in yet.
+      this.register();
+    });
+  },
+
+  register() {
+    if (this.registered) {
+      return;
+    }
+    Services.obs.addObserver(this, "fxaccounts:onverified");
+    this.registered = true;
+  },
+
+  setComplete() {
+    Services.prefs.setBoolPref("browser.onboarding.tour.onboarding-tour-sync.completed", true);
+    this.unregister();
+  },
+
+  unregister() {
+    if (!this.registered) {
+      return;
+    }
+    Services.obs.removeObserver(this, "fxaccounts:onverified");
+    this.registered = false;
+  },
+
+  uninit() {
+    this.unregister();
+  },
+}
+
 /**
  * onBrowserReady - Continues startup of the add-on after browser is ready.
  */
 function onBrowserReady() {
   waitingForBrowserReady = false;
 
   OnboardingTourType.check();
   Services.mm.loadFrameScript("resource://onboarding/onboarding.js", true);
@@ -82,33 +133,43 @@ function onBrowserReady() {
 
 /**
  * observe - nsIObserver callback to handle various browser notifications.
  */
 function observe(subject, topic, data) {
   switch (topic) {
     case BROWSER_READY_NOTIFICATION:
       Services.obs.removeObserver(observe, BROWSER_READY_NOTIFICATION);
-      // Avoid running synchronously during this event that's used for timing
-      setTimeout(() => onBrowserReady());
+      onBrowserReady();
+      break;
+    case BROWSER_SESSION_STORE_NOTIFICATION:
+      Services.obs.removeObserver(observe, BROWSER_SESSION_STORE_NOTIFICATION);
+      // Postpone Firefox account checking until "before handling user events"
+      // phase to meet performance criteria. The reason we don't postpone the
+      // whole onBrowserReady here is because in that way we will miss onload
+      // events for onboarding.js.
+      Services.tm.idleDispatchToMainThread(() => syncTourChecker.init());
       break;
   }
 }
 
 function install(aData, aReason) {}
 
 function uninstall(aData, aReason) {}
 
 function startup(aData, aReason) {
   // Only start Onboarding when the browser UI is ready
   if (aReason === APP_STARTUP || aReason === ADDON_INSTALL) {
     Services.obs.addObserver(observe, BROWSER_READY_NOTIFICATION);
+    Services.obs.addObserver(observe, BROWSER_SESSION_STORE_NOTIFICATION);
   } else {
     onBrowserReady();
+    syncTourChecker.init();
   }
 }
 
 function shutdown(aData, aReason) {
   // Stop waiting for browser to be ready
   if (waitingForBrowserReady) {
     Services.obs.removeObserver(observe, BROWSER_READY_NOTIFICATION);
   }
+  syncTourChecker.uninit();
 }
new file mode 100644
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_performance-colored.svg
@@ -0,0 +1,1 @@
+<svg width="16" height="16" viewBox="0 0 92 92" xmlns="http://www.w3.org/2000/svg"><title>Tip / Icon / Performance</title><g id="Symbols" fill="none" fill-rule="evenodd"><g id="Tip-/-Icon-/-Performance" fill="#0A84FF"><path d="M47.237 53.003L47 53c-6.075 0-11 4.925-11 11s4.925 11 11 11c4.453 0 8.287-2.645 10.018-6.45 1.888-3.525 2.97-7.84 8.397-12.066 7.422-5.778 15.097-10.033 14.61-11.098-.485-1.06-8.04 2.724-16.675 5.79-7.916 2.812-14.765 1.706-16.113 1.827zm-36.467 31.3C4.05 76.316 0 66.015 0 54.768 0 29.4 20.593 8.838 46 8.838c25.404 0 46 20.563 46 45.93 0 11.247-4.05 21.548-10.77 29.535H10.77zM46 21.698c-1.016 0-1.84 1.646-1.84 3.674s.824 3.675 1.84 3.675 1.84-1.647 1.84-3.675c0-2.028-.824-3.674-1.84-3.674zm34.96 40.418c0-1.016-1.65-1.837-3.68-1.837-2.03 0-3.68.82-3.68 1.836s1.65 1.837 3.68 1.837c2.03 0 3.68-.82 3.68-1.837zm-62.364 0c0-1.016-1.65-1.837-3.68-1.837-2.032 0-3.68.82-3.68 1.836s1.648 1.837 3.68 1.837c2.03 0 3.68-.82 3.68-1.837zm7.664-23.133c.73-.706.18-2.46-1.232-3.92s-3.15-2.072-3.88-1.366c-.73.704-.178 2.458 1.234 3.92 1.41 1.457 3.148 2.07 3.878 1.366zm46-5.287c-.73-.706-2.468-.094-3.88 1.367-1.41 1.46-1.962 3.215-1.232 3.92.73.704 2.47.092 3.88-1.368 1.412-1.46 1.964-3.214 1.233-3.92z" id="Combined-Shape"/></g></g></svg>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_performance.svg
@@ -0,0 +1,1 @@
+<svg width="16" height="16" viewBox="0 0 92 92" xmlns="http://www.w3.org/2000/svg"><title>Tip / Icon / Performance</title><g id="Symbols" fill="none" fill-rule="evenodd"><g id="Tip-/-Icon-/-Performance" fill="#3E3D40"><path d="M47.237 53.003L47 53c-6.075 0-11 4.925-11 11s4.925 11 11 11c4.453 0 8.287-2.645 10.018-6.45 1.888-3.525 2.97-7.84 8.397-12.066 7.422-5.778 15.097-10.033 14.61-11.098-.485-1.06-8.04 2.724-16.675 5.79-7.916 2.812-14.765 1.706-16.113 1.827zm-36.467 31.3C4.05 76.316 0 66.015 0 54.768 0 29.4 20.593 8.838 46 8.838c25.404 0 46 20.563 46 45.93 0 11.247-4.05 21.548-10.77 29.535H10.77zM46 21.698c-1.016 0-1.84 1.646-1.84 3.674s.824 3.675 1.84 3.675 1.84-1.647 1.84-3.675c0-2.028-.824-3.674-1.84-3.674zm34.96 40.418c0-1.016-1.65-1.837-3.68-1.837-2.03 0-3.68.82-3.68 1.836s1.65 1.837 3.68 1.837c2.03 0 3.68-.82 3.68-1.837zm-62.364 0c0-1.016-1.65-1.837-3.68-1.837-2.032 0-3.68.82-3.68 1.836s1.648 1.837 3.68 1.837c2.03 0 3.68-.82 3.68-1.837zm7.664-23.133c.73-.706.18-2.46-1.232-3.92s-3.15-2.072-3.88-1.366c-.73.704-.178 2.458 1.234 3.92 1.41 1.457 3.148 2.07 3.878 1.366zm46-5.287c-.73-.706-2.468-.094-3.88 1.367-1.41 1.46-1.962 3.215-1.232 3.92.73.704 2.47.092 3.88-1.368 1.412-1.46 1.964-3.214 1.233-3.92z" id="Combined-Shape"/></g></g></svg>
\ No newline at end of file
--- a/browser/extensions/onboarding/content/onboarding-tour-agent.js
+++ b/browser/extensions/onboarding/content/onboarding-tour-agent.js
@@ -33,16 +33,19 @@ document.getElementById("onboarding-over
       Mozilla.UITour.showHighlight("library");
       break;
     case "onboarding-tour-private-browsing-button":
       Mozilla.UITour.showHighlight("privateWindow");
       break;
     case "onboarding-tour-search-button":
       Mozilla.UITour.openSearchPanel(() => {});
       break;
+    case "onboarding-tour-singlesearch-button":
+      Mozilla.UITour.showMenu("urlbar");
+      break;
     case "onboarding-tour-sync-button":
       let emailInput = document.getElementById("onboarding-tour-sync-email-input");
       if (emailInput.checkValidity()) {
         Mozilla.UITour.showFirefoxAccounts(null, emailInput.value);
       }
       break;
     case "onboarding-overlay":
     case "onboarding-overlay-close-btn":
--- a/browser/extensions/onboarding/content/onboarding.css
+++ b/browser/extensions/onboarding/content/onboarding.css
@@ -18,73 +18,84 @@
   background: rgb(54, 57, 89, 0.8); /* #363959, 0.8 opacity */
   display: none;
 }
 
 #onboarding-overlay.onboarding-opened {
   display: block;
 }
 
-#onboarding-overlay-icon {
-  width: 36px;
-  height: 29px;
+#onboarding-overlay-button {
   position: absolute;
   cursor: pointer;
   top: 30px;
   offset-inline-start: 30px;
-  background: url("img/overlay-icon.svg") no-repeat;
+  border: none;
+  /* Set to none so no grey contrast background in the high-contrast mode */
+  background: none;
+}
+
+#onboarding-overlay-button-icon {
+  width: 36px;
 }
 
 #onboarding-notification-icon::after,
-#onboarding-overlay-icon::after {
+#onboarding-overlay-button::after {
   background: #5ce6e6;
   position: absolute;
   font-size: 12px;
   border: 1px solid #fff;
   text-align: center;
   color: #10404a;
+  box-sizing: content-box;
 }
 
-#onboarding-overlay-icon::after {
+#onboarding-overlay-button::after {
   content: attr(aria-label);
   top: -6px;
-  offset-inline-start: 32px;
+  offset-inline-start: 39px;
   border-radius: 22px;
   padding: 5px 8px;
   min-width: 100px;
 }
 
 #onboarding-overlay-dialog,
 .onboarding-hidden {
   display: none;
 }
 
-#onboarding-overlay-close-btn,
-#onboarding-notification-close-btn {
-  position: absolute;
-  top: 15px;
-  offset-inline-end: 15px;
-  cursor: pointer;
-  width: 16px;
-  height: 16px;
-  background-image: url(chrome://browser/skin/sidebar/close.svg);
-  background-position: center center;
-  background-repeat: no-repeat;
-  padding: 12px;
+.onboarding-close-btn {
+   position: absolute;
+   top: 15px;
+   offset-inline-end: 15px;
+   cursor: pointer;
+   width: 16px;
+   height: 16px;
+   padding: 12px;
+   border: none;
+   background: var(--onboarding-overlay-dialog-background-color);
+ }
+
+.onboarding-close-btn::before {
+  content: url(chrome://browser/skin/sidebar/close.svg);
+  display: block;
+  margin-top: -8px;
+  margin-inline-start: -8px;
 }
 
-#onboarding-overlay-close-btn:hover,
+.onboarding-close-btn:hover,
 #onboarding-notification-close-btn:hover {
   background-color: rgba(204, 204, 204, 0.6);
 }
 
 #onboarding-overlay.onboarding-opened > #onboarding-overlay-dialog {
+  --onboarding-overlay-dialog-background-color: #f5f5f7;
   width: 960px;
   height: 510px;
-  background: #f5f5f7;
+  background: var(--onboarding-overlay-dialog-background-color);
   border: 1px solid rgba(9, 6, 13, 0.1); /* #09060D, 0.1 opacity */
   border-radius: 3px;
   position: relative;
   margin: 0 calc(50% - 480px);
   top: calc(50% - 255px);
   display: grid;
   grid-template-rows: [dialog-start] 70px [page-start] 1fr [footer-start] 30px [dialog-end];
   grid-template-columns: [dialog-start] 230px [page-start] 1fr [dialog-end];
@@ -130,20 +141,23 @@
 
 /* Onboarding tour list */
 #onboarding-tour-list {
   margin: 40px 0 0 0;
   padding: 0;
 }
 
 #onboarding-tour-list > li {
+  --padding-inline-start: 49px;
+  --padding-top: 14px;
+  --padding-bottom: 14px;
   list-style: none;
-  padding-inline-start: 49px;
-  padding-top: 14px;
-  padding-bottom: 14px;
+  padding-inline-start: var(--padding-inline-start);
+  padding-top: var(--padding-top);
+  padding-bottom: var(--padding-bottom);
   margin-inline-start: 16px;
   margin-bottom: 9px;
   background-repeat: no-repeat;
   background-position: left 17px top 14px;
   background-size: 20px;
   font-size: 16px;
   cursor: pointer;
 }
@@ -156,22 +170,29 @@
   content: url("img/icons_tour-complete.svg");
   position: relative;
   offset-inline-start: 3px;
   top: -10px;
   float: inline-start;
 }
 
 #onboarding-tour-list > li.onboarding-complete {
-  padding-inline-start: 29px;
+  --padding-inline-start: 29px;
 }
 
 #onboarding-tour-list > li.onboarding-active,
 #onboarding-tour-list > li:hover {
   color: #0A84FF;
+  /* With 1px transparent border, could see a border in the high-constrast mode */
+  border: 1px solid transparent;
+  /* Substract 1px for the 1px transparent or a 1px shift would happen */
+  padding-inline-start: calc(var(--padding-inline-start) - 1px);
+  padding-top: calc(var(--padding-top) - 1px);
+  padding-bottom: calc(var(--padding-bottom) - 1px);
+  background-color: #fff;
 }
 
 /* Default browser tour */
 #onboarding-tour-is-default-browser-msg {
   font-size: 16px;
   line-height: 21px;
   float: inline-end;
   margin-inline-end: 26px;
@@ -278,17 +299,18 @@
 }
 
 .onboarding-tour-action-button {
   padding: 10px 20px;
   font-size: 15px;
   font-weight: 600;
   line-height: 21px;
   background: #0a84ff;
-  border: none;
+  /* With 1px transparent border, could see a border in the high-constrast mode */
+  border: 1px solid transparent;
   border-radius: 0;
   color: #fff;
   float: inline-end;
   margin-inline-end: 26px;
   margin-top: -32px;
 }
 
 .onboarding-tour-action-button:hover:not([disabled]) ,
@@ -302,26 +324,30 @@
   background: #003EAA;
 }
 
 .onboarding-tour-action-button:disabled {
   opacity: 0.5;
 }
 
 /* Tour Icons */
-#onboarding-tour-search {
+#onboarding-tour-search,
+#onboarding-tour-singlesearch {
   background-image: url("img/icons_search.svg");
 }
 
 #onboarding-tour-search.onboarding-active,
-#onboarding-tour-search:hover {
+#onboarding-tour-search:hover,
+#onboarding-tour-singlesearch.onboarding-active,
+#onboarding-tour-singlesearch:hover {
   background-image: url("img/icons_search-colored.svg");
 }
 
-#onboarding-notification-bar[data-target-tour-id=onboarding-tour-search] #onboarding-notification-tour-icon {
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-search] #onboarding-notification-tour-icon,
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-singlesearch] #onboarding-notification-tour-icon {
   background-image: url("img/icons_search-notification.svg");
 }
 
 #onboarding-tour-private-browsing {
   background-image: url("img/icons_private.svg");
 }
 
 #onboarding-tour-private-browsing.onboarding-active,
@@ -391,26 +417,42 @@
 }
 
 #onboarding-tour-library.onboarding-active,
 #onboarding-tour-library:hover,
 #onboarding-notification-bar[data-target-tour-id=onboarding-tour-library] #onboarding-notification-tour-icon {
   background-image: url("img/icons_search-colored.svg");
 }
 
+#onboarding-tour-performance {
+  background-image: url("img/icons_performance.svg");
+}
+
+#onboarding-tour-performance.onboarding-active,
+#onboarding-tour-performance:hover {
+  background-image: url("img/icons_performance-colored.svg");
+}
+
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-performance] #onboarding-notification-tour-icon {
+  /* TODO: Placeholder icon. It should be replaced upon assets are available.
+           This is tracking in Bug 1382520. */
+  background-image: url("img/icons_sync-notification.svg");
+}
+
 /* Tour Notifications */
 #onboarding-notification-bar {
+  --onboarding-notification-bar-background-color: rgba(255, 255, 255, 0.97);
   position: fixed;
   z-index: 20998; /* We want this always under #onboarding-overlay */
   left: 0;
   bottom: 0;
   width: 100%;
   height: 122px;
   min-width: 640px;
-  background: rgba(255, 255, 255, 0.97);
+  background: var(--onboarding-notification-bar-background-color);
   border-top: 2px solid #e9e9e9;
   transition: transform 0.8s;
   transform: translateY(122px);
 }
 
 #onboarding-notification-bar.onboarding-opened {
   transition: none;
   transform: translateY(0px);
@@ -431,25 +473,24 @@
   background-position: right 34px center;
 }
 
 #onboarding-notification-icon::after {
   --height: 22px;
   --vpadding: 3px;
   content: attr(data-tooltip);
   top: 0;
-  offset-inline-start: 68px;
+  offset-inline-start: 73px;
   line-height: calc(var(--height) - var(--vpadding) * 2);
   border-radius: calc(var(--height) / 2);
   padding: var(--vpadding) 10px;
 }
 
 #onboarding-notification-close-btn {
-  background-color: rgba(255, 255, 255, 0.97);
-  border: none;
+  background: var(--onboarding-notification-bar-background-color);
   position: absolute;
   offset-block-start: 50%;
   offset-inline-end: 34px;
   transform: translateY(-50%);
 }
 
 #onboarding-notification-message-section {
   height: 100%;
@@ -484,17 +525,18 @@
   min-width: 64px;
   height: 64px;
   background-size: 64px;
   background-repeat: no-repeat;
 }
 
 #onboarding-notification-action-btn {
   background: #0a84ff;
-  border: none;
+  /* With 1px transparent border, could see a border in the high-constrast mode */
+  border: 1px solid transparent;
   border-radius: 0;
   padding: 10px 20px;
   font-size: 14px;
   color: #fff;
 }
 
 @media all and (max-width: 960px) {
   #onboarding-notification-icon {
--- a/browser/extensions/onboarding/content/onboarding.js
+++ b/browser/extensions/onboarding/content/onboarding.js
@@ -245,32 +245,86 @@ var onboardingTourset = {
         </section>
         <aside class="onboarding-tour-button-container">
           <button id="onboarding-tour-library-button" class="onboarding-tour-action-button" data-l10n-id="onboarding.tour-library.button"></button>
         </aside>
       `;
       return div;
     },
   },
+  "singlesearch": {
+    id: "onboarding-tour-singlesearch",
+    tourNameId: "onboarding.tour-singlesearch",
+    getNotificationStrings(bundle) {
+      return {
+        title: bundle.GetStringFromName("onboarding.notification.onboarding-tour-singlesearch.title"),
+        message: bundle.GetStringFromName("onboarding.notification.onboarding-tour-singlesearch.message"),
+        button: bundle.GetStringFromName("onboarding.button.learnMore"),
+      };
+    },
+    getPage(win, bundle) {
+      let div = win.document.createElement("div");
+      div.innerHTML = `
+        <section class="onboarding-tour-description">
+          <h1 data-l10n-id="onboarding.tour-singlesearch.title"></h1>
+          <p data-l10n-id="onboarding.tour-singlesearch.description"></p>
+        </section>
+        <section class="onboarding-tour-content">
+          <img src="resource://onboarding/img/figure_search.svg" role="presentation"/>
+        </section>
+        <aside class="onboarding-tour-button-container">
+          <button id="onboarding-tour-singlesearch-button" class="onboarding-tour-action-button" data-l10n-id="onboarding.tour-singlesearch.button"></button>
+        </aside>
+      `;
+      return div;
+    },
+  },
+  "performance": {
+    id: "onboarding-tour-performance",
+    tourNameId: "onboarding.tour-performance",
+    getNotificationStrings(bundle) {
+      return {
+        title: bundle.GetStringFromName("onboarding.notification.onboarding-tour-performance.title"),
+        message: bundle.formatStringFromName("onboarding.notification.onboarding-tour-performance.message", [BRAND_SHORT_NAME], 1),
+        button: bundle.GetStringFromName("onboarding.button.learnMore"),
+      };
+    },
+    getPage(win, bundle) {
+      let div = win.document.createElement("div");
+      // TODO: The content image is a placeholder. It should be replaced upon assets are available.
+      //       This is tracking in Bug 1382520.
+      div.innerHTML = `
+        <section class="onboarding-tour-description">
+          <h1 data-l10n-id="onboarding.tour-performance.title"></h1>
+          <p data-l10n-id="onboarding.tour-performance.description"></p>
+        </section>
+        <section class="onboarding-tour-content">
+          <img src="resource://onboarding/img/figure_sync.svg" role="presentation"/>
+        </section>
+      `;
+      return div;
+    },
+  },
 };
 
 /**
  * The script won't be initialized if we turned off onboarding by
  * setting "browser.onboarding.enabled" to false.
  */
 class Onboarding {
   constructor(contentWindow) {
     this.init(contentWindow);
   }
 
   async init(contentWindow) {
     this._window = contentWindow;
     this._tours = [];
+    this._tourType = Services.prefs.getStringPref("browser.onboarding.tour-type", "update");
 
-    let tourIds = this._getTourIDList(Services.prefs.getStringPref("browser.onboarding.tour-type", "update"));
+    let tourIds = this._getTourIDList();
     tourIds.forEach(tourId => {
       if (onboardingTourset[tourId]) {
         this._tours.push(onboardingTourset[tourId]);
       }
     });
 
     if (this._tours.length === 0) {
       return;
@@ -306,33 +360,33 @@ class Onboarding {
   _initUI() {
     if (this.uiInitialized) {
       return;
     }
     this.uiInitialized = true;
     this._tourItems = [];
     this._tourPages = [];
 
-    this._overlayIcon = this._renderOverlayIcon();
+    this._overlayIcon = this._renderOverlayButton();
     this._overlayIcon.addEventListener("click", this);
     this._window.document.body.appendChild(this._overlayIcon);
 
     this._overlay = this._renderOverlay();
     this._overlay.addEventListener("click", this);
     this._window.document.body.appendChild(this._overlay);
 
     this._loadJS(TOUR_AGENT_JS_URI);
 
     this._initPrefObserver();
     // Doing tour notification takes some effort. Let's do it on idle.
     this._window.requestIdleCallback(() => this._initNotification());
   }
 
-  _getTourIDList(tourType) {
-    let tours = Services.prefs.getStringPref(`browser.onboarding.${tourType}tour`, "");
+  _getTourIDList() {
+    let tours = Services.prefs.getStringPref(`browser.onboarding.${this._tourType}tour`, "");
     return tours.split(",").filter(tourId => tourId !== "").map(tourId => tourId.trim());
   }
 
   _initNotification() {
     let doc = this._window.document;
     if (doc.hidden) {
       // When the preloaded-browser feature is on,
       // it would preload an hidden about:newtab in the background.
@@ -395,17 +449,17 @@ class Onboarding {
       this._window.cancelIdleCallback(this._resizeTimerId);
       this._resizeTimerId =
         this._window.requestIdleCallback(() => this._resizeUI());
 
       return;
     }
 
     switch (evt.target.id) {
-      case "onboarding-overlay-icon":
+      case "onboarding-overlay-button":
       case "onboarding-overlay-close-btn":
       // If the clicking target is directly on the outer-most overlay,
       // that means clicking outside the tour content area.
       // Let's toggle the overlay.
       case "onboarding-overlay":
         this.toggleOverlay();
         break;
       case "onboarding-notification-close-btn":
@@ -413,16 +467,22 @@ class Onboarding {
         this._removeTourFromNotificationQueue(this._notificationBar.dataset.targetTourId);
         break;
       case "onboarding-notification-action-btn":
         let tourId = this._notificationBar.dataset.targetTourId;
         this.toggleOverlay();
         this.gotoPage(tourId);
         this._removeTourFromNotificationQueue(tourId);
         break;
+      // These tours are tagged completed instantly upon showing.
+      case "onboarding-tour-default-browser":
+      case "onboarding-tour-sync":
+      case "onboarding-tour-performance":
+        this.setToursCompleted([ evt.target.id ]);
+        break;
     }
     let classList = evt.target.classList;
     if (classList.contains("onboarding-tour-item")) {
       this.gotoPage(evt.target.id);
     } else if (classList.contains("onboarding-tour-action-button")) {
       let activeItem = this._tourItems.find(item => item.classList.contains("onboarding-active"));
       this.setToursCompleted([ activeItem.id ]);
     }
@@ -674,19 +734,22 @@ class Onboarding {
       <section id="onboarding-notification-message-section">
         <div id="onboarding-notification-tour-icon"></div>
         <div id="onboarding-notification-body">
           <h6 id="onboarding-notification-tour-title"></h6>
           <span id="onboarding-notification-tour-message"></span>
         </div>
         <button id="onboarding-notification-action-btn"></button>
       </section>
-      <button id="onboarding-notification-close-btn"></button>
+      <button id="onboarding-notification-close-btn" class="onboarding-close-btn"></button>
     `;
-    let toolTip = this._bundle.formatStringFromName("onboarding.notification-icon-tool-tip", [BRAND_SHORT_NAME], 1);
+    let toolTip = this._bundle.formatStringFromName(
+      this._tourType === "new" ? "onboarding.notification-icon-tool-tip" :
+                                 "onboarding.notification-icon-tooltip-updated",
+      [BRAND_SHORT_NAME], 1);
     div.querySelector("#onboarding-notification-icon").setAttribute("data-tooltip", toolTip);
     return div;
   }
 
   hide() {
     this.setToursCompleted(this._tours.map(tour => tour.id));
     this.sendMessageToChrome("set-prefs", [
       {
@@ -702,17 +765,17 @@ class Onboarding {
 
   _renderOverlay() {
     let div = this._window.document.createElement("div");
     div.id = "onboarding-overlay";
     // We use `innerHTML` for more friendly reading.
     // The security should be fine because this is not from an external input.
     div.innerHTML = `
       <div id="onboarding-overlay-dialog">
-        <span id="onboarding-overlay-close-btn"></span>
+        <button id="onboarding-overlay-close-btn" class="onboarding-close-btn"></button>
         <header id="onboarding-header"></header>
         <nav>
           <ul id="onboarding-tour-list"></ul>
         </nav>
         <footer id="onboarding-footer">
           <input type="checkbox" id="onboarding-tour-hidden-checkbox" /><label for="onboarding-tour-hidden-checkbox"></label>
         </footer>
       </div>
@@ -720,22 +783,28 @@ class Onboarding {
 
     div.querySelector("label[for='onboarding-tour-hidden-checkbox']").textContent =
        this._bundle.GetStringFromName("onboarding.hidden-checkbox-label-text");
     div.querySelector("#onboarding-header").textContent =
        this._bundle.GetStringFromName("onboarding.overlay-title2");
     return div;
   }
 
-  _renderOverlayIcon() {
-    let img = this._window.document.createElement("div");
-    let tooltip = this._bundle.formatStringFromName("onboarding.overlay-icon-tooltip", [BRAND_SHORT_NAME], 1);
-    img.setAttribute("aria-label", tooltip);
-    img.id = "onboarding-overlay-icon";
-    return img;
+  _renderOverlayButton() {
+    let button = this._window.document.createElement("button");
+    let tooltipStringId = this._tourType === "new" ?
+      "onboarding.overlay-icon-tooltip" : "onboarding.overlay-icon-tooltip-updated";
+    let tooltip = this._bundle.formatStringFromName(tooltipStringId, [BRAND_SHORT_NAME], 1);
+    button.setAttribute("aria-label", tooltip);
+    button.id = "onboarding-overlay-button";
+    let img = this._window.document.createElement("img");
+    img.id = "onboarding-overlay-button-icon";
+    img.src = "resource://onboarding/img/overlay-icon.svg";
+    button.appendChild(img);
+    return button;
   }
 
   _loadTours(tours) {
     let itemsFrag = this._window.document.createDocumentFragment();
     let pagesFrag = this._window.document.createDocumentFragment();
     for (let tour of tours) {
       // Create tour navigation items dynamically
       let li = this._window.document.createElement("li");
--- a/browser/extensions/onboarding/locales/en-US/onboarding.properties
+++ b/browser/extensions/onboarding/locales/en-US/onboarding.properties
@@ -5,16 +5,19 @@
 onboarding.overlay-title2=Let’s get started
 onboarding.hidden-checkbox-label-text=Mark all as complete, and hide the tour
 #LOCALIZATION NOTE(onboarding.button.learnMore): this string is used as a button label, displayed near the message, and shared across all the onboarding notifications.
 onboarding.button.learnMore=Learn More
 # LOCALIZATION NOTE(onboarding.notification-icon-tool-tip): This string will be used to show the tooltip alongside the notification icon in the notification bar. %S is brandShortName.
 onboarding.notification-icon-tool-tip=New to %S?
 # LOCALIZATION NOTE(onboarding.overlay-icon-tooltip): This string will be used to show the tooltip alongside the notification icon in the overlay tour. %S is brandShortName.
 onboarding.overlay-icon-tooltip=New to %S? Let’s get started.
+# LOCALIZATION NOTE(onboarding.overlay-icon-tooltip-updated): %S is brandShortName.
+onboarding.overlay-icon-tooltip-updated=%S is all new. See what you can do!
+onboarding.notification-icon-tooltip-updated=See what’s new!
 
 onboarding.tour-search2=Search
 onboarding.tour-search.title2=Find it faster.
 # LOCALIZATION NOTE (onboarding.tour-search.description2): If Amazon is not part
 # of the default searchplugins for your locale, you can replace it with another
 # ecommerce website (if you're shipping one), but not with a general purpose
 # search engine (Google, Bing, Yandex, etc.). Alternatively, only reference
 # Wikipedia and drop Amazon from the text.
@@ -90,8 +93,24 @@ onboarding.notification.onboarding-tour-
 onboarding.tour-library=Library
 onboarding.tour-library.title=Keep it together.
 # LOCALIZATION NOTE (onboarding.tour-library.description): This string will be used in the library tour description. %1$S is brandShortName
 onboarding.tour-library.description=Check out the new %1$S library in the redesigned toolbar. The library puts the things you’ve seen and saved to %1$S - your browsing history, bookmarks, Pocket lists, and synced tabs - in one convenient place.
 onboarding.tour-library.button=Show Library in Menu
 onboarding.notification.onboarding-tour-library.title=Keep it together.
 # LOCALIZATION NOTE(onboarding.notification.onboarding-tour-library.message): This string will be used in the notification message for the library tour. %S is brandShortName
 onboarding.notification.onboarding-tour-library.message=The new %S library puts the great things you’ve discovered on the web in one convenient place.
+
+onboarding.tour-singlesearch=Address Bar
+onboarding.tour-singlesearch.title=Find it faster.
+# LOCALIZATION NOTE(onboarding.tour-singlesearch.description): %S is brandShortName
+onboarding.tour-singlesearch.description=The address bar might be the most powerful tool in the sleek new %S toolbar. Start typing, and see suggestions based on your browsing and search history. Go to a web address, search the whole web with your default search engine, or send your query directly to a single site with one-click search.
+onboarding.tour-singlesearch.button=Show Address Bar
+onboarding.notification.onboarding-tour-singlesearch.title=Find it faster.
+onboarding.notification.onboarding-tour-singlesearch.message=The unified address bar is the only tool you need to find your way around the web.
+
+onboarding.tour-performance=Performance
+onboarding.tour-performance.title=Browse with the best of ‘em.
+# LOCALIZATION NOTE(onboarding.tour-performance.description): %1$S is brandShortName.
+onboarding.tour-performance.description=It’s a whole new %1$S, built for faster page loading, smoother scrolling, and more responsive tab switching. These performance upgrades come paired with a modern, intuitive design. Start browsing and experience it for yourself: the best %1$S yet.
+onboarding.notification.onboarding-tour-performance.title=Browse with the best of ‘em.
+# LOCALIZATION NOTE(onboarding.notification.onboarding-tour-performance.message): %S is brandShortName.
+onboarding.notification.onboarding-tour-performance.message=Prepare yourself for the fastest, smoothest, most reliable %S yet.
--- a/browser/extensions/onboarding/test/browser/browser_onboarding_tours.js
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_tours.js
@@ -2,17 +2,17 @@
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
  "use strict";
 
 function assertOnboardingDestroyed(browser) {
   return ContentTask.spawn(browser, {}, function() {
     let expectedRemovals = [
       "#onboarding-overlay",
-      "#onboarding-overlay-icon"
+      "#onboarding-overlay-button"
     ];
     for (let selector of expectedRemovals) {
       let removal = content.document.querySelector(selector);
       ok(!removal, `Should remove ${selector} onboarding element`);
     }
   });
 }
 
@@ -31,17 +31,17 @@ add_task(async function test_hide_onboar
   resetOnboardingDefaultState();
 
   let tourIds = TOUR_IDs;
   let tabs = [];
   for (let url of URLs) {
     let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
     await BrowserTestUtils.loadURI(tab.linkedBrowser, url);
     await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
-    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-icon", {}, tab.linkedBrowser);
+    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
     await promiseOnboardingOverlayOpened(tab.linkedBrowser);
     tabs.push(tab);
   }
 
   let expectedPrefUpdates = [
     promisePrefUpdated("browser.onboarding.hidden", true),
     promisePrefUpdated("browser.onboarding.notification.finished", true)
   ];
@@ -62,17 +62,17 @@ add_task(async function test_click_actio
   resetOnboardingDefaultState();
 
   let tourIds = TOUR_IDs;
   let tabs = [];
   for (let url of URLs) {
     let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
     await BrowserTestUtils.loadURI(tab.linkedBrowser, url);
     await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
-    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-icon", {}, tab.linkedBrowser);
+    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
     await promiseOnboardingOverlayOpened(tab.linkedBrowser);
     tabs.push(tab);
   }
 
   let completedTourId = tourIds[0];
   let expectedPrefUpdate = promisePrefUpdated(`browser.onboarding.tour.${completedTourId}.completed`, true);
   await BrowserTestUtils.synthesizeMouseAtCenter(`#${completedTourId}-page .onboarding-tour-action-button`, {}, gBrowser.selectedBrowser);
   await expectedPrefUpdate;
@@ -96,17 +96,17 @@ add_task(async function test_set_right_t
     setTourCompletedState(tourIds[i], i % 2 == 0);
   }
 
   let tabs = [];
   for (let url of URLs) {
     let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
     await BrowserTestUtils.loadURI(tab.linkedBrowser, url);
     await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
-    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-icon", {}, tab.linkedBrowser);
+    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
     await promiseOnboardingOverlayOpened(tab.linkedBrowser);
     tabs.push(tab);
   }
 
   for (let i = tabs.length - 1; i >= 0; --i) {
     let tab = tabs[i];
     for (let j = 0; j < tourIds.length; ++j) {
       await assertTourCompletedStyle(tourIds[j], j % 2 == 0, tab.linkedBrowser);
--- a/browser/extensions/onboarding/test/browser/browser_onboarding_tourset.js
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_tourset.js
@@ -5,17 +5,17 @@
 
 add_task(async function test_onboarding_default_new_tourset() {
   resetOnboardingDefaultState();
   let tabs = [];
   for (let url of URLs) {
     let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
     await BrowserTestUtils.loadURI(tab.linkedBrowser, url);
     await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
-    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-icon", {}, tab.linkedBrowser);
+    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
     await promiseOnboardingOverlayOpened(tab.linkedBrowser);
     tabs.push(tab);
   }
 
   let doc = content && content.document;
   let doms = doc.querySelectorAll(".onboarding-tour-item");
   is(doms.length, TOUR_IDs.length, "has exact tour numbers");
   doms.forEach((dom, idx) => {
@@ -43,17 +43,17 @@ add_task(async function test_onboarding_
     ["browser.onboarding.newtour", "private,addons,customize"],
   ]});
 
   let tabs = [];
   for (let url of URLs) {
     let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
     await BrowserTestUtils.loadURI(tab.linkedBrowser, url);
     await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
-    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-icon", {}, tab.linkedBrowser);
+    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
     await promiseOnboardingOverlayOpened(tab.linkedBrowser);
     tabs.push(tab);
   }
 
   let doc = content && content.document;
   let doms = doc.querySelectorAll(".onboarding-tour-item");
   is(doms.length, CUSTOM_NEW_TOURs.length, "has exact tour numbers");
   doms.forEach((dom, idx) => {
@@ -80,17 +80,17 @@ add_task(async function test_onboarding_
     ["browser.onboarding.updatetour", "customize,private,addons"],
   ]});
 
   let tabs = [];
   for (let url of URLs) {
     let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
     await BrowserTestUtils.loadURI(tab.linkedBrowser, url);
     await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
-    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-icon", {}, tab.linkedBrowser);
+    await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
     await promiseOnboardingOverlayOpened(tab.linkedBrowser);
     tabs.push(tab);
   }
 
   let doc = content && content.document;
   let doms = doc.querySelectorAll(".onboarding-tour-item");
   is(doms.length, CUSTOM_UPDATE_TOURs.length, "has exact tour numbers");
   doms.forEach((dom, idx) => {
--- a/browser/themes/linux/browser.css
+++ b/browser/themes/linux/browser.css
@@ -12,17 +12,17 @@
 
 %include ../shared/browser.inc
 %include linuxShared.inc
 
 %include ../shared/browser.inc.css
 
 :root {
 %ifdef MOZ_PHOTON_THEME
-  --toolbarbutton-border-radius: 2px;
+  --toolbarbutton-border-radius: 4px;
 %else
   --toolbarbutton-border-radius: 1px;
 
   --backbutton-background: rgba(255,255,255,.15);
   --backbutton-border-color: var(--urlbar-border-color-hover);
 
   --toolbarbutton-hover-background: rgba(255,255,255,.5) linear-gradient(rgba(255,255,255,.5), transparent);
   --toolbarbutton-hover-bordercolor: rgba(0,0,0,.25);
--- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css
@@ -1565,17 +1565,17 @@ toolbarbutton.chevron > .toolbarbutton-m
 }
 
 #TabsToolbar:not(:-moz-lwtheme) {
   color: #333;
   text-shadow: @loweredShadow@;
 }
 
 %ifdef MOZ_PHOTON_THEME
-:root:-moz-any([inFullscreen], [tabsintitlebar]):not([customizing]) #TabsToolbar:not(:-moz-lwtheme) {
+:root:-moz-any([inFullscreen], [tabsintitlebar]) #TabsToolbar:not(:-moz-lwtheme) {
   -moz-appearance: none;
   background-color: #232323;
   color: hsl(240, 9%, 98%);
   text-shadow: none;
 }
 %endif
 
 %ifndef MOZ_PHOTON_THEME
--- a/browser/themes/shared/customizableui/customizeMode.inc.css
+++ b/browser/themes/shared/customizableui/customizeMode.inc.css
@@ -575,19 +575,17 @@ toolbarpaletteitem[place=toolbar] > tool
   -moz-appearance: none;
   border-radius: var(--arrowpanel-border-radius);
 %endif
 }
 
 #customization-panelWrapper > .panel-arrowbox {
   position: relative;
   height: 10px;
-%ifndef XP_MACOSX
-  margin-bottom: 2px;
-%endif
+  margin-bottom: -1px;
 }
 
 #customization-panelWrapper > .panel-arrowbox > .panel-arrow[side="top"] {
 %ifdef XP_MACOSX
   list-style-image: var(--panel-arrow-image-vertical,
                         url("chrome://global/skin/arrow/panelarrow-vertical.png"));
   /* The OS X image is 2px narrower than the windows/linux one.
    * Add padding to compensate: */
@@ -609,16 +607,17 @@ toolbarpaletteitem[place=toolbar] > tool
    * 10px + toolbarbutton-inner-padding (center of overflow button) +
    * 29px + 2 * toolbarbutton-inner-padding
    * The #customization-panel-container has a 25px margin, so that leaves:
    * 14px + 3 * toolbarbutton-inner-padding
    * Finally, we need to center the arrow, which is 20px wide, so subtract
    * 10px.
    */
   margin-inline-end: calc(4px + 3 * var(--toolbarbutton-inner-padding));
+  vertical-align: top;
 }
 
 %ifdef XP_MACOSX
 @media (min-resolution: 2dppx) {
   #customization-panelWrapper > .panel-arrowbox > .panel-arrow[side="top"] {
     list-style-image: var(--panel-arrow-image-vertical,
                           url("chrome://global/skin/arrow/panelarrow-vertical@2x.png"));
   }
--- a/browser/themes/shared/icons/reload-to-stop.svg
+++ b/browser/themes/shared/icons/reload-to-stop.svg
@@ -1,1550 +1,894 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="756" height="20" fill="context-fill">
-  <svg width="18" height="20" x="0" y="0">
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="468" height="20" fill="context-fill">
+  <svg x="0">
     <defs>
-      <clipPath id="b">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="e" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.27 18.622) scale(7.36622)"/>
-      </mask>
       <mask id="d" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
-      </mask>
-      <filter id="a" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="c" mask-type="alpha">
-        <g filter="url(#a)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.27 18.622) scale(7.36624)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#b)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#c)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#d)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#e)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="18" y="0">
-    <defs>
-      <clipPath id="g">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="j" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.26 18.622) scale(7.3132)"/>
+      <mask id="c" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
       </mask>
-      <mask id="i" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
-      </mask>
-      <filter id="f" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="a" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="h" mask-type="alpha">
-        <g filter="url(#f)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="b" mask-type="alpha">
+        <g filter="url(#a)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#g)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#h)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#i)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#j)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.975 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#b)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.86 -0.19 6.833 -3.473 6.642 -7.331C15.794 5.79 12.513 2.816 8.654 3.006A6.997 6.997 0 0 0 2.821 6.711a6.954 6.954 0 0 0 -0.517 5.332A1 1 0 1 0 4.217 11.46a5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#c)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#d)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="36" y="0">
+  <svg x="18">
     <defs>
-      <clipPath id="l">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="o" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.25 18.622) scale(7.2471)"/>
+      <mask id="h" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.255 18.622) scale(7.27821)"/>
       </mask>
-      <mask id="n" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
+      <mask id="g" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
       </mask>
-      <filter id="k" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="e" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="m" mask-type="alpha">
-        <g filter="url(#k)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="f" mask-type="alpha">
+        <g filter="url(#e)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#l)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#m)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#n)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#o)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.975 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#f)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.86 -0.19 6.833 -3.473 6.642 -7.331C15.794 5.79 12.513 2.816 8.654 3.006A6.997 6.997 0 0 0 2.821 6.711a6.954 6.954 0 0 0 -0.517 5.332A1 1 0 1 0 4.217 11.46a5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#g)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#h)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="54" y="0">
+  <svg x="36">
     <defs>
-      <clipPath id="q">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="t" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.238 18.622) scale(7.16624)"/>
-      </mask>
-      <mask id="s" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
-      </mask>
-      <filter id="p" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="r" mask-type="alpha">
-        <g filter="url(#p)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="l" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.236 18.622) scale(7.1563)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#q)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#r)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#s)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#t)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="72" y="0">
-    <defs>
-      <clipPath id="v">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="y" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.223 18.622) scale(7.06864)"/>
+      <mask id="k" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
       </mask>
-      <mask id="x" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
-      </mask>
-      <filter id="u" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="i" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="w" mask-type="alpha">
-        <g filter="url(#u)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="j" mask-type="alpha">
+        <g filter="url(#i)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#v)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#w)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#x)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#y)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.975 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#j)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.86 -0.19 6.833 -3.473 6.642 -7.331C15.794 5.79 12.513 2.816 8.654 3.006A6.997 6.997 0 0 0 2.821 6.71a6.954 6.954 0 0 0 -0.517 5.333A1 1 0 1 0 4.217 11.46a5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#k)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#l)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="90" y="0">
+  <svg x="54">
     <defs>
-      <clipPath id="A">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="D" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.204 18.622) scale(6.95179)"/>
-      </mask>
-      <mask id="C" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.15 1.705) scale(7.47174)"/>
-      </mask>
-      <filter id="z" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="B" mask-type="alpha">
-        <g filter="url(#z)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="p" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.21 18.622) scale(6.99309)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#A)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#B)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#C)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#D)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="108" y="0">
-    <defs>
-      <clipPath id="F">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="I" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.183 18.622) scale(6.81253)"/>
+      <mask id="o" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.151 1.705) scale(7.47405)"/>
       </mask>
-      <mask id="H" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.149 1.705) scale(7.45936)"/>
-      </mask>
-      <filter id="E" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="m" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="G" mask-type="alpha">
-        <g filter="url(#E)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="n" mask-type="alpha">
+        <g filter="url(#m)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#F)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#G)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#H)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#I)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.975 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#n)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.859 -0.19 6.833 -3.473 6.642 -7.331C15.794 5.79 12.513 2.816 8.654 3.006A6.997 6.997 0 0 0 2.821 6.71a6.954 6.954 0 0 0 -0.517 5.333A1 1 0 1 0 4.217 11.46a5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#o)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#p)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="126" y="0">
+  <svg x="72">
     <defs>
-      <clipPath id="K">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="N" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.157 18.622) scale(6.6468)"/>
+      <mask id="t" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.177 18.622) scale(6.7782)"/>
       </mask>
-      <mask id="M" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.145 1.705) scale(7.43823)"/>
+      <mask id="s" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.148 1.705) scale(7.45544)"/>
       </mask>
-      <filter id="J" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="q" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="L" mask-type="alpha">
-        <g filter="url(#J)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="r" mask-type="alpha">
+        <g filter="url(#q)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#K)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#L)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#M)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#N)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.975 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#r)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.859 -0.19 6.832 -3.473 6.642 -7.331C15.794 5.79 12.514 2.816 8.654 3.006A6.997 6.997 0 0 0 2.821 6.71a6.954 6.954 0 0 0 -0.517 5.333A1 1 0 1 0 4.217 11.46a5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#s)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#t)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="144" y="0">
+  <svg x="90">
     <defs>
-      <clipPath id="P">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="S" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.126 18.622) scale(6.44921)"/>
-      </mask>
-      <mask id="R" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.14 1.705) scale(7.40751)"/>
-      </mask>
-      <filter id="O" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="Q" mask-type="alpha">
-        <g filter="url(#O)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="x" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.133 18.622) scale(6.49626)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#P)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#Q)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#R)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#S)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="162" y="0">
-    <defs>
-      <clipPath id="U">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="X" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.09 18.622) scale(6.21239)"/>
+      <mask id="w" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.142 1.705) scale(7.4152)"/>
       </mask>
-      <mask id="W" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.134 1.705) scale(7.36622)"/>
-      </mask>
-      <filter id="T" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="u" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="V" mask-type="alpha">
-        <g filter="url(#T)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="v" mask-type="alpha">
+        <g filter="url(#u)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#U)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#V)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#W)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#X)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#v)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.859 -0.19 6.832 -3.473 6.642 -7.33C15.794 5.79 12.514 2.815 8.654 3.005A6.997 6.997 0 0 0 2.821 6.71a6.954 6.954 0 0 0 -0.517 5.333 1 1 0 1 0 1.913 -0.584 5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#w)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#x)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="180" y="0">
+  <svg x="108">
     <defs>
-      <clipPath id="Z">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="ac" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.044 18.622) scale(5.92587)"/>
-      </mask>
-      <mask id="ab" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.126 1.705) scale(7.3132)"/>
-      </mask>
-      <filter id="Y" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="aa" mask-type="alpha">
-        <g filter="url(#Y)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="B" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.075 18.622) scale(6.1231)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#Z)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#aa)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#ab)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#ac)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="198" y="0">
-    <defs>
-      <clipPath id="ae">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="ah" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.99 18.622) scale(5.57409)"/>
+      <mask id="A" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.132 1.705) scale(7.34989)"/>
       </mask>
-      <mask id="ag" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.116 1.705) scale(7.2471)"/>
-      </mask>
-      <filter id="ad" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="y" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="af" mask-type="alpha">
-        <g filter="url(#ad)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="z" mask-type="alpha">
+        <g filter="url(#y)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#ae)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#af)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#ag)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#ah)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#z)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.859 -0.19 6.832 -3.473 6.642 -7.33C15.794 5.79 12.514 2.815 8.654 3.005A6.997 6.997 0 0 0 2.821 6.71a6.954 6.954 0 0 0 -0.517 5.333 1 1 0 1 0 1.913 -0.584 5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#A)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#B)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="216" y="0">
+  <svg x="126">
     <defs>
-      <clipPath id="aj">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="am" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.92 18.622) scale(5.13258)"/>
+      <mask id="F" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.996 18.622) scale(5.61712)"/>
       </mask>
-      <mask id="al" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.103 1.705) scale(7.16624)"/>
+      <mask id="E" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.117 1.705) scale(7.2551)"/>
       </mask>
-      <filter id="ai" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="C" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="ak" mask-type="alpha">
-        <g filter="url(#ai)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="D" mask-type="alpha">
+        <g filter="url(#C)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#aj)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#ak)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#al)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#am)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#D)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.859 -0.19 6.832 -3.473 6.642 -7.33C15.794 5.79 12.514 2.815 8.654 3.005A6.997 6.997 0 0 0 2.821 6.71a6.954 6.954 0 0 0 -0.517 5.333 1 1 0 1 0 1.913 -0.584 5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#E)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#F)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="234" y="0">
+  <svg x="144">
     <defs>
-      <clipPath id="ao">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="ar" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.831 18.622) scale(4.56057)"/>
-      </mask>
-      <mask id="aq" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.088 1.705) scale(7.06864)"/>
-      </mask>
-      <filter id="an" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="ap" mask-type="alpha">
-        <g filter="url(#an)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="J" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.884 18.622) scale(4.89783)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#ao)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#ap)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aq)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#ar)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="252" y="0">
-    <defs>
-      <clipPath id="at">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aw" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.711 18.622) scale(3.7901)"/>
+      <mask id="I" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.097 1.705) scale(7.12503)"/>
       </mask>
-      <mask id="av" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.07 1.705) scale(6.95179)"/>
-      </mask>
-      <filter id="as" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="G" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="au" mask-type="alpha">
-        <g filter="url(#as)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="H" mask-type="alpha">
+        <g filter="url(#G)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#at)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#au)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#av)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aw)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#H)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.859 -0.19 6.832 -3.473 6.642 -7.33C15.794 5.79 12.514 2.815 8.654 3.005A6.997 6.997 0 0 0 2.821 6.71a6.954 6.954 0 0 0 -0.517 5.333 1 1 0 1 0 1.913 -0.584 5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#I)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#J)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="270" y="0">
+  <svg x="162">
     <defs>
-      <clipPath id="ay">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aB" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.55 18.622) scale(2.75815)"/>
-      </mask>
-      <mask id="aA" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.048 1.705) scale(6.81253)"/>
-      </mask>
-      <filter id="ax" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="az" mask-type="alpha">
-        <g filter="url(#ax)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="N" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.711 18.622) scale(3.7902)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#ay)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#az)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aA)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aB)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="288" y="0">
-    <defs>
-      <clipPath id="aD">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aG" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.386 18.622) scale(1.70603)"/>
+      <mask id="M" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.07 1.705) scale(6.95173)"/>
       </mask>
-      <mask id="aF" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.022 1.705) scale(6.6468)"/>
-      </mask>
-      <filter id="aC" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="K" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="aE" mask-type="alpha">
-        <g filter="url(#aC)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="L" mask-type="alpha">
+        <g filter="url(#K)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#aD)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#aE)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aF)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aG)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#L)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.859 -0.19 6.832 -3.473 6.642 -7.33C15.794 5.79 12.514 2.815 8.654 3.005A6.997 6.997 0 0 0 2.821 6.71a6.954 6.954 0 0 0 -0.517 5.333 1 1 0 1 0 1.913 -0.584 5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#M)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#N)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="306" y="0">
+  <svg x="180">
     <defs>
-      <clipPath id="aI">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aL" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.284 18.622) scale(1.05114)"/>
+      <mask id="R" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.454 18.622) scale(2.13915)"/>
       </mask>
-      <mask id="aK" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.991 1.705) scale(6.44921)"/>
+      <mask id="Q" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.034 1.705) scale(6.72397)"/>
       </mask>
-      <filter id="aH" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="O" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="aJ" mask-type="alpha">
-        <g filter="url(#aH)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="P" mask-type="alpha">
+        <g filter="url(#O)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#aI)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#aJ)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aK)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aL)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#P)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.859 -0.19 6.832 -3.473 6.642 -7.33C15.794 5.79 12.514 2.815 8.654 3.005A6.997 6.997 0 0 0 2.822 6.71a6.954 6.954 0 0 0 -0.517 5.333 1 1 0 1 0 1.913 -0.584 5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#Q)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#R)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="324" y="0">
+  <svg x="198">
     <defs>
-      <clipPath id="aN">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aQ" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.233 18.622) scale(.72448)"/>
+      <mask id="V" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.276 18.622) scale(1.00203)"/>
       </mask>
-      <mask id="aP" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.954 1.705) scale(6.21239)"/>
+      <mask id="U" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.987 1.705) scale(6.42492)"/>
       </mask>
-      <filter id="aM" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="S" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="aO" mask-type="alpha">
-        <g filter="url(#aM)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="T" mask-type="alpha">
+        <g filter="url(#S)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#aN)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#aO)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aP)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aQ)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#T)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.859 -0.19 6.832 -3.473 6.642 -7.33C15.794 5.79 12.514 2.815 8.654 3.005A6.997 6.997 0 0 0 2.822 6.71a6.954 6.954 0 0 0 -0.517 5.333 1 1 0 1 0 1.913 -0.584 5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#U)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#V)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="342" y="0">
+  <svg x="216">
     <defs>
-      <clipPath id="aS">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aV" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.21 18.622) scale(.57983)"/>
-      </mask>
-      <mask id="aU" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.91 1.705) scale(5.92587)"/>
-      </mask>
-      <filter id="aR" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="aT" mask-type="alpha">
-        <g filter="url(#aR)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="Z" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.216 18.622) scale(.61358)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#aS)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#aT)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aU)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aV)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="360" y="0">
-    <defs>
-      <clipPath id="aX">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="ba" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="Y" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.925 1.705) scale(6.02764)"/>
       </mask>
-      <mask id="aZ" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.855 1.705) scale(5.57409)"/>
-      </mask>
-      <filter id="aW" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="W" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="aY" mask-type="alpha">
-        <g filter="url(#aW)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="X" mask-type="alpha">
+        <g filter="url(#W)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#aX)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#aY)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aZ)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#ba)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#X)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.859 -0.19 6.832 -3.473 6.642 -7.33C15.794 5.79 12.514 2.815 8.654 3.005A6.997 6.997 0 0 0 2.822 6.71a6.954 6.954 0 0 0 -0.517 5.333 1 1 0 1 0 1.913 -0.584 5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#Y)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#Z)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="378" y="0">
+  <svg x="234">
     <defs>
-      <clipPath id="bc">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bf" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
-      </mask>
-      <mask id="be" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.786 1.705) scale(5.13258)"/>
-      </mask>
-      <filter id="bb" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="bd" mask-type="alpha">
-        <g filter="url(#bb)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="ad" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#bc)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bd)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#be)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bf)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="396" y="0">
-    <defs>
-      <clipPath id="bh">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bk" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="ac" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.84 1.705) scale(5.48475)"/>
       </mask>
-      <mask id="bj" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.696 1.705) scale(4.56057)"/>
-      </mask>
-      <filter id="bg" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aa" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bi" mask-type="alpha">
-        <g filter="url(#bg)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="ab" mask-type="alpha">
+        <g filter="url(#aa)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bh)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bi)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#bj)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bk)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#ab)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.859 -0.19 6.832 -3.472 6.642 -7.33C15.794 5.79 12.514 2.817 8.654 3.006A6.997 6.997 0 0 0 2.822 6.71a6.954 6.954 0 0 0 -0.517 5.333A1 1 0 1 0 4.217 11.46a5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#ac)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#ad)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="414" y="0">
+  <svg x="252">
     <defs>
-      <clipPath id="bm">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bp" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="ah" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-      <mask id="bo" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.576 1.705) scale(3.7901)"/>
+      <mask id="ag" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.718 1.705) scale(4.70182)"/>
       </mask>
-      <filter id="bl" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="ae" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bn" mask-type="alpha">
-        <g filter="url(#bl)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="af" mask-type="alpha">
+        <g filter="url(#ae)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bm)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bn)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#bo)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bp)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#af)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.858 -0.19 6.832 -3.472 6.642 -7.33C15.794 5.79 12.514 2.817 8.654 3.006A6.997 6.997 0 0 0 2.822 6.71a6.954 6.954 0 0 0 -0.517 5.333A1 1 0 1 0 4.217 11.46a5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#ag)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#ah)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="432" y="0">
+  <svg x="270">
     <defs>
-      <clipPath id="br">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bu" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
-      </mask>
-      <mask id="bt" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.415 1.705) scale(2.75815)"/>
-      </mask>
-      <filter id="bq" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="bs" mask-type="alpha">
-        <g filter="url(#bq)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="al" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#br)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bs)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#bt)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bu)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="450" y="0">
-    <defs>
-      <clipPath id="bw">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bz" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="ak" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.527 1.705) scale(3.47447)"/>
       </mask>
-      <mask id="by" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.251 1.705) scale(1.70603)"/>
-      </mask>
-      <filter id="bv" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="ai" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bx" mask-type="alpha">
-        <g filter="url(#bv)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="aj" mask-type="alpha">
+        <g filter="url(#ai)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bw)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bx)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#by)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bz)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#aj)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.858 -0.19 6.832 -3.472 6.642 -7.33C15.794 5.79 12.514 2.817 8.654 3.006A6.997 6.997 0 0 0 2.822 6.71a6.954 6.954 0 0 0 -0.517 5.333A1 1 0 1 0 4.217 11.46a5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#ak)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#al)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="468" y="0">
+  <svg x="288">
     <defs>
-      <clipPath id="bB">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bE" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
-      </mask>
-      <mask id="bD" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.149 1.705) scale(1.05114)"/>
-      </mask>
-      <filter id="bA" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="bC" mask-type="alpha">
-        <g filter="url(#bA)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="ap" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#bB)">
-      <path d="M8.078 15.533l.175-.088a.077.077 0 0 0-.069-.137l-.343.173a.077.077 0 0 0-.034.103l.173.344a.077.077 0 0 0 .137-.07l-.083-.166" opacity=".077"/>
-      <g opacity=".037" mask="url(#bC)">
-        <path d="M7.1 16.725a6.994 6.994 0 0 0 8.632-4.832 6.994 6.994 0 0 0-11.54-6.98 6.954 6.954 0 0 0-2.19 4.89 1 1 0 0 0 2 .056 5.02 5.02 0 1 1 3.066 4.72"/>
-      </g>
-      <g mask="url(#bD)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bE)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="486" y="0">
-    <defs>
-      <clipPath id="bG">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bJ" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="ao" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.267 1.705) scale(1.80625)"/>
       </mask>
-      <mask id="bI" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.098 1.705) scale(.72448)"/>
-      </mask>
-      <filter id="bF" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="am" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bH" mask-type="alpha">
-        <g filter="url(#bF)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="an" mask-type="alpha">
+        <g filter="url(#am)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bG)">
-      <path d="M6.335 14.837l.386-.065a.154.154 0 0 0-.05-.303l-.76.127a.154.154 0 0 0-.125.177l.127.759a.154.154 0 0 0 .304-.051l-.062-.367" opacity=".154"/>
-      <g opacity=".106" mask="url(#bH)">
-        <path d="M5.053 15.766a6.994 6.994 0 0 0 9.722-1.823A6.994 6.994 0 0 0 6.067 3.644a6.954 6.954 0 0 0-3.635 3.935 1 1 0 0 0 1.876.692 5.02 5.02 0 1 1 1.4 5.451"/>
-      </g>
-      <g mask="url(#bI)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bJ)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.974 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#an)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.858 -0.19 6.832 -3.472 6.642 -7.33C15.794 5.79 12.514 2.817 8.654 3.006A6.997 6.997 0 0 0 2.822 6.71a6.954 6.954 0 0 0 -0.517 5.333A1 1 0 1 0 4.217 11.46a5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
+    </g>
+    <g mask="url(#ao)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#ap)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="504" y="0">
+  <svg x="306">
     <defs>
-      <clipPath id="bL">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bO" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="at" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-      <mask id="bN" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.075 1.705) scale(.57983)"/>
+      <mask id="as" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.122 1.705) scale(.87602)"/>
       </mask>
-      <filter id="bK" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aq" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bM" mask-type="alpha">
-        <g filter="url(#bK)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="ar" mask-type="alpha">
+        <g filter="url(#aq)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bL)">
-      <path d="M4.936 13.618l.583.078a.23.23 0 0 0 .062-.457l-1.143-.154a.23.23 0 0 0-.26.197l-.155 1.144a.23.23 0 0 0 .458.062l.075-.553" opacity=".231"/>
-      <g opacity=".186" mask="url(#bM)">
-        <path d="M3.419 14.205a6.994 6.994 0 0 0 9.795 1.375A6.994 6.994 0 0 0 8.25 3.04a6.954 6.954 0 0 0-4.702 2.57 1 1 0 0 0 1.557 1.253 5.02 5.02 0 1 1-.414 5.613"/>
-      </g>
-      <g mask="url(#bN)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bO)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity=".111">
+      <path fill-opacity="1" d="M7.268 15.294l0.269 -0.092a0.111 0.111 0 0 0 -0.073 -0.21l-0.526 0.181a0.111 0.111 0 0 0 -0.069 0.142l0.182 0.525a0.111 0.111 0 0 0 0.21 -0.072L7.173 15.513" opacity="1"/>
+    </g>
+    <g mask="url(#ar)" opacity=".066">
+      <path fill-opacity="1" d="M6.148 16.38c3.527 1.576 7.664 -0.007 9.24 -3.533C16.963 9.319 15.382 5.183 11.855 3.607A6.997 6.997 0 0 0 4.978 4.27 6.954 6.954 0 0 0 2.104 8.793a1 1 0 1 0 1.97 0.345 5.02 5.02 0 1 1 2.352 5.113" opacity="1"/>
+    </g>
+    <g mask="url(#as)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#at)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="522" y="0">
+  <svg x="324">
     <defs>
-      <clipPath id="bQ">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bT" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="ax" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-      <mask id="bS" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
+      <mask id="aw" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.075 1.705) scale(.57983)"/>
       </mask>
-      <filter id="bP" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="au" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bR" mask-type="alpha">
-        <g filter="url(#bP)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="av" mask-type="alpha">
+        <g filter="url(#au)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bQ)">
-      <path d="M4.032 12.022l.71.33a.308.308 0 0 0 .26-.558l-1.395-.648a.308.308 0 0 0-.409.15L2.55 12.69a.308.308 0 0 0 .558.26l.314-.675" opacity=".308"/>
-      <g opacity=".272" mask="url(#bR)">
-        <path d="M2.368 12.203a6.994 6.994 0 0 0 8.845 4.43 6.994 6.994 0 0 0-.703-13.468 6.954 6.954 0 0 0-5.275.933A1 1 0 0 0 6.31 5.784a5.02 5.02 0 1 1-2.184 5.187"/>
-      </g>
-      <g mask="url(#bS)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bT)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity=".231">
+      <path fill-opacity="1" d="M4.934 13.615l0.584 0.08A0.231 0.231 0 0 0 5.58 13.236L4.436 13.082a0.231 0.231 0 0 0 -0.26 0.198L4.02 14.424a0.231 0.231 0 0 0 0.457 0.062l0.075 -0.554" opacity="1"/>
+    </g>
+    <g mask="url(#av)" opacity=".186">
+      <path fill-opacity="1" d="M3.416 14.202c2.324 3.086 6.71 3.704 9.796 1.38 3.086 -2.323 3.705 -6.708 1.381 -9.795A6.997 6.997 0 0 0 8.253 3.04 6.954 6.954 0 0 0 3.55 5.606a1 1 0 1 0 1.557 1.255A5.02 5.02 0 1 1 4.69 12.473" opacity="1"/>
+    </g>
+    <g mask="url(#aw)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#ax)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="540" y="0">
+  <svg x="342">
     <defs>
-      <clipPath id="bV">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bY" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
-      </mask>
-      <mask id="bX" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="bU" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="bW" mask-type="alpha">
-        <g filter="url(#bU)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="aB" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#bV)">
-      <path d="M3.712 10.234l.727.658a.385.385 0 0 0 .516-.57L3.53 9.032a.385.385 0 0 0-.543.027l-1.291 1.425a.385.385 0 0 0 .57.516l.624-.689" opacity=".385"/>
-      <g opacity=".362" mask="url(#bW)">
-        <path d="M2.012 9.97a6.994 6.994 0 0 0 6.967 7.023 6.994 6.994 0 0 0 3.634-12.988 6.954 6.954 0 0 0-5.297-.8 1 1 0 0 0 .48 1.941 5.02 5.02 0 1 1-3.725 4.219"/>
-      </g>
-      <g mask="url(#bX)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bY)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="558" y="0">
-    <defs>
-      <clipPath id="ca">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cd" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="aA" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <mask id="cc" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="bZ" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="ay" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cb" mask-type="alpha">
-        <g filter="url(#bZ)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="az" mask-type="alpha">
+        <g filter="url(#ay)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#ca)">
-      <path d="M4.004 8.46l.6 1.013a.462.462 0 0 0 .794-.47L4.223 7.017a.462.462 0 0 0-.633-.162L1.604 8.03a.462.462 0 0 0 .47.794l.96-.568" opacity=".462"/>
-      <g opacity=".454" mask="url(#cb)">
-        <path d="M2.387 7.742a6.994 6.994 0 0 0 4.361 8.879 6.994 6.994 0 0 0 7.59-11.15 6.954 6.954 0 0 0-4.765-2.448 1 1 0 0 0-.164 1.993 5.02 5.02 0 1 1-4.877 2.809"/>
-      </g>
-      <g mask="url(#cc)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cd)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity=".351">
+      <path fill-opacity="1" d="M3.778 11.038l0.737 0.506a0.35 0.35 0 0 0 0.397 -0.578L3.468 9.973a0.35 0.35 0 0 0 -0.488 0.09l-0.993 1.445a0.35 0.35 0 0 0 0.578 0.397l0.48 -0.699" opacity="1"/>
+    </g>
+    <g mask="url(#az)" opacity=".322">
+      <path fill-opacity="1" d="M2.08 10.974c0.54 3.826 4.079 6.49 7.904 5.95s6.489 -4.078 5.95 -7.903A6.997 6.997 0 0 0 11.715 3.548 6.954 6.954 0 0 0 6.357 3.518 1 1 0 1 0 7.112 5.37a5.02 5.02 0 1 1 -3.081 4.71" opacity="1"/>
+    </g>
+    <g mask="url(#aA)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aB)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="576" y="0">
+  <svg x="360">
     <defs>
-      <clipPath id="cf">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="ci" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
-      </mask>
-      <mask id="ch" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="ce" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="cg" mask-type="alpha">
-        <g filter="url(#ce)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="aF" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#cf)">
-      <path d="M4.864 6.9l.318 1.335a.539.539 0 0 0 1.048-.25l-.624-2.618a.539.539 0 0 0-.648-.4l-2.62.624a.539.539 0 0 0 .25 1.047l1.267-.301" opacity=".538"/>
-      <g opacity=".546" mask="url(#cg)">
-        <path d="M3.454 5.749a6.994 6.994 0 0 0 1.299 9.806 6.994 6.994 0 0 0 10.751-8.142A6.954 6.954 0 0 0 11.77 3.57a1 1 0 0 0-.791 1.836A5.02 5.02 0 1 1 5.46 6.512"/>
-      </g>
-      <g mask="url(#ch)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#ci)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="594" y="0">
-    <defs>
-      <clipPath id="ck">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cn" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="aE" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <mask id="cm" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="cj" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aC" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cl" mask-type="alpha">
-        <g filter="url(#cj)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="aD" mask-type="alpha">
+        <g filter="url(#aC)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#ck)">
-      <path d="M6.187 5.726L6.08 7.291a.616.616 0 0 0 1.228.083l.207-3.07a.616.616 0 0 0-.573-.655l-3.07-.207A.616.616 0 0 0 3.79 4.67l1.485.1" opacity=".615"/>
-      <g opacity=".638" mask="url(#cl)">
-        <path d="M5.101 4.2a6.994 6.994 0 0 0-1.9 9.709A6.994 6.994 0 0 0 15.99 9.624a6.954 6.954 0 0 0-2.313-4.833 1 1 0 0 0-1.336 1.488 5.02 5.02 0 1 1-5.582-.714"/>
-      </g>
-      <g mask="url(#cm)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cn)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity=".47">
+      <path fill-opacity="1" d="M4.073 8.272L4.65 9.323A0.47 0.47 0 0 0 5.474 8.872L4.345 6.81A0.47 0.47 0 0 0 3.707 6.623L1.645 7.752a0.47 0.47 0 0 0 0.451 0.825L3.094 8.03" opacity="1"/>
+    </g>
+    <g mask="url(#aD)" opacity=".464">
+      <path fill-opacity="1" d="M2.473 7.503c-1.38 3.61 0.429 7.653 4.037 9.032 3.608 1.38 7.652 -0.427 9.031 -4.036A6.997 6.997 0 0 0 14.5 5.669 6.954 6.954 0 0 0 9.825 3.048 1 1 0 1 0 9.59 5.034a5.02 5.02 0 1 1 -4.976 2.63" opacity="1"/>
+    </g>
+    <g mask="url(#aE)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aF)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="612" y="0">
+  <svg x="378">
     <defs>
-      <clipPath id="cp">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cs" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="aJ" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-      <mask id="cr" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
+      <mask id="aI" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <filter id="co" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aG" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cq" mask-type="alpha">
-        <g filter="url(#co)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="aH" mask-type="alpha">
+        <g filter="url(#aG)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#cp)">
-      <path d="M7.815 5.069L7.18 6.715a.693.693 0 0 0 1.292.498l1.245-3.23a.693.693 0 0 0-.397-.895L6.09 1.843a.693.693 0 0 0-.498 1.292l1.562.602" opacity=".692"/>
-      <g opacity=".728" mask="url(#cq)">
-        <path d="M7.156 3.26a6.994 6.994 0 0 0-4.899 8.593 6.994 6.994 0 0 0 13.487.022 6.954 6.954 0 0 0-.649-5.318 1 1 0 0 0-1.741.983 5.02 5.02 0 1 1-5.062-2.459"/>
-      </g>
-      <g mask="url(#cr)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cs)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity=".59">
+      <path fill-opacity="1" d="M5.703 6.065l0.05 1.503a0.59 0.59 0 0 0 1.179 -0.04L6.834 4.583A0.59 0.59 0 0 0 6.225 4.012L3.278 4.109a0.59 0.59 0 0 0 0.04 1.18L4.741 5.24" opacity="1"/>
+    </g>
+    <g mask="url(#aH)" opacity=".607">
+      <path fill-opacity="1" d="M4.497 4.656C1.543 7.146 1.168 11.56 3.658 14.513c2.49 2.954 6.903 3.33 9.857 0.84A6.997 6.997 0 0 0 15.908 8.87 6.954 6.954 0 0 0 13.087 4.316 1 1 0 1 0 11.92 5.94 5.02 5.02 0 1 1 6.292 5.833" opacity="1"/>
+    </g>
+    <g mask="url(#aI)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aJ)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="630" y="0">
+  <svg x="396">
     <defs>
-      <clipPath id="cu">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cx" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
-      </mask>
-      <mask id="cw" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="ct" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="cv" mask-type="alpha">
-        <g filter="url(#ct)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="aN" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#cu)">
-      <path d="M9.559 4.997L8.343 6.535a.77.77 0 0 0 1.208.954l2.384-3.018a.77.77 0 0 0-.127-1.08L8.79 1.006a.77.77 0 0 0-.954 1.208l1.46 1.153" opacity=".769"/>
-      <g opacity=".814" mask="url(#cv)">
-        <path d="M9.404 3.024a6.994 6.994 0 0 0-7.386 6.58 6.994 6.994 0 0 0 12.775 4.326 6.954 6.954 0 0 0 1.082-5.247 1 1 0 0 0-1.964.376 5.02 5.02 0 1 1-4.013-3.946"/>
-      </g>
-      <g mask="url(#cw)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cx)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="648" y="0">
-    <defs>
-      <clipPath id="cz">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cC" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="aM" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <mask id="cB" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="cy" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aK" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cA" mask-type="alpha">
-        <g filter="url(#cy)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="aL" mask-type="alpha">
+        <g filter="url(#aK)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#cz)">
-      <path d="M11.218 5.514l-1.779 1.22a.846.846 0 0 0 .958 1.395l3.488-2.394a.846.846 0 0 0 .22-1.176L11.71 1.071a.846.846 0 0 0-1.395.957l1.158 1.687" opacity=".846"/>
-      <g opacity=".894" mask="url(#cA)">
-        <path d="M11.61 3.518a6.994 6.994 0 0 0-9.1 3.878 6.994 6.994 0 0 0 10.725 8.177 6.954 6.954 0 0 0 2.701-4.627 1 1 0 0 0-1.981-.27 5.02 5.02 0 1 1-2.543-5.02"/>
-      </g>
-      <g mask="url(#cB)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cC)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity=".709">
+      <path fill-opacity="1" d="M8.198 5.001l-0.761 1.64a0.71 0.71 0 0 0 1.287 0.597l1.493 -3.217A0.71 0.71 0 0 0 9.872 3.08L6.655 1.586A0.71 0.71 0 0 0 6.058 2.873l1.556 0.722" opacity="1"/>
+    </g>
+    <g mask="url(#aL)" opacity=".747">
+      <path fill-opacity="1" d="M7.646 3.145C3.856 3.894 1.392 7.575 2.14 11.364c0.75 3.79 4.429 6.254 8.219 5.505a6.997 6.997 0 0 0 5.232 -4.514 6.954 6.954 0 0 0 -0.265 -5.35A1 1 0 1 0 13.52 7.86 5.02 5.02 0 1 1 8.648 5.043" opacity="1"/>
+    </g>
+    <g mask="url(#aM)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aN)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="666" y="0">
+  <svg x="414">
     <defs>
-      <clipPath id="cE">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cH" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="aR" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-      <mask id="cG" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
+      <mask id="aQ" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <filter id="cD" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aO" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cF" mask-type="alpha">
-        <g filter="url(#cD)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="aP" mask-type="alpha">
+        <g filter="url(#aO)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#cE)">
-      <path d="M12.6 6.556l-2.247.697a.923.923 0 0 0 .547 1.763l4.408-1.367a.923.923 0 0 0 .609-1.155L14.55 2.086a.923.923 0 0 0-1.764.546l.661 2.132" opacity=".923"/>
-      <g opacity=".963" mask="url(#cF)">
-        <path d="M13.543 4.69a6.994 6.994 0 0 0-9.862.77 6.994 6.994 0 0 0 7.553 11.174 6.954 6.954 0 0 0 4.037-3.523 1 1 0 0 0-1.791-.889 5.02 5.02 0 1 1-.807-5.57"/>
-      </g>
-      <g mask="url(#cG)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cH)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity=".829">
+      <path fill-opacity="1" d="M10.865 5.35L9.207 6.66a0.83 0.83 0 0 0 1.027 1.3l3.253 -2.57a0.83 0.83 0 0 0 0.136 -1.164l-2.57 -3.252a0.83 0.83 0 0 0 -1.3 1.028l1.243 1.573" opacity="1"/>
+    </g>
+    <g mask="url(#aP)" opacity=".877">
+      <path fill-opacity="1" d="M11.133 3.346C7.453 2.166 3.516 4.195 2.338 7.873c-1.179 3.68 0.848 7.617 4.527 8.796a6.997 6.997 0 0 0 6.763 -1.417 6.954 6.954 0 0 0 2.358 -4.811A1 1 0 1 0 13.99 10.315a5.02 5.02 0 1 1 -2.9 -4.823" opacity="1"/>
+    </g>
+    <g mask="url(#aQ)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aR)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="684" y="0">
+  <svg x="432">
     <defs>
-      <clipPath id="cJ">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cM" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
-      </mask>
-      <mask id="cL" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="cI" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="cK" mask-type="alpha">
-        <g filter="url(#cI)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+      <mask id="aV" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#cJ)">
-      <path d="M13.549 8H11a1 1 0 0 0 0 2h5a1 1 0 0 0 1-1V4a1 1 0 0 0-2 0v2.418"/>
-      <g mask="url(#cK)">
-        <path d="M15 6.418A6.994 6.994 0 0 0 5.408 4 6.994 6.994 0 0 0 9 17a6.954 6.954 0 0 0 4.95-2.05 1 1 0 0 0-1.414-1.414A5.02 5.02 0 1 1 13.549 8"/>
-      </g>
-      <g mask="url(#cL)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cM)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="702" y="0">
-    <defs>
-      <clipPath id="cO">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cR" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="aU" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <mask id="cQ" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="cN" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aS" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cP" mask-type="alpha">
-        <g filter="url(#cN)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="aT" mask-type="alpha">
+        <g filter="url(#aS)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#cO)">
-      <path d="M13.549 8H11a1 1 0 0 0 0 2h5a1 1 0 0 0 1-1V4a1 1 0 0 0-2 0v2.418"/>
-      <g mask="url(#cP)">
-        <path d="M15 6.418A6.994 6.994 0 0 0 5.408 4 6.994 6.994 0 0 0 9 17a6.954 6.954 0 0 0 4.95-2.05 1 1 0 0 0-1.414-1.414A5.02 5.02 0 1 1 13.549 8"/>
-      </g>
-      <g mask="url(#cQ)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cR)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity=".949">
+      <path fill-opacity="1" d="M12.97 6.998L10.6 7.48a0.949 0.949 0 0 0 0.38 1.86l4.647 -0.948a0.949 0.949 0 0 0 0.74 -1.118L15.42 2.626a0.949 0.949 0 0 0 -1.859 0.379l0.458 2.247" opacity="1"/>
+    </g>
+    <g mask="url(#aT)" opacity=".981">
+      <path fill-opacity="1" d="M14.087 5.21C11.438 2.396 7.011 2.265 4.2 4.914 1.387 7.564 1.255 11.99 3.904 14.803a6.997 6.997 0 0 0 6.604 2.033A6.954 6.954 0 0 0 14.9 13.767a1 1 0 1 0 -1.685 -1.076A5.02 5.02 0 1 1 13.01 7.067" opacity="1"/>
+    </g>
+    <g mask="url(#aU)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aV)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="720" y="0">
+  <svg x="450">
     <defs>
-      <clipPath id="cT">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cW" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="aZ" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-      <mask id="cV" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
+      <mask id="aY" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <filter id="cS" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aW" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cU" mask-type="alpha">
-        <g filter="url(#cS)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="aX" mask-type="alpha">
+        <g filter="url(#aW)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#cT)">
-      <path d="M13.549 8H11a1 1 0 0 0 0 2h5a1 1 0 0 0 1-1V4a1 1 0 0 0-2 0v2.418"/>
-      <g mask="url(#cU)">
-        <path d="M15 6.418A6.994 6.994 0 0 0 5.408 4 6.994 6.994 0 0 0 9 17a6.954 6.954 0 0 0 4.95-2.05 1 1 0 0 0-1.414-1.414A5.02 5.02 0 1 1 13.549 8"/>
-      </g>
-      <g mask="url(#cV)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cW)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <path fill-opacity="1" d="M13.548 7.997l-2.549 0.001a1 1 0 0 0 0.001 2l5 -0.003a1 1 0 0 0 0.999 -1l-0.003 -5a1 1 0 0 0 -2 0.002l0.002 2.417" opacity="1"/>
+    <g mask="url(#aX)">
+      <path fill-opacity="1" d="M14.998 6.414C13.015 3.098 8.719 2.02 5.404 4.002 2.088 5.985 1.008 10.28 2.991 13.596A6.997 6.997 0 0 0 9.004 17a6.954 6.954 0 0 0 4.95 -2.053 1 1 0 1 0 -1.415 -1.413 5.02 5.02 0 1 1 1.01 -5.537" opacity="1"/>
+    </g>
+    <g mask="url(#aY)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aZ)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="738" y="0">
+  <svg x="468">
     <defs>
-      <clipPath id="cY">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="db" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="bd" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.27 18.622) scale(7.36624)"/>
       </mask>
-      <mask id="da" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
+      <mask id="bc" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
       </mask>
-      <filter id="cX" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="ba" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cZ" mask-type="alpha">
-        <g filter="url(#cX)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
+      <mask id="bb" mask-type="alpha">
+        <g filter="url(#ba)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
           <path display="none"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#cY)">
-      <path d="M13.549 8H11a1 1 0 0 0 0 2h5a1 1 0 0 0 1-1V4a1 1 0 0 0-2 0v2.418"/>
-      <g mask="url(#cZ)">
-        <path d="M15 6.418A6.994 6.994 0 0 0 5.408 4 6.994 6.994 0 0 0 9 17a6.954 6.954 0 0 0 4.95-2.05 1 1 0 0 0-1.414-1.414A5.02 5.02 0 1 1 13.549 8"/>
-      </g>
-      <g mask="url(#da)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#db)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.975 15.617" opacity="1"/>
+    </g>
+    <g mask="url(#bb)" opacity="0">
+      <path fill-opacity="1" d="M9.342 16.98c3.86 -0.19 6.833 -3.473 6.642 -7.331C15.794 5.79 12.513 2.816 8.654 3.006A6.997 6.997 0 0 0 2.821 6.711a6.954 6.954 0 0 0 -0.517 5.332A1 1 0 1 0 4.217 11.46a5.02 5.02 0 1 1 4.41 3.496" opacity="1"/>
     </g>
-  </svg>
-  <svg width="18" height="20" x="756" y="0">
-    <defs>
-      <clipPath id="dd">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="dg" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.27 18.622) scale(7.36622)"/>
-      </mask>
-      <mask id="df" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
-      </mask>
-      <filter id="dc" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="de" mask-type="alpha">
-        <g filter="url(#dc)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
-      </mask>
-    </defs>
-    <g clip-path="url(#dd)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#de)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#df)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#dg)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g mask="url(#bc)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#bd)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
 </svg>
--- a/browser/themes/shared/icons/stop-to-reload.svg
+++ b/browser/themes/shared/icons/stop-to-reload.svg
@@ -1,1298 +1,883 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="630" height="20" fill="context-fill">
-  <svg width="18" height="20" x="0" y="0">
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="468" height="20" fill="context-fill">
+  <svg x="0">
     <defs>
-      <clipPath id="b">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="e" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
-      </mask>
       <mask id="d" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="a" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="c" mask-type="alpha">
-        <g filter="url(#a)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
-        </g>
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#b)">
-      <path d="M13.549 8H11a1 1 0 0 0 0 2h5a1 1 0 0 0 1-1V4a1 1 0 0 0-2 0v2.418"/>
-      <g mask="url(#c)">
-        <path d="M15 6.418A6.994 6.994 0 0 0 5.408 4 6.994 6.994 0 0 0 9 17a6.954 6.954 0 0 0 4.95-2.05 1 1 0 0 0-1.414-1.414A5.02 5.02 0 1 1 13.549 8"/>
-      </g>
-      <g mask="url(#d)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#e)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="18" y="0">
-    <defs>
-      <clipPath id="g">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="j" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="c" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <mask id="i" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="f" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="a" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="h" mask-type="alpha">
-        <g filter="url(#f)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
+      <mask id="b" mask-type="alpha">
+        <g filter="url(#a)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#g)">
-      <path d="M13.681 8.468l-1.93-.658a.8.8 0 0 0-.516 1.514l3.786 1.292a.8.8 0 0 0 1.015-.5l1.291-3.785a.8.8 0 0 0-1.514-.517l-.624 1.831"/>
-      <g mask="url(#h)">
-        <path d="M15.524 7.495a6.994 6.994 0 0 0-9.039-4.02 6.994 6.994 0 0 0 1.32 13.422c1.83.322 3.711-.1 5.227-1.174a1 1 0 0 0-1.152-1.635 5.02 5.02 0 1 1 1.944-5.282"/>
-      </g>
-      <g mask="url(#i)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#j)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <path d="M13.549 8H11a1 1 0 0 0 0 2h5a1 1 0 0 0 1 -1V4a1 1 0 0 0 -2 0v2.418"/>
+    <g mask="url(#b)">
+      <path d="M15 6.418C13.019 3.101 8.724 2.019 5.408 4c-3.317 1.981 -4.4 6.275 -2.419 9.592A6.997 6.997 0 0 0 9 17a6.954 6.954 0 0 0 4.95 -2.05 1 1 0 1 0 -1.414 -1.414A5.02 5.02 0 1 1 13.549 8"/>
+    </g>
+    <g mask="url(#c)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#d)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="36" y="0">
+  <svg x="18">
     <defs>
-      <clipPath id="l">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="o" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="h" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-      <mask id="n" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
+      <mask id="g" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <filter id="k" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="e" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="m" mask-type="alpha">
-        <g filter="url(#k)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path display="none"/>
+      <mask id="f" mask-type="alpha">
+        <g filter="url(#e)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#l)">
-      <path d="M13.889 8.949l-1.21-.935a.6.6 0 0 0-.734.95l2.375 1.834a.6.6 0 0 0 .841-.109l1.833-2.374a.6.6 0 0 0-.95-.734l-.886 1.149"/>
-      <g mask="url(#m)">
-        <path d="M15.856 8.646a6.994 6.994 0 0 0-8.22-5.505 6.994 6.994 0 0 0-.992 13.45 6.954 6.954 0 0 0 5.351-.264 1 1 0 0 0-.855-1.807 5.02 5.02 0 1 1 2.817-4.872"/>
-      </g>
-      <g mask="url(#n)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#o)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <path d="M13.735 8.606l-1.72 -0.78a0.741 0.741 0 0 0 -0.611 1.349l3.372 1.53a0.741 0.741 0 0 0 0.98 -0.368l1.531 -3.373A0.741 0.741 0 0 0 15.938 6.352l-0.74 1.631"/>
+    <g mask="url(#f)">
+      <path d="M15.91 8.954C15.33 5.134 11.763 2.508 7.944 3.087 4.125 3.666 1.498 7.231 2.077 11.051a6.997 6.997 0 0 0 4.275 5.429 6.954 6.954 0 0 0 5.357 -0.025A1 1 0 1 0 10.935 14.61a5.02 5.02 0 1 1 3.032 -4.74"/>
+    </g>
+    <g mask="url(#g)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#h)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="54" y="0">
+  <svg x="36">
     <defs>
-      <clipPath id="q">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="t" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="l" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-      <mask id="s" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
+      <mask id="k" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <filter id="p" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="i" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="r" mask-type="alpha">
-        <g filter="url(#p)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L6.625 5.75l2.596-1.742 2.341-1.57L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="j" mask-type="alpha">
+        <g filter="url(#i)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#q)">
-      <path d="M14.211 9.59l-.689-.752a.4.4 0 0 0-.59.54l1.351 1.475a.4.4 0 0 0 .566.024l1.474-1.35a.4.4 0 0 0-.54-.59l-.713.653"/>
-      <g mask="url(#r)">
-        <path d="M15.986 9.837a6.994 6.994 0 0 0-7.158-6.828 6.994 6.994 0 0 0-3.275 13.083 6.954 6.954 0 0 0 5.318.654 1 1 0 0 0-.535-1.927 5.02 5.02 0 1 1 3.608-4.32"/>
-      </g>
-      <g mask="url(#s)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#t)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <path d="M14.088 9.318l-0.89 -0.845a0.482 0.482 0 0 0 -0.663 0.699l1.747 1.657a0.482 0.482 0 0 0 0.68 -0.018L16.62 9.064A0.482 0.482 0 0 0 15.921 8.402l-0.802 0.844"/>
+    <g mask="url(#j)">
+      <path d="M15.791 11.646C16.701 7.891 14.393 4.11 10.64 3.202 6.884 2.292 3.103 4.598 2.194 8.353a6.997 6.997 0 0 0 1.903 6.643A6.954 6.954 0 0 0 9.066 17 1 1 0 1 0 9.047 15a5.02 5.02 0 1 1 4.6 -3.242"/>
+    </g>
+    <g mask="url(#k)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#l)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="72" y="0">
+  <svg x="54">
     <defs>
-      <clipPath id="v">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="y" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="p" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      </mask>
+      <mask id="o" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <mask id="x" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="u" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="m" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="w" mask-type="alpha">
-        <g filter="url(#u)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L5.781 6.078s4.007-2.51 4.243-3.276c.236-.765 2.054-4.098 2.054-4.098l-13.14-6.329z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="n" mask-type="alpha">
+        <g filter="url(#m)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-0.533 9.56 6.45 8.28l5.112 -5.842L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#v)">
-      <path d="M14.452 10.315l-.275-.429a.2.2 0 0 0-.337.216l.54.842a.2.2 0 0 0 .276.06l.842-.54a.2.2 0 0 0-.216-.336l-.407.26"/>
-      <g mask="url(#w)">
-        <path d="M15.911 11.032a6.994 6.994 0 0 0-5.886-7.95 6.994 6.994 0 0 0-5.462 12.332 6.954 6.954 0 0 0 5.128 1.552 1 1 0 0 0-.197-1.99 5.02 5.02 0 1 1 4.292-3.64"/>
-      </g>
-      <g mask="url(#x)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#y)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <path d="M14.43 10.23L14.115 9.76a0.222 0.222 0 0 0 -0.37 0.247l0.618 0.923a0.222 0.222 0 0 0 0.308 0.062l0.924 -0.618a0.222 0.222 0 0 0 -0.247 -0.37l-0.447 0.3"/>
+    <g mask="url(#n)">
+      <path d="M14.664 14.093C16.926 10.961 16.22 6.59 13.089 4.327 9.957 2.065 5.585 2.77 3.323 5.901A6.997 6.997 0 0 0 2.57 12.77a6.954 6.954 0 0 0 3.842 3.735 1 1 0 1 0 0.74 -1.858 5.02 5.02 0 1 1 5.485 -1.26"/>
+    </g>
+    <g mask="url(#o)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#p)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="90" y="0">
+  <svg x="72">
     <defs>
-      <clipPath id="A">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="D" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="t" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      </mask>
+      <mask id="s" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <mask id="C" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.075 1.705) scale(.57983)"/>
-      </mask>
-      <filter id="z" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="q" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="B" mask-type="alpha">
-        <g filter="url(#z)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625l6 14.031s5.418-3.278 5.889-4.809c.471-1.53 1.766-6.628 1.766-6.628L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="r" mask-type="alpha">
+        <g filter="url(#q)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-3.768 7.437s8.523 1.248 8.575 1.078C4.86 8.345 11.625 2.301 11.625 2.301L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#A)">
-      <path d="M14.59 11.116" opacity=".794"/>
-      <g opacity=".794" mask="url(#B)">
-        <path d="M15.633 12.198a6.994 6.994 0 0 0-4.442-8.839 6.994 6.994 0 0 0-7.487 11.218 6.954 6.954 0 0 0 4.787 2.405 1 1 0 0 0 .146-1.995 5.02 5.02 0 1 1 4.851-2.853"/>
-      </g>
-      <g mask="url(#C)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#D)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity=".716">
+      <path d="M14.552 11.293" opacity="1"/>
+    </g>
+    <g mask="url(#r)" opacity=".943">
+      <path d="M12.694 15.932c3.28 -2.043 4.28 -6.358 2.237 -9.636C12.888 3.016 8.575 2.015 5.296 4.058A6.997 6.997 0 0 0 2 10.132a6.954 6.954 0 0 0 2.143 4.91 1 1 0 1 0 1.387 -1.44 5.02 5.02 0 1 1 5.554 0.909" opacity="1"/>
+    </g>
+    <g mask="url(#s)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#t)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="108" y="0">
+  <svg x="90">
     <defs>
-      <clipPath id="F">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="I" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="x" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      </mask>
+      <mask id="w" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <mask id="H" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.098 1.705) scale(.72448)"/>
-      </mask>
-      <filter id="E" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="u" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="G" mask-type="alpha">
-        <g filter="url(#E)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L4.094 6.734s6.83-4.047 7.536-6.343c.707-2.295 1.48-9.157 1.48-9.157L-1.063-7.624z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="v" mask-type="alpha">
+        <g filter="url(#u)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-7.003 5.314S3.06 9.09 3.165 8.75C3.269 8.41 11.689 2.164 11.689 2.164L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#F)">
-      <path d="M14.318 12.055" opacity=".353"/>
-      <g opacity=".353" mask="url(#G)">
-        <path d="M15.16 13.298a6.994 6.994 0 0 0-2.867-9.467A6.994 6.994 0 0 0 3 13.605a6.954 6.954 0 0 0 4.306 3.187 1 1 0 0 0 .484-1.94 5.02 5.02 0 1 1 5.267-1.983"/>
-      </g>
-      <g mask="url(#H)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#I)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity=".19">
+      <path d="M14.13 12.487" opacity="1"/>
+    </g>
+    <g mask="url(#v)" opacity=".749">
+      <path d="M10.175 16.888c3.809 -0.65 6.368 -4.265 5.717 -8.073C15.242 5.007 11.628 2.447 7.819 3.098A6.997 6.997 0 0 0 2.472 7.474a6.954 6.954 0 0 0 0.125 5.356 1 1 0 1 0 1.829 -0.808 5.02 5.02 0 1 1 4.797 2.943" opacity="1"/>
+    </g>
+    <g mask="url(#w)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#x)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="126" y="0">
+  <svg x="108">
     <defs>
-      <clipPath id="K">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="N" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="B" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-      <mask id="M" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.149 1.705) scale(1.05114)"/>
-      </mask>
-      <filter id="J" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="L" mask-type="alpha">
-        <g filter="url(#J)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
-        </g>
+      <mask id="A" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.083 1.705) scale(.63042)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#K)">
-      <path d="M13.889 12.933" opacity=".076"/>
-      <g opacity=".076" mask="url(#L)">
-        <path d="M14.507 14.302a6.994 6.994 0 0 0-1.209-9.818 6.994 6.994 0 0 0-10.826 8.044 6.954 6.954 0 0 0 3.7 3.875 1 1 0 0 0 .807-1.829 5.02 5.02 0 1 1 5.528-1.054"/>
-      </g>
-      <g mask="url(#M)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#N)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="144" y="0">
-    <defs>
-      <clipPath id="P">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="S" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
-      </mask>
-      <mask id="R" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.251 1.705) scale(1.70603)"/>
-      </mask>
-      <filter id="O" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="y" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="Q" mask-type="alpha">
-        <g filter="url(#O)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="z" mask-type="alpha">
+        <g filter="url(#y)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625l-9.176 10.816S1.365 9.495 1.522 8.985c0.157 -0.51 10.23 -6.959 10.23 -6.959L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#P)">
-      <path d="M13.316 13.724" opacity="0"/>
-      <g opacity="0" mask="url(#Q)">
-        <path d="M13.691 15.18a6.994 6.994 0 0 0 .486-9.881 6.994 6.994 0 0 0-12.04 6.077 6.954 6.954 0 0 0 2.982 4.45 1 1 0 0 0 1.109-1.664 5.02 5.02 0 1 1 5.627-.095"/>
-      </g>
-      <g mask="url(#R)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#S)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity=".003">
+      <path fill-opacity="1" d="M13.455 13.557" opacity="1"/>
+    </g>
+    <g mask="url(#z)" opacity=".485">
+      <path d="M7.482 16.821c3.771 0.839 7.508 -1.54 8.346 -5.31C16.667 7.739 14.29 4.003 10.518 3.164A6.997 6.997 0 0 0 3.913 5.192a6.954 6.954 0 0 0 -1.91 5.005 1 1 0 1 0 1.999 -0.056A5.02 5.02 0 1 1 7.33 14.68" opacity="1"/>
+    </g>
+    <g mask="url(#A)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#B)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="162" y="0">
+  <svg x="126">
     <defs>
-      <clipPath id="U">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="X" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="F" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      </mask>
+      <mask id="E" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.144 1.705) scale(1.01976)"/>
       </mask>
-      <mask id="W" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.415 1.705) scale(2.75815)"/>
-      </mask>
-      <filter id="T" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="C" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="V" mask-type="alpha">
-        <g filter="url(#T)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="D" mask-type="alpha">
+        <g filter="url(#C)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625l-12.412 8.693S-0.33 9.9 -0.12 9.22C0.09 8.54 11.816 1.89 11.816 1.89L-1.062 -7.626z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#U)">
-      <path d="M12.617 14.407" opacity="0"/>
-      <g opacity="0" mask="url(#V)">
-        <path d="M12.738 15.904a6.994 6.994 0 0 0 2.166-9.652 6.994 6.994 0 0 0-12.902 3.931 6.954 6.954 0 0 0 2.18 4.895 1 1 0 0 0 1.376-1.45 5.02 5.02 0 1 1 5.56.868"/>
-      </g>
-      <g mask="url(#W)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#X)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M12.56 14.453" opacity="1"/>
+    </g>
+    <g mask="url(#D)" opacity=".256">
+      <path fill-opacity="1" d="M5.014 15.74c3.174 2.203 7.532 1.415 9.735 -1.758C16.952 10.808 16.166 6.45 12.992 4.247A6.997 6.997 0 0 0 6.11 3.624 6.954 6.954 0 0 0 2.448 7.535 1 1 0 1 0 4.32 8.24a5.02 5.02 0 1 1 1.363 5.46" opacity="1"/>
+    </g>
+    <g mask="url(#E)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#F)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="180" y="0">
+  <svg x="144">
     <defs>
-      <clipPath id="Z">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="ac" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="J" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      </mask>
+      <mask id="I" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.31 1.705) scale(2.08788)"/>
       </mask>
-      <mask id="ab" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.576 1.705) scale(3.7901)"/>
-      </mask>
-      <filter id="Y" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="G" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="aa" mask-type="alpha">
-        <g filter="url(#Y)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="H" mask-type="alpha">
+        <g filter="url(#G)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625l-15.647 6.57s14.684 11.36 14.946 10.51C-1.501 8.605 11.879 1.752 11.879 1.752L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#Z)">
-      <path d="M11.81 14.96" opacity="0"/>
-      <g opacity="0" mask="url(#aa)">
-        <path d="M11.675 16.456a6.994 6.994 0 0 0 3.782-9.14 6.994 6.994 0 0 0-13.383 1.67 6.954 6.954 0 0 0 1.31 5.194 1 1 0 0 0 1.605-1.194 5.02 5.02 0 1 1 5.33 1.805"/>
-      </g>
-      <g mask="url(#ab)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#ac)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M11.49 15.128" opacity="1"/>
+    </g>
+    <g mask="url(#H)" opacity=".104">
+      <path fill-opacity="1" d="M3.139 13.805c2.104 3.24 6.437 4.16 9.676 2.056 3.24 -2.104 4.161 -6.436 2.057 -9.676A6.997 6.997 0 0 0 8.737 3.005 6.954 6.954 0 0 0 3.867 5.24 1 1 0 1 0 5.333 6.6 5.02 5.02 0 1 1 4.53 12.17" opacity="1"/>
+    </g>
+    <g mask="url(#I)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#J)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="198" y="0">
+  <svg x="162">
     <defs>
-      <clipPath id="ae">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="ah" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="N" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-      <mask id="ag" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.696 1.705) scale(4.56057)"/>
-      </mask>
-      <filter id="ad" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="af" mask-type="alpha">
-        <g filter="url(#ad)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
-        </g>
+      <mask id="M" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.556 1.705) scale(3.66295)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#ae)">
-      <path d="M10.923 15.367" opacity="0"/>
-      <g opacity="0" mask="url(#af)">
-        <path d="M10.533 16.818a6.994 6.994 0 0 0 5.288-8.36 6.994 6.994 0 0 0-13.472-.64 6.954 6.954 0 0 0 .404 5.342 1 1 0 0 0 1.785-.903 5.02 5.02 0 1 1 4.944 2.689"/>
-      </g>
-      <g mask="url(#ag)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#ah)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="216" y="0">
-    <defs>
-      <clipPath id="aj">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="am" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
-      </mask>
-      <mask id="al" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.786 1.705) scale(5.13258)"/>
-      </mask>
-      <filter id="ai" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="K" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="ak" mask-type="alpha">
-        <g filter="url(#ai)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="L" mask-type="alpha">
+        <g filter="url(#K)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625l-16.992 2.574s14.041 16.217 14.355 15.197C-3.385 9.126 11.942 1.615 11.942 1.615l-13.004 -9.24z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#aj)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#ak)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#al)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#am)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M10.297 15.551" opacity="1"/>
+    </g>
+    <g mask="url(#L)" opacity=".023">
+      <path fill-opacity="1" d="M2.135 11.305c0.722 3.795 4.384 6.286 8.179 5.563 3.796 -0.721 6.287 -4.383 5.565 -8.178A6.997 6.997 0 0 0 11.403 3.425 6.954 6.954 0 0 0 6.05 3.652a1 1 0 1 0 0.843 1.813A5.02 5.02 0 1 1 4.04 10.317" opacity="1"/>
+    </g>
+    <g mask="url(#M)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#N)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="234" y="0">
+  <svg x="180">
     <defs>
-      <clipPath id="ao">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="ar" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      <mask id="R" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
       </mask>
-      <mask id="aq" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.855 1.705) scale(5.57409)"/>
-      </mask>
-      <filter id="an" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="ap" mask-type="alpha">
-        <g filter="url(#an)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
-        </g>
+      <mask id="Q" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.728 1.705) scale(4.76569)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#ao)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#ap)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aq)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#ar)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="252" y="0">
-    <defs>
-      <clipPath id="at">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aw" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.21 18.622) scale(.57983)"/>
-      </mask>
-      <mask id="av" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.91 1.705) scale(5.92587)"/>
-      </mask>
-      <filter id="as" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="O" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="au" mask-type="alpha">
-        <g filter="url(#as)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="P" mask-type="alpha">
+        <g filter="url(#O)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625l-15.87 5.508S0.623 10.795 0.99 9.605C1.356 8.415 12.005 1.478 12.005 1.478L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#at)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#au)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#av)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aw)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#P)" opacity="0">
+      <path fill-opacity="1" d="M2.152 8.61c-0.768 3.787 1.68 7.478 5.466 8.245 3.786 0.768 7.478 -1.679 8.245 -5.465A6.997 6.997 0 0 0 13.712 4.823 6.954 6.954 0 0 0 8.672 3.007a1 1 0 1 0 0.094 1.997A5.02 5.02 0 1 1 4.29 8.417" opacity="1"/>
+    </g>
+    <g mask="url(#Q)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#R)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="270" y="0">
+  <svg x="198">
     <defs>
-      <clipPath id="ay">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aB" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.233 18.622) scale(.72448)"/>
+      <mask id="V" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      </mask>
+      <mask id="U" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.842 1.705) scale(5.49114)"/>
       </mask>
-      <mask id="aA" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.954 1.705) scale(6.21239)"/>
-      </mask>
-      <filter id="ax" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="S" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="az" mask-type="alpha">
-        <g filter="url(#ax)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="T" mask-type="alpha">
+        <g filter="url(#S)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-15.81 0.818S5.26 10.425 5.679 9.064c0.418 -1.36 6.39 -7.724 6.39 -7.724L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#ay)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#az)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aA)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aB)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#T)" opacity="0">
+      <path fill-opacity="1" d="M3.186 6.123c-2.143 3.214 -1.273 7.557 1.941 9.7 3.215 2.143 7.557 1.275 9.7 -1.94A6.997 6.997 0 0 0 15.32 6.991 6.954 6.954 0 0 0 11.341 3.403a1 1 0 1 0 -0.669 1.885A5.02 5.02 0 1 1 5.238 6.752" opacity="1"/>
+    </g>
+    <g mask="url(#U)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#V)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="288" y="0">
+  <svg x="216">
     <defs>
-      <clipPath id="aD">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aG" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.284 18.622) scale(1.05114)"/>
+      <mask id="Z" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54158)"/>
+      </mask>
+      <mask id="Y" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.922 1.705) scale(6.00555)"/>
       </mask>
-      <mask id="aF" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.991 1.705) scale(6.44921)"/>
-      </mask>
-      <filter id="aC" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="W" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="aE" mask-type="alpha">
-        <g filter="url(#aC)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="X" mask-type="alpha">
+        <g filter="url(#W)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#aD)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#aE)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aF)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aG)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#X)" opacity="0">
+      <path fill-opacity="1" d="M5.086 4.211c-3.2 2.165 -4.039 6.514 -1.874 9.713 2.165 3.2 6.513 4.04 9.713 1.875A6.997 6.997 0 0 0 15.99 9.605 6.954 6.954 0 0 0 13.663 4.78a1 1 0 1 0 -1.332 1.49A5.02 5.02 0 1 1 6.747 5.57" opacity="1"/>
+    </g>
+    <g mask="url(#Y)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#Z)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="306" y="0">
+  <svg x="234">
     <defs>
-      <clipPath id="aI">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aL" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.386 18.622) scale(1.70603)"/>
+      <mask id="ad" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.22 18.622) scale(.64234)"/>
+      </mask>
+      <mask id="ac" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.982 1.705) scale(6.38828)"/>
       </mask>
-      <mask id="aK" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.022 1.705) scale(6.6468)"/>
-      </mask>
-      <filter id="aH" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aa" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="aJ" mask-type="alpha">
-        <g filter="url(#aH)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="ab" mask-type="alpha">
+        <g filter="url(#aa)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#aI)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#aJ)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aK)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aL)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#ab)" opacity="0">
+      <path fill-opacity="1" d="M7.567 3.16C3.785 3.955 1.364 7.664 2.157 11.444c0.794 3.781 4.501 6.203 8.282 5.41a6.997 6.997 0 0 0 5.18 -4.574A6.954 6.954 0 0 0 15.292 6.931a1 1 0 1 0 -1.797 0.877A5.02 5.02 0 1 1 8.59 5.048" opacity="1"/>
+    </g>
+    <g mask="url(#ac)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#ad)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="324" y="0">
+  <svg x="252">
     <defs>
-      <clipPath id="aN">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aQ" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.55 18.622) scale(2.75815)"/>
+      <mask id="ah" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.285 18.622) scale(1.0575)"/>
+      </mask>
+      <mask id="ag" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.027 1.705) scale(6.68062)"/>
       </mask>
-      <mask id="aP" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.048 1.705) scale(6.81253)"/>
-      </mask>
-      <filter id="aM" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="ae" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="aO" mask-type="alpha">
-        <g filter="url(#aM)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="af" mask-type="alpha">
+        <g filter="url(#ae)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#aN)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#aO)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aP)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aQ)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#af)" opacity="0">
+      <path fill-opacity="1" d="M7.36 3.207C3.603 4.115 1.295 7.896 2.204 11.65c0.907 3.756 4.687 6.064 8.442 5.156a6.997 6.997 0 0 0 5.038 -4.73 6.954 6.954 0 0 0 -0.49 -5.335 1 1 0 1 0 -1.77 0.93A5.02 5.02 0 1 1 8.44 5.062" opacity="1"/>
     </g>
-  </svg>
-  <svg width="18" height="20" x="342" y="0">
-    <defs>
-      <clipPath id="aS">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="aV" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.711 18.622) scale(3.7901)"/>
-      </mask>
-      <mask id="aU" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.07 1.705) scale(6.95179)"/>
-      </mask>
-      <filter id="aR" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="aT" mask-type="alpha">
-        <g filter="url(#aR)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
-        </g>
-      </mask>
-    </defs>
-    <g clip-path="url(#aS)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#aT)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aU)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#aV)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g mask="url(#ag)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#ah)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="360" y="0">
+  <svg x="270">
     <defs>
-      <clipPath id="aX">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="ba" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.831 18.622) scale(4.56057)"/>
+      <mask id="al" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.46 18.622) scale(2.17657)"/>
       </mask>
-      <mask id="aZ" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.088 1.705) scale(7.06864)"/>
-      </mask>
-      <filter id="aW" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="aY" mask-type="alpha">
-        <g filter="url(#aW)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
-        </g>
+      <mask id="ak" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.062 1.705) scale(6.90661)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#aX)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#aY)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#aZ)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#ba)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="378" y="0">
-    <defs>
-      <clipPath id="bc">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bf" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.92 18.622) scale(5.13258)"/>
-      </mask>
-      <mask id="be" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.103 1.705) scale(7.16624)"/>
-      </mask>
-      <filter id="bb" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="ai" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bd" mask-type="alpha">
-        <g filter="url(#bb)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="aj" mask-type="alpha">
+        <g filter="url(#ai)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bc)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bd)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#be)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bf)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#aj)" opacity="0">
+      <path fill-opacity="1" d="M7.153 3.26C3.427 4.283 1.236 8.132 2.258 11.857c1.022 3.726 4.87 5.918 8.595 4.897a6.997 6.997 0 0 0 4.892 -4.88A6.954 6.954 0 0 0 15.094 6.553a1 1 0 1 0 -1.74 0.984A5.02 5.02 0 1 1 8.29 5.082" opacity="1"/>
+    </g>
+    <g mask="url(#ak)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#al)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="396" y="0">
+  <svg x="288">
     <defs>
-      <clipPath id="bh">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bk" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.99 18.622) scale(5.57409)"/>
+      <mask id="ap" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.704 18.622) scale(3.74067)"/>
       </mask>
-      <mask id="bj" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.116 1.705) scale(7.2471)"/>
-      </mask>
-      <filter id="bg" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="bi" mask-type="alpha">
-        <g filter="url(#bg)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
-        </g>
+      <mask id="ao" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.09 1.705) scale(7.08151)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#bh)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bi)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#bj)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bk)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="414" y="0">
-    <defs>
-      <clipPath id="bm">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bp" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.044 18.622) scale(5.92587)"/>
-      </mask>
-      <mask id="bo" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.126 1.705) scale(7.3132)"/>
-      </mask>
-      <filter id="bl" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="am" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bn" mask-type="alpha">
-        <g filter="url(#bl)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="an" mask-type="alpha">
+        <g filter="url(#am)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bm)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bn)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#bo)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bp)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#an)" opacity="0">
+      <path fill-opacity="1" d="M6.95 3.32C3.255 4.454 1.182 8.368 2.316 12.06c1.135 3.694 5.048 5.768 8.741 4.633a6.997 6.997 0 0 0 4.74 -5.027A6.954 6.954 0 0 0 14.987 6.37a1 1 0 1 0 -1.71 1.037A5.02 5.02 0 1 1 8.14 5.105" opacity="1"/>
+    </g>
+    <g mask="url(#ao)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#ap)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="432" y="0">
+  <svg x="306">
     <defs>
-      <clipPath id="br">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bu" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.09 18.622) scale(6.21239)"/>
+      <mask id="at" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.871 18.622) scale(4.81527)"/>
+      </mask>
+      <mask id="as" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.11 1.705) scale(7.21565)"/>
       </mask>
-      <mask id="bt" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.134 1.705) scale(7.36622)"/>
-      </mask>
-      <filter id="bq" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aq" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bs" mask-type="alpha">
-        <g filter="url(#bq)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="ar" mask-type="alpha">
+        <g filter="url(#aq)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#br)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bs)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#bt)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bu)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#ar)" opacity="0">
+      <path fill-opacity="1" d="M6.747 3.385C3.09 4.632 1.137 8.607 2.383 12.263c1.247 3.657 5.22 5.61 8.878 4.365a6.997 6.997 0 0 0 4.585 -5.17A6.954 6.954 0 0 0 14.873 6.19a1 1 0 1 0 -1.678 1.088A5.02 5.02 0 1 1 7.992 5.134" opacity="1"/>
+    </g>
+    <g mask="url(#as)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#at)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="450" y="0">
+  <svg x="324">
     <defs>
-      <clipPath id="bw">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bz" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.126 18.622) scale(6.44921)"/>
+      <mask id="ax" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.982 18.622) scale(5.52532)"/>
+      </mask>
+      <mask id="aw" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.126 1.705) scale(7.31635)"/>
       </mask>
-      <mask id="by" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.14 1.705) scale(7.40751)"/>
-      </mask>
-      <filter id="bv" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="au" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bx" mask-type="alpha">
-        <g filter="url(#bv)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="av" mask-type="alpha">
+        <g filter="url(#au)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bw)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bx)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#by)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bz)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#av)" opacity="0">
+      <path fill-opacity="1" d="M6.547 3.457c-3.618 1.357 -5.45 5.39 -4.092 9.006 1.357 3.618 5.389 5.45 9.006 4.093a6.997 6.997 0 0 0 4.427 -5.306A6.954 6.954 0 0 0 14.754 6.013 1 1 0 1 0 13.11 7.152 5.02 5.02 0 1 1 7.844 5.167" opacity="1"/>
+    </g>
+    <g mask="url(#aw)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#ax)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="468" y="0">
+  <svg x="342">
     <defs>
-      <clipPath id="bB">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bE" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.157 18.622) scale(6.6468)"/>
+      <mask id="aB" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.06 18.622) scale(6.03058)"/>
+      </mask>
+      <mask id="aA" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.138 1.705) scale(7.38904)"/>
       </mask>
-      <mask id="bD" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.145 1.705) scale(7.43823)"/>
-      </mask>
-      <filter id="bA" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="ay" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bC" mask-type="alpha">
-        <g filter="url(#bA)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="az" mask-type="alpha">
+        <g filter="url(#ay)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bB)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bC)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#bD)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bE)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#az)" opacity="0">
+      <path fill-opacity="1" d="M6.349 3.535C2.774 5 1.067 9.088 2.533 12.66 4 16.236 8.085 17.944 11.66 16.478a6.997 6.997 0 0 0 4.262 -5.439A6.954 6.954 0 0 0 14.63 5.84a1 1 0 1 0 -1.608 1.188A5.02 5.02 0 1 1 7.698 5.204" opacity="1"/>
+    </g>
+    <g mask="url(#aA)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aB)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="486" y="0">
+  <svg x="360">
     <defs>
-      <clipPath id="bG">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bJ" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.183 18.622) scale(6.81253)"/>
+      <mask id="aF" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.12 18.622) scale(6.40725)"/>
+      </mask>
+      <mask id="aE" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.145 1.705) scale(7.43784)"/>
       </mask>
-      <mask id="bI" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.149 1.705) scale(7.45936)"/>
-      </mask>
-      <filter id="bF" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aC" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bH" mask-type="alpha">
-        <g filter="url(#bF)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="aD" mask-type="alpha">
+        <g filter="url(#aC)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bG)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bH)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#bI)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bJ)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#aD)" opacity="0">
+      <path fill-opacity="1" d="M6.153 3.618C2.625 5.193 1.043 9.33 2.617 12.857c1.575 3.528 5.71 5.111 9.238 3.537a6.997 6.997 0 0 0 4.096 -5.566A6.954 6.954 0 0 0 14.5 5.671a1 1 0 1 0 -1.57 1.237A5.02 5.02 0 1 1 7.553 5.246" opacity="1"/>
+    </g>
+    <g mask="url(#aE)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aF)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="504" y="0">
+  <svg x="378">
     <defs>
-      <clipPath id="bL">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bO" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.204 18.622) scale(6.95179)"/>
+      <mask id="aJ" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.164 18.622) scale(6.69524)"/>
+      </mask>
+      <mask id="aI" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.15 1.705) scale(7.46598)"/>
       </mask>
-      <mask id="bN" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.15 1.705) scale(7.47174)"/>
-      </mask>
-      <filter id="bK" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aG" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bM" mask-type="alpha">
-        <g filter="url(#bK)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="aH" mask-type="alpha">
+        <g filter="url(#aG)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bL)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bM)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#bN)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bO)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#aH)" opacity="0">
+      <path fill-opacity="1" d="M5.96 3.708C2.482 5.389 1.026 9.572 2.707 13.05c1.681 3.478 5.863 4.935 9.342 3.254a6.997 6.997 0 0 0 3.924 -5.687A6.954 6.954 0 0 0 14.367 5.505 1 1 0 1 0 12.834 6.79 5.02 5.02 0 1 1 7.409 5.292" opacity="1"/>
+    </g>
+    <g mask="url(#aI)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aJ)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="522" y="0">
+  <svg x="396">
     <defs>
-      <clipPath id="bQ">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bT" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.223 18.622) scale(7.06864)"/>
+      <mask id="aN" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.2 18.622) scale(6.91795)"/>
       </mask>
-      <mask id="bS" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
-      </mask>
-      <filter id="bP" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="bR" mask-type="alpha">
-        <g filter="url(#bP)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
-        </g>
+      <mask id="aM" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.151 1.705) scale(7.47602)"/>
       </mask>
-    </defs>
-    <g clip-path="url(#bQ)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bR)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#bS)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bT)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
-    </g>
-  </svg>
-  <svg width="18" height="20" x="540" y="0">
-    <defs>
-      <clipPath id="bV">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="bY" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.238 18.622) scale(7.16624)"/>
-      </mask>
-      <mask id="bX" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
-      </mask>
-      <filter id="bU" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aK" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="bW" mask-type="alpha">
-        <g filter="url(#bU)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="aL" mask-type="alpha">
+        <g filter="url(#aK)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#bV)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#bW)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#bX)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#bY)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#aL)" opacity="0">
+      <path fill-opacity="1" d="M5.77 3.803C2.345 5.59 1.016 9.815 2.803 13.24c1.786 3.425 6.01 4.755 9.436 2.968a6.997 6.997 0 0 0 3.75 -5.804 6.954 6.954 0 0 0 -1.761 -5.06 1 1 0 1 0 -1.493 1.33A5.02 5.02 0 1 1 7.266 5.344" opacity="1"/>
+    </g>
+    <g mask="url(#aM)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aN)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="558" y="0">
+  <svg x="414">
     <defs>
-      <clipPath id="ca">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cd" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.25 18.622) scale(7.2471)"/>
+      <mask id="aR" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.226 18.622) scale(7.09027)"/>
+      </mask>
+      <mask id="aQ" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
       </mask>
-      <mask id="cc" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
-      </mask>
-      <filter id="bZ" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aO" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cb" mask-type="alpha">
-        <g filter="url(#bZ)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="aP" mask-type="alpha">
+        <g filter="url(#aO)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#ca)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#cb)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#cc)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cd)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#aP)" opacity="0">
+      <path fill-opacity="1" d="M5.583 3.904c-3.37 1.89 -4.569 6.154 -2.679 9.523 1.89 3.37 6.152 4.57 9.522 2.68a6.997 6.997 0 0 0 3.571 -5.916A6.954 6.954 0 0 0 14.083 5.187a1 1 0 1 0 -1.452 1.375A5.02 5.02 0 1 1 7.125 5.398" opacity="1"/>
+    </g>
+    <g mask="url(#aQ)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aR)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="576" y="0">
+  <svg x="432">
     <defs>
-      <clipPath id="cf">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="ci" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.26 18.622) scale(7.3132)"/>
+      <mask id="aV" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.247 18.622) scale(7.2223)"/>
+      </mask>
+      <mask id="aU" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
       </mask>
-      <mask id="ch" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
-      </mask>
-      <filter id="ce" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aS" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cg" mask-type="alpha">
-        <g filter="url(#ce)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="aT" mask-type="alpha">
+        <g filter="url(#aS)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#cf)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#cg)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#ch)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#ci)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#aT)" opacity="0">
+      <path fill-opacity="1" d="M5.4 4.011c-3.311 1.991 -4.38 6.29 -2.389 9.6 1.991 3.31 6.289 4.38 9.6 2.389A6.997 6.997 0 0 0 16 9.978 6.954 6.954 0 0 0 13.935 5.035a1 1 0 1 0 -1.41 1.418A5.02 5.02 0 1 1 6.985 5.457" opacity="1"/>
+    </g>
+    <g mask="url(#aU)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aV)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="594" y="0">
+  <svg x="450">
     <defs>
-      <clipPath id="ck">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cn" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.27 18.622) scale(7.36622)"/>
+      <mask id="aZ" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.262 18.622) scale(7.32127)"/>
+      </mask>
+      <mask id="aY" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
       </mask>
-      <mask id="cm" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
-      </mask>
-      <filter id="cj" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="aW" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cl" mask-type="alpha">
-        <g filter="url(#cj)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="aX" mask-type="alpha">
+        <g filter="url(#aW)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#ck)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#cl)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#cm)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cn)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g opacity="0">
+      <path fill-opacity="1" d="M9.978 15.616" opacity="1"/>
+    </g>
+    <g mask="url(#aX)" opacity="0">
+      <path fill-opacity="1" d="M5.219 4.123C1.97 6.214 1.033 10.543 3.124 13.791c2.09 3.249 6.419 4.187 9.667 2.096a6.997 6.997 0 0 0 3.205 -6.122A6.954 6.954 0 0 0 13.781 4.887a1 1 0 1 0 -1.366 1.46A5.02 5.02 0 1 1 6.849 5.52" opacity="1"/>
+    </g>
+    <g mask="url(#aY)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#aZ)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
-  <svg width="18" height="20" x="612" y="0">
+  <svg x="468">
     <defs>
-      <clipPath id="cp">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cs" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.276 18.622) scale(7.40751)"/>
+      <mask id="bd" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.204 18.622) scale(.54135)"/>
+      </mask>
+      <mask id="bc" mask-type="alpha">
+        <path d="M0 -2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1 -2.906 0 2.907 2.907 0 0 1 0 -2.906z" transform="translate(.07 1.705) scale(.54135)"/>
       </mask>
-      <mask id="cr" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(1.151 1.705) scale(7.47609)"/>
-      </mask>
-      <filter id="co" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
+      <filter id="ba" width="100%" height="100%" x="0%" y="0%" filterUnits="objectBoundingBox">
+        <feColorMatrix color-interpolation-filters="sRGB" type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
       </filter>
-      <mask id="cq" mask-type="alpha">
-        <g filter="url(#co)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="block" transform="translate(9.425 14.172) scale(.54135)"/>
+      <mask id="bb" mask-type="alpha">
+        <g filter="url(#ba)">
+          <path fill="#fff" d="M0 0h18v20H0z" opacity="0"/>
+          <path d="M-1.062 -7.625L-14.689 3.751s24.583 6.303 25.054 4.773c0.471 -1.53 1.767 -7.321 1.767 -7.321L-1.062 -7.625z" display="none" transform="translate(9.425 14.172) scale(.54135)"/>
         </g>
       </mask>
     </defs>
-    <g clip-path="url(#cp)">
-      <path d="M9.978 15.616" opacity="0"/>
-      <g opacity="0" mask="url(#cq)">
-        <path d="M9.346 16.98a6.994 6.994 0 0 0 6.638-7.335A6.994 6.994 0 0 0 2.819 6.714a6.954 6.954 0 0 0-.513 5.333 1 1 0 0 0 1.912-.585 5.02 5.02 0 1 1 4.412 3.493"/>
-      </g>
-      <g mask="url(#cr)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cs)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <path d="M13.549 8H11a1 1 0 0 0 0 2h5a1 1 0 0 0 1 -1V4a1 1 0 0 0 -2 0v2.418"/>
+    <g mask="url(#bb)">
+      <path d="M15 6.418C13.019 3.101 8.724 2.019 5.408 4c-3.317 1.981 -4.4 6.275 -2.419 9.592A6.997 6.997 0 0 0 9 17a6.954 6.954 0 0 0 4.95 -2.05 1 1 0 1 0 -1.414 -1.414A5.02 5.02 0 1 1 13.549 8"/>
     </g>
-  </svg>
-  <svg width="18" height="20" x="630" y="0">
-    <defs>
-      <clipPath id="cu">
-        <path d="M0 0h18v20H0z"/>
-      </clipPath>
-      <mask id="cx" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.204 18.622) scale(.54135)"/>
-      </mask>
-      <mask id="cw" mask-type="alpha">
-        <path fill="#0005FF" d="M0-2.906A2.907 2.907 0 0 1 2.906 0 2.907 2.907 0 0 1 0 2.906 2.907 2.907 0 0 1-2.906 0 2.907 2.907 0 0 1 0-2.906z" transform="translate(.07 1.705) scale(.54135)"/>
-      </mask>
-      <filter id="ct" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
-        <feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1"/>
-      </filter>
-      <mask id="cv" mask-type="alpha">
-        <g filter="url(#ct)">
-          <path fill="#fff" opacity="0" d="M0 0h18v20H0z"/>
-          <path fill="#0005FF" d="M-1.062-7.625L3.25 7.062s8.241-4.815 9.183-7.876c.942-3.061 1.192-11.686 1.192-11.686L-1.062-7.625z" display="none" transform="translate(9.425 14.172) scale(.54135)"/>
-        </g>
-      </mask>
-    </defs>
-    <g clip-path="url(#cu)">
-      <path d="M13.549 8H11a1 1 0 0 0 0 2h5a1 1 0 0 0 1-1V4a1 1 0 0 0-2 0v2.418"/>
-      <g mask="url(#cv)">
-        <path d="M15 6.418A6.994 6.994 0 0 0 5.408 4 6.994 6.994 0 0 0 9 17a6.954 6.954 0 0 0 4.95-2.05 1 1 0 0 0-1.414-1.414A5.02 5.02 0 1 1 13.549 8"/>
-      </g>
-      <g mask="url(#cw)">
-        <path d="M9 11.413l5.293 5.293a.999.999 0 0 0 1.414-1.414l-5.293-5.293"/>
-        <path d="M10.973 10.558L3.707 3.293a1 1 0 0 0-1.414 1.414l7.266 7.265"/>
-      </g>
-      <g mask="url(#cx)">
-        <path d="M9.285 8.301l-6.992 6.992a1 1 0 1 0 1.414 1.414l6.992-6.992"/>
-        <path d="M10.413 10l5.293-5.293a.999.999 0 0 0-1.414-1.414L8.999 8.586"/>
-      </g>
+    <g mask="url(#bc)">
+      <path d="M9 11.413l5.293 5.293a0.999 0.999 0 0 0 1.414 -0.024 1.001 1.001 0 0 0 0 -1.39L10.414 9.999"/>
+      <path d="M10.973 10.558L3.707 3.293A1 1 0 0 0 2.293 3.317a1.001 1.001 0 0 0 0 1.39l7.266 7.265"/>
+    </g>
+    <g mask="url(#bd)">
+      <path d="M9.285 8.301l-6.992 6.992a1 1 0 0 0 -0.025 1.414 1 1 0 0 0 1.439 0l6.992 -6.992"/>
+      <path d="M10.413 10l5.293 -5.293A0.999 0.999 0 0 0 15.682 3.293a1.001 1.001 0 0 0 -1.39 0L8.999 8.586"/>
     </g>
   </svg>
 </svg>
--- a/browser/themes/shared/toolbarbutton-icons.inc.css
+++ b/browser/themes/shared/toolbarbutton-icons.inc.css
@@ -42,123 +42,128 @@ toolbar[brighttext] .toolbarbutton-1 {
   fill: transparent;
 }
 
 @keyframes reload-to-stop {
   from {
     transform: translateX(0);
   }
   to {
-    transform: translateX(-738px);
+    transform: translateX(-450px);
   }
 }
 
 @keyframes reload-to-stop-rtl {
   from {
     transform: scaleX(-1) translateX(0);
   }
   to {
-    transform: scaleX(-1) translateX(-738px);
+    transform: scaleX(-1) translateX(-450px);
   }
 }
 
 @keyframes stop-to-reload {
   from {
     transform: translateX(0);
   }
   to {
-    transform: translateX(-612px);
+    transform: translateX(-450px);
   }
 }
 
 @keyframes stop-to-reload-rtl {
   from {
     transform: scaleX(-1) translateX(0);
   }
   to {
-    transform: scaleX(-1) translateX(-612px);
+    transform: scaleX(-1) translateX(-450px);
   }
 }
 
+#stop-reload-button[animate] > #reload-button,
+#stop-reload-button[animate] > #stop-button {
+  position: relative;
+}
+
 #reload-button > .toolbarbutton-animatable-box,
 #stop-button > .toolbarbutton-animatable-box {
-  position: fixed;
+  position: absolute;
   overflow: hidden;
-  margin-top: -10px; /* Vertically center the 20px tall animatable image */
+  top: calc(50% - 10px); /* Vertically center the 20px tall animatable image */
   /* Since .toolbarbutton-icon uses a different width than the animatable-box,
      we need to set a padding relative to the difference in widths. */
   margin-inline-start: calc((16px + 2 * var(--toolbarbutton-inner-padding) - 18px) / 2);
   /* Set the min- and max- width and height of the box equal to that
      of each frame of the SVG sprite. Setting the width and height via
      the `width` and `height` CSS properties causes an assertion for
      `inline-size less than zero: 'aContainingBlockISize >= 0'` (bug 1379332). */
   min-width: 18px;
   max-width: 18px;
   min-height: 20px;
   max-height: 20px;
 }
 
 #reload-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image,
 #stop-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
-  height: 20px; /* Height of each frame within the SVG sprite */
+  height: var(--toolbarbutton-height); /* Height must be equal to height of toolbarbutton padding-box */
   animation-fill-mode: forwards;
   animation-iteration-count: 1;
   list-style-image: none;
 }
 
 #stop-reload-button[animate] > #reload-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
   background-image: url("chrome://browser/skin/reload-to-stop.svg");
-  width: 756px;
+  width: 468px;
 }
 
 #stop-reload-button[animate] > #reload-button:not([displaystop]) > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
   animation-name: reload-to-stop;
 }
 
 #stop-reload-button[animate] > #reload-button:not([displaystop]):-moz-locale-dir(rtl) > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
   animation-name: reload-to-stop-rtl;
 }
 
 #reload-button:not([displaystop]) > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
-  animation-timing-function: steps(41);
-  animation-duration: 684ms;
+  animation-timing-function: steps(25);
+  animation-duration: 400ms;
 }
 
 #stop-reload-button[animate] > #reload-button[displaystop] + #stop-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
   background-image: url("chrome://browser/skin/stop-to-reload.svg");
-  width: 630px;
+  width: 468px;
 }
 
 #stop-reload-button[animate] > #reload-button[displaystop] + #stop-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
   animation-name: stop-to-reload;
 }
 
 #stop-reload-button[animate] > #reload-button[displaystop] + #stop-button:-moz-locale-dir(rtl) > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
   animation-name: stop-to-reload-rtl;
 }
 
 #reload-button[displaystop] + #stop-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
-  animation-timing-function: steps(34);
-  animation-duration: 600ms;
+  animation-timing-function: steps(25);
+  animation-duration: 400ms;
 }
 
 #reload-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
-  transform: translateX(-738px);
+  transform: translateX(-450px);
 }
 
 #reload-button:-moz-locale-dir(rtl) > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
-  transform: scaleX(-1) translateX(-738px);
+  transform: scaleX(-1) translateX(-450px);
 }
 
 #reload-button[displaystop] + #stop-button > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
-  transform: translateX(-612px);
+  transform: translateX(-450px);
 }
 
 #reload-button[displaystop] + #stop-button:-moz-locale-dir(rtl) > .toolbarbutton-animatable-box > .toolbarbutton-animatable-image {
-  transform: scaleX(-1) translateX(-612px);
+  transform: scaleX(-1) translateX(-450px);
 }
 %endif
 #reload-button {
   list-style-image: url("chrome://browser/skin/reload.svg");
 }
 
 #stop-button {
   list-style-image: url("chrome://browser/skin/stop.svg");
--- a/devtools/client/aboutdebugging/aboutdebugging.css
+++ b/devtools/client/aboutdebugging/aboutdebugging.css
@@ -230,35 +230,45 @@ button {
   width: 100%;
   height: 100%;
 }
 
 .error-page .error-page-details {
   color: gray;
 }
 
+#addons-panel h2 {
+  font-size: 1.5rem;
+  font-weight: bold;
+}
+
 .addon-target-container {
   background: #fff;
   box-shadow: 0 0 1px rgba(0, 0, 0, 0.12);
   list-style-type: none;
+  font-size: 13px;
   margin: 0 0 8px;
   padding: 4px 16px;
   transition: box-shadow 150ms;
 }
 
 .addon-target-container:hover {
   box-shadow: 0 1px 2px rgba(0, 0, 0, 0.24);
 }
 
 .addon-target-container .target {
   align-items: center;
   display: flex;
   margin: 0;
   padding: 16px 0;
-  font-size: 14px;
+}
+
+.addon-target-name {
+  font-size: 15px;
+  font-weight: 600;
 }
 
 .addon-target-actions {
   border-top: 1px solid rgba(0, 0, 0, 0.2);
 }
 
 .addon-target-container .target-icon {
   margin-inline-end: 16px;
@@ -291,17 +301,17 @@ button {
 .addon-target-info-more {
   padding-left: 1ch;
 }
 
 .addon-target-button {
   background: none;
   border: none;
   color: #0087ff;
-  font-size: 14px;
+  font-size: 13px;
   margin: 12px;
   min-width: auto;
   padding: 4px;
   transition: color 150ms;
 }
 
 .addon-target-button:active,
 .addon-target-button:hover,
--- a/devtools/client/aboutdebugging/components/addons/target.js
+++ b/devtools/client/aboutdebugging/components/addons/target.js
@@ -168,17 +168,19 @@ module.exports = createClass({
     return dom.li(
       { className: "addon-target-container", "data-addon-id": target.addonID },
       dom.div({ className: "target" },
         dom.img({
           className: "target-icon",
           role: "presentation",
           src: target.icon
         }),
-        dom.span({ className: "target-name", title: target.name }, target.name)
+        dom.span(
+          { className: "target-name addon-target-name", title: target.name },
+          target.name)
       ),
       showMessages(target),
       dom.dl(
         { className: "addon-target-info" },
         ...filePathForTarget(target),
         ...addonIDforTarget(target),
         ...internalIDForTarget(target),
       ),
--- a/devtools/client/inspector/test/browser.ini
+++ b/devtools/client/inspector/test/browser.ini
@@ -73,16 +73,17 @@ skip-if = os == "mac" # Full keyboard na
 [browser_inspector_highlighter-by-type.js]
 [browser_inspector_highlighter-cancel.js]
 [browser_inspector_highlighter-comments.js]
 [browser_inspector_highlighter-cssgrid_01.js]
 [browser_inspector_highlighter-cssgrid_02.js]
 [browser_inspector_highlighter-cssshape_01.js]
 [browser_inspector_highlighter-cssshape_02.js]
 [browser_inspector_highlighter-cssshape_03.js]
+[browser_inspector_highlighter-cssshape_04.js]
 [browser_inspector_highlighter-csstransform_01.js]
 [browser_inspector_highlighter-csstransform_02.js]
 [browser_inspector_highlighter-embed.js]
 [browser_inspector_highlighter-eyedropper-clipboard.js]
 subsuite = clipboard
 skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32 debug devtools for timeouts
 [browser_inspector_highlighter-eyedropper-csp.js]
 [browser_inspector_highlighter-eyedropper-events.js]
--- a/devtools/client/inspector/test/browser_inspector_highlighter-cssshape_02.js
+++ b/devtools/client/inspector/test/browser_inspector_highlighter-cssshape_02.js
@@ -69,17 +69,17 @@ function* ellipseHasCorrectAttrs(testAct
   let cx = yield testActor.getHighlighterNodeAttribute(
     "shapes-ellipse", "cx", highlighterFront);
   let cy = yield testActor.getHighlighterNodeAttribute(
     "shapes-ellipse", "cy", highlighterFront);
 
   is(rx, 40, "Ellipse highlighter has correct rx");
   is(ry, 30, "Ellipse highlighter has correct ry");
   is(cx, 25, "Ellipse highlighter has correct cx");
-  is(cy, 75, "Ellipse highlighter has correct cy");
+  is(cy, 30, "Ellipse highlighter has correct cy");
 }
 
 function* insetHasCorrectAttrs(testActor, inspector, highlighterFront) {
   info("Checking rect highlighter has correct attributes");
 
   let insetNode = yield getNodeFront("#inset", inspector);
   yield highlighterFront.show(insetNode, {mode: "cssClipPath"});
 
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/test/browser_inspector_highlighter-cssshape_04.js
@@ -0,0 +1,232 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+// Test that shapes are updated correctly on mouse events.
+
+const TEST_URL = URL_ROOT + "doc_inspector_highlighter_cssshapes.html";
+const HIGHLIGHTER_TYPE = "ShapesHighlighter";
+
+add_task(function* () {
+  let inspector = yield openInspectorForURL(TEST_URL);
+  let helper = yield getHighlighterHelperFor(HIGHLIGHTER_TYPE)(inspector);
+  let {testActor} = inspector;
+
+  yield testPolygonMovePoint(testActor, helper);
+  yield testPolygonAddPoint(testActor, helper);
+  yield testPolygonRemovePoint(testActor, helper);
+  yield testCircleMoveCenter(testActor, helper);
+  yield testEllipseMoveRadius(testActor, helper);
+  yield testInsetMoveEdges(testActor, helper);
+
+  helper.finalize();
+});
+
+function* testPolygonMovePoint(testActor, helper) {
+  info("Displaying polygon");
+  yield helper.show("#polygon", {mode: "cssClipPath"});
+  let { mouse, highlightedNode } = helper;
+
+  let points = yield helper.getElementAttribute("shapes-polygon", "points");
+  let [x, y] = points.split(" ")[0].split(",");
+  let quads = yield testActor.getAllAdjustedQuads("#polygon");
+  let { top, left, width, height } = quads.border[0].bounds;
+  x = left + width * x / 100;
+  y = top + height * y / 100;
+  let dx = width / 10;
+  let dy = height / 10;
+
+  info("Moving first polygon point");
+  yield mouse.down(x, y);
+  yield mouse.move(x + dx, y + dy);
+  yield mouse.up();
+  yield testActor.reflow();
+
+  let computedStyle = yield highlightedNode.getComputedStyle();
+  let definition = computedStyle["clip-path"].value;
+  ok(definition.includes(`${dx}px ${dy}px`), `Point moved to ${dx}px ${dy}px`);
+}
+
+function* testPolygonAddPoint(testActor, helper) {
+  yield helper.show("#polygon", {mode: "cssClipPath"});
+  let { mouse, highlightedNode } = helper;
+
+  // Move first point to have same x as second point, then double click between
+  // the two points to add a new one.
+  let points = yield helper.getElementAttribute("shapes-polygon", "points");
+  let pointsArray = points.split(" ");
+  let quads = yield testActor.getAllAdjustedQuads("#polygon");
+  let { top, left, width, height } = quads.border[0].bounds;
+  let [x1, y1] = pointsArray[0].split(",");
+  let [x2, y2] = pointsArray[1].split(",");
+  x1 = left + width * x1 / 100;
+  x2 = left + width * x2 / 100;
+  y1 = top + height * y1 / 100;
+  y2 = top + height * y2 / 100;
+
+  yield mouse.down(x1, y1);
+  yield mouse.move(x2, y1);
+  yield mouse.up();
+  yield testActor.reflow();
+
+  let newPointX = x2;
+  let newPointY = (y1 + y2) / 2;
+  let options = {
+    selector: ":root",
+    x: newPointX,
+    y: newPointY,
+    center: false,
+    options: {clickCount: 2}
+  };
+
+  info("Adding new polygon point");
+  yield testActor.synthesizeMouse(options);
+  yield testActor.reflow();
+
+  let computedStyle = yield highlightedNode.getComputedStyle();
+  let definition = computedStyle["clip-path"].value;
+  ok(definition.includes(`${newPointX * 100 / width}% ${newPointY * 100 / height}%`),
+     "Point successfuly added");
+}
+
+function* testPolygonRemovePoint(testActor, helper) {
+  yield helper.show("#polygon", {mode: "cssClipPath"});
+  let { highlightedNode } = helper;
+
+  let points = yield helper.getElementAttribute("shapes-polygon", "points");
+  let [x, y] = points.split(" ")[0].split(",");
+  let quads = yield testActor.getAllAdjustedQuads("#polygon");
+  let { top, left, width, height } = quads.border[0].bounds;
+
+  let options = {
+    selector: ":root",
+    x: left + width * x / 100,
+    y: top + height * y / 100,
+    center: false,
+    options: {clickCount: 2}
+  };
+
+  info("Removing first polygon point");
+  yield testActor.synthesizeMouse(options);
+  yield testActor.reflow();
+
+  let computedStyle = yield highlightedNode.getComputedStyle();
+  let definition = computedStyle["clip-path"].value;
+  ok(!definition.includes(`${x}% ${y}%`), "Point successfully removed");
+}
+
+function* testCircleMoveCenter(testActor, helper) {
+  yield helper.show("#circle", {mode: "cssClipPath"});
+  let { mouse, highlightedNode } = helper;
+
+  let cx = parseFloat(yield helper.getElementAttribute("shapes-ellipse", "cx"));
+  let cy = parseFloat(yield helper.getElementAttribute("shapes-ellipse", "cy"));
+  let quads = yield testActor.getAllAdjustedQuads("#circle");
+  let { width, height } = quads.border[0].bounds;
+  let cxPixel = width * cx / 100;
+  let cyPixel = height * cy / 100;
+  let dx = width / 10;
+  let dy = height / 10;
+
+  info("Moving circle center");
+  yield mouse.down(cxPixel, cyPixel, "#circle");
+  yield mouse.move(cxPixel + dx, cyPixel + dy, "#circle");
+  yield mouse.up(cxPixel + dx, cyPixel + dy, "#circle");
+  yield testActor.reflow();
+
+  let computedStyle = yield highlightedNode.getComputedStyle();
+  let definition = computedStyle["clip-path"].value;
+  ok(definition.includes(`at ${cx + 10}% ${cy + 10}%`),
+     "Circle center successfully moved");
+}
+
+function* testEllipseMoveRadius(testActor, helper) {
+  yield helper.show("#ellipse", {mode: "cssClipPath"});
+  let { mouse, highlightedNode } = helper;
+
+  let rx = parseFloat(yield helper.getElementAttribute("shapes-ellipse", "rx"));
+  let ry = parseFloat(yield helper.getElementAttribute("shapes-ellipse", "ry"));
+  let cx = parseFloat(yield helper.getElementAttribute("shapes-ellipse", "cx"));
+  let cy = parseFloat(yield helper.getElementAttribute("shapes-ellipse", "cy"));
+  let quads = yield testActor.getAllAdjustedQuads("#ellipse");
+  let { width, height } = quads.content[0].bounds;
+  let computedStyle = yield highlightedNode.getComputedStyle();
+  let paddingTop = parseFloat(computedStyle["padding-top"].value);
+  let paddingLeft = parseFloat(computedStyle["padding-left"].value);
+  let cxPixel = paddingLeft + width * cx / 100;
+  let cyPixel = paddingTop + height * cy / 100;
+  let rxPixel = cxPixel + width * rx / 100;
+  let ryPixel = cyPixel + height * ry / 100;
+  let dx = width / 10;
+  let dy = height / 10;
+
+  info("Moving ellipse rx");
+  yield mouse.down(rxPixel, cyPixel, "#ellipse");
+  yield mouse.move(rxPixel + dx, cyPixel, "#ellipse");
+  yield mouse.up(rxPixel + dx, cyPixel, "#ellipse");
+  yield testActor.reflow();
+
+  info("Moving ellipse ry");
+  yield mouse.down(cxPixel, ryPixel, "#ellipse");
+  yield mouse.move(cxPixel, ryPixel - dy, "#ellipse");
+  yield mouse.up(cxPixel, ryPixel - dy, "#ellipse");
+  yield testActor.reflow();
+
+  computedStyle = yield highlightedNode.getComputedStyle();
+  let definition = computedStyle["clip-path"].value;
+  ok(definition.includes(`${rx + 10}% ${ry - 10}%`),
+     "Ellipse radiuses successfully moved");
+}
+
+function* testInsetMoveEdges(testActor, helper) {
+  yield helper.show("#inset", {mode: "cssClipPath"});
+  let { mouse, highlightedNode } = helper;
+
+  let x = parseFloat(yield helper.getElementAttribute("shapes-rect", "x"));
+  let y = parseFloat(yield helper.getElementAttribute("shapes-rect", "y"));
+  let width = parseFloat(yield helper.getElementAttribute("shapes-rect", "width"));
+  let height = parseFloat(yield helper.getElementAttribute("shapes-rect", "height"));
+  let quads = yield testActor.getAllAdjustedQuads("#inset");
+  let { width: elemWidth, height: elemHeight } = quads.content[0].bounds;
+
+  let left = elemWidth * x / 100;
+  let top = elemHeight * y / 100;
+  let right = left + elemWidth * width / 100;
+  let bottom = top + elemHeight * height / 100;
+  let xCenter = (left + right) / 2;
+  let yCenter = (top + bottom) / 2;
+  let dx = elemWidth / 10;
+  let dy = elemHeight / 10;
+
+  info("Moving inset top");
+  yield mouse.down(xCenter, top, "#inset");
+  yield mouse.move(xCenter, top + dy, "#inset");
+  yield mouse.up(xCenter, top + dy, "#inset");
+  yield testActor.reflow();
+
+  info("Moving inset bottom");
+  yield mouse.down(xCenter, bottom, "#inset");
+  yield mouse.move(xCenter, bottom + dy, "#inset");
+  yield mouse.up(xCenter, bottom + dy, "#inset");
+  yield testActor.reflow();
+
+  info("Moving inset left");
+  yield mouse.down(left, yCenter, "#inset");
+  yield mouse.move(left + dx, yCenter, "#inset");
+  yield mouse.up(left + dx, yCenter, "#inset");
+  yield testActor.reflow();
+
+  info("Moving inset right");
+  yield mouse.down(right, yCenter, "#inset");
+  yield mouse.move(right + dx, yCenter, "#inset");
+  yield mouse.up(right + dx, yCenter, "#inset");
+  yield testActor.reflow();
+
+  let computedStyle = yield highlightedNode.getComputedStyle();
+  let definition = computedStyle["clip-path"].value;
+  ok(definition.includes(
+    `${top + dy}px ${elemWidth - right - dx}px ${100 - y - height - 10}% ${x + 10}%`),
+     "Inset edges successfully moved");
+}
--- a/devtools/client/inspector/test/doc_inspector_highlighter_cssshapes.html
+++ b/devtools/client/inspector/test/doc_inspector_highlighter_cssshapes.html
@@ -25,21 +25,21 @@
                        90% 100%,
                        50% 60%,
                        10% 100%);
   }
   #circle {
     clip-path: circle(25% at 30% 40%);
   }
   #ellipse {
-    clip-path: ellipse(40% 30% at 25% 75%) content-box;
+    clip-path: ellipse(40% 30% at 25% 30%) content-box;
     padding: 20px;
   }
   #ellipse-padding-box {
-    clip-path: ellipse(40% 30% at 25% 75%) padding-box;
+    clip-path: ellipse(40% 30% at 25% 30%) padding-box;
     padding: 20px;
   }
   #inset {
     clip-path: inset(200px 100px 30% 15%);
   }
   .svg {
     width: 800px;
     height: 800px;
--- a/devtools/client/inspector/test/head.js
+++ b/devtools/client/inspector/test/head.js
@@ -498,21 +498,21 @@ const getHighlighterHelperFor = (type) =
       // If no x, y coords are given, the previous ones are used.
       //
       // For example:
       //   mouse.down(10, 20); // synthesize "mousedown" at 10,20
       //   mouse.move(20, 30); // synthesize "mousemove" at 20,30
       //   mouse.up();         // synthesize "mouseup" at 20,30
       mouse: new Proxy({}, {
         get: (target, name) =>
-          function* (x = prevX, y = prevY) {
+          function* (x = prevX, y = prevY, selector = ":root") {
             prevX = x;
             prevY = y;
             yield testActor.synthesizeMouse({
-              selector: ":root", x, y, options: {type: "mouse" + name}});
+              selector, x, y, options: {type: "mouse" + name}});
           }
       }),
 
       reflow: function* () {
         yield testActor.reflow();
       },
 
       finalize: function* () {
--- a/devtools/client/locales/en-US/netmonitor.properties
+++ b/devtools/client/locales/en-US/netmonitor.properties
@@ -623,16 +623,24 @@ netmonitor.toolbar.filter.other=Other
 # LOCALIZATION NOTE (netmonitor.toolbar.filterFreetext.label): This is the label
 # displayed in the network toolbar for the url filtering textbox.
 netmonitor.toolbar.filterFreetext.label=Filter URLs
 
 # LOCALIZATION NOTE (netmonitor.toolbar.filterFreetext.key): This is the
 # shortcut key to focus on the toolbar url filtering textbox
 netmonitor.toolbar.filterFreetext.key=CmdOrCtrl+F
 
+# LOCALIZATION NOTE (netmonitor.toolbar.disableCache.label): This is the label
+# displayed for the checkbox for disabling browser cache.
+netmonitor.toolbar.disableCache.label=Disable cache
+
+# LOCALIZATION NOTE (netmonitor.toolbar.disableCache.tooltip): This is the tooltip
+# displayed for the checkbox for disabling browser cache.
+netmonitor.toolbar.disableCache.tooltip=Disable HTTP cache
+
 # LOCALIZATION NOTE (netmonitor.toolbar.clear): This is the label displayed
 # in the network toolbar for the "Clear" button.
 netmonitor.toolbar.clear=Clear
 
 # LOCALIZATION NOTE (netmonitor.toolbar.perf): This is the label displayed
 # in the network toolbar for the performance analysis button.
 netmonitor.toolbar.perf=Toggle performance analysis…
 
--- a/devtools/client/netmonitor/src/actions/ui.js
+++ b/devtools/client/netmonitor/src/actions/ui.js
@@ -2,16 +2,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const {
   ACTIVITY_TYPE,
   OPEN_NETWORK_DETAILS,
+  DISABLE_BROWSER_CACHE,
   OPEN_STATISTICS,
   RESET_COLUMNS,
   SELECT_DETAILS_PANEL_TAB,
   TOGGLE_COLUMN,
   WATERFALL_RESIZE,
 } = require("../constants");
 const { triggerActivity } = require("../connector/index");
 
@@ -23,16 +24,28 @@ const { triggerActivity } = require("../
 function openNetworkDetails(open) {
   return {
     type: OPEN_NETWORK_DETAILS,
     open,
   };
 }
 
 /**
+ * Change browser cache state.
+ *
+ * @param {boolean} disabled - expected browser cache in disable state
+ */
+function disableBrowserCache(disabled) {
+  return {
+    type: DISABLE_BROWSER_CACHE,
+    disabled,
+  };
+}
+
+/**
  * Change performance statistics panel open state.
  *
  * @param {boolean} visible - expected performance statistics panel open state
  */
 function openStatistics(open) {
   if (open) {
     triggerActivity(ACTIVITY_TYPE.RELOAD.WITH_CACHE_ENABLED);
   }
@@ -90,25 +103,35 @@ function toggleColumn(column) {
  * Toggle network details panel.
  */
 function toggleNetworkDetails() {
   return (dispatch, getState) =>
     dispatch(openNetworkDetails(!getState().ui.networkDetailsOpen));
 }
 
 /**
+ * Toggle browser cache status.
+ */
+function toggleBrowserCache() {
+  return (dispatch, getState) =>
+    dispatch(disableBrowserCache(!getState().ui.browserCacheDisabled));
+}
+
+/**
  * Toggle performance statistics panel.
  */
 function toggleStatistics() {
   return (dispatch, getState) =>
     dispatch(openStatistics(!getState().ui.statisticsOpen));
 }
 
 module.exports = {
   openNetworkDetails,
+  disableBrowserCache,
   openStatistics,
   resetColumns,
   resizeWaterfall,
   selectDetailsPanelTab,
   toggleColumn,
   toggleNetworkDetails,
+  toggleBrowserCache,
   toggleStatistics,
 };
--- a/devtools/client/netmonitor/src/assets/styles/netmonitor.css
+++ b/devtools/client/netmonitor/src/assets/styles/netmonitor.css
@@ -790,16 +790,27 @@ body,
 .properties-view .devtools-searchbox {
   padding: 0;
 }
 
 .properties-view .devtools-searchbox input {
   margin: 1px 3px;
 }
 
+.devtools-checkbox {
+  position: relative;
+  vertical-align: middle;
+  bottom: 1px;
+}
+
+.devtools-checkbox-label {
+  margin-inline-start: 10px;
+  margin-inline-end: 3px;
+}
+
 /* Empty notices in tab panels */
 
 .empty-notice {
   color: var(--theme-body-color-alt);
   padding: 3px 8px;
 }
 
 /* Text inputs in tab panels */
--- a/devtools/client/netmonitor/src/components/toolbar.js
+++ b/devtools/client/netmonitor/src/components/toolbar.js
@@ -1,14 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
+const Services = require("Services");
 const {
   createClass,
   createFactory,
   DOM,
   PropTypes,
 } = require("devtools/client/shared/vendor/react");
 const { connect } = require("devtools/client/shared/vendor/react-redux");
 const Actions = require("../actions/index");
@@ -20,38 +21,43 @@ const {
 } = require("../selectors/index");
 
 const { autocompleteProvider } = require("../utils/filter-text-utils");
 const { L10N } = require("../utils/l10n");
 
 // Components
 const SearchBox = createFactory(require("devtools/client/shared/components/search-box"));
 
-const { button, div, span } = DOM;
+const { button, div, input, label, span } = DOM;
 
 const COLLPASE_DETAILS_PANE = L10N.getStr("collapseDetailsPane");
 const EXPAND_DETAILS_PANE = L10N.getStr("expandDetailsPane");
 const SEARCH_KEY_SHORTCUT = L10N.getStr("netmonitor.toolbar.filterFreetext.key");
 const SEARCH_PLACE_HOLDER = L10N.getStr("netmonitor.toolbar.filterFreetext.label");
 const TOOLBAR_CLEAR = L10N.getStr("netmonitor.toolbar.clear");
 
+const DEVTOOLS_DISABLE_CACHE_PREF = "devtools.cache.disabled";
+
 /*
  * Network monitor toolbar component
  * Toolbar contains a set of useful tools to control network requests
  */
 const Toolbar = createClass({
   displayName: "Toolbar",
 
   propTypes: {
     clearRequests: PropTypes.func.isRequired,
     requestFilterTypes: PropTypes.array.isRequired,
     setRequestFilterText: PropTypes.func.isRequired,
     networkDetailsToggleDisabled: PropTypes.bool.isRequired,
     networkDetailsOpen: PropTypes.bool.isRequired,
     toggleNetworkDetails: PropTypes.func.isRequired,
+    disableBrowserCache: PropTypes.func.isRequired,
+    toggleBrowserCache: PropTypes.func.isRequired,
+    browserCacheDisabled: PropTypes.bool.isRequired,
     toggleRequestFilterType: PropTypes.func.isRequired,
   },
 
   toggleRequestFilterType(evt) {
     if (evt.type === "keydown" && (evt.key !== "" || evt.key !== "Enter")) {
       return;
     }
     this.props.toggleRequestFilterType(evt.target.dataset.key);
@@ -60,16 +66,18 @@ const Toolbar = createClass({
   render() {
     let {
       clearRequests,
       requestFilterTypes,
       setRequestFilterText,
       networkDetailsToggleDisabled,
       networkDetailsOpen,
       toggleNetworkDetails,
+      toggleBrowserCache,
+      browserCacheDisabled,
     } = this.props;
 
     let toggleButtonClassName = [
       "network-details-panel-toggle",
       "devtools-button",
     ];
     if (!networkDetailsOpen) {
       toggleButtonClassName.push("pane-collapsed");
@@ -97,16 +105,30 @@ const Toolbar = createClass({
       span({ className: "devtools-toolbar devtools-toolbar-container" },
         span({ className: "devtools-toolbar-group" },
           button({
             className: "devtools-button devtools-clear-icon requests-list-clear-button",
             title: TOOLBAR_CLEAR,
             onClick: clearRequests,
           }),
           div({ className: "requests-list-filter-buttons" }, buttons),
+          label(
+            {
+              className: "devtools-checkbox-label",
+              title: L10N.getStr("netmonitor.toolbar.disableCache.tooltip"),
+            },
+            input({
+              id: "devtools-cache-checkbox",
+              className: "devtools-checkbox",
+              type: "checkbox",
+              checked: browserCacheDisabled,
+              onClick: toggleBrowserCache,
+            }),
+            L10N.getStr("netmonitor.toolbar.disableCache.label"),
+          ),
         ),
         span({ className: "devtools-toolbar-group" },
           SearchBox({
             delay: FILTER_SEARCH_DELAY,
             keyShortcut: SEARCH_KEY_SHORTCUT,
             placeholder: SEARCH_PLACE_HOLDER,
             type: "filter",
             onChange: setRequestFilterText,
@@ -117,25 +139,43 @@ const Toolbar = createClass({
             title: networkDetailsOpen ? COLLPASE_DETAILS_PANE : EXPAND_DETAILS_PANE,
             disabled: networkDetailsToggleDisabled,
             tabIndex: "0",
             onClick: toggleNetworkDetails,
           }),
         )
       )
     );
+  },
+
+  componentDidMount() {
+    Services.prefs.addObserver(DEVTOOLS_DISABLE_CACHE_PREF,
+                               this.updateBrowserCacheDisabled);
+  },
+
+  componentWillUnmount() {
+    Services.prefs.removeObserver(DEVTOOLS_DISABLE_CACHE_PREF,
+                                  this.updateBrowserCacheDisabled);
+  },
+
+  updateBrowserCacheDisabled() {
+    this.props.disableBrowserCache(
+                        Services.prefs.getBoolPref(DEVTOOLS_DISABLE_CACHE_PREF));
   }
 });
 
 module.exports = connect(
   (state) => ({
     networkDetailsToggleDisabled: isNetworkDetailsToggleButtonDisabled(state),
     networkDetailsOpen: state.ui.networkDetailsOpen,
+    browserCacheDisabled: state.ui.browserCacheDisabled,
     requestFilterTypes: getRequestFilterTypes(state),
     summary: getDisplayedRequestsSummary(state),
   }),
   (dispatch) => ({
     clearRequests: () => dispatch(Actions.clearRequests()),
     setRequestFilterText: (text) => dispatch(Actions.setRequestFilterText(text)),
     toggleRequestFilterType: (type) => dispatch(Actions.toggleRequestFilterType(type)),
     toggleNetworkDetails: () => dispatch(Actions.toggleNetworkDetails()),
+    disableBrowserCache: (disabled) => dispatch(Actions.disableBrowserCache(disabled)),
+    toggleBrowserCache: () => dispatch(Actions.toggleBrowserCache()),
   }),
 )(Toolbar);
--- a/devtools/client/netmonitor/src/constants.js
+++ b/devtools/client/netmonitor/src/constants.js
@@ -9,16 +9,17 @@ const actionTypes = {
   ADD_TIMING_MARKER: "ADD_TIMING_MARKER",
   BATCH_ACTIONS: "BATCH_ACTIONS",
   BATCH_ENABLE: "BATCH_ENABLE",
   CLEAR_REQUESTS: "CLEAR_REQUESTS",
   CLEAR_TIMING_MARKERS: "CLEAR_TIMING_MARKERS",
   CLONE_SELECTED_REQUEST: "CLONE_SELECTED_REQUEST",
   ENABLE_REQUEST_FILTER_TYPE_ONLY: "ENABLE_REQUEST_FILTER_TYPE_ONLY",
   OPEN_NETWORK_DETAILS: "OPEN_NETWORK_DETAILS",
+  DISABLE_BROWSER_CACHE: "DISABLE_BROWSER_CACHE",
   OPEN_STATISTICS: "OPEN_STATISTICS",
   REMOVE_SELECTED_CUSTOM_REQUEST: "REMOVE_SELECTED_CUSTOM_REQUEST",
   RESET_COLUMNS: "RESET_COLUMNS",
   SELECT_REQUEST: "SELECT_REQUEST",
   SELECT_DETAILS_PANEL_TAB: "SELECT_DETAILS_PANEL_TAB",
   SEND_CUSTOM_REQUEST: "SEND_CUSTOM_REQUEST",
   SET_REQUEST_FILTER_TEXT: "SET_REQUEST_FILTER_TEXT",
   SORT_BY: "SORT_BY",
--- a/devtools/client/netmonitor/src/middleware/prefs.js
+++ b/devtools/client/netmonitor/src/middleware/prefs.js
@@ -5,16 +5,17 @@
 "use strict";
 
 const Services = require("Services");
 const {
   ENABLE_REQUEST_FILTER_TYPE_ONLY,
   RESET_COLUMNS,
   TOGGLE_COLUMN,
   TOGGLE_REQUEST_FILTER_TYPE,
+  DISABLE_BROWSER_CACHE,
 } = require("../constants");
 const { getRequestFilterTypes } = require("../selectors/index");
 
 /**
   * Update the relevant prefs when:
   *   - a column has been toggled
   *   - a filter type has been set
   */
@@ -25,16 +26,20 @@ function prefsMiddleware(store) {
       case ENABLE_REQUEST_FILTER_TYPE_ONLY:
       case TOGGLE_REQUEST_FILTER_TYPE:
         let filters = getRequestFilterTypes(store.getState())
           .filter(([type, check]) => check)
           .map(([type, check]) => type);
         Services.prefs.setCharPref(
           "devtools.netmonitor.filters", JSON.stringify(filters));
         break;
+      case DISABLE_BROWSER_CACHE:
+        Services.prefs.setBoolPref(
+          "devtools.cache.disabled", store.getState().ui.browserCacheDisabled);
+        break;
       case TOGGLE_COLUMN:
       case RESET_COLUMNS:
         let visibleColumns = [...store.getState().ui.columns]
           .filter(([column, shown]) => shown)
           .map(([column, shown]) => column);
         Services.prefs.setCharPref(
           "devtools.netmonitor.visibleColumns", JSON.stringify(visibleColumns));
         break;
--- a/devtools/client/netmonitor/src/reducers/ui.js
+++ b/devtools/client/netmonitor/src/reducers/ui.js
@@ -1,18 +1,20 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const I = require("devtools/client/shared/vendor/immutable");
+const Services = require("Services");
 const {
   CLEAR_REQUESTS,
   OPEN_NETWORK_DETAILS,
+  DISABLE_BROWSER_CACHE,
   OPEN_STATISTICS,
   REMOVE_SELECTED_CUSTOM_REQUEST,
   RESET_COLUMNS,
   RESPONSE_HEADERS,
   SELECT_DETAILS_PANEL_TAB,
   SEND_CUSTOM_REQUEST,
   SELECT_REQUEST,
   TOGGLE_COLUMN,
@@ -46,32 +48,37 @@ const Columns = I.Record(
     RESPONSE_HEADERS.reduce((acc, header) => Object.assign(acc, { [header]: false }), {})
   )
 );
 
 const UI = I.Record({
   columns: new Columns(),
   detailsPanelSelectedTab: "headers",
   networkDetailsOpen: false,
+  browserCacheDisabled: Services.prefs.getBoolPref("devtools.cache.disabled"),
   statisticsOpen: false,
   waterfallWidth: null,
 });
 
 function resetColumns(state) {
   return state.set("columns", new Columns());
 }
 
 function resizeWaterfall(state, action) {
   return state.set("waterfallWidth", action.width);
 }
 
 function openNetworkDetails(state, action) {
   return state.set("networkDetailsOpen", action.open);
 }
 
+function disableBrowserCache(state, action) {
+  return state.set("browserCacheDisabled", action.disabled);
+}
+
 function openStatistics(state, action) {
   return state.set("statisticsOpen", action.open);
 }
 
 function setDetailsPanelTab(state, action) {
   return state.set("detailsPanelSelectedTab", action.id);
 }
 
@@ -89,16 +96,18 @@ function toggleColumn(state, action) {
 }
 
 function ui(state = new UI(), action) {
   switch (action.type) {
     case CLEAR_REQUESTS:
       return openNetworkDetails(state, { open: false });
     case OPEN_NETWORK_DETAILS:
       return openNetworkDetails(state, action);
+    case DISABLE_BROWSER_CACHE:
+      return disableBrowserCache(state, action);
     case OPEN_STATISTICS:
       return openStatistics(state, action);
     case RESET_COLUMNS:
       return resetColumns(state);
     case REMOVE_SELECTED_CUSTOM_REQUEST:
     case SEND_CUSTOM_REQUEST:
       return openNetworkDetails(state, { open: false });
     case SELECT_DETAILS_PANEL_TAB:
--- a/devtools/client/webconsole/new-console-output/components/message-container.js
+++ b/devtools/client/webconsole/new-console-output/components/message-container.js
@@ -65,17 +65,17 @@ const MessageContainer = createClass({
       || networkMessageUpdateChanged
       || loadedObjectPropertiesChanged;
   },
 
   render() {
     const message = this.props.getMessage();
 
     let MessageComponent = getMessageComponent(message);
-    return MessageComponent(Object.assign({message, indent: message.indent}, this.props));
+    return MessageComponent(Object.assign({message}, this.props));
   }
 });
 
 function getMessageComponent(message) {
   switch (message.source) {
     case MESSAGE_SOURCE.CONSOLE_API:
       return componentMap.get("ConsoleApiCall");
     case MESSAGE_SOURCE.NETWORK:
--- a/devtools/client/webconsole/new-console-output/components/message-types/console-api-call.js
+++ b/devtools/client/webconsole/new-console-output/components/message-types/console-api-call.js
@@ -20,40 +20,38 @@ const Message = createFactory(require("d
 
 ConsoleApiCall.displayName = "ConsoleApiCall";
 
 ConsoleApiCall.propTypes = {
   dispatch: PropTypes.func.isRequired,
   message: PropTypes.object.isRequired,
   open: PropTypes.bool,
   serviceContainer: PropTypes.object.isRequired,
-  indent: PropTypes.number.isRequired,
   timestampsVisible: PropTypes.bool.isRequired,
   loadedObjectProperties: PropTypes.object,
 };
 
 ConsoleApiCall.defaultProps = {
   open: false,
-  indent: 0,
 };
 
 function ConsoleApiCall(props) {
   const {
     dispatch,
     message,
     open,
     tableData,
     serviceContainer,
-    indent,
     timestampsVisible,
     repeat,
     loadedObjectProperties,
   } = props;
   const {
     id: messageId,
+    indent,
     source,
     type,
     level,
     stacktrace,
     frame,
     timeStamp,
     parameters,
     messageText,
--- a/devtools/client/webconsole/new-console-output/components/message-types/console-command.js
+++ b/devtools/client/webconsole/new-console-output/components/message-types/console-command.js
@@ -12,37 +12,32 @@ const {
   PropTypes
 } = require("devtools/client/shared/vendor/react");
 const Message = createFactory(require("devtools/client/webconsole/new-console-output/components/message"));
 
 ConsoleCommand.displayName = "ConsoleCommand";
 
 ConsoleCommand.propTypes = {
   message: PropTypes.object.isRequired,
-  indent: PropTypes.number.isRequired,
   timestampsVisible: PropTypes.bool.isRequired,
   serviceContainer: PropTypes.object,
 };
 
-ConsoleCommand.defaultProps = {
-  indent: 0,
-};
-
 /**
  * Displays input from the console.
  */
 function ConsoleCommand(props) {
   const {
-    indent,
     message,
     timestampsVisible,
     serviceContainer,
   } = props;
 
   const {
+    indent,
     source,
     type,
     level,
     messageText: messageBody,
   } = message;
 
   return Message({
     source,
--- a/devtools/client/webconsole/new-console-output/components/message-types/evaluation-result.js
+++ b/devtools/client/webconsole/new-console-output/components/message-types/evaluation-result.js
@@ -14,42 +14,37 @@ const {
 const Message = createFactory(require("devtools/client/webconsole/new-console-output/components/message"));
 const GripMessageBody = require("devtools/client/webconsole/new-console-output/components/grip-message-body");
 
 EvaluationResult.displayName = "EvaluationResult";
 
 EvaluationResult.propTypes = {
   dispatch: PropTypes.func.isRequired,
   message: PropTypes.object.isRequired,
-  indent: PropTypes.number.isRequired,
   timestampsVisible: PropTypes.bool.isRequired,
   serviceContainer: PropTypes.object,
   loadedObjectProperties: PropTypes.object,
 };
 
-EvaluationResult.defaultProps = {
-  indent: 0,
-};
-
 function EvaluationResult(props) {
   const {
     dispatch,
     message,
     serviceContainer,
-    indent,
     timestampsVisible,
     loadedObjectProperties,
   } = props;
 
   const {
     source,
     type,
     helperType,
     level,
     id: messageId,
+    indent,
     exceptionDocURL,
     frame,
     timeStamp,
     parameters,
     notes,
   } = message;
 
   let messageBody;
--- a/devtools/client/webconsole/new-console-output/components/message-types/network-event-message.js
+++ b/devtools/client/webconsole/new-console-output/components/message-types/network-event-message.js
@@ -17,34 +17,29 @@ const { l10n } = require("devtools/clien
 
 NetworkEventMessage.displayName = "NetworkEventMessage";
 
 NetworkEventMessage.propTypes = {
   message: PropTypes.object.isRequired,
   serviceContainer: PropTypes.shape({
     openNetworkPanel: PropTypes.func.isRequired,
   }),
-  indent: PropTypes.number.isRequired,
   timestampsVisible: PropTypes.bool.isRequired,
   networkMessageUpdate: PropTypes.object.isRequired,
 };
 
-NetworkEventMessage.defaultProps = {
-  indent: 0,
-};
-
 function NetworkEventMessage({
-  indent,
   message = {},
   serviceContainer,
   timestampsVisible,
   networkMessageUpdate = {},
 }) {
   const {
     actor,
+    indent,
     source,
     type,
     level,
     request,
     isXHR,
     timeStamp,
   } = message;
 
--- a/devtools/client/webconsole/new-console-output/components/message-types/page-error.js
+++ b/devtools/client/webconsole/new-console-output/components/message-types/page-error.js
@@ -13,37 +13,35 @@ const {
 } = require("devtools/client/shared/vendor/react");
 const Message = createFactory(require("devtools/client/webconsole/new-console-output/components/message"));
 
 PageError.displayName = "PageError";
 
 PageError.propTypes = {
   message: PropTypes.object.isRequired,
   open: PropTypes.bool,
-  indent: PropTypes.number.isRequired,
   timestampsVisible: PropTypes.bool.isRequired,
   serviceContainer: PropTypes.object,
 };
 
 PageError.defaultProps = {
   open: false,
-  indent: 0,
 };
 
 function PageError(props) {
   const {
     dispatch,
     message,
     open,
     serviceContainer,
-    indent,
     timestampsVisible,
   } = props;
   const {
     id: messageId,
+    indent,
     source,
     type,
     level,
     messageText,
     repeat,
     stacktrace,
     frame,
     exceptionDocURL,
--- a/devtools/client/webconsole/new-console-output/test/components/console-api-call.test.js
+++ b/devtools/client/webconsole/new-console-output/test/components/console-api-call.test.js
@@ -81,17 +81,20 @@ describe("ConsoleAPICall component:", ()
         "span.message-body.devtools-monospace + span.message-repeats";
       expect(wrapper.find(selector).length).toBe(1);
     });
 
     it("has the expected indent", () => {
       const message = stubPreparedMessages.get("console.log('foobar', 'test')");
 
       const indent = 10;
-      let wrapper = render(ConsoleApiCall({ message, serviceContainer, indent }));
+      let wrapper = render(ConsoleApiCall({
+        message: Object.assign({}, message, {indent}),
+        serviceContainer
+      }));
       expect(wrapper.find(".indent").prop("style").width)
         .toBe(`${indent * INDENT_WIDTH}px`);
 
       wrapper = render(ConsoleApiCall({ message, serviceContainer}));
       expect(wrapper.find(".indent").prop("style").width).toBe(`0`);
     });
 
     it("renders a timestamp when passed a truthy timestampsVisible prop", () => {
--- a/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js
+++ b/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js
@@ -76,17 +76,19 @@ describe("EvaluationResult component:", 
     let call = serviceContainer.openLink.getCall(0);
     expect(call.args[0]).toEqual(message.exceptionDocURL);
   });
 
   it("has the expected indent", () => {
     const message = stubPreparedMessages.get("new Date(0)");
 
     const indent = 10;
-    let wrapper = render(EvaluationResult({ message, indent}));
+    let wrapper = render(EvaluationResult({
+      message: Object.assign({}, message, {indent}),
+    }));
     expect(wrapper.find(".indent").prop("style").width)
         .toBe(`${indent * INDENT_WIDTH}px`);
 
     wrapper = render(EvaluationResult({ message}));
     expect(wrapper.find(".indent").prop("style").width).toBe(`0`);
   });
 
   it("has location information", () => {
--- a/devtools/client/webconsole/new-console-output/test/components/network-event-message.test.js
+++ b/devtools/client/webconsole/new-console-output/test/components/network-event-message.test.js
@@ -52,17 +52,20 @@ describe("NetworkEventMessage component:
 
       expect(wrapper.find(".timestamp").length).toBe(0);
     });
 
     it("has the expected indent", () => {
       const message = stubPreparedMessages.get("GET request");
 
       const indent = 10;
-      let wrapper = render(NetworkEventMessage({ message, serviceContainer, indent}));
+      let wrapper = render(NetworkEventMessage({
+        message: Object.assign({}, message, {indent}),
+        serviceContainer
+      }));
       expect(wrapper.find(".indent").prop("style").width)
         .toBe(`${indent * INDENT_WIDTH}px`);
 
       wrapper = render(NetworkEventMessage({ message, serviceContainer }));
       expect(wrapper.find(".indent").prop("style").width).toBe(`0`);
     });
   });
 
--- a/devtools/client/webconsole/new-console-output/test/components/page-error.test.js
+++ b/devtools/client/webconsole/new-console-output/test/components/page-error.test.js
@@ -137,17 +137,20 @@ describe("PageError component:", () => {
       id: message.id,
       type: MESSAGE_OPEN
     });
   });
 
   it("has the expected indent", () => {
     const message = stubPreparedMessages.get("ReferenceError: asdf is not defined");
     const indent = 10;
-    let wrapper = render(PageError({ message, serviceContainer, indent}));
+    let wrapper = render(PageError({
+      message: Object.assign({}, message, {indent}),
+      serviceContainer
+    }));
     expect(wrapper.find(".indent").prop("style").width)
         .toBe(`${indent * INDENT_WIDTH}px`);
 
     wrapper = render(PageError({ message, serviceContainer}));
     expect(wrapper.find(".indent").prop("style").width).toBe(`0`);
   });
 
   it("has empty error notes", () => {
--- a/devtools/server/actors/highlighters/shapes.js
+++ b/devtools/server/actors/highlighters/shapes.js
@@ -1,38 +1,52 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
-const { CanvasFrameAnonymousContentHelper,
+const { CanvasFrameAnonymousContentHelper, getCSSStyleRules,
         createSVGNode, createNode, getComputedStyle } = require("./utils/markup");
 const { setIgnoreLayoutChanges, getCurrentZoom } = require("devtools/shared/layout/utils");
 const { AutoRefreshHighlighter } = require("./auto-refresh");
+const {
+  getDistance,
+  clickedOnEllipseEdge,
+  distanceToLine,
+  projection,
+  clickedOnPoint
+} = require("devtools/server/actors/utils/shapes-geometry-utils");
 
-// We use this as an offset to avoid the marker itself from being on top of its shadow.
 const BASE_MARKER_SIZE = 10;
+// the width of the area around highlighter lines that can be clicked, in px
+const LINE_CLICK_WIDTH = 5;
+const DOM_EVENTS = ["mousedown", "mousemove", "mouseup", "dblclick"];
+const _dragging = Symbol("shapes/dragging");
 
 /**
  * The ShapesHighlighter draws an outline shapes in the page.
  * The idea is to have something that is able to wrap complex shapes for css properties
  * such as shape-outside/inside, clip-path but also SVG elements.
  */
 class ShapesHighlighter extends AutoRefreshHighlighter {
   constructor(highlighterEnv) {
     super(highlighterEnv);
 
     this.ID_CLASS_PREFIX = "shapes-";
 
     this.referenceBox = "border";
     this.useStrokeBox = false;
+    this.geometryBox = "";
 
     this.markup = new CanvasFrameAnonymousContentHelper(this.highlighterEnv,
-    this._buildMarkup.bind(this));
+      this._buildMarkup.bind(this));
+
+    let { pageListenerTarget } = this.highlighterEnv;
+    DOM_EVENTS.forEach(event => pageListenerTarget.addEventListener(event, this));
   }
 
   _buildMarkup() {
     let container = createNode(this.win, {
       attributes: {
         "class": "highlighter-container"
       }
     });
@@ -119,16 +133,625 @@ class ShapesHighlighter extends AutoRefr
     // getBBox, which only exists for SVG, to check if currentNode is an SVG element.
     if (this.currentNode.getBBox &&
         getComputedStyle(this.currentNode).stroke !== "none" && !this.useStrokeBox) {
       return getObjectBoundingBox(top, left, width, height, this.currentNode);
     }
     return { top, left, width, height };
   }
 
+  get zoomAdjustedDimensions() {
+    let { top, left, width, height } = this.currentDimensions;
+    let zoom = getCurrentZoom(this.win);
+    return {
+      top: top / zoom,
+      left: left / zoom,
+      width: width / zoom,
+      height: height / zoom
+    };
+  }
+
+  handleEvent(event, id) {
+    // No event handling if the highlighter is hidden
+    if (this.areShapesHidden()) {
+      return;
+    }
+
+    const { target, type, pageX, pageY } = event;
+
+    switch (type) {
+      case "pagehide":
+        // If a page hide event is triggered for current window's highlighter, hide the
+        // highlighter.
+        if (target.defaultView === this.win) {
+          this.destroy();
+        }
+
+        break;
+      case "mousedown":
+        if (this.shapeType === "polygon") {
+          this._handlePolygonClick(pageX, pageY);
+        } else if (this.shapeType === "circle") {
+          this._handleCircleClick(pageX, pageY);
+        } else if (this.shapeType === "ellipse") {
+          this._handleEllipseClick(pageX, pageY);
+        } else if (this.shapeType === "inset") {
+          this._handleInsetClick(pageX, pageY);
+        }
+        // Currently, changes to shape-outside do not become visible unless a reflow
+        // is forced (bug 1359834). This is a hack to force a reflow so changes made
+        // using the highlighter can be seen: we change the width of the element
+        // slightly on mousedown on a point, and restore the original width on mouseup.
+        if (this.property === "shape-outside" && this[_dragging]) {
+          let { width } = this.zoomAdjustedDimensions;
+          let origWidth = getDefinedShapeProperties(this.currentNode, "width");
+          this.currentNode.style.setProperty("width", `${width + 1}px`);
+          this[_dragging].origWidth = origWidth;
+        }
+        event.stopPropagation();
+        event.preventDefault();
+        break;
+      case "mouseup":
+        if (this[_dragging]) {
+          if (this.property === "shape-outside") {
+            this.currentNode.style.setProperty("width", this[_dragging].origWidth);
+          }
+          this[_dragging] = null;
+        }
+        break;
+      case "mousemove":
+        if (!this[_dragging]) {
+          return;
+        }
+        event.stopPropagation();
+        event.preventDefault();
+
+        let { point } = this[_dragging];
+        if (this.shapeType === "polygon") {
+          this._handlePolygonMove(pageX, pageY);
+        } else if (this.shapeType === "circle") {
+          this._handleCircleMove(point, pageX, pageY);
+        } else if (this.shapeType === "ellipse") {
+          this._handleEllipseMove(point, pageX, pageY);
+        } else if (this.shapeType === "inset") {
+          this._handleInsetMove(point, pageX, pageY);
+        }
+        break;
+      case "dblclick":
+        if (this.shapeType === "polygon") {
+          let { percentX, percentY } = this.convertPageCoordsToPercent(pageX, pageY);
+          let index = this.getPolygonClickedPoint(percentX, percentY);
+          if (index === -1) {
+            this.getPolygonClickedLine(percentX, percentY);
+            return;
+          }
+
+          this._deletePolygonPoint(index);
+        }
+        break;
+    }
+  }
+
+  /**
+   * Handle a click when highlighting a polygon.
+   * @param {any} pageX the x coordinate of the click
+   * @param {any} pageY the y coordinate of the click
+   */
+  _handlePolygonClick(pageX, pageY) {
+    let { width, height } = this.zoomAdjustedDimensions;
+    let { percentX, percentY } = this.convertPageCoordsToPercent(pageX, pageY);
+    let point = this.getPolygonClickedPoint(percentX, percentY);
+    if (point === -1) {
+      return;
+    }
+
+    let [x, y] = this.coordUnits[point];
+    let xComputed = this.coordinates[point][0] / 100 * width;
+    let yComputed = this.coordinates[point][1] / 100 * height;
+    let unitX = getUnit(x);
+    let unitY = getUnit(y);
+    let valueX = (isUnitless(x)) ? xComputed : parseFloat(x);
+    let valueY = (isUnitless(y)) ? yComputed : parseFloat(y);
+
+    let ratioX = (valueX / xComputed) || 1;
+    let ratioY = (valueY / yComputed) || 1;
+
+    this[_dragging] = { point, unitX, unitY, valueX, valueY,
+                        ratioX, ratioY, x: pageX, y: pageY };
+  }
+
+  /**
+   * Set the inline style of the polygon, replacing the given point with the given x/y
+   * coords.
+   * @param {Number} pageX the new x coordinate of the point
+   * @param {Number} pageY the new y coordinate of the point
+   */
+  _handlePolygonMove(pageX, pageY) {
+    let { point, unitX, unitY, valueX, valueY, ratioX, ratioY, x, y } = this[_dragging];
+    let deltaX = (pageX - x) * ratioX;
+    let deltaY = (pageY - y) * ratioY;
+    let newX = `${valueX + deltaX}${unitX}`;
+    let newY = `${valueY + deltaY}${unitY}`;
+
+    let polygonDef = this.coordUnits.map((coords, i) => {
+      return (i === point) ? `${newX} ${newY}` : `${coords[0]} ${coords[1]}`;
+    }).join(", ");
+    polygonDef = (this.geometryBox) ? `polygon(${polygonDef}) ${this.geometryBox}` :
+                                      `polygon(${polygonDef})`;
+
+    this.currentNode.style.setProperty(this.property, polygonDef, "important");
+  }
+
+  /**
+   * Set the inline style of the polygon, adding a new point.
+   * @param {Number} after the index of the point that the new point should be added after
+   * @param {Number} x the x coordinate of the new point
+   * @param {Number} y the y coordinate of the new point
+   */
+  _addPolygonPoint(after, x, y) {
+    let polygonDef = this.coordUnits.map((coords, i) => {
+      return (i === after) ? `${coords[0]} ${coords[1]}, ${x}% ${y}%` :
+                             `${coords[0]} ${coords[1]}`;
+    }).join(", ");
+    polygonDef = (this.geometryBox) ? `polygon(${polygonDef}) ${this.geometryBox}` :
+                                      `polygon(${polygonDef})`;
+
+    this.currentNode.style.setProperty(this.property, polygonDef, "important");
+  }
+
+  /**
+   * Set the inline style of the polygon, deleting the given point.
+   * @param {Number} point the index of the point to delete
+   */
+  _deletePolygonPoint(point) {
+    let coordinates = this.coordUnits.slice();
+    coordinates.splice(point, 1);
+    let polygonDef = coordinates.map((coords, i) => {
+      return `${coords[0]} ${coords[1]}`;
+    }).join(", ");
+    polygonDef = (this.geometryBox) ? `polygon(${polygonDef}) ${this.geometryBox}` :
+                                      `polygon(${polygonDef})`;
+
+    this.currentNode.style.setProperty(this.property, polygonDef, "important");
+  }
+  /**
+   * Handle a click when highlighting a circle.
+   * @param {any} pageX the x coordinate of the click
+   * @param {any} pageY the y coordinate of the click
+   */
+  _handleCircleClick(pageX, pageY) {
+    let { width, height } = this.zoomAdjustedDimensions;
+    let { percentX, percentY } = this.convertPageCoordsToPercent(pageX, pageY);
+    let point = this.getCircleClickedPoint(percentX, percentY);
+    if (!point) {
+      return;
+    }
+
+    if (point === "center") {
+      let { cx, cy } = this.coordUnits;
+      let cxComputed = this.coordinates.cx / 100 * width;
+      let cyComputed = this.coordinates.cy / 100 * height;
+      let unitX = getUnit(cx);
+      let unitY = getUnit(cy);
+      let valueX = (isUnitless(cx)) ? cxComputed : parseFloat(cx);
+      let valueY = (isUnitless(cy)) ? cyComputed : parseFloat(cy);
+
+      let ratioX = (valueX / cxComputed) || 1;
+      let ratioY = (valueY / cyComputed) || 1;
+
+      this[_dragging] = { point, unitX, unitY, valueX, valueY,
+                          ratioX, ratioY, x: pageX, y: pageY };
+    } else if (point === "radius") {
+      let { radius } = this.coordinates;
+      let computedSize = Math.sqrt((width ** 2) + (height ** 2)) / Math.sqrt(2);
+      radius = radius / 100 * computedSize;
+      let value = this.coordUnits.radius;
+      let unit = getUnit(value);
+      value = (isUnitless(value)) ? radius : parseFloat(value);
+      let ratio = (value / radius) || 1;
+
+      this[_dragging] = { point, value, origRadius: radius, unit, ratio };
+    }
+  }
+
+  /**
+   * Set the inline style of the circle, setting the center/radius according to the
+   * mouse position.
+   * @param {String} point either "center" or "radius"
+   * @param {Number} pageX the x coordinate of the mouse position, in terms of %
+   *        relative to the element
+   * @param {Number} pageY the y coordinate of the mouse position, in terms of %
+   *        relative to the element
+   */
+  _handleCircleMove(point, pageX, pageY) {
+    let { radius, cx, cy } = this.coordUnits;
+
+    if (point === "center") {
+      let { unitX, unitY, valueX, valueY, ratioX, ratioY, x, y} = this[_dragging];
+      let deltaX = (pageX - x) * ratioX;
+      let deltaY = (pageY - y) * ratioY;
+      let newCx = `${valueX + deltaX}${unitX}`;
+      let newCy = `${valueY + deltaY}${unitY}`;
+      let circleDef = (this.geometryBox) ?
+            `circle(${radius} at ${newCx} ${newCy}) ${this.geometryBox}` :
+            `circle(${radius} at ${newCx} ${newCy})`;
+
+      this.currentNode.style.setProperty(this.property, circleDef, "important");
+    } else if (point === "radius") {
+      let { value, unit, origRadius, ratio } = this[_dragging];
+      // convert center point to px, then get distance between center and mouse.
+      let { x: pageCx, y: pageCy } = this.convertPercentToPageCoords(this.coordinates.cx,
+                                                                     this.coordinates.cy);
+      let newRadiusPx = getDistance(pageCx, pageCy, pageX, pageY);
+
+      let delta = (newRadiusPx - origRadius) * ratio;
+      let newRadius = `${value + delta}${unit}`;
+
+      let circleDef = (this.geometryBox) ?
+                      `circle(${newRadius} at ${cx} ${cy} ${this.geometryBox}` :
+                      `circle(${newRadius} at ${cx} ${cy}`;
+
+      this.currentNode.style.setProperty(this.property, circleDef, "important");
+    }
+  }
+
+  /**
+   * Handle a click when highlighting an ellipse.
+   * @param {any} pageX the x coordinate of the click
+   * @param {any} pageY the y coordinate of the click
+   */
+  _handleEllipseClick(pageX, pageY) {
+    let { width, height } = this.zoomAdjustedDimensions;
+    let { percentX, percentY } = this.convertPageCoordsToPercent(pageX, pageY);
+    let point = this.getEllipseClickedPoint(percentX, percentY);
+    if (!point) {
+      return;
+    }
+
+    if (point === "center") {
+      let { cx, cy } = this.coordUnits;
+      let cxComputed = this.coordinates.cx / 100 * width;
+      let cyComputed = this.coordinates.cy / 100 * height;
+      let unitX = getUnit(cx);
+      let unitY = getUnit(cy);
+      let valueX = (isUnitless(cx)) ? cxComputed : parseFloat(cx);
+      let valueY = (isUnitless(cy)) ? cyComputed : parseFloat(cy);
+
+      let ratioX = (valueX / cxComputed) || 1;
+      let ratioY = (valueY / cyComputed) || 1;
+
+      this[_dragging] = { point, unitX, unitY, valueX, valueY,
+                          ratioX, ratioY, x: pageX, y: pageY };
+    } else if (point === "rx") {
+      let { rx } = this.coordinates;
+      rx = rx / 100 * width;
+      let value = this.coordUnits.rx;
+      let unit = getUnit(value);
+      value = (isUnitless(value)) ? rx : parseFloat(value);
+      let ratio = (value / rx) || 1;
+
+      this[_dragging] = { point, value, origRadius: rx, unit, ratio };
+    } else if (point === "ry") {
+      let { ry } = this.coordinates;
+      ry = ry / 100 * height;
+      let value = this.coordUnits.ry;
+      let unit = getUnit(value);
+      value = (isUnitless(value)) ? ry : parseFloat(value);
+      let ratio = (value / ry) || 1;
+
+      this[_dragging] = { point, value, origRadius: ry, unit, ratio };
+    }
+  }
+
+  /**
+   * Set the inline style of the ellipse, setting the center/rx/ry according to the
+   * mouse position.
+   * @param {String} point "center", "rx", or "ry"
+   * @param {Number} pageX the x coordinate of the mouse position, in terms of %
+   *        relative to the element
+   * @param {Number} pageY the y coordinate of the mouse position, in terms of %
+   *        relative to the element
+   */
+  _handleEllipseMove(point, pageX, pageY) {
+    let { percentX, percentY } = this.convertPageCoordsToPercent(pageX, pageY);
+    let { rx, ry, cx, cy } = this.coordUnits;
+
+    if (point === "center") {
+      let { unitX, unitY, valueX, valueY, ratioX, ratioY, x, y} = this[_dragging];
+      let deltaX = (pageX - x) * ratioX;
+      let deltaY = (pageY - y) * ratioY;
+      let newCx = `${valueX + deltaX}${unitX}`;
+      let newCy = `${valueY + deltaY}${unitY}`;
+      let ellipseDef = (this.geometryBox) ?
+        `ellipse(${rx} ${ry} at ${newCx} ${newCy}) ${this.geometryBox}` :
+        `ellipse(${rx} ${ry} at ${newCx} ${newCy})`;
+
+      this.currentNode.style.setProperty(this.property, ellipseDef, "important");
+    } else if (point === "rx") {
+      let { value, unit, origRadius, ratio } = this[_dragging];
+      let newRadiusPercent = Math.abs(percentX - this.coordinates.cx);
+      let { width } = this.zoomAdjustedDimensions;
+      let delta = ((newRadiusPercent / 100 * width) - origRadius) * ratio;
+      let newRadius = `${value + delta}${unit}`;
+
+      let ellipseDef = (this.geometryBox) ?
+        `ellipse(${newRadius} ${ry} at ${cx} ${cy}) ${this.geometryBox}` :
+        `ellipse(${newRadius} ${ry} at ${cx} ${cy})`;
+
+      this.currentNode.style.setProperty(this.property, ellipseDef, "important");
+    } else if (point === "ry") {
+      let { value, unit, origRadius, ratio } = this[_dragging];
+      let newRadiusPercent = Math.abs(percentY - this.coordinates.cy);
+      let { height } = this.zoomAdjustedDimensions;
+      let delta = ((newRadiusPercent / 100 * height) - origRadius) * ratio;
+      let newRadius = `${value + delta}${unit}`;
+
+      let ellipseDef = (this.geometryBox) ?
+        `ellipse(${rx} ${newRadius} at ${cx} ${cy}) ${this.geometryBox}` :
+        `ellipse(${rx} ${newRadius} at ${cx} ${cy})`;
+
+      this.currentNode.style.setProperty(this.property, ellipseDef, "important");
+    }
+  }
+
+  /**
+   * Handle a click when highlighting an inset.
+   * @param {any} pageX the x coordinate of the click
+   * @param {any} pageY the y coordinate of the click
+   */
+  _handleInsetClick(pageX, pageY) {
+    let { width, height } = this.zoomAdjustedDimensions;
+    let { percentX, percentY } = this.convertPageCoordsToPercent(pageX, pageY);
+    let point = this.getInsetClickedPoint(percentX, percentY);
+    if (!point) {
+      return;
+    }
+
+    let value = this.coordUnits[point];
+    let size = (point === "left" || point === "right") ? width : height;
+    let computedValue = this.coordinates[point] / 100 * size;
+    let unit = getUnit(value);
+    value = (isUnitless(value)) ? computedValue : parseFloat(value);
+    let ratio = (value / computedValue) || 1;
+    let origValue = (point === "left" || point === "right") ? pageX : pageY;
+
+    this[_dragging] = { point, value, origValue, unit, ratio };
+  }
+
+  /**
+   * Set the inline style of the inset, setting top/left/right/bottom according to the
+   * mouse position.
+   * @param {String} point "top", "left", "right", or "bottom"
+   * @param {Number} pageX the x coordinate of the mouse position, in terms of %
+   *        relative to the element
+   * @param {Number} pageY the y coordinate of the mouse position, in terms of %
+   *        relative to the element
+   * @memberof ShapesHighlighter
+   */
+  _handleInsetMove(point, pageX, pageY) {
+    let { top, left, right, bottom } = this.coordUnits;
+    let round = this.insetRound;
+    let { value, origValue, unit, ratio } = this[_dragging];
+
+    if (point === "left") {
+      let delta = (pageX - origValue) * ratio;
+      left = `${value + delta}${unit}`;
+    } else if (point === "right") {
+      let delta = (pageX - origValue) * ratio;
+      right = `${value - delta}${unit}`;
+    } else if (point === "top") {
+      let delta = (pageY - origValue) * ratio;
+      top = `${value + delta}${unit}`;
+    } else if (point === "bottom") {
+      let delta = (pageY - origValue) * ratio;