(() => {const {
  // exports
  inferLocale,
} = Object.assign({}, (({
  // imports
}, {
  // template parameters
  validDbxLocales,
  dbxLocaleFallbacks,
}) => {

  const mapToDbxLocale = (rawLocale) => {
    let mappedLocale = Object.entries(rawLocale.trim().split(/[-_. ]/).filter(
      seg => seg.trim() != '').slice(0, 2)).map(
        ([idx, seg]) => (idx == 0) ? seg.trim().toLowerCase() : seg.trim().toUpperCase()).join('_');
    if (!validDbxLocales.includes(mappedLocale)) {
      let fallbackLocale = dbxLocaleFallbacks[mappedLocale];
      if (fallbackLocale !== undefined) {
        mappedLocale = fallbackLocale;
      } else {
        const lastDelimiter = mappedLocale.lastIndexOf('_');
        if (lastDelimiter !== -1) {
          fallbackLocale = mappedLocale.substr(0, lastDelimiter);
          mappedLocale = mapToDbxLocale(fallbackLocale);
        }
      }
    }
    return mappedLocale;
  };

  const getRawLocale = () => {
    if (window && window.dbxPithosConfig && window.dbxPithosConfig.locale) {
      return window.dbxPithosConfig.locale;
    }

    if (document && document.documentElement && document.documentElement.lang) {
      return document.documentElement.lang;
    }

    if (document && document.documentElement && document.documentElement.getAttribute("data-cms-lang")) {
      return document.documentElement.getAttribute("data-cms-lang");
    }

    try {
      var cookieStr = String(document.cookie);
      var cookieObj = cookieStr.split(/\s*;\s*/)
          .reduce((o,nv) => {
            return Object.assign(o, {
              [nv.split('=')[0]]: nv.split('=').splice(1).join('=')
            })},{});
      if (cookieObj.locale) {
        return cookieObj.locale;
      }
    } catch(e) {}

    return undefined;
  };

  const inferLocale = (defaultLocale) => {
    var locale = defaultLocale;

    var rawLocale = getRawLocale();

    if (!!rawLocale) {
      var mappedLocale = mapToDbxLocale(rawLocale);

      if (validDbxLocales.includes(mappedLocale)) {
        locale = mappedLocale;
      }
    }

    return locale;
  };

  // exports
  return {inferLocale};

})({
  // imports
}, {
  // template parameters
  validDbxLocales:  ["da_DK", "de", "en", "en_GB", "es", "es_ES", "fr", "id", "it", "ja", "ko", "ms", "nb_NO", "nl_NL", "pl", "pt_BR", "ru", "sv_SE", "th_TH", "uk_UA", "zh_CN", "zh_TW"],
  dbxLocaleFallbacks: {"pt": "pt_BR", "pt_PT": "pt_BR", "ca": "es_ES", "da": "da_DK", "en_NZ": "en_GB", "en_AU": "en_GB", "nb": "nb_NO", "nl": "nl_NL", "nn": "nb_NO", "no": "nb_NO", "sv": "sv_SE", "th": "th_TH", "uk": "uk_UA", "zh_HANS": "zh_CN", "zh_HANT": "zh_TW", "zh_HK": "zh_TW", "zh_MO": "zh_TW", "zh_MY": "zh_CN", "zh_SG": "zh_CN"},
}));
const {
  // exports
} = Object.assign({}, (({
  // imports
  inferlocale,
}, {
  // template parameters
  expectedOrigin,
  sandboxRequired,
  noPiiVariables,
  mutableNoI18nScripts,
  mutableI18nScripts,
  defaultLocale,
  staticHostname,
}) => {
  if (location.origin !== expectedOrigin) {
    return;
  }
  const shouldBeSandboxed =
        !!document.documentElement.getAttribute('data-cms-lang') &&
    typeof window.sandbox_verifier !== 'undefined';
  let isActuallySandboxed = false;
  try {
    void sessionStorage;
  } catch {
    isActuallySandboxed = true;
  }
  const sandboxed = shouldBeSandboxed && isActuallySandboxed;
  if (sandboxRequired && !sandboxed) {
    return;
  }

  const jsonTypeOf = v => Array.isArray(v) ? 'array' : typeof v;
  const mergeConfig = (defaultConfig, existingConfig) => {
    const merged = Object.assign({}, defaultConfig, existingConfig);
    for (const [k, v] of Object.entries(defaultConfig)) {
      const v2 = merged[k], jsonTypeOfV = jsonTypeOf(v);
      if (v === v2) continue;
      if (jsonTypeOfV !== jsonTypeOf(v2)) continue;
      if (jsonTypeOfV === 'array') {
        for (const el of v) {
          if (!v2.includes(el)) v2.push(el);
        }
      } else if (jsonTypeOfV === 'object') {
        merged[k] = mergeConfig(v, v2);
      }
    }
    return merged;
  };
  window.dbxPithosConfig = mergeConfig(noPiiVariables, window.dbxPithosConfig);

  let locale = window.dbxPithosConfig.locale || inferLocale(defaultLocale);

  if (locale === "en") {
    mutableNoI18nScripts.push.apply(mutableNoI18nScripts, mutableI18nScripts);
    mutableI18nScripts = [];
    window.dbxPithosConfig.i18nStrings = Object.assign({}, window.dbxPithosConfig.i18nStrings);
  }

  window.dbxPithosConfig._alreadyLoaded = Object.assign({}, window.dbxPithosConfig._alreadyLoaded);

  const pithosScript = document.currentScript;
  const pithosAsync = (pithosScript || {}).async;
  const pithosDefer = (pithosScript || {}).defer;
  const pithosNonce = (pithosScript || {}).nonce;
  const pithosSrc = (pithosScript || {}).src;

  if (pithosSrc) {
    if (window.dbxPithosConfig._alreadyLoaded[pithosSrc]) return;
    window.dbxPithosConfig._alreadyLoaded[pithosSrc] = true;
  }

  const loadScripts = scripts => {
    for (const {module: moduleName, src: scriptUrl, always_async: scriptAsync, always_defer: scriptDefer} of scripts) {
      if (window.dbxPithosConfig._alreadyLoaded[moduleName]) continue;
      window.dbxPithosConfig._alreadyLoaded[moduleName] = true;
      if (window.dbxPithosConfig._alreadyLoaded[scriptUrl]) continue;
      window.dbxPithosConfig._alreadyLoaded[scriptUrl] = true;
      const script = document.createElement('script');
      script.src = scriptUrl;
      script.async = scriptAsync || pithosAsync;
      script.defer = scriptDefer || pithosDefer;
      script.charset = 'utf-8';
      script.referrerPolicy = 'strict-origin';
      if (pithosNonce) script.nonce = pithosNonce;
      if (script.nonce) script.setAttribute('nonce', script.nonce);
      document.head.appendChild(script);
    }
  };

  loadScripts(mutableNoI18nScripts);

  if (mutableI18nScripts.length > 0) {
    const localizedStringsUrl = `https://${staticHostname}/static/metaserver/static/pithos/lang/${locale}.json`
    if (window.dbxPithosConfig._alreadyLoaded[localizedStringsUrl]) return;
    window.dbxPithosConfig._alreadyLoaded[localizedStringsUrl] = true;
    for (const {module: moduleName, src: scriptUrl} of mutableI18nScripts) {
      if (window.dbxPithosConfig._alreadyLoaded[moduleName]) continue;
      window.dbxPithosConfig._alreadyLoaded[moduleName] = false;
      if (window.dbxPithosConfig._alreadyLoaded[scriptUrl]) continue;
      window.dbxPithosConfig._alreadyLoaded[scriptUrl] = false;
    }
    fetch(localizedStringsUrl)
      .then((response) => {
        if (!response.ok) {
          locale = "en";
          return {};
        }
        return response.json();
      })
      .then((data) => {
        window.dbxPithosConfig.i18nStrings = mergeConfig(data, window.dbxPithosConfig.i18nStrings);
        loadScripts(mutableI18nScripts);
      });
  }

  window.dbxPithosConfig.locale = locale;

  // no exports

})({
  // imports
  inferLocale,
}, {
  // template parameters
  expectedOrigin: "https://www.dropbox.com",
  sandboxRequired: true,
  noPiiVariables: {"privacy_consent_init_data": {"iframeOrigin": "consent.dropbox.com", "countryCode": "CA", "isCcpaEnabled": true}, "uxa_configs_data": {"requestId": "ad16f8a8646e415dbabd0caaf2213698", "orgReferrer": "https://www.dropbox.com/transparency/reports", "httpReferrer": "https://www.dropbox.com/transparency/reports", "previousUrl": "https://www.dropbox.com/transparency/reports", "visitId": "", "event_names": ["admin_home_client_banner_dismissed", "email_login_failed", "modal_close", "sia_login_requires_two_factor", "total_time", "admin_home_client_banner_clicked", "script_url", "google_signup_start", "dropbox_download", "shown_banner_signin_ep", "scan_success", "document_open", "google_signup_succeeded", "sia_login_failed", "google_login_start", "tl_page_view", "click_tooltip_signin_ep", "email_login_succeeded", "email_login_start", "signup_modal_dismissed", "scroll_event", "product", "ux-analytics", "hs_label", "final_heartbeat", "modal_open", "sia_login_requires_password", "parent_product", "adobe_target_variants", "email_split_signup_continue", "link_click", "instance_event_count", "login_modal_shown", "google_login_failed", "google_signup_failed", "type", "instance_init_ts", "google_login_succeeded", "redirect_to_dropbox_smode_store_page", "hs_action", "dropbox_restart_download", "heartbeat", "tl_template_redirect", "hs_category", "sia_login_succeeded", "iframe_uri", "page_view", "redirect_success", "shown_tooltip_signin_ep", "email_signup_succeeded", "email_login_redirect", "currency_code", "click_banner_signin_ep", "signup_modal_shown", "login_modal_dismissed", "google_login_requires_two_factor", "sia_login_start", "licenses", "admin_home_client_banner_shown", "email_signup_failed", "element_click", "script_id", "spa_source", "link_no_session_storage", "billing_cycle", "document_close", "email_signup_start", "purchase_price", "email_login_requires_two_factor"], "no_pii_config_variables": ["vertical_offset", "client_event_id", "element_id", "event_ts", "link_id", "uxa_v", "variants", "adobe_target_variants", "instance_event_count", "instance_init_ts", "product", "parent_product", "licenses", "type", "purchase_price", "currency_code", "billing_cycle", "hs_action", "hs_category", "hs_label", "page_view_latency"], "noPiiExtraEnabled": true, "marketingTrackerIntegrationEnabled": true, "configTime": 1660047381601, "expEventsToExpIdMap": {"spa_page_view": "GTX-41", "delayed_page_view_with_late_meta_tag": "GTX-122", "privacy_consent_iframe_loaded": "CGI-145", "privacy_consent_script_loaded": "CGI-145", "privacy_consent_script_load_error": "CGI-145", "conversionDataReady": "CGI-607", "legacy_hs_analytics_event": "CGI-553", "marketing_tracker_ready_for_uxa": "CGI-218", "dialog_open": "CGI-370", "dialog_close": "CGI-370"}, "expDataFieldsToExpIdMap": {"adobe_target_variants": "GTX-122", "instance_event_count": "CGI-82", "instance_init_ts": "CGI-96", "iframe_uri": "CGI-145", "script_id": "CGI-145", "script_url": "CGI-145", "spa_source": "GTX-41", "total_time": "CGI-145", "product": "CGI-607", "parent_product": "CGI-607", "licenses": "CGI-607", "type": "CGI-607", "purchase_price": "CGI-607", "currency_code": "CGI-607", "billing_cycle": "CGI-607", "hs_action": "CGI-553", "hs_category": "CGI-553", "hs_label": "CGI-553"}}},
  mutableNoI18nScripts: [{"module": "top_frame_marketing_tracker", "always_async": true, "always_defer": false, "src": "https://cfl.dropboxstatic.com/static/metaserver/static/pithos/top_frame_marketing_tracker.bundle-vfl9xKWlp.js"}, {"module": "ux_analytics", "always_async": true, "always_defer": false, "src": "https://cfl.dropboxstatic.com/static/metaserver/static/pithos/ux_analytics.bundle-vflahklmJ.js"}],  // template-initialized but loader-mutable
  mutableI18nScripts: [{"module": "privacy_consent", "always_async": false, "always_defer": true, "src": "https://cfl.dropboxstatic.com/static/metaserver/static/pithos/privacy_consent.bundle-vflgNRe7F.js"}],  // template-initialized but loader-mutable
  defaultLocale: "en",
  staticHostname: "cfl.dropboxstatic.com",
}));
})()