OK
https://www.netflix.com/
Websites
Runtime: 3.4s
On January 17, 2025, 02:44 PM UTC, https://www.netflix.com/ was accessible when tested on AS27725 in Cuba.
Failures
HTTP Experiment
null
DNS Experiment
null
Control
null
DNS Queries
Resolver:
74.125.78.149
Query:
IN A www.netflix.com
Engine:
system
Name
Class
TTL
Type
DATA
@
IN
A
3.138.161.83
@
IN
A
3.137.75.83
@
IN
A
18.191.122.176
Query:
IN AAAA www.netflix.com
Engine:
system
Name
Class
TTL
Type
DATA
@
IN
AAAA
2a03:5640:f502:81::ee21:17e
@
IN
AAAA
2a03:5640:f502:82::ee21:17e
@
IN
AAAA
2a03:5640:f502:80::ee21:17e
TCP Connections
Connection to 2a03:5640:f502:81::ee21:17e:443 was blocked.
Connection to 2a03:5640:f502:82::ee21:17e:443 was blocked.
Connection to 2a03:5640:f502:80::ee21:17e:443 was blocked.
Connection to 3.138.161.83:443 succeeded.
Connection to 3.137.75.83:443 succeeded.
Connection to 18.191.122.176:443 succeeded.
HTTP Requests
URL
GET https://www.netflix.com/cu-en/
Response Headers
Accept-Ch:Sec-CH-UA-Platform-Version,Sec-CH-UA-ModelContent-Security-Policy-Report-Only:default-src https: wss: 'unsafe-inline' 'unsafe-eval'; font-src https: data: ; img-src https: data: blob: ; media-src https: blob: ; worker-src https: blob: ; report-uri https://www.netflix.com/log/www/csp/1;Content-Type:text/html; charset=utf-8Date:Fri, 17 Jan 2025 14:44:38 GMTServer:envoySet-Cookie:flwssn=f45ba036-24c4-4afc-9f3c-9dd196abe66e; Max-Age=10800; Domain=.netflix.com; Path=/Strict-Transport-Security:max-age=31536000; includeSubDomainsVia:2 i-084076dfa3e6b067f (us-east-2)X-B3-Traceid:678a6cd6443e140f0d95cde785697facX-Content-Type-Options:nosniffX-Envoy-Decorator-Operation:lo_svcX-Envoy-Upstream-Service-Time:173X-Frame-Options:DENYX-Netflix.nfstatus:1_1X-Netflix.proxy.execution-Time:182X-Originating-Url:http://www.netflix.com/cu-en/X-Request-Id:9459318e-f1ad-4dd8-80ee-4dfc23039821X-Xss-Protection:1; mode=block; report=https://www.netflix.com/ichnaea/log/freeform/xssreport
Response Body
<!doctype html><html lang="en-CU" class=""><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta http-equiv="origin-trial" data-feature="EME Extension - Policy Check" data-expires="2018-11-26" content="Aob+++752GiUzm1RNSIkM9TINnQDxTlxz02v8hFJK/uGO2hmXnJqH8c/ZpI05b2nLsHDhGO3Ce2zXJUFQmO7jA4AAAB1eyJvcmlnaW4iOiJodHRwczovL25ldGZsaXguY29tOjQ0MyIsImZlYXR1cmUiOiJFbmNyeXB0ZWRNZWRpYUhkY3BQb2xpY3lDaGVjayIsImV4cGlyeSI6MTU0MzI0MzQyNCwiaXNTdWJkb21haW4iOnRydWV9"/><meta http-equiv="origin-trial" data-feature="LocalFolder" data-expires="2024-09-04" content="Avmn/LBDmMaBYzfLDTgViRmGZnwcz/LsvceSBBKvevKOrStLHjbpZK3zFjSRuw3ampe7aV2MzJO7//lZ9Nm82hQAAABpeyJvcmlnaW4iOiJodHRwczovL25ldGZsaXguY29tOjQ0MyIsImlzU3ViZG9tYWluIjp0cnVlLCJmZWF0dXJlIjoiV2ViQXBwTG9jYWxGb2xkZXIiLCJleHBpcnkiOjE3MjU0OTQzOTl9"/><title>Netflix - Watch TV Shows Online, Watch Movies Online</title><script type="text/javascript" charSet="UTF-8" src="https://help.nflxext.com/helpcenter/OneTrust/oneTrust_production/scripttemplates/otSDKStub.js" data-document-language="true" data-domain-script="87b6a5c0-0104-4e96-a291-092c11350111"></script><script type="text/javascript">function OptanonWrapper() {};</script><meta name="keywords" content="watch movies, movies online, watch TV, TV online, TV shows online, watch TV shows, stream movies, stream tv, instant streaming, watch online, movies, watch movies Cuba, watch TV online, no download, full length movies"/><meta name="description" content="Watch Netflix movies & TV shows online or stream right to your smart TV, game console, PC, Mac, mobile, tablet and more."/><meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-status-bar-style" content="black"/><meta name="format-detection" content="telephone=no"/><meta name="apple-touch-icon" content="https://assets.nflxext.com/en_us/layout/ecweb/netflix-app-icon_152.jpg"/><link rel="shortcut icon" href="https://assets.nflxext.com/us/ffe/siteui/common/icons/nficon2023.ico"/><link rel="apple-touch-icon" href="https://assets.nflxext.com/us/ffe/siteui/common/icons/nficon2016.png"/><meta property="og:title" content="Netflix - Watch TV Shows Online, Watch Movies Online"/><meta property="al:ios:url" content="nflx://www.netflix.com/?locale=en-CU"/><meta property="al:ios:app_store_id" content="363590051"/><meta property="al:ios:app_name" content="Netflix"/><meta property="al:android:url" content="nflx://www.netflix.com/?locale=en-CU"/><meta property="al:android:package" content="com.netflix.mediaclient"/><meta property="al:android:app_name" content="Netflix"/><meta property="og:description" content="Watch Netflix movies & TV shows online or stream right to your smart TV, game console, PC, Mac, mobile, tablet and more."/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@netflix"/><script>/* Polyfill service v4.8.0 * For detailed credits and licence information see https://github.com/financial-times/polyfill-service. * * Features requested: default,dom4,es5,es2015,es2016,es2017,es2018,es2019,es2020,es2021,es2022,es2023,fetch,matchMedia,Intl.DateTimeFormat.prototype.formatToParts,Intl.DateTimeFormat.~locale.en,Intl.DateTimeFormat.~timeZone.all,Intl.DateTimeFormat.~timeZone.golden,Intl.DisplayNames.~locale.en,Intl.ListFormat.~locale.en,Intl.Locale,Intl.NumberFormat.~locale.en,Intl.PluralRules.~locale.en,Intl.RelativeTimeFormat.~locale.en,Intl.getCanonicalLocales,console,console.error,IntersectionObserver,IntersectionObserverEntry,requestIdleCallback,ResizeObserver * * - _ESAbstract.ArrayCreate, License: CC0 (required by "Array.prototype.with", "es2023") * - _ESAbstract.Call, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.ToString", "_ESAbstract.ToPrimitive", "_ESAbstract.OrdinaryToPrimitive", "es2023") * - _ESAbstract.CreateDataProperty, License: CC0 (required by "Array.prototype.with", "_ESAbstract.CreateDataPropertyOrThrow", "es2023") * - _ESAbstract.CreateDataPropertyOrThrow, License: CC0 (required by "Array.prototype.with", "es2023") * - _ESAbstract.CreateMethodProperty, License: CC0 (required by "TypedArray.prototype.with", "es2023") * - _ESAbstract.Get, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.TypedArrayCreateSameType", "_ESAbstract.TypedArrayCreate", "_ESAbstract.Construct", "_ESAbstract.OrdinaryCreateFromConstructor", "_ESAbstract.GetPrototypeFromConstructor", "es2023") * - _ESAbstract.IsCallable, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.ToString", "_ESAbstract.ToPrimitive", "_ESAbstract.OrdinaryToPrimitive", "es2023") * - _ESAbstract.IsInteger, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.IsValidIntegerIndex", "es2023") * - _ESAbstract.IsValidIntegerIndex, License: CC0 (required by "TypedArray.prototype.with", "es2023") * - _ESAbstract.ToNumber, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.ToIntegerOrInfinity", "es2023") * - _ESAbstract.ToIntegerOrInfinity, License: CC0 (required by "TypedArray.prototype.with", "es2023") * - _ESAbstract.ToObject, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.ToString", "_ESAbstract.ToPrimitive", "_ESAbstract.GetMethod", "_ESAbstract.GetV", "es2023") * - _ESAbstract.GetV, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.ToString", "_ESAbstract.ToPrimitive", "_ESAbstract.GetMethod", "es2023") * - _ESAbstract.GetMethod, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.TypedArrayCreateSameType", "_ESAbstract.TypedArrayCreate", "_ESAbstract.Construct", "_ESAbstract.IsConstructor", "es2023") * - _ESAbstract.Type, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.TypedArrayCreateSameType", "_ESAbstract.TypedArrayCreate", "_ESAbstract.Construct", "_ESAbstract.OrdinaryCreateFromConstructor", "_ESAbstract.GetPrototypeFromConstructor", "es2023") * - _ESAbstract.GetPrototypeFromConstructor, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.TypedArrayCreateSameType", "_ESAbstract.TypedArrayCreate", "_ESAbstract.Construct", "_ESAbstract.OrdinaryCreateFromConstructor", "es2023") * - _ESAbstract.OrdinaryCreateFromConstructor, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.TypedArrayCreateSameType", "_ESAbstract.TypedArrayCreate", "_ESAbstract.Construct", "es2023") * - _ESAbstract.IsConstructor, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.TypedArrayCreateSameType", "_ESAbstract.TypedArrayCreate", "_ESAbstract.Construct", "es2023") * - _ESAbstract.Construct, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.TypedArrayCreateSameType", "_ESAbstract.TypedArrayCreate", "es2023") * - _ESAbstract.OrdinaryToPrimitive, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.ToString", "_ESAbstract.ToPrimitive", "es2023") * - _ESAbstract.ToInteger, License: CC0 (required by "Array.prototype.with", "_ESAbstract.LengthOfArrayLike", "_ESAbstract.ToLength", "es2023") * - _ESAbstract.ToLength, License: CC0 (required by "Array.prototype.with", "_ESAbstract.LengthOfArrayLike", "es2023") * - _ESAbstract.LengthOfArrayLike, License: CC0 (required by "Array.prototype.with", "es2023") * - _ESAbstract.ToPrimitive, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.ToString", "es2023") * - _ESAbstract.ToString, License: CC0 (required by "TypedArray.prototype.with", "es2023") * - _ESAbstract.TypedArrayCreate, License: CC0 (required by "TypedArray.prototype.with", "_ESAbstract.TypedArrayCreateSameType", "es2023") * - _ESAbstract.TypedArrayCreateSameType, License: CC0 (required by "TypedArray.prototype.with", "es2023") * - Array.prototype.toReversed, License: MIT (required by "es2023") * - Array.prototype.toSorted, License: MIT (required by "es2023") * - Array.prototype.toSpliced, License: MIT (required by "es2023") * - Array.prototype.with, License: MIT (required by "es2023") * - TypedArray.prototype.toReversed, License: MIT (required by "es2023") * - TypedArray.prototype.toSorted, License: MIT (required by "es2023") * - TypedArray.prototype.with, License: MIT (required by "es2023") */ (function(self, undefined) { // _ESAbstract.ArrayCreate // 9.4.2.2. ArrayCreate ( length [ , proto ] ) function ArrayCreate(length /* [, proto] */) { // eslint-disable-line no-unused-vars // 1. Assert: length is an integer Number ≥ 0. // 2. If length is -0, set length to +0. if (1 / length === -Infinity) { length = 0; } // 3. If length>2^32-1, throw a RangeError exception. if (length > (Math.pow(2, 32) - 1)) { throw new RangeError('Invalid array length'); } // 4. If proto is not present, set proto to the intrinsic object %ArrayPrototype%. // 5. Let A be a newly created Array exotic object. var A = []; // 6. Set A's essential internal methods except for [[DefineOwnProperty]] to the default ordinary object definitions specified in 9.1. // 7. Set A.[[DefineOwnProperty]] as specified in 9.4.2.1. // 8. Set A.[[Prototype]] to proto. // 9. Set A.[[Extensible]] to true. // 10. Perform ! OrdinaryDefineOwnProperty(A, "length", PropertyDescriptor{[[Value]]: length, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: false}). A.length = length; // 11. Return A. return A; } // _ESAbstract.Call /* global IsCallable */ // 7.3.12. Call ( F, V [ , argumentsList ] ) function Call(F, V /* [, argumentsList] */) { // eslint-disable-line no-unused-vars // 1. If argumentsList is not present, set argumentsList to a new empty List. var argumentsList = arguments.length > 2 ? arguments[2] : []; // 2. If IsCallable(F) is false, throw a TypeError exception. if (IsCallable(F) === false) { throw new TypeError(Object.prototype.toString.call(F) + 'is not a function.'); } // 3. Return ? F.[[Call]](V, argumentsList). return F.apply(V, argumentsList); } // _ESAbstract.CreateDataProperty // 7.3.4. CreateDataProperty ( O, P, V ) // NOTE // This abstract operation creates a property whose attributes are set to the same defaults used for properties created by the ECMAScript language assignment operator. // Normally, the property will not already exist. If it does exist and is not configurable or if O is not extensible, [[DefineOwnProperty]] will return false. function CreateDataProperty(O, P, V) { // eslint-disable-line no-unused-vars // 1. Assert: Type(O) is Object. // 2. Assert: IsPropertyKey(P) is true. // 3. Let newDesc be the PropertyDescriptor{ [[Value]]: V, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true }. var newDesc = { value: V, writable: true, enumerable: true, configurable: true }; // 4. Return ? O.[[DefineOwnProperty]](P, newDesc). try { Object.defineProperty(O, P, newDesc); return true; } catch (e) { return false; } } // _ESAbstract.CreateDataPropertyOrThrow /* global CreateDataProperty */ // 7.3.6. CreateDataPropertyOrThrow ( O, P, V ) function CreateDataPropertyOrThrow(O, P, V) { // eslint-disable-line no-unused-vars // 1. Assert: Type(O) is Object. // 2. Assert: IsPropertyKey(P) is true. // 3. Let success be ? CreateDataProperty(O, P, V). var success = CreateDataProperty(O, P, V); // 4. If success is false, throw a TypeError exception. if (!success) { throw new TypeError('Cannot assign value `' + Object.prototype.toString.call(V) + '` to property `' + Object.prototype.toString.call(P) + '` on object `' + Object.prototype.toString.call(O) + '`'); } // 5. Return success. return success; } // _ESAbstract.CreateMethodProperty // 7.3.5. CreateMethodProperty ( O, P, V ) function CreateMethodProperty(O, P, V) { // eslint-disable-line no-unused-vars // 1. Assert: Type(O) is Object. // 2. Assert: IsPropertyKey(P) is true. // 3. Let newDesc be the PropertyDescriptor{[[Value]]: V, [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true}. var newDesc = { value: V, writable: true, enumerable: false, configurable: true }; // 4. Return ? O.[[DefineOwnProperty]](P, newDesc). Object.defineProperty(O, P, newDesc); } // _ESAbstract.Get // 7.3.1. Get ( O, P ) function Get(O, P) { // eslint-disable-line no-unused-vars // 1. Assert: Type(O) is Object. // 2. Assert: IsPropertyKey(P) is true. // 3. Return ? O.[[Get]](P, O). return O[P]; } // _ESAbstract.IsCallable // 7.2.3. IsCallable ( argument ) function IsCallable(argument) { // eslint-disable-line no-unused-vars // 1. If Type(argument) is not Object, return false. // 2. If argument has a [[Call]] internal method, return true. // 3. Return false. // Polyfill.io - Only function objects have a [[Call]] internal method. This means we can simplify this function to check that the argument has a type of function. return typeof argument === 'function'; } // _ESAbstract.IsInteger /* globals Type */ // 7.2.6. IsInteger ( argument ) function IsInteger(argument) { // eslint-disable-line no-unused-vars // 1. If Type(argument) is not Number, return false. if (Type(argument) !== 'number') { return false; } // 2. If argument is NaN, +∞, or -∞, return false. if ( isNaN(argument) || argument === Infinity || argument === -Infinity) { return false; } // 3. If floor(abs(argument)) ≠ abs(argument), return false. if (Math.floor(Math.abs(argument)) !== Math.abs(argument)) { return false; } // 4. Return true. return true; } // _ESAbstract.IsValidIntegerIndex /* globals IsInteger */ // 10.4.5.9 IsValidIntegerIndex ( O, index ) function IsValidIntegerIndex(O, index) { // eslint-disable-line no-unused-vars // 1. If IsDetachedBuffer(O.[[ViewedArrayBuffer]]) is true, return false. // 2. If IsIntegralNumber(index) is false, return false. if (IsInteger(index) === false) return false; // 3. If index is -0𝔽, return false. // eslint-disable-next-line no-compare-neg-zero if (1 / index === -Infinity) return false; // 4. If ℝ(index) < 0 or ℝ(index) ≥ O.[[ArrayLength]], return false. if (index < 0 || index >= O.length) return false; // 5. Return true. return true; } // _ESAbstract.ToNumber // 7.1.3. ToNumber ( argument ) function ToNumber(argument) { // eslint-disable-line no-unused-vars return Number(argument); } // _ESAbstract.ToIntegerOrInfinity /* global ToNumber */ // 7.1.5. ToIntegerOrInfinity ( argument ) function ToIntegerOrInfinity(argument) { // eslint-disable-line no-unused-vars // 1. Let number be ? ToNumber(argument). var number = ToNumber(argument); // 2. If number is NaN, +0𝔽, or -0𝔽, return 0. if (isNaN(number) || number === 0 || 1/number === -Infinity) return 0; // 3. If number is +∞𝔽, return +∞. if (number === Infinity) return Infinity; // 4. If number is -∞𝔽, return -∞. if (number === -Infinity) return -Infinity; // 5. Let integer be floor(abs(ℝ(number))). var integer = Math.floor(Math.abs(number)); // 6. If number < +0𝔽, set integer to -integer. if (number < 0) integer = -integer; // 7. Return integer. return integer; } // _ESAbstract.ToObject // 7.1.13 ToObject ( argument ) // The abstract operation ToObject converts argument to a value of type Object according to Table 12: // Table 12: ToObject Conversions /* |----------------------------------------------------------------------------------------------------------------------------------------------------| | Argument Type | Result | |----------------------------------------------------------------------------------------------------------------------------------------------------| | Undefined | Throw a TypeError exception. | | Null | Throw a TypeError exception. | | Boolean | Return a new Boolean object whose [[BooleanData]] internal slot is set to argument. See 19.3 for a description of Boolean objects. | | Number | Return a new Number object whose [[NumberData]] internal slot is set to argument. See 20.1 for a description of Number objects. | | String | Return a new String object whose [[StringData]] internal slot is set to argument. See 21.1 for a description of String objects. | | Symbol | Return a new Symbol object whose [[SymbolData]] internal slot is set to argument. See 19.4 for a description of Symbol objects. | | Object | Return argument. | |----------------------------------------------------------------------------------------------------------------------------------------------------| */ function ToObject(argument) { // eslint-disable-line no-unused-vars if (argument === null || argument === undefined) { throw TypeError(); } return Object(argument); } // _ESAbstract.GetV /* global ToObject */ // 7.3.2 GetV (V, P) function GetV(v, p) { // eslint-disable-line no-unused-vars // 1. Assert: IsPropertyKey(P) is true. // 2. Let O be ? ToObject(V). var o = ToObject(v); // 3. Return ? O.[[Get]](P, V). return o[p]; } // _ESAbstract.GetMethod /* global GetV, IsCallable */ // 7.3.9. GetMethod ( V, P ) function GetMethod(V, P) { // eslint-disable-line no-unused-vars // 1. Assert: IsPropertyKey(P) is true. // 2. Let func be ? GetV(V, P). var func = GetV(V, P); // 3. If func is either undefined or null, return undefined. if (func === null || func === undefined) { return undefined; } // 4. If IsCallable(func) is false, throw a TypeError exception. if (IsCallable(func) === false) { throw new TypeError('Method not callable: ' + P); } // 5. Return func. return func; } // _ESAbstract.Type // "Type(x)" is used as shorthand for "the type of x"... function Type(x) { // eslint-disable-line no-unused-vars switch (typeof x) { case 'undefined': return 'undefined'; case 'boolean': return 'boolean'; case 'number': return 'number'; case 'string': return 'string'; case 'symbol': return 'symbol'; default: // typeof null is 'object' if (x === null) return 'null'; // Polyfill.io - This is here because a Symbol polyfill will have a typeof `object`. if ('Symbol' in self && (x instanceof self.Symbol || x.constructor === self.Symbol)) return 'symbol'; return 'object'; } } // _ESAbstract.GetPrototypeFromConstructor /* global Get, Type */ // 9.1.14. GetPrototypeFromConstructor ( constructor, intrinsicDefaultProto ) function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) { // eslint-disable-line no-unused-vars // 1. Assert: intrinsicDefaultProto is a String value that is this specification's name of an intrinsic object. The corresponding object must be an intrinsic that is intended to be used as the [[Prototype]] value of an object. // 2. Assert: IsCallable(constructor) is true. // 3. Let proto be ? Get(constructor, "prototype"). var proto = Get(constructor, "prototype"); // 4. If Type(proto) is not Object, then if (Type(proto) !== 'object') { // a. Let realm be ? GetFunctionRealm(constructor). // b. Set proto to realm's intrinsic object named intrinsicDefaultProto. proto = intrinsicDefaultProto; } // 5. Return proto. return proto; } // _ESAbstract.OrdinaryCreateFromConstructor /* global GetPrototypeFromConstructor */ // 9.1.13. OrdinaryCreateFromConstructor ( constructor, intrinsicDefaultProto [ , internalSlotsList ] ) function OrdinaryCreateFromConstructor(constructor, intrinsicDefaultProto) { // eslint-disable-line no-unused-vars var internalSlotsList = arguments[2] || {}; // 1. Assert: intrinsicDefaultProto is a String value that is this specification's name of an intrinsic object. // The corresponding object must be an intrinsic that is intended to be used as the[[Prototype]] value of an object. // 2. Let proto be ? GetPrototypeFromConstructor(constructor, intrinsicDefaultProto). var proto = GetPrototypeFromConstructor(constructor, intrinsicDefaultProto); // 3. Return ObjectCreate(proto, internalSlotsList). // Polyfill.io - We do not pass internalSlotsList to Object.create because Object.create does not use the default ordinary object definitions specified in 9.1. var obj = Object.create(proto); for (var name in internalSlotsList) { if (Object.prototype.hasOwnProperty.call(internalSlotsList, name)) { Object.defineProperty(obj, name, { configurable: true, enumerable: false, writable: true, value: internalSlotsList[name] }); } } return obj; } // _ESAbstract.IsConstructor /* global Type */ // 7.2.4. IsConstructor ( argument ) function IsConstructor(argument) { // eslint-disable-line no-unused-vars // 1. If Type(argument) is not Object, return false. if (Type(argument) !== 'object') { return false; } // 2. If argument has a [[Construct]] internal method, return true. // 3. Return false. // Polyfill.io - `new argument` is the only way to truly test if a function is a constructor. // We choose to not use`new argument` because the argument could have side effects when called. // Instead we check to see if the argument is a function and if it has a prototype. // Arrow functions do not have a [[Construct]] internal method, nor do they have a prototype. return typeof argument === 'function' && !!argument.prototype; } // _ESAbstract.Construct /* global IsConstructor, OrdinaryCreateFromConstructor, Call */ // 7.3.13. Construct ( F [ , argumentsList [ , newTarget ]] ) function Construct(F /* [ , argumentsList [ , newTarget ]] */) { // eslint-disable-line no-unused-vars // 1. If newTarget is not present, set newTarget to F. var newTarget = arguments.length > 2 ? arguments[2] : F; // 2. If argumentsList is not present, set argumentsList to a new empty List. var argumentsList = arguments.length > 1 ? arguments[1] : []; // 3. Assert: IsConstructor(F) is true. if (!IsConstructor(F)) { throw new TypeError('F must be a constructor.'); } // 4. Assert: IsConstructor(newTarget) is true. if (!IsConstructor(newTarget)) { throw new TypeError('newTarget must be a constructor.'); } // 5. Return ? F.[[Construct]](argumentsList, newTarget). // Polyfill.io - If newTarget is the same as F, it is equivalent to new F(...argumentsList). if (newTarget === F) { return new (Function.prototype.bind.apply(F, [null].concat(argumentsList)))(); } else { // Polyfill.io - This is mimicking section 9.2.2 step 5.a. var obj = OrdinaryCreateFromConstructor(newTarget, Object.prototype); return Call(F, obj, argumentsList); } } // _ESAbstract.OrdinaryToPrimitive /* global Get, IsCallable, Call, Type */ // 7.1.1.1. OrdinaryToPrimitive ( O, hint ) function OrdinaryToPrimitive(O, hint) { // eslint-disable-line no-unused-vars // 1. Assert: Type(O) is Object. // 2. Assert: Type(hint) is String and its value is either "string" or "number". // 3. If hint is "string", then if (hint === 'string') { // a. Let methodNames be « "toString", "valueOf" ». var methodNames = ['toString', 'valueOf']; // 4. Else, } else { // a. Let methodNames be « "valueOf", "toString" ». methodNames = ['valueOf', 'toString']; } // 5. For each name in methodNames in List order, do for (var i = 0; i < methodNames.length; ++i) { var name = methodNames[i]; // a. Let method be ? Get(O, name). var method = Get(O, name); // b. If IsCallable(method) is true, then if (IsCallable(method)) { // i. Let result be ? Call(method, O). var result = Call(method, O); // ii. If Type(result) is not Object, return result. if (Type(result) !== 'object') { return result; } } } // 6. Throw a TypeError exception. throw new TypeError('Cannot convert to primitive.'); } // _ESAbstract.ToInteger /* global Type */ // 7.1.4. ToInteger ( argument ) function ToInteger(argument) { // eslint-disable-line no-unused-vars if (Type(argument) === 'symbol') { throw new TypeError('Cannot convert a Symbol value to a number'); } // 1. Let number be ? ToNumber(argument). var number = Number(argument); // 2. If number is NaN, return +0. if (isNaN(number)) { return 0; } // 3. If number is +0, -0, +∞, or -∞, return number. if (1/number === Infinity || 1/number === -Infinity || number === Infinity || number === -Infinity) { return number; } // 4. Return the number value that is the same sign as number and whose magnitude is floor(abs(number)). return ((number < 0) ? -1 : 1) * Math.floor(Math.abs(number)); } // _ESAbstract.ToLength /* global ToInteger */ // 7.1.15. ToLength ( argument ) function ToLength(argument) { // eslint-disable-line no-unused-vars // 1. Let len be ? ToInteger(argument). var len = ToInteger(argument); // 2. If len ≤ +0, return +0. if (len <= 0) { return 0; } // 3. Return min(len, 253-1). return Math.min(len, Math.pow(2, 53) -1); } // _ESAbstract.LengthOfArrayLike /* global Get, ToLength */ // 7.3.19. LengthOfArrayLike ( obj ) function LengthOfArrayLike(obj) { // eslint-disable-line no-unused-vars // 1. Return ℝ(? ToLength(? Get(obj, "length"))). return ToLength(Get(obj, 'length')); } // _ESAbstract.ToPrimitive /* global Type, GetMethod, Call, OrdinaryToPrimitive */ // 7.1.1. ToPrimitive ( input [ , PreferredType ] ) function ToPrimitive(input /* [, PreferredType] */) { // eslint-disable-line no-unused-vars var PreferredType = arguments.length > 1 ? arguments[1] : undefined; // 1. Assert: input is an ECMAScript language value. // 2. If Type(input) is Object, then if (Type(input) === 'object') { // a. If PreferredType is not present, let hint be "default". if (arguments.length < 2) { var hint = 'default'; // b. Else if PreferredType is hint String, let hint be "string". } else if (PreferredType === String) { hint = 'string'; // c. Else PreferredType is hint Number, let hint be "number". } else if (PreferredType === Number) { hint = 'number'; } // d. Let exoticToPrim be ? GetMethod(input, @@toPrimitive). var exoticToPrim = typeof self.Symbol === 'function' && typeof self.Symbol.toPrimitive === 'symbol' ? GetMethod(input, self.Symbol.toPrimitive) : undefined; // e. If exoticToPrim is not undefined, then if (exoticToPrim !== undefined) { // i. Let result be ? Call(exoticToPrim, input, « hint »). var result = Call(exoticToPrim, input, [hint]); // ii. If Type(result) is not Object, return result. if (Type(result) !== 'object') { return result; } // iii. Throw a TypeError exception. throw new TypeError('Cannot convert exotic object to primitive.'); } // f. If hint is "default", set hint to "number". if (hint === 'default') { hint = 'number'; } // g. Return ? OrdinaryToPrimitive(input, hint). return OrdinaryToPrimitive(input, hint); } // 3. Return input return input; } // _ESAbstract.ToString /* global Type, ToPrimitive */ // 7.1.12. ToString ( argument ) // The abstract operation ToString converts argument to a value of type String according to Table 11: // Table 11: ToString Conversions /* |---------------|--------------------------------------------------------| | Argument Type | Result | |---------------|--------------------------------------------------------| | Undefined | Return "undefined". | |---------------|--------------------------------------------------------| | Null | Return "null". | |---------------|--------------------------------------------------------| | Boolean | If argument is true, return "true". | | | If argument is false, return "false". | |---------------|--------------------------------------------------------| | Number | Return NumberToString(argument). | |---------------|--------------------------------------------------------| | String | Return argument. | |---------------|--------------------------------------------------------| | Symbol | Throw a TypeError exception. | |---------------|--------------------------------------------------------| | Object | Apply the following steps: | | | Let primValue be ? ToPrimitive(argument, hint String). | | | Return ? ToString(primValue). | |---------------|--------------------------------------------------------| */ function ToString(argument) { // eslint-disable-line no-unused-vars switch(Type(argument)) { case 'symbol': throw new TypeError('Cannot convert a Symbol value to a string'); case 'object': var primValue = ToPrimitive(argument, String); return ToString(primValue); // eslint-disable-line no-unused-vars default: return String(argument); } } // _ESAbstract.TypedArrayCreate /* global Construct */ // 23.2.4.2 TypedArrayCreate ( constructor, argumentList ) function TypedArrayCreate(constructor, argumentList) { // eslint-disable-line no-unused-vars // 1. Let newTypedArray be ? Construct(constructor, argumentList). var newTypedArray = typeof constructor === 'object' // TODO: Remove this once we drop support for Safari <10, which does not consider `Int8Array` as a constructor (`typeof Int8Array === 'object'`) ? new constructor(argumentList[0]) : Construct(constructor, argumentList); // 2. Perform ? ValidateTypedArray(newTypedArray). // TODO: Add ValidateTypedArray // 3. If the number of elements in argumentList is 1 and argumentList[0] is a Number, then if (argumentList.length === 1 && typeof argumentList[0] === 'number') { // a. If newTypedArray.[[ArrayLength]] < ℝ(argumentList[0]), throw a TypeError exception. if (newTypedArray.length < argumentList[0]) throw TypeError(); } // 4. Return newTypedArray. return newTypedArray; } // _ESAbstract.TypedArrayCreateSameType /* global TypedArrayCreate */ // 23.2.4.3 TypedArrayCreateSameType ( exemplar, argumentList ) function TypedArrayCreateSameType(exemplar, argumentList) { // eslint-disable-line no-unused-vars // 1. Let constructor be the intrinsic object associated with the constructor name exemplar.[[TypedArrayName]] in Table 68. var constructor = { Int8Array: self.Int8Array, Uint8Array: self.Uint8Array, Uint8ClampedArray: self.Uint8ClampedArray, Int16Array: self.Int16Array, Uint16Array: self.Uint16Array, Int32Array: self.Int32Array, Uint32Array: self.Uint32Array, Float32Array: self.Float32Array, Float64Array: self.Float64Array }[exemplar && exemplar.constructor && exemplar.constructor.name]; // Polyfill.io - the `ArrayBuffer` polyfill does not expose a proper `constructor.name` if (!constructor) { var proto = Object.getPrototypeOf(Object(exemplar)); constructor = { packI8: self.Int8Array, packU8: self.Uint8Array, packU8Clamped: self.Uint8ClampedArray, packI16: self.Int16Array, packU16: self.Uint16Array, packI32: self.Int32Array, packU32: self.Uint32Array, packF32: self.Float32Array, packF64: self.Float64Array }[proto && proto._pack && proto._pack.name]; } // 2. Let result be ? TypedArrayCreate(constructor, argumentList). var result = TypedArrayCreate(constructor, argumentList); // 3. Assert: result has [[TypedArrayName]] and [[ContentType]] internal slots. // 4. Assert: result.[[ContentType]] is exemplar.[[ContentType]]. // 5. Return result. return result; } if (!("toReversed"in Array.prototype )) { // Array.prototype.toReversed /* global ArrayCreate, CreateDataPropertyOrThrow, CreateMethodProperty, Get, LengthOfArrayLike, ToObject, ToString */ // 23.1.3.33 Array.prototype.toReversed ( ) CreateMethodProperty(Array.prototype, 'toReversed', function toReversed() { // 1. Let O be ? ToObject(this value). var O = ToObject(this); // 2. Let len be ? LengthOfArrayLike(O). var len = LengthOfArrayLike(O); // 3. Let A be ? ArrayCreate(len). var A = ArrayCreate(len); // 4. Let k be 0. var k = 0; // 5. Repeat, while k < len, while (k < len) { // a. Let from be ! ToString(𝔽(len - k - 1)). var from = ToString(len - k - 1); // b. Let Pk be ! ToString(𝔽(k)). var Pk = ToString(k); // c. Let fromValue be ? Get(O, from). var fromValue = Get(O, from); // d. Perform ! CreateDataPropertyOrThrow(A, Pk, fromValue). CreateDataPropertyOrThrow(A, Pk, fromValue); // e. Set k to k + 1. k = k + 1; } // 6. Return A. return A; }); } if (!("toSorted"in Array.prototype )) { // Array.prototype.toSorted /* global ArrayCreate, CreateDataPropertyOrThrow, CreateMethodProperty, IsCallable, LengthOfArrayLike, ToObject, ToString */ // 23.1.3.34 Array.prototype.toSorted ( comparefn ) CreateMethodProperty(Array.prototype, 'toSorted', function toSorted(comparefn) { // 1. If comparefn is not undefined and IsCallable(comparefn) is false, throw a TypeError exception. if (comparefn !== undefined && IsCallable(comparefn) === false) { throw new TypeError( "The comparison function must be either a function or undefined" ); } // 2. Let O be ? ToObject(this value). var O = ToObject(this); // 3. Let len be ? LengthOfArrayLike(O). var len = LengthOfArrayLike(O); // 4. Let A be ? ArrayCreate(len). var A = ArrayCreate(len); // 7. Let j be 0. var j = 0; // 8. Repeat, while j < len, while (j < len) { // a. Perform ! CreateDataPropertyOrThrow(A, ! ToString(𝔽(j)), sortedList[j]). CreateDataPropertyOrThrow(A, ToString(j), O[j]); // b. Set j to j + 1. j = j + 1; } // Polyfill.io - These steps are handled by native `Array.prototype.sort`, below // 5. Let SortCompare be a new Abstract Closure with parameters (x, y) that captures comparefn and performs the following steps when called: // a. Return ? CompareArrayElements(x, y, comparefn). // 6. Let sortedList be ? SortIndexedProperties(O, len, SortCompare, read-through-holes). comparefn !== undefined ? A.sort(comparefn) : A.sort(); // 9. Return A. return A; }); } if (!("toSpliced"in Array.prototype )) { // Array.prototype.toSpliced /* global ArrayCreate, CreateDataPropertyOrThrow, CreateMethodProperty, Get, LengthOfArrayLike, ToIntegerOrInfinity, ToObject, ToString */ // 23.1.3.35 Array.prototype.toSpliced ( start, skipCount, ...items ) CreateMethodProperty(Array.prototype, 'toSpliced', function toSpliced(start, skipCount) { // 1. Let O be ? ToObject(this value). var O = ToObject(this); // 2. Let len be ? LengthOfArrayLike(O). var len = LengthOfArrayLike(O); // 3. Let relativeStart be ? ToIntegerOrInfinity(start). var relativeStart = ToIntegerOrInfinity(start); var actualStart; // 4. If relativeStart is -∞, let actualStart be 0. if (relativeStart === -Infinity) { actualStart = 0 } // 5. Else if relativeStart < 0, let actualStart be max(len + relativeStart, 0). else if (relativeStart < 0) { actualStart = Math.max(len + relativeStart, 0); } // 6. Else, let actualStart be min(relativeStart, len). else { actualStart = Math.min(relativeStart, len); } // 7. Let insertCount be the number of elements in items. var items = arguments.length > 2 ? Array.prototype.slice.call(arguments, 2) : []; var insertCount = items.length; var actualSkipCount; // 8. If start is not present, then if (arguments.length === 0) { // a. Let actualSkipCount be 0. actualSkipCount = 0; } // 9. Else if skipCount is not present, then else if (arguments.length === 1) { // a. Let actualSkipCount be len - actualStart. actualSkipCount = len - actualStart; } // 10. Else, else { // a. Let sc be ? ToIntegerOrInfinity(skipCount). var sc = ToIntegerOrInfinity(skipCount); // b. Let actualSkipCount be the result of clamping sc between 0 and len - actualStart. actualSkipCount = Math.min(Math.max(0, sc), len - actualStart); } // 11. Let newLen be len + insertCount - actualSkipCount. var newLen = len + insertCount - actualSkipCount; // 12. If newLen > 253 - 1, throw a TypeError exception. if (newLen > Number.MAX_SAFE_INTEGER) { throw new TypeError('Length exceeded the maximum array length'); } // 13. Let A be ? ArrayCreate(newLen). var A = ArrayCreate(newLen); // 14. Let i be 0. var i = 0; // 15. Let r be actualStart + actualSkipCount. var r = actualStart + actualSkipCount; // 16. Repeat, while i < actualStart, while (i < actualStart) { // a. Let Pi be ! ToString(𝔽(i)). var Pi = ToString(i); // b. Let iValue be ? Get(O, Pi). var iValue = Get(O, Pi); // c. Perform ! CreateDataPropertyOrThrow(A, Pi, iValue). CreateDataPropertyOrThrow(A, Pi, iValue); // d. Set i to i + 1. i = i + 1; } // 17. For each element E of items, do items.forEach(function (E) { var Pi = ToString(i); CreateDataPropertyOrThrow(A, Pi, E); i = i + 1; }); // 18. Repeat, while i < newLen, while (i < newLen) { // a. Let Pi be ! ToString(𝔽(i)). var Pi2 = ToString(i); // b. Let from be ! ToString(𝔽(r)). var from = ToString(r); // c. Let fromValue be ? Get(O, from). var fromValue = Get(O, from); // d. Perform ! CreateDataPropertyOrThrow(A, Pi, fromValue). CreateDataPropertyOrThrow(A, Pi2, fromValue); // e. Set i to i + 1. i = i + 1; // f. Set r to r + 1. r = r + 1; } // 19. Return A. return A; }); } if (!("with"in Array.prototype )) { // Array.prototype.with /* global ArrayCreate, CreateDataPropertyOrThrow, CreateMethodProperty, Get, LengthOfArrayLike, ToIntegerOrInfinity, ToObject, ToString */ // 23.1.3.39 Array.prototype.with ( index, value ) CreateMethodProperty(Array.prototype, 'with', function With(index, value) { // 1. Let O be ? ToObject(this value). var O = ToObject(this); // 2. Let len be ? LengthOfArrayLike(O). var len = LengthOfArrayLike(O); // 3. Let relativeIndex be ? ToIntegerOrInfinity(index). var relativeIndex = ToIntegerOrInfinity(index); // 4. If relativeIndex ≥ 0, let actualIndex be relativeIndex. // 5. Else, let actualIndex be len + relativeIndex. var actualIndex = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; // 6. If actualIndex ≥ len or actualIndex < 0, throw a RangeError exception. if (actualIndex >= len || actualIndex < 0) { throw new RangeError('Invalid index'); } // 7. Let A be ? ArrayCreate(len). var A = ArrayCreate(len); // 8. Let k be 0. var k = 0; // 9. Repeat, while k < len, while (k < len) { // a. Let Pk be ! ToString(𝔽(k)). var Pk = ToString(k); // b. If k is actualIndex, let fromValue be value. // c. Else, let fromValue be ? Get(O, Pk). var fromValue = k === actualIndex ? value : Get(O, Pk); // d. Perform ! CreateDataPropertyOrThrow(A, Pk, fromValue). CreateDataPropertyOrThrow(A, Pk, fromValue); // e. Set k to k + 1. k = k + 1; } // 10. Return A. return A; }); (function () { var supportsDefiningFunctionName = (function () { var fn = function () {}; try { Object.defineProperty(fn, 'name', { value: 'test' }); return true; } catch (ignore) { return false; } })(); if (supportsDefiningFunctionName) { Object.defineProperty(Array.prototype.with, 'name', { value: 'with', writable: false, enumerable: false, configurable: true }) } })(); } if (!("Int8Array"in self&&"toReversed"in self.Int8Array.prototype )) { // TypedArray.prototype.toReversed /* global CreateMethodProperty, Get, ToString, TypedArrayCreateSameType */ // 23.2.3.32 %TypedArray%.prototype.toReversed ( ) (function () { function toReversed() { // 1. Let O be the this value. var O = this; // 2. Perform ? ValidateTypedArray(O). // TODO: Add ValidateTypedArray // 3. Let length be O.[[ArrayLength]]. var length = O.length; // 4. Let A be ? TypedArrayCreateSameType(O, « 𝔽(length) »). var A = TypedArrayCreateSameType(O, [ length ]); // 5. Let k be 0. var k = 0; // 6. Repeat, while k < length, while (k < length) { // a. Let from be ! ToString(𝔽(length - k - 1)). var from = ToString(length - k - 1); // b. Let Pk be ! ToString(𝔽(k)). var Pk = ToString(k); // c. Let fromValue be ! Get(O, from). var fromValue = Get(O, from); // d. Perform ! Set(A, Pk, fromValue, true). A[Pk] = fromValue; // e. Set k to k + 1. k = k + 1; } // 7. Return A. return A; } // in IE11, `Int8Array.prototype` inherits directly from `Object.prototype` // in that case, don't define it on the parent; define it directly on the prototype if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) { // set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses CreateMethodProperty(self.Int8Array.prototype.__proto__, 'toReversed', toReversed); } else { CreateMethodProperty(self.Int8Array.prototype, 'toReversed', toReversed); CreateMethodProperty(self.Uint8Array.prototype, 'toReversed', toReversed); CreateMethodProperty(self.Uint8ClampedArray.prototype, 'toReversed', toReversed); CreateMethodProperty(self.Int16Array.prototype, 'toReversed', toReversed); CreateMethodProperty(self.Uint16Array.prototype, 'toReversed', toReversed); CreateMethodProperty(self.Int32Array.prototype, 'toReversed', toReversed); CreateMethodProperty(self.Uint32Array.prototype, 'toReversed', toReversed); CreateMethodProperty(self.Float32Array.prototype, 'toReversed', toReversed); CreateMethodProperty(self.Float64Array.prototype, 'toReversed', toReversed); } })(); } if (!("Int8Array"in self&&"toSorted"in self.Int8Array.prototype )) { // TypedArray.prototype.toSorted /* global CreateMethodProperty, IsCallable, TypedArrayCreateSameType */ // 23.2.3.33 %TypedArray%.prototype.toSorted ( comparefn ) (function () { function toSorted(comparefn) { // 1. If comparefn is not undefined and IsCallable(comparefn) is false, throw a TypeError exception. if (comparefn !== undefined && IsCallable(comparefn) === false) { throw new TypeError( "The comparison function must be either a function or undefined" ); } // 2. Let O be the this value. var O = this; // 3. Perform ? ValidateTypedArray(O). // TODO: Add ValidateTypedArray // 4. Let len be O.[[ArrayLength]]. var len = O.length; // 5. Let A be ? TypedArrayCreateSameType(O, « 𝔽(len) »). var A = TypedArrayCreateSameType(O, [ len ]); // 9. Let j be 0. var j = 0; // 10. Repeat, while j < len, while (j < len) { // a. Perform ! Set(A, ! ToString(𝔽(j)), sortedList[j], true). A[j] = O[j]; // b. Set j to j + 1. j = j + 1; } // Polyfill.io - These steps are handled by native `%TypedArray%.prototype.sort`, below // 6. NOTE: The following closure performs a numeric comparison rather than the string comparison used in 23.1.3.34. // 7. Let SortCompare be a new Abstract Closure with parameters (x, y) that captures comparefn and performs the following steps when called: // a. Return ? CompareTypedArrayElements(x, y, comparefn). // 8. Let sortedList be ? SortIndexedProperties(O, len, SortCompare, read-through-holes). comparefn !== undefined ? A.sort(comparefn) : A.sort(); // 11. Return A. return A; } // in IE11, `Int8Array.prototype` inherits directly from `Object.prototype` // in that case, don't define it on the parent; define it directly on the prototype if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) { // set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses CreateMethodProperty(self.Int8Array.prototype.__proto__, 'toSorted', toSorted); } else { CreateMethodProperty(self.Int8Array.prototype, 'toSorted', toSorted); CreateMethodProperty(self.Uint8Array.prototype, 'toSorted', toSorted); CreateMethodProperty(self.Uint8ClampedArray.prototype, 'toSorted', toSorted); CreateMethodProperty(self.Int16Array.prototype, 'toSorted', toSorted); CreateMethodProperty(self.Uint16Array.prototype, 'toSorted', toSorted); CreateMethodProperty(self.Int32Array.prototype, 'toSorted', toSorted); CreateMethodProperty(self.Uint32Array.prototype, 'toSorted', toSorted); CreateMethodProperty(self.Float32Array.prototype, 'toSorted', toSorted); CreateMethodProperty(self.Float64Array.prototype, 'toSorted', toSorted); } })(); } if (!("Int8Array"in self&&"with"in self.Int8Array.prototype )) { // TypedArray.prototype.with /* global CreateMethodProperty, Get, IsValidIntegerIndex, ToIntegerOrInfinity, ToNumber, ToString, TypedArrayCreateSameType */ // 23.2.3.36 %TypedArray%.prototype.with ( index, value ) (function () { function With(index, value) { // 1. Let O be the this value. var O = this; // 2. Perform ? ValidateTypedArray(O). // TODO: Add ValidateTypedArray // 3. Let len be O.[[ArrayLength]]. var len = O.length; // 4. Let relativeIndex be ? ToIntegerOrInfinity(index). var relativeIndex = ToIntegerOrInfinity(index); // 5. If relativeIndex ≥ 0, let actualIndex be relativeIndex. // 6. Else, let actualIndex be len + relativeIndex. var actualIndex = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; // 7. If O.[[ContentType]] is BigInt, let numericValue be ? ToBigInt(value). // TODO: Add BigInt support // 8. Else, let numericValue be ? ToNumber(value). var numericValue = ToNumber(value); // 9. If IsValidIntegerIndex(O, 𝔽(actualIndex)) is false, throw a RangeError exception. if (IsValidIntegerIndex(O, actualIndex) === false) { throw new RangeError('Invalid index'); } // 10. Let A be ? TypedArrayCreateSameType(O, « 𝔽(len) »). var A = TypedArrayCreateSameType(O, [ len ]); // 11. Let k be 0. var k = 0; // 12. Repeat, while k < len, while (k < len) { // a. Let Pk be ! ToString(𝔽(k)). var Pk = ToString(k); // b. If k is actualIndex, let fromValue be numericValue. // c. Else, let fromValue be ! Get(O, Pk). var fromValue = k === actualIndex ? numericValue : Get(O, Pk); // d. Perform ! Set(A, Pk, fromValue, true). A[Pk] = fromValue; // e. Set k to k + 1. k = k + 1; } // 13. Return A. return A; } var supportsDefiningFunctionName = (function () { var fn = function () {}; try { Object.defineProperty(fn, 'name', { value: 'test' }); return true; } catch (ignore) { return false; } })(); if (supportsDefiningFunctionName) { Object.defineProperty(With, 'name', { value: 'with', writable: false, enumerable: false, configurable: true }) } // in IE11, `Int8Array.prototype` inherits directly from `Object.prototype` // in that case, don't define it on the parent; define it directly on the prototype if ('__proto__' in self.Int8Array.prototype && self.Int8Array.prototype.__proto__ !== Object.prototype) { // set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses CreateMethodProperty(self.Int8Array.prototype.__proto__, 'with', With); } else { CreateMethodProperty(self.Int8Array.prototype, 'with', With); CreateMethodProperty(self.Uint8Array.prototype, 'with', With); CreateMethodProperty(self.Uint8ClampedArray.prototype, 'with', With); CreateMethodProperty(self.Int16Array.prototype, 'with', With); CreateMethodProperty(self.Uint16Array.prototype, 'with', With); CreateMethodProperty(self.Int32Array.prototype, 'with', With); CreateMethodProperty(self.Uint32Array.prototype, 'with', With); CreateMethodProperty(self.Float32Array.prototype, 'with', With); CreateMethodProperty(self.Float64Array.prototype, 'with', With); } })(); } }) ('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {}); </script><style type="text/css">/* TODO: Breakout Home, Maintenance, Unsupported */ @font-face { font-family: 'Netflix Sans'; font-weight: 300; src: url(https://assets.nflxext.com/ffe/siteui/fonts/netflix-sans/v3/NetflixSans_W_Lt.woff2) format('woff2'),url(https://assets.nflxext.com/ffe/siteui/fonts/netflix-sans/v3/NetflixSans_W_Lt.woff) format('woff') } @font-face { font-family: 'Netflix Sans'; font-weight: 400; src: url(https://assets.nflxext.com/ffe/siteui/fonts/netflix-sans/v3/NetflixSans_W_Rg.woff2) format('woff2'),url(https://assets.nflxext.com/ffe/siteui/fonts/netflix-sans/v3/NetflixSans_W_Rg.woff) format('woff') } @font-face { font-family: 'Netflix Sans'; font-weight: 500; src: url(https://assets.nflxext.com/ffe/siteui/fonts/netflix-sans/v3/NetflixSans_W_Md.woff2) format('woff2'), url(https://assets.nflxext.com/ffe/siteui/fonts/netflix-sans/v3/NetflixSans_W_Md.woff) format('woff'); } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Netflix Sans', 'Helvetica Neue', 'Segoe UI', Roboto, Ubuntu, sans-serif; font-weight: 300; min-width: 320px; } body, html { background-color: #000000; color: #FFFFFF; height: 100%; } h1, h2, h3, h4, h5, h6 { font-weight: 500; margin-bottom: 20px; } a, a:visited { text-decoration: none; border: 0; outline: none; } a:hover { text-decoration: underline; } .screen-reader-text, .lang-selection-container .nfLabel { position: absolute; top: -9999px; left: -9999px; } /* Language Selection */ form#lang-switcher { display: inline-block; } #lang-switcher .nSubmitButton { display: inline-block; vertical-align: top; } #lang-switcher .nSubmitButton .btn-red { filter: none; } .nfSelectWrapper { display: inline-block; } .nfSelectPlacement { overflow: hidden; border: 1px solid #333; background-color: #000000; position: relative; display: inline-block; } .lang-selection-container .prefixIcon, .lang-selection-container .suffixIcon { position: absolute; z-index: 0; } .selectorContainer { overflow: hidden; } .languageSelector.globe .prefixIcon { background-image: url(https://assets.nflxext.com/ffe/siteui/acquisition/static/globe.png); width: 16px; height: 16px; left: 17px; top: 13px; } .nfSelectPlacement .suffixIcon { background-image: url(https://assets.nflxext.com/ffe/siteui/acquisition/static/caret.png); width: 10px; height: 7px; right: 11px; top: 18px; } .lang-selection-container select, .lang-selection-container .nfSelect { position: relative; background-color: transparent; background-image: none; /* stylelint-disable */ /* Hack for Opera Background Transparent */ background: rgba(0, 0, 0, 0); /* stylelint-enable */ color: #999; font-size: 16px; padding-bottom: 12px; padding-top: 12px; padding-right: 26px; padding-left: 50px; -webkit-appearance: none; -moz-appearance: none; appearance: none; text-indent: 1px; text-overflow: ''; border: none; z-index: 1; width: 150%; } .lang-selection-container select::-ms-expand { display: none; } .langSelectionSubmit { border: none; margin-left: 10px; cursor: pointer; } /* Button */ .btn { -moz-box-shadow: 0 1px 0 #00000073; -webkit-box-shadow: 0 1px 0 #00000073; border-radius: 3px; border: 0; box-shadow: 0 1px 0 #00000073; color: #fff; cursor: pointer; display: inline-block; font-size: 18px; font-weight: 400; line-height: normal; margin: 40px 9px 40px 0; min-width: 74px; padding: 17.5px 36px; position: relative; text-decoration: none; zoom: 1; } .btn-red { background-color: #e50914; } .btn-blue { background-color: #0080ff; } .btn-white { color: #333; background: 0 0; border: 1px solid #8c8c8c; margin-top: 20px; font-size: .8rem; padding: 8px 20px; } .btn-small { font-size: .8rem; padding: 9px 24px; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; margin: 10px 0; } .btn-medium { max-width: 335px; width: 100%; margin-top: 40px; font-size: 18px; padding: 15px 30px; } .inputError { color: #b92d2b; font-size: 13px; padding: 10px 5px; } /* UI Messages */ .hasError.ui-message-container { background: #999999; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; font-size: 14px; margin: 0 0 16px; } .hasError.ui-message-container.ui-message-error { background: #E87C08; } .hasError .ui-message-contents { padding: 10px 20px; } /* Header */ #header { position: relative; margin: 0 50px; padding-top: 20px; } .nfLogo { display: block; } .nfLogo img { background: transparent; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF)"; /* IE8 */ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); /* IE6 & 7 */ zoom: 1; max-width: 160px; border: 0; margin: -15px 0 0 -15px; } .nfLogo .svg-icon-netflix-logo { height: 36px; width: 134px; } #header-lang-and-links { position: absolute; right: 0; top: 22px; } #header #lang-switcher { cursor: pointer; } #header .lang-selection-container .nfSelect { font-size: 12px; padding-left: 40px; padding-top: 10px; padding-bottom: 10px; padding-right: 25px; } #header .languageSelector.globe .prefixIcon { left: 15px; top: 10px; } #header .nfSelectPlacement .suffixIcon { right: 10px; top: 15px; } #header .langSelectionSubmit { font-size: 12px; padding: 11px 13px; color: #FFFFFF; } /* Sign-in Button */ #signin-cta-button{ float: right; margin: 0 0 0 25px; } /* Background */ .background { background-color: #000000; height: 100%; } /* Main */ #main, #main .ui-static-container { min-height: 725px; height: 100%; } .ui-static-container { max-width: 500px; margin: auto; display: table; /* Hack for Firefox to work with min-height */ height: 0; /* Hack for Chrome < 25 to work with table display */ width: 500px; } .ui-static-message-wrapper { display: table-cell; vertical-align: middle; height: 100%; /* Hack for Chrome < 25 to work with table display */ padding: 150px 0; position: relative; z-index: 1000; } .ui-static-message { text-align: center; margin: 50px 10px; } .ui-static-message h2 { font-size: 40px; margin-bottom: 20px; } .ui-static-message p { font-size: 18px; line-height: 1.5; } .ui-static-message a { color: #FFFFFF; text-decoration: underline; } .ui-static-message a.btn { text-decoration: none; } /* Footer */ #footer { border-top: #333333 5px solid; } #footer ul { margin: 20px 0; clear: both; } #footer .langSelectionSubmit { font-size: 16px; padding: 13px 25px; color: #FFFFFF; } .site-footer-wrapper { background: #000000; margin-top: 20px; color: #757575; } .site-footer-wrapper a { color: #757575; } .site-footer { max-width: 1090px; width: 90%; margin: auto; padding: 30px 0; } .footer-country { font-size: 13px; margin-top: 24px; } ul.footer-links li { list-style-type: none; display: inline-block; min-width: 100px; width: 25%; margin-bottom: 16px; font-size: 13px; } /* Home */ .home .background { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='https://assets.nflxext.com/ffe/siteui/acquisition/static/static-gradient-background-red-blue.jpg', sizingMethod='scale'); -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='https://assets.nflxext.com/ffe/siteui/acquisition/static/static-gradient-background-red-blue.jpg', sizingMethod='scale')"; background-color: #000000; background-image: url(https://assets.nflxext.com/ffe/siteui/acquisition/static/static-gradient-background-red-blue.jpg); background-repeat: no-repeat; background-position: top center; -webkit-background-size: 102% 102%; -moz-background-size: 102% 102%; -o-background-size: 102% 102%; background-size: 102% 102%; background-attachment: fixed; } /* Login */ @media only screen and (max-width: 740px) { .background { min-height: 800px; } #main .ui-static-container { max-width: 100%; } /* Header */ .nfLogo img { max-width: 89px; } /* Main */ .ui-static-message h2 { font-size: 32px; } .ui-static-container { max-width: 335px; } /* Footer */ ul.footer-links li { width: 33%; } .btn-hide-mobile { display: none; } } @media only screen and (max-width: 500px) { #header { margin: 0 25px; } #header #lang-switcher { top: 12px; } #main, #main .ui-static-container { min-height: 550px; } #main .ui-static-container { width: 100%; } .background { min-height: unset; } .ui-static-message-wrapper { padding: 75px 0; } .ui-static-message { margin: 50px 20px; } /* Footer */ ul.footer-links li { width: 50%; } } @media (orientation: landscape) and (max-device-height: 800px) { .background { min-height: unset; } #main, #main .ui-static-container { min-height: 500px; height: auto; } .ui-static-message-wrapper { padding: 0; } } /* Client Version Overrides */ html.MSIE6 #header-lang-and-links, html.MSIE7 #header-lang-and-links { width: 150px; margin-right: 50px; } html.MSIE6 .lang-selection-container select, html.MSIE6 .lang-selection-container .nfSelect, html.MSIE7 .lang-selection-container select, html.MSIE7 .lang-selection-container .nfSelect { width: 100%; } html.MSIE6 #main, html.MSIE7 #main { min-height: 0; } html.MSIE6 #main .ui-static-container, html.MSIE7 #main .ui-static-container { min-height: 0; height: auto; } html.MSIE6 #footer .nfSelectPlacement, html.MSIE7 #footer .nfSelectPlacement { width: 150px; } html.MSIE6 ul.footer-links li, html.MSIE7 ul.footer-links li { float: left; } html.MSIE6 #footer .lang-selection-container, html.MSIE7 #footer .lang-selection-container { clear: both; } .showCookieDisclosure #disclosures { visibility: visible; z-index: 1000; position: fixed; top: 0; bottom: auto; right: 0; left: 0; width: 100%; height: auto; opacity: 1; clip: unset; white-space: pre-wrap; } #disclosures { position: absolute; height: 1px; width: 1px; overflow: hidden; white-space: nowrap; opacity: 0; } .disclosure { background-color: #ffffff; border-top: solid 1px #ccc; position: relative; padding-left: 15px; } .disclosure .disclosure-message { color: #333; padding: 10px 40px 15px 0; margin: 0 auto; text-align: left; font-size: 14px; } .disclosure .disclosure-message a, .disclosure a.cookie-disclosure-link { border: none; font-weight: 500; color: inherit; text-decoration: underline; } .disclosure .short { display: none; padding: 5px 29px 7px 7px; } .disclosure .block-element { display: block; margin-top: 10px; } .disclosure .cta-btn-container { margin-top: -10px; padding: 0 15px 15px 0; } .disclosure .cta-btn-container .btn-accept,.disclosure .cta-btn-container .btn-preferences,.disclosure .cta-btn-container .btn-reject { margin-top: 10px; font-size: .8rem; padding: 3px 10px; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .disclosure .cta-btn-container .btn-accept,.disclosure .cta-btn-container .btn-reject { margin-right: 10px; border: 1px solid #e50914; } .disclosure .btn-container { display: inline-block; position: absolute; right: 15px; top: 0; padding-top: 10px; font-size: 16px; } .disclosure .cookie-disclosure-button { margin-right: 10px; } .disclosure .btn-container button { color: #333; padding: 0; font-size: 12px; } .disclosure .close-button { font-size: 12px; background: 0 0; border: none; position: initial; } .disclosure .icon { font-size: 18px; font-weight: 500; padding: 0 20px; position: absolute; top: 12px; left: 0; height: 100%; } .disclosure .icon-close { font-size: 15px; font-weight: 500; cursor: pointer; } .disclosure .visually-hidden, .disclosure.visually-hidden { position: absolute!important; height: 1px; width: 1px; overflow: hidden; white-space: nowrap; opacity: 0 } @media only screen and (max-width: 700px) { .disclosure .short { display: block; } .disclosure .long { display: none; } .disclosure .btn-hide-mobile { display: none; } } #staticLayout.inapp { height: 100%; overflow: hidden; } .inapp #main, .inapp #main .ui-static-container { height: auto; } .inapp .background { height: 100%; } .inapp #main .ui-static-container { height: 100%; } .inapp #main .ui-static-message-wrapper { padding-top: 50%; margin: 0; } .inapp #main .ui-static-message { margin-top: 0; margin-bottom: 0; } @media (orientation: landscape) and (max-device-height: 800px) { .inapp #main { position: absolute; width: 100%; height: 100%; top: 0; } .inapp #main .ui-static-message-wrapper { padding: 0; } .inapp #main, .inapp #main .ui-static-container { min-height: unset; } }</style><script> (function() { window.netflix = window.netflix || {}; window.netflix.nonmemberStaticFramework = window.netflix.nonmemberStaticFramework || {}; window.netflix.nonmemberStaticFramework.data = window.netflix.nonmemberStaticFramework.data || {}; window.netflix.nonmemberStaticFramework.getData = function (key) { return window.netflix.nonmemberStaticFramework.data[key]; }; })(); </script><script>(function() { window.netflix.nonmemberStaticFramework.data['isAuthenticated'] = false; window.netflix.nonmemberStaticFramework.data['actionLabel'] = "Sign In"; window.netflix.nonmemberStaticFramework.data['models'] = false; window.netflix.nonmemberStaticFramework.data['recaptcha'] = undefined; window.netflix.nonmemberStaticFramework.data['fields'] = {}; window.netflix.nonmemberStaticFramework.data['disclosure'] = {"name":"hasSeenCookieDisclosure","maxAge":7776000,"dsca":"dsca"}; window.netflix.nonmemberStaticFramework.data['truths'] = {"require_additional_cookie_consent":false}; window.netflix.nonmemberStaticFramework.data['isInApp'] = false; })();</script></head><body><div><div id="staticLayout" class="home" data-uia="static-layout"><div id="mainBackground" class="background"><div id="header" data-uia="static-header"><span class="nfLogo" data-uia="static-logo"><a href="/cu-en/" title="Netflix Home Page"><img src="https://assets.nflxext.com/ffe/siteui/acquisition/home/nflxlogo.png" alt="Netflix Logo"/></a></span><div id="header-lang-and-links"><form method="GET" class="lang-selection-container" id="lang-switcher"><div class="languageSelector selectArrow nfSelectWrapper globe" data-uia="static-header-language-selector+container"><label class="nfLabel" for="lang-switcher-select">Select Language</label><div class="nfSelectPlacement"><div class="prefixIcon"></div><div class="selectorContainer"><select data-uia="static-header-language-selector" class="nfSelect" id="lang-switcher-select" name="selectLocale" tabindex="0"><option lang="es" data-language="es" data-country="CU" value="es-CU">Español</option><option lang="en" data-language="en" data-country="CU" value="en-CU" selected="">English</option></select></div><div class="suffixIcon"></div></div></div><noscript class="nSubmitButton"><input class="btn-red btn-small langSelectionSubmit" type="submit" value="Submit"/></noscript></form></div></div><div id="main"><div id="maintenance" class="ui-static-container" data-uia="maintenance-ui-static-container"><div class="ui-static-message-wrapper"><div class="ui-static-message"><h2 data-uia="static-headline">Please make some updates</h2><p data-uia="static-msg">To access all features, please update your browser, operating system, or device. You can learn more about updates <a href="https://help.netflix.com/node/133344">here</a>, or sign in below.</p><a id="support-maintenance-login-cta--button" data-uia="support-maintenance-login-cta" class="btn btn-red btn-medium" href="/login" target="_top"><span>Sign In</span></a></div></div></div></div></div><div id="footer"><div class="site-footer-wrapper centered" data-uia="static-footer"><div class="footer-divider"></div><div class="site-footer"><p class="footer-top" data-uia="static-contact-us">Questions? Call <a class="footer-top-a" href="tel: 1 (408) 469-4467 (USA)"> 1 (408) 469-4467 (USA)</a></p><ul class="footer-links structural" data-uia="static-footer-link-container"><li class="footer-link-item" id="footer_responsive_link_faq_item" placeholder="footer_responsive_link_faq_item"><a class="footer-link" data-uia="footer-link" href="https://help.netflix.com/support/412" placeholder="footer_responsive_link_faq" id="footer_responsive_link_faq"><span data-uia="data-uia-footer-label">FAQ</span></a></li><li class="footer-link-item" id="footer_responsive_link_giftTerms_item" placeholder="footer_responsive_link_giftTerms_item"><a class="footer-link" data-uia="footer-link" href="https://www.netflix.com/giftterms" placeholder="footer_responsive_link_giftTerms" id="footer_responsive_link_giftTerms"><span data-uia="data-uia-footer-label">Gift Card Terms</span></a></li><li class="footer-link-item" id="footer_responsive_link_help_item" placeholder="footer_responsive_link_help_item"><a class="footer-link" data-uia="footer-link" href="https://help.netflix.com" placeholder="footer_responsive_link_help" id="footer_responsive_link_help"><span data-uia="data-uia-footer-label">Help Center</span></a></li><li class="footer-link-item" id="footer_responsive_link_relations_item" placeholder="footer_responsive_link_relations_item"><a class="footer-link" data-uia="footer-link" href="http://ir.netflix.com/" placeholder="footer_responsive_link_relations" id="footer_responsive_link_relations"><span data-uia="data-uia-footer-label">Investor Relations</span></a></li><li class="footer-link-item" id="footer_responsive_link_terms_item" placeholder="footer_responsive_link_terms_item"><a class="footer-link" data-uia="footer-link" href="https://help.netflix.com/legal/termsofuse" placeholder="footer_responsive_link_terms" id="footer_responsive_link_terms"><span data-uia="data-uia-footer-label">Terms of Use</span></a></li><li class="footer-link-item" id="footer_responsive_link_privacy_separate_link_item" placeholder="footer_responsive_link_privacy_separate_link_item"><a class="footer-link" data-uia="footer-link" href="https://help.netflix.com/legal/privacy" placeholder="footer_responsive_link_privacy_separate_link" id="footer_responsive_link_privacy_separate_link"><span data-uia="data-uia-footer-label">Privacy</span></a></li><li class="footer-link-item" id="footer_responsive_link_cookies_separate_link_item" placeholder="footer_responsive_link_cookies_separate_link_item"><a class="footer-link" data-uia="footer-link" href="#" placeholder="footer_responsive_link_cookies_separate_link" id="footer_responsive_link_cookies_separate_link"><span data-uia="data-uia-footer-label">Cookie Preferences</span></a></li><li class="footer-link-item" id="footer_responsive_link_corporate_information_item" placeholder="footer_responsive_link_corporate_information_item"><a class="footer-link" data-uia="footer-link" href="https://help.netflix.com/legal/corpinfo" placeholder="footer_responsive_link_corporate_information" id="footer_responsive_link_corporate_information"><span data-uia="data-uia-footer-label">Corporate Information</span></a></li></ul><form method="GET" class="lang-selection-container" id="lang-switcher"><div class="languageSelector selectArrow nfSelectWrapper inFooter globe" data-uia="static-footer-language-selector+container"><label class="nfLabel" for="lang-switcher-select">Select Language</label><div class="nfSelectPlacement"><div class="prefixIcon"></div><div class="selectorContainer"><select data-uia="static-footer-language-selector" class="nfSelect" id="lang-switcher-select" name="selectLocale" tabindex="0"><option lang="es" data-language="es" data-country="CU" value="es-CU">Español</option><option lang="en" data-language="en" data-country="CU" value="en-CU" selected="">English</option></select></div><div class="suffixIcon"></div></div></div><noscript class="nSubmitButton"><input class="btn-red btn-small langSelectionSubmit" type="submit" value="Submit"/></noscript></form></div></div></div></div></div> <script type="text/javascript">(function () { window.netflix.nonmemberStaticFramework.addOnloadEvent = function (event) { if (typeof window.onload === 'function') { var oldOnload = window.onload; window.onload = function () { oldOnload(); event(); }; } else { window.onload = event; } }; window.netflix.nonmemberStaticFramework.addErrorHandler = function (event) { if (typeof window.onerror === 'function') { var oldOnError = window.onerror; window.onerror = function (message, source, lineno, colno, error) { oldOnError.apply(null, arguments); event.apply(null, arguments); }; } else { window.onerror = event; } }; window.netflix.nonmemberStaticFramework.addEvent = function ( obj, type, fn ) { if (obj.addEventListener) { obj.addEventListener(type, fn, false); } else if (obj.attachEvent) { obj['e' + type + fn] = fn; obj[type + fn] = function () { obj['e' + type + fn](window.event); }; obj.attachEvent('on' + type, obj[type + fn]); } else { obj['on' + type] = obj['e' + type + fn]; } }; })(); (function () { var framework = window.netflix.nonmemberStaticFramework; function stubAppbridge(appbridgeName, knownMethods) { var appbridge = window[appbridgeName] || {}; appbridge._injected = function () { return !!window[appbridgeName]; }; for (var i = 0; i < knownMethods.length; i++) { var method = knownMethods[i]; var stubbedMethod = '_' + method; if (typeof appbridge[method] !== 'function') { appbridge[method] = function () { /* Goes nowhere, does nothing */ }; } else { appbridge[stubbedMethod] = appbridge[method]; appbridge[method] = function () { try { return appbridge[stubbedMethod].apply( this, Array.prototype.slice.call(arguments) ); } catch (error) { /* Failed to successfully call app bridge */ } }; } } return appbridge; } var nfandroid = stubAppbridge('nfandroid', [ 'notifyReady', 'showSignOut', 'showSignIn', 'toSignIn', 'launchUrl', ]); var argo = stubAppbridge('argo', [ 'notifyOnReady', 'updateNavigationBar', 'toSignIn', 'launchMobileSafari', ]); framework.appbridge = { client: function () { if (nfandroid._injected()) { return 'android'; } else if (argo._injected()) { return 'ios'; } return 'web'; }, notifyPageLoaded: function () { nfandroid.notifyReady(); argo.notifyOnReady(); }, notifyAuthenticationStatus: function (isAuthenticated, actionLabel) { isAuthenticated ? nfandroid.showSignOut() : nfandroid.showSignIn(); argo.updateNavigationBar({ rightBarButtonTitle: actionLabel, rightBarButtonAction: isAuthenticated ? 'signout' : 'signin', }); }, requestNativeLogin: function () { nfandroid.toSignIn(); argo.toSignIn(); }, requestBrowserTab: function (url) { nfandroid.launchUrl(url); argo.launchMobileSafari(url); }, }; if (framework.addOnloadEvent) { framework.addOnloadEvent(function () { framework.appbridge.notifyAuthenticationStatus( framework.getData('isAuthenticated'), framework.getData('actionLabel') ); framework.appbridge.notifyPageLoaded(); }); } })(); (function () { var selectors = document.getElementsByTagName('select'); for (var i = 0; i < selectors.length; i++) { var dropdown = selectors[i]; if ( dropdown.id === 'lang-switcher-select' || dropdown.className === 'nfSelect' || (dropdown.dataset && dropdown.dataset.uia === 'language-picker') ) { languageSelectors(dropdown); } } function languageSelectors(dropdown) { dropdown.onchange = function () { var locale = this.value; if (locale && this.form) { this.form.submit(); } }; } })(); (function () { var framework = window.netflix.nonmemberStaticFramework; var loginButton = document.getElementById( 'support-maintenance-login-cta--button' ); if (loginButton && framework.appbridge.client() !== 'web') { framework.addEvent(loginButton, 'click', function (e) { e.preventDefault(); framework.appbridge.requestNativeLogin(); }); } })(); (function () { var delay = 250; // delay between calls var resizeTimeout = false; var mainElement = document.getElementById('staticLayout'); var mainBackground = document.getElementById('mainBackground'); var mainDisclosure = document.getElementById('disclosures'); // Footer Click Events window.netflix.nonmemberStaticFramework.addOnloadEvent( disclosureClickEvents ); // Add padding for a sleek look if (mainDisclosure) { window.netflix.nonmemberStaticFramework.addOnloadEvent( adjustPagePadding ); window.onresize = adjustPaddingOnResize; } function disclosureClickEvents() { // Attach the appropriate event for the cookie disclosure in footer document.getElementById( 'footer_responsive_link_cookies_separate_link' ).onclick = cookiePreferencesPanel; if (mainDisclosure) { var disclosureButtons = mainDisclosure.getElementsByTagName('button'); var disclosureLinks = mainDisclosure.getElementsByTagName('a'); // Loop through the buttons and attach the appropriate event for (var i = 0; i < disclosureButtons.length; i++) { var button = disclosureButtons[i]; // Opens the Cookie Preferences Panel if ( elementHasClass( button, 'cookie-disclosure-button-preferences' ) ) { button.onclick = cookiePreferencesPanel; } if ( elementHasClass(button, 'cookie-disclosure-button-accept') ) { button.onclick = acceptCookies; } if ( elementHasClass(button, 'cookie-disclosure-button-reject') ) { button.onclick = rejectCookies; } if (elementHasClass(button, 'cookie-disclosure-close-button')) { button.onclick = closeBanner; } } // Loop through the links and attach the appropriate event for (var i = 0; i < disclosureLinks.length; i++) { var links = disclosureLinks[i]; if (elementHasClass(links, 'cookie-disclosure-link')) { links.onclick = cookiePreferencesPanel; } } } } function acceptCookies() { allowAllCookies(); closeBanner(); } function rejectCookies() { // LEGAL NOTE: As recently as June 2021, cookies are rejected by // default, so this button should simply close the // banner. See WEBUI-17127 for more information. closeBanner(); } function closeBanner() { //there could be a race condition when the page navigates before the API call can finish, //which would mean the next page would have a cookie banner. //let's drop a cookie here so that future pages don't render the banner. var disclosure = window.netflix.nonmemberStaticFramework.getData('disclosure'); var COOKIE_NAME = disclosure.name; var maxAge = disclosure.maxAge; var dsca = disclosure.dsca; setCookies(COOKIE_NAME, true, { maxAge: maxAge, }); // override for the /acceptcookies endpoint setCookies(dsca, 'anonymous', { maxAge: maxAge, }); // Hide the banner hideBanner(); } /** Hides the banner and resets the banner padding */ function hideBanner() { var classToRemove = 'showCookieDisclosure'; var mainEventClasses = mainElement.getAttribute('class'); if (elementHasClass(mainElement, classToRemove)) { var newMainEventClass = mainEventClasses.replace(classToRemove, ''); mainElement.setAttribute('class', newMainEventClass); } mainBackground.style.paddingTop = '0px'; } /** * RegExp to match field-content in RFC 7230 sec 3.2 * * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] * field-vchar = VCHAR / obs-text * obs-text = %x80-FF */ var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/; /** * Set the cookie value with the given options. If no options are provided, * this will create a session cookie. The domain defaults to `TOP_DOMAIN` and * the path defaults to `ROOT_PATH`. */ function setCookies(name, value, options) { var cookieOptions = { domain: '.netflix.com', path: '/', }; for (var option in options) { cookieOptions[option] = options[option]; } document.cookie = serialize(name, value, cookieOptions); } function serialize(name, val, options) { var encode = encodeURIComponent; var opt = options || {}; var value = encode(val); var str = name + '=' + value; if (null != opt.maxAge) { var maxAge = opt.maxAge - 0; if (isNaN(maxAge) || !isFinite(maxAge)) { throw new Error('option maxAge is invalid'); } str += '; Max-Age=' + Math.floor(maxAge); } if (opt.domain) { if (!fieldContentRegExp.test(opt.domain)) { throw new Error('option domain is invalid'); } str += '; Domain=' + opt.domain; } if (opt.path) { if (!fieldContentRegExp.test(opt.path)) { throw new Error('option path is invalid'); } str += '; Path=' + opt.path; } return str; } function allowAllCookies() { if (window.Optanon) { Optanon.AllowAll(); } } function cookiePreferencesPanel(e) { // ie8 fix e = e || window.event; e.preventDefault ? e.preventDefault() : (e.returnValue = false); var SAVE_PREFERENCES_BTN = '#onetrust-consent-sdk .save-preference-btn-handler'; var COOKIE_DISCLOSURE_CLOSE_BTN = '#cookie-disclosure .close-button'; if (window.Optanon) { var savePreferencesButton = document.querySelector(SAVE_PREFERENCES_BTN); if (savePreferencesButton) { savePreferencesButton.onclick = function (evt) { var cookieBannerCloseButton = document.querySelector( COOKIE_DISCLOSURE_CLOSE_BTN ); if ( cookieBannerCloseButton && typeof cookieBannerCloseButton.click === 'function' ) { // Only run once evt.target.onclick = function () { return false; }; cookieBannerCloseButton.click(); } }; } Optanon.ToggleInfoDisplay(); return false; } } function adjustPagePadding() { if (mainDisclosure) { var disclosureHeight = mainDisclosure.offsetHeight; mainBackground.style.paddingTop = disclosureHeight + 'px'; } } function adjustPaddingOnResize() { // clear the timeout clearTimeout(resizeTimeout); // start timing for event "completion" resizeTimeout = setTimeout(adjustPagePadding, delay); } function elementHasClass(element, className) { var elementClass = element.getAttribute('class') || ''; return elementClass.indexOf(className) !== -1; } })(); (function () { var framework = window.netflix.nonmemberStaticFramework; var nfandroid = window && window.nfandroid; var argo = window && window.argo; var inApp = framework.getData('isInApp'); var links = document.getElementsByTagName('a'); // this allows us to do the followsing // 1. add headless to the querystring when linking to external pages // 2. allows links to be opened in the browser instead of in the webview if (inApp && (nfandroid || argo)) { for (var i = 0; i < links.length; i++) { framework.addEvent(links[i], 'click', function (e) { // Disables and redirect logic if specifically declared var headlessAttr = this.getAttribute('data-headless'); if (!headlessAttr) { return; } e.preventDefault(); // Get the default url var href = this.getAttribute('href'); // Add in the inapp headless param var url = new URL(href); var params = url.searchParams; params.set('headless', true); // Add to make links ACO compliant if (nfandroid) { params.set('netflixsource', 'android'); } else if (argo) { params.set('netflixsource', 'iosapp'); } url.search = params.toString(); var newUrl = url.toString(); // Open in the browser instead of the webview if (framework.appbridge) { framework.appbridge.requestBrowserTab(newUrl); } else { window.open(newUrl, '_blank'); } }); } } })(); </script></body></html>
URL
GET https://www.netflix.com/
Response Headers
Accept-Ch:Sec-CH-UA-Platform-Version,Sec-CH-UA-ModelCache-Control:no-cache, no-storeContent-Security-Policy-Report-Only:default-src https: wss: 'unsafe-inline' 'unsafe-eval'; font-src https: data: ; img-src https: data: blob: ; media-src https: blob: ; worker-src https: blob: ; report-uri https://www.netflix.com/log/www/csp/1;Date:Fri, 17 Jan 2025 14:44:38 GMTEdge-Control:no-cache, no-storeLocation:https://www.netflix.com/cu-en/Server:envoySet-Cookie:flwssn=0a6557fc-0736-4ca8-ba90-d27184d12cbf; Max-Age=10800; Domain=.netflix.com; Path=/Strict-Transport-Security:max-age=31536000; includeSubDomainsVia:2 i-084076dfa3e6b067f (us-east-2)X-B3-Traceid:678a6cd6798c62d3e9e993f5b2bec764X-Content-Type-Options:nosniffX-Envoy-Decorator-Operation:lo_svcX-Envoy-Upstream-Service-Time:214X-Frame-Options:DENYX-Netflix.nfstatus:1_1X-Netflix.proxy.execution-Time:225X-Originating-Url:http://www.netflix.com/X-Request-Id:4b646455-6bbe-4f09-ba4c-c841d01107a7X-Xss-Protection:1; mode=block; report=https://www.netflix.com/ichnaea/log/freeform/xssreport
Response Body
Empty body
Resolver
Resolver ASN
AS15169
Resolver IP
74.125.78.149
Resolver Network Name
Google LLC
Report ID
20250117T143817Z_webconnectivity_CU_27725_n1_1HQGWbinTzaVq9F1
Platform
android
Software Name
ooniprobe-android-unattended (3.8.2)
Measurement Engine
ooniprobe-engine (3.17.2)