Bug 1399607 - Add about:home autofocus, adult filter and bug fixes to Activity Stream. r?ursula draft
authorEd Lee <edilee@mozilla.com>
Thu, 14 Sep 2017 02:52:33 -0700
changeset 664745 427217e1b450da64a3b99a95ef67491ee65fe88b
parent 664736 dd6b788f149763c4014c27f2fe1a1d13228bda82
child 731527 96b83b33e307f3d306bda3579cd4e38f6ac17c8f
push id79787
push userbmo:edilee@mozilla.com
push dateThu, 14 Sep 2017 09:53:07 +0000
reviewersursula
bugs1399607
milestone57.0a1
Bug 1399607 - Add about:home autofocus, adult filter and bug fixes to Activity Stream. r?ursula MozReview-Commit-ID: 4d1HdwLxxhJ
browser/extensions/activity-stream/common/Actions.jsm
browser/extensions/activity-stream/data/content/activity-stream-prerendered.html
browser/extensions/activity-stream/data/content/activity-stream.bundle.js
browser/extensions/activity-stream/data/content/activity-stream.css
browser/extensions/activity-stream/data/locales.json
browser/extensions/activity-stream/install.rdf.in
browser/extensions/activity-stream/lib/ActivityStream.jsm
browser/extensions/activity-stream/lib/FilterAdult.jsm
browser/extensions/activity-stream/lib/HighlightsFeed.jsm
browser/extensions/activity-stream/lib/NewTabInit.jsm
browser/extensions/activity-stream/lib/TelemetryFeed.jsm
browser/extensions/activity-stream/lib/TopSitesFeed.jsm
browser/extensions/activity-stream/lib/TopStoriesFeed.jsm
browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js
browser/extensions/activity-stream/test/unit/lib/HighlightsFeed.test.js
browser/extensions/activity-stream/test/unit/lib/NewTabInit.test.js
browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js
browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js
browser/extensions/activity-stream/test/unit/unit-entry.js
--- a/browser/extensions/activity-stream/common/Actions.jsm
+++ b/browser/extensions/activity-stream/common/Actions.jsm
@@ -52,16 +52,17 @@ for (const type of [
   "PLACES_HISTORY_CLEARED",
   "PLACES_LINK_BLOCKED",
   "PLACES_LINK_DELETED",
   "PREFS_INITIAL_VALUES",
   "PREF_CHANGED",
   "SAVE_SESSION_PERF_DATA",
   "SAVE_TO_POCKET",
   "SCREENSHOT_UPDATED",
+  "SEARCH_BOX_FOCUSED",
   "SECTION_DEREGISTER",
   "SECTION_DISABLE",
   "SECTION_ENABLE",
   "SECTION_REGISTER",
   "SECTION_UPDATE",
   "SECTION_UPDATE_CARD",
   "SET_PREF",
   "SHOW_FIREFOX_ACCOUNTS",
--- a/browser/extensions/activity-stream/data/content/activity-stream-prerendered.html
+++ b/browser/extensions/activity-stream/data/content/activity-stream-prerendered.html
@@ -4,17 +4,17 @@
     <meta charset="utf-8">
     <meta http-equiv="Content-Security-Policy-Report-Only" content="script-src 'unsafe-inline'; img-src http: https: data: blob:; style-src 'unsafe-inline'; child-src 'none'; object-src 'none'; report-uri https://tiles.services.mozilla.com/v4/links/activity-stream/csp">
     <title></title>
     <link rel="icon" type="image/png" id="favicon" href="chrome://branding/content/icon32.png"/>
     <link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
     <link rel="stylesheet" href="resource://activity-stream/data/content/activity-stream.css" />
   </head>
   <body class="activity-stream">
-    <div id="root"><div class="outer-wrapper fixed-to-top" data-reactroot="" data-reactid="1" data-react-checksum="2126594602"><main data-reactid="2"><div class="search-wrapper" data-reactid="3"><label for="newtab-search-text" class="search-label" data-reactid="4"><span class="sr-only" data-reactid="5"><span data-reactid="6">Search the Web</span></span></label><input type="search" id="newtab-search-text" maxlength="256" placeholder="Search the Web" title="Search the Web" data-reactid="7"/><button id="searchSubmit" class="search-button" title=" " data-reactid="8"><span class="sr-only" data-reactid="9"><span data-reactid="10"> </span></span></button></div><section class="top-sites" data-reactid="11"><h3 class="section-title" data-reactid="12"><span class="icon icon-small-spacer icon-topsites" data-reactid="13"></span><span data-reactid="14"> </span></h3><ul class="top-sites-list" data-reactid="15"><li class="top-site-outer placeholder" data-reactid="16"><a data-reactid="17"><div class="tile" aria-hidden="true" data-reactid="18"><span class="letter-fallback" data-reactid="19"></span><div class="screenshot" style="background-image:none;" data-reactid="20"></div></div><div class="title " data-reactid="21"><span dir="auto" data-reactid="22"></span></div></a></li><li class="top-site-outer placeholder" data-reactid="23"><a data-reactid="24"><div class="tile" aria-hidden="true" data-reactid="25"><span class="letter-fallback" data-reactid="26"></span><div class="screenshot" style="background-image:none;" data-reactid="27"></div></div><div class="title " data-reactid="28"><span dir="auto" data-reactid="29"></span></div></a></li><li class="top-site-outer placeholder" data-reactid="30"><a data-reactid="31"><div class="tile" aria-hidden="true" data-reactid="32"><span class="letter-fallback" data-reactid="33"></span><div class="screenshot" style="background-image:none;" data-reactid="34"></div></div><div class="title " data-reactid="35"><span dir="auto" data-reactid="36"></span></div></a></li><li class="top-site-outer placeholder" data-reactid="37"><a data-reactid="38"><div class="tile" aria-hidden="true" data-reactid="39"><span class="letter-fallback" data-reactid="40"></span><div class="screenshot" style="background-image:none;" data-reactid="41"></div></div><div class="title " data-reactid="42"><span dir="auto" data-reactid="43"></span></div></a></li><li class="top-site-outer placeholder" data-reactid="44"><a data-reactid="45"><div class="tile" aria-hidden="true" data-reactid="46"><span class="letter-fallback" data-reactid="47"></span><div class="screenshot" style="background-image:none;" data-reactid="48"></div></div><div class="title " data-reactid="49"><span dir="auto" data-reactid="50"></span></div></a></li><li class="top-site-outer placeholder" data-reactid="51"><a data-reactid="52"><div class="tile" aria-hidden="true" data-reactid="53"><span class="letter-fallback" data-reactid="54"></span><div class="screenshot" style="background-image:none;" data-reactid="55"></div></div><div class="title " data-reactid="56"><span dir="auto" data-reactid="57"></span></div></a></li></ul></section><div class="sections-list" data-reactid="58"><section data-reactid="59"><div class="section-top-bar" data-reactid="60"><h3 class="section-title" data-reactid="61"><span class="icon icon-small-spacer icon-pocket" data-reactid="62"></span><span data-reactid="63"> </span></h3></div><ul class="section-list" style="padding:0;" data-reactid="64"><li class="card-outer placeholder" data-reactid="65"><a data-reactid="66"><div class="card" data-reactid="67"><div class="card-details no-image" data-reactid="68"><div class="card-text no-image no-host-name no-context" data-reactid="69"><h4 class="card-title" dir="auto" data-reactid="70"></h4><p class="card-description" dir="auto" data-reactid="71"></p></div></div></div></a></li><li class="card-outer placeholder" data-reactid="72"><a data-reactid="73"><div class="card" data-reactid="74"><div class="card-details no-image" data-reactid="75"><div class="card-text no-image no-host-name no-context" data-reactid="76"><h4 class="card-title" dir="auto" data-reactid="77"></h4><p class="card-description" dir="auto" data-reactid="78"></p></div></div></div></a></li><li class="card-outer placeholder" data-reactid="79"><a data-reactid="80"><div class="card" data-reactid="81"><div class="card-details no-image" data-reactid="82"><div class="card-text no-image no-host-name no-context" data-reactid="83"><h4 class="card-title" dir="auto" data-reactid="84"></h4><p class="card-description" dir="auto" data-reactid="85"></p></div></div></div></a></li></ul><div class="topic" data-reactid="86"><span data-reactid="87"><span data-reactid="88"> </span></span><ul data-reactid="89"><li data-reactid="90"><a class="topic-link" data-reactid="91"></a></li></ul></div></section><section data-reactid="92"><div class="section-top-bar" data-reactid="93"><h3 class="section-title" data-reactid="94"><span class="icon icon-small-spacer icon-highlights" data-reactid="95"></span><span data-reactid="96"> </span></h3></div><ul class="section-list" style="padding:0;" data-reactid="97"><li class="card-outer placeholder" data-reactid="98"><a data-reactid="99"><div class="card" data-reactid="100"><div class="card-details no-image" data-reactid="101"><div class="card-text no-image no-host-name no-context" data-reactid="102"><h4 class="card-title" dir="auto" data-reactid="103"></h4><p class="card-description" dir="auto" data-reactid="104"></p></div></div></div></a></li><li class="card-outer placeholder" data-reactid="105"><a data-reactid="106"><div class="card" data-reactid="107"><div class="card-details no-image" data-reactid="108"><div class="card-text no-image no-host-name no-context" data-reactid="109"><h4 class="card-title" dir="auto" data-reactid="110"></h4><p class="card-description" dir="auto" data-reactid="111"></p></div></div></div></a></li><li class="card-outer placeholder" data-reactid="112"><a data-reactid="113"><div class="card" data-reactid="114"><div class="card-details no-image" data-reactid="115"><div class="card-text no-image no-host-name no-context" data-reactid="116"><h4 class="card-title" dir="auto" data-reactid="117"></h4><p class="card-description" dir="auto" data-reactid="118"></p></div></div></div></a></li></ul></section></div><!-- react-empty: 119 --></main></div></div>
+    <div id="root"><div class="outer-wrapper fixed-to-top" data-reactroot="" data-reactid="1" data-react-checksum="1939271514"><main data-reactid="2"><div class="search-wrapper" data-reactid="3"><label for="newtab-search-text" class="search-label" data-reactid="4"><span class="sr-only" data-reactid="5"><span data-reactid="6">Search the Web</span></span></label><input type="search" id="newtab-search-text" maxlength="256" placeholder="Search the Web" title="Search the Web" data-reactid="7"/><button id="searchSubmit" class="search-button" title=" " data-reactid="8"><span class="sr-only" data-reactid="9"><span data-reactid="10"> </span></span></button></div><section class="top-sites" data-reactid="11"><h3 class="section-title" data-reactid="12"><span class="icon icon-small-spacer icon-topsites" data-reactid="13"></span><span data-reactid="14"> </span></h3><ul class="top-sites-list" data-reactid="15"><li class="top-site-outer placeholder" data-reactid="16"><a data-reactid="17"><div class="tile" aria-hidden="true" data-reactid="18"><span class="letter-fallback" data-reactid="19"></span><div class="screenshot" style="background-image:none;" data-reactid="20"></div></div><div class="title " data-reactid="21"><span dir="auto" data-reactid="22"></span></div></a></li><li class="top-site-outer placeholder" data-reactid="23"><a data-reactid="24"><div class="tile" aria-hidden="true" data-reactid="25"><span class="letter-fallback" data-reactid="26"></span><div class="screenshot" style="background-image:none;" data-reactid="27"></div></div><div class="title " data-reactid="28"><span dir="auto" data-reactid="29"></span></div></a></li><li class="top-site-outer placeholder" data-reactid="30"><a data-reactid="31"><div class="tile" aria-hidden="true" data-reactid="32"><span class="letter-fallback" data-reactid="33"></span><div class="screenshot" style="background-image:none;" data-reactid="34"></div></div><div class="title " data-reactid="35"><span dir="auto" data-reactid="36"></span></div></a></li><li class="top-site-outer placeholder" data-reactid="37"><a data-reactid="38"><div class="tile" aria-hidden="true" data-reactid="39"><span class="letter-fallback" data-reactid="40"></span><div class="screenshot" style="background-image:none;" data-reactid="41"></div></div><div class="title " data-reactid="42"><span dir="auto" data-reactid="43"></span></div></a></li><li class="top-site-outer placeholder" data-reactid="44"><a data-reactid="45"><div class="tile" aria-hidden="true" data-reactid="46"><span class="letter-fallback" data-reactid="47"></span><div class="screenshot" style="background-image:none;" data-reactid="48"></div></div><div class="title " data-reactid="49"><span dir="auto" data-reactid="50"></span></div></a></li><li class="top-site-outer placeholder" data-reactid="51"><a data-reactid="52"><div class="tile" aria-hidden="true" data-reactid="53"><span class="letter-fallback" data-reactid="54"></span><div class="screenshot" style="background-image:none;" data-reactid="55"></div></div><div class="title " data-reactid="56"><span dir="auto" data-reactid="57"></span></div></a></li></ul><div class="edit-topsites-wrapper" data-reactid="58"><div class="edit-topsites-button" data-reactid="59"><button class="edit" title=" " data-reactid="60"><span data-reactid="61"> </span></button></div></div></section><div class="sections-list" data-reactid="62"><section data-reactid="63"><div class="section-top-bar" data-reactid="64"><h3 class="section-title" data-reactid="65"><span class="icon icon-small-spacer icon-pocket" data-reactid="66"></span><span data-reactid="67"> </span></h3></div><ul class="section-list" style="padding:0;" data-reactid="68"><li class="card-outer placeholder" data-reactid="69"><a data-reactid="70"><div class="card" data-reactid="71"><div class="card-details no-image" data-reactid="72"><div class="card-text no-image no-host-name no-context" data-reactid="73"><h4 class="card-title" dir="auto" data-reactid="74"></h4><p class="card-description" dir="auto" data-reactid="75"></p></div><div class="card-context" data-reactid="76"></div></div></div></a></li><li class="card-outer placeholder" data-reactid="77"><a data-reactid="78"><div class="card" data-reactid="79"><div class="card-details no-image" data-reactid="80"><div class="card-text no-image no-host-name no-context" data-reactid="81"><h4 class="card-title" dir="auto" data-reactid="82"></h4><p class="card-description" dir="auto" data-reactid="83"></p></div><div class="card-context" data-reactid="84"></div></div></div></a></li><li class="card-outer placeholder" data-reactid="85"><a data-reactid="86"><div class="card" data-reactid="87"><div class="card-details no-image" data-reactid="88"><div class="card-text no-image no-host-name no-context" data-reactid="89"><h4 class="card-title" dir="auto" data-reactid="90"></h4><p class="card-description" dir="auto" data-reactid="91"></p></div><div class="card-context" data-reactid="92"></div></div></div></a></li></ul><div class="topic" data-reactid="93"><span data-reactid="94"><span data-reactid="95"> </span></span><ul data-reactid="96"><li data-reactid="97"><a class="topic-link" data-reactid="98"></a></li></ul></div></section><section data-reactid="99"><div class="section-top-bar" data-reactid="100"><h3 class="section-title" data-reactid="101"><span class="icon icon-small-spacer icon-highlights" data-reactid="102"></span><span data-reactid="103"> </span></h3></div><ul class="section-list" style="padding:0;" data-reactid="104"><li class="card-outer placeholder" data-reactid="105"><a data-reactid="106"><div class="card" data-reactid="107"><div class="card-details no-image" data-reactid="108"><div class="card-text no-image no-host-name no-context" data-reactid="109"><h4 class="card-title" dir="auto" data-reactid="110"></h4><p class="card-description" dir="auto" data-reactid="111"></p></div><div class="card-context" data-reactid="112"></div></div></div></a></li><li class="card-outer placeholder" data-reactid="113"><a data-reactid="114"><div class="card" data-reactid="115"><div class="card-details no-image" data-reactid="116"><div class="card-text no-image no-host-name no-context" data-reactid="117"><h4 class="card-title" dir="auto" data-reactid="118"></h4><p class="card-description" dir="auto" data-reactid="119"></p></div><div class="card-context" data-reactid="120"></div></div></div></a></li><li class="card-outer placeholder" data-reactid="121"><a data-reactid="122"><div class="card" data-reactid="123"><div class="card-details no-image" data-reactid="124"><div class="card-text no-image no-host-name no-context" data-reactid="125"><h4 class="card-title" dir="auto" data-reactid="126"></h4><p class="card-description" dir="auto" data-reactid="127"></p></div><div class="card-context" data-reactid="128"></div></div></div></a></li></ul></section></div><!-- react-empty: 129 --></main></div></div>
     <div id="snippets-container">
       <div id="snippets"></div>
     </div>
 <script src="resource://activity-stream/data/content/activity-stream-initial-state.js"></script>
     <script src="chrome://browser/content/contentSearchUI.js"></script>
     <script src="resource://activity-stream/vendor/react.js"></script>
     <script src="resource://activity-stream/vendor/react-dom.js"></script>
     <script src="resource://activity-stream/vendor/react-intl.js"></script>
--- a/browser/extensions/activity-stream/data/content/activity-stream.bundle.js
+++ b/browser/extensions/activity-stream/data/content/activity-stream.bundle.js
@@ -89,17 +89,17 @@ const globalImportContext = typeof Windo
 
 
 // Create an object that avoids accidental differing key/value pairs:
 // {
 //   INIT: "INIT",
 //   UNINIT: "UNINIT"
 // }
 const actionTypes = {};
-for (const type of ["BLOCK_URL", "BOOKMARK_URL", "DELETE_BOOKMARK_BY_ID", "DELETE_HISTORY_URL", "DELETE_HISTORY_URL_CONFIRM", "DIALOG_CANCEL", "DIALOG_OPEN", "INIT", "LOCALE_UPDATED", "MIGRATION_CANCEL", "MIGRATION_COMPLETED", "MIGRATION_START", "NEW_TAB_INIT", "NEW_TAB_INITIAL_STATE", "NEW_TAB_LOAD", "NEW_TAB_REHYDRATED", "NEW_TAB_STATE_REQUEST", "NEW_TAB_UNLOAD", "OPEN_LINK", "OPEN_NEW_WINDOW", "OPEN_PRIVATE_WINDOW", "PINNED_SITES_UPDATED", "PLACES_BOOKMARK_ADDED", "PLACES_BOOKMARK_CHANGED", "PLACES_BOOKMARK_REMOVED", "PLACES_HISTORY_CLEARED", "PLACES_LINK_BLOCKED", "PLACES_LINK_DELETED", "PREFS_INITIAL_VALUES", "PREF_CHANGED", "SAVE_SESSION_PERF_DATA", "SAVE_TO_POCKET", "SCREENSHOT_UPDATED", "SECTION_DEREGISTER", "SECTION_DISABLE", "SECTION_ENABLE", "SECTION_REGISTER", "SECTION_UPDATE", "SECTION_UPDATE_CARD", "SET_PREF", "SHOW_FIREFOX_ACCOUNTS", "SNIPPETS_DATA", "SNIPPETS_RESET", "SYSTEM_TICK", "TELEMETRY_IMPRESSION_STATS", "TELEMETRY_PERFORMANCE_EVENT", "TELEMETRY_UNDESIRED_EVENT", "TELEMETRY_USER_EVENT", "TOP_SITES_ADD", "TOP_SITES_PIN", "TOP_SITES_UNPIN", "TOP_SITES_UPDATED", "UNINIT"]) {
+for (const type of ["BLOCK_URL", "BOOKMARK_URL", "DELETE_BOOKMARK_BY_ID", "DELETE_HISTORY_URL", "DELETE_HISTORY_URL_CONFIRM", "DIALOG_CANCEL", "DIALOG_OPEN", "INIT", "LOCALE_UPDATED", "MIGRATION_CANCEL", "MIGRATION_COMPLETED", "MIGRATION_START", "NEW_TAB_INIT", "NEW_TAB_INITIAL_STATE", "NEW_TAB_LOAD", "NEW_TAB_REHYDRATED", "NEW_TAB_STATE_REQUEST", "NEW_TAB_UNLOAD", "OPEN_LINK", "OPEN_NEW_WINDOW", "OPEN_PRIVATE_WINDOW", "PINNED_SITES_UPDATED", "PLACES_BOOKMARK_ADDED", "PLACES_BOOKMARK_CHANGED", "PLACES_BOOKMARK_REMOVED", "PLACES_HISTORY_CLEARED", "PLACES_LINK_BLOCKED", "PLACES_LINK_DELETED", "PREFS_INITIAL_VALUES", "PREF_CHANGED", "SAVE_SESSION_PERF_DATA", "SAVE_TO_POCKET", "SCREENSHOT_UPDATED", "SEARCH_BOX_FOCUSED", "SECTION_DEREGISTER", "SECTION_DISABLE", "SECTION_ENABLE", "SECTION_REGISTER", "SECTION_UPDATE", "SECTION_UPDATE_CARD", "SET_PREF", "SHOW_FIREFOX_ACCOUNTS", "SNIPPETS_DATA", "SNIPPETS_RESET", "SYSTEM_TICK", "TELEMETRY_IMPRESSION_STATS", "TELEMETRY_PERFORMANCE_EVENT", "TELEMETRY_UNDESIRED_EVENT", "TELEMETRY_USER_EVENT", "TOP_SITES_ADD", "TOP_SITES_PIN", "TOP_SITES_UNPIN", "TOP_SITES_UPDATED", "UNINIT"]) {
   actionTypes[type] = type;
 }
 
 // Helper function for creating routed actions between content and main
 // Not intended to be used by consumers
 function _RouteMessage(action, options) {
   const meta = action.meta ? Object.assign({}, action.meta) : {};
   if (!options || !options.from || !options.to) {
@@ -1237,17 +1237,17 @@ const TopSites = props => {
         realTopSites.map((link, index) => link && React.createElement(TopSite, {
           key: link.guid || link.url,
           dispatch: props.dispatch,
           link: link,
           index: index,
           intl: props.intl })),
         placeholderCount > 0 && [...Array(placeholderCount)].map((_, i) => React.createElement(TopSitePlaceholder, { key: i }))
       ),
-      realTopSites.length > 0 && React.createElement(TopSitesEdit, props)
+      React.createElement(TopSitesEdit, props)
     )
   );
 };
 
 module.exports = connect(state => ({ TopSites: state.TopSites, TopSitesCount: state.Prefs.values.topSitesCount }))(TopSites);
 module.exports._unconnected = TopSites;
 
 /***/ }),
