merge autoland to mozilla-central. r=merge a=merge
authorSebastian Hengst <archaeopteryx@coole-files.de>
Fri, 21 Jul 2017 11:12:24 +0200
changeset 418634 0faada5c2f308f101ab7c54a87b3dce80b97d0e3
parent 418533 7d2e89fb92331d7e4296391213c1e63db628e046 (current diff)
parent 418633 056aa9b5ece3b2758406f5855e3e547cdb72a973 (diff)
child 418732 9f01176142b34bea03868fa4a684c4e57c414dff
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, merge
milestone56.0a1
first release with
nightly linux32
0faada5c2f30 / 56.0a1 / 20170721100159 / files
nightly linux64
0faada5c2f30 / 56.0a1 / 20170721100159 / files
nightly mac
0faada5c2f30 / 56.0a1 / 20170721100207 / files
nightly win32
0faada5c2f30 / 56.0a1 / 20170721030204 / files
nightly win64
0faada5c2f30 / 56.0a1 / 20170721030204 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
merge autoland to mozilla-central. r=merge a=merge MozReview-Commit-ID: EdYDXWoGZXA
testing/profiles/prefs_general.js
--- 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,48 +4983,62 @@ 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)
       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)
       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
@@ -3678,16 +3721,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
@@ -30,16 +30,17 @@ support-files =
   browser_pageStyle_sample.html
   browser_pageStyle_sample_nested.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
