/* WEBPACK VAR INJECTION */

/* harmony default export */

/* harmony export (binding) */

/* harmony import */

/*!
 * Platform.js v1.3.6
 * Copyright 2014-2020 Benjamin Tan
 * Copyright 2011-2013 John-David Dalton
 * Available under MIT license
 */

/*#__PURE__*/

/**
       * Returns the OS string.
       *
       * @memberOf platform.os
       * @returns {string} The OS string.
       */

/**
       * The CPU architecture the OS is built for.
       *
       * @memberOf platform.os
       * @type number|null
       */

/**
       * The family of the OS.
       *
       * Common values include:
       * "Windows", "Windows Server 2008 R2 / 7", "Windows Server 2008 / Vista",
       * "Windows XP", "OS X", "Linux", "Ubuntu", "Debian", "Fedora", "Red Hat",
       * "SuSE", "Android", "iOS" and "Windows Phone"
       *
       * @memberOf platform.os
       * @type string|null
       */

/**
       * The version of the OS.
       *
       * @memberOf platform.os
       * @type string|null
       */

/**
     * Picks the OS name from an array of guesses.
     *
     * @private
     * @param {Array} guesses An array of guesses.
     * @returns {null|string} The detected OS name.
     */

/**
     * Picks the browser name from an array of guesses.
     *
     * @private
     * @param {Array} guesses An array of guesses.
     * @returns {null|string} The detected browser name.
     */

/**
     * Picks the manufacturer from an array of guesses.
     *
     * @private
     * @param {Array} guesses An object of guesses.
     * @returns {null|string} The detected manufacturer.
     */

/**
     * Picks the product name from an array of guesses.
     *
     * @private
     * @param {Array} guesses An array of guesses.
     * @returns {null|string} The detected product name.
     */

/**
     * Resolves the version using an array of UA patterns.
     *
     * @private
     * @param {Array} patterns An array of UA patterns.
     * @returns {null|string} The detected version.
     */

/**
     * Returns `platform.description` when the platform object is coerced to a string.
     *
     * @name toString
     * @memberOf platform
     * @returns {string} Returns `platform.description` if available, else an empty string.
     */

/**
     * The alpha/beta release indicator.
     *
     * @memberOf platform
     * @type string|null
     */

/**
     * The browser's user agent string.
     *
     * @memberOf platform
     * @type string|null
     */

/**
     * The browser/environment version.
     *
     * @memberOf platform
     * @type string|null
     */

/**
     * The name of the browser's layout engine.
     *
     * The list of common layout engines include:
     * "Blink", "EdgeHTML", "Gecko", "Trident" and "WebKit"
     *
     * @memberOf platform
     * @type string|null
     */

/**
     * The name of the browser/environment.
     *
     * The list of common browser names include:
     * "Chrome", "Electron", "Firefox", "Firefox for iOS", "IE",
     * "Microsoft Edge", "PhantomJS", "Safari", "SeaMonkey", "Silk",
     * "Opera Mini" and "Opera"
     *
     * Mobile versions of some browsers have "Mobile" appended to their name:
     * eg. "Chrome Mobile", "Firefox Mobile", "IE Mobile" and "Opera Mobile"
     *
     * @memberOf platform
     * @type string|null
     */

/**
     * The name of the operating system.
     *
     * @memberOf platform
     * @type Object
     */

/**
     * The name of the product hosting the browser.
     *
     * The list of common products include:
     *
     * "BlackBerry", "Galaxy S4", "Lumia", "iPad", "iPod", "iPhone", "Kindle",
     * "Kindle Fire", "Nexus", "Nook", "PlayBook", "TouchPad" and "Transformer"
     *
     * @memberOf platform
     * @type string|null
     */

/**
     * The name of the product's manufacturer.
     *
     * The list of manufacturers include:
     * "Apple", "Archos", "Amazon", "Asus", "Barnes & Noble", "BlackBerry",
     * "Google", "HP", "HTC", "LG", "Microsoft", "Motorola", "Nintendo",
     * "Nokia", "Samsung" and "Sony"
     *
     * @memberOf platform
     * @type string|null
     */

/**
     * The platform description.
     *
     * @memberOf platform
     * @type string|null
     */

/**
     * The platform object.
     *
     * @name platform
     * @type Object
     */

/**
   * A bare-bones `Array#reduce` like utility function.
   *
   * @private
   * @param {Array} array The array to iterate over.
   * @param {Function} callback The function called per iteration.
   * @returns {*} The accumulated result.
   */

/**
   * A utility function to clean up the OS name.
   *
   * @private
   * @param {string} os The OS name to clean up.
   * @param {string} [pattern] A `RegExp` pattern matching the OS name.
   * @param {string} [label] A label for the OS.
   */

/**
   * An iteration utility for arrays and objects.
   *
   * @private
   * @param {Array|Object} object The object to iterate over.
   * @param {Function} callback The function called per iteration.
   */

/**
   * Capitalizes a string value.
   *
   * @private
   * @param {string} string The string to capitalize.
   * @returns {string} The capitalized string.
   */

/**
   * Creates a new platform object.
   *
   * @memberOf platform
   * @param {Object|string} [ua=navigator.userAgent] The user agent string or
   *  context object.
   * @returns {Object} A platform object.
   */

/**
   * Gets the internal `[[Class]]` of a value.
   *
   * @private
   * @param {*} value The value.
   * @returns {string} The `[[Class]]`.
   */

/**
   * Host objects can return type values that are different from their actual
   * data type. The objects we are concerned with usually return non-primitive
   * types of "object", "function", or "unknown".
   *
   * @private
   * @param {*} object The owner of the property.
   * @param {string} property The property to check.
   * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.
   */

/**
   * Iterates over an object's own properties, executing the `callback` for each.
   *
   * @private
   * @param {Object} object The object to iterate over.
   * @param {Function} callback The function executed per own property.
   */

/**
   * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.
   *
   * @private
   * @param {string} string The string to qualify.
   * @returns {string} The qualified string.
   */

/**
   * Removes leading and trailing whitespace from a string.
   *
   * @private
   * @param {string} string The string to trim.
   * @returns {string} The trimmed string.
   */

/**
   * Trim and conditionally capitalize string values.
   *
   * @private
   * @param {string} string The string to format.
   * @returns {string} The formatted string.
   */

/**
   * Used as the maximum length of an array-like object.
   * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)
   * for more details.
   */

/**
 * Store the last of some value. Tracked via a `Ref` only updating it
 * after the component renders.
 *
 * Helpful if you need to compare a prop value to it's previous value during render.
 *
 * ```ts
 * function Component(props) {
 *   const lastProps = usePrevious(props)
 *
 *   if (lastProps.foo !== props.foo)
 *     resetValueFromProps(props.foo)
 * }
 * ```
 *
 * @param value the value to track
 */

/** Browser navigator object. */

/** Browser user agent string. */

/** Regular expression to detect Opera. */

/** The environment context object. */

/** Used as a reference to the global object. */

/** Used to detect if browser is like Chrome. */

/** Used to determine if values are of the language type `Object`. */

/** Used to flag when `thisBinding` is the [ModuleScope]. */

/** Used to flag when a custom context is provided. */

/***/

/*------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------*/

// "Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36

// (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36"

// (e.g. "532.5" becomes "532.05")

// Add browser/OS architecture.

// Add layout engine.

// Add the postfix of ".x" or "+" for approximate versions.

// Append manufacturer to description.

// Append product to description.

// Browsers on Android devices typically provide their product IDS after "Android;"

// Clean up Google TV.

// Clear name of false positives.

// Combine contextual information.

// Convert layout to an array so we can add extra details.

// Correct build number for numeric comparison.

// Correct character case and cleanup string.

// Detect Android products.

// Detect Blink layout engine.

// Detect Firefox Mobile.

// Detect IE Mobile 11.

// Detect JavaScriptCore.

// Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.

// Detect Opera desktop modes.

// Detect WebKit Nightly and approximate Chrome/Safari versions.

// Detect Windows Phone 7 desktop mode.

// Detect Windows version from platform tokens.

// Detect non-Opera (Presto-based) versions (order is important).

// Detect prerelease phases.

// Detect product names that contain their manufacturer's name.

// Detect server-side environments.

// Detect simulators.

// Detect stubborn layout engines.

// Don't add layout details to description if they are falsey.

// Ensure OS does not include the browser name.

// Escape the `/` for Firefox 1.

// Example:

// Export platform.

// Expose platform on the global object to prevent errors when platform is

// Juggle arguments.

// Leverage environment features.

// Lookup the manufacturer by product or scan the UA for the manufacturer.

// Nightly builds are postfixed with a "+".

// Obscure version for some Safari 1-2 releases.

// Parse the OS into an object.

// Platform tokens are defined at:

// Reassign a generic name.

// Rhino has a global function while others have a global object.

// See http://requirejs.org/docs/errors.html#mismatch for more details.

// Some AMD build optimizers, like r.js, check for condition patterns like the following:

// Split by forward slash and append product version if needed.

// Strip incorrect OS versions.

// TODO: Restrict eventKey to string in v5?

// Use the full Chrome version when available.

// We're in compatibility mode when the Trident version + 4 doesn't

// When "identifying", the UA contains both Opera and the other browser's name.

// equal the document mode.

// http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx

// http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi

// http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx

// loaded by a script tag in the presence of an AMD loader.

// module.parent = undefined by default

// up to "Build" or ") AppleWebKit".