@@ -1943,17 +1943,17 @@ module.exports.CheckPinTopSite = (site, 
 
 "use strict";
 /* globals ContentSearchUIController */
 
 
 const React = __webpack_require__(1);
 const { connect } = __webpack_require__(3);
 const { FormattedMessage, injectIntl } = __webpack_require__(2);
-const { actionCreators: ac } = __webpack_require__(0);
+const { actionCreators: ac, actionTypes: at } = __webpack_require__(0);
 const { IS_NEWTAB } = __webpack_require__(20);
 
 class Search extends React.Component {
   constructor(props) {
     super(props);
     this.onClick = this.onClick.bind(this);
     this.onInputMount = this.onInputMount.bind(this);
   }
@@ -1986,16 +1986,24 @@ class Search extends React.Component {
       // more details)
       const searchSource = IS_NEWTAB ? "newtab" : "homepage";
 
       // gContentSearchController needs to exist as a global so that tests for
       // the existing about:home can find it; and so it allows these tests to pass.
       // In the future, when activity stream is default about:home, this can be renamed
       window.gContentSearchController = new ContentSearchUIController(input, input.parentNode, healthReportKey, searchSource);
       addEventListener("ContentSearchClient", this);
+
+      // Focus the search box if we are on about:home
+      if (!IS_NEWTAB) {
+        input.focus();
+        // Tell the addon side that search box is focused in case the browser
+        // needs to be focused too.
+        this.props.dispatch(ac.SendToMain({ type: at.SEARCH_BOX_FOCUSED }));
+      }
     } else {
       window.gContentSearchController = null;
       removeEventListener("ContentSearchClient", this);
     }
   }
 
   /*
    * Do not change the ID on the input field, as legacy newtab code
@@ -2714,24 +2722,30 @@ class Card extends React.Component {
                 link.title
               ),
               React.createElement(
                 "p",
                 { className: "card-description", dir: "auto" },
                 link.description
               )
             ),
-            icon && React.createElement(
+            React.createElement(
               "div",
               { className: "card-context" },
-              React.createElement("span", { className: `card-context-icon icon icon-${icon}` }),
-              React.createElement(
+              icon && !link.context && React.createElement("span", { className: `card-context-icon icon icon-${icon}` }),
+              link.icon && link.context && React.createElement("span", { className: "card-context-icon icon", style: { backgroundImage: `url('${link.icon}')` } }),
+              intlID && !link.context && React.createElement(
                 "div",
                 { className: "card-context-label" },
                 React.createElement(FormattedMessage, { id: intlID, defaultMessage: "Visited" })
+              ),
+              link.context && React.createElement(
+                "div",
+                { className: "card-context-label" },
+                link.context
               )
             )
           )
         )
       ),
       !props.placeholder && React.createElement(
         "button",
         { className: "context-menu-button icon",
@@ -3346,16 +3360,20 @@ class SnippetsProvider {
       throw new Error(`No element was found with id '${this.elementId}'.`);
     }
 
     // This could happen if fetching failed
     if (!payload) {
       throw new Error("No remote snippets were found in gSnippetsMap.");
     }
 
+    if (typeof payload !== "string") {
+      throw new Error("Snippet payload was incorrectly formatted");
+    }
+
     // Note that injecting snippets can throw if they're invalid XML.
     snippetsEl.innerHTML = payload;
 
     // Scripts injected by innerHTML are inactive, so we have to relocate them
     // through DOM manipulation to activate their contents.
     for (const scriptEl of snippetsEl.getElementsByTagName("script")) {
       const relocatedScript = document.createElement("script");
       relocatedScript.text = scriptEl.text;
--- a/browser/extensions/activity-stream/data/content/activity-stream.css
+++ b/browser/extensions/activity-stream/data/content/activity-stream.css
@@ -964,24 +964,24 @@ main {
     outline: none;
     position: absolute;
     width: 224px; }
     .card-outer > a.active .card, .card-outer > a:focus .card {
       box-shadow: 0 0 0 5px #D7D7DB;
       transition: box-shadow 150ms; }
     .card-outer > a.active .card-title, .card-outer > a:focus .card-title {
       color: #0060DF; }
-  .card-outer:hover, .card-outer:focus, .card-outer.active {
+  .card-outer:-moz-any(:hover, :focus, .active):not(.placeholder) {
     outline: none;
     box-shadow: 0 0 0 5px #D7D7DB;
     transition: box-shadow 150ms; }
-    .card-outer:hover .context-menu-button, .card-outer:focus .context-menu-button, .card-outer.active .context-menu-button {
+    .card-outer:-moz-any(:hover, :focus, .active):not(.placeholder) .context-menu-button {
       transform: scale(1);
       opacity: 1; }
-    .card-outer:hover .card-title, .card-outer:focus .card-title, .card-outer.active .card-title {
+    .card-outer:-moz-any(:hover, :focus, .active):not(.placeholder) .card-title {
       color: #0060DF; }
   .card-outer .card-preview-image-outer {
     position: relative;
     background: linear-gradient(135deg, #B1B1B3, #D7D7DB);
     height: 122px;
     border-radius: 3px 3px 0 0;
     overflow: hidden; }
     .card-outer .card-preview-image-outer:dir(rtl) {
--- a/browser/extensions/activity-stream/data/locales.json
+++ b/browser/extensions/activity-stream/data/locales.json
@@ -3722,16 +3722,46 @@
     "welcome_title": "ស្វាគមន៍​មក​កាន់​ផ្ទាំង​ថ្មី",
     "welcome_body": "Firefox នឹង​ប្រើប្រាស់​កន្លែង​ទំនេរ​នេះ ដើម្បី​បង្ហាញ​ចំណាំ អត្ថបទ វីដេអូ និង​ទំព័រ​ដែល​ទាក់ទង​អ្នក​បំផុត ដែល​អ្នក​បាន​ចូល​មើល​ថ្មីៗ​នេះ ដូច្នេះ​អ្នក​អាច​ត្រឡប់​ទៅ​​កាន់​​វា​​វិញ​បាន​យ៉ាងងាយស្រួល។",
     "welcome_label": "កំពុង​បញ្ជាក់​ការ​រំលេច​របស់​អ្នក",
     "time_label_less_than_minute": "<1 នាទី",
     "time_label_minute": "{number} នាទី",
     "time_label_hour": "{number} ម៉ោង",
     "time_label_day": "{number} ថ្ងៃ"
   },
+  "kn": {
+    "newtab_page_title": "ಹೊಸ ಹಾಳೆ",
+    "default_label_loading": "ಲೋಡ್ ಆಗುತ್ತಿದೆ…",
+    "header_top_sites": "ಪ್ರಮುಖ ತಾಣಗಳು",
+    "header_stories": "ಪ್ರಮುಖ ಸುದ್ದಿಗಳು",
+    "header_highlights": "ಮುಖ್ಯಾಂಶಗಳು",
+    "header_visit_again": "ಮತ್ತೆ ಭೇಟಿಕೊಡು",
+    "header_bookmarks": "ಇತ್ತೀಚಿಗೆ ಮಾಡಲಾದ ಬುಕ್‌ಮಾರ್ಕುಗಳು",
+    "header_stories_from": "ಯಿಂದ",
+    "type_label_visited": "ಭೇಟಿ ನೀಡಲಾದ‍",
+    "type_label_bookmarked": "ಪುಟಗುರುತು ಮಾಡಲಾದ",
+    "type_label_open": "ತೆರೆ",
+    "type_label_topic": "ವಿಷಯ",
+    "type_label_now": "ಈಗ",
+    "menu_action_bookmark": "ಪುಟ ಗುರುತು",
+    "menu_action_remove_bookmark": "ಪುಟ ಗುರುತು ತೆಗೆ",
+    "menu_action_copy_address": "ವಿಳಾಸವನ್ನು ನಕಲಿಸು",
+    "menu_action_email_link": "ಇಮೈಲ್ ಕೊಂಡಿ…",
+    "menu_action_open_new_window": "ಹೊಸ ಕಿಟಕಿಯಲ್ಲಿ ತೆರೆ",
+    "search_button": "ಹುಡುಕು",
+    "search_settings": "ಹುಡುಕು ಸಿದ್ಧತೆಗಳನ್ನು ಬದಲಾಯಿಸು",
+    "settings_pane_search_header": "ಹುಡುಕು",
+    "settings_pane_topsites_options_showmore": "ಎರಡು ಸಾಲುಗಳನ್ನು ಪ್ರದರ್ಶಿಸು",
+    "edit_topsites_button_text": "‍ತಿದ್ದು",
+    "edit_topsites_showmore_button": "‍ಹೆಚ್ಚು ತೋರಿಸು",
+    "edit_topsites_add_button": "ಸೇರಿಸು",
+    "topsites_form_add_button": "ಸೇರಿಸು",
+    "topsites_form_save_button": "ಉಳಿಸು",
+    "topsites_form_cancel_button": "ರದ್ದು ಮಾಡು"
+  },
   "ko": {
     "newtab_page_title": "새 탭",
     "default_label_loading": "읽는 중…",
     "header_top_sites": "상위 사이트",
     "header_highlights": "하이라이트",
     "header_stories": "상위 이야기",
     "header_stories_from": "출처",
     "type_label_visited": "방문한 사이트",
@@ -4738,17 +4768,17 @@
     "header_visit_again": "Odwiedź ponownie",
     "header_bookmarks": "Najnowsze zakładki",
     "header_recommended_by": "Poleca: {provider}",
     "header_bookmarks_placeholder": "Nie ma jeszcze żadnych zakładek.",
     "header_stories_from": "od:",
     "type_label_visited": "Odwiedzone",
     "type_label_bookmarked": "Zakładka",
     "type_label_synced": "Z innego urządzenia",
-    "type_label_recommended": "Polecane",
+    "type_label_recommended": "Na czasie",
     "type_label_open": "Otwarte",
     "type_label_topic": "Temat",
     "type_label_now": "Teraz",
     "menu_action_bookmark": "Dodaj zakładkę",
     "menu_action_remove_bookmark": "Usuń zakładkę",
     "menu_action_copy_address": "Kopiuj adres",
     "menu_action_email_link": "Wyślij odnośnik…",
     "menu_action_open_new_window": "Otwórz w nowym oknie",
--- a/browser/extensions/activity-stream/install.rdf.in
+++ b/browser/extensions/activity-stream/install.rdf.in
@@ -3,17 +3,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>activity-stream@mozilla.org</em:id>
     <em:type>2</em:type>
     <em:bootstrap>true</em:bootstrap>
     <em:unpack>false</em:unpack>
-    <em:version>2017.09.12.1376-781e5de5</em:version>
+    <em:version>2017.09.14.0590-7fa80d82</em:version>
     <em:name>Activity Stream</em:name>
     <em:description>A rich visual history feed and a reimagined home page make it easier than ever to find exactly what you're looking for in Firefox.</em:description>
     <em:multiprocessCompatible>true</em:multiprocessCompatible>
 
     <em:targetApplication>
       <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>@MOZ_APP_VERSION@</em:minVersion>
--- a/browser/extensions/activity-stream/lib/ActivityStream.jsm
+++ b/browser/extensions/activity-stream/lib/ActivityStream.jsm
@@ -57,19 +57,24 @@ const PREFS_CONFIG = new Map([
       provider_description: "pocket_description",
       provider_icon: "pocket",
       provider_name: "Pocket",
       read_more_endpoint: "https://getpocket.cdn.mozilla.net/explore/trending?src=ff_new_tab",
       stories_endpoint: `https://getpocket.cdn.mozilla.net/v3/firefox/global-recs?version=2&consumer_key=$apiKey&locale_lang=${args.locale}`,
       stories_referrer: "https://getpocket.com/recommendations",
       info_link: "https://www.mozilla.org/privacy/firefox/#pocketstories",
       topics_endpoint: `https://getpocket.cdn.mozilla.net/v3/firefox/trending-topics?version=2&consumer_key=$apiKey&locale_lang=${args.locale}`,
+      show_spocs: false,
       personalized: false
     })
   }],
+  ["filterAdult", {
+    title: "Remove adult pages from sites, highlights, etc.",
+    value: true
+  }],
   ["migrationExpired", {
     title: "Boolean flag that decides whether to show the migration message or not.",
     value: false
   }],
   ["migrationLastShownDate", {
     title: "Timestamp when migration message was last shown. In seconds.",
     value: 0
   }],
@@ -108,16 +113,20 @@ const PREFS_CONFIG = new Map([
   ["telemetry", {
     title: "Enable system error and usage data collection",
     value: true,
     value_local_dev: false
   }],
   ["telemetry.ping.endpoint", {
     title: "Telemetry server endpoint",
     value: "https://tiles.services.mozilla.com/v4/links/activity-stream"
+  }],
+  ["aboutHome.autoFocus", {
+    title: "Focus the about:home search box on load",
+    value: true
   }]
 ]);
 
 // Array of each feed's FEEDS_CONFIG factory and values to add to PREFS_CONFIG
 const FEEDS_DATA = [
   {
     name: "localization",
     factory: () => new LocalizationFeed(),
new file mode 100644
--- /dev/null
+++ b/browser/extensions/activity-stream/lib/FilterAdult.jsm
@@ -0,0 +1,2974 @@
+/* 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 {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+
+XPCOMUtils.defineLazyModuleGetter(this, "Services",
+  "resource://gre/modules/Services.jsm");
+
+// Keep a Set of adult base domains for lookup (initialized at end of file)
+let gAdultSet;
+
+// Keep a hasher for repeated hashings
+let gCryptoHash = null;
+
+/**
+ * Run some text through md5 and return the base64 result.
+ */
+function md5Hash(text) {
+  // Lazily create a reusable hasher
+  if (gCryptoHash === null) {
+    gCryptoHash = Cc["@mozilla.org/security/hash;1"].createInstance(Ci.nsICryptoHash);
+  }
+
+  gCryptoHash.init(gCryptoHash.MD5);
+
+  // Convert the text to a byte array for hashing
+  gCryptoHash.update(text.split("").map(c => c.charCodeAt(0)), text.length);
+
+  // Request the has result as ASCII base64
+  return gCryptoHash.finish(true);
+}
+
+/**
+ * Filter out any link objects that have a url with an adult base domain.
+ */
+this.filterAdult = function filterAdult(links) {
+  return links.filter(({url}) => {
+    try {
+      const uri = Services.io.newURI(url);
+      return !gAdultSet.has(md5Hash(Services.eTLD.getBaseDomain(uri)));
+    } catch (ex) {
+      return true;
+    }
+  });
+};
+
+this.EXPORTED_SYMBOLS = ["filterAdult"];
+
+// These are md5 hashes of base domains to be filtered out. Originally from:
+// https://hg.mozilla.org/mozilla-central/log/default/browser/base/content/newtab/newTab.inadjacent.json
+gAdultSet = new Set([
+  "+/UCpAhZhz368iGioEO8aQ==",
+  "+1e7jvUo8f2/2l0TFrQqfA==",
+  "+1gcqAqaRZwCj5BGiZp3CA==",
+  "+25t/2lo0FUEtWYK8LdQZQ==",
+  "+8PiQt6O7pJI/nIvQpDaAg==",
+  "+CLf5witKkuOvPCulTlkqw==",
+  "+CvLiih/gf2ugXAF+LgWqw==",
+  "+DWs0vvFGt6d3mzdcsdsyA==",
+  "+H0Rglt/HnhZwdty2hsDHg==",
+  "+L1FDsr5VQtuYc2Is5QGjw==",
+  "+LJYVZl1iPrdMU3L5+nxZw==",
+  "+Mp+JIyO0XC5urvMyi3wvQ==",
+  "+NMUaQ7XPsAi0rk7tTT9wQ==",
+  "+NmjwjsPhGJh9bM10SFkLw==",
+  "+OERSmo7OQUUjudkccSMOA==",
+  "+OLntmlsMBBYPREPnS6iVw==",
+  "+OXdvbTxHtSoLg7bZMho4w==",
+  "+P5q4YD1Rr5SX26Xr+tzlw==",
+  "+PUVXkoTqHxJHO18z4KMfw==",
+  "+Pl0bSMBAdXpRIA+zE02JA==",
+  "+QosBAnSM2h4lsKuBlqEZw==",
+  "+S+WXgVDSU1oGmCzGwuT3g==",
+  "+SclwwY8R2RPrnX54Z+A6w==",
+  "+VfRcTBQ80KSeJRdg0cDfw==",
+  "+WpF8+poKmHPUBB4UYh/ig==",
+  "+YVxSyViJfrme/ENe1zA7A==",
+  "+YrqTEJlJCv0A2RHQ8tr1A==",
+  "+ZozWaPWw8ws1cE5DJACeg==",
+  "+aF4ilbjQbLpAuFXQEYMWQ==",
+  "+dBv88reDrjEz6a2xX3Hzw==",
+  "+dIEf5FBrHpkjmwUmGS6eg==",
+  "+edqJYGvcy1AH2mEjJtSIg==",
+  "+fcjH2kZKNj8quOytUk4nQ==",
+  "+gO0bg8LY+py2dLM1sM7Ag==",
+  "+gbitI/gpxebN/rK7qj8Fw==",
+  "+gpHnUj2GWocP74t5XWz4w==",
+  "+jVN/3ASc2O44sX6ab8/cg==",
+  "+mJLK+6qq8xFv7O/mbILTw==",
+  "+n0K7OB2ItzhySZ4rhUrMg==",
+  "+p8pofUlwn8vV6Rp6+sz9g==",
+  "+tuUmnRDRWVLA+1k0dcUvg==",
+  "+zBkeHF4P8vLzk1iO1Zn3Q==",
+  "//eHwmDOQRSrv+k9C/k3ZQ==",
+  "/2Chaw2M9DzsadFFkCu6WQ==",
+  "/2c4oNniwhL3z5IOngfggg==",
+  "/2jGyMekNu7U136K+2N3Jg==",
+  "/Bwpt5fllzDHq2Ul6v86fA==",
+  "/DJgKE9ouibewuZ2QEnk6w==",
+  "/DiUApY7cVp5W9o24rkgRA==",
+  "/FchS2nPezycB8Bcqc2dbg==",
+  "/FdZzSprPnNDPwbhV1C0Cg==",
+  "/FsJYFNe+7UvsSkiotNJEQ==",
+  "/G26n5Xoviqldr5sg/Jl3w==",
+  "/HU2+fBqfWTEuqINc0UZSA==",
+  "/IarsLzJB8bf0AupJJ+/Eg==",
+  "/KYZdUWrkfxSsIrp46xxow==",
+  "/MEOgAhwb7F0nBnV4tIRZA==",
+  "/MeHciFhvFzQsCIw39xIZA==",
+  "/Ph/6l/lFNVqxAje1+PgFA==",
+  "/SP6pOdYFzcAl2OL05z4uQ==",
+  "/TSsi/AwKHtP6kQaeReI3w==",
+  "/VnKh/NDv7y/bfO6CWsLaQ==",
+  "/XC/FmMIOdhMTPqmy4DfUA==",
+  "/XjB6c5fxFGcKVAQ4o+OMw==",
+  "/YuQw7oAF08KDptxJEBS9g==",
+  "/a+bLXOq02sa/s8h7PhUTg==",
+  "/a9O7kWeXa0le45ab3+nVw==",
+  "/c34NtdUZAHWIwGl3JM8Tw==",
+  "/cJ0Nn5YbXeUpOHMfWXNHQ==",
+  "/cdR1i5TuQvO+u3Ov3b0KQ==",
+  "/gi3UZmunVOIXhZSktZ8zQ==",
+  "/hFhjFGJx2wRfz6hyrIpvA==",
+  "/jDVt9dRIn+o4IQ1DPwbsg==",
+  "/jH6imhTPZ/tHI4gYz2+HA==",
+  "/kGxvyEokQsVz0xlKzCn2A==",
+  "/mFp3GFkGNLhx2CiDvJv4A==",
+  "/mrqas0eDX+sFUNJvCQY8g==",
+  "/n1RLTTVpygre1dl36PDwQ==",
+  "/ngbFuKIAVpdSwsA3VxvNw==",
+  "/p/aCTIhi1bU0/liuO/a2Q==",
+  "/u5W2Gab4GgCMIc4KTp2mg==",
+  "/wIZAye9h1TUiZmDW0ZmYA==",
+  "/wiA2ltAuWyBhIvQAYBTQw==",
+  "/y/jHHEpUu5TR+R2o96kXA==",
+  "/zFLRvi75UL8qvg+a6zqGg==",
+  "00TVKawojyqrJkC7YqT41Q==",
+  "022B0oiRMx8Xb4Af98mTvQ==",
+  "02im2RooJQ/9UfUrh5LO+A==",
+  "0G93AxGPVwmr66ZOleM90A==",
+  "0HN6MIGtkdzNPsrGs611xA==",
+  "0K4NBxqEa3RYpnrkrD/XjQ==",
+  "0L0FVcH5Dlj3oL8+e9Na7g==",
+  "0NrvBuyjcJ2q6yaHpz/FOA==",
+  "0ODJyWKJSfObo+FNdRQkkA==",
+  "0QB0OUW5x2JLHfrtmpZQ+w==",
+  "0QCQORCYfLuSbq94Sbt0bQ==",
+  "0QbH4oI8IjZ9BRcqRyvvDQ==",
+  "0QxPAqRF8inBuFEEzNmLjA==",
+  "0SkC/4PtnX1bMYgD6r6CLA==",
+  "0TxcYwG72dT7Tg+eG8pP1w==",
+  "0UeRwDID2RBIikInqFI7uw==",
+  "0VsaJHR0Ms8zegsCpAKoyg==",
+  "0Y6iiZjCwPDwD/CwJzfioQ==",
+  "0ZEC3hy411LkOhKblvTcqg==",
+  "0ZRGz+oj2infCAkuKKuHiQ==",
+  "0a4SafpDIe8V4FlFWYkMHw==",
+  "0b/xj6fd0x+aB8EB0LC4SA==",
+  "0bj069wXgEJbw7dpiPr8Tg==",
+  "0dIeIM5Zvm5nSVWLy94LWg==",
+  "0e8hM3E5tnABRyy29A8yFw==",
+  "0egBaMnAf0CQEXf1pCIKnA==",
+  "0fN+eHlbRS6mVZBbH/B9FQ==",
+  "0fnruVOCxEczscBuv4yL9A==",
+  "0fpe9E6m3eLp/5j5rLrz2Q==",
+  "0klouNfZRHFFpdHi4ZR2hA==",
+  "0nOg18ZJ/NicqVUz5Jr0Hg==",
+  "0ofMbUCA3/v5L8lHnX4S5w==",
+  "0p1jMr06OyBoXQuSLYN4aQ==",
+  "0p8YbEMxeb73HbAfvPLQRw==",
+  "0q+erphtrB+6HBnnYg7O6w==",
+  "0rTYcuVYdilO7zEfKrxY3A==",
+  "0rfG4gRugAwVP0i3AGVxxg==",
+  "0u+0WHr7WI6IlVBBgiRi6w==",
+  "0yJ7TQYzcp3DXVSvwavr+w==",
+  "1+A9FCGP3bZhk6gU3LQtNg==",
+  "1+XWdu4qCqLLVjqkKz3nmA==",
+  "1+qmrbC8c7MJ6pxmDMcKuA==",
+  "1/Hxu8M9N/oNwk8bCj4FNQ==",
+  "1/SGIab+NnizimUmNDC4wA==",
+  "1/ZheMsbojazxt31j/l3iA==",
+  "10OltdxPXOvfatJuwPVKbQ==",
+  "11FE2kknwYi2Qu0JUKMn3A==",
+  "11U5XEwfMI7avx014LfC8g==",
+  "16d+fhFlgayu3ttKVV/pbg==",
+  "16iT/jCcPDrJEfi2bE5F+Q==",
+  "18RKixTv12q3xoBLz6eKiA==",
+  "18ndtDM9UaNfBR1cr3SHdA==",
+  "19yQHaBemtlgo2QkU5M6jQ==",
+  "1AeReq55UQotRQVKJ66pmg==",
+  "1ApqwW7pE+XUB2Cs2M6y7g==",
+  "1B5gxGQSGzVKoNd5Ol4N7g==",
+  "1BjsijOzgHt/0i36ZGffoQ==",
+  "1C50kisi9nvyVJNfq2hOEQ==",
+  "1E3pMgAHOnHx3ALdNoHr8Q==",
+  "1EI9aa955ejNo1dJepcZJw==",
+  "1FSrgkUXgZot2CsmbAtkPw==",
+  "1Gpj4TPXhdPEI4zfQFsOCg==",
+  "1HDgfU7xU7LWO/BXsODZAQ==",
+  "1I+UVx3krrD4NhzO7dgfHQ==",
+  "1JI9bT92UzxI8txjhst9LQ==",
+  "1JRgSHnfAQFQtSkFTttkqQ==",
+  "1LPC0BzhJbepHTSAiZ3QTw==",
+  "1MIn73MLroxXirrb+vyg2Q==",
+  "1Oykse0jQVbuR3MvW5ot4A==",
+  "1Pmnur6TbZ9cmemvu0+dSA==",
+  "1PvTn90xwZJPoVfyT5/uIQ==",
+  "1QGhj9NONF2rC44UdO+Izw==",
+  "1RQZ2pWSxT+RKyhBigtSFg==",
+  "1Vtrv6QUAfiYQjlLTpNovg==",
+  "1WIi4I62GqkjDXOYqHWJfQ==",
+  "1Wc8jQlDSB4Dp32wkL2odw==",
+  "1X14kHeKwGmLeYqpe60XEA==",
+  "1YO9G8qAhLIu2rShvekedw==",
+  "1Ym0lyBJ9aFjhJb/GdUPvQ==",
+  "1b2uf+CdVjufqiVpUShvHw==",
+  "1buQEv2YlH/ljTgH0uJEtw==",
+  "1cj1Fpd3+UiBAOahEhsluA==",
+  "1d7RPHdZ9qzAbG3Vi9BdFA==",
+  "1dhq3ozNCx0o4dV1syLVDA==",
+  "1dsKN1nG6upj7kKTKuJWsQ==",
+  "1eCHcz4swFH+uRhiilOinQ==",
+  "1eRUCdIJe3YGD5jOMbkkOg==",
+  "1fztTtQWNMIMSAc5Hr6jMQ==",
+  "1gA65t5FiBTEgMELTQFUPQ==",
+  "1jBaRO8Bg5l6TH7qJ8EPiw==",
+  "1k8tL2xmGFVYMgKUcmDcEw==",
+  "1lCcQWGDePPYco4vYrA5vw==",
+  "1m1yD4L9A7Q1Ot+wCsrxJQ==",
+  "1mw6LfTiirFyfjejf8QNGA==",
+  "1nXByug2eKq0kR3H3VjnWQ==",
+  "1tpM0qgdo7JDFwvT0TD78g==",
+  "1vqRt79ukuvdJNyIlIag8Q==",
+  "1wBuHqS1ciup31WTfm3NPg==",
+  "1xWx5V3G9murZP7srljFmA==",
+  "1zDfWw5LdG20ClNP1HYxgw==",
+  "203EqmJI9Q4tWxTJaBdSzA==",
+  "23C4eh3yBb5n/RNZeTyJkA==",
+  "23d9B9Gz5kUOi1I//EYsSQ==",
+  "24H9q+E8pgCEdFS7JO5kzQ==",
+  "25w3ZRUzCvJwAVHYCIO5uw==",
+  "26+yXbqI+fmIZsYl4UhUzw==",
+  "26Wmdp6SkKN74W0/XPcnmA==",
+  "29EybnMEO95Ng4l/qK4NWQ==",
+  "2Ct+pLXrK6Ku1f4qehjurQ==",
+  "2D6yhuABiaFFoXz0Lh0C+w==",
+  "2DNbXVgesUa7PgYQ4zX5Lw==",
+  "2E41e0MgM3WhFx2oasIQeA==",
+  "2HHqeGRMfzf3RXwVybx+ZQ==",
+  "2Hc5oyl0AYRy2VzcDKy+VA==",
+  "2QQtKtBAm2AjJ5c0WQ6BQA==",
+  "2QS/6OBA1T01NlIbfkTYJg==",
+  "2RFaMPlSbVuoEqKXgkIa5A==",
+  "2SI4F7Vvde2yjzMLAwxOog==",
+  "2SwIiUwT4vRZPrg7+vZqDA==",
+  "2W6lz1Z7PhkvObEAg2XKJw==",
+  "2Wvk/kouEEOY0evUkQLhOQ==",
+  "2XrR2hjDEvx8MQpHk9dnjw==",
+  "2aDK0tGNgMLyxT+BQPDE8Q==",
+  "2aIx9UdMxxZWvrfeJ+DcTw==",
+  "2abfl3N46tznOpr+94VONQ==",
+  "2bsIpvnGcFhTCSrK9EW1FQ==",
+  "2hEzujfG3mR5uQJXbvOPTQ==",
+  "2j83jrPwPfYlpJJ2clEBYQ==",
+  "2ksediOVrh4asSBxKcudTg==",
+  "2melaInV0wnhBpiI3da6/A==",
+  "2nSTEYzLK77h5Rgyti+ULQ==",
+  "2os5s7j7Tl46ZmoZJH8FjA==",
+  "2rOkEVl90EPqfHOF5q2FYw==",
+  "2rhjiY0O0Lo36wTHjmlNyw==",
+  "2vm7g3rk1ACJOTCXkLB3zA==",
+  "2wesXiib76wM9sqRZ7JYwQ==",
+  "2ywo4t5PPSVUCWDwUlOVwQ==",
+  "3++dZXzZ6AFEz7hK+i5hww==",
+  "3+9nURtBK3FKn0J9DQDa3g==",
+  "3+zsjCi7TnJhti//YXK35w==",
+  "3/1puZTGSrD9qNKPGaUZww==",
+  "300hoYyMR/mk1mfWJxS8/w==",
+  "301utVPZ93AnPLYbsiJggw==",
+  "312g8iTB9oJgk/OqcgR7Cw==",
+  "342VOUOxoLHUqtHANt83Hw==",
+  "36XDmX6j542q+Oei1/x0gw==",
+  "37Nkh06O979nt7xzspOFyQ==",
+  "3AKEYQqpkfW7CZMFQZoxOw==",
+  "3AVYtcIv7A5mVbVnQMaCeA==",
+  "3BjLFon1Il0SsjxHE2A1LQ==",
+  "3CJbrUdW68E3Drhe4ahUnQ==",
+  "3EhLkC9NqD3A6ApV6idmgg==",
+  "3Ejtsqw3Iep/UQd0tXnSlg==",
+  "3FH4D31nKV13sC9RpRZFIg==",
+  "3Gg9N7vjAfQEYOtQKuF/Eg==",
+  "3HPOzIZxoaQAmWRy9OkoSg==",
+  "3JhnM6G4L06NHt31lR0zXA==",
+  "3L3KEBHhgDwH615w4OvgZA==",
+  "3Leu2Sc+YOntJFlrvhaXeg==",
+  "3P2aJxV8Trll2GH9ptElYA==",
+  "3RTtSaMp1TZegJo5gFtwwA==",
+  "3TbRZtFtsh9ez8hqZuTDeA==",
+  "3TjntNWtpG7VqBt3729L6Q==",
+  "3UBYBMejKInSbCHRoJJ7dg==",
+  "3UNJ37f+gnNyYk9yLFeoYA==",
+  "3WVBP9fyAiBPZAq3DpMwOQ==",
+  "3Wfj05vCLFAB9vII5AU9tw==",
+  "3WwITQML938W9+MUM56a3A==",
+  "3XyoREdvhmSbyvAbgw2y/A==",
+  "3Y4w0nETru3SiSVUMcWXqw==",
+  "3Y6/HqS1trYc9Dh778sefg==",
+  "3YXp1PmMldUjBz3hC6ItbA==",
+  "3djRJvkZk9O2bZeUTe+7xQ==",
+  "3go7bJ9WqH/PPUTjNP3q/Q==",
+  "3hVslsq98QCDIiO40JNOuA==",
+  "3iC21ByW/YVL+pSyppanWw==",
+  "3itfXtlLPRmPCSYaSvc39Q==",
+  "3j0kFUZ6g+yeeEljx+WXGg==",
+  "3jmCreW5ytSuGfmeLv7NfQ==",
+  "3jqsY8/xTWELmu/az3Daug==",
+  "3kREs/qaMX0AwFXN0LO5ow==",
+  "3ltw31yJuAl4VT6MieEXXw==",
+  "3nthUmLZ30HxQrzr2d7xFA==",
+  "3oMTbWf7Bv83KRlfjNWQZA==",
+  "3pi3aNVq1QNJmu1j0iyL0g==",
+  "3rbml1D0gfXnwOs5jRZ3gA==",
+  "3sNJJIx1NnjYcgJhjOLJOg==",
+  "3v09RHCPTLUztqapThYaHg==",
+  "3xw8+0/WU51Yz4TWIMK8mw==",
+  "3y5Xk65ShGvWFbQxcZaQAQ==",
+  "3yDD+xT8iRfUVdxcc7RxKw==",
+  "4+htiqjEz9oq0YcI/ErBVg==",
+  "40HzgVKYnqIb6NJhpSIF0A==",
+  "40gCrW4YWi+2lkqMSPKBPg==",
+  "41WEjhYUlG6jp2UPGj11eQ==",
+  "444F9T6Y7J67Y9sULG81qg==",
+  "46FCwqh+eMkf+czjhjworw==",
+  "46piyANQVvvLqcoMq5G8tQ==",
+  "49jZr/mEW6fvnyzskyN40w==",
+  "49z/15Nx9Og7dN9ebVqIzg==",
+  "4A+RHIw+aDzw0rSRYfbc7g==",
+  "4BkqgraeXY7yaI1FE07Evw==",
+  "4CfEP8TeMKX33ktwgifGgA==",
+  "4DIPP/yWRgRuFqVeqIyxMQ==",
+  "4FBBtWPvqJ3dv4w25tRHiQ==",
+  "4ID0PHTzIMZz2rQqDGBVfA==",
+  "4KJZPCE9NKTfzFxl76GWjg==",
+  "4LtQrahKXVtsbXrEzYU1zQ==",
+  "4LvQSicqsgxQFWauqlcEjw==",
+  "4NHQwbb3zWq2klqbT/pG6g==",
+  "4NP8EFFJyPcuQKnBSxzKgQ==",
+  "4PBaoeEwUj79njftnYYqLg==",
+  "4Qinl7cWmVeLJgah8bcNkw==",
+  "4SdHWowXgCpCDL28jEFpAw==",
+  "4TQkMnRsXBobbtnBmfPKnA==",
+  "4VR5LiXLew6Nyn91zH9L4w==",
+  "4WO6eT0Rh6sokb29zSJQnQ==",
+  "4WRdAjiUmOQg2MahsunjAg==",
+  "4WcFEswYU/HHQPw77DYnyA==",
+  "4XNUmgwxsqDYsNmPkgNQYQ==",
+  "4Xh/B3C16rrjbES+FM1W8g==",
+  "4ZFYKa7ZgvHyZLS6WpM8gA==",
+  "4aPU6053cfMLHgLwAZJRNg==",
+  "4ekt4m38G9m599xJCmhlug==",
+  "4erEA42TqGA9K4iFKkxMMA==",
+  "4ifNsmjYf1iOn2YpMfzihg==",
+  "4iiCq+HhC+hPMldNQMt0NA==",
+  "4itEKfbRCJvqlgKnyEdIOQ==",
+  "4jeOFKuKpCmMXUVJSh9y0g==",
+  "4kXlJNuT79XXf1HuuFOlHw==",
+  "4kj0S8XlmhHXoUP7dQItUw==",
+  "4mQVNv7FHj+/O6XFqWFt/Q==",
+  "4mig4AMLUw+T/ect9p4CfA==",
+  "4qMSNAxichi3ori/pR+o0w==",
+  "4rrSL6N0wyucuxeRELfAmw==",
+  "4u3eyKc+y3uRnkASrgBVUw==",
+  "4wnUAbPT3AHRJrPwTTEjyw==",
+  "4xojeUxTFmMLGm6jiMYh/Q==",
+  "4yEkKp2FYZ09mAhw2IcrrA==",
+  "4yVqq66iHYQjiTSxGgX2oA==",
+  "4yrFNgqWq17zVCyffULocA==",
+  "50jASqzGm4VyHJbFv8qVRA==",
+  "50xwiYvGQytEDyVgeeOnMg==",
+  "51yLpfEdvqXmtB6+q27/AQ==",
+  "520wTzrysiRi2Td92Zq0HQ==",
+  "53UccFNzMi9mKmdeD82vAw==",
+  "54XELlPm8gBvx8D5bN3aUg==",
+  "59ipbMH7cKBsF9bNf4PLeQ==",
+  "5CMadLqS2KWwwMCpzlDmLw==",
+  "5DDb7fFJQEb3XTc3YyOTjg==",
+  "5HovoyHtul8lXh+z8ywq9A==",
+  "5I/heFSQG/UpWGx0uhAqGQ==",
+  "5KOgetfZR+O2wHQSKt41BQ==",
+  "5LJqHFRyIwQKA4HbtqAYQQ==",
+  "5LuFDNKzMd2BzpWEIYO2Ww==",
+  "5M3dFrAOemzQ0MAbA8bI5w==",
+  "5N2oi2pB69NxeNt08yPLhw==",
+  "5NEP7Xt7ynj6xCzWzt21hQ==",
+  "5Nk2Z94DhlIdfG5HNgvBbQ==",
+  "5PfGtbH9fmVuNnq83xIIgQ==",
+  "5Q/Y2V0iSVTK8HE8JerEig==",
+  "5S5/asYfWjOwnzYpbK6JDw==",
+  "5SbwLDNT6sBOy6nONtUcTg==",
+  "5T39s5CtSrK5awMPUcEWJg==",
+  "5VO1inwXMvLDBQSOahT6rg==",
+  "5VY++KiWgo7jXSdFJsPN3A==",
+  "5Wcq+6hgnWsQZ/bojERpUw==",
+  "5Yrj6uevT8wHRyqqgnSfeg==",
+  "5dUry23poD+0wxZ3hH6WmA==",
+  "5eHStFN7wEmIE+uuRwIlPQ==",
+  "5eXpiczlRdmqMYSaodOUiQ==",
+  "5gGoDPTc/sOIDLngmlEq4A==",
+  "5jHgQF4SfO/zy9xy9t+9dw==",
+  "5jyuDp82Fux+B0+zlx8EXw==",
+  "5kvyy902llnYGQdn2Py04w==",
+  "5l6kDfjtZjkTZPJvNNOVFw==",
+  "5lfLJAk1L3QzGMML3fOuSw==",
+  "5m1ijXEW+4RTNGZsDA/rxQ==",
+  "5oD/aGqoakxaezq43x0Tvw==",
+  "5pje7qyz8BRsa8U4a4rmoA==",
+  "5pqqzC/YmRIMA9tMFPi7rg==",
+  "5r1ZsGkrzNQEpgt/gENibw==",
+  "5u2PdDcIY3RQgtchSGDCGg==",
+  "5ugVOraop5P5z5XLlYPJyQ==",
+  "5w/c9WkI/FA+4lOtdPxoww==",
+  "5w4FbRhWACP7k2WnNitiHg==",
+  "6+jhreeBLfw64tJ+Nhyipw==",
+  "600bwlyhcy754W1E6tuyYg==",
+  "600mjiWke4u0CDaSQKLOOg==",
+  "60suecbWRfexSh7C67RENA==",
+  "61V74uIjaSfZM8au1dxr1A==",
+  "62RHCbpGU8Hb+Ubn+SCTBg==",
+  "63OTPaKM0xCfJOy9EDto+Q==",
+  "64AA4jLHXc1Dp15aMaGVcA==",
+  "64QzHOYX0A9++FqRzZRHlQ==",
+  "64YsV2qeDxk2Q6WK/h7OqA==",
+  "65KhGKUBFQubRRIEdh9SwQ==",
+  "6706ncrH1OANFnaK6DUMqQ==",
+  "68jPYo3znYoU4uWI7FH3/g==",
+  "68nqDtXOuxF7DSw6muEZvg==",
+  "6ACvJNfryPSjGOK39ov8Qg==",
+  "6CjtF1S2Y6RCbhl7hMsD+g==",
+  "6G2bD3Y7qbGmfPqH9TqLFA==",
+  "6GXHGF62/+jZ7PfIBlMxZw==",
+  "6HGeEPyTAu9oiKhNVLjQnA==",
+  "6HnWgYNKohqhoa1tnjjU3A==",
+  "6M6QapJ5xtMXfiD3bMaiLA==",
+  "6NP81geiL14BeQW6TpLnUA==",
+  "6PzjncEw2wHZg7SP7SQk9w==",
+  "6QAtjOK9enNLRhcVa2iaTg==",
+  "6QUGE2S8oFYx4T4nW56cCw==",
+  "6W79FmpUN1ByNtv5IEXY4w==",
+  "6WhHPWlqEUqXC52rHGRHjA==",
+  "6XYqR2WvDzx4fWO7BIOTjA==",
+  "6Z9myGCF5ylWljgIYAmhqw==",
+  "6ZKmm7IW7IdWuVytLr68CQ==",
+  "6ZMs9vCzK9lsbS6eyzZlIA==",
+  "6b7ue29cBDsvmj1VSa5njw==",
+  "6c0iuya20Ys8BsvoI4iQaQ==",
+  "6cTETZ9iebhWl+4W5CB+YQ==",
+  "6dshA8knH5qqD+KmR/kdSQ==",
+  "6e8boFcyc8iF0/tHVje4eQ==",
+  "6erpZS36qZRXeZ9RN9L+kw==",
+  "6fWom3YoKvW6NIg6y9o9CQ==",
+  "6k2cuk0McTThSMW/QRHfjA==",
+  "6lVSzYUQ/r0ep4W2eCzFpg==",
+  "6leyDVmC5jglAa98NQ3+Hg==",
+  "6nwR+e9Qw0qp8qIwH9S/Mg==",
+  "6o5g9JfKLKQ2vBPqKs6kjg==",
+  "6rIWazDEWU5WPZHLkqznuQ==",
+  "6rqK8sjLPJUIp7ohkEwfZg==",
+  "6sBemZt4qY/TBwqk3YcLOQ==",
+  "6sNP0rzCCm3w976I2q2s/w==",
+  "6tfM6dx3R5TiVKaqYQjnCg==",
+  "6txm8z4/LGCH0cpaet/Hsg==",
+  "6uMF5i0b/xsk55DlPumT7A==",
+  "6uT7LZiWjLnnqnnSEW4e/Q==",
+  "6v3eTZtPYBfKFSjfOo2UaA==",
+  "6wkfN8hyKmKU6tG3YetCmw==",
+  "6z8CRivao3IMyV4p4gMh7g==",
+  "71w3aSvuh2mBLtdqJCN3wA==",
+  "734u4Y1R3u7UNUnD+wWUoA==",
+  "74FW/QYTzr/P1k6QwVHMcw==",
+  "778O1hdVKHLG2q9dycUS0Q==",
+  "78b8sDBp28zUlYPV5UTnYw==",
+  "79uTykH43voFC3XhHHUzKg==",
+  "7E6V6/zSjbtqraG7Umj+Jw==",
+  "7Ephy+mklG2Y3MFdqmXqlA==",
+  "7Eqzyb+Kep+dIahYJWNNxQ==",
+  "7GgNLBppgAKcgJCDSsRqOQ==",
+  "7J3FoFGuTIW36q0PZkgBiw==",
+  "7K8l6KoP0BH82/WMLntfrg==",
+  "7R5rFaXCxM3moIUtoCfM2g==",
+  "7Tauesu7bgs5lJmQROVFiQ==",
+  "7VHlLw20dWck+I8tCEZilA==",
+  "7W9aF7dxnL+E8lbS/F7brg==",
+  "7XRiYvytcwscemlxd9iXIQ==",
+  "7Y87wVJok20UfuwkGbXxLg==",
+  "7b0oo4+qphu6HRvJq6qkHQ==",
+  "7bM/pn4G7g7Zl6Xf1r62Lg==",
+  "7br49X11xc2GxQLSpZWjKQ==",
+  "7btpMFgeGkUsiTtsmNxGQA==",
+  "7cnUHeaPO8txZGGWHL9tKg==",
+  "7dz+W494zwU5sg63v5flCg==",
+  "7k5rBuh8FbTTI4TP87wBPQ==",
+  "7l0RMKbONGS/goW/M+gnMQ==",
+  "7mxU5fJl/c6dXss9H3vGcQ==",
+  "7nr3zyWL+HHtJhRrCPhYZA==",
+  "7p4NpnoNSQR7ISg+w+4yFg==",
+  "7pkUY2UzSbGnwLvyRrbxfA==",
+  "7sCJ4RxbxRqVnF4MBoKfuQ==",
+  "7w3b73nN/fIBvuLuGZDCYQ==",
+  "7w4PDRJxptG8HMe/ijL6cQ==",
+  "7wgT9WIiMVcrj48PVAMIgw==",
+  "7xDIG/80SnhgxAYPL9YJtg==",
+  "7xTKFcog69nTmMfr5qFUTA==",
+  "80C9TB9/XT1gGFfQDJxRoA==",
+  "80PCwYh4llIKAplcDvMj4g==",
+  "80UE+Ivby3nwplO/HA7cPw==",
+  "81ZH3SO0NrOO+xoR/Ngw1g==",
+  "81iQLU+YwxNwq4of6e9z7A==",
+  "81nkjWtpBhqhvOp6K8dcWg==",
+  "81pAhreEPxcKse+++h1qBg==",
+  "82hTTe1Nr4N2g7zwgGjxkw==",
+  "83ERX2XJV3ST4XwvN7YWCg==",
+  "83WGpQGWyt6mCV+emaomog==",
+  "83wtvSoSP9FVBsdWaiWfpA==",
+  "861mBNvjIkVgkBiocCUj/Q==",
+  "88PNi9+yn3Bp4/upgxtWGA==",
+  "88tB/HgUIUnqWXEX++b5Aw==",
+  "897ptlztTjr7yk+pk8MT0Q==",
+  "8AfCSZC0uasVON9Y/0P2Pw==",
+  "8B12CamjOGzJDnQ+RkUf4w==",
+  "8BLkvEkfnOizJq0OTCYGzw==",
+  "8CjmgWQSAAGcXX9kz3kssw==",
+  "8Cm19vJW8ivhFPy0oQXVNA==",
+  "8DtgIyYiNFqDc5qVrpFUng==",
+  "8GyPup4QAiolFJ9v80/Nkw==",
+  "8JVHFRwAd/SCLU0CRJYofg==",
+  "8LNNoHe6rEQyJ0ebl151Mw==",
+  "8M0kSvjn5KN8bjsMdUqKZQ==",
+  "8N3mhHt29FZDHn1P2WH1wQ==",
+  "8OFxXwnPmrogpNoueZlC4Q==",
+  "8QK7emHS6rAcAF5QQemW/A==",
+  "8RtLlzkGEiisy1v9Xo0sbw==",
+  "8VqeoQELbCs232+Mu+HblA==",
+  "8WU1vLKV1GhrL7oS9PpABg==",
+  "8ZBiwr842ZMKphlqmNngHw==",
+  "8ZFPMJJYVJHsfRpU4DigSg==",
+  "8ZqmPJDnQSOFXvNMRQYG2Q==",
+  "8c+lvG5sZNimvx9NKNH3ug==",
+  "8cXqZub6rjgJXmh1CYJBOg==",
+  "8dBIsHMEAk7aoArLZKDZtg==",
+  "8dUcSkd2qnX5lD9B+fUe+Q==",
+  "8dbyfox/isKLsnVjQNsEXg==",
+  "8fJLQeIHaTnJ8wGqUiKU6g==",
+  "8g08gjG/QtvAYer32xgNAg==",
+  "8hsfXqi4uiuL+bV1VrHqCw==",
+  "8iYdEleTXGM+Wc85/7vU9w==",
+  "8j9GVPiFdfIRm/+ho7hpoA==",
+  "8nOTDhFyZ8YUA4b6M5p84w==",
+  "8snljTGo/uICl9q0Hxy7/A==",
+  "8uP4HUnSodw88yoiWXOIcw==",
+  "8vLA9MOdmLTo3Qg+/2GzLA==",
+  "8vr+ERVrM99dp+IGnCWDGQ==",
+  "8ylI1AS3QJpAi3I/NLMYdg==",
+  "9+hjTVMQUsvVKs7Tmp52tg==",
+  "90dtIMq0ozJXezT2r79vMQ==",
+  "91+Yms6Oy/rP0rVjha5z9w==",
+  "91LQuW6bMSxl10J/UDX23A==",
+  "91SdBFJEZ65M+ixGaprY/A==",
+  "91VcAVv7YDzkC1XtluPigw==",
+  "91vfsZ7Lx9x5gqWTOdM4sg==",
+  "96ORaz1JRHY1Gk8H74+C2g==",
+  "99+SBN45LwKCPfrjUKRPmw==",
+  "9Bet5waJF5/ZvsYaHUVEjQ==",
+  "9DRHdyX8ECKHUoEsGuqR4Q==",
+  "9DtM1vls4rFTdrSnQ7uWXw==",
+  "9FdpxlIFu11qIPdO7WC5nw==",
+  "9Gkw+hvsR/tFY1cO89topg==",
+  "9J53kk+InE3CKa7cPyCXMw==",
+  "9JKIJrlQjhNSC46H3Cstcw==",
+  "9L6yLO93sRN70+3qq3ObfA==",
+  "9MDG0WeBPpjGJLEmUJgBWg==",
+  "9QFYrCXsGsInUb4SClS3cQ==",
+  "9RGIQ2qyevNbSSEF36xk/A==",
+  "9RXymE9kCkDvBzWGyMgIWA==",
+  "9SUOfKtfKmkGICJnvbIDMg==",
+  "9SgfpAY0UhNC6sYGus9GgQ==",
+  "9T7gB0ZkdWB0VpbKIXiujQ==",
+  "9TalxEyFgy6hFCM73hgb7Q==",
+  "9UhKmKtr4vMzXTEn74BEhg==",
+  "9W57pTzc572EvSURqwrRhw==",
+  "9Y1ZmfiHJd9vCiZ6KfO1xQ==",
+  "9aKH1u5+4lgYhhLztQ4KWA==",
+  "9ajIS45NTicqRANzRhDWFA==",
+  "9bAWYElyRN1oJ6eJwPtCtQ==",
+  "9cvHJmim9e0pOaoUEtiM6A==",
+  "9dbn0Kzwr9adCEfBJh78uQ==",
+  "9iB7+VwXRbi6HLkWyh9/kg==",
+  "9inw7xzbqAnZDKOl/MfCqA==",
+  "9jxA/t3TQx8dQ+FBsn/YCg==",
+  "9k17UqdR1HzlF7OBAjpREA==",
+  "9k1u/5TgPmXrsx3/NsYUhg==",
+  "9lLhHcrPWI4EsA4fHIIXuw==",
+  "9nMltdrrBmM5ESBY2FRjGA==",
+  "9oQ/SVNJ4Ye9lq8AaguGAQ==",
+  "9oUawSwUGOmb0sDn3XS6og==",
+  "9onh6QKp70glZk9cX3s34A==",
+  "9pdeedz1UZUlv8jPfPeZ1g==",
+  "9pk75mBzhmcdT+koHvgDlw==",
+  "9qWLbRLXWIBJUXYjYhY2pg==",
+  "9rL8nC/VbSqrvnUtH9WsxQ==",
+  "9reBKZ1Rp6xcdH1pFQacjw==",
+  "9s3ar9q32Y5A3tla5GW/2Q==",
+  "9sYLg75/hudZaBA3FrzKHw==",
+  "9tiibT8V9VwnPOErWGNT3w==",
+  "9vEgJVJLEfed6wJ7hBUGgQ==",
+  "9viAzLFGYYudBYFu7kFamg==",
+  "9vmJUS7WIVOlhMqwipAknQ==",
+  "9wUIeSgNN36SFxy8v2unVg==",
+  "9xIgKpZGqq0/OU6wM5ZSHw==",
+  "9xmtuClkFlpz/X5E9JBWBA==",
+  "A+DLpIlYyCb9DaarpLN76g==",
+  "A2ODff+ImIkreJtDPUVrlg==",
+  "A3dX2ShyL9+WOi6MNJBoYQ==",
+  "A6TLWhipfymkjPYq8kaoDQ==",
+  "AChOz8avRYsvxlbWcorQ3w==",
+  "AEpTVUQhIEJGlXJB6rS26A==",
+  "AFdelaqvxRj6T3YdLgCFyg==",
+  "AGd0rcLnQ0n+meYyJur1Pw==",
+  "AGoVLd0QPcXnTedT5T95JQ==",
+  "ALJWKUImVE40MbEooqsrng==",
+  "ALlGgVDO8So71ccX0D6u2g==",
+  "AMfL0rH+g8c0VqOUSgNzQw==",
+  "ARCWkHAnVgBOIkCDQ19ZuA==",
+  "ARKIvf4+zRF8eCvUITWPng==",
+  "ATmMzriwGLl+M3ppkfcZNA==",
+  "AUGmvZkpkKBry5bHZn4DJA==",
+  "AV/YJfdoDUdRcrXVwinhQg==",
+  "AVjwqrTBQH1VREuBlOyUOg==",
+  "AX1HxQKXD12Yv5HWi39aPQ==",
+  "AYxGETZs477n2sa1Ulu/RQ==",
+  "AZs3v4KJYxdi8T1gjVjI2Q==",
+  "AcKwfS8FRVqb72uSkDNY/Q==",
+  "AcbG0e6xN8pZfYAv7QJe1Q==",
+  "Af9j1naGtnZf0u1LyYmK1w==",
+  "AfVPdxD3FyfwwNrQnVNQ7A==",
+  "AgDJsaW0LkpGE65Kxk5+IA==",
+  "Ahpi9+nl13kPTdzL+jgqMw==",
+  "AiMtfedwGcddA+XYNc+21g==",
+  "AjHz9GkRTFPjrqBokCDzFw==",
+  "Ak3rlzEOds6ykivfg39xmw==",
+  "AkAes5oErTaJiGD2I4A1Pw==",
+  "AklOdt9/2//3ylUhWebHRw==",
+  "Al8+d/dlOA5BXsUc5GL8Tg==",
+  "Ao1Zc0h5AdSHtYt1caWZnQ==",
+  "AoN/pnK4KEUaGw4V9SFjpg==",
+  "ApiuEPWr8UjuRyJjsYZQBw==",
+  "AqHVaj3JcR44hnMzUPvVYg==",
+  "Ar1Eb/f/LtuIjXnnVPYQlA==",
+  "Ar9N1VYgE7riwmcrM3bA2Q==",
+  "AsAHrIkMgc3RRWnklY9lJw==",
+  "AvdeYb9XNOUFWiiz+XGfng==",
+  "AwPTZpC28NJQhf5fNiJuLA==",
+  "AxEjImKz4tMFieSo7m60Sg==",
+  "AyWlT+EGzIXc395zTlEU5Q==",
+  "B+TsxQZf0IiQrU8X9S4dsQ==",
+  "B0TaUQ6dKhPfSc5V/MjLEQ==",
+  "B1VVUbl8pU0Phyl1RYrmBg==",
+  "B6reUwMkQFaCHb9BYZExpw==",
+  "BA18GEAOOyVXO2yZt2U35w==",
+  "BAJ+/jbk2HyobezZyB9LiQ==",
+  "BB/R8oQOcoE4j63Hrh8ifg==",
+  "BB9PTlwKAWkExt3kKC/Wog==",
+  "BDNM1u/9mefjuW1YM2DuBg==",
+  "BDbfe/xa9Mz1lVD82ZYRGA==",
+  "BH+rkZWQjTp7au6vtll/CQ==",
+  "BL3buzSCV78rCXNEhUhuKQ==",
+  "BLJk9wA88z6e0IQNrWJIVw==",
+  "BLbTFLSb4mkxMaq4/B2khg==",
+  "BMOi5JmFUg5sCkbTTffXHw==",
+  "BMZB1FwvAuEqyrd0rZrEzw==",
+  "BPT4PQxeQcsZsUQl33VGmg==",
+  "BTiGLT6XdZIpFBc91IJY6g==",
+  "BV1moliPL15M14xkL+H1zw==",
+  "BW0A06zoQw7S+YMGaegT7g==",
+  "BXGlq54wIH6R3OdYfSSDRw==",
+  "BYpHADmEnzBsegdYTv8B5Q==",
+  "BYz52gYI/Z6AbYbjWefcEA==",
+  "BZTzHJGhzhs3mCXHDqMjnQ==",
+  "BaRwTrc5ulyKbW4+QqD0dw==",
+  "BhKO1s1O693Fjy1LItR/Jw==",
+  "BjfOelfc1IBgmUxMJFjlbQ==",
+  "BlCgDd7EYDIqnoAiKOXX6Q==",
+  "BophnnMszW5o+ywgb+3Qbw==",
+  "Bq82MoMcDjIo/exqd/6UoA==",
+  "BuDVDLl0OGdomEcr+73XhQ==",
+  "BuENxPg7JNrWXcCxBltOPg==",
+  "Bv4mNIC72KppYw/nHQxfpQ==",
+  "Bvk8NX4l6WktLcRDRKsK/A==",
+  "BwRA+tMtwEvth28IwpZx+w==",
+  "BxFP+4o6PSlGN78eSVT1pA==",
+  "BxsDnI8jXr4lBwDbyHaYXw==",
+  "Byhi4ymFqqH8uIeoMRvPug==",
+  "BzkNYH03gF/mQY71RwO3VA==",
+  "C+Ssp+v1r+00+qiTy2d7kA==",
+  "C4QEzQKGxyRi2rjwioHttA==",
+  "C65PZm8rZxJ6tTEb6d08Eg==",
+  "C7UaoIEXsVRxjeA0u99Qmw==",
+  "CBAGa5l95f3hVzNi6MPWeQ==",
+  "CCK+6Dr72G3WlNCzV7nmqw==",
+  "CDsanJz7e3r/eQe+ZYFeVQ==",
+  "CF1sAlhjDQY/KWOBnSSveA==",
+  "CHLHizLruvCrVi9chj9sXA==",
+  "CHsFJfsvZkPWDXkA6ZMsDQ==",
+  "CJoZn5wdTXbhrWO5LkiW0g==",
+  "CLPzjXKGGpJ0VrkSJp7wPQ==",
+  "CPDs+We/1wvsGdaiqxzeCQ==",
+  "CQ0PPwgdG3N6Ohfwx1C8xA==",
+  "CQpJFrpOvcQhsTXIlJli+Q==",
+  "CRiL6zpjfznhGXhCIbz8pQ==",
+  "CRmAj3JcasAb4iZ9ZbNIbw==",
+  "CT3ldhWpS1SEEmPtjejR/Q==",
+  "CT9g8mKsIN/VeHLSTFJcNQ==",
+  "CUCjG2UaEBmiYWQc6+AS1Q==",
+  "CUEueo8QXRxkfVdfNIk/gg==",
+  "CWBGcRFYwZ0va6115vV/oQ==",
+  "CX/N/lHckmAtHKysYtGdZA==",
+  "CXMKIdGvm60bgfsNc+Imvg==",
+  "CYJB3qy5GalPLAv1KGFEZA==",
+  "CZNoTy26VUQirvYxSPc/5A==",
+  "CZbd+UoTz0Qu1kkCS3k8Xg==",
+  "CazLJMJjQMeHhYLwXW7YNg==",
+  "Ci7sS7Yi1+IwAM3VMAB4ew==",
+  "CiiUeJ0LeWfm7+gmEmYXtg==",
+  "CkDIoAFLlIRXra78bxT/ZA==",
+  "CkZUmKBAGu0FLpgPDrybpw==",
+  "Cl1u5nGyXaoGyDmNdt38Bw==",
+  "CmBf5qchS1V3C2mS6Rl4bw==",
+  "CmVD6nh8b/04/6JV9SovlA==",
+  "CmkmWcMK4eqPBcRbdnQvhw==",
+  "CnIwpRVC2URVfoiymnsdYQ==",
+  "CoLvjQDQGldGDqRxfQo+WQ==",
+  "CrJDgdfzOea2M2hVedTrIg==",
+  "CsPkyTZADMnKcgSuNu1qxg==",
+  "CtDj/h2Q/lRey20G8dzSgA==",
+  "CuGIxWhRLN7AalafBZLCKQ==",
+  "Cv079ZF55RnbsDT27MOQIA==",
+  "Cz1G77hsDtAjpe0WzEgQog==",
+  "CzP13PM/mNpJcJg8JD3s6w==",
+  "CzSumIcYrZlxOUwUnLR2Zw==",
+  "CzWhuxwYbNB/Ffj/uSCtbw==",
+  "D09afzGpwCEH0EgZUSmIZA==",
+  "D0Qt9sRlMaPnOv1xaq+XUg==",
+  "D0W5F7gKMljoG5rlue1jrg==",
+  "D175i+2bZ7aWa4quSSkQpA==",
+  "D2JcY4zWwqaCKebLM8lPiQ==",
+  "D31ZticrjGWAO45l5hFh7A==",
+  "D5ibbo8UJMfFZ48RffuhgQ==",
+  "D5jaV+HtXkSpSxJPmaBDXg==",
+  "D66Suu3tWBD+eurBpPXfjA==",
+  "D7piVoB2NJlBxK5owyo4+g==",
+  "D7wN7b5u5PKkMaLJBP9Ksw==",
+  "DA+3fjr7mgpwf6BZcExj0w==",
+  "DB706G73NpBSRS8TKQOVZw==",
+  "DBKrdpCE0awppxST4o/zzg==",
+  "DCjgaGV5hgSVtFY5tcwkuA==",
+  "DCvI9byhw0wOFwF1uP6xIQ==",
+  "DDitrRSvovaiXe2nfAtp4g==",
+  "DEaZD/8aWV6+zkiLSVN/gA==",
+  "DG2Qe2DqPs5MkZPOqX363Q==",
+  "DJ+a37tCaGF5OgUhG+T0NA==",
+  "DJmrmNRKARzsTCKSMLmcNA==",
+  "DJoy1NSZZw87oxWGlNHhfg==",
+  "DJscTYNFPyPmTb57g/1w+Q==",
+  "DKApp/alXiaPSRNm3MfSuA==",
+  "DLzHkTjjuH6LpWHo2ITD0Q==",
+  "DMHmyn2U2n+UXxkqdvKpnA==",
+  "DO1/jfP/xBI9N0RJNqB2Rw==",
+  "DQJRsUwO1fOuGlkgJavcwQ==",
+  "DQQB/l55iPN9XcySieNX3A==",
+  "DQeib845UqBMEl96sqsaSg==",
+  "DQlZWBgdTCoYB1tJrNS5YQ==",
+  "DRiFNojs7wM8sfkWcmLnhQ==",
+  "DWKsPfKDAtfuwgmc2dKUNg==",
+  "DY0IolKTYlW+jbKLPAlYjQ==",
+  "DYWCPUq/hpjr6puBE7KBHg==",
+  "DbWQI3H2tcJsVJThszfHGA==",
+  "DdaT4JLC7U0EkF50LzIj9w==",
+  "DdiNGiOSoIZxrMrGNvqkXw==",
+  "DinJuuBX9OKsK5fUtcaTcQ==",
+  "DjHszpS8Dgocv3oQkW/VZQ==",
+  "DjeSrUoWW2QAZOAybeLGJg==",
+  "Dk0L/lQizPEb3Qud6VHb1Q==",
+  "DmxgZsQg+Qy1GP0fPkW3VA==",
+  "Dmyb+a7/QFsU4d2cVQsxDw==",
+  "DnF6TYSJxlc+cwdfevLYng==",
+  "Do3aqbRKtmlQI2fXtSZfxQ==",
+  "DoiItHSms0B9gYmunVbRkQ==",
+  "DqzWt1gfyu/e7RQl5zWnuQ==",
+  "Dt6hvhPJu94CJpiyJ5uUkg==",
+  "Dt8Q5ORzTmpPR2Wdk0k+Aw==",
+  "DuEKxykezAvyaFO2/5ZmKQ==",
+  "Dulw855DfgIwiK7hr3X8vg==",
+  "Duz/8Ebbd0w6oHwOs0Wnwg==",
+  "DwOTyyCoUfaSShHZx9u6xg==",
+  "DwP0MQf71VsqvAbAMtC3QQ==",
+  "DwrNdmU5VFFf3TwCCcptPA==",
+  "Dz90OhYEjpaJ/pxwg1Qxhg==",
+  "E+02smwQGBIxv42LIF2Y4Q==",
+  "E1CvxFbuu9AYW604mnpGTw==",
+  "E2LR1aZ3DcdCBuVT7BhReA==",
+  "E2v8Kk60qVpQ232YzjS2ow==",
+  "E3jMjAgXwvwR8PA53g4+PQ==",
+  "E4NtzxQruLcetC23zKVIng==",
+  "E4ojRDwGsIiyuxBuXHsKBA==",
+  "E8yMPK7W0SIGTK6gIqhxiQ==",
+  "E9IlDyULLdeaVUzN6eky8g==",
+  "E9ajQQMe02gyUiW3YLjO/A==",
+  "E9yeifEZtpqlD0N3pomnGw==",
+  "EATnlYm0p3h04cLAL95JgA==",
+  "EC0+iUdSZvmIEzipXgj7Gg==",
+  "EGLOaMe6Nvzs/cmb7pNpbg==",
+  "EJgedRYsZPc4cT9rlwaZhg==",
+  "EKU3OVlT4b/8j3MTBqpMNg==",
+  "ENFfP93LA257G6pXQkmIdg==",
+  "EUXQZwLgnDG+C8qxVoBNdw==",
+  "EXveRXjzsjh8zbbQY2pM9g==",
+  "EZVQGsXTZvht1qedRLF8bQ==",
+  "EbGG4X18upaiVQmPfwKytg==",
+  "EdvIAKdRAXj7e42mMlFOGQ==",
+  "Ee4A3lTMLQ7iDQ7b8QP8Qg==",
+  "EfXDc6h69aBPE6qsB+6+Ig==",
+  "Egs14xVbRWjfBBX7X5Z60g==",
+  "Ej7W3+67kCIng3yulXGpRQ==",
+  "ElTNyMR4Rg8ApKrPw88WPg==",
+  "Epm0d/DvXkOFeM4hoPCBrg==",
+  "EqMlrz1to7HG4GIFTPaehQ==",
+  "EqYq2aVOrdX5r7hBqUJP7g==",
+  "Err1mbWJud80JNsDEmXcYg==",
+  "EuGWtIbyKToOe6DN3NkVpQ==",
+  "Ev/xjTi7akYBI7IeZJ4Igw==",
+  "EvSB+rCggob2RBeXyDQRvQ==",
+  "Ex3x5HeDPhgO2S9jjCFy4g==",
+  "EyIsYQxgFa4huyo/Lomv7g==",
+  "EzjbinBHx3Wr08eXpH3HXA==",
+  "F50iXjRo1aSTr37GQQXuJA==",
+  "F58ktE4O0f7C9HdsXYm+lw==",
+  "F5FcNti7lUa9DyF2iEpBug==",
+  "F5bs0GGWBx9eBwcJJpXbqg==",
+  "F8l+Qd9TZgzV+r8G584lKA==",
+  "F8tEIT5EhcvLNRU5f0zlXQ==",
+  "FA+nK6mpFWdD0kLFcEdhxA==",
+  "FAXzjjIr8l1nsQFPpgxM/g==",
+  "FCLQocqxxhJeleARZ6kSPg==",
+  "FH5Z60RXXUiDk+dSZBxD3g==",
+  "FHvI0IVNvih8tC7JgzvCOw==",
+  "FI2WhaSMb3guFLe3e9il8Q==",
+  "FIOCTEbzb2+KMCnEdJ7jZw==",
+  "FL/j3GJBuXdAo54JYiWklQ==",
+  "FLvED9nB9FEl9LqPn7OOrA==",
+  "FN7oLGBQGHXXn5dLnr/ElA==",
+  "FNvQqYoe0s/SogpAB7Hr1Q==",
+  "FUQySDFodnRhr+NUsWt0KA==",
+  "FV/D5uSco+Iz8L+5t7E8SA==",
+  "FWphIPZMumqnXr1glnbK4w==",
+  "FXzaxi3nAXBc8WZfFElQeA==",
+  "FbxScyuRacAQkdQ034ShTA==",
+  "FcFcn4qmPse5mJCX5yNlsA==",
+  "FcKjlHKfQAGoovtpf+DxWQ==",
+  "Fd0c8f2eykUp9GYhqOcKoA==",
+  "Fd2fYFs8vtjws2kx1gf6Rw==",
+  "FeRovookFQIsXmHXUJhGOw==",
+  "FhthAO5IkMyW4dFwpFS7RA==",
+  "Fiy3hkcGZQjNKSQP9vRqyA==",
+  "FltEN+7NKvzt+XAktHpfHA==",
+  "FnVNxl5AFH1AieYru2ZG+A==",
+  "FoJZ61VrU8i084pAuoWhDQ==",
+  "FpWDTLTDmkUhH/Sgo+g1Gg==",
+  "FpgdsQ2OG+bVEy3AeuLXFQ==",
+  "FqWLkhWl0iiD/u2cp+XK9A==",
+  "FrTgaF5YZCNkyfR1kVzTLQ==",
+  "Ft2wXUokFdUf6d2Y/lwriw==",
+  "FtxpWdhEmC6MT61qQv4DGA==",
+  "FuWspiqu5g8Eeli5Az+BkA==",
+  "FxnbKnuDct4OWcnFMT/a5w==",
+  "Fz8EI+ZpYlbcttSHs5PfpA==",
+  "FzqIpOcTsckSNHExrl+9jg==",
+  "Fzuq+Wg7clo6DTujNrxsSA==",
+  "G+sGF13VXPH4Ih6XgFEXxg==",
+  "G/PA+kt0N+jXDVKjR/054A==",
+  "G0LChrb0OE5YFqsfTpIL1Q==",
+  "G0MlFNCbRjXk4ekcPO/chQ==",
+  "G2UponGde3/Z+9b2m9abpQ==",
+  "G37U8XTFyshfCs7qzFxATg==",
+  "G3PmmPGHaWHpPW30xQgm3Q==",
+  "G4qzBI1sFP2faN+tlRL/Bw==",
+  "G736AX070whraDxChqUrqw==",
+  "G7J/za99BFbAZH+Q+/B8WA==",
+  "G8LFBop8u6IIng+gQuVg3w==",
+  "GA8k6GQ20DGduVoC+gieRA==",
+  "GCYI9Dn1h3gOuueKc7pdKA==",
+  "GDMqfhPQN0PxfJPnK1Bb9A==",
+  "GF0lY77rx1NQzAsZpFtXIQ==",
+  "GF2yvI9UWf1WY7V7HXmKPA==",
+  "GFRJoPcXlkKSvJRuBOAYHQ==",
+  "GG8a3BlwGrYIwZH9j3cnPA==",
+  "GHEdXgGWOeOa6RuPMF0xXg==",
+  "GIHKW6plyLra0BmMOurFgA==",
+  "GKzs8mlnQQc58CyOBTlfIg==",
+  "GLDNTSwygNBmuFwCIm7HtA==",
+  "GLmWLXURlUOJ+PMjpWEXVA==",
+  "GLnS9wDCje7TOMvBX9jJVA==",
+  "GNak/LFeoHWlTdLW1iU4eg==",
+  "GNrMvNXQkW7PydlyJa+f1w==",
+  "GQJxu1SoMBH14KPV/G/KrQ==",
+  "GSWncBq4nwomZCBoxCULww==",
+  "GT6WUDXiheKAM7tPg3he9A==",
+  "GTNttXfMniNhrbhn92Aykg==",
+  "GUiinC3vgBjbQC2ybMrMNQ==",
+  "GW1Uaq622QamiiF24QUA0g==",
+  "GWwJ32SZqD5wldrXUdNTLA==",
+  "GdTanUprpE3X/YjJDPpkhQ==",
+  "Gdf4VEDLBrKJNQ8qzDsIyw==",
+  "GglPoW5fvr4JSM3Zv99oiA==",
+  "GhpJfRSWZigLg/azTssyVA==",
+  "Ghuj9hAyfehmYgebBktfgA==",
+  "GmC+0rNDMIR+YbUudoNUXw==",
+  "GnJKlRzmgKN9vWyGfMq3aA==",
+  "GncGQgmWpI/fZyb/6zaFCg==",
+  "GrSbnecYAC3j5gtoKntL0A==",
+  "Gt4/MMrLBErhbFjGbiNqQQ==",
+  "GzbeM7snhe+M+J7X+gAsQw==",
+  "H+NHjk/GJDh/GaNzMQSzjg==",
+  "H+yPRiooEh5J7lAJB4RZ7Q==",
+  "H0UMAUfHFQH92A2AXRCBKA==",
+  "H1NJEI+fvOQbI51kaNQQjQ==",
+  "H1y2iXVaQYwP0SakN6sa+Q==",
+  "H1zH9I8RwfEy5DGz3z+dHw==",
+  "H6HPFAcdHFbQUNrYnB74dA==",
+  "H6j2nPbBaxHecXruxiWYkA==",
+  "HBRzLacCVYfwUVGzrefZYg==",
+  "HCbHUfsTDl6+bxPjT57lrA==",
+  "HCu4ZMrcLMZbPXbTlWuvvQ==",
+  "HDxGhvdQwGh0aLRYEGFqnw==",
+  "HEcOaEd9zCoOVbEmroSvJg==",
+  "HEghmKg3GN60K7otpeNhaA==",
+  "HFCQEiZf7/SNc+oNSkkwlA==",
+  "HFHMGgfOeO0UPrray1G+Zw==",
+  "HGxe+5/kkh6R9GXzEOOFHA==",
+  "HHxn4iIQ7m0tF1rSd+BZBg==",
+  "HI4ZIE5s8ez8Rb+Mv39FxA==",
+  "HITIVoFoWNg04NExe13dNA==",
+  "HJYgUxFZ66fRT8Ka73RaUg==",
+  "HK0yf7F97bkf1VYCrEFoWA==",
+  "HK9xG03FjgCy8vSR+hx8+Q==",
+  "HLesnV3DL+FhWF3h6RXe8g==",
+  "HLxROy6fx/mLXFTDSX4eLA==",
+  "HMQarkPWOUDIg5+5ja2dBQ==",
+  "HMWOlMmzocOIiJ7yG1YaDQ==",
+  "HOi+vsGAae4vhr+lJ5ATnQ==",
+  "HPvYV94ufwiNHEImu4OYvQ==",
+  "HRF3WL/ue3/QlYyu7NUTrA==",
+  "HRWYX2XOdsOqYzCcqkwIyw==",
+  "HYylUirJRqLm+dkp39fSOQ==",
+  "HaHTsLzx7V3G1SFknXpGxA==",
+  "HaIRV9SNPRTPDOSX9sK/bg==",
+  "HaSc7MZphCMysTy2JbTJkw==",
+  "Hb+pdSavvJ9lUXkSVZW8Og==",
+  "HbT6W1Ssd3W7ApKzrmsbcg==",
+  "HbXv8InyZqFT7i3VrllBgg==",
+  "HdB7Se47cWjPgpJN0pZuiA==",
+  "HdXg64DBy5WcL5fRRiUVOg==",
+  "HeQbUuBM9sqfXFXRBDISSw==",
+  "HfvsiCQN/3mT0FabCU5ygQ==",
+  "HgIFX42oUdRPu7sKAXhNWg==",
+  "HhBHt5lQauNl7EZXpsDHJA==",
+  "HiAgt86AyznvbI2pnLalVQ==",
+  "HjlPM2FQWdILUXHalIhQ5w==",
+  "HjyxyL0db2hGDq2ZjwOOhg==",
+  "HkbdaMuDTPBDnt3wAn5RpQ==",
+  "Hm6MG6BXbAGURVJKWRM6ZA==",
+  "HnVfyqgJ+1xSsN4deTXcIA==",
+  "HoaBBw2aPCyhh0f5GxF+/Q==",
+  "Hs3vUOOs2TWQdQZHs+FaQQ==",
+  "Hst3yfyTB7yBUinvVzYROQ==",
+  "HtDXgMuF8PJ1haWk88S0Ew==",
+  "HuDuxs2KiGqmeyY1s1PjpQ==",
+  "HwLSUie8bzH+pOJT3XQFyg==",
+  "HxEU37uBMeiR5y8q/pM42g==",
+  "Hy1nqC40l5ItxumkIC2LAA==",
+  "I+wVQA+jpPTJ6xEsAlYucg==",
+  "I07W2eDQwe6DVsm1zHKM8A==",
+  "I5qDndyelK4Njv4YrX7S6w==",
+  "I9KNZC1tijiG1T72C4cVqQ==",
+  "IA1jmtfpYkz/E2wD0+27WA==",
+  "IADk81pIu8NIL/+9Fi94pA==",
+  "IAMInfSYb76GxDlAr1dsTg==",
+  "ICPdBCdONUqPwD5BXU5lrw==",
+  "IEz72W2/W8xBx5aCobUFOQ==",
+  "IHhyR6+5sZXTH+/NrghIPg==",
+  "IHyIeMad23fSDisblwyfpA==",
+  "IKgNa2oPaFVGYnOsL+GC5Q==",
+  "INNBBin5ePwTyhPIyndHHg==",
+  "IPLD9nT5EEYG9ioaSIYuuA==",
+  "ITYL3tDwddEdWSD6J6ULaA==",
+  "ITZ3P47ALS0JguFms6/cDA==",
+  "IUZ5aGpkJ9rLgSg6oAmMlw==",
+  "IUwVHH6+8/0c+nOrjclOWA==",
+  "IWZnTJ3Hb9qw9HAK/M9gTw==",
+  "IYIP2UBRyWetVfYLRsi1SQ==",
+  "IYIbEaErHoFBn8sTT9ICIQ==",
+  "IbN736G1Px5bsYqE5gW1JQ==",
+  "IdadoCPmSgHDHzn1zyf8Jw==",
+  "IdmcpJXyVDajzeiGZixhSA==",
+  "IhHyHbHGyQS+VawxteLP0w==",
+  "IhpXs1TK7itQ3uTzZPRP5Q==",
+  "IindlAnepkazs5DssBCPhA==",
+  "IjmLaf3stWDAwvjzNbJpQA==",
+  "Ily2MKoFI1zr5LxBy93EmQ==",
+  "Iqszlv4R49UevjGxIPMhIA==",
+  "IrDuBrVu1HWm0BthAHyOLQ==",
+  "Is3uxoSNqoIo5I15z6Z2UQ==",
+  "IshzWega6zr3979khNVFQQ==",
+  "It+K/RCYMOfNrDZxo7lbcA==",
+  "IwLbkL33z+LdTjaFYh93kg==",
+  "IwfeA6d0cT4nDTCCRhK+pA==",
+  "J/PNYu4y6ZMWFFXsAhaoow==",
+  "J/eAtAPswMELIj8K2ai+Xg==",
+  "J0NauydfKsACUUEpMhQg8A==",
+  "J1nYqJ7tIQK1+a/3sMXI/Q==",
+  "J2NFyb8cXEpZyxWDthYQiA==",
+  "J4MC9He6oqjOWsYQh9nl3Q==",
+  "J8v2f6hWFu8oLuwhOeoQjA==",
+  "JATLdpQm//SQnkyCfI5x7Q==",
+  "JBkbaBiorCtFq9M9lSUdMg==",
+  "JC8Q+8yOJ52NvtVeyHo68w==",
+  "JFFeXsFsMA59iNtZey7LAA==",
+  "JFHutgSe1/SlcYKIbNNYwQ==",
+  "JFi6N1PlrpKaYECOnI7GFg==",
+  "JGEy6VP3sz3LHiyT2UwNHQ==",
+  "JGeqHRQpf4No74aCs+YTfA==",
+  "JGx8sTyvr4bLREIhSqpFkw==",
+  "JHBjKpCgSgrNNACZW1W+1w==",
+  "JIC8R48jGVqro6wmG2KXIw==",
+  "JJJkp1TpuDx5wrua2Wml7g==",
+  "JJbzQ/trOeqQomsKXKwUpQ==",
+  "JKg64m6mU7C/CkTwVn4ASg==",
+  "JKmZqz9cUnj6eTsWnFaB0A==",
+  "JKphO0UYjFqcbPr6EeBuqg==",
+  "JLq/DrW2f26NaRwfpDXIEA==",
+  "JPxEncA4IkfBDvpjHsQzig==",
+  "JQf9UmutPh3tAnu7FDk3nA==",
+  "JSr/lqDej81xqUvd/O2s7w==",
+  "JSyhTcHLTfzHsPrxJyiVrA==",
+  "JSyq2MIuObPnEgEUDyALjQ==",
+  "JVSLiwurnCelNBiG2nflpQ==",
+  "JXCYeWjFqcdSf6QwB54G+A==",
+  "JYJvOZ4CHktLrYJyAbdOnA==",
+  "JZRjdJLgZ+S0ieWVDj8IJg==",
+  "Ja3ECL7ClwDrWMTdcSQ6Ug==",
+  "JaYQXntiyznQzrTlEeZMIw==",
+  "Jbxl8Nw1vlHO9rtu0q/Fpg==",
+  "Jcxjli2tcIAjCe+5LyvqdQ==",
+  "Je1UESovkBa9T6wS0hevLw==",
+  "JgXSPXDqaS1G9NqmJXZG0A==",
+  "JgxNrUlL8wutG04ogKFPvw==",
+  "JipruVZx4ban3Zo5nNM37g==",
+  "Jit0X0srSNFnn8Ymi1EY+g==",
+  "Jj4IrSVpqQnhFrzNvylSzA==",
+  "Jm862vBTCYbv/V4T1t46+Q==",
+  "JnE6BK0vpWIhNkaeaYNUzw==",
+  "JoATsk/aJH0UcDchFMksWA==",
+  "JquDByOmaQEpFb47ZJ4+JA==",
+  "JrKGKAKdjfAaYeQH8Y2ZRQ==",
+  "Js7g8Dr6XsnGURA4UNF0Ug==",
+  "Jt4Eg6MJn8O4Ph/K2LeSUA==",
+  "Ju4YwtPw+MKzpbC0wJsZow==",
+  "JvXTdChcE3AqMbFYTT3/wg==",
+  "JyIDGL1m/w+pQDOyyeYupA==",
+  "JyUJEnU6hJu8x2NCnGrYFw==",
+  "JzW+yhrjXW1ivKu3mUXPXg==",
+  "K1CGbMfhlhIuS0YHLG30PQ==",
+  "K1RL+tLjICBvMupe7QppIQ==",
+  "K1RgR6HR5uDEQgZ32TAFgA==",
+  "K2gk9zWGd0lJFRMQ1AjQ/Q==",
+  "K3NBEG8jJTJbSrYSOC3FKw==",
+  "K4VS+DDkTdBblG93l2eNkA==",
+  "K4yZNVoqHjXNhrZzz2gTew==",
+  "K5lhaAIZkGeP5rH2ebSJFw==",
+  "K8PVQhEJCEH1ghwOdztjRw==",
+  "K9A87aMlJC8XB9LuFM913g==",
+  "KCJJfgLe00+tjSfP6EBcUg==",
+  "KGI/cXVz6v6CfL8H6akcUQ==",
+  "KI7tQFYW38zYHOzkKp9/lQ==",
+  "KO2XVYyNZadcQv8aCNn5JA==",
+  "KOm8PTa+ICgDrgK9QxCJZw==",
+  "KOmdvm+wJuZ/nT/o1+xOuw==",
+  "KPh6TwYpspne4KZA6NyMbw==",
+  "KQw25X4LnQ9is+qdqfxo0w==",
+  "KR401XBdgCrtVDSaXqPEiA==",
+  "KSorNz/PLR/YYkxaj1fuqw==",
+  "KSumhnbKxMXQDkZIpDSWmQ==",
+  "KTjwL+qswa+Bid8xLdjMTg==",
+  "KXuFON8tMBizNkCC48ICLA==",
+  "KXvdjZ3rRKn60djPTCENGA==",
+  "KYuUNrkTvjUWQovw9dNakA==",
+  "Kh/J1NpDBGoyDU+Mrnnxkg==",
+  "KhUT2buOXavGCpcDOcbOYg==",
+  "KhrIIHfqXl9zGE9aGrkRVg==",
+  "Kj1QI+s9261S3lTtPKd9eg==",
+  "KjfL7YyVqmCJGBGDFdJ0gw==",
+  "KjnL3x+56r3M2pDj1pPihA==",
+  "KkXlgPJPen6HLxbNn5llBw==",
+  "KkwQL0DeUM3nPFfHb2ej+A==",
+  "KlY5TGg0pR/57TVX+ik1KQ==",
+  "KmcGEE0pacQ/HDUgjlt7Pg==",
+  "KodYHHN62zESrXUye7M01g==",
+  "Koiog/hpN7ew5kgJbty34A==",
+  "Kt6BTG1zdeBZ3nlVk+BZKQ==",
+  "KuNY8qAJBce+yUIluW8AYw==",
+  "KujFdhhgB9q4oJfjYMSsLg==",
+  "KyLQxi5UP+qOiyZl0PoHNQ==",
+  "KzWdWPP2gH0DoMYV4ndJRg==",
+  "Kzs+/IZJO8v4uIv9mlyJ2Q==",
+  "L+N/6geuokiLPPSDXM9Qkg==",
+  "L2D7G0btrwxl9V4dP3XM5Q==",
+  "L2IeUnATZHqOPcrnW2APbA==",
+  "L2RofFWDO0fVgSz4D2mtdw==",
+  "L3Jt5dHQpWQk74IAuDOL8g==",
+  "L4+C6I7ausPl6JbIbmozAg==",
+  "LATQEY7f47i77M6p11wjWA==",
+  "LCj4hI520tA685Sscq6uLw==",
+  "LCvz/h9hbouXCmdWDPGWqg==",
+  "LDuBcL5r3PUuzKKZ9x6Kfw==",
+  "LEVYAE54618FrlXkDN01Kw==",
+  "LFcpCtnSnsCPD2gT/RA+Zg==",
+  "LGwcvetzQ3QqKjNh5vA8vw==",
+  "LHQETSI5zsejvDaPpsO29g==",
+  "LJeLdqmriyAQp+QjZGFkdQ==",
+  "LJtRcR70ug6UHiuqbT6NGw==",
+  "LKyOFgUKKGUU/PxpFYMILw==",
+  "LMCZqd3UoF/kHHwzTdj7Tw==",
+  "LMEtzh0+J27+4zORfcjITw==",
+  "LPYFDbTEp5nGtG6uO8epSw==",
+  "LQttmX92SI94+hDNVd8Gtw==",
+  "LSN9GmT6LUHlCAMFqpuPIA==",
+  "LUWxfy4lfgB5wUrqCOUisw==",
+  "LWWfRqgtph1XrpxF4N64TA==",
+  "LWd0+N3M94n81qd346LfJQ==",
+  "LZAKplVoNjeQgfaHqkyEJA==",
+  "La0gzdbDyXUq6YAXeKPuJA==",
+  "LawT9ZygiVtBk0XJ+KkQgQ==",
+  "LbPp1oL0t3K2BAlIN+l8DA==",
+  "LblwOqNiciHmt2NXjd89tg==",
+  "LcF0OqPWrcpHby8RwXz1Yg==",
+  "LcoJBEPTlSsQwfuoKQUxEw==",
+  "LhqRc9oewY4XaaXTcnXIHQ==",
+  "Lo1xTCEWSxVuIGEbBEkVxA==",
+  "LoUv/f2lcWpjftzpdivMww==",
+  "LpoayYsTO8WLFLCSh2kf2w==",
+  "Lqel4GdU0ZkfoJVXI5WC/Q==",
+  "LqgzKxbI6WTMz0AMIDJR5w==",
+  "LsmsPokAwWNCuC74MaqFCQ==",
+  "Lt/pVD4TFRoiikmgAxEWEw==",
+  "Lu02ic/E94s42A14m7NGCA==",
+  "LyPXOoOPMieqINtX8C9Zag==",
+  "LyYPOZKm8bBegMr5NTSBfg==",
+  "M/cQja3uIk1im9++brbBOA==",
+  "M0ESOGwJ4WZ4Ons1ljP0bQ==",
+  "M20iX2sUfw5SXaZLZYlTaA==",
+  "M2JMnViESVHTZaru6LDM6w==",
+  "M2suCoFHJ5fh9oKEpUG3xA==",
+  "M55eersiJuN9v61r8DoAjQ==",
+  "M98hjSxCwvZ27aBaJTGozQ==",
+  "M9oqlPb63e0kZE0zWOm+JQ==",
+  "MArbGuIAGnw4+fw6mZIxaw==",
+  "MBjMU/17AXBK0tqyARZP5w==",
+  "MFeXfNZy6Q9wBfZmPQy3xg==",
+  "MI+HSMRh8KTW+Afiaxd/Fw==",
+  "MJ1FuK8PXcmnBAG9meU84A==",
+  "MK7AqlJIGqK2+K5mCvMXRQ==",
+  "ML7ipnY/g8mA1PUIju1j8Q==",
+  "MLHt6Ak288G0RGhCVaOeqA==",
+  "MLlVniZ08FHAS5xe+ZKRaA==",
+  "MMaegl2Md9s/wOx5o9564w==",
+  "MN94B0r5CNAF9sl3Kccdbw==",
+  "MOrAbuJTyGKPC6MgYJlx5Q==",
+  "MQYM3BT77i35LG9HcqxY2Q==",
+  "MQvAr+OOfnYnr/Il/2Ubkg==",
+  "MUkRa/PjeWMhbCTq43g6Aw==",
+  "MVoxyIA+emaulH8Oks8Weg==",
+  "MWcV03ULc0vSt/pFPYPvFA==",
+  "MbI04HlTGCoc/6WDejwtaQ==",
+  "MdvhC1cuXqni/0mtQlSOCw==",
+  "MeKXnEfxeuQu9t3r/qWvcw==",
+  "MfkyURTBfkNZwB+wZKjP4g==",
+  "Mj87ajJ/yR41XwAbFzJbcA==",
+  "Ml3mi1lGS1IspHp3dYYClg==",
+  "MlKWxeEh8404vXenBLq4bw==",
+  "MlOOZOwcRGIkifaktEq0aQ==",
+  "MnStiFQAr3QlaRZ02SYGaQ==",
+  "Mofqu40zMRrlcGRLS42eBw==",
+  "MpAwWMt7bcs4eL7hCSLudQ==",
+  "MqqDg9Iyt4k3vYVW5F+LDw==",
+  "Mr5mCtC53+wwmwujOU/fWw==",
+  "MrbEUlTagbesBNg0OemHpw==",
+  "MrxR3cJaDHp0t3jQNThEyg==",
+  "MsCloSmTFoBpm7XWYb+ueQ==",
+  "Muf2Eafcf9G3U2ZvQ9OgtQ==",
+  "MvMbvZNKbXFe2XdN+HtnpQ==",
+  "N+K1ibXAOyMWdfYctNDSZQ==",
+  "N/HgDydvaXuJvTCBhG/KtA==",
+  "N2KovXW14hN/6+iWa1Yv3g==",
+  "N2X7KWekNN+fMmwyXgKD5w==",
+  "N3YDSkBUqSmrmNvZZx4a1Q==",
+  "N4/mQFyhDpPzmihjFJJn6w==",
+  "N65PqIWiQeS082D6qpfrAg==",
+  "N7fHwb397tuQHtBz1P80ZQ==",
+  "N8dXCawxSBX40fgRRSDqlQ==",
+  "N9nD7BGEM7LDwWIMDB+rEQ==",
+  "NBmB/cQfS+ipERd7j9+oVg==",
+  "ND2hYtAIQGMxBF7o7+u7nQ==",
+  "ND9l4JWcncRaSLATsq0LVw==",
+  "NDZWIhhixq7NT8baJUR4VQ==",
+  "NGApiVkDSwzO45GT57GDQw==",
+  "NKGY0ANVZ0gnUtzVx1pKSw==",
+  "NKRzJndo2uXNiNppVnqy1g==",
+  "NMbAjbnuK7EkVeY3CQI5VA==",
+  "NN/ymVQNa17JOTGr6ki3eQ==",
+  "NOmu8oZc6CcKLu+Wfz2YOQ==",
+  "NQVQfN3nIg9ipHiFh4BvfQ==",
+  "NRyFx6jqO/oo9ojvbYzsAg==",
+  "NSrzwNlB0bde3ph8k6ZQcQ==",
+  "NZtcY8fIpSKPso/KA6ZfzA==",
+  "Nc5kiwXCAyjpzt43G5RF1A==",
+  "NdULoUDGhIolzw1PyYKV0A==",
+  "NdVyHoTbBhX6Umz/9vbi0g==",
+  "Ndx5LDiVyyTz/Fh3oBTgvA==",
+  "Nf9fbRHm844KZ2sqUjNgkA==",
+  "NfxVYc3RNWZwzh2RmfXpiA==",
+  "Ng5v/B9Z10TTfsDFQ/XrXQ==",
+  "NhZbSq0CjDNOAIvBHBM9zA==",
+  "NiQ/m4DZXUbpca9aZdzWAw==",
+  "NiawWuMBDo0Q3P2xK/vnLQ==",
+  "NjeDgQ1nzH1XGRnLNqCmSg==",
+  "NmQrsmb8PVP05qnSulPe5Q==",
+  "NmWmDxwK5FpKlZbo0Rt8RA==",
+  "NoX8lkY+kd2GPuGjp+s0tQ==",
+  "NquRbPn8fFQhBrUCQeRRoQ==",
+  "Nr4zGo5VUrjXbI8Lr4YVWQ==",
+  "Nsd+DfRX6L54xs+iWeMjCQ==",
+  "NtwqUO3SKZE/9MXLbTJo/g==",
+  "NuBYjwlxadAH+vLWYRZ3bg==",
+  "NvkR0inSzAdetpI4SOXGhw==",
+  "NvurnIHin4O+wNP7MnrZ1w==",
+  "NxSdT2+MUkQN49pyNO2bJw==",
+  "NyF+4VRog7etp90B9FuEjA==",
+  "O/EizzJSuFY8MpusBRn7Tg==",
+  "O1ckWUwuhD44MswpaD6/rw==",
+  "O209ftgvu0vSr0UZywRFXA==",
+  "O538ibsrI4gkE5tfwjxjmg==",
+  "O5N2yd+QQggPBinQ+zIhtQ==",
+  "O7JiE0bbp583G6ZWRGBcfw==",
+  "O839JUrR+JS30/nOp428QA==",
+  "OChiB4BzcRE8Qxilu6TgJg==",
+  "OEJ40VmMDYzc2ESEMontRA==",
+  "OERGn45uzfDfglzFFn6JAg==",
+  "OFLn4wun6lq484I7f6yEwg==",
+  "OGpsXRHlaN8BvZftxh1e7A==",
+  "OHJBT2SEv5b5NxBpiAf7oQ==",
+  "OIwtfdq37eQ0qoXuB2j7Hw==",
+  "OMO4pqzfcbQ11YO4nkTXfg==",
+  "OONAvFS/kmH7+vPhAGTNSg==",
+  "OOS6wQCJsXH8CsWEidB35A==",
+  "OVHqwV8oQMC5KSMzd5VemA==",
+  "OaNpzwshdHUZMphQXa6i8w==",
+  "Oc3BqTF3ZBW3xE0QsnFn/A==",
+  "OlpA9HsF8MBh7b45WZSSlg==",
+  "OlwHO6Sg2zIwsCOCRu0HiQ==",
+  "Omi2ZB9kdR1HrVP2nueQkA==",
+  "Omr+zPWVucPCSfkgOzLmSQ==",
+  "OnmvXbyT2BYsSDJYZhLScA==",
+  "OpC/sL320wl5anx6AVEL+A==",
+  "OpL+vHwPasW30s2E1TYgpA==",
+  "OrqJKjRndcZ8OjE3cSQv7g==",
+  "Otz/PgYOEZ1CQDW54FWJIQ==",
+  "OwArFF1hpdBupCkanpwT+Q==",
+  "OwIGvTh8FPFqa4ijNkguAw==",
+  "Owg8qCpjZa+PmbhZew6/sw==",
+  "OzFRv+PzPqTNmOnvZGoo5g==",
+  "OzH7jTcyeM7RPVFtBdakpQ==",
+  "OzMR5D2LriC5yrVd5hchnA==",
+  "P0Pc8owrqt6spdf7FgBFSw==",
+  "P14k+fyz0TG9yIPdojp52w==",
+  "P3y5MoXrkRTSLhCdLlnc4A==",
+  "P430CeF2MDkuq11YdjvV8A==",
+  "P5WPQc5NOaK7WQiRtFabkw==",
+  "P5fucOJhtcRIoElFJS4ffg==",
+  "P5wS+xB8srW4a5KDp/JVkA==",
+  "P7eMlOz9YUcJO+pJy0Kpkw==",
+  "P8lUiLFoL100c9YSQWYqDA==",
+  "PAlx9+U+yQCAc5Fi0BOG0w==",
+  "PBULPuFXb6V3Di713n3Gug==",
+  "PCOGl7GIqbizAKj/sZmlwQ==",
+  "PD+yHtJxZJ2XEvjIPIJHsQ==",
+  "PF0lpolQQXlpc3qTLMBk8w==",
+  "PHwJ5ZAqqftZ4ypr8H1qiQ==",
+  "PKtXc4x4DEjM45dnmPWzyg==",
+  "PMCWKgog/G+GFZcIruSONw==",
+  "PMvG4NqJP76kMRAup6TSZA==",
+  "PPa7BDMpRdxJdBxkuWCxKA==",
+  "PTAm/jGkie7OlgVOvPKpaA==",
+  "PTW+fhZq/ErxHqpM0DZwHQ==",
+  "PXC6ZpdMH0ATis/jGW12iA==",
+  "PaROi5U16Tk35p0EKX5JpA==",
+  "ParhxI6RtLETBSwB0vwChQ==",
+  "PbDVq2Iw1eeM8c2o/XYdTA==",
+  "PbnxuVerGwHyshkumqAARg==",
+  "Pc+u0MAzp4lndTz4m6oQ5w==",
+  "PcdBtV8pfKU0YbDpsjPgwg==",
+  "PcoVtZrS1x1Q+6nfm4f80w==",
+  "PdBgXFq5mBqNxgCiqaRnkw==",
+  "PeJS+mXnAA6jQ0WxybRQ8w==",
+  "PfkWkSbAxIt1Iso0znW0+Q==",
+  "PggVPQL5YKqSU/1asihcrg==",
+  "PibGJQNw7VHPTgqeCzGUGA==",
+  "Po0lhBfiMaXhl+vYh1D8gA==",
+  "PolhKCedOsplEcaX4hQ0YQ==",
+  "Pp1ZMxJ8yajdbfKM4HAQxA==",
+  "PqLCd/pwc+q5GkL6MB0jTg==",
+  "Pt3i49uweYVgWze3OjkjJA==",
+  "Pu9pEf+Tek3J+3jmQNqrKw==",
+  "Pv9FWQEDLKnG/9K9EIz4Gw==",
+  "PwvPBc+4L73xK22S9kTrdA==",
+  "PxReytUUn/BbxYTFMu1r2Q==",
+  "PybPZhJErbRTuAafrrkb3g==",
+  "Q0TJZxpn3jk67L7N+YDaNA==",
+  "Q1pdQadt12anX1QRmU2Y/A==",
+  "Q3TpCE+wnmH/1h/EPWsBtQ==",
+  "Q4bfQslDSqU64MOQbBQEUw==",
+  "Q6vGRQiNwoyz7bDETGvi5g==",
+  "Q7Df6zGwvb4rC+EtIKfaSw==",
+  "Q7teXmTHAC5qBy+t7ugf0w==",
+  "Q8RVI/kRbKuXa8HAQD7zUA==",
+  "QAz7FA+jpz9GgLvwdoNTEQ==",
+  "QCpzCTReHxGm5lcLsgwPCA==",
+  "QGYFMpkv37CS2wmyp42ppg==",
+  "QH36wzyIhh6I56Vnx79hRA==",
+  "QH3lAwOYBAJ0Fd5pULAZqw==",
+  "QIKjir/ppRyS63BwUcHWmw==",
+  "QJEbr3+42P9yiAfrekKdRQ==",
+  "QTz21WkhpPjfK8YoBrpo+w==",
+  "QV0OG5bpjrjku4AzDvp9yw==",
+  "QVwuN66yPajcjiRnVk/V8g==",
+  "QWURrsEgxbJ8MWcaRmOWqw==",
+  "Qc+XYy2qyWJ5VVwd2PExbw==",
+  "Qf7JFJJuuacSzl6djUT2EQ==",
+  "Qg1ubGl+orphvT990e5ZPA==",
+  "QiozlNcQCbqXtwItWExqJQ==",
+  "QmSBVvdk0tqH9RAicXq2zA==",
+  "QmcURiMzmVeUNaYPSOtTTg==",
+  "QoUC9nyK1BAzoUVnBLV2zw==",
+  "QoqHzpHDHTwQD5UF30NruQ==",
+  "QozQL0DTtr+PXNKifv6l6g==",
+  "Qrh7OEHjp80IW+YzQwzlJg==",
+  "QsquNcCZL9wv7oZFqm64vQ==",
+  "QtD35QhE8sAccPrDnhtQmQ==",
+  "Qv6wWP4PpycDGxe7EZNSCw==",
+  "QvYZxsLdu+3nV/WhY1DsYg==",
+  "Qx6rVv9Xj8CBjqikWI9KFA==",
+  "QyyiJ5I/OZC50o89fa5EmQ==",
+  "R+beucURp/H5jLs4kW6wmg==",
+  "R/y6+JJP8rzz1KITJ4qWBw==",
+  "R1TCCfgltnXBvt5AiUnCtQ==",
+  "R2OOV18CV/YpWL1xzr/VQg==",
+  "R2Use39If2C0FVBP7KDerA==",
+  "R36O31Pj8jn0AWSuqI7X2Q==",
+  "R3ijnutzvK6IKV3AKHQZSA==",
+  "R5oOM58zdbVxFSDQnNWqeA==",
+  "R6Me6sSGP5xpNI8R0xGOWw==",
+  "R6cO8GzYfOGTIi773jtkXw==",
+  "R81DX/5a7DYKkS4CU+TL+w==",
+  "R8FxgXWKBpEVbnl41+tWEw==",
+  "R8ULpSNu9FcCwXZM0QedSg==",
+  "R906Kxp2VFVR3VD+o6Vxcw==",
+  "R97chlspND/sE9/HMScXjQ==",
+  "RAAw14BA1ws5Wu/rU7oegw==",
+  "RAECgYZmcF4WxcFcZ4A0Ww==",
+  "RBMv0IxXEO3o7MnV47Bzow==",
+  "RClzwwKh51rbB4ekl99EZA==",
+  "RDgGGxTtcPvRg/5KRRlz4w==",
+  "REnDNe9mGfqVGZt+GdsmjQ==",
+  "RHKCMAqrPjvUYt13BVcmvw==",
+  "RHToSGASrwEmvzjX6VPvNQ==",
+  "RIVYGO2smx9rmRoDVYMPXw==",
+  "RIZYDgXqsIdTf9o2Tp/S7g==",
+  "RJJqFMeiCZHdsqs72J17MQ==",
+  "RKVDdE1AkILTFndYWi9wFg==",
+  "RM5CpIiB94Sqxi462G7caA==",
+  "RNK9G1hfuz3ETY/RmA9+aA==",
+  "RNdyt6ZRGvwYG5Ws3QTuEA==",
+  "ROSt+NlEoiPFtpRqKtDUrQ==",
+  "RQOlmzHwQKFpafKPJj0D8w==",
+  "RQywrOLZEKw9+kG6qTzr3g==",
+  "RUmhye56tQu9xXs4SRJpOQ==",
+  "RVD3Ij6sRwwxTUDAxwELtA==",
+  "RWI0HfpP7643OSEZR8kxzw==",
+  "RYkDwwng6eeffPHxt8iD9A==",
+  "RZTpYKxOAH9JgF1QFGN+hw==",
+  "RfSwpO/ywQx4lfgeYlBr2w==",
+  "RgtwfY5pTolKrUGT+6Pp6g==",
+  "RhcqXY4OsZlVVF7ZlkTeRw==",
+  "RiahBXX2JbPzt8baPiP/8g==",
+  "RkQK9S1ezo+dFYHQP57qrw==",
+  "RlNPyhgYOIn28R4vKCVtYA==",
+  "RnOXOygwJFqrD+DlM3R5Ew==",
+  "RnxOYPSQdHS6fw4KkDJtrA==",
+  "RppDe/WGt1Ed6Vqg1+cCkQ==",
+  "RqYpA5AY7mKPaSxoQfI1CA==",
+  "RrE3B3X/SJi3CqCUlTYwaw==",
+  "Rrq0ak9YexLqqbSD4SSXlw==",
+  "Rs8deApkoosIJSfX7NXtAA==",
+  "RuLeQHP1wHsxhdmYMcgtrQ==",
+  "RvXWAFwM+mUAPW1MjPBaHA==",
+  "Rvchz/xjcY9uKiDAkRBMmA==",
+  "Rww3qkF3kWSd+AaMT0kfdw==",
+  "RxmdoO8ak8y/HzMSIm+yBQ==",
+  "Ry3zgZ6KHrpNyb7+Tt2Pkw==",
+  "RzeH+G3gvuK1z+nJGYqARQ==",
+  "S+b37XhKRm8cDwRb1gSsKQ==",
+  "S2MAIYeDQeJ1pl9vhtYtUg==",
+  "S3VQa6DH+BdlSrxT/g6B5g==",
+  "S47hklz3Ow+n5aY6+qsCoA==",
+  "S4RvORcJ3m6WhnAgV4YfYA==",
+  "S4rFuiKLFKZ+cL7ldiTwpg==",
+  "S7Vjy/gOWp0HozPP1RUOZw==",
+  "S8jlvuYuankCnvIvMVMzmg==",
+  "S9L29U2P5K8wNW+sWbiH7w==",
+  "SCO9nQncEcyVXGCtx30Jdg==",
+  "SChDh/Np1HyTPWfICfE1uA==",
+  "SDi5+FoP9bMyKYp+vVv1XA==",
+  "SEGu+cSbeeeZg4xWwsSErQ==",
+  "SEIZhyguLoyH7So0p1KY0A==",
+  "SESKbGF35rjO64gktmLTWA==",
+  "SElc2+YVi3afE1eG1MI7dQ==",
+  "SFn78uklZfMtKoz2N0xDaQ==",
+  "SIuKH/Qediq0TyvqUF93HQ==",
+  "SM7E98MyViSSS9G0Pwzwyw==",
+  "SNPYH4r/J9vpciGN2ybP5Q==",
+  "SOdpdrk2ayeyv0xWdNuy9g==",
+  "SPGpjEJrpflv1hF0qsFlPw==",
+  "SPHU6ES1WVm0Mu2LB+YjrA==",
+  "SSKhl2L3Mvy93DcZulADtA==",
+  "SUAwMWLMml8uGqagz5oqhQ==",
+  "SVFbcjXbV7HRg+7jUrzpwg==",
+  "SVLHWPCCH7GPVCF7QApPbw==",
+  "SVuEYfQ9FGyVMo1672n0Yg==",
+  "SbMjjI8/P8B9a9H2G0wHEQ==",
+  "Scto+9TWxj1eZgvNKo+a9A==",
+  "SfwnYZCKP1iUJyU1yq4eKg==",
+  "SiSlasZ+6U2IZYogqr2UPg==",
+  "Slu3z535ijcs5kzDnR7kfA==",
+  "SmRWEzqddY9ucGAP5jXjAg==",
+  "Sr9c0ReRpkDYGAiqSy683g==",
+  "Srl4HivgHMxMOUHyM3jvNw==",
+  "StDtLMlCI75g4XC59mESEQ==",
+  "StoXC7TBzyRViPzytAlzyQ==",
+  "StpQm/cQF8cT0LFzKUhC5w==",
+  "SusSOsWNoAerAIMBVWHtfA==",
+  "Swjn3YkWgj0uxbZ1Idtk+A==",
+  "SzCGM8ypE58FLaR1+1ccxQ==",
+  "Szko0IPE7RX2+mfsWczrMg==",
+  "T/6gSz2HwWJDFIVrmcm8Ug==",
+  "T1pMWdoNDpIsHF8nKuOn2A==",
+  "T6LA+daQqRI38iDKZTdg1A==",
+  "T7waQc3PvTFr0yWGKmFQdQ==",
+  "T9WoUJNwp8h4Yydixbx6nA==",
+  "TA9WjiLAFgJubLN4StPwLw==",
+  "TAD0Lk95CD86vbwrcRogaQ==",
+  "TBQpcKq2huNC5OmI2wzRQw==",
+  "TDrq23VUdzEU/8L5i8jRJQ==",
+  "TGB+FIzzKnouLh5bAiVOQg==",
+  "THfzE2G2NVKKfO+A2TjeFw==",
+  "THs1r8ZEPChSGrrhrNTlsA==",
+  "TI90EuS/bHq/CAlX32UFXg==",
+  "TIKadc6FAaRWSQUg5OATgg==",
+  "TIWSM78m0RprwgPGK/e0JA==",
+  "TLJbasOoVO435E5NE5JDcA==",
+  "TNyvLixb03aP2f8cDozzfA==",
+  "TSGL3iQYUgVg/O9SBKP9EA==",
+  "TSPFvkgw6uLsJh66Ou0H9w==",
+  "TVlHoi8J7sOZ2Ti7Dm92cQ==",
+  "TXab/hqNGWaSK+fXAoB2bg==",
+  "TYlnrwgyeZoRgOpBYneRAg==",
+  "TZ3ATPOFjNqFGSKY3vP2Hw==",
+  "TZT86wXfzFffjt0f95UF5w==",
+  "TafM7nTE5d+tBpRCsb8TjQ==",
+  "TahqPgS7kEg+y6Df0HBASw==",
+  "TcFinyBrUoAEcLzWdFymow==",
+  "TcGhAJHRr7eMwGeFgpFBhg==",
+  "TcyyXrSsQsnz0gJ36w4Dxw==",
+  "TeBGJCqSqbzvljIh9viAqA==",
+  "TfHvdbl2M4deg65QKBTPng==",
+  "TfNHjSTV8w6Pg6+FaGlxvA==",
+  "TgWe70YalDPyyUz6n88ujg==",
+  "Tk5MAqd1gyHpkYi8ErlbWg==",
+  "TlJizlASbPtShZhkPww4UA==",
+  "Tm4zk2Lmg8w4ITMI31NfTA==",
+  "Tmx0suRHzlUK4FdBivwOwA==",
+  "Tp52d1NndiC9w3crFqFm9g==",
+  "TrLmfgwaNATh24eSrOT+pw==",
+  "TrWS+reCJ0vbrDNT5HDR9w==",
+  "Tu6w6DtX2RJJ3Ym3o3QAWw==",
+  "TuaG3wRdM9BWKAxh2UmAsg==",
+  "Tud+AMyuFkWYYZ73yoJGpQ==",
+  "Tug3eh+28ttyf+U7jfpg5w==",
+  "U+bB5NjFIuQr/Y5UpXHwxA==",
+  "U+oTpcjhc0E+6UjP11OE/Q==",
+  "U0KmEI6e5zJkaI4YJyA5Ew==",
+  "U49SfOBeqQV9wzsNkboi8Q==",
+  "U6VQghxOXsydh3Naa5Nz4A==",
+  "U9kE50Wq5/EHO03c5hE4Ug==",
+  "UAqf4owQ+EmrE45hBcUMEw==",
+  "UEMwF4kwgIGxGT4jrBhMPQ==",
+  "UHpge5Bldt9oPGo2oxnYvQ==",
+  "UIXytIHyVODxlrg+eQoARA==",
+  "UK+R+hAoVeZ4xvsoZjdWpw==",
+  "UNRlg6+CYVOt68NwgufGNA==",
+  "UNdKik7Vy23LjjPzEdzNsg==",
+  "UNt7CNMtltJWq8giDciGyA==",
+  "UP7NXAE0uxHRXUAWPhto0w==",
+  "UP9mmAKzeQqGhod7NCqzhg==",
+  "UPYR575ASaBSZIR3aX1IgQ==",
+  "UPzS4LR3p/h0u69+7YemrQ==",
+  "UQTQk5rrs6lEb1a+nkLwfg==",
+  "USCvrMEm/Wqeu9oX6FrgcQ==",
+  "USq1iF90eUv41QBebs3bhw==",
+  "UTmTgvl+vGiCDQpLXyVgOg==",
+  "UVEZPoH9cysC+17MKHFraw==",
+  "UXUNYEOffgW3AdBs7zTMFA==",
+  "UZoibx+y1YJy/uRSa9Oa2w==",
+  "Ua6aO6HwM+rY4sPR19CNFA==",
+  "UbABE6ECnjB+9YvblE9CYw==",
+  "UbSFw5jtyLk5MealqJw++A==",
+  "Ugt8HVC/aUzyWpiHd0gCOQ==",
+  "UgvtdE2eBZBUCAJG/6c0og==",
+  "Uh1mvZNGehK1AaI4a1auKQ==",
+  "Uje3Ild84sN41JEg3PEHDg==",
+  "UjmDFO7uzjl4RZDPeMeNyg==",
+  "Um1ftRBycvb+363a90Osog==",
+  "Umd+5fTcxa3mzRFDL9Z8Ww==",
+  "Uo+FIhw1mfjF6/M8cE1c/Q==",
+  "Uo1ebgsOxc3eDRds1ah3ag==",
+  "UreSZCIdDgloih8KLeX7gg==",
+  "UtLYUlQJ02oKcjNR3l+ktg==",
+  "Uudn69Kcv2CGz2FbfJSSEA==",
+  "UvC1WADanMrhT+gPp/yVqA==",
+  "Uw6Iw+TP9ZdZGm2b/DAmkg==",
+  "UwqBVd4Wfias4ElOjk2BzQ==",
+  "Uy4QI8D2y1bq/HDNItCtAw==",
+  "UymZUnEEQWVnLDdRemv+Tw==",
+  "UzPPFSXgeV7KW4CN5GIQXA==",
+  "V+QzdKh5gxTPp2yPC9ZNEg==",
+  "V/xG5QFyx1pihimKmAo8ZA==",
+  "V1fvtnJ0L3sluj9nI5KzRw==",
+  "V2P75JFB4Se9h7TCUMfeNA==",
+  "V5HEaY3v9agOhsbYOAZgJA==",
+  "V5HKdaTHjA8IzvHNd9C51g==",
+  "V6CRKrKezPwsRdbm0DJ2Yg==",
+  "V6zyoX6MERIybGhhULnZiw==",
+  "V7eji28JSg3vTi30BCS7gw==",
+  "V8m51xgUgywRoV6BGKUrgg==",
+  "V8q+xz4ljszLZMrOMOngug==",
+  "V9G1we3DOIQGKXjjPqIppQ==",
+  "V9vkAanK+Pkc4FGAokJsTA==",
+  "VAg/aU5nl72O+cdNuPRO4g==",
+  "VCL3xfPVCL5RjihQM59fgg==",
+  "VE4sLM5bKlLdk85sslxiLQ==",
+  "VGRCSrgGTkBNb8sve0fYnQ==",
+  "VH70dN82yPCRctmAHMfCig==",
+  "VI8pgqBZeGWNaxkuqQVe7g==",
+  "VIC7inSiqzM6v9VqtXDyCw==",
+  "VIkS30v268x+M1GCcq/A8A==",
+  "VJt2kPVBLEBpGpgvuv1oUw==",
+  "VK95g27ws2C6J2h/7rC2qA==",
+  "VOB+9Bcfu8aHKGdNO0iMRw==",
+  "VOvrzqiZ1EHw+ZzzTWtpsw==",
+  "VPa7DG6v7KnzMvtJPb88LQ==",
+  "VPqyIomYm7HbK5biVDvlpw==",
+  "VQIpquUqmeyt/q6OgxzduQ==",
+  "VRnx+kd6VdxChwsfbo1oeQ==",
+  "VUDsc9RMS1fSM43c+Jo9dQ==",
+  "VWNDBOtjiiI4uVNntOlu/A==",
+  "VWb8U4jF/Ic0+wpoXi/y/g==",
+  "VWy9lB5t4fNCp4O/4n8S4w==",
+  "VX+cVXV8p9i5EBTMoiQOQQ==",
+  "VXu4ARjq7DS2IR/gT24Pfw==",
+  "VZX1FnyC8NS2k3W+RGQm4g==",
+  "VaJc9vtYlqJbRPGb5Tf0ow==",
+  "VbCoGr8apEcN7xfdaVwVXw==",
+  "VbHoWmtiiPdABvkbt+3XKQ==",
+  "Vg2E5qEDfC+QxZTZDCu9yQ==",
+  "VhYGC8KYe5Up+UJ2OTLKUw==",
+  "Vik8tGNxO0xfdV0pFmmFDw==",
+  "ViweSJuNWbx5Lc49ETEs/A==",
+  "VjclDY8HN4fSpB263jsEiQ==",
+  "VllbOAjeW3Dpbj5lp2OSmA==",
+  "VoPth5hDHhkQcrQTxHXbuw==",
+  "VpmBstwR7qPVqPgKYQTA3g==",
+  "VsXEBIaMkVftkxt1kIh7TA==",
+  "Vu0E+IJXBnc25x4n41kQig==",
+  "VzQ1NwNv9btxUzxwVqvHQg==",
+  "VznvTPAAwAev+yhl9oZT0w==",
+  "W+M4BcYNmjj7xAximDGWsA==",
+  "W/0s1x3Qm+wN8DhROk6FrQ==",
+  "W/5ThNLu43uT1O+fg0Fzwg==",
+  "W04GeDh+Tk/I1S85KlozRA==",
+  "W2x0SBzSIsTRgyWUCOZ/lg==",
+  "W4CfeVp9mXgk04flryL7iA==",
+  "W4utAK3ws0zjiba/3i91YA==",
+  "W5now3RWSzzMDAxsHSl++Q==",
+  "W8bATujVUT80v2XGJTKXDg==",
+  "W8y32OLHihfeV0XFw7LmOg==",
+  "WADmxH7R6B4LR+W6HqQQ6A==",
+  "WBu0gJmmjVdVbjDmQOkU6w==",
+  "WGKFTWJac8uehn3N59yHJw==",
+  "WHutPin+uUEqtrA7L8878A==",
+  "WKehT4nGF2T7aKuzABDMlA==",
+  "WLsh3UF4WXdHwgnbKEwRlQ==",
+  "WLwpjgr9KzevuogoHZaVUw==",
+  "WN7lFJfw4lSnTCcbmt5nsg==",
+  "WNfDNaWUOqABQ6c6kR+eyw==",
+  "WQMffxULFKJ+bun6NrCURA==",
+  "WQznrwqvMhUlM3CzmbhAOQ==",
+  "WRjYdKdtnd1G9e/vFXCt0g==",
+  "WRoJMO0BCJyn5V6qnpUi4Q==",
+  "WTr3q/gDkmB4Zyj7Ly20+w==",
+  "WVhfn2yJZ43qCTu0TVWJwA==",
+  "WWN44lbUnEdHmxSfMCZc6w==",
+  "WY7mCUGvpXrC8gkBB46euw==",
+  "WbAdlac/PhYUq7J2+n5f+w==",
+  "Wd0dOs7eIMqW5wnILTQBtg==",
+  "WdCWezJU4JK43EOZ9YHVdg==",
+  "Wf2olJCYZRGTTZxZoBePuQ==",
+  "WjDqf1LyFyhdd8qkwWk+MA==",
+  "WkSJpxBa45XJRWWZFee7hw==",
+  "Wn+Vj4eiWx0WPUHr3nFbyA==",
+  "WnHK5ZQDR6Da5cGODXeo0A==",
+  "WrJMOuXSLKKzgmIDALkyNw==",
+  "WtT0QAERZSiIt2SFDiAizg==",
+  "WwraoO97OTalvavjUsqhxQ==",
+  "Wx9jh/teM0LJHrvTScssyQ==",
+  "WyCFB4+6lVtlzu3ExHAGbQ==",
+  "WzjvUJ4jZAEK7sBqw+m07A==",
+  "X/Gha4Ajjm/GStp/tv+Jvw==",
+  "X1PaCfEDScclLtOTiF5JUw==",
+  "X2Tawm2Cra6H7WtXi1Z4Qw==",
+  "X2YfnPXgF2VHVX95ZcBaxQ==",
+  "X4hrgqMIcApsjA9qOWBoCw==",
+  "X4kdXUuhcUqMSduqhfLpxA==",
+  "X4o0OkTz0ec70mzgwRfltA==",
+  "X6Ln4si8G5aKar52ZH/FEQ==",
+  "X6ulLp4noBgefQTsbuIbYQ==",
+  "X9QAaNjgiOeAWSphrGtyVw==",
+  "XA2hUgq3GVPpxtRYiqnclg==",
+  "XAq/C+XyR6m3uzzLlMWO5Q==",
+  "XEwOJG24eaEtAuBWtMxhwg==",
+  "XF/yncdoT4ruPeXCxEhl9Q==",
+  "XGAXhUFjORwKmAq9gGEcRg==",
+  "XHHEg/8KZioW/4/wgSEkbQ==",
+  "XHjrTLXkm/bBY/BewmJcCQ==",
+  "XJihma9zSRrXLC+T+VcFDA==",
+  "XLq/nWX8lQqjxsK9jlCqUg==",
+  "XOG1PYgqoG8gVLIbVLTQgg==",
+  "XSb71ae0v+yDxNF5HJXGbQ==",
+  "XTCcsVfEvqxnjc0K5PLcyw==",
+  "XV13yK0QypJXmgI+dj4KYw==",
+  "XV5MYe0Q7YMtoBD6/iMdSw==",
+  "XVVy3e6dTnO3HpgD6BtwQw==",
+  "XXFr0WUuGsH5nXPas7hR3Q==",
+  "Xconi1dtldH90Wou9swggw==",
+  "XddlSluOH6VkR7spFIFmdQ==",
+  "XdkxmYYooeDKzy7PXVigBQ==",
+  "XePy/hhnQwHXFeXUQQ55Vg==",
+  "XfBOCJwi2dezYzLe316ivw==",
+  "XfY+QUriCAA1+3QAsswdgg==",
+  "XgPHx2+ULpm14IOZU2lrDg==",
+  "XjjrIpsmATV/lyln4tPb+g==",
+  "Xo8ZjXOIoXlBjFCGdlPuZw==",
+  "XpGXh76RDgXC4qnTCsnNHA==",
+  "XqFSbgvgZn0CpaZoZiRauQ==",
+  "XqTK/2QuGWj50tGmiDxysA==",
+  "XqUO7ULEYhDOuT/I2J8BOA==",
+  "XqW7UBTobbV4lt1yfh0LZw==",
+  "XrFDomoH2qFjQ2jJ2yp9lA==",
+  "XsF7R12agx/KkRWl0TyXRA==",
+  "Xv0mNYedaBc57RrcbHr9OA==",
+  "XwKWd03sAz8MmvJEuN08xA==",
+  "Y1Nm3omeWX2MXaCjDDYnWQ==",
+  "Y1flEyZZAYxauMo4cmtJ1w==",
+  "Y26jxXvl79RcffH8O8b9Ew==",
+  "Y5KKN7t/v9JSxG/m1GMPSA==",
+  "Y5XR8Igvau/h+c1pRgKayg==",
+  "Y5iDQySR2c3MK7RPMCgSrw==",
+  "Y78dviyBS3Jq9zoRD5sZtQ==",
+  "Y7OofF9eUvp7qlpgdrzvkg==",
+  "Y7XpxIwsGK3Lm/7jX/rRmg==",
+  "Y7iDCWYrO1coopM3RZWIPg==",
+  "YA+zdEC+yEgFWRIgS1Eiqw==",
+  "YA0kMTJ82PYuLA4pkn4rfw==",
+  "YHM6NNHjmodv+G0mRLK7kw==",
+  "YK+q7uJObkQZvOwQ9hplMg==",
+  "YLz+HA6qIneP+4naavq44Q==",
+  "YNqIHCmBp/EbCgaPKJ7phw==",
+  "YPgMthbpcBN2CMkugV60hQ==",
+  "YVlRQHQglkbj3J2nHiP/Hw==",
+  "YXHQ3JI9+oca8pc/jMH6mA==",
+  "YZ39RIXpeLAhyMgmW2vfkQ==",
+  "YZt6HwCvdI5DRQqndA/hBQ==",
+  "YaUKOTyByjUvp1XaoLiW5Q==",
+  "YfbfE3WyYOW7083Y8sGfwQ==",
+  "YgVpC5d5V6K/BpOD663yQA==",
+  "YhLEPsi/TNyeUJw69SPYzQ==",
+  "Yig+Wh18VIqdsmwtwfoUQw==",
+  "Yjm5tSq1ejZn3aWqqysNvA==",
+  "YmaksRzoU+OwlpiEaBDYaQ==",
+  "YmjZJyNfHN5FaTL/HAm8ww==",
+  "YodhkayN5wsgPZEYN7/KNA==",
+  "YrEP9z2WPQ8l7TY1qWncDA==",
+  "YtZ8CYfnIpMd2FFA5fJ+1Q==",
+  "Yw4ztKv6yqxK9U1L0noFXg==",
+  "Yy2pPhITTmkEwoudXizHqQ==",
+  "YzTV0esAxBFVls3e0qRsnA==",
+  "Z+bsbVP91KrJvxrujBLrrQ==",
+  "Z0sjccxzKylgEiPCFBqPSA==",
+  "Z2MkqmpQXdlctCTCUDPyzw==",
+  "Z2rwGmVEMCY6nCfHO3qOzw==",
+  "Z5B+uOmPZbpbFWHpI9WhPw==",
+  "Z8T1b9RsUWf59D06MUrXCQ==",
+  "Z9bDWIgcq6XwMoU2ECDR5Q==",
+  "ZAQHWU6RMg4IadOxuaukyw==",
+  "ZCdad3AwhVArttapWFwT/Q==",
+  "ZH5Es/4lJ+D5KEkF1BVSGg==",
+  "ZIZx4MehWTVXPN9cVQBmyA==",
+  "ZItMIn1vhGqAlpDHclg0Ig==",
+  "ZJY+hujfd58mTKTdsmHoQQ==",
+  "ZJc7GV0Yb6MrXkpDVIuc8g==",
+  "ZKXxq9yr7NGBOHidht34uQ==",
+  "ZKeTDCboOgCptrjSfgu0xw==",
+  "ZKvox7BaQg4/p5jIX69Umw==",
+  "ZNrjP1fLdQpGykFXoLBNPw==",
+  "ZQ0ZnTsZKWxbRj7Tilh24Q==",
+  "ZQSDYgpsimK+lYGdXBWE/w==",
+  "ZRWyfXyXqAaOEjkzWl949Q==",
+  "ZRnR6i+5WKMRfs3BDRBCJg==",
+  "ZSmN8mmI9lDEHkJqBBg0Nw==",
+  "ZV8mEgJweIYk0/l0BFKetA==",
+  "ZVnErH1Si4u51QoT0OT7pA==",
+  "ZWXfE3uGU91WpPMGyknmqw==",
+  "ZXeMG5eqQpZO/SGKC4WQkA==",
+  "ZYW30FfgwHmW6nAbUGmwzA==",
+  "ZZImGypBWwYOAW43xDRWCQ==",
+  "ZaPsR9X77SNt7dLjMJUh8A==",
+  "ZbLVNTQSVZQWTNgC4ZGfQg==",
+  "ZcuIvc8fDI+2uF0I0uLiVA==",
+  "ZfRlID+pC1Rr4IY14jolMw==",
+  "ZgdpqFrVGiaHkh9o3rDszg==",
+  "ZgjifTVKmxOieco81gnccQ==",
+  "ZiJ/kJ9GneF3TIEm08lfvQ==",
+  "ZlBNHAiYsfaEEiPQ1z+rCA==",
+  "ZlOAnCLV1PkR0kb3E+Nfuw==",
+  "ZmVpw1TUVuT13Zw/MNI5hQ==",
+  "ZmblZauRqO5tGysY3/0kDw==",
+  "ZoNSxARrRiKZF5Wvpg7bew==",
+  "Zqd6+81TwYuiIgLrToFOTQ==",
+  "ZqjnqxZE/BjOUY0CMdVl0g==",
+  "ZqkmoGB0p5uT5J6XBGh7Tw==",
+  "ZrCezGLz38xKmzAom6yCTQ==",
+  "ZrCnZB/U/vcqEtI1cSvnww==",
+  "ZtWvgitOSRDWq7LAKYYd4Q==",
+  "ZtmnX24AwYAXHb2ZDC6MeQ==",
+  "ZuayB6IpbeITokKGVi9R5w==",
+  "ZvvxwDd0I6MsYd7aobjLUA==",
+  "ZyDh3vCQWzS5DI1zSasXWA==",
+  "ZybIEGf1Rn/26vlHmuMxhw==",
+  "ZydKlOpn2ySBW0G3uAqwuw==",
+  "ZygAjaN62XhW5smlLkks+Q==",
+  "Zyo0fzewcqXiKe2mAwKx5g==",
+  "ZyoaR1cMiKAsElmYZqKjLA==",
+  "Zz/5VMbw1TqwazReplvsEg==",
+  "ZzT5b0dYQXkQHTXySpWEaA==",
+  "ZzduJxTnXLD9EPKMn1LI4Q==",
+  "a/Y6IAVFv0ykRs9WD+ming==",
+  "a1aL8zQ+ie3YPogE3hyFFg==",
+  "a4EYNljinYTx9vb1VvUA6A==",
+  "a4rPqbDWiMivVzaRxvAj7g==",
+  "a5gZ5uuRrXEAjgaoh7PXAg==",
+  "a6IszND1m+6w+W+CvseC7g==",
+  "a6vem8n6WmRZAalDrHNP0g==",
+  "a7Pv1SOWYnkhIUC22dhdDA==",
+  "aD4QvtMlr8Lk/zZgZ6zIMg==",
+  "aEnHUfn7UE/Euh6jsMuZ7g==",
+  "aFJuE/s+Kbge4ppn+wulkA==",
+  "aIPde9CtyZrhbHLK740bfw==",
+  "aJFbBhYtMbTyMFBFIz/dTA==",
+  "aK9nybtiIBUvxgs1iQFgsw==",
+  "aLY2pCT0WfFO5EJyinLpPg==",
+  "aLh1XEUrfR9W82gzusKcOg==",
+  "aMa1yVA71/w6Uf1Szc9rMA==",
+  "aMmrAzoRWLOMPHhBuxczKg==",
+  "aN5x46Gw1VihRalwCt1CGg==",
+  "aOeJZUIZM9YWjIEokFPnzQ==",
+  "aRpdnrOyu5mWB1P5YMbvOA==",
+  "aRrcmH+Ud3mF1vEXcpEm4w==",
+  "aTWiWjyeSDVY/q8y9xc2zg==",
+  "aWZRql2IUPVe9hS3dxgVfQ==",
+  "aXqiibI6BpW3qilV6izHaQ==",
+  "aXrbsro7KLV8s4I4NMi4Eg==",
+  "aXs9qTEXLTkN956ch3pnOA==",
+  "aY6B28XdPnuYnbOy9uSP8A==",
+  "adJAjAFyR2ne1puEgRiH+g==",
+  "adT+OjEB2kqpeYi4kQ6FPg==",
+  "afMd/Hr3rYz/l7a3CfdDjg==",
+  "ahAbmGJZvUOXrcK6OydNGQ==",
+  "alJtvTAD7dH/zss/Ek1DMQ==",
+  "alqHQBz8V446EdzuVfeY5Q==",
+  "anyANMnNkUqr3JuPJz5Qzw==",
+  "apWEPWUvMC24Y+2vTSLXoA==",
+  "aqcOby9QyEbizPsgO3g0yw==",
+  "ash1r2J6B0PUxJe8P0otVQ==",
+  "asouSfUjJa8yfMG7BBe+fA==",
+  "auvG6kWMnhCMi7c7e9eHrw==",
+  "avFTp3rS6z5zxQUZQuaBHQ==",
+  "avZp5K7zJvRvJvpLSldNAw==",
+  "aw4CzX8pYbPVMuNrGCEcWg==",
+  "axEl7xXt/bwlvxKhI7hx4g==",
+  "ayBGGPEy++biljvGcwIjXA==",
+  "aySnrShOW4/xRSzl/dtSKQ==",
+  "ays5/F7JANIgPHN0vp2dqQ==",
+  "b06KGv5zDYsTxyTbQ9/eyA==",
+  "b0vZfEyuTja2JYMa20Rtbg==",
+  "b16O4LF7sVqB7aLU2f3F1A==",
+  "b3BQG9/9qDNC/bNSTBY/sQ==",
+  "b3q8kjHJPj9DWrz3yNgwjQ==",
+  "b4BoZmzVErvuynxirLxn0w==",
+  "b4aFwwcWMXsSdgS1AdFOXA==",
+  "b53qqLnrTBthRXmmnuXWvw==",
+  "b6rrRA0W247O+FfvDHbVCQ==",
+  "b85nxzs8xiHxaqezuDVWvg==",
+  "b8BZV1NfBdLi70ir4vYvZg==",
+  "bA2kaTpeXflTElTnQRp6GQ==",
+  "bBEndaOStXBpAK79FrgHaw==",
+  "bG+P+p34t/IJ1ubRiWg6IA==",
+  "bGGUhiG9SqJMHQWitXTcYQ==",
+  "bIk7Fa6SW7X18hfDjTKowg==",
+  "bJ1cZW7KsXmoLw0BcoppJg==",
+  "bJgsuw29cO2WozqsGZxl7w==",
+  "bK045TkBlz+/3+6n6Qwvrg==",
+  "bL2FuwsPT7a7oserJQnPcw==",
+  "bLEntCrCHFy9pg3T3gbBzg==",
+  "bLd38ZNkVeuhf0joEAxnBQ==",
+  "bLsStF0DDebpO+xulqGNtg==",
+  "bMWFvjM8eVezU1ZXKmdgqw==",
+  "bMb1ia0rElr2ZpZVhva0Jw==",
+  "bNDKcFu8T5Y6OoLSV+o/Sw==",
+  "bNq/hj0Cjt4lkLQeVxDVdQ==",
+  "bO55S58bqDiRWXSAIUGJKw==",
+  "bPRX2zl+K1S0iWAWUn1DZw==",
+  "bQ7J5mebp38rfP/fuqQOsg==",
+  "bQKkL+/KUCsAXlwwIH0N3w==",
+  "bTNRjJm+FfSQVfd56nNNqQ==",
+  "bUF0JIfS4uKd3JZj2xotLQ==",
+  "bUxQBaqKyvlSHcuRL9whjg==",
+  "bV9r7j2kNJpDCEM5E2339Q==",
+  "bWwtTFlhO3xEh/pdw0uWaQ==",
+  "bb/U8UynPHwczew/hxLQxw==",
+  "bbBsi6tXMVWyq3SDVTIXUg==",
+  "beSrliUu0BOadCWmx+yZyA==",
+  "bfUD03N2PRDT+MZ+WFVtow==",
+  "bhVbgJ4Do4v56D9mBuR/EA==",
+  "birqO8GOwGEI97zYaHyAuw==",
+  "bjLZ7ot/X/vWSVx4EYwMCg==",
+  "bkRdUHAksJZGzE1gugizYQ==",
+  "blygTgAHZJ3NzyAT33Bfww==",
+  "bs2QG8yYWxPzhtyMqO6u3A==",
+  "bsHIShcLS134C+dTxFQHyA==",
+  "bvbMJZMHScwjJALxEyGIyg==",
+  "bvyB6OEwhwCIfJ6KRhjnRw==",
+  "bz294kSG4egZnH2dJ8HwEg==",
+  "bzVeU2qM9zHuzf7cVIsSZw==",
+  "bzXXzQGZs8ustv0K4leklA==",
+  "c1wbFbN7AdUERO/xVPJlgw==",
+  "c3WVxyC5ZFtzGeQlH5Gw+w==",
+  "c5Tc7rTFXNJqYyc0ppW+Iw==",
+  "c5q/8n7Oeffv3B1snHM/lA==",
+  "c5ymZKqx/td1MiS2ERiz9A==",
+  "c6Yhwy/q3j7skXq52l36Ww==",
+  "cBBOQn7ZjxDku0CUrxq2ng==",
+  "cFFE2R4GztNoftYkqalqUQ==",
+  "cHSj5dpQ04h/WyefjABfmQ==",
+  "cHkOsVd80Rgwepeweq4S1g==",
+  "cLR0Ry4/N5swqga1R6QDMw==",
+  "cMo6l1EQESx1rIo+R4Vogg==",
+  "cNsC9bH30eM1EZS6IdEdtQ==",
+  "cSHSg9xJz/3F6kc+hKXkwg==",
+  "cT3PwwS6ALZA/na9NjtdzA==",
+  "cTvDd8okNUx0RCMer6O8sw==",
+  "cUyqCa7Oue934riyC17F8g==",
+  "cVhdRFuZaW/09CYPmtNv5g==",
+  "cWUg7AfqhiiEmBIu+ryImA==",
+  "cWdlhVZD7NWHUGte24tMjg==",
+  "cXpfd6Io6Glj2/QzrDMCvA==",
+  "ca+kx+kf7JuZ3pfYKDwFlg==",
+  "caepyBOAFu0MxbcXrGf6TA==",
+  "catI+QUNk3uJ+mUBY3bY8Q==",
+  "cbBXgB1WQ/i8Xul0bYY2fg==",
+  "ccK42Lm8Tsv73YMVZRwL6A==",
+  "cchuqe+CWCJpoakjHLvUfA==",
+  "ccmy4GVuX967KaQyycmO0w==",
+  "ccy3Ke2k4+evIw0agHlh3w==",
+  "cdWUm6uLNzR/knuj2x75eA==",
+  "cffrYrBX3UQhfX1TbAF+GQ==",
+  "cfh5VZFmIqJH/bKboDvtlA==",
+  "cgSEbLqqvDsNUyeA3ryJ6Q==",
+  "chwv4+xbEAa93PHg8q9zgQ==",
+  "ck86G8HsbXflyrK7MBntLg==",
+  "ckugAisBNX18eQz+EnEjjw==",
+  "cl4t9FXabQg7tbh1g7a0OA==",
+  "coGEgMVs2b314qrXMjNumQ==",
+  "cszpMdGbsbe6BygqMlnC9Q==",
+  "ctJYJegZhG42i+vnPFWAWw==",
+  "cu4ZluwohhfIYLkWp72pqA==",
+  "cuQslgfqD2VOMhAdnApHrA==",
+  "cvMJ714elj/HUh89a9lzOQ==",
+  "cvOg7N4DmTM+ok1NBLyBiQ==",
+  "cvZT1pvNbIL8TWg+SoTZdA==",
+  "cvrGmub2LoJ+FaM5HTPt9A==",
+  "cw1gBLtxH/m4H7dSM7yvFg==",
+  "cwBNvZc0u4bGABo88YUsVQ==",
+  "cxpZ4bloGv734LBf4NpVhA==",
+  "cxqHS4UbPolcYUwMMzgoOA==",
+  "czBWiYsQtNFrksWwoQxlOw==",
+  "d+ctfXU0j07rpRRzb5/HDA==",
+  "d/Wd3Ma1xYyoMByPQnA9Cw==",
+  "d0NBFiwGlQNclKObRtGVMQ==",
+  "d0VAZLbLcDUgLgIfT1GmVQ==",
+  "d0qvm3bl38rRCpYdWqolCQ==",
+  "d13Rj3NJdcat0K/kxlHLFw==",
+  "dAq8/1JSQf1f4QPLUitp0g==",
+  "dCDaYYrgASXPMGFRV0RCGg==",
+  "dChBe9QR29ObPFu/9PusLg==",
+  "dFSavcNwGd8OaLUdWq3sng==",
+  "dFetwmFw+D6bPMAZodUMZQ==",
+  "dG98w8MynOoX7aWmkvt+jg==",
+  "dGjcKAOGBd4gIjJq7fL+qQ==",
+  "dGrf9SWJ13+eWS6BtmKCNw==",
+  "dJHKDkfMFJeoULg7U4wwDQ==",
+  "dK2DU3t1ns+DWDwfBvH3SQ==",
+  "dL6n/JsK+Iq6UTbQuo/GOw==",
+  "dM9up4vKQV5LeX82j//1jQ==",
+  "dMRx4Mf6LrN64tiJuyWmDw==",
+  "dNTU+/2DdZyGGTdc+3KMhQ==",
+  "dNq2InSVDGnYXjkxPNPRxA==",
+  "dOS+mVCy3rFX9FvpkTxGXA==",
+  "dRFCIbVu0Y8XbjG5i+UFCQ==",
+  "dTMoNd6DDr1Tu8tuZWLudw==",
+  "dUx1REyXKiDFAABooqrKEA==",
+  "dVh/XMTUIx1nYN4q1iH1bA==",
+  "dXDPnL1ggEoBqR13aaW9HA==",
+  "dZg5w8rFETMp9SgW7m0gfg==",
+  "dZgMquvZmfLqP4EcFaWCiA==",
+  "daBhAvmE9shDgmciDAC5eg==",
+  "dhTevyxTYAuKbdLWhG47Kw==",
+  "dihDsG7+6aocG6M9BWrCzQ==",
+  "dmAfbd9F0OJHRAhNMEkRsA==",
+  "dml2gqLPsKpbIZ93zTXwCQ==",
+  "dnvatwSEcl73ROwcZ4bbIQ==",
+  "dpSTNOCPFHN5yGoMpl1EUA==",
+  "dqVw2q2nhCvTcW82MT7z0g==",
+  "drfODfDI6GyMW7hzkmzQvA==",
+  "dsueq9eygFXILDC7ZpamuA==",
+  "dtnE401dC0zRWU0S/QOTAg==",
+  "duRFqmvqF93uf/vWn8aOmg==",
+  "dxWv00FN/2Cgmgq9U3NVDQ==",
+  "e/nWuo5YalCAFKsoJmFyFA==",
+  "e2xLFVavnZIUUtxJx+qa1g==",
+  "e369ZIQjxMZJtopA//G55Q==",
+  "e4B3HmWjW+6hQzcOLru6Xg==",
+  "e5KCqQ/1GAyVMRNgQpYf6g==",
+  "e5l9ZiNWXglpw6nVCtO8JQ==",
+  "e5txnNRcGs2a9+mBFcF1Qg==",
+  "e9GqAEnk8XI5ix6kJuieNQ==",
+  "eAOEgF5N80A/oDVnlZYRAw==",
+  "eBapvE+hdyFTsZ0y5yrahg==",
+  "eC/RcoCVQBlXdE9WtcgXIw==",
+  "eCy/T+a8kXggn1L8SQwgvA==",
+  "eDWsx4isnr2xPveBOGc7Hw==",
+  "eDcyiPaB954q5cPXcuxAQw==",
+  "eFimq+LuHi42byKnBeqnZQ==",
+  "eFkXKRd2dwu/KWI5ZFpEzw==",
+  "eJDUejE/Ez/7kV+S74PDYg==",
+  "eJFIQh/TR7JriMzYiTw4Sg==",
+  "eJLrGwPRa6NgWiOrw1pA7w==",
+  "eJlcN+gJnqAnctbWSIO9uA==",
+  "eKQCVzLuzoCLcB4im8147A==",
+  "eLYKLr4labZeLiRrDJ9mnA==",
+  "ePlsM/iOMme2jEUYwi15ng==",
+  "eQ45Mvf5in9xKrP6/qjYbg==",
+  "eRwaYiog2DdlGQyaltCMJg==",
+  "eS/vTdSlMUnpmnl1PbHjyw==",
+  "eTMPXa60OTGjSPmvR4IgGw==",
+  "eV+RwWPiGEB+76bqvw+hbA==",
+  "eWgLAqJOU+fdn8raHb9HCw==",
+  "eXFOya6x5inTdGwJx/xtUQ==",
+  "eYAQWuWZX2346VMCD6s7/A==",
+  "eYE9No9sN5kUZ5ePEyS3+Q==",
+  "eddhS+FkXxiUnbPoCd5JJw==",
+  "edlXkskLx287vOBZ9+gVYg==",
+  "ehfPlu6YctzzpQmFiQDxGA==",
+  "ehwc2vvwNUAI7MxU4MWQZw==",
+  "ejfikwrSPMqEHjZAk3DMkA==",
+  "emVLJVzha7ui5OFHPJzeRQ==",
+  "enj9VEzLbmeOyYugTmdGfQ==",
+  "epY+dsm5EMoXnZCnO4WSHw==",
+  "es/L9iW8wsyLeC5S4Q8t+g==",
+  "eshD40tvOA6bXb0Fs/cH3A==",
+  "etRjRvfL/IwceY/IJ1tgzQ==",
+  "euxzbIq4vfGYoY3s1QmLcw==",
+  "evaWFoxZNQcRszIRnxqB+A==",
+  "ewPT4dM12nDWEDoRfiZZnA==",
+  "ewe/P3pJLYu/kMb5tpvVog==",
+  "ezsm4aFd6+DO9FUxz0A8Pg==",
+  "f/BjtP5fmFw2dRHgocbFlg==",
+  "f07bdNVAe9x+cAMdF1bByQ==",
+  "f09F7+1LRolRL5nZTcfKGA==",
+  "f0H/AFSx2KLZi9kVx5BAZg==",
+  "f1+fHgR5rDPsCZOzqrHM7Q==",
+  "f1Gs++Iilgq9GHukcnBG3w==",
+  "f1h+Vp+xmdZsZIziHrB2+g==",
+  "f5Xo7F1uaiM760Qbt978iw==",
+  "f6Ye5F0Lkn34uLVDCzogFQ==",
+  "f6iLrMpxKhFxIlfRsFAuew==",
+  "f9ywiGXsz+PuEsLTV3zIbQ==",
+  "fAKFfwlCOyhtdBK6yNnsNg==",
+  "fDOUzPTU2ndpbH0vgkgrJQ==",
+  "fFvXa1dbMoOOoWZdHxPGjw==",
+  "fHL+fHtDxhALZFb9W/uHuw==",
+  "fHNpW230mNib08aB7IM3XQ==",
+  "fKalNdhsyxTt1w08bv9fJA==",
+  "fM5uYpkvJFArnYiQ3MrQnA==",
+  "fO0+6TsjL+45p9mSsMRiIg==",
+  "fOARCnIg/foF/6tm7m9+3w==",
+  "fQS0jnQMnHBn7+JZWkiE/g==",
+  "fS471/rN4K2m10mUwGFuLg==",
+  "fSANOaHD0Koaqg7AoieY9A==",
+  "fU32wmMeD44UsFSqFY0wBA==",
+  "fU5ZZ1bIVsV+eXxOpGWo/Q==",
+  "fUAy3f9bAglLvZWvkO2Lug==",
+  "fVCRaPsTCKEVLkoF4y3zEw==",
+  "fW3QZyq5UixIA1mP6eWgqQ==",
+  "fX4G68hFL7DmEmjbWlCBJQ==",
+  "fY9VATklOvceDfHZDDk57A==",
+  "fZrj3wGQSt8RXv0ykJROcQ==",
+  "fbTm027Ms0/tEzbGnKZMDA==",
+  "fdqt93OrpG13KAJ5cASvkg==",
+  "fgXfRuqFfAu8qxbTi4bmhA==",
+  "fgdUFvQPb5h+Rqz8pzLsmw==",
+  "fhcbn9xE/6zobqQ2niSBgA==",
+  "fiv0DJivQeqUkrzDNlluRw==",
+  "fmC+85h5WBuk8fDEUWPjtQ==",
+  "fo3JL+2kPgDWfP+CCrFlFw==",
+  "foPAmiABJ3IXBoed2EgQXA==",
+  "foXSDEUwMhfHWJSmSejsQg==",
+  "fpXijBOM3Ai1RkmHven5Ww==",
+  "fsW2DaKYTCC7gswCT+ByQQ==",
+  "fsoXIbq0T0nmSpW8b+bj+g==",
+  "fsrX00onlGvfsuiCc35pGg==",
+  "ftsf2qztw3NC78ep/CZXWQ==",
+  "fv/PW8oexJYWf5De30fdLQ==",
+  "fvm0IQfnbfZFETg9v3z/Fg==",
+  "fxg/vQq9WPpmQsqQ4RFYaA==",
+  "fy54Milpa7KZH/zgrDmMXQ==",
+  "fzkmVWKhJsxyCwiqB/ULnQ==",
+  "g/z9yk94XaeBRFj4hqPzdw==",
+  "g0GbRp2hFVIdc7ct7Ky7ag==",
+  "g0aTR8aJ0uVy3YvGYu5xrw==",
+  "g0kHTNRI7x/lAsr92EEppw==",
+  "g0lWrzEYMntVIahC7i0O2g==",
+  "g1ELwsk6hQ+RAY1BH640Pg==",
+  "g2nh2xENCFOpHZfdEXnoQA==",
+  "g5EzTJ0KA4sO3+Opss3LMg==",
+  "g6udffWh7qUnSIo1Ldn3eA==",
+  "g6zSo8BvLuKqdmBFM1ejLA==",
+  "g8TcogVxHpw7uhgNFt5VCQ==",
+  "gAoV4BZYdW1Wm712YXOhWQ==",
+  "gB8wkuIzvuDAIhDtNT1gyA==",
+  "gBgJF0PiGEfcUnXF0RO7/w==",
+  "gC7gUwGumN7GNlWwfIOjJQ==",
+  "gDLjxT7vm07arF4SRX5/Vg==",
+  "gDxqUdxxeXDYhJk9zcrNyA==",
+  "gEHGeR2F82OgBeAlnYhRSw==",
+  "gFEnTI8os2BfRGqx9p5x8w==",
+  "gGLz3Ss+amU7y6JF09jq7A==",
+  "gICaI06E9scnisonpvqCsA==",
+  "gK7dhke5ChQzlYc/bcIkcg==",
+  "gR0sgItXIH8hE4FVs9Q07w==",
+  "gR3B8usSEb0NLos51BmJQg==",
+  "gTB2zM3RPm27mUQRXc/YRg==",
+  "gTnsH3IzALFscTZ1JkA9pw==",
+  "gU3gu8Y5CYVPqHrZmLYHbQ==",
+  "gUNP5w7ANJm257qjFxSJrA==",
+  "gW0oKhtQQ7BxozxUWw5XvQ==",
+  "gXlb7bbRqHXusTE5deolGA==",
+  "gYGQBLo5TdMyXks0LsZhsQ==",
+  "gYgCu/qUpXWryubJauuPNw==",
+  "gYnznEt9r97haD/j2Cko7g==",
+  "gYvdNJCDDQmNhtJ6NKSuTA==",
+  "gZNJ1Qq6OcnwXqc+jXzMLQ==",
+  "gZWTFt5CuLqMz6OhWL+hqQ==",
+  "gaEtlJtD6ZjF5Ftx0IFt0A==",
+  "gf1Ypna/Tt+TZ08Y+GcvGg==",
+  "gfhkPuMvjoC3CGcnOvki3Q==",
+  "gfnbviaVhKvv1UvlRGznww==",
+  "ggIfX1J4dX3xQoHnHUI7VA==",
+  "gglLMohmJDPRGMY1XKndjQ==",
+  "ghp8sWGKWw20S/z1tbTxFg==",
+  "ginkFyNVMwkZLE49AbfqfA==",
+  "gkrg0NR0iCaL7edq0vtewA==",
+  "glnqaRfwm6NxivtB2nySzw==",
+  "gnAIpoCyl3mQytLFgBEgGA==",
+  "gnez1VrH+UHT8C/SB9qGdA==",
+  "gnkadeCgjdmLdlu/AjBZJg==",
+  "goSgZ8N5UbT5NMnW3PjIlQ==",
+  "gqehq46BhFX2YLknuMv02w==",
+  "gsC/mWD8KFblxB0JxNuqJw==",
+  "gvvyX5ATi4q9NhnwxRxC8w==",
+  "gwyVIrTk5o0YMKQq4lpJ+Q==",
+  "gxwbqZDHLbQVqXjaq42BCg==",
+  "h+KRDKIvyVUBmRjv1LcCyg==",
+  "h0MH5NGFfChgmRJ3E/R3HQ==",
+  "h13Xuonj+0dD1xH86IhSyQ==",
+  "h1NNwMy0RjQmLloSw1hvdg==",
+  "h2B0ty0GobQhDnFqmKOpKQ==",
+  "h2cnQQF2/R3Mq2hWdDdrTg==",
+  "h3vYYI9yhpSZV2MQMJtwFQ==",
+  "h5HsEsObPuPFqREfynVblw==",
+  "h7Fc+eT/GuC8iWI+YTD0UQ==",
+  "hCzsi1yDv9ja5/o7t94j9Q==",
+  "hDGa2yLwNvgBd/v6mxmQaQ==",
+  "hDILjSpTLqJpiSSSGu445A==",
+  "hIABph+vhtSF5kkZQtOCTA==",
+  "hIJA+1QGuKEj+3ijniyBSQ==",
+  "hIjgi20+km+Ks23NJ4VQ6Q==",
+  "hJ8leLNuJ6DK5V8scnDaZQ==",
+  "hJSP7CostefBkJrwVEjKHA==",
+  "hK8KhTFcR06onlIJjTji/Q==",
+  "hKOsXOBoFTl/K4xE+RNHDA==",
+  "hN9bmMHfmnVBVr+7Ibd2Ng==",
+  "hNHqznsrIVRSQdII6crkww==",
+  "hP7dSa8lLn9KTE/Z0s4GVQ==",
+  "hPnPQOhz4QKhZi02KD6C+A==",
+  "hRxbdeniAVFgKUgB9Q3Y+g==",
+  "hSNZWNKUtDtMo6otkXA/DA==",
+  "hSkY45CeB6Ilvh0Io4W6cg==",
+  "hUWqqG1QwYgGC5uXJpCvJw==",
+  "hW9DJA1YCxHmVUAF7rhSmQ==",
+  "hWoxz5HhE50oYBNRoPp1JQ==",
+  "hY82j+sUQQRpCi6CCGea5A==",
+  "hZlX6qOfwxW5SPfqtRqaMw==",
+  "hdzol5dk//Q6tCm4+OndIA==",
+  "hf9HFxWRNX2ucH8FLS7ytA==",
+  "hfcH5Az2M7rp+EjtVpPwsg==",
+  "hiYg+aVzdBUDCG0CXz9kCw==",
+  "hkOBNoHbno2iNR7t3/d4vg==",
+  "hlMumZ7RJFpILuKs09ABtw==",
+  "hlu7os0KtAkpBTBV6D2jyQ==",
+  "hlvtFGW8r0PkbUAYXEM+Hw==",
+  "hnCUnoxofUiqQvrxl73M8w==",
+  "hq35Fjgvrcx6I9e6egWS4w==",
+  "hqeSvwu8eqA072iidlJBAw==",
+  "htDbVu1xGhCRd8qoMlBoMg==",
+  "htNVAogFakQkTX6GHoCVXg==",
+  "hv5GrLEIjPb4bGOi8RSO0w==",
+  "hvsZ5JmVevK1zclFYmxHaw==",
+  "hy303iin+Wm7JA6MeelwiQ==",
+  "i2sSvrTh/RdLJX0uKhbrew==",
+  "i42XumprV/aDT5R0HcmfIQ==",
+  "i6ZYpFwsyWyMJNgqUMSV1A==",
+  "i6r+mZfyhZyqlYv56o0H+w==",
+  "i8XXN7jcrmhnrOVDV8a2Hw==",
+  "i9IRqAqKjBTppsxtPB7rdw==",
+  "iANKiuMqWzrHSk9nbPe3bQ==",
+  "iCF+GWw9/YGQXsOOPAnPHQ==",
+  "iCnm5fPmSmxsIzuRK6osrA==",
+  "iFtadcw8v6betKka9yaJfg==",
+  "iGI9uqMoBBAjPszpxjZBWQ==",
+  "iGuY4VxcotHvMFXuXum7KA==",
+  "iGykaF+h4p46HhrWqL8Ffg==",
+  "iIWxFdolLcnXqIjPMg+5kQ==",
+  "iIm8c9uDotr87Aij+4vnMw==",
+  "iJ2nT8w8LuK11IXYqBK+YA==",
+  "iK0dWKHjVVexuXvMWJV9pg==",
+  "iPwX3SbbG9ez9HoHsrHbKw==",
+  "iQ304I1hmLZktA1d1cuOJA==",
+  "iS9wumBV5ktCTefFzKYfkA==",
+  "iSeH0JFSGK73F470Rhtesw==",
+  "iUsUCB0mfRsE9KPEQctIzw==",
+  "iVDd2Zk7vwmEh97LkOONpQ==",
+  "iWNlSnwrtCmVF89B+DZqOQ==",
+  "ibsb1ncaLZXAYgGkMO7tjQ==",
+  "ieEAgvK9LsWh2t6DsQOpWA==",
+  "ifZM0gBm9g9L09YlL+vXBg==",
+  "ifuJCv9ZA84Vz1FYAPsyEA==",
+  "ilBBNK/IV69xKTShvI94fQ==",
+  "imZ+mwiT22sW2M9alcUFfg==",
+  "inrUwXyKikpOW0y2Kl1wGw==",
+  "ionqS0piAOY2LeSReAz4zg==",
+  "ipPPjxpXHS1tcykXmrHPMQ==",
+  "irnD9K8bsT+up/JUrxPw6A==",
+  "iruDC5MeywV4yA8o1tw/KQ==",
+  "isep9d+Q7DEUf0W7CJJYzw==",
+  "itPtn+JaO4i7wz2wOPOmDQ==",
+  "iu5csar0IQQBOTgw5OvJwQ==",
+  "iujlt9fXcUXEYc+T2s5UjA==",
+  "iwKBOGDTFzV4aXgDGfyUkw==",
+  "izeyFvXOumNgVyLrbKW45g==",
+  "j+8/VARfbQSYhHzj0KPurQ==",
+  "j+lDhAnWAyso+1N8cm85hQ==",
+  "j4FBMnNfdBwx0VsDeTvhFg==",
+  "j8nMH8mK/0Aae7ZkqyPgdg==",
+  "j8to4gtSIRYpCogv2TESuQ==",
+  "jCgdKXsBCgf7giUKnr6paQ==",
+  "jEdanvXKyZdZJG6mj/3FWw==",
+  "jEqP0dyHKHiUjZ9dNNGTlQ==",
+  "jGHMJqbj6X1NdTDyWmXYAQ==",
+  "jHOoSl3ldFYr9YErEBnD3w==",
+  "jKJn4czwUl/6wtZklcMsSg==",
+  "jLI3XpVfjJ6IzrwOc4g9Pw==",
+  "jLkmUZ6fV56GfhC0nkh4GA==",
+  "jMZKSMP2THqwpWqJNJRWdw==",
+  "jNJQ6otieHBYIXA9LjXprg==",
+  "jNcMS2zX1iSZN9uYnb2EIg==",
+  "jOPdd330tB6+7C29a9wn0Q==",
+  "jQVlDU+HjZ2OHSDBidxX5A==",
+  "jQjyjWCEo9nWFjP4O8lehw==",
+  "jS0JuioLGAVaHdo/96JFoQ==",
+  "jTg9Y6EfpON4CRFOq0QovA==",
+  "jTmPbq+wh30+yJ/dRXk1cA==",
+  "jV/D2B11NLXZRH77sG9lBw==",
+  "jWsC7kdp2YmIZpfXGUimiA==",
+  "jZMDIu95ITTjaUX0pk4V5g==",
+  "jd6IpPJwOJW1otHKtKZ5Gw==",
+  "jdRzkUJrWxrqoyNH9paHfQ==",
+  "jdVMQqApseHH3fd91NFhxg==",
+  "jfegbZSZWkDoPulFomVntA==",
+  "jgNijyoj2JrQNSlUv4gk4A==",
+  "ji+1YHlRvzevs3q5Uw1gfA==",
+  "ji306HRiq965zb8EZD2uig==",
+  "jiV+b/1EFMnHG6J0hHpzBg==",
+  "jjNMPXbmpFNsCpWY0cv3eg==",
+  "jkUpkLoIXuu7aSH8ZghIAQ==",
+  "joDXdLpXvRjOqkRiYaD/Sw==",
+  "jon1y9yMEGfiIBjsDeeJdA==",
+  "jp5Em/0Ml4Txr1ptTUQjpg==",
+  "jpNUgFnanr9Sxvj2xbBXZw==",
+  "jpjpNjL1IKzJdGqWujhxCw==",
+  "jqPQ0aOuvOJte/ghI1RVng==",
+  "jrRH0aTUYCOpPLZwzwPRfQ==",
+  "jrfRznO0nAz6tZM1mHOKIA==",
+  "jt9Ocr9D8EwGRgrXVz//aQ==",
+  "jx7rpxbm1NaUMcE2ktg5sA==",
+  "jz7QlwxCIzysP39Cgro8jg==",
+  "k+IBS52XdOe5/hLp28ufnA==",
+  "k/Aou2Jmyh8Bu3k8/+ndsQ==",
+  "k/OVIllJvW6BefaLEPq7DA==",
+  "k/pBSWE2BvUsvJhA9Zl5uw==",
+  "k0XIjxp2vFG7sTrKcfAihA==",
+  "k1DPiH6NkOFXP/r3N12GyA==",
+  "k2KP9oPMnHmFlZO6u6tgyw==",
+  "k6OmSlaSZ5CB0i7SD9LczQ==",
+  "k8eZxqwxiN/ievXdLSEL/w==",
+  "kBAB2PSjXwqoQOXNrv80AA==",
+  "kFrRjz7Cf2KvLtz9X6oD+w==",
+  "kGeXrHEN6o7h5qJYcThCPw==",
+  "kHcBZXoxnFJ+GMwBZ/xhfQ==",
+  "kIGxCUxSlNgsKZ45Al1lWw==",
+  "kJdY3XEdJS/hyHdR+IN0GA==",
+  "kMUdiwM7WR8KGOucLK4Brw==",
+  "kNGIV3+jQmJlZDTXy1pnyA==",
+  "kRnBEH6ILR5GNSmjHYOclw==",
+  "kSUectNPXpXNg+tIveTFRw==",
+  "kTCHqcb3Cos51o8cL+MXcg==",
+  "kUhyc3G8Zvx8+q5q5nVEhw==",
+  "kUudvRfA33uJDzHIShQd3Q==",
+  "kWPUUi7x9kKKa6nJ+FDR5Q==",
+  "kZ/mZZg9YSDmk2rCGChYAg==",
+  "kZ0D191c/uv4YMG15yVLDw==",
+  "kZkmDatUOdIqs7GzH3nI1A==",
+  "ka7pMp8eSiv92WgAsz2vdA==",
+  "kcJ1acgBv6FtUhV8KuWoow==",
+  "kgKWQJJQKLUuD2VYKIKvxA==",
+  "kggaIvN2tlbZdZRI8S5Apw==",
+  "kgyUtd8MFe0tuuxDEUZA9w==",
+  "kh51WUI5TRnKhur6ZEpRTQ==",
+  "kj5WqpRCjWAfjM7ULMcuPQ==",
+  "kjWYVC7Eok2w2YT4rrI+IA==",
+  "kkbX+a00dfiTgbMI+aJpMg==",
+  "kly/2kE4/7ffbO34WTgoGg==",
+  "knYKU74onR6NkGVjQLezZg==",
+  "kq26VyDyJTH/eM6QvS2cMw==",
+  "kr8tw1+3NxoPExnAtTmfxg==",
+  "ksOFI9C7IrDNk4OP6SpPgw==",
+  "kuWGANwzNRpG4XmY7KjjNg==",
+  "kvAaIJb+aRAfKK104dxFAA==",
+  "kwlAQhR2jPMmfLTAwcmoxw==",
+  "kydoXVaNcx1peR5g6i588g==",
+  "kzGNkWh3fz27cZer4BspUQ==",
+  "kzTl7WH/JXsX1fqgnuTOgw==",
+  "kzXsrxWRnWhkA82LsLRYog==",
+  "kzYddqiMsY3EYrpxve2/CQ==",
+  "l+x2QhxG8wb5AQbcRxXlmA==",
+  "l0E0U/CJsyCVSTsXW4Fp+w==",
+  "l2NppPcweAtmA1V2CNdk2Q==",
+  "l2ZB9TvT68rn8AAN4MdxWw==",
+  "l2mAbuFF3QBIUILDODiUHQ==",
+  "l4ddTxbTCW5UmZW+KRmx6A==",
+  "l5f3I6osM9oxLRAwnUnc5A==",
+  "l6QHU5JsJExNoOnqxBPVbw==",
+  "l6Ssc04/CnsqUua9ELu2iQ==",
+  "l8/KMItWaW3n4g1Yot/rcQ==",
+  "lC5EumoIcctvxYqwELqIqw==",
+  "lFUq6PGk9dBRtUuiEW7Cug==",
+  "lHN2dn2cUKJ8ocVL3vEhUQ==",
+  "lJFPmPWcDzDp5B2S8Ad8AA==",
+  "lK2xe+OuPutp4os0ZAZx5w==",
+  "lM/EhwTsbivA7MDecaVTPw==",
+  "lMaO8Yf+6YNowGyhDkPhQA==",
+  "lMjip5hbCjkD9JQjuhewDg==",
+  "lNF8PvUIN02NattcGi5u4g==",
+  "lON3WM0uMJ30F8poBMvAjQ==",
+  "lOPJhHqCtMRFZfWMX/vFZQ==",
+  "lTE6u9G/RzvmbuAzq2J2/Q==",
+  "lV70RNlE++04G1KFB3BMXA==",
+  "lY+tivtsfvU0LJzBQ6itYQ==",
+  "lacCCRiWdquNm4YRO7FoKA==",
+  "leDlMcM+B1mDE8k5SWtUeg==",
+  "lf1fwA0YoWUZaEybE+LyMQ==",
+  "lfOLLyZNbsWQgHRhicr4ag==",
+  "lffapwUUgaQOIqLz2QPbAg==",
+  "lhAOM81Ej6YZYBu45pQYgg==",
+  "lizovLQxu6L9sbafNQuShQ==",
+  "lkl6XkrTMUpXi46dPxTPxg==",
+  "lkzFdvtBx5bV6xZO0cxK7g==",
+  "ll2M0QQzBsj5OFi02fv3Yg==",
+  "llOvGOUDVfX68jKnAlvVRA==",
+  "llujnWE17U8MIHmx4SbrSA==",
+  "lqhgbgEqROAdfzEnJ17eXA==",
+  "lsBTMnse2BgPS6wvPbe7JA==",
+  "luO1R8dUM9gy1E2lojRQoA==",
+  "luR/kvHLwA6tSdLeTM4TzA==",
+  "lwYQm2ynA3ik2gE1m11IEg==",
+  "lyfqic/AbEJbCiw+wA01FA==",
+  "lz+SeifYXxamOLs1FsFmSQ==",
+  "lzUQ1o7JAbdJYpmEqi6KnQ==",
+  "m+eh+ZqS74w2q0vejBkjaw==",
+  "m/Lp4U75AQyk9c8cX14HJg==",
+  "m06wctjNc3o7iyBHDMZs2w==",
+  "m3XYojKO+I6PXlVRUQBC3w==",
+  "m416yrrAlv+YPClGvGh+qQ==",
+  "m5JIUETVXcRza4VL4xlJbg==",
+  "m6get5wjq5j1i5abnpXuZQ==",
+  "m6srF+pMehggHB1tdoxlPg==",
+  "m9iuy4UtsjmyPzy6FTTZvw==",
+  "mAiD16zf+rCc7Qzxjd5buA==",
+  "mAzsVkijuqihhmhNTTz65g==",
+  "mDXHuOmI4ayjy2kLSHku1Q==",
+  "mI0eT4Rlr7QerMIngcu/ng==",
+  "mMLhjdWNnZ8zts9q+a2v3g==",
+  "mMfn8OaKBxtetweulho+xQ==",
+  "mNlYGAOPc6KIMW8ITyBzIg==",
+  "mNv2Q67zePjk/jbQuvkAFA==",
+  "mPk1IsU5DmDFA/Ym5+1ojw==",
+  "mPwCyD0yrIDonVi+fhXyEQ==",
+  "mS99D+CXhwyfVt8xJ+dJZA==",
+  "mSJF9dJnxZ15lTC6ilbJ2A==",
+  "mSstwJq7IkJ0JBJ5T8xDKg==",
+  "mTAqtg6oi0iytHQCaSVUsA==",
+  "mTLBkP+yGHsdk5g7zLjVUw==",
+  "mU4CqbAwpwqegxJaOz9ofQ==",
+  "mUek9NkXm8HiVhQ6YXiyzA==",
+  "mVT74Eht+gAowINoMKV7IQ==",
+  "mW6TCje9Zg2Ep7nzmDjSYQ==",
+  "mXBfDUt/sBW5OUZs2sihvw==",
+  "mXPtbPaoNAAlGmUMmJEWBQ==",
+  "mXZ4JeBwT2WJQL4a/Tm4jQ==",
+  "mXycPfF5zOvcj1p4hnikWw==",
+  "mc45FSMtzdw2PTcEBwHWPw==",
+  "md6zNd7ZBn3qArYqQz7/fw==",
+  "me61ST+JrXM5k3/a11gRAA==",
+  "meHzY9dIF7llDpFQo1gyMg==",
+  "miiOqnhtef1ODjFzMHnxjA==",
+  "mjFBVRJ7TgnJx+Q74xllPg==",
+  "mjQS8CpyGnsZIDOIEdYUxg==",
+  "mk1CKDah7EzDJEdhL22B7w==",
+  "mmRob7iyTkTLDu8ObmTPow==",
+  "mnalaO6xJucSiZ0+99r3Cg==",
+  "mpOtwBvle+nyY6lUBwTemw==",
+  "mpWNaUH9kn4WY26DWNAh3Q==",
+  "mr1qjhliRfl87wPOrJbFQg==",
+  "mrinv7KooPQPrLCNTRWCFg==",
+  "mrxlFD3FBqpSZr1kuuwxGg==",
+  "msstzxq++XO0AqNTmA7Bmg==",
+  "mxug34EekabLz0JynutfBg==",
+  "myzvc+2MfxGD9uuvZYdnqQ==",
+  "n+xYzfKmMoB3lWkdZ+D3rg==",
+  "n1M2dgFPpmaICP+JwxHUug==",
+  "n1ixvP7SfwYT3L2iWpJg6A==",
+  "n5GA+pA9mO/f4RN9NL9lNg==",
+  "n6QVaozMGniCO0PCwGQZ6w==",
+  "n7Bns42aTungqxKkRfQ5OQ==",
+  "n7KL1Kv027TSxBVwzt9qeA==",
+  "n7h9v2N1gOcvMuBEf8uThw==",
+  "nDAsSla+9XfAlQSPsXtzPA==",
+  "nE72uQToQFVLOzcu/nMjww==",
+  "nFBXCPeiwxK9mLXPScXzTA==",
+  "nFPDZGZowr3XXLmDVpo7hg==",
+  "nGzPc0kI/EduVjiK7bzM6Q==",
+  "nHTsDl0xeQPC5zNRnoa0Rw==",
+  "nHUpYmfV59fe3RWaXhPs3Q==",
+  "nL4iEd3b5v4Y9fHWDs+Lrw==",
+  "nMuMtK/Zkb3Xr34oFuX/Lg==",
+  "nNaGqigseHw30DaAhjBU3g==",
+  "nOiwBFnXxCBfPCHYITgqNg==",
+  "nR3ACzeVF5YcLX6Gj6AGyQ==",
+  "nULSbtw2dXbfVjZh33pDiA==",
+  "nUgYO7/oVNSX8fJqP2dbdg==",
+  "nVDxVhaa2o38gd1XJgE3aw==",
+  "nW3zZshjZEoM8KVJoVfnuQ==",
+  "nY/H7vThZ+dDxoPRyql+Cg==",
+  "neQoa8pvETr07blVMN3pgA==",
+  "nf8x+F03kOpMhsCSUWEhVg==",
+  "ng1Q0A7ljho3TUWWYl46sw==",
+  "nhAnHuCGXcYlqzOxrrEe1g==",
+  "nkbLVLvh3ClKED97+nH+7Q==",
+  "nkedTagkmf6YE4tEY+0fKw==",
+  "nknBKPgb7US42v8A0fTl/w==",
+  "nmD7fEU4u7/4+W/pkC4/0Q==",
+  "nqpKfidczdgrNaAyPi7BOQ==",
+  "nqtQI1bSM7DCO9P1jGV97Q==",
+  "nsnX3tKkN1elr18E31tXDw==",
+  "nvLEpj6ZZF3LWH3wUB6lKg==",
+  "nvUKoKfC6j8fz3gEDQrc/w==",
+  "nvmBgp0YlUrdZ05INsEE8Q==",
+  "nwtCsN1xEYaHvEOPzBv+qQ==",
+  "nx/U4Tode5ILux4DSR+QMg==",
+  "nxDGRpePV3H4NChn4eLwag==",
+  "nyaekSYTKzfSeSfPrB114Q==",
+  "nykEOLL/o7h0cs0yvdeT2g==",
+  "o+areESiXgSO0Lby56cBeg==",
+  "o+nYS4TqJc6XOiuUzEpC3A==",
+  "o/Y4U6rWfsUCXJ72p5CUGw==",
+  "o1uhaQg5/zfne84BFAINUQ==",
+  "o1zeXHJEKevURAAbUE/Vog==",
+  "o5XVEpdP4OXH0NEO4Yfc/A==",
+  "o64LDtKq/Fulf1PkVfFcyg==",
+  "o7y4zQXQAryST2cak4gVbw==",
+  "o9tdzmIu+3J/EYU4YWyTkA==",
+  "oAHVGBSJ2cf4dVnb/KEYmw==",
+  "oDca3JEdRb4vONT9GUUsaQ==",
+  "oFNMOKbQXcydxnp8fUNOHw==",
+  "oFanDWdePmmZN0xqwpUukA==",
+  "oGH7SMLI2/qjd9Vnhi3s0A==",
+  "oIU19xAvLJwQSZzIH577aA==",
+  "oIWwTbkVS5DDL47mY9/1KQ==",
+  "oKt57TPe4PogmsGssc3Cbg==",
+  "oLWWIn/2AbKRHnddr2og9g==",
+  "oMJLQTH1wW7LvOV0KRx/dw==",
+  "oNOI17POQCAkDwj6lJsYOA==",
+  "oONlXCW4aAqGczQ/bUllBw==",
+  "oPcxgoismve6+jXyIKK6AQ==",
+  "oPlhC4ebXdkIDazeMSn1fQ==",
+  "oQjugfjraFziga1BcwRLRA==",
+  "oR8rvIZoeoaZ/ufpo0htfQ==",
+  "oSnrpW4UmmVXtUGWqLq+tQ==",
+  "oUqO4HrBvkpSL781qAC9+w==",
+  "oVlG+0rjrg2tdFImxIeVBA==",
+  "oad5SwflzN0vfNcyEyF4EA==",
+  "obW3kzv2KBvuckU7F+tfjA==",
+  "ocRh5LR1ZIN9Johnht8fhQ==",
+  "ocpLRASvTgqfkY20YlVFHQ==",
+  "ocvA1/NbyxM0hanwwY6EiA==",
+  "odGhKtO4bDW5R8SYiI5yCg==",
+  "ogcuGHUZJkmv+vCz567a2g==",
+  "ohK6EftXOqBzIMI+5XnESw==",
+  "ojZY7Gi2QJXE/fp6Wy31iA==",
+  "ojf6uL85EuEYgLvHoGhUrw==",
+  "ojugpLIfzflgU2lonfdGxA==",
+  "ol9xhVTG9e1wNo50JdZbOA==",
+  "olTSlmirL9MFhKORiOKYkQ==",
+  "omAjyj1l6gyQAlBGfdxJTw==",
+  "onFcHOO1c3pDdfCb5N4WkQ==",
+  "oqlkgrYe9aCOwHXddxuyag==",
+  "oxoZP897lgMg/KLcZAtkAg==",
+  "oyYtf08AkWLR52bXm5+sKw==",
+  "ozVqYsmUueKifb4lDyVyrg==",
+  "p+bx+/WQWALXEBCTnIMr4w==",
+  "p/48hurJ1kh2FFPpyChzJg==",
+  "p/7qM5+Lwzw1/lIPY91YxQ==",
+  "p0eNK7zJd7D/HEGaVOrtrQ==",
+  "p2JPOX8yDQ0agG+tUyyT/g==",
+  "p3V7NfveB6cNxFW7+XQNeQ==",
+  "p48i7AfSSAyTdJSyHvOONw==",
+  "p73gSu4d+4T/ZNNkIv9Nlw==",
+  "p8W1LgFuW6JSOKjHkx3+aA==",
+  "pCQmlnn3BxhsV2GwqjRhXg==",
+  "pFKzcRHSUBqSMtkEJvrR1Q==",
+  "pGQEWJ38hb/ZYy2P1+FIuw==",
+  "pHo1O5zrCHCiLvopP2xaWw==",
+  "pHozgRyMiEmyzThtJnY4MQ==",
+  "pKaTI+TfcV3p/sxbd2e7YQ==",
+  "pT1raq2fChffFSIBX3fRiA==",
+  "pUfWmRXo70yGkUD/x5oIvA==",
+  "pVG1hL96/+hQ+58rJJy6/A==",
+  "pVgjGg4TeTNhKimyOu3AAw==",
+  "pW4gDKtVLj48gNz6V17QdA==",
+  "pZfn6IiG+V28fN8E2hawDQ==",
+  "pa8nkpAAzDKUldWjIvYMYg==",
+  "pcoBh5ic7baSD4TZWb3BSw==",
+  "pdPwUHauXOowaq9hpL2yFw==",
+  "pdaY6kZ8+QqkMOInvvACNA==",
+  "peMW+rpwmXrSwplVuB/gTA==",
+  "pfGcaa49SM3S6yJIPk/EJQ==",
+  "plXHHzA8X9QGwWzlJxhLRw==",
+  "pnJnBzAJlO4j3IRqcfmhkQ==",
+  "prCOYlboBnzmLEBG/OeVrQ==",
+  "prOsOG0adI4o+oz50moipw==",
+  "pulldyBt2sw6QDvTrCh6zw==",
+  "pv/m2mA/RJiEQu2Qyfv9RA==",
+  "pvXHwJ3dwf9GDzfDD9JI3g==",
+  "pw1jplCdTC+b0ThX0FXOjw==",
+  "pxuSWn1u+bHtRjyh2Z8veA==",
+  "pyrUqiZ98gVXxlXQNXv5fA==",
+  "pzC8Y0Vj9MPBy3YXR32z6w==",
+  "q/siBRjx6wNu+OTvpFKDwA==",
+  "q4z6A4l3nhX3smTmXr+Sig==",
+  "q5g3c8tnQTW2EjNfb2sukw==",
+  "q6LG0VzO1oxiogAAU63hyg==",
+  "q7m/EtZySBjZNBjQ5m1hKw==",
+  "q8YF9G2jqydAxSqwyyys5Q==",
+  "qA0sTaeNPNIiQbjIe1bOgQ==",
+  "qCPfJTR8ecTw6u6b1yHibA==",
+  "qE/h/Z+6buZWf+cmPdhxog==",
+  "qIFpKKwUmztsBpJgMaVvSg==",
+  "qIUJPanWmGzTD1XxvHp+6w==",
+  "qNOSm15bdkIDSc/iUr+UTQ==",
+  "qNyy6Fc0b8oOMWqqaliZ/w==",
+  "qO4HlyHMK5ygX+6HbwQe8w==",
+  "qOEIUWtGm5vx/+fg4tuazg==",
+  "qP1cCE4zsKGTPhjbcpczMw==",
+  "qQQwJ/aF87BbnLu3okXxaw==",
+  "qYHdgFAXhF/XcW4lxqfvWQ==",
+  "qYuo5vY8V3tZx41Kh9/4Dw==",
+  "qZ2q5j2gH3O56xqxkNhlIA==",
+  "qaTdVEeZ6S8NMOxfm+wOMA==",
+  "qcpeZWUlPllQYZU6mHVwUw==",
+  "qenHZKKlTUiEFv6goKM/Mw==",
+  "qkvEep4vvXhc2ZJ6R449Mg==",
+  "qngzBJbiTB4fivrdnE5gOg==",
+  "qnkFUlJ8QT322JuCI3LQgg==",
+  "qnsBdl050y9cUaWxbCczRw==",
+  "qnzWszsyJhYtx8wkMN6b1g==",
+  "qoK2keBg3hdbn7Q24kkVXg==",
+  "qpFJZqzkklby+u1UT3c1iA==",
+  "qt5CsMts2aD4lw/4Q6bHYQ==",
+  "qxALQrqHoDq9d91nU0DckA==",
+  "qyRmvxh8p4j4f+61c10ZFQ==",
+  "r/b5px/UImGNjT/X5sYjuA==",
+  "r0QffVKB9OD9yGsOtqzlhA==",
+  "r0hAwlS0mPZVfCSB+2G6uQ==",
+  "r1VGXWeqGeGbfKjigaAS+Q==",
+  "r2f2MyT+ww1g9uEBzdYI1w==",
+  "r36kVMpF+9J+sfI3GeGqow==",
+  "r3lQAYOYhwlLnDWQIunKqg==",
+  "r95wJtP5rsTExKMS7QhHcw==",
+  "rBt6L/KLT7eybxKt5wtFdg==",
+  "rCxoo4TP/+fupXMuIM0sDA==",
+  "rHagXw+CkF3uEWPWDKXvog==",
+  "rIMXaCaozDvrdpvpWvyZOQ==",
+  "rJ9qVn8/2nOxexWzqIHlcQ==",
+  "rJCuanCy51ydVD4nInf9IQ==",
+  "rKAQxu80Q8g1EEhW5Wh8tg==",
+  "rKb3TBM4EPx/RErFOFVCnQ==",
+  "rLZII1R6EGus+tYCiUtm6g==",
+  "rM/BOovNgnvebKMxZQdk7g==",
+  "rMm9bHK69h0fcMkMdGgeeA==",
+  "rOYeIcB+Rg5V6JG2k4zS2w==",
+  "rSvhrHyIlnIBlfNJqemEbw==",
+  "rTwJggSxTbwIYdp07ly0LA==",
+  "rUp5Mfc57+A8Q29SPcvH/Q==",
+  "rWliqgfZ3/uCRBOZ9sMmdA==",
+  "rXGWY/Gq+ZEsmvBHUfFMmQ==",
+  "rXSbbRABEf4Ymtda45w8Fw==",
+  "rXfWkabSPN+23Ei1bdxfmQ==",
+  "rXtGpN17Onx8LnccJnXwJQ==",
+  "rZKD8oJnIj5fSNGiccfcvA==",
+  "raKMXnnX6PFFsbloDqyVzQ==",
+  "raYifKqev8pASjjuV+UTKQ==",
+  "rcY4Ot40678ByCfqvGOGdg==",
+  "rdeftHE7gwAT67wwhCmkYQ==",
+  "rfPTskbnoh3hRJH6ZAzQRg==",
+  "rgcXxjx3pDLotH7TTfAoZw==",
+  "rh7bzsTQ1UZjG7amysr0Gg==",
+  "rhgtLQh0F9bRA6IllM7AGw==",
+  "ri4AOITPdB1YHyXV+5S51g==",
+  "rkeLYwMZ1/pW2EmIibALfA==",
+  "rlXt6zKE7DswUl0oWGOQUQ==",
+  "rqHKB91H3qVuQAm+Ym5cUA==",
+  "rqucO37p86LpzehR/asCSQ==",
+  "rs2QrN4qzAHCHhkcrAvIfA==",
+  "rtJdfki8fG6CB36CADp0QA==",
+  "rtd6mqFgGe98mqO0pFGbSw==",
+  "rueNryrchijjmWaA3kljYg==",
+  "rvE64KQGkVkbl07y7JwBqw==",
+  "rwplpbNJz0ADUHTmzAj15Q==",
+  "rwtF86ZAbWyKI6kLn4+KBw==",
+  "rxfACPLtKXbYua18l3WlUw==",
+  "rzj6mjHCcMEouL66083BAg==",
+  "s+eHg5K9zZ2Jozu5Oya9ZQ==",
+  "s/BZAhh1cTV3JCDUQsV8mA==",
+  "s2AKVTwrY65/SWqQxDGJQg==",
+  "s5+78jS4hQYrFtxqTW3g1Q==",
+  "s5RUHVRNAoKMuPR/Jkfc2Q==",
+  "s7iW1M6gkAMp+D/3jHY58w==",
+  "s8NpalwgPdHPla7Zi9FJ3w==",
+  "sBpytpE38xz0zYeT+0qc2A==",
+  "sC11Rf/mau3FG5SnON4+vQ==",
+  "sCLMrLjEUQ6P1L8tz90Kxg==",
+  "sEeblUmISi1HK4omrWuPTA==",
+  "sGLPmr568+SalaQr8SE/PA==",
+  "sLJrshdEANp0qk2xOUtTnQ==",
+  "sLdxIKap0ZfC3GpUk3gjog==",
+  "sNmW2b2Ud7dZi3qOF8O8EQ==",
+  "sQAxqWXeiu/Su0pnnXgI9A==",
+  "sQskMBELEq86o1SJGQqfzg==",
+  "sQzCwNDlRsSH7iB9cTbBcg==",
+  "sS6QcitMPdvUBLiMXkWQkw==",
+  "sWLcS+m4aWk31BiBF+vfJQ==",
+  "sXlFMSTBFnq0STHj6cS/8w==",
+  "sa2DECaqYH1z1/AFhpHi+g==",
+  "saEpnDGBSZWqeXSJm34eOA==",
+  "scCQPl0em2Zmv/RQYar60g==",
+  "sfIClgTMtZo9CM9MHaoqhQ==",
+  "sfowXUMdN2mCoBVrUzulZg==",
+  "sfte/o9vVNyida/yLvqADA==",
+  "siHwJx6EgeB1gBT9z/vTyw==",
+  "skrQRB9xbOsiSA19YgAdIQ==",
+  "snGTzo540cCqgBjxrfNpKw==",
+  "soBA65OmZdfBGJkBmY/4Iw==",
+  "spHVvA/pc7nF9Q4ON020+w==",
+  "spJI3xFUlpCDqzg0XCxopA==",
+  "sr3UXbMg5zzkRduFx/as7g==",
+  "sw+bmpzqsM4gEQtnqocQLQ==",
+  "swJhrPwllq5JORWiP5EkDA==",
+  "swsVVsPi/5aPFBGP+jmPIw==",
+  "syeBfQBUmkXNWCZ1GV8xSA==",
+  "t+bYn9UqrzKiuxAYGF7RLA==",
+  "t0WN8TwMLgi8UVEImoFXKg==",
+  "t2EkpUsLOEOsrnep0nZSmA==",
+  "t2vWMIh2BvfDSQaz5T1TZw==",
+  "t3Txxjq43e/CtQmfQTKwWg==",
+  "t5U+VMsTtlWAAWSW+00SfQ==",
+  "t5wh9JGSkQO78QoQoEqvXA==",
+  "t7HaNlXL16fVwjgSXmeOAQ==",
+  "t8pjhdyNJirkvYgWIO/eKg==",
+  "tBQDfy48FnIOZI04rxfdcA==",
+  "tFMJRXfWE9g78O1uBUxeqQ==",
+  "tFmWYH82I3zb+ymk5dhepA==",
+  "tG+rpfJBXlyGXxTmkceiKA==",
+  "tHDbi43e6k6uBgO0hA+Uiw==",
+  "tIqwBotg052wGBL65DZ+yA==",
+  "tJt6VDdAPEemBUvnoc4viA==",
+  "tOdlnsE3L3XCBDJRmb/OqA==",
+  "tOkYq1BZY152/7IJ6ZYKUg==",
+  "tU31r8zla146sqczdKXufg==",
+  "tVhXk9Ff3wAg56FbdNtcFg==",
+  "tVvWdA+JqH0HR2OlNVRoag==",
+  "tVw8U1AsslIFmQs4H1xshg==",
+  "tX8X8KoxUQ8atFSCxgwE1Q==",
+  "tXVb5f90k9l3e1oK2NGXog==",
+  "tXuu7YpZOuMLTv87NjKerA==",
+  "tY916jrSySzrL+YTcVmYKQ==",
+  "tYeIZjIm0tVEsYxH1iIiUQ==",
+  "tb5+2dmYALJibez1W4zXgA==",
+  "td7nDgTDmKPSODRusMcupw==",
+  "tdgI9v7cqJsgCAeW1Fii1A==",
+  "tdiTXKrkqxstDasT0D5BPA==",
+  "tejpAZp7y32SO2+o4OGvwQ==",
+  "tfgO55QqUyayjDfQh+Zo1Q==",
+  "tj2rWvF2Fl+XIccctj8Mhw==",
+  "tnUtJ/DQX9WaVJyTgemsUA==",
+  "tq5xUJt8GtjDIh1b48SthQ==",
+  "tr+U/vt+MIGXPRQYYWJfRg==",
+  "trjM81KANPZrg9iSThWx6Q==",
+  "tsiqwelcBAMU/HpLGBtMGw==",
+  "twPn6wTGqI0aR//0wP3xtA==",
+  "twjiDKJM7528oIu/el4Zbg==",
+  "tzV7ixFH37ze4zuLILTlfA==",
+  "u/QxrP1NOM/bOJlJlsi/jQ==",
+  "u2WQlcMxOACy6VbJXK4FwA==",
+  "u5cUPxM6/spLIV8VidPrAA==",
+  "uC2lzm7HaMAoczJO6Z/IhQ==",
+  "uChFnF0oCwARhAOz/d47eA==",
+  "uESeJe/nYrHCq4RQbrNpGA==",
+  "uExgqZkkJnZj252l5dKAGg==",
+  "uIkVijg7RPi/1j7c18G1qA==",
+  "uJZGw3IY2nCcdVeWW1geNQ==",
+  "uMq8cDVWFD+tpn8aeP8Pqg==",
+  "uNWFZlP7DA96sf+LWiAhtQ==",
+  "uNzpptKjihEfKRo5A1nWmw==",
+  "uO+uK1DntCxVRr1KttfUIw==",
+  "uOHrw37yF9oLLVd16nUpeg==",
+  "uOkMpYy/7DYYoethJdixfQ==",
+  "uPdjKJIGzN7pbGZDZdCGaA==",
+  "uPi8TsGY3vQsMVo/nsbgVQ==",
+  "uPm+cF4Jq08S5pQhYFjU8A==",
+  "uPnL9tboMZo0Kl2fe24CmA==",
+  "uQs79rbD/wEakMUxqMI48A==",
+  "uSIiF1r9F18avZczmlEuMQ==",
+  "uT6WRh5UpVdeABssoP2VTg==",
+  "uTA0XbiH3fTeVV7u5z0b3w==",
+  "uTHBqApdKOAgdwX3cjrCYQ==",
+  "uU1TX5DoDg6EcFKgFcn0GA==",
+  "uXuPA/2KJbb7ZX+NymN3dw==",
+  "uXvr6vi5kazZ9BCg2PWPJA==",
+  "uZ2gUA74/7Q33tI2TcGQlg==",
+  "ucLMWnNDSqE4NOCGWvcGWw==",
+  "udU65VtsvJspYmamiOsgXw==",
+  "ueODvMv/f9ZD8O0aIHn4sg==",
+  "ugY8rTtJkN4CXWMVcRZiZw==",
+  "uhT12XY79CtbwhcSfAmAXQ==",
+  "ulLuTZqhEDkX0EJ3xwRP9A==",
+  "ulpDxLeQnIRPnq6oaah2AA==",
+  "up2MVDi9ve+s83/nwNtZ7Q==",
+  "uqe3rFveJ2JIkcZQ3ZMXHQ==",
+  "uqp92lAqjec8UQYfyjaEZw==",
+  "ur9JDCVNwzSH4q4ngDlHNQ==",
+  "uu+ncs63SdQIvG6z4r7Q3Q==",
+  "uuiJ+yB7JLDh2ulthM0mjg==",
+  "uvKYnKE01D5r7kR9UQyo5A==",
+  "uvzmRcvgepW6mZbMfYgcNw==",
+  "uwA6N5LptSXqIBkTO0Jd7Q==",
+  "uwGivY3/C9WK+dirRPJZ4A==",
+  "uzEgwx1iAXAvWPKSVwYSeQ==",
+  "uzkNhmo2d08tv5AmnyqkoQ==",
+  "v/PshI6JjkL9nojLlMNfhg==",
+  "v0Bvws1WYVoEgDt8xmVKew==",
+  "v1AWe5qb5y3vSKFb7ADeEw==",
+  "v4xIYrfPGILEbD/LwVDDzA==",
+  "v6jZicMNM3ysm3U5xu0HoQ==",
+  "v7BrkRmK0FfWSHunTRHQFQ==",
+  "vCekQ2nOQKiN/q8Be/qwZg==",
+  "vFFzkWgGyw6OPADONtEojQ==",
+  "vFox1d3llOeBeCUZGvTy0A==",
+  "vFtC0B2oe1gck28JOM1dyg==",
+  "vGKknndb4j6VTV8DxeT4fQ==",
+  "vHGjRRSlZHJIliCwIkCAmQ==",
+  "vHVXsAMQqc0qp7HA5Q+YkA==",
+  "vHmQUl4WHXs1E/Shh+TeyA==",
+  "vIORTYSHFIXk5E2NyIvWcQ==",
+  "vMuaLvAntJB5o7lmt/kVXA==",
+  "vOJ55zFdgPPauPyFYBf01w==",
+  "vRgkZZGVN7YZrlml0vxrKA==",
+  "vSKsa0JhLCe9QFZKkcj58Q==",
+  "vTAmgfq3GxL4+ubXpzwk5w==",
+  "vUC0HlTTHj6qNHwfviDtAw==",
+  "vUE8Iw3NyWXURpXyoNJdaw==",
+  "vWn9OPnrJgfPavg4D6T/HQ==",
+  "vX7RIhatQeXAMr1+OjzhZw==",
+  "vZtL0yWpSIA+9v8i23bZSg==",
+  "vb6Agwzk4JG0Nn7qRPPFMQ==",
+  "vbyiKeDCQ4q9dDRI1Q0Ong==",
+  "vg3jozLXEmAnmJwdfcEN0g==",
+  "vhdFtKVH4bVatb4n8KzeXw==",
+  "vjrSYGUpeKOtJ2cNgLFg2g==",
+  "vljJciS+uuIvL7XXm5688g==",
+  "vmqfGJE6r4yDahtU/HLrxw==",
+  "vnOJ3e9Zd4wPx8PX7QgZzQ==",
+  "voO3krg4sdy4Iu+MZEr8+g==",
+  "vqYHQ3MnHrAIAr1QHwfIag==",
+  "vsRNZx4thFFFPneubKq1Fw==",
+  "vvEH5A39TTe1AOC11rRCLA==",
+  "vvh9vAIrXjIwLVkuJb5oDQ==",
+  "vwno3vugCvt6ooT3CD4qIQ==",
+  "w+jzM0I5DRzoUiLS/9QIMQ==",
+  "w0PKdssv+Zc5J/BbphoxpA==",
+  "w1zN28mSrI/gqHsgs4ME3A==",
+  "w3G+qXXqqKi8F5s+qvkBUg==",
+  "w5N/aHbtOIKzcvG3GlMjGA==",
+  "wDiGoFEfIVEDyyc4VpwhWQ==",
+  "wEJDulZafLuXCvcqBYioFQ==",
+  "wHA+D5cObfV3kGORCdEknw==",
+  "wI7JrSPQwYHpv2lRsQu9nQ==",
+  "wIfvvLKC61gOpsddUFjVog==",
+  "wJ4uCrl4DPg70ltw1dZO3w==",
+  "wJKFMqh6MGctWfasjHrPEg==",
+  "wJpepvmtQQ3sz3tVFDnFqw==",
+  "wK6Srd83eLigZ11Q20XGrg==",
+  "wM8tnXO4PDlLVHspZFcjYw==",
+  "wMOE/pEKVIklE75xjt6b6w==",
+  "wMum67lfk5E1ohUObJgrOg==",
+  "wMyJLQJdmrC2TSeFkIuSvQ==",
+  "wOc4TbwQGUwOC1B3BEZ4OQ==",
+  "wOhbpTzmFla8R0kI9OiHaA==",
+  "wPhJcp7U7IVX83szbIOOxQ==",
+  "wQKL8Ga6JQkpZ7yymDkC3w==",
+  "wR2Gxb07nkaPcZHlEjr8iA==",
+  "wRqaDZVHHurp5whOQ1kDbQ==",
+  "wTO49YX/ePHMWtcoxUAHpw==",
+  "wUYhs4j3W9nIywu1HIv2JA==",
+  "wVfSZYjMjbTsD2gaSbwuqQ==",
+  "wX2URK6eDDHeEOF3cgPgHA==",
+  "wX70jKLKJApHnhyK0r6t3A==",
+  "wajwXfWz2J+O+NVaj6j2UQ==",
+  "wc+8ohFWgOF4VlSYiZIGwQ==",
+  "wdRyYjaM11VmqkkxV/5bsA==",
+  "wfwuxn+Vja1DNwiDwL2pcQ==",
+  "wgH1GlUxWi6/yLLFzE76uQ==",
+  "who8uUamlHWHXnBf7dwy4A==",
+  "wlWxtQDJ+siGhN2fJn3qtw==",
+  "wnfYUctNK+UPwefX5y4/Rw==",
+  "wpZqFkKafFpLcykN2IISqg==",
+  "wqUJ1Gq1Yz2cXFkbcCmzHQ==",
+  "wqWqe0KRjZlUIrGgEOG9Mg==",
+  "wrewZ0hoHODf7qmoGcOd7g==",
+  "wsp+vmW8sEqXYVURd/gjHA==",
+  "wt+qDLU38kzNU75ZYi3Hbw==",
+  "wtyAZIfhomcHe9dLbYoSvA==",
+  "wux5Y8AipBnc5tJapTzgEQ==",
+  "wv4NC9CIpwuGf/nOQYe/oA==",
+  "wxkb8evGEaGf/rg/1XUWiA==",
+  "wy/Z8505o4sVovk4UuBp1A==",
+  "wyqmQGB6vgRVrYtmB2vB7w==",
+  "wyx5mnUMgP5wjykjAfTO7w==",
+  "x+8rwkqKCv0juoT5m1A4eg==",
+  "x/BIDm6TKMhqu/gtb3kGyw==",
+  "x/MpsQvziUpW40nNUHDS5Q==",
+  "x0eIHCvQLd2jdDaXwSWTYQ==",
+  "x1A74vg/hwwjAx6GrkU8zw==",
+  "x2NpqNnqRihktNzpxmepkQ==",
+  "x2nSgcTjA3oGgI8mMgiqjw==",
+  "x5lyMArsv1MuJmEFlWCnNw==",
+  "x5zMDuW66467ofgL3spLUQ==",
+  "x6M66krXSi0EhppwmDmsxA==",
+  "x6lNRGgJcRxgKTlzhc1WPg==",
+  "x8kRVzohTdhkryvYeMvkMw==",
+  "x9TIZ9Ua++3BX+MpjgTuWA==",
+  "x9VwDdFPp/rJ+SF16ooWYg==",
+  "xAAipGfHTGTjp9Qk1MR8RQ==",
+  "xJi0T+psHOXMivSOVpMWeQ==",
+  "xLm/bJBonpTs0PwsF0DvRg==",
+  "xMIHeno2qj3V8q9H1xezeg==",
+  "xNilc7UOu1kyP0+nK5MrLw==",
+  "xPe76nHyHmald6kmMQsKdg==",
+  "xQpYjaAmrQudWgsdu24J0A==",
+  "xTizUioizbMQxD0T6fy/EQ==",
+  "xUXEE7OBBCudsQnuj5ycOA==",
+  "xWYecfzAtXT9WyQ8NYY/hw==",
+  "xX6atcCApI08oVLjjLteLg==",
+  "xYD8jrCDmuQna+p1ebnKDQ==",
+  "xbBxUP9JyY0wDgHDipBHeg==",
+  "xdCCdP8SNBOK3IsX6PiPQA==",
+  "xdmY+qyoxxuRZa9kuNpDEg==",
+  "xfYZ6qhWNBqqJ0PdWRjOwA==",
+  "xfjBQk3CrNjhufdPIhr91A==",
+  "xiFlcSfa/gnPiO+LwbixcQ==",
+  "xiyRfVG0EfBA+rCk+tgWRQ==",
+  "xjA21QjNdThLW3VV7SCnrg==",
+  "xjTMO2mvtpvwQrounD4e8g==",
+  "xktOghh1S9nIX6fXWnT+Ug==",
+  "xmGgK3W5y+oCd0K2u8XjZQ==",
+  "xmsYnsJq78/f9xuKuQ2pBQ==",
+  "xoPSM86Se+1hHX0y3hhdkw==",
+  "xs8J3cesq7lDhP/dNltqOw==",
+  "xsCZVhCk2qJmOqvUjK3Y8Q==",
+  "xsf0m31Am0W9eLhopAkfnA==",
+  "xukOAM0QVsA72qEy0yku9A==",
+  "xvipmmwKdYt4eoKvvRnjEg==",
+  "xweGAZf+Yb3TtwR/sGmGIA==",
+  "xzGzN5Hhbh0m/KezjNvXbQ==",
+  "y+1I05LDAYJ09tKMs3zW6g==",
+  "y+cl1/Knb9MZPz8nBB0M+w==",
+  "y/e3HSdg7T19FanRpJ7+7Q==",
+  "y1J+o6DC2sETFsySgpDZyA==",
+  "y2JOIoIiT9cV1VxplZPraQ==",
+  "y2Tn2gmhKs5WKc01ce74rg==",
+  "y4/HohCJxtt+cT7nLJB08w==",
+  "y4Y4mSSTw/WrIdRpktc5Hw==",
+  "y4iBxAMn/KzMmaWShdYiIw==",
+  "y4mfEDerrhaqApDdhP5vjA==",
+  "y7yS9x3yshVhMpDbQtfYOQ==",
+  "yCu+DVU/ceMTOZ5h/7wQTg==",
+  "yD3Dd4ToRrl53k/2NSCJiw==",
+  "yDrAd1ot38soBk7zKdnT8A==",
+  "yKLLiqzxfrCsr6+Rm6kx1Q==",
+  "yKrsKX4/1B1C0TyvciNz5w==",
+  "yL1DwlIIREPuyuCFULi0uw==",
+  "yLAhLNezvqVHmN1SfMRrPw==",
+  "yOE90OHQdyOfrAgwDvn2gA==",
+  "yPIeWcW8+3HjDagegrN8bw==",
+  "yQCLV9IoPyXEOaj3IdFMWw==",
+  "yQmNZnp/JZywbBiZs3gecA==",
+  "yS/yMnJDHW0iaOsbj4oPTg==",
+  "yTVJKBn72RjakMBXDoBKHg==",
+  "yTgN5xFIdz1MzFS6xMl5uQ==",
+  "yU3N0HMSP5etuHPNrVkZtg==",
+  "yV3IbbTWAbHMhMGVvgb/ZQ==",
+  "yYBIS9PZbKo7Gram7IXWPA==",
+  "yYVW07lOZHdgtX42xJONIA==",
+  "yYmnM/WOgi+48Rw7foGyXA==",
+  "yYp4iuI5f/y/l1AEJxYolQ==",
+  "ybpTgPr3SjJ12Rj5lC/IMA==",
+  "ycjv4XkS5O7zcF3sqq9MwQ==",
+  "yctId8ltkl3+xqi9bj+RqA==",
+  "ydVj2odhergi+2zGUwK4/A==",
+  "yf06Slv9l3IZEjVqvxP2aA==",
+  "yfAaL0MMtSXPQ37pBdmHxQ==",
+  "yhI5jHlfFJxu4eV5VJO2zQ==",
+  "yhRi5M9Etuu9HSu4d24i3w==",
+  "yhexr/OFKfZl0o3lS70e4w==",
+  "ylA6sU7Kaf9fMNIx1+sIlw==",
+  "ymtA8EMPMgmMcimWZZ0A1Q==",
+  "ynaj4XjU27b7XbqPyxI8Ig==",
+  "yqQPU4jT9XvRABZgNQXjgg==",
+  "yqtj8GfLaUHYv/BsdjxIVw==",
+  "ysRQ+7Aq7eVLOp88KnFVMA==",
+  "ytDXLDBqWiU1w3sTurYmaw==",
+  "yteeQr3ub2lDXgLziZV+DQ==",
+  "yxCyBXqGWA735JEyljDP7Q==",
+  "z+1oDVy8GJ5u/UDF+bIQdA==",
+  "z/e5M2lE9qh3bzB97jZCKA==",
+  "z0BU//aSjYHAkGGk3ZSGNg==",
+  "z20AAnvj7WsfJeOu3vemlA==",
+  "z3L2BNjQOMOfTVBUxcpnRA==",
+  "z4Bft++f72QeDh4PWGr/sw==",
+  "z4oKy2wKH+sbNSgGjbdHGw==",
+  "z5DveTu377UW8IHnsiUGZg==",
+  "z920R8eahJPiTsifrPYdxA==",
+  "z9cd+Qj+ueX34Zf3997MNQ==",
+  "zCRZgVsHbQZcVMHd9pGD3A==",
+  "zCpibjrZOA3FQ4lYt0WoVA==",
+  "zDSQ3NJuUGkVOlvVCATRwA==",
+  "zDUZCzQesFjO1JI3PwDjfg==",
+  "zEzWZ6l7EKoVUxvk/l78Mw==",
+  "zJ7ScHNxr2leCDNNcuDApA==",
+  "zNLlWGW/aKBhUwQZ4DZWoQ==",
+  "zVupSPz7cD0v/mD/eUIIjg==",
+  "zZtYkKU50PPEj6qSbO5/Sw==",
+  "za4rzveYVMFe3Gw531DQJQ==",
+  "zaqyy3GaJ7cp8qDoLJWcTw==",
+  "zbjXhZaeyMfdTb2zxvmRMg==",
+  "zeELfk015D5krExLKRUYtg==",
+  "zeHF6fdeqcOId3fRUGscRw==",
+  "zgEyxj/sCs63O98sZS94Yw==",
+  "zi04Yc01ZheuFAQc59E45A==",
+  "zirOtGUXeRL22ezfotZfQg==",
+  "zm+z+OOyHhljV2TjA3U9zw==",
+  "zrZWcqQsUE3ocWE0fG+SOA==",
+  "ztULoqHvCOE6qV7ocqa4/w==",
+  "zwQ/3MzTJ9rfBmrANIh14w==",
+  "zwY6tCjjya/bgrYaCncaag==",
+  "zxsSqovedB3HT99jVblCnQ==",
+  "zyA9f5J7mw5InjhcfeumAQ=="
+]);
--- a/browser/extensions/activity-stream/lib/HighlightsFeed.jsm
+++ b/browser/extensions/activity-stream/lib/HighlightsFeed.jsm
@@ -8,16 +8,18 @@ Cu.import("resource://gre/modules/XPCOMU
 
 const {actionTypes: at} = Cu.import("resource://activity-stream/common/Actions.jsm", {});
 
 const {shortURL} = Cu.import("resource://activity-stream/lib/ShortURL.jsm", {});
 const {SectionsManager} = Cu.import("resource://activity-stream/lib/SectionsManager.jsm", {});
 const {TOP_SITES_SHOWMORE_LENGTH} = Cu.import("resource://activity-stream/common/Reducers.jsm", {});
 const {Dedupe} = Cu.import("resource://activity-stream/common/Dedupe.jsm", {});
 
+XPCOMUtils.defineLazyModuleGetter(this, "filterAdult",
+  "resource://activity-stream/lib/FilterAdult.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "NewTabUtils",
   "resource://gre/modules/NewTabUtils.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Screenshots",
   "resource://activity-stream/lib/Screenshots.jsm");
 
 const HIGHLIGHTS_MAX_LENGTH = 9;
 const HIGHLIGHTS_UPDATE_TIME = 15 * 60 * 1000; // 15 minutes
 const MANY_EXTRA_LENGTH = HIGHLIGHTS_MAX_LENGTH * 5 + TOP_SITES_SHOWMORE_LENGTH;
@@ -36,29 +38,46 @@ this.HighlightsFeed = class HighlightsFe
   }
 
   init() {
     SectionsManager.onceInitialized(this.postInit.bind(this));
   }
 
   postInit() {
     SectionsManager.enableSection(SECTION_ID);
+    this.fetchHighlights(true);
   }
 
   uninit() {
     SectionsManager.disableSection(SECTION_ID);
   }
 
   async fetchHighlights(broadcast = false) {
+    // We need TopSites to have been initialised for deduping
+    if (!this.store.getState().TopSites.initialized) {
+      await new Promise(resolve => {
+        const unsubscribe = this.store.subscribe(() => {
+          if (this.store.getState().TopSites.initialized) {
+            unsubscribe();
+            resolve();
+          }
+        });
+      });
+    }
+
     // Request more than the expected length to allow for items being removed by
     // deduping against Top Sites or multiple history from the same domain, etc.
     const manyPages = await NewTabUtils.activityStreamLinks.getHighlights({numItems: MANY_EXTRA_LENGTH});
 
+    // Remove adult highlights if we need to
+    const checkedAdult = this.store.getState().Prefs.values.filterAdult ?
+      filterAdult(manyPages) : manyPages;
+
     // Remove any Highlights that are in Top Sites already
-    const deduped = this.dedupe.group(this.store.getState().TopSites.rows, manyPages)[1];
+    const [, deduped] = this.dedupe.group(this.store.getState().TopSites.rows, checkedAdult);
 
     // Keep all "bookmark"s and at most one (most recent) "history" per host
     this.highlights = [];
     const hosts = new Set();
     for (const page of deduped) {
       const hostname = shortURL(page);
       // Skip this history page if we already something from the same host
       if (page.type === "history" && hosts.has(hostname)) {
--- a/browser/extensions/activity-stream/lib/NewTabInit.jsm
+++ b/browser/extensions/activity-stream/lib/NewTabInit.jsm
@@ -32,13 +32,18 @@ this.NewTabInit = class NewTabInit {
       case at.LOCALE_UPDATED:
         // If the queue is full because we were waiting for strings,
         // dispatch them now.
         if (this._queue.size > 0 && this.store.getState().App.strings) {
           this._queue.forEach(target => this.reply(target));
           this._queue.clear();
         }
         break;
+      case at.SEARCH_BOX_FOCUSED:
+        if (action._target.url === "about:home" && this.store.getState().Prefs.values["aboutHome.autoFocus"]) {
+          action._target.browser.focus();
+        }
+        break;
     }
   }
 };
 
 this.EXPORTED_SYMBOLS = ["NewTabInit"];
--- a/browser/extensions/activity-stream/lib/TelemetryFeed.jsm
+++ b/browser/extensions/activity-stream/lib/TelemetryFeed.jsm
@@ -196,19 +196,16 @@ this.TelemetryFeed = class TelemetryFeed
     const session = {
       session_id: String(gUUIDGenerator.generateUUID()),
       // "unknown" will be overwritten when appropriate
       page: url ? url : "unknown",
       // "unexpected" will be overwritten when appropriate
       perf: {load_trigger_type: "unexpected"}
     };
 
-    if (url) {
-      session.page = url;
-    }
     this.sessions.set(id, session);
     return session;
   }
 
   /**
    * endSession - Stop tracking a session
    *
    * @param  {string} portID the portID of the session that just closed
--- a/browser/extensions/activity-stream/lib/TopSitesFeed.jsm
+++ b/browser/extensions/activity-stream/lib/TopSitesFeed.jsm
@@ -7,16 +7,18 @@ const {utils: Cu} = Components;
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
 const {actionCreators: ac, actionTypes: at} = Cu.import("resource://activity-stream/common/Actions.jsm", {});
 const {TippyTopProvider} = Cu.import("resource://activity-stream/lib/TippyTopProvider.jsm", {});
 const {insertPinned, TOP_SITES_SHOWMORE_LENGTH} = Cu.import("resource://activity-stream/common/Reducers.jsm", {});
 const {Dedupe} = Cu.import("resource://activity-stream/common/Dedupe.jsm", {});
 const {shortURL} = Cu.import("resource://activity-stream/lib/ShortURL.jsm", {});
 
+XPCOMUtils.defineLazyModuleGetter(this, "filterAdult",
+  "resource://activity-stream/lib/FilterAdult.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "NewTabUtils",
   "resource://gre/modules/NewTabUtils.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "Screenshots",
   "resource://activity-stream/lib/Screenshots.jsm");
 
 const UPDATE_TIME = 15 * 60 * 1000; // 15 minutes
 const DEFAULT_SITES_PREF = "default.sites";
 const DEFAULT_TOP_SITES = [];
@@ -69,22 +71,27 @@ this.TopSitesFeed = class TopSitesFeed {
       // Get the best history links that pass the frecency threshold
       frecent = frecent.filter(link => link && link.type !== "affiliate" &&
         link.frecency > FRECENCY_THRESHOLD).map(site => {
           site.hostname = shortURL(site);
           return site;
         });
     }
 
-    // Remove any duplicates from frecent and default sites then insert the
-    // original pinned sites into the deduped frecent ([1]) and defaults ([2])
-    const deduped = this.dedupe.group(pinned, frecent, notBlockedDefaultSites);
-    pinned = insertPinned([...deduped[1], ...deduped[2]], pinned);
+    // Remove any duplicates from frecent and default sites
+    const [, dedupedFrecent, dedupedDefaults] = this.dedupe.group(
+      pinned, frecent, notBlockedDefaultSites);
+    const dedupedUnpinned = [...dedupedFrecent, ...dedupedDefaults];
 
-    return pinned.slice(0, TOP_SITES_SHOWMORE_LENGTH);
+    // Remove adult sites if we need to
+    const checkedAdult = this.store.getState().Prefs.values.filterAdult ?
+      filterAdult(dedupedUnpinned) : dedupedUnpinned;
+
+    // Insert the original pinned sites into the deduped frecent and defaults
+    return insertPinned(checkedAdult, pinned).slice(0, TOP_SITES_SHOWMORE_LENGTH);
   }
   async refresh(target = null) {
     if (!this._tippyTopProvider.initialized) {
       await this._tippyTopProvider.init();
     }
 
     const links = await this.getLinksWithDefaults();
 
--- a/browser/extensions/activity-stream/lib/TopStoriesFeed.jsm
+++ b/browser/extensions/activity-stream/lib/TopStoriesFeed.jsm
@@ -4,101 +4,115 @@
 "use strict";
 
 const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/NewTabUtils.jsm");
 Cu.importGlobalProperties(["fetch"]);
 
-const {actionTypes: at} = Cu.import("resource://activity-stream/common/Actions.jsm", {});
-
+const {actionTypes: at, actionCreators: ac} = Cu.import("resource://activity-stream/common/Actions.jsm", {});
 const {Prefs} = Cu.import("resource://activity-stream/lib/ActivityStreamPrefs.jsm", {});
 const {shortURL} = Cu.import("resource://activity-stream/lib/ShortURL.jsm", {});
 const {SectionsManager} = Cu.import("resource://activity-stream/lib/SectionsManager.jsm", {});
+const {UserDomainAffinityProvider} = Cu.import("resource://activity-stream/lib/UserDomainAffinityProvider.jsm", {});
 
-const {UserDomainAffinityProvider} = Cu.import("resource://activity-stream/lib/UserDomainAffinityProvider.jsm", {});
+XPCOMUtils.defineLazyModuleGetter(this, "perfService", "resource://activity-stream/common/PerfService.jsm");
 
 const STORIES_UPDATE_TIME = 30 * 60 * 1000; // 30 minutes
 const TOPICS_UPDATE_TIME = 3 * 60 * 60 * 1000; // 3 hours
 const DOMAIN_AFFINITY_UPDATE_TIME = 24 * 60 * 60 * 1000; // 24 hours
 const STORIES_NOW_THRESHOLD = 24 * 60 * 60 * 1000; // 24 hours
 const SECTION_ID = "topstories";
 
 this.TopStoriesFeed = class TopStoriesFeed {
-
-  init() {
+  constructor() {
     this.storiesLastUpdated = 0;
     this.topicsLastUpdated = 0;
     this.affinityLastUpdated = 0;
-
-    SectionsManager.onceInitialized(this.parseOptions.bind(this));
+    this.spocsPerNewTabs = 0;
+    this.newTabsSinceSpoc = 0;
+    this.contentUpdateQueue = [];
   }
 
-  parseOptions() {
-    SectionsManager.enableSection(SECTION_ID);
-    const options = SectionsManager.sections.get(SECTION_ID).options;
-    try {
-      const apiKey = this._getApiKeyFromPref(options.api_key_pref);
-      this.stories_endpoint = this._produceFinalEndpointUrl(options.stories_endpoint, apiKey);
-      this.topics_endpoint = this._produceFinalEndpointUrl(options.topics_endpoint, apiKey);
-      this.read_more_endpoint = options.read_more_endpoint;
-      this.stories_referrer = options.stories_referrer;
-      this.personalized = options.personalized;
-      this.maxHistoryQueryResults = options.maxHistoryQueryResults;
+  init() {
+    const initFeed = () => {
+      SectionsManager.enableSection(SECTION_ID);
+      try {
+        const options = SectionsManager.sections.get(SECTION_ID).options;
+        const apiKey = this.getApiKeyFromPref(options.api_key_pref);
+        this.stories_endpoint = this.produceFinalEndpointUrl(options.stories_endpoint, apiKey);
+        this.topics_endpoint = this.produceFinalEndpointUrl(options.topics_endpoint, apiKey);
+        this.read_more_endpoint = options.read_more_endpoint;
+        this.stories_referrer = options.stories_referrer;
+        this.personalized = options.personalized;
+        this.show_spocs = options.show_spocs;
+        this.maxHistoryQueryResults = options.maxHistoryQueryResults;
 
-      this.fetchStories();
-      this.fetchTopics();
-    } catch (e) {
-      Cu.reportError(`Problem initializing top stories feed: ${e.message}`);
-    }
+        this.fetchStories();
+        this.fetchTopics();
+      } catch (e) {
+        Cu.reportError(`Problem initializing top stories feed: ${e.message}`);
+      }
+    };
+    SectionsManager.onceInitialized(initFeed);
   }
 
   uninit() {
     SectionsManager.disableSection(SECTION_ID);
   }
 
   async fetchStories() {
     if (!this.stories_endpoint) {
       return;
     }
     try {
       const response = await fetch(this.stories_endpoint);
-
       if (!response.ok) {
         throw new Error(`Stories endpoint returned unexpected status: ${response.status}`);
       }
 
       const body = await response.json();
-      this.updateDomainAffinities(body.settings);
+      this.updateSettings(body.settings);
+      this.stories = this.rotate(this.transform(body.recommendations));
+      this.spocs = this.show_spocs && this.transform(body.spocs).filter(s => s.score >= s.min_score);
 
-      const recommendations = body.recommendations
-        .filter(s => !NewTabUtils.blockedLinks.isBlocked({"url": s.url}))
-        .map(s => ({
-          "guid": s.id,
-          "hostname": shortURL(Object.assign({}, s, {url: s.url})),
-          "type": (Date.now() - (s.published_timestamp * 1000)) <= STORIES_NOW_THRESHOLD ? "now" : "trending",
-          "title": s.title,
-          "description": s.excerpt,
-          "image": this._normalizeUrl(s.image_src),
-          "referrer": this.stories_referrer,
-          "url": s.url,
-          "score": this.personalized ? this.affinityProvider.calculateItemRelevanceScore(s) : 1
-        }))
-        .sort(this.personalized ? this.compareScore : (a, b) => 0);
-
-      const rows = this.rotate(recommendations);
-
-      this.dispatchUpdateEvent(this.storiesLastUpdated, {rows});
+      this.dispatchUpdateEvent(this.storiesLastUpdated, {rows: this.stories});
       this.storiesLastUpdated = Date.now();
+      // This is filtered so an update function can return true to retry on the next run
+      this.contentUpdateQueue = this.contentUpdateQueue.filter(update => update());
     } catch (error) {
       Cu.reportError(`Failed to fetch content: ${error.message}`);
     }
   }
 
+  transform(items) {
+    if (!items) {
+      return [];
+    }
+
+    return items
+      .filter(s => !NewTabUtils.blockedLinks.isBlocked({"url": s.url}))
+      .map(s => ({
+        "guid": s.id,
+        "hostname": shortURL(Object.assign({}, s, {url: s.url})),
+        "type": (Date.now() - (s.published_timestamp * 1000)) <= STORIES_NOW_THRESHOLD ? "now" : "trending",
+        "context": s.context,
+        "icon": s.icon,
+        "title": s.title,
+        "description": s.excerpt,
+        "image": this.normalizeUrl(s.image_src),
+        "referrer": this.stories_referrer,
+        "url": s.url,
+        "min_score": s.min_score || 0,
+        "score": this.personalized ? this.affinityProvider.calculateItemRelevanceScore(s) : 1
+      }))
+      .sort(this.personalized ? this.compareScore : (a, b) => 0);
+  }
+
   async fetchTopics() {
     if (!this.topics_endpoint) {
       return;
     }
     try {
       const response = await fetch(this.topics_endpoint);
       if (!response.ok) {
         throw new Error(`Topics endpoint returned unexpected status: ${response.status}`);
@@ -116,26 +130,34 @@ this.TopStoriesFeed = class TopStoriesFe
   dispatchUpdateEvent(lastUpdated, data) {
     SectionsManager.updateSection(SECTION_ID, data, lastUpdated === 0);
   }
 
   compareScore(a, b) {
     return b.score - a.score;
   }
 
-  updateDomainAffinities(settings) {
+  updateSettings(settings) {
     if (!this.personalized) {
       return;
     }
 
+    this.spocsPerNewTabs = settings.spocsPerNewTabs;
+
     if (!this.affinityProvider || (Date.now() - this.affinityLastUpdated >= DOMAIN_AFFINITY_UPDATE_TIME)) {
+      const start = perfService.absNow();
       this.affinityProvider = new UserDomainAffinityProvider(
         settings.timeSegments,
         settings.domainAffinityParameterSets,
         this.maxHistoryQueryResults);
+
+      this.store.dispatch(ac.PerfEvent({
+        event: "topstories.domain.affinity.calculation.ms",
+        value: Math.round(perfService.absNow() - start)
+      }));
       this.affinityLastUpdated = Date.now();
     }
   }
 
   // If personalization is turned on we have to rotate stories on the client.
   // An item can only be on top for two iterations (1hr) before it gets moved
   // to the end. This will later be improved based on interactions/impressions.
   rotate(items) {
@@ -148,59 +170,98 @@ this.TopStoriesFeed = class TopStoriesFe
       this.topItem = {[guid]: 0};
     } else if (++this.topItem[guid] === 2) {
       items.push(items.shift());
       this.topItem = {[items[0].guid]: 0};
     }
     return items;
   }
 
-  _getApiKeyFromPref(apiKeyPref) {
+  getApiKeyFromPref(apiKeyPref) {
     if (!apiKeyPref) {
       return apiKeyPref;
     }
 
     return new Prefs().get(apiKeyPref) || Services.prefs.getCharPref(apiKeyPref);
   }
 
-  _produceFinalEndpointUrl(url, apiKey) {
+  produceFinalEndpointUrl(url, apiKey) {
     if (!url) {
       return url;
     }
     if (url.includes("$apiKey") && !apiKey) {
       throw new Error(`An API key was specified but none configured: ${url}`);
     }
     return url.replace("$apiKey", apiKey);
   }
 
   // Need to remove parenthesis from image URLs as React will otherwise
   // fail to render them properly as part of the card template.
-  _normalizeUrl(url) {
+  normalizeUrl(url) {
     if (url) {
       return url.replace(/\(/g, "%28").replace(/\)/g, "%29");
     }
     return url;
   }
 
+  maybeAddSpoc(target) {
+    if (!this.show_spocs) {
+      return;
+    }
+
+    if (this.newTabsSinceSpoc === 0 || this.newTabsSinceSpoc === this.spocsPerNewTabs) {
+      const updateContent = () => {
+        if (!this.spocs || !this.spocs.length) {
+          // We have stories but no spocs so there's nothing to do and this update can be
+          // removed from the queue.
+          return false;
+        }
+
+        // Create a new array with a spoc inserted at index 2
+        // For now we're using the top scored spoc until we can support viewability based rotation
+        let rows = this.stories.slice(0, this.stories.length);
+        rows.splice(2, 0, this.spocs[0]);
+
+        // Send a content update to the target tab
+        const action = {type: at.SECTION_UPDATE, meta: {skipMain: true}, data: Object.assign({rows}, {id: SECTION_ID})};
+        this.store.dispatch(ac.SendToContent(action, target));
+        return false;
+      };
+
+      if (this.stories) {
+        updateContent();
+      } else {
+        // Delay updating tab content until initial data has been fetched
+        this.contentUpdateQueue.push(updateContent);
+      }
+
+      this.newTabsSinceSpoc = 0;
+    }
+    this.newTabsSinceSpoc++;
+  }
+
   onAction(action) {
     switch (action.type) {
       case at.INIT:
         this.init();
         break;
       case at.SYSTEM_TICK:
         if (Date.now() - this.storiesLastUpdated >= STORIES_UPDATE_TIME) {
           this.fetchStories();
         }
         if (Date.now() - this.topicsLastUpdated >= TOPICS_UPDATE_TIME) {
           this.fetchTopics();
         }
         break;
       case at.UNINIT:
         this.uninit();
         break;
+      case at.NEW_TAB_REHYDRATED:
+        this.maybeAddSpoc(action.meta.fromTarget);
+        break;
     }
   }
 };
 
 this.STORIES_UPDATE_TIME = STORIES_UPDATE_TIME;
 this.TOPICS_UPDATE_TIME = TOPICS_UPDATE_TIME;
 this.SECTION_ID = SECTION_ID;
 this.EXPORTED_SYMBOLS = ["TopStoriesFeed", "STORIES_UPDATE_TIME", "TOPICS_UPDATE_TIME", "DOMAIN_AFFINITY_UPDATE_TIME", "SECTION_ID"];
new file mode 100644
--- /dev/null
+++ b/browser/extensions/activity-stream/test/unit/lib/FilterAdult.test.js
@@ -0,0 +1,45 @@
+describe("filterAdult", () => {
+  let filterAdult;
+  let hashStub;
+  let hashValue;
+
+  beforeEach(() => {
+    hashStub = {
+      finish: sinon.stub().callsFake(() => hashValue),
+      init: sinon.stub(),
+      update: sinon.stub()
+    };
+    global.Components.classes["@mozilla.org/security/hash;1"] = {
+      createInstance() {
+        return hashStub;
+      }
+    };
+    filterAdult = require("lib/FilterAdult.jsm").filterAdult;
+  });
+
+  it("should default to include on unexpected urls", () => {
+    const empty = {};
+
+    const result = filterAdult([empty]);
+
+    assert.equal(result.length, 1);
+    assert.equal(result[0], empty);
+  });
+  it("should not filter out non-adult urls", () => {
+    const link = {url: "https://mozilla.org/"};
+
+    const result = filterAdult([link]);
+
+    assert.equal(result.length, 1);
+    assert.equal(result[0], link);
+  });
+  it("should filter out adult urls", () => {
+    // Use a hash value that is in the adult set
+    hashValue = "+/UCpAhZhz368iGioEO8aQ==";
+    const link = {url: "https://some-adult-site/"};
+
+    const result = filterAdult([link]);
+
+    assert.equal(result.length, 0);
+  });
+});
--- a/browser/extensions/activity-stream/test/unit/lib/HighlightsFeed.test.js
+++ b/browser/extensions/activity-stream/test/unit/lib/HighlightsFeed.test.js
@@ -13,42 +13,56 @@ describe("Highlights Feed", () => {
   let SECTION_ID;
   let feed;
   let globals;
   let sandbox;
   let links;
   let clock;
   let fakeScreenshot;
   let fakeNewTabUtils;
+  let filterAdultStub;
   let sectionsManagerStub;
   let shortURLStub;
 
   beforeEach(() => {
     globals = new GlobalOverrider();
     sandbox = globals.sandbox;
     fakeNewTabUtils = {activityStreamLinks: {getHighlights: sandbox.spy(() => Promise.resolve(links))}};
     sectionsManagerStub = {
       onceInitialized: sinon.stub().callsFake(callback => callback()),
       enableSection: sinon.spy(),
       disableSection: sinon.spy(),
       updateSection: sinon.spy(),
       updateSectionCard: sinon.spy(),
       sections: new Map([["highlights", {}]])
     };
     fakeScreenshot = {getScreenshotForURL: sandbox.spy(() => Promise.resolve(FAKE_IMAGE))};
+    filterAdultStub = sinon.stub().returns([]);
     shortURLStub = sinon.stub().callsFake(site => site.url.match(/\/([^/]+)/)[1]);
     globals.set("NewTabUtils", fakeNewTabUtils);
     ({HighlightsFeed, HIGHLIGHTS_UPDATE_TIME, SECTION_ID} = injector({
+      "lib/FilterAdult.jsm": {filterAdult: filterAdultStub},
       "lib/ShortURL.jsm": {shortURL: shortURLStub},
       "lib/SectionsManager.jsm": {SectionsManager: sectionsManagerStub},
       "lib/Screenshots.jsm": {Screenshots: fakeScreenshot},
       "common/Dedupe.jsm": {Dedupe}
     }));
     feed = new HighlightsFeed();
-    feed.store = {dispatch: sinon.spy(), getState() { return {TopSites: {rows: Array(12).fill(null).map((v, i) => ({url: `http://www.topsite${i}.com`}))}}; }};
+    feed.store = {
+      dispatch: sinon.spy(),
+      getState() { return this.state; },
+      state: {
+        Prefs: {values: {filterAdult: false}},
+        TopSites: {
+          initialized: true,
+          rows: Array(12).fill(null).map((v, i) => ({url: `http://www.topsite${i}.com`}))
+        }
+      },
+      subscribe: sinon.stub().callsFake(cb => { cb(); return () => {}; })
+    };
     links = FAKE_LINKS;
     clock = sinon.useFakeTimers();
   });
   afterEach(() => {
     globals.restore();
     clock.restore();
   });
 
@@ -60,25 +74,44 @@ describe("Highlights Feed", () => {
       feed.onAction({type: at.INIT});
       assert.calledOnce(sectionsManagerStub.onceInitialized);
     });
     it("should enable its section", () => {
       feed.onAction({type: at.INIT});
       assert.calledOnce(sectionsManagerStub.enableSection);
       assert.calledWith(sectionsManagerStub.enableSection, SECTION_ID);
     });
-    it("should *not* fetch highlights on init to avoid loading Places too early", () => {
+    it("should fetch highlights on postInit", () => {
       feed.fetchHighlights = sinon.spy();
-
-      feed.onAction({type: at.INIT});
-
-      assert.notCalled(feed.fetchHighlights);
+      feed.postInit();
+      assert.calledOnce(feed.fetchHighlights);
     });
   });
   describe("#fetchHighlights", () => {
+    it("should wait for TopSites to be initialised", async () => {
+      feed.store.getState = () => ({TopSites: {initialized: false}});
+      // Initially TopSites is uninitialised and fetchHighlights should wait
+      feed.fetchHighlights();
+      assert.calledOnce(feed.store.subscribe);
+      assert.notCalled(fakeNewTabUtils.activityStreamLinks.getHighlights);
+
+      // Initialisation causes the subscribe callback to be called and
+      // fetchHighlights should continue
+      feed.store.getState = () => ({TopSites: {initialized: true}});
+      const subscribeCallback = feed.store.subscribe.firstCall.args[0];
+      await subscribeCallback();
+      assert.calledOnce(fakeNewTabUtils.activityStreamLinks.getHighlights);
+
+      // If TopSites is initialised in the first place it shouldn't wait
+      feed.store.subscribe.reset();
+      fakeNewTabUtils.activityStreamLinks.getHighlights.reset();
+      feed.fetchHighlights();
+      assert.notCalled(feed.store.subscribe);
+      assert.calledOnce(fakeNewTabUtils.activityStreamLinks.getHighlights);
+    });
     it("should add hostname and hasImage to each link", async () => {
       links = [{url: "https://mozilla.org"}];
       await feed.fetchHighlights();
       assert.equal(feed.highlights[0].hostname, "mozilla.org");
       assert.equal(feed.highlights[0].hasImage, true);
     });
     it("should add the image from the imageCache if it exists to the link", async () => {
       links = [{url: "https://mozilla.org", preview_image_url: "https://mozilla.org/preview.jog"}];
@@ -136,16 +169,30 @@ describe("Highlights Feed", () => {
     it("should clear the imageCache at the end", async () => {
       links = [{url: "https://mozilla.org", preview_image_url: "https://mozilla.org/preview.jpg"}];
       feed.imageCache = new Map([["https://mozilla.org", FAKE_IMAGE]]);
       // Stops fetchImage adding to the cache
       feed.fetchImage = () => {};
       await feed.fetchHighlights();
       assert.equal(feed.imageCache.size, 0);
     });
+    it("should not filter out adult pages when pref is false", async() => {
+      await feed.fetchHighlights();
+
+      assert.notCalled(filterAdultStub);
+    });
+    it("should filter out adult pages when pref is true", async() => {
+      feed.store.state.Prefs.values.filterAdult = true;
+
+      await feed.fetchHighlights();
+
+      // The stub filters out everything
+      assert.calledOnce(filterAdultStub);
+      assert.equal(feed.highlights.length, 0);
+    });
   });
   describe("#fetchImage", () => {
     const FAKE_URL = "https://mozilla.org";
     const FAKE_IMAGE_URL = "https://mozilla.org/preview.jpg";
     it("should capture the image, if available", async () => {
       await feed.fetchImage(FAKE_URL, FAKE_IMAGE_URL);
       assert.calledOnce(fakeScreenshot.getScreenshotForURL);
       assert.calledWith(fakeScreenshot.getScreenshotForURL, FAKE_IMAGE_URL);
--- a/browser/extensions/activity-stream/test/unit/lib/NewTabInit.test.js
+++ b/browser/extensions/activity-stream/test/unit/lib/NewTabInit.test.js
@@ -54,9 +54,45 @@ describe("NewTabInit", () => {
     STATE.App = {strings: {}};
     instance.onAction({type: at.LOCALE_UPDATED});
     assert.calledThrice(store.dispatch);
 
     store.dispatch.reset();
     instance.onAction({type: at.LOCALE_UPDATED});
     assert.notCalled(store.dispatch);
   });
+  it("should focus the content browser when SEARCH_BOX_FOCUSED", () => {
+    STATE.Prefs = {values: {"aboutHome.autoFocus": true}};
+    const action = {
+      type: at.SEARCH_BOX_FOCUSED,
+      _target: {
+        url: "about:home",
+        browser: {focus: sinon.spy()}
+      }
+    };
+    instance.onAction(action);
+    assert.calledOnce(action._target.browser.focus);
+  });
+  it("should NOT focus the content browser when SEARCH_BOX_FOCUSED for about:newtab", () => {
+    STATE.Prefs = {values: {"aboutHome.autoFocus": true}};
+    const action = {
+      type: at.SEARCH_BOX_FOCUSED,
+      _target: {
+        url: "about:newtab",
+        browser: {focus: sinon.spy()}
+      }
+    };
+    instance.onAction(action);
+    assert.notCalled(action._target.browser.focus);
+  });
+  it("should NOT focus the content browser when SEARCH_BOX_FOCUSED when autoFocus pref is off", () => {
+    STATE.Prefs = {values: {"aboutHome.autoFocus": false}};
+    const action = {
+      type: at.SEARCH_BOX_FOCUSED,
+      _target: {
+        url: "about:newtab",
+        browser: {focus: sinon.spy()}
+      }
+    };
+    instance.onAction(action);
+    assert.notCalled(action._target.browser.focus);
+  });
 });
--- a/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js
+++ b/browser/extensions/activity-stream/test/unit/lib/TopSitesFeed.test.js
@@ -24,16 +24,17 @@ describe("Top Sites Feed", () => {
   let DEFAULT_TOP_SITES;
   let feed;
   let globals;
   let sandbox;
   let links;
   let clock;
   let fakeNewTabUtils;
   let fakeScreenshot;
+  let filterAdultStub;
   let shortURLStub;
 
   beforeEach(() => {
     globals = new GlobalOverrider();
     sandbox = globals.sandbox;
     fakeNewTabUtils = {
       blockedLinks: {
         links: [],
@@ -43,30 +44,39 @@ describe("Top Sites Feed", () => {
       pinnedLinks: {
         links: [],
         isPinned: () => false,
         pin: sandbox.spy(),
         unpin: sandbox.spy()
       }
     };
     fakeScreenshot = {getScreenshotForURL: sandbox.spy(() => Promise.resolve(FAKE_SCREENSHOT))};
+    filterAdultStub = sinon.stub().returns([]);
     shortURLStub = sinon.stub().callsFake(site => site.url);
     const fakeDedupe = function() {};
     globals.set("NewTabUtils", fakeNewTabUtils);
     FakePrefs.prototype.prefs["default.sites"] = "https://foo.com/";
     ({TopSitesFeed, DEFAULT_TOP_SITES} = injector({
       "lib/ActivityStreamPrefs.jsm": {Prefs: FakePrefs},
       "common/Dedupe.jsm": {Dedupe: fakeDedupe},
       "common/Reducers.jsm": {insertPinned, TOP_SITES_SHOWMORE_LENGTH},
+      "lib/FilterAdult.jsm": {filterAdult: filterAdultStub},
       "lib/Screenshots.jsm": {Screenshots: fakeScreenshot},
       "lib/TippyTopProvider.jsm": {TippyTopProvider: FakeTippyTopProvider},
       "lib/ShortURL.jsm": {shortURL: shortURLStub}
     }));
     feed = new TopSitesFeed();
-    feed.store = {dispatch: sinon.spy(), getState() { return {TopSites: {rows: Array(12).fill("site")}}; }};
+    feed.store = {
+      dispatch: sinon.spy(),
+      getState() { return this.state; },
+      state: {
+        Prefs: {values: {filterAdult: false}},
+        TopSites: {rows: Array(12).fill("site")}
+      }
+    };
     feed.dedupe.group = (...sites) => sites;
     links = FAKE_LINKS;
     clock = sinon.useFakeTimers();
   });
   afterEach(() => {
     globals.restore();
     clock.restore();
   });
@@ -125,16 +135,32 @@ describe("Top Sites Feed", () => {
       ];
 
       const result = await feed.getLinksWithDefaults();
 
       assert.equal(result[0].url, links[0].url);
       assert.notEqual(result[1].url, links[1].url);
       assert.notEqual(result[1].url, links[2].url);
     });
+    it("should not filter out adult sites when pref is false", async() => {
+      await feed.getLinksWithDefaults();
+
+      assert.notCalled(filterAdultStub);
+    });
+    it("should filter out non-pinned adult sites when pref is true", async() => {
+      feed.store.state.Prefs.values.filterAdult = true;
+      fakeNewTabUtils.pinnedLinks.links = [{url: "https://foo.com/"}];
+
+      const result = await feed.getLinksWithDefaults();
+
+      // The stub filters out everything
+      assert.calledOnce(filterAdultStub);
+      assert.equal(result.length, 1);
+      assert.equal(result[0].url, fakeNewTabUtils.pinnedLinks.links[0].url);
+    });
     it("should filter out the defaults that have been blocked", async () => {
       // make sure we only have one top site, and we block the only default site we have to show
       const url = "www.myonlytopsite.com";
       const topsite = {
         frecency: FAKE_FRECENCY,
         hostname: shortURLStub({url}),
         url
       };
@@ -189,17 +215,17 @@ describe("Top Sites Feed", () => {
     describe("deduping", () => {
       beforeEach(() => {
         ({TopSitesFeed, DEFAULT_TOP_SITES} = injector({
           "lib/ActivityStreamPrefs.jsm": {Prefs: FakePrefs},
           "common/Reducers.jsm": {insertPinned, TOP_SITES_SHOWMORE_LENGTH},
           "lib/Screenshots.jsm": {Screenshots: fakeScreenshot}
         }));
         sandbox.stub(global.Services.eTLD, "getPublicSuffix").returns("com");
-        feed = new TopSitesFeed();
+        feed = Object.assign(new TopSitesFeed(), {store: feed.store});
       });
       it("should not dedupe pinned sites", async () => {
         fakeNewTabUtils.pinnedLinks.links = [
           {url: "https://developer.mozilla.org/en-US/docs/Web"},
           {url: "https://developer.mozilla.org/en-US/docs/Learn"}
         ];
 
         const sites = await feed.getLinksWithDefaults();
@@ -258,18 +284,17 @@ describe("Top Sites Feed", () => {
       const reference = links.map(site => Object.assign({}, site, {hostname: shortURLStub(site)}));
 
       assert.calledOnce(feed.store.dispatch);
       assert.propertyVal(feed.store.dispatch.firstCall.args[0], "type", at.TOP_SITES_UPDATED);
       assert.deepEqual(feed.store.dispatch.firstCall.args[0].data, reference);
     });
     it("should reuse screenshots for existing links, and call feed.getScreenshot for others", async () => {
       sandbox.stub(feed, "getScreenshot");
-      const rows = [{url: FAKE_LINKS[0].url, screenshot: "foo.jpg"}];
-      feed.store.getState = () => ({TopSites: {rows}});
+      feed.store.state.TopSites.rows = [{url: FAKE_LINKS[0].url, screenshot: "foo.jpg"}];
       await feed.refresh(action);
 
       const results = feed.store.dispatch.firstCall.args[0].data;
 
       results.forEach(link => {
         if (link.url === FAKE_LINKS[0].url) {
           assert.equal(link.screenshot, "foo.jpg");
         } else {
--- a/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js
+++ b/browser/extensions/activity-stream/test/unit/lib/TopStoriesFeed.test.js
@@ -136,28 +136,33 @@ describe("Top Stories Feed", () => {
 
       const response = {
         "recommendations": [{
           "id": "1",
           "title": "title",
           "excerpt": "description",
           "image_src": "image-url",
           "url": "rec-url",
-          "published_timestamp": "123"
+          "published_timestamp": "123",
+          "context": "trending",
+          "icon": "icon"
         }]
       };
       const stories = [{
         "guid": "1",
         "type": "now",
         "title": "title",
+        "context": "trending",
+        "icon": "icon",
         "description": "description",
         "image": "image-url",
         "referrer": "referrer",
         "url": "rec-url",
         "hostname": "rec-url",
+        "min_score": 0,
         "score": 1
       }];
 
       instance.stories_endpoint = "stories-endpoint";
       instance.stories_referrer = "referrer";
       fetchStub.resolves({ok: true, status: 200, json: () => Promise.resolve(response)});
       await instance.fetchStories();
 
@@ -351,16 +356,118 @@ describe("Top Stories Feed", () => {
       let items = [{"guid": "g1"}, {"guid": "g2"}, {"guid": "g3"}, {"guid": "g4"}];
 
       instance.personalized = false;
 
       instance.topItem = {"g1": 1};
       const rotated = instance.rotate(items);
       assert.deepEqual(items, rotated);
     });
+    it("should insert spoc at provided interval", async () => {
+      let fetchStub = globals.sandbox.stub();
+      globals.set("fetch", fetchStub);
+      globals.set("NewTabUtils", {blockedLinks: {isBlocked: globals.sandbox.spy()}});
+
+      const response = {
+        "settings": {"spocsPerNewTabs": 2},
+        "recommendations": [{"id": "rec1"}, {"id": "rec2"}, {"id": "rec3"}],
+        "spocs": [{"id": "spoc1"}, {"id": "spoc2"}]
+      };
+
+      instance.personalized = true;
+      instance.show_spocs = true;
+      instance.stories_endpoint = "stories-endpoint";
+      fetchStub.resolves({ok: true, status: 200, json: () => Promise.resolve(response)});
+      await instance.fetchStories();
+
+      instance.onAction({type: at.NEW_TAB_REHYDRATED, meta: {fromTarget: {}}});
+      assert.calledOnce(instance.store.dispatch);
+      let action = instance.store.dispatch.firstCall.args[0];
+      assert.equal(at.SECTION_UPDATE, action.type);
+      assert.equal(true, action.meta.skipMain);
+      assert.equal(action.data.rows[0].guid, "rec1");
+      assert.equal(action.data.rows[1].guid, "rec2");
+      assert.equal(action.data.rows[2].guid, "spoc1");
+
+      // Second new tab shouldn't trigger a section update event (spocsPerNewTab === 2)
+      instance.onAction({type: at.NEW_TAB_REHYDRATED, meta: {fromTarget: {}}});
+      assert.calledOnce(instance.store.dispatch);
+
+      instance.onAction({type: at.NEW_TAB_REHYDRATED, meta: {fromTarget: {}}});
+      assert.calledTwice(instance.store.dispatch);
+      action = instance.store.dispatch.secondCall.args[0];
+      assert.equal(at.SECTION_UPDATE, action.type);
+      assert.equal(true, action.meta.skipMain);
+      assert.equal(action.data.rows[0].guid, "rec1");
+      assert.equal(action.data.rows[1].guid, "rec2");
+      assert.equal(action.data.rows[2].guid, "spoc1");
+    });
+    it("should delay inserting spoc if stories haven't been fetched", async () => {
+      let fetchStub = globals.sandbox.stub();
+      globals.set("fetch", fetchStub);
+      globals.set("NewTabUtils", {blockedLinks: {isBlocked: globals.sandbox.spy()}});
+
+      const response = {
+        "settings": {"spocsPerNewTabs": 2},
+        "recommendations": [{"id": "rec1"}, {"id": "rec2"}, {"id": "rec3"}],
+        "spocs": [{"id": "spoc1"}, {"id": "spoc2"}]
+      };
+
+      instance.personalized = true;
+      instance.show_spocs = true;
+      instance.stories_endpoint = "stories-endpoint";
+      fetchStub.resolves({ok: true, status: 200, json: () => Promise.resolve(response)});
+
+      instance.onAction({type: at.NEW_TAB_REHYDRATED, meta: {fromTarget: {}}});
+      assert.notCalled(instance.store.dispatch);
+      assert.equal(instance.contentUpdateQueue.length, 1);
+
+      await instance.fetchStories();
+      assert.equal(instance.contentUpdateQueue.length, 0);
+      assert.calledOnce(instance.store.dispatch);
+      let action = instance.store.dispatch.firstCall.args[0];
+      assert.equal(action.type, at.SECTION_UPDATE);
+    });
+    it("should not insert spoc if preffed off", async () => {
+      let fetchStub = globals.sandbox.stub();
+      globals.set("fetch", fetchStub);
+      globals.set("NewTabUtils", {blockedLinks: {isBlocked: globals.sandbox.spy()}});
+
+      const response = {
+        "settings": {"spocsPerNewTabs": 2},
+        "recommendations": [{"id": "rec1"}, {"id": "rec2"}, {"id": "rec3"}],
+        "spocs": [{"id": "spoc1"}, {"id": "spoc2"}]
+      };
+
+      instance.show_spocs = false;
+      instance.stories_endpoint = "stories-endpoint";
+      fetchStub.resolves({ok: true, status: 200, json: () => Promise.resolve(response)});
+      await instance.fetchStories();
+
+      instance.onAction({type: at.NEW_TAB_REHYDRATED, meta: {fromTarget: {}}});
+      assert.notCalled(instance.store.dispatch);
+    });
+    it("should not fail if there is no spoc", async () => {
+      let fetchStub = globals.sandbox.stub();
+      globals.set("fetch", fetchStub);
+      globals.set("NewTabUtils", {blockedLinks: {isBlocked: globals.sandbox.spy()}});
+
+      const response = {
+        "settings": {"spocsPerNewTabs": 2},
+        "recommendations": [{"id": "rec1"}, {"id": "rec2"}, {"id": "rec3"}]
+      };
+
+      instance.show_spocs = true;
+      instance.stories_endpoint = "stories-endpoint";
+      fetchStub.resolves({ok: true, status: 200, json: () => Promise.resolve(response)});
+      await instance.fetchStories();
+
+      instance.onAction({type: at.NEW_TAB_REHYDRATED, meta: {fromTarget: {}}});
+      assert.notCalled(instance.store.dispatch);
+    });
   });
   describe("#update", () => {
     it("should fetch stories after update interval", () => {
       instance.init();
       instance.fetchStories = sinon.spy();
       instance.onAction({type: at.SYSTEM_TICK});
       assert.notCalled(instance.fetchStories);
 
@@ -379,17 +486,29 @@ describe("Top Stories Feed", () => {
       assert.calledOnce(instance.fetchTopics);
     });
     it("should update domain affinities after update interval", () => {
       instance.init();
       instance.personalized = true;
       const fakeSettings = {timeSegments: {}, parameterSets: {}};
       instance.affinityProvider = {status: "not_changed"};
 
-      instance.updateDomainAffinities(fakeSettings);
+      instance.updateSettings(fakeSettings);
       assert.equal("not_changed", instance.affinityProvider.status);
 
       clock.tick(DOMAIN_AFFINITY_UPDATE_TIME);
-      instance.updateDomainAffinities(fakeSettings);
+      instance.updateSettings(fakeSettings);
       assert.isUndefined(instance.affinityProvider.status);
     });
+    it("should send performance telemetry when updating domain affinities", () => {
+      instance.init();
+      instance.personalized = true;
+      const fakeSettings = {timeSegments: {}, parameterSets: {}};
+
+      clock.tick(DOMAIN_AFFINITY_UPDATE_TIME);
+      instance.updateSettings(fakeSettings);
+      assert.calledOnce(instance.store.dispatch);
+      let action = instance.store.dispatch.firstCall.args[0];
+      assert.equal(action.type, at.TELEMETRY_PERFORMANCE_EVENT);
+      assert.equal(action.data.event, "topstories.domain.affinity.calculation.ms");
+    });
   });
 });
--- a/browser/extensions/activity-stream/test/unit/unit-entry.js
+++ b/browser/extensions/activity-stream/test/unit/unit-entry.js
@@ -57,18 +57,21 @@ overrider.set({
           setBoolPref() {},
           setIntPref() {},
           setStringPref() {},
           clearUserPref() {}
         };
       }
     },
     tm: {dispatchToMainThread: cb => cb()},
-    eTLD: {getPublicSuffix() {}},
-    io: {newURI() {}},
+    eTLD: {
+      getBaseDomain({spec}) { return spec.match(/\/([^/]+)/)[1]; },
+      getPublicSuffix() {}
+    },
+    io: {newURI(url) { return {spec: url}; }},
     search: {
       init(cb) { cb(); },
       getVisibleEngines: () => [{identifier: "google"}, {identifier: "bing"}],
       defaultEngine: {identifier: "google"}
     }
   },
   XPCOMUtils: {
     defineLazyModuleGetter() {},