@@ -258,8 +259,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;
+      bottom = `${value - delta}${unit}`;
+    }
+    let insetDef = (round) ?
+      `inset(${top} ${right} ${bottom} ${left} round ${round})` :
+      `inset(${top} ${right} ${bottom} ${left})`;
+
+    insetDef += (this.geometryBox) ? this.geometryBox : "";
+
+    this.currentNode.style.setProperty(this.property, insetDef, "important");
+  }
+
+  /**
+   * Convert the given coordinates on the page to percentages relative to the current
+   * element.
+   * @param {Number} pageX the x coordinate on the page
+   * @param {Number} pageY the y coordinate on the page
+   * @returns {Object} object of form {percentX, percentY}, which are the x/y coords
+   *          in percentages relative to the element.
+   */
+  convertPageCoordsToPercent(pageX, pageY) {
+    let { top, left, width, height } = this.zoomAdjustedDimensions;
+    pageX -= left;
+    pageY -= top;
+    let percentX = pageX * 100 / width;
+    let percentY = pageY * 100 / height;
+    return { percentX, percentY };
+  }
+
+  /**
+   * Convert the given x/y coordinates, in percentages relative to the current element,
+   * to pixel coordinates relative to the page
+   * @param {any} x the x coordinate
+   * @param {any} y the y coordinate
+   * @returns {Object} object of form {x, y}, which are the x/y coords in pixels
+   *          relative to the page
+   *
+   * @memberof ShapesHighlighter
+   */
+  convertPercentToPageCoords(x, y) {
+    let { top, left, width, height } = this.zoomAdjustedDimensions;
+    x = x * width / 100;
+    y = y * height / 100;
+    x += left;
+    y += top;
+    return { x, y };
+  }
+
+  /**
+   * Get the id of the point clicked on the polygon highlighter.
+   * @param {Number} pageX the x coordinate on the page, in % relative to the element
+   * @param {Number} pageY the y coordinate on the page, in % relative to the element
+   * @returns {Number} the index of the point that was clicked on in this.coordinates,
+   *          or -1 if none of the points were clicked on.
+   */
+  getPolygonClickedPoint(pageX, pageY) {
+    let { coordinates } = this;
+    let { width, height } = this.zoomAdjustedDimensions;
+    let zoom = getCurrentZoom(this.win);
+    let clickRadiusX = BASE_MARKER_SIZE / zoom * 100 / width;
+    let clickRadiusY = BASE_MARKER_SIZE / zoom * 100 / height;
+
+    for (let [index, coord] of coordinates.entries()) {
+      let [x, y] = coord;
+      if (pageX >= x - clickRadiusX && pageX <= x + clickRadiusX &&
+          pageY >= y - clickRadiusY && pageY <= y + clickRadiusY) {
+        return index;
+      }
+    }
+
+    return -1;
+  }
+
+  /**
+   * Check if the mouse clicked on a line of the polygon, and if so, add a point near
+   * the click.
+   * @param {Number} pageX the x coordinate on the page, in % relative to the element
+   * @param {Number} pageY the y coordinate on the page, in % relative to the element
+   */
+  getPolygonClickedLine(pageX, pageY) {
+    let { coordinates } = this;
+    let { width } = this.zoomAdjustedDimensions;
+    let clickWidth = LINE_CLICK_WIDTH * 100 / width;
+
+    for (let i = 0; i < coordinates.length; i++) {
+      let [x1, y1] = coordinates[i];
+      let [x2, y2] = (i === coordinates.length - 1) ? coordinates[0] : coordinates[i + 1];
+      // Get the distance between clicked point and line drawn between points 1 and 2
+      // to check if the click was on the line between those two points.
+      let distance = distanceToLine(x1, y1, x2, y2, pageX, pageY);
+      if (distance <= clickWidth &&
+          Math.min(x1, x2) - clickWidth <= pageX &&
+          pageX <= Math.max(x1, x2) + clickWidth &&
+          Math.min(y1, y2) - clickWidth <= pageY &&
+          pageY <= Math.max(y1, y2) + clickWidth) {
+        // Get the point on the line closest to the clicked point.
+        let [newX, newY] = projection(x1, y1, x2, y2, pageX, pageY);
+        this._addPolygonPoint(i, newX, newY);
+        return;
+      }
+    }
+  }
+
+  /**
+   * Check if the center point or radius of the circle highlighter was clicked
+   * @param {Number} pageX the x coordinate on the page, in % relative to the element
+   * @param {Number} pageY the y coordinate on the page, in % relative to the element
+   * @returns {String} "center" if the center point was clicked, "radius" if the radius
+   *          was clicked, "" if neither was clicked.
+   */
+  getCircleClickedPoint(pageX, pageY) {
+    let { cx, cy, rx, ry } = this.coordinates;
+    let { width, height } = this.zoomAdjustedDimensions;
+    let zoom = getCurrentZoom(this.win);
+    let clickRadiusX = BASE_MARKER_SIZE / zoom * 100 / width;
+    let clickRadiusY = BASE_MARKER_SIZE / zoom * 100 / height;
+
+    if (clickedOnPoint(pageX, pageY, cx, cy, clickRadiusX, clickRadiusY)) {
+      return "center";
+    }
+
+    let clickWidthX = LINE_CLICK_WIDTH * 100 / width;
+    let clickWidthY = LINE_CLICK_WIDTH * 100 / height;
+    if (clickedOnEllipseEdge(pageX, pageY, cx, cy, rx, ry, clickWidthX, clickWidthY) ||
+        clickedOnPoint(pageX, pageY, cx + rx, cy, clickRadiusX, clickRadiusY)) {
+      return "radius";
+    }
+
+    return "";
+  }
+
+  /**
+   * Check if the center point or rx/ry points of the ellipse highlighter was clicked
+   * @param {Number} pageX the x coordinate on the page, in % relative to the element
+   * @param {Number} pageY the y coordinate on the page, in % relative to the element
+   * @returns {String} "center" if the center point was clicked, "rx" if the x-radius
+   *          point was clicked, "ry" if the y-radius point was clicked,
+   *          "" if none was clicked.
+   */
+  getEllipseClickedPoint(pageX, pageY) {
+    let { cx, cy, rx, ry } = this.coordinates;
+    let { width, height } = this.zoomAdjustedDimensions;
+    let zoom = getCurrentZoom(this.win);
+    let clickRadiusX = BASE_MARKER_SIZE / zoom * 100 / width;
+    let clickRadiusY = BASE_MARKER_SIZE / zoom * 100 / height;
+
+    if (clickedOnPoint(pageX, pageY, cx, cy, clickRadiusX, clickRadiusY)) {
+      return "center";
+    }
+
+    if (clickedOnPoint(pageX, pageY, cx + rx, cy, clickRadiusX, clickRadiusY)) {
+      return "rx";
+    }
+
+    if (clickedOnPoint(pageX, pageY, cx, cy + ry, clickRadiusX, clickRadiusY)) {
+      return "ry";
+    }
+
+    return "";
+  }
+
+  /**
+   * Check if the edges of the inset highlighter was clicked
+   * @param {Number} pageX the x coordinate on the page, in % relative to the element
+   * @param {Number} pageY the y coordinate on the page, in % relative to the element
+   * @returns {String} "top", "left", "right", or "bottom" if any of those edges were
+   *          clicked. "" if none were clicked.
+   */
+  getInsetClickedPoint(pageX, pageY) {
+    let { top, left, right, bottom } = this.coordinates;
+    let zoom = getCurrentZoom(this.win);
+    let { width, height } = this.zoomAdjustedDimensions;
+    let clickWidthX = LINE_CLICK_WIDTH * 100 / width;
+    let clickWidthY = LINE_CLICK_WIDTH * 100 / height;
+    let clickRadiusX = BASE_MARKER_SIZE / zoom * 100 / width;
+    let clickRadiusY = BASE_MARKER_SIZE / zoom * 100 / height;
+    let centerX = (left + (100 - right)) / 2;
+    let centerY = (top + (100 - bottom)) / 2;
+
+    if ((pageX >= left - clickWidthX && pageX <= left + clickWidthX &&
+        pageY >= top && pageY <= 100 - bottom) ||