{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_string-html.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/core-js/modules/_object-sap.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_typed-array.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_meta.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_validate-collection.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_object-gops.js","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_flags.js","webpack:///./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///./node_modules/core-js/modules/_fix-re-wks.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/core-js/modules/_collection.js","webpack:///./node_modules/core-js/modules/_typed.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_wks-ext.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_html.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/core-js/modules/_string-ws.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/core-js/modules/_string-repeat.js","webpack:///./node_modules/core-js/modules/_math-sign.js","webpack:///./node_modules/core-js/modules/_math-expm1.js","webpack:///./node_modules/core-js/modules/_string-at.js","webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/core-js/modules/_is-regexp.js","webpack:///./node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_create-property.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/modules/_array-fill.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/modules/_regexp-exec.js","webpack:///./node_modules/core-js/modules/_advance-string-index.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./node_modules/core-js/modules/_typed-buffer.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/modules/_wks-define.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_object-gopn-ext.js","webpack:///./node_modules/core-js/modules/_object-assign.js","webpack:///./node_modules/core-js/modules/_same-value.js","webpack:///./node_modules/core-js/modules/_bind.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/core-js/modules/_parse-int.js","webpack:///./node_modules/core-js/modules/_parse-float.js","webpack:///./node_modules/core-js/modules/_a-number-value.js","webpack:///./node_modules/core-js/modules/_is-integer.js","webpack:///./node_modules/core-js/modules/_math-log1p.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/core-js/modules/_array-reduce.js","webpack:///./node_modules/core-js/modules/_array-copy-within.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/core-js/modules/es6.regexp.exec.js","webpack:///./node_modules/core-js/modules/es6.regexp.flags.js","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/core-js/modules/_collection-strong.js","webpack:///./node_modules/core-js/modules/_collection-weak.js","webpack:///./node_modules/core-js/modules/_to-index.js","webpack:///./node_modules/core-js/modules/_own-keys.js","webpack:///./node_modules/core-js/modules/_string-pad.js","webpack:///./node_modules/core-js/modules/_object-to-array.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/bam-browser-sdk/dist/browser_browser_es5/bam-browser-sdk.debug.js-exposed","webpack:///./node_modules/bam-browser-sdk-sdkSession-util/dist/browser_browser_es5/bam-browser-sdk-sdkSession-util.js-exposed","webpack:///./scripts/entry.js","webpack:///./node_modules/@babel/polyfill/lib/index.js","webpack:///./node_modules/@babel/polyfill/lib/noConflict.js","webpack:///./node_modules/core-js/es6/index.js","webpack:///./node_modules/core-js/modules/es6.symbol.js","webpack:///./node_modules/core-js/modules/_function-to-string.js","webpack:///./node_modules/core-js/modules/_enum-keys.js","webpack:///./node_modules/core-js/modules/es6.object.create.js","webpack:///./node_modules/core-js/modules/es6.object.define-property.js","webpack:///./node_modules/core-js/modules/es6.object.define-properties.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.object.keys.js","webpack:///./node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack:///./node_modules/core-js/modules/es6.object.freeze.js","webpack:///./node_modules/core-js/modules/es6.object.seal.js","webpack:///./node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack:///./node_modules/core-js/modules/es6.object.is-frozen.js","webpack:///./node_modules/core-js/modules/es6.object.is-sealed.js","webpack:///./node_modules/core-js/modules/es6.object.is-extensible.js","webpack:///./node_modules/core-js/modules/es6.object.assign.js","webpack:///./node_modules/core-js/modules/es6.object.is.js","webpack:///./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.object.to-string.js","webpack:///./node_modules/core-js/modules/es6.function.bind.js","webpack:///./node_modules/core-js/modules/es6.function.name.js","webpack:///./node_modules/core-js/modules/es6.function.has-instance.js","webpack:///./node_modules/core-js/modules/es6.parse-int.js","webpack:///./node_modules/core-js/modules/es6.parse-float.js","webpack:///./node_modules/core-js/modules/es6.number.constructor.js","webpack:///./node_modules/core-js/modules/es6.number.to-fixed.js","webpack:///./node_modules/core-js/modules/es6.number.to-precision.js","webpack:///./node_modules/core-js/modules/es6.number.epsilon.js","webpack:///./node_modules/core-js/modules/es6.number.is-finite.js","webpack:///./node_modules/core-js/modules/es6.number.is-integer.js","webpack:///./node_modules/core-js/modules/es6.number.is-nan.js","webpack:///./node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack:///./node_modules/core-js/modules/es6.number.parse-float.js","webpack:///./node_modules/core-js/modules/es6.number.parse-int.js","webpack:///./node_modules/core-js/modules/es6.math.acosh.js","webpack:///./node_modules/core-js/modules/es6.math.asinh.js","webpack:///./node_modules/core-js/modules/es6.math.atanh.js","webpack:///./node_modules/core-js/modules/es6.math.cbrt.js","webpack:///./node_modules/core-js/modules/es6.math.clz32.js","webpack:///./node_modules/core-js/modules/es6.math.cosh.js","webpack:///./node_modules/core-js/modules/es6.math.expm1.js","webpack:///./node_modules/core-js/modules/es6.math.fround.js","webpack:///./node_modules/core-js/modules/_math-fround.js","webpack:///./node_modules/core-js/modules/es6.math.hypot.js","webpack:///./node_modules/core-js/modules/es6.math.imul.js","webpack:///./node_modules/core-js/modules/es6.math.log10.js","webpack:///./node_modules/core-js/modules/es6.math.log1p.js","webpack:///./node_modules/core-js/modules/es6.math.log2.js","webpack:///./node_modules/core-js/modules/es6.math.sign.js","webpack:///./node_modules/core-js/modules/es6.math.sinh.js","webpack:///./node_modules/core-js/modules/es6.math.tanh.js","webpack:///./node_modules/core-js/modules/es6.math.trunc.js","webpack:///./node_modules/core-js/modules/es6.string.from-code-point.js","webpack:///./node_modules/core-js/modules/es6.string.raw.js","webpack:///./node_modules/core-js/modules/es6.string.trim.js","webpack:///./node_modules/core-js/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/modules/es6.string.code-point-at.js","webpack:///./node_modules/core-js/modules/es6.string.ends-with.js","webpack:///./node_modules/core-js/modules/es6.string.includes.js","webpack:///./node_modules/core-js/modules/es6.string.repeat.js","webpack:///./node_modules/core-js/modules/es6.string.starts-with.js","webpack:///./node_modules/core-js/modules/es6.string.anchor.js","webpack:///./node_modules/core-js/modules/es6.string.big.js","webpack:///./node_modules/core-js/modules/es6.string.blink.js","webpack:///./node_modules/core-js/modules/es6.string.bold.js","webpack:///./node_modules/core-js/modules/es6.string.fixed.js","webpack:///./node_modules/core-js/modules/es6.string.fontcolor.js","webpack:///./node_modules/core-js/modules/es6.string.fontsize.js","webpack:///./node_modules/core-js/modules/es6.string.italics.js","webpack:///./node_modules/core-js/modules/es6.string.link.js","webpack:///./node_modules/core-js/modules/es6.string.small.js","webpack:///./node_modules/core-js/modules/es6.string.strike.js","webpack:///./node_modules/core-js/modules/es6.string.sub.js","webpack:///./node_modules/core-js/modules/es6.string.sup.js","webpack:///./node_modules/core-js/modules/es6.date.now.js","webpack:///./node_modules/core-js/modules/es6.date.to-json.js","webpack:///./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack:///./node_modules/core-js/modules/_date-to-iso-string.js","webpack:///./node_modules/core-js/modules/es6.date.to-string.js","webpack:///./node_modules/core-js/modules/es6.date.to-primitive.js","webpack:///./node_modules/core-js/modules/_date-to-primitive.js","webpack:///./node_modules/core-js/modules/es6.array.is-array.js","webpack:///./node_modules/core-js/modules/es6.array.from.js","webpack:///./node_modules/core-js/modules/es6.array.of.js","webpack:///./node_modules/core-js/modules/es6.array.join.js","webpack:///./node_modules/core-js/modules/es6.array.slice.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/core-js/modules/es6.array.for-each.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/core-js/modules/es6.array.map.js","webpack:///./node_modules/core-js/modules/es6.array.filter.js","webpack:///./node_modules/core-js/modules/es6.array.some.js","webpack:///./node_modules/core-js/modules/es6.array.every.js","webpack:///./node_modules/core-js/modules/es6.array.reduce.js","webpack:///./node_modules/core-js/modules/es6.array.reduce-right.js","webpack:///./node_modules/core-js/modules/es6.array.index-of.js","webpack:///./node_modules/core-js/modules/es6.array.last-index-of.js","webpack:///./node_modules/core-js/modules/es6.array.copy-within.js","webpack:///./node_modules/core-js/modules/es6.array.fill.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./node_modules/core-js/modules/es6.array.species.js","webpack:///./node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///./node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es6.regexp.match.js","webpack:///./node_modules/core-js/modules/es6.regexp.replace.js","webpack:///./node_modules/core-js/modules/es6.regexp.search.js","webpack:///./node_modules/core-js/modules/es6.regexp.split.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/es6.map.js","webpack:///./node_modules/core-js/modules/es6.set.js","webpack:///./node_modules/core-js/modules/es6.weak-map.js","webpack:///./node_modules/core-js/modules/es6.weak-set.js","webpack:///./node_modules/core-js/modules/es6.typed.array-buffer.js","webpack:///./node_modules/core-js/modules/es6.typed.data-view.js","webpack:///./node_modules/core-js/modules/es6.typed.int8-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack:///./node_modules/core-js/modules/es6.typed.int32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.float32-array.js","webpack:///./node_modules/core-js/modules/es6.typed.float64-array.js","webpack:///./node_modules/core-js/modules/es6.reflect.apply.js","webpack:///./node_modules/core-js/modules/es6.reflect.construct.js","webpack:///./node_modules/core-js/modules/es6.reflect.define-property.js","webpack:///./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack:///./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack:///./node_modules/core-js/modules/es6.reflect.get.js","webpack:///./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack:///./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es6.reflect.has.js","webpack:///./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack:///./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack:///./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack:///./node_modules/core-js/modules/es6.reflect.set.js","webpack:///./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack:///./node_modules/core-js/fn/array/includes.js","webpack:///./node_modules/core-js/modules/es7.array.includes.js","webpack:///./node_modules/core-js/fn/array/flat-map.js","webpack:///./node_modules/core-js/modules/es7.array.flat-map.js","webpack:///./node_modules/core-js/modules/_flatten-into-array.js","webpack:///./node_modules/core-js/fn/string/pad-start.js","webpack:///./node_modules/core-js/modules/es7.string.pad-start.js","webpack:///./node_modules/core-js/fn/string/pad-end.js","webpack:///./node_modules/core-js/modules/es7.string.pad-end.js","webpack:///./node_modules/core-js/fn/string/trim-start.js","webpack:///./node_modules/core-js/modules/es7.string.trim-left.js","webpack:///./node_modules/core-js/fn/string/trim-end.js","webpack:///./node_modules/core-js/modules/es7.string.trim-right.js","webpack:///./node_modules/core-js/fn/symbol/async-iterator.js","webpack:///./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack:///./node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack:///./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///./node_modules/core-js/fn/object/values.js","webpack:///./node_modules/core-js/modules/es7.object.values.js","webpack:///./node_modules/core-js/fn/object/entries.js","webpack:///./node_modules/core-js/modules/es7.object.entries.js","webpack:///./node_modules/core-js/fn/promise/finally.js","webpack:///./node_modules/core-js/modules/es7.promise.finally.js","webpack:///./node_modules/core-js/web/index.js","webpack:///./node_modules/core-js/modules/web.timers.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/core-js/library/fn/global.js","webpack:///./node_modules/core-js/library/modules/es7.global.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/focus-visible/dist/focus-visible.js","webpack:///webpack:///webpack/universalModuleDefinition","webpack:///webpack:/webpack/bootstrap bfb4f3fb110271d8b395","webpack:///webpack:///node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///webpack:///node_modules/check-types/src/check-types.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/createClass.js","webpack:///webpack:///src/services/entry.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/inherits.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/promise.js","webpack:///webpack:///src/logging/entry.js","webpack:///webpack:///src/services/exception/entry.js","webpack:///webpack:///src/services/exception/invalidArgumentException.js","webpack:///webpack:///node_modules/keymirror/index.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/object/assign.js","webpack:///webpack:///src/token/entry.js","webpack:///webpack:///src/services/util/entry.js","webpack:///webpack:///node_modules/core-js/library/modules/_core.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/json/stringify.js","webpack:///webpack:///node_modules/@babel/runtime/regenerator/index.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///webpack:///src/services/token/entry.js","webpack:///webpack:///src/services/configuration/entry.js","webpack:///webpack:///src/services/configuration/serviceClientConfiguration.js","webpack:///webpack:///src/services/platforms/httpClient.js","webpack:///webpack:///src/services/internal/dust/dustUrnReference.js","webpack:///webpack:///src/services/configuration/serviceConfiguration.js","webpack:///webpack:///src/services/internal/dust/dustLogUtility.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/object/keys.js","webpack:///webpack:///src/drm/entry.js","webpack:///webpack:///src/media/playerAdapter.js","webpack:///webpack:///node_modules/core-js/library/modules/_global.js","webpack:///webpack:///node_modules/core-js/library/modules/_wks.js","webpack:///webpack:///src/media/playlist.js","webpack:///webpack:///src/media/playbackEventListener.js","webpack:///webpack:///node_modules/core-js/library/modules/_export.js","webpack:///webpack:///src/media/playbackMetrics.js","webpack:///webpack:///node_modules/core-js/library/modules/_an-object.js","webpack:///webpack:///src/qualityOfService/entry.js","webpack:///webpack:///node_modules/core-js/library/modules/_descriptors.js","webpack:///webpack:///src/sdk.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-dp.js","webpack:///webpack:///node_modules/core-js/library/modules/_is-object.js","webpack:///webpack:///src/content/contentQuery.js","webpack:///webpack:///node_modules/core-js/library/modules/_has.js","webpack:///webpack:///node_modules/core-js/library/modules/_to-iobject.js","webpack:///webpack:///(webpack)/buildin/global.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/objectSpread.js","webpack:///webpack:///node_modules/core-js/library/modules/_hide.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/get-iterator.js","webpack:///webpack:///src/qualityOfService/serverRequest.js","webpack:///webpack:///node_modules/assert/assert.js","webpack:///webpack:///src/sequences/base.js","webpack:///webpack:///node_modules/core-js/library/modules/_ctx.js","webpack:///webpack:///node_modules/core-js/library/modules/_fails.js","webpack:///webpack:///node_modules/core-js/library/modules/_iterators.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-keys.js","webpack:///webpack:///node_modules/core-js/library/modules/_to-object.js","webpack:///webpack:///src/services/configuration/httpMethod.js","webpack:///webpack:///src/drm/drmManager.js","webpack:///webpack:///src/sequences/assertionErrorMessages.js","webpack:///webpack:///node_modules/core-js/library/modules/_property-desc.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///webpack:///node_modules/core-js/library/modules/_library.js","webpack:///webpack:///node_modules/core-js/library/modules/_cof.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-pie.js","webpack:///webpack:///src/logging/logLevel.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/object/create.js","webpack:///webpack:///src/services/configuration/retryPolicy.js","webpack:///webpack:///src/content/searchOverrides.js","webpack:///webpack:///src/token/geoLocation.js","webpack:///webpack:///src/token/accessContextState.js","webpack:///webpack:///src/content/graphQlQuery.js","webpack:///webpack:///src/media/playbackContext.js","webpack:///webpack:///src/drm/drmProvider.js","webpack:///webpack:///src/media/mediaItem.js","webpack:///webpack:///src/userActivity/userActivityEvent.js","webpack:///webpack:///node_modules/core-js/library/modules/_a-function.js","webpack:///webpack:///src/account/entry.js","webpack:///webpack:///node_modules/core-js/library/modules/_uid.js","webpack:///webpack:///node_modules/core-js/library/modules/_set-to-string-tag.js","webpack:///webpack:///node_modules/core-js/library/modules/web.dom.iterable.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-sap.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/typeof.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-gopd.js","webpack:///webpack:///node_modules/process/browser.js","webpack:///webpack:///src/services/token/grant.js","webpack:///webpack:///node_modules/query-string/index.js","webpack:///webpack:///src/services/commerce/billingAddress.js","webpack:///webpack:///src/services/content/graphQlBuilder.js","webpack:///webpack:///src/services/platforms/shared/coreStorageProvider.js","webpack:///webpack:///src/subscription/entry.js","webpack:///webpack:///node_modules/node-libs-browser/node_modules/events/events.js","webpack:///webpack:///src/commerce/submitOrderWithPaymentMethodRequest.js","webpack:///webpack:///src/content/graphQlPersistedQuery.js","webpack:///webpack:///src/internal/entry.js","webpack:///webpack:///src/media/adEngine/adEngineManager.js","webpack:///webpack:///src/media/mediaManager.js","webpack:///webpack:///src/media/mediaDescriptor.js","webpack:///webpack:///src/media/playbackMetricsProvider.js","webpack:///webpack:///src/purchase/purchaseManager.js","webpack:///webpack:///src/purchase/receipt.js","webpack:///webpack:///node_modules/core-js/library/modules/_dom-create.js","webpack:///webpack:///node_modules/core-js/library/modules/_to-primitive.js","webpack:///webpack:///node_modules/core-js/library/modules/_to-integer.js","webpack:///webpack:///node_modules/core-js/library/modules/_defined.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-create.js","webpack:///webpack:///node_modules/core-js/library/modules/_to-length.js","webpack:///webpack:///node_modules/core-js/library/modules/_shared-key.js","webpack:///webpack:///node_modules/core-js/library/modules/_shared.js","webpack:///webpack:///node_modules/core-js/library/modules/_enum-bug-keys.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-gpo.js","webpack:///webpack:///node_modules/core-js/library/modules/_classof.js","webpack:///webpack:///node_modules/core-js/library/modules/core.get-iterator-method.js","webpack:///webpack:///node_modules/core-js/library/modules/_new-promise-capability.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-gops.js","webpack:///webpack:///src/logging/logSink.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///webpack:///node_modules/core-js/library/modules/_wks-ext.js","webpack:///webpack:///node_modules/core-js/library/modules/_wks-define.js","webpack:///webpack:///src/services/account/userProfile.js","webpack:///webpack:///src/services/exception/errorReason.js","webpack:///webpack:///src/services/exception/serviceException.js","webpack:///webpack:///src/services/token/tokenRequestBuilder.js","webpack:///webpack:///src/services/token/tokenRequest.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/object/values.js","webpack:///webpack:///src/services/platforms/environmentConfiguration.js","webpack:///webpack:///src/services/account/accountClientConfiguration.js","webpack:///webpack:///src/services/media/adEngine/adEngineClientConfiguration.js","webpack:///webpack:///src/services/identity/adobe/adobeIdentityClientConfiguration.js","webpack:///webpack:///src/services/identity/bam/bamIdentityClientConfiguration.js","webpack:///webpack:///src/services/commerce/commerceClientConfiguration.js","webpack:///webpack:///src/services/content/contentClientConfiguration.js","webpack:///webpack:///src/services/customerService/customerServiceClientConfiguration.js","webpack:///webpack:///src/services/device/deviceClientConfiguration.js","webpack:///webpack:///src/services/drm/drmClientConfiguration.js","webpack:///webpack:///src/services/eligibility/eligibilityClientConfiguration.js","webpack:///webpack:///src/services/externalActivation/externalActivationClientConfiguration.js","webpack:///webpack:///src/services/media/mediaClientConfiguration.js","webpack:///webpack:///src/services/paywall/paywallClientConfiguration.js","webpack:///webpack:///src/services/purchase/purchaseClientConfiguration.js","webpack:///webpack:///src/services/session/sessionClientConfiguration.js","webpack:///webpack:///src/services/internal/telemetry/telemetryClientConfiguration.js","webpack:///webpack:///src/services/token/tokenClientConfiguration.js","webpack:///webpack:///src/services/platforms/shared/coreHttpClientProvider.js","webpack:///webpack:///src/services/account/accountGrant.js","webpack:///webpack:///src/services/commerce/orderItem.js","webpack:///webpack:///src/services/commerce/price.js","webpack:///webpack:///src/services/commerce/sku.js","webpack:///webpack:///src/services/commerce/strongCustomerAuthRequirements.js","webpack:///webpack:///src/services/eligibility/partner.js","webpack:///webpack:///src/services/externalActivation/temporaryDefaultAccessActivationStatus.js","webpack:///webpack:///src/services/media/adEngine/adEngineClient.js","webpack:///webpack:///src/services/media/thumbnailSet.js","webpack:///webpack:///src/services/media/presentation.js","webpack:///webpack:///src/services/media/mediaPayloadStream.js","webpack:///webpack:///src/services/media/playbackAttributes.js","webpack:///webpack:///src/services/media/mediaPlayhead.js","webpack:///webpack:///src/services/media/mediaThumbnailLinks.js","webpack:///webpack:///src/services/media/mediaThumbnailLink.js","webpack:///webpack:///node_modules/uuid/uuid.js","webpack:///webpack:///src/services/paywall/campaign.js","webpack:///webpack:///src/services/paywall/introPrice.js","webpack:///webpack:///src/services/paywall/product.js","webpack:///webpack:///src/services/purchase/purchaseActivationStatus.js","webpack:///webpack:///src/services/session/sessionAccountInfo.js","webpack:///webpack:///src/services/session/sessionDeviceInfo.js","webpack:///webpack:///src/services/session/sessionProfileInfo.js","webpack:///webpack:///src/services/session/sessionEntitlement.js","webpack:///webpack:///src/services/session/sessionLocation.js","webpack:///webpack:///src/platforms/geoProvider.js","webpack:///webpack:///src/token/access.js","webpack:///webpack:///src/token/accessStateData.js","webpack:///webpack:///src/token/accessToken.js","webpack:///webpack:///src/device/entry.js","webpack:///webpack:///src/subscription/subscriptionProvider.js","webpack:///webpack:///src/commerce/paymentMethodResponse.js","webpack:///webpack:///src/commerce/priceOrderRequest.js","webpack:///webpack:///src/commerce/priceOrderResponse.js","webpack:///webpack:///src/qualityOfService/bitrateType.js","webpack:///webpack:///src/drm/fairPlayCertificateStorage.js","webpack:///webpack:///src/drm/certificateStorage.js","webpack:///webpack:///src/eligibility/entry.js","webpack:///webpack:///src/externalActivation/entry.js","webpack:///webpack:///src/media/adInsertionStrategy.js","webpack:///webpack:///src/media/audioQuality.js","webpack:///webpack:///src/media/playlistType.js","webpack:///webpack:///src/media/mediaAnalyticsKey.js","webpack:///webpack:///src/media/widevineSecurityLevel.js","webpack:///webpack:///src/media/playbackTelemetryDispatcher.js","webpack:///webpack:///src/media/playbackTelemetryConfiguration.js","webpack:///webpack:///src/media/authCookieProvider.js","webpack:///webpack:///src/purchase/redeemRetryHandler.js","webpack:///webpack:///src/userActivity/eventSchema.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/object/define-property.js","webpack:///webpack:///node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///webpack:///node_modules/core-js/library/modules/_iter-define.js","webpack:///webpack:///node_modules/core-js/library/modules/_redefine.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-keys-internal.js","webpack:///webpack:///node_modules/core-js/library/modules/_iobject.js","webpack:///webpack:///node_modules/core-js/library/modules/_html.js","webpack:///webpack:///node_modules/core-js/library/modules/_iter-call.js","webpack:///webpack:///node_modules/core-js/library/modules/_is-array-iter.js","webpack:///webpack:///node_modules/core-js/library/modules/_species-constructor.js","webpack:///webpack:///node_modules/core-js/library/modules/_task.js","webpack:///webpack:///node_modules/core-js/library/modules/_perform.js","webpack:///webpack:///node_modules/core-js/library/modules/_promise-resolve.js","webpack:///webpack:///node_modules/core-js/library/modules/_iter-detect.js","webpack:///webpack:///src/logging/logEvent.js","webpack:///webpack:///src/logging/sinks/consoleSink.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/symbol/iterator.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/symbol.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.symbol.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-gopn-ext.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-gopn.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/object/set-prototype-of.js","webpack:///webpack:///node_modules/ansi-regex/index.js","webpack:///webpack:///src/logging/consoleSinkConfiguration.js","webpack:///webpack:///src/logging/loggingClientConfiguration.js","webpack:///webpack:///src/services/account/account.js","webpack:///webpack:///src/services/account/identity.js","webpack:///webpack:///src/services/exception/exceptionReference.js","webpack:///webpack:///src/services/token/accessContext.js","webpack:///webpack:///src/services/token/refreshGrant.js","webpack:///webpack:///src/services/token/securityAction.js","webpack:///webpack:///node_modules/object-assign/index.js","webpack:///webpack:///src/services/configuration/accountManagerConfiguration.js","webpack:///webpack:///src/services/configuration/adEngineManagerConfiguration.js","webpack:///webpack:///src/services/configuration/adobeIdentityManagerConfiguration.js","webpack:///webpack:///src/services/configuration/bamIdentityManagerConfiguration.js","webpack:///webpack:///src/services/configuration/bamIdentityManagerExtrasMap.js","webpack:///webpack:///src/services/configuration/bootstrapConfiguration.js","webpack:///webpack:///src/services/configuration/configurationHostName.js","webpack:///webpack:///src/services/configuration/platform.js","webpack:///webpack:///src/services/configuration/commerceManagerConfiguration.js","webpack:///webpack:///src/services/configuration/commerceManagerExtrasMap.js","webpack:///webpack:///src/services/internal/dust/dustCategory.js","webpack:///webpack:///src/services/configuration/configurationClientConfiguration.js","webpack:///webpack:///src/services/configuration/configurationClientExtrasMap.js","webpack:///webpack:///src/services/configuration/sdkSessionConfiguration.js","webpack:///webpack:///src/services/configuration/serviceDefinitionsConfiguration.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/object/get-own-property-descriptor.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///webpack:///src/services/commerce/commerceClientExtrasMap.js","webpack:///webpack:///src/services/configuration/contentManagerConfiguration.js","webpack:///webpack:///src/services/configuration/customerServiceManagerConfiguration.js","webpack:///webpack:///src/services/configuration/deviceManagerConfiguration.js","webpack:///webpack:///src/services/configuration/drmManagerConfiguration.js","webpack:///webpack:///src/services/configuration/eligibilityManagerConfiguration.js","webpack:///webpack:///src/services/configuration/externalActivationManagerConfiguration.js","webpack:///webpack:///src/services/configuration/mediaManagerConfiguration.js","webpack:///webpack:///src/services/configuration/mediaManagerExtrasMap.js","webpack:///webpack:///src/services/configuration/paywallManagerConfiguration.js","webpack:///webpack:///src/services/configuration/purchaseManagerConfiguration.js","webpack:///webpack:///src/services/configuration/purchaseManagerExtrasMap.js","webpack:///webpack:///src/services/configuration/sessionManagerConfiguration.js","webpack:///webpack:///src/services/subscription/subscriptionClientConfiguration.js","webpack:///webpack:///src/services/configuration/subscriptionManagerConfiguration.js","webpack:///webpack:///src/services/configuration/telemetryManagerConfiguration.js","webpack:///webpack:///src/services/configuration/telemetryManagerExtrasMap.js","webpack:///webpack:///src/services/token/tokenClientExtrasMap.js","webpack:///webpack:///src/services/configuration/tokenManagerConfiguration.js","webpack:///webpack:///src/services/configuration/tokenManagerExtrasMap.js","webpack:///webpack:///src/services/configuration/serviceEndpoint.js","webpack:///webpack:///src/services/configuration/loggerConfiguration.js","webpack:///webpack:///src/services/token/tokenClientEndpoint.js","webpack:///webpack:///src/services/account/accountClientEndpoint.js","webpack:///webpack:///src/services/account/createAccountResult.js","webpack:///webpack:///src/services/account/deleteUserProfileResult.js","webpack:///webpack:///src/services/account/updateUserProfileResult.js","webpack:///webpack:///src/services/commerce/commerceClientEndpoint.js","webpack:///webpack:///src/services/commerce/createPaymentMethodRequest.js","webpack:///webpack:///src/services/commerce/createPaymentMethodPassthroughData.js","webpack:///webpack:///src/services/commerce/createPaymentMethodResponse.js","webpack:///webpack:///src/services/commerce/paymentMethodResponse.js","webpack:///webpack:///src/services/commerce/paymentCardType.js","webpack:///webpack:///src/services/commerce/paymentMethodType.js","webpack:///webpack:///src/services/commerce/priceOrderRequest.js","webpack:///webpack:///src/services/commerce/priceOrderRequestAddress.js","webpack:///webpack:///src/services/commerce/priceOrderResponse.js","webpack:///webpack:///src/services/commerce/queryOrderResponse.js","webpack:///webpack:///src/services/commerce/orderStatus.js","webpack:///webpack:///src/services/commerce/submitOrderWithPaymentMethodRequest.js","webpack:///webpack:///src/services/commerce/affiliateTracking.js","webpack:///webpack:///src/services/commerce/lineItem.js","webpack:///webpack:///src/services/commerce/orderCampaign.js","webpack:///webpack:///src/services/commerce/strongCustomerAuth.js","webpack:///webpack:///src/services/commerce/submitOrderWithPaymentMethodResponse.js","webpack:///webpack:///src/services/commerce/zipLocation.js","webpack:///webpack:///src/services/content/contentClientEndpoint.js","webpack:///webpack:///src/services/customerService/customerServiceClientEndpoint.js","webpack:///webpack:///src/services/device/deviceMetadata.js","webpack:///webpack:///src/services/device/deviceClientEndpoint.js","webpack:///webpack:///src/services/drm/drmClientEndpoint.js","webpack:///webpack:///src/services/drm/playReadyMessage.js","webpack:///webpack:///src/services/eligibility/eligibilityClientEndpoint.js","webpack:///webpack:///src/services/eligibility/eligibilityStatusResponse.js","webpack:///webpack:///src/services/eligibility/eligibilityStatus.js","webpack:///webpack:///src/services/externalActivation/activationToken.js","webpack:///webpack:///src/services/externalActivation/externalActivationResult.js","webpack:///webpack:///src/services/externalActivation/externalActivationClientEndpoint.js","webpack:///webpack:///src/services/media/adEngine/adEngineClientEndpoint.js","webpack:///webpack:///src/services/media/audioRendition.js","webpack:///webpack:///src/services/media/bifThumbnailSet.js","webpack:///webpack:///src/services/media/drmType.js","webpack:///webpack:///src/services/media/mediaPayload.js","webpack:///webpack:///src/services/media/mediaPlayheadStatus.js","webpack:///webpack:///src/services/media/mediaClientEndpoint.js","webpack:///webpack:///src/services/media/spriteThumbnailSet.js","webpack:///webpack:///src/services/media/subtitleRendition.js","webpack:///webpack:///src/services/identity/adobe/adobeRegistration.js","webpack:///webpack:///src/services/identity/bam/authenticationFlow.js","webpack:///webpack:///src/services/identity/bam/authenticationFlowResponse.js","webpack:///webpack:///src/services/identity/bam/bamIdentityClientEndpoint.js","webpack:///webpack:///src/services/identity/bam/redeemedPasscodeToken.js","webpack:///webpack:///src/services/identity/bam/oneTimePasscodeRequestReason.js","webpack:///webpack:///src/services/identity/bam/identity.js","webpack:///webpack:///src/services/internal/telemetry/telemetryClientEndpoint.js","webpack:///webpack:///src/services/internal/telemetry/telemetryPayload.js","webpack:///webpack:///src/services/internal/telemetry/telemetryResponse.js","webpack:///webpack:///src/services/internal/telemetry/streamSampleClientPayload.js","webpack:///webpack:///src/services/internal/dust/dustApplicationPayload.js","webpack:///webpack:///src/services/internal/dust/dustClientPayload.js","webpack:///webpack:///src/services/internal/dust/dustDevicePayload.js","webpack:///webpack:///src/services/internal/dust/dustSdkPayload.js","webpack:///webpack:///src/services/internal/dust/dustServerPayload.js","webpack:///webpack:///src/services/paywall/accountEntitlementContext.js","webpack:///webpack:///src/services/paywall/paywall.js","webpack:///webpack:///src/services/paywall/paywallClientEndpoint.js","webpack:///webpack:///src/services/paywall/productType.js","webpack:///webpack:///src/services/paywall/timeUnit.js","webpack:///webpack:///src/services/purchase/purchaseActivation.js","webpack:///webpack:///src/services/purchase/purchaseActivationResult.js","webpack:///webpack:///src/services/purchase/purchaseClientEndpoint.js","webpack:///webpack:///src/services/purchase/receiptCredentials.js","webpack:///webpack:///src/services/session/sessionClientEndpoint.js","webpack:///webpack:///src/services/session/sessionInfo.js","webpack:///webpack:///src/services/session/sessionLocationType.js","webpack:///webpack:///src/services/subscription/subscriptionStatusSubType.js","webpack:///webpack:///src/services/subscription/subscriptionStatusType.js","webpack:///webpack:///src/services/subscription/subscriptionClientEndpoint.js","webpack:///webpack:///src/services/subscription/subscriptionFreeTrialStatus.js","webpack:///webpack:///src/services/platforms/memoryStore.js","webpack:///webpack:///src/subscription/subscriptionManager.js","webpack:///webpack:///src/token/accessState.js","webpack:///webpack:///src/token/accessStorage.js","webpack:///webpack:///src/token/accessTokenProvider.js","webpack:///webpack:///src/token/tokenRefreshFailure.js","webpack:///webpack:///src/token/deviceGrantStorage.js","webpack:///webpack:///src/subscription/subscription.js","webpack:///webpack:///src/subscription/bundleStatus.js","webpack:///webpack:///src/subscription/product.js","webpack:///webpack:///src/subscription/productEntitlement.js","webpack:///webpack:///src/subscription/productStatus.js","webpack:///webpack:///src/subscription/subscriptionSource.js","webpack:///webpack:///src/account/accountManager.js","webpack:///webpack:///src/commerce/entry.js","webpack:///webpack:///src/commerce/cardPaymentMethodResponse.js","webpack:///webpack:///src/commerce/paymentMethodType.js","webpack:///webpack:///src/commerce/commerceManager.js","webpack:///webpack:///src/commerce/paymentMethodInformation.js","webpack:///webpack:///src/configuration/entry.js","webpack:///webpack:///src/configuration/embeddedConfiguration.js","webpack:///webpack:///src/content/entry.js","webpack:///webpack:///src/content/contentManager.js","webpack:///webpack:///src/content/bookmarks/bookmarkExtensions.js","webpack:///webpack:///src/content/bookmarks/bookmarksQuery.js","webpack:///webpack:///src/content/search/searchExtensions.js","webpack:///webpack:///src/content/search/searchQuery.js","webpack:///webpack:///src/content/watchlist/watchlistExtensions.js","webpack:///webpack:///src/content/watchlist/watchlistQuery.js","webpack:///webpack:///src/content/watchlist/removeFromWatchlistQuery.js","webpack:///webpack:///src/content/watchlist/addToWatchlistQuery.js","webpack:///webpack:///src/content/watchlist/clearWatchlistQuery.js","webpack:///webpack:///src/customerService/entry.js","webpack:///webpack:///src/qualityOfService/fetchStatus.js","webpack:///webpack:///src/qualityOfService/httpMethod.js","webpack:///webpack:///src/qualityOfService/networkError.js","webpack:///webpack:///src/qualityOfService/networkType.js","webpack:///webpack:///src/qualityOfService/playlistLiveType.js","webpack:///webpack:///src/qualityOfService/mediaFetchError.js","webpack:///webpack:///src/qualityOfService/playbackExitedCause.js","webpack:///webpack:///src/qualityOfService/playbackError.js","webpack:///webpack:///src/qualityOfService/playbackIntent.js","webpack:///webpack:///src/qualityOfService/playbackSeekCause.js","webpack:///webpack:///src/drm/fairPlayDrmProvider.js","webpack:///webpack:///src/drm/atvFairPlayCertificateStorage.js","webpack:///webpack:///src/drm/widevineCertificateStorage.js","webpack:///webpack:///src/identity/entry.js","webpack:///webpack:///src/identity/adobe/adobeIdentityManager.js","webpack:///webpack:///src/identity/adobe/adobeRegistration.js","webpack:///webpack:///src/identity/bam/bamIdentityManager.js","webpack:///webpack:///src/internal/dust/dustSink.js","webpack:///webpack:///src/internal/telemetry/telemetryManager.js","webpack:///webpack:///src/internal/telemetry/eventBuffer.js","webpack:///webpack:///src/internal/telemetry/telemetryEvent.js","webpack:///webpack:///src/internal/dust/dustEvent.js","webpack:///webpack:///src/media/entry.js","webpack:///webpack:///src/media/adEngine/advertisingIdProvider.js","webpack:///webpack:///src/media/mediaPreferences.js","webpack:///webpack:///src/media/mediaCapabilitiesProvider.js","webpack:///webpack:///src/media/playbackSession.js","webpack:///webpack:///src/media/playerAdapter/atvPlayerAdapter.js","webpack:///webpack:///src/media/playerAdapter/bamWebPlayerAdapter.js","webpack:///webpack:///src/media/playerAdapter/trilithiumPlayerAdapter.js","webpack:///webpack:///src/media/playerAdapter/chromecastPlayerAdapter.js","webpack:///webpack:///src/media/playerAdapter/cafPlayerAdapter.js","webpack:///webpack:///src/media/playerAdapter/bamHlsPlayerAdapter.js","webpack:///webpack:///src/media/generatePlaybackScenario.js","webpack:///webpack:///src/media/supportedCodec.js","webpack:///webpack:///src/media/hdrType.js","webpack:///webpack:///src/media/thumbnailResolution.js","webpack:///webpack:///src/paywall/entry.js","webpack:///webpack:///src/paywall/paywallManager.js","webpack:///webpack:///src/purchase/entry.js","webpack:///webpack:///src/purchase/accessStatus.js","webpack:///webpack:///src/sequences/media/playback.js","webpack:///webpack:///src/session/entry.js","webpack:///webpack:///src/userActivity/entry.js","webpack:///webpack:///src/userActivity/eventSchemataProvider.js","webpack:///webpack:///src/userActivity/eventValue.js","webpack:///webpack:///src/userActivity/eventSchemata.js","webpack:///webpack:///src/userActivity/glimpse/glimpseEvent.js","webpack:///webpack:///src/userActivity/personalization/personalizationEvent.js","webpack:///webpack:///src/userProfile/entry.js","webpack:///webpack:///src/reauthorizationFailure.js","webpack:///webpack:///src/entry.js","webpack:///webpack:///node_modules/core-js/library/fn/object/define-property.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.object.define-property.js","webpack:///webpack:///src/account/accountApi.js","webpack:///webpack:///node_modules/regenerator-runtime/runtime-module.js","webpack:///webpack:///node_modules/regenerator-runtime/runtime.js","webpack:///webpack:///node_modules/core-js/library/fn/promise.js","webpack:///webpack:///node_modules/core-js/library/modules/_string-at.js","webpack:///webpack:///node_modules/core-js/library/modules/_iter-create.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-dps.js","webpack:///webpack:///node_modules/core-js/library/modules/_array-includes.js","webpack:///webpack:///node_modules/core-js/library/modules/_to-absolute-index.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.array.iterator.js","webpack:///webpack:///node_modules/core-js/library/modules/_add-to-unscopables.js","webpack:///webpack:///node_modules/core-js/library/modules/_iter-step.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.promise.js","webpack:///webpack:///node_modules/core-js/library/modules/_an-instance.js","webpack:///webpack:///node_modules/core-js/library/modules/_for-of.js","webpack:///webpack:///node_modules/core-js/library/modules/_invoke.js","webpack:///webpack:///node_modules/core-js/library/modules/_microtask.js","webpack:///webpack:///node_modules/core-js/library/modules/_user-agent.js","webpack:///webpack:///node_modules/core-js/library/modules/_redefine-all.js","webpack:///webpack:///node_modules/core-js/library/modules/_set-species.js","webpack:///webpack:///node_modules/core-js/library/modules/es7.promise.finally.js","webpack:///webpack:///node_modules/core-js/library/modules/es7.promise.try.js","webpack:///webpack:///node_modules/core-js/library/fn/object/assign.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.object.assign.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-assign.js","webpack:///webpack:///src/logging/loggingApi.js","webpack:///webpack:///src/logging/logger.js","webpack:///webpack:///node_modules/core-js/library/fn/object/keys.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.object.keys.js","webpack:///webpack:///node_modules/core-js/library/fn/get-iterator.js","webpack:///webpack:///node_modules/core-js/library/modules/core.get-iterator.js","webpack:///webpack:///node_modules/core-js/library/fn/object/create.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.object.create.js","webpack:///webpack:///node_modules/core-js/library/fn/json/stringify.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/array/from.js","webpack:///webpack:///node_modules/core-js/library/fn/array/from.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.array.from.js","webpack:///webpack:///node_modules/core-js/library/modules/_create-property.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/is-iterable.js","webpack:///webpack:///node_modules/core-js/library/fn/is-iterable.js","webpack:///webpack:///node_modules/core-js/library/modules/core.is-iterable.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///webpack:///node_modules/core-js/library/fn/symbol/iterator.js","webpack:///webpack:///node_modules/core-js/library/fn/symbol/index.js","webpack:///webpack:///node_modules/core-js/library/modules/_meta.js","webpack:///webpack:///node_modules/core-js/library/modules/_enum-keys.js","webpack:///webpack:///node_modules/core-js/library/modules/_is-array.js","webpack:///webpack:///node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack:///webpack:///node_modules/core-js/library/modules/es7.symbol.observable.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/object/get-prototype-of.js","webpack:///webpack:///node_modules/core-js/library/fn/object/get-prototype-of.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.object.get-prototype-of.js","webpack:///webpack:///node_modules/core-js/library/fn/object/set-prototype-of.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack:///webpack:///node_modules/core-js/library/modules/_set-proto.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///webpack:///node_modules/chalk/index.js","webpack:///webpack:///node_modules/escape-string-regexp/index.js","webpack:///webpack:///node_modules/ansi-styles/index.js","webpack:///webpack:///(webpack)/buildin/module.js","webpack:///webpack:///node_modules/strip-ansi/index.js","webpack:///webpack:///node_modules/has-ansi/index.js","webpack:///webpack:///node_modules/supports-color/index.js","webpack:///webpack:///node_modules/ansi_up/ansi_up.js","webpack:///webpack:///src/logging/metric.js","webpack:///webpack:///src/services/account/entry.js","webpack:///webpack:///src/services/account/accountClient.js","webpack:///webpack:///src/services/exception/errorCode.js","webpack:///webpack:///src/services/exception/providerException.js","webpack:///webpack:///src/services/token/accessToken.js","webpack:///webpack:///src/services/token/deviceGrant.js","webpack:///webpack:///src/services/token/identityToken.js","webpack:///webpack:///node_modules/core-js/library/fn/object/values.js","webpack:///webpack:///node_modules/core-js/library/modules/es7.object.values.js","webpack:///webpack:///node_modules/core-js/library/modules/_object-to-array.js","webpack:///webpack:///src/services/token/temporaryGrant.js","webpack:///webpack:///src/services/token/exchangeGrant.js","webpack:///webpack:///src/services/token/tokenClient.js","webpack:///webpack:///node_modules/strict-uri-encode/index.js","webpack:///webpack:/src/services/platforms ^/.//.*//httpClient$","webpack:///webpack:///src/services/platforms/apple/httpClient.js","webpack:///webpack:///src/services/configuration/configurationClient.js","webpack:///webpack:///src/services/util/checkResponseCode.js","webpack:///webpack:///src/services/util/getSafe.js","webpack:///webpack:///src/services/util/getScope.js","webpack:///webpack:///src/services/util/adEngineRegex.js","webpack:///webpack:///src/services/util/dateRegex.js","webpack:///webpack:/src/services/platforms ^/.//.*//environmentConfiguration$","webpack:///webpack:///src/services/platforms/isomorphic/environmentConfiguration.js","webpack:///webpack:///src/services/platforms/device.js","webpack:///webpack:///src/services/platforms/device.regexs.js","webpack:///webpack:///src/services/platforms/sony/trilithium/environmentConfiguration.js","webpack:///webpack:///node_modules/core-js/library/fn/object/get-own-property-descriptor.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/object/get-own-property-symbols.js","webpack:///webpack:///node_modules/core-js/library/fn/object/get-own-property-symbols.js","webpack:///webpack:///src/services/configuration/adEngineManagerExtrasMap.js","webpack:///webpack:///src/services/content/contentClientExtrasMap.js","webpack:///webpack:///src/services/configuration/configurationClientEndpoint.js","webpack:///webpack:///src/services/configuration/configurationClientHostParams.js","webpack:///webpack:///src/services/configuration/platformProfileReference.js","webpack:///webpack:///src/services/platforms/isomorphic/httpClient.js","webpack:///webpack:///src/services/lib/whatwg-fetch.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/object/get-own-property-names.js","webpack:///webpack:///node_modules/core-js/library/fn/object/get-own-property-names.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.object.get-own-property-names.js","webpack:///webpack:///src/services/platforms/sony/trilithium/httpClient.js","webpack:///webpack:///src/services/commerce/entry.js","webpack:///webpack:///src/services/commerce/commerceClient.js","webpack:///webpack:///src/services/content/entry.js","webpack:///webpack:///src/services/content/contentClient.js","webpack:///webpack:///src/services/content/graphQlQuery.js","webpack:///webpack:///src/services/content/graphQlPersistedQuery.js","webpack:///webpack:///src/services/customerService/entry.js","webpack:///webpack:///src/services/customerService/customerServiceClient.js","webpack:///webpack:///src/services/device/entry.js","webpack:///webpack:///src/services/device/deviceClient.js","webpack:///webpack:///src/services/drm/entry.js","webpack:///webpack:///src/services/drm/drmClient.js","webpack:///webpack:///src/services/eligibility/entry.js","webpack:///webpack:///src/services/eligibility/eligibilityClient.js","webpack:///webpack:///src/services/externalActivation/entry.js","webpack:///webpack:///src/services/externalActivation/externalActivationClient.js","webpack:///webpack:///src/services/media/entry.js","webpack:///webpack:///src/services/media/adEngine/entry.js","webpack:///webpack:///src/services/media/mediaClient.js","webpack:///webpack:///src/services/media/playbackRenditions.js","webpack:///webpack:///src/services/media/playbackVariant.js","webpack:///webpack:///src/services/media/streamSampleConfiguration.js","webpack:///webpack:///src/services/media/thumbnailPresentationType.js","webpack:///webpack:///src/services/identity/entry.js","webpack:///webpack:///src/services/identity/adobe/entry.js","webpack:///webpack:///src/services/identity/adobe/adobeIdentityClient.js","webpack:///webpack:///src/services/identity/adobe/adobeIdentityClientEndpoint.js","webpack:///webpack:///src/services/identity/adobe/getIdentityTokenResult.js","webpack:///webpack:///src/services/identity/bam/entry.js","webpack:///webpack:///src/services/identity/bam/bamIdentityClient.js","webpack:///webpack:///src/services/internal/entry.js","webpack:///webpack:///src/services/internal/telemetry/entry.js","webpack:///webpack:///src/services/internal/telemetry/telemetryClient.js","webpack:///webpack:///src/services/internal/telemetry/streamSamplePayload.js","webpack:///webpack:///src/services/internal/dust/entry.js","webpack:///webpack:///node_modules/uuid/rng-browser.js","webpack:///webpack:///src/services/internal/dust/dustPayload.js","webpack:///webpack:///src/services/paywall/entry.js","webpack:///webpack:///src/services/paywall/paywallClient.js","webpack:///webpack:///src/services/purchase/entry.js","webpack:///webpack:///src/services/purchase/purchaseClient.js","webpack:///webpack:///src/services/session/entry.js","webpack:///webpack:///src/services/session/sessionClient.js","webpack:///webpack:///src/services/subscription/entry.js","webpack:///webpack:///src/services/subscription/subscriptionStatus.js","webpack:///webpack:///src/services/subscription/subscriptionClient.js","webpack:///webpack:///src/services/subscription/subscriptionExpiryType.js","webpack:///webpack:///src/services/subscription/subscriptionSourceSubType.js","webpack:///webpack:///src/services/subscription/subscriptionSourceType.js","webpack:///webpack:///src/services/subscription/subscriptionType.js","webpack:///webpack:///src/services/subscription/subscriptionOffer.js","webpack:///webpack:///src/services/subscription/subscriptionFreeTrial.js","webpack:///webpack:///src/services/subscription/productRule.js","webpack:///webpack:///src/services/platforms/storage.js","webpack:///webpack:/src/services/platforms ^/.//.*//storage$","webpack:///webpack:///src/services/platforms/apple/storage.js","webpack:///webpack:///src/services/platforms/isomorphic/storage.js","webpack:///webpack:///src/services/platforms/samsung/orsay/storage.js","webpack:///webpack:///src/services/platforms/sony/trilithium/storage.js","webpack:///webpack:///src/subscription/subscriptionApi.js","webpack:///webpack:/src/platforms ^/.//.*//geoProvider$","webpack:///webpack:///src/platforms/apple/geoProvider.js","webpack:///webpack:///src/platforms/browser/geoProvider.js","webpack:///webpack:///src/platforms/node/geoProvider.js","webpack:///webpack:///src/platforms/sony/trilithium/geoProvider.js","webpack:///webpack:///src/token/tokenManager.js","webpack:///webpack:///src/device/deviceManager.js","webpack:///webpack:///src/token/accessTokenUpdater.js","webpack:///webpack:///src/token/identityTokenStorage.js","webpack:///webpack:///src/account/gender.js","webpack:///webpack:///src/commerce/commerceApi.js","webpack:///webpack:///src/commerce/submitOrderWithCardPaymentMethodRequest.js","webpack:///webpack:///src/configuration/configurationManager.js","webpack:///webpack:///src/content/contentApi.js","webpack:///webpack:///src/content/search/entry.js","webpack:///webpack:///src/content/watchlist/entry.js","webpack:///webpack:///src/content/bookmarks/entry.js","webpack:///webpack:///src/customerService/customerServiceManager.js","webpack:///webpack:///src/qualityOfService/audioChangedEventData.js","webpack:///webpack:///src/qualityOfService/bitrateChangedEventData.js","webpack:///webpack:///src/qualityOfService/drmCertificateFetchedEventData.js","webpack:///webpack:///src/qualityOfService/drmKeyFetchedEventData.js","webpack:///webpack:///src/qualityOfService/masterPlaylistFetchedEventData.js","webpack:///webpack:///src/qualityOfService/mediaPayloadFetchedEventData.js","webpack:///webpack:///src/qualityOfService/mediaSegmentFetchedEventData.js","webpack:///webpack:///src/qualityOfService/mediaSegmentType.js","webpack:///webpack:///src/qualityOfService/playbackExitedEventData.js","webpack:///webpack:///src/qualityOfService/playbackInitializedEventData.js","webpack:///webpack:///src/qualityOfService/playbackPausedEventData.js","webpack:///webpack:///src/qualityOfService/playbackReadyEventData.js","webpack:///webpack:///src/qualityOfService/playbackResumedEventData.js","webpack:///webpack:///src/qualityOfService/playbackSampledEventData.js","webpack:///webpack:///src/qualityOfService/playbackSeekedEventData.js","webpack:///webpack:///src/qualityOfService/playbackSelectedEventData.js","webpack:///webpack:///src/qualityOfService/playbackSessionTransferredEventData.js","webpack:///webpack:///src/qualityOfService/playbackStartedEventData.js","webpack:///webpack:///src/qualityOfService/rebufferingStartedEventData.js","webpack:///webpack:///src/qualityOfService/rebufferingEndedEventData.js","webpack:///webpack:///src/qualityOfService/subtitleChangedEventData.js","webpack:///webpack:///src/qualityOfService/variantPlaylistFetchedEventData.js","webpack:///webpack:///src/drm/atvFairPlayDrmProvider.js","webpack:///webpack:///src/drm/playReadyDrmProvider.js","webpack:///webpack:///src/drm/silkDrmProvider.js","webpack:///webpack:///src/drm/widevineDrmProvider.js","webpack:///webpack:///src/eligibility/eligibilityManager.js","webpack:///webpack:///src/externalActivation/externalActivationManager.js","webpack:///webpack:///src/identity/adobe/entry.js","webpack:///webpack:///src/identity/adobe/adobeIdentityApi.js","webpack:///webpack:///src/identity/adobe/adobeActivationResult.js","webpack:///webpack:///src/identity/bam/entry.js","webpack:///webpack:///src/identity/bam/bamIdentityApi.js","webpack:///webpack:///src/internal/dust/entry.js","webpack:///webpack:///src/internal/telemetry/entry.js","webpack:///webpack:///src/internal/telemetry/streamSampleTelemetryEvent.js","webpack:///webpack:///src/media/adEngine/entry.js","webpack:///webpack:///src/media/mediaApi.js","webpack:///webpack:///src/media/playerAdapter/html5PlayerAdapter.js","webpack:///webpack:///src/media/playerAdapter/hlsJsPlayerAdapter.js","webpack:///webpack:///src/media/playerAdapter/samsungOrsayPlayerAdapter.js","webpack:///webpack:///src/media/playerAdapter/samsungTizenPlayerAdapter.js","webpack:///webpack:///src/media/playerAdapter/dssWebPlayerAdapter.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/get.js","webpack:///webpack:///node_modules/@babel/runtime/core-js/reflect/get.js","webpack:///webpack:///node_modules/core-js/library/fn/reflect/get.js","webpack:///webpack:///node_modules/core-js/library/modules/es6.reflect.get.js","webpack:///webpack:///node_modules/@babel/runtime/helpers/superPropBase.js","webpack:///webpack:///src/paywall/paywallApi.js","webpack:///webpack:///src/purchase/purchaseApi.js","webpack:///webpack:///src/purchase/purchases.js","webpack:///webpack:///src/purchase/purchaseType.js","webpack:///webpack:///src/sequences/entry.js","webpack:///webpack:///node_modules/util/util.js","webpack:///webpack:///node_modules/util/support/isBufferBrowser.js","webpack:///webpack:///node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///webpack:///src/sequences/media/playbackCleanup.js","webpack:///webpack:///src/sequences/media/playbackExternalAccount.js","webpack:///webpack:///src/sequences/userProfile/userProfile.js","webpack:///webpack:///src/sequences/commerce/commerceStoredPayment.js","webpack:///webpack:///src/sequences/userActivity/userActivity.js","webpack:///webpack:///src/sequences/identity/bam/oneTimePasscode.js","webpack:///webpack:///src/status/entry.js","webpack:///webpack:///src/status/temporaryAccess.js","webpack:///webpack:///src/session/sessionManager.js","webpack:///webpack:///src/userActivity/userActivityApi.js","webpack:///webpack:///src/userActivity/glimpse/entry.js","webpack:///webpack:///src/userActivity/glimpse/glimpseEvents.js","webpack:///webpack:///src/userActivity/personalization/entry.js","webpack:///webpack:///src/userActivity/personalization/personalizationEvents.js","webpack:///webpack:///src/userActivity/personalization/userActivityAction.js","webpack:///webpack:///src/userProfile/userProfileApi.js","webpack:///webpack:///src/sdkSession.js","webpack:///webpack:///src/endpoint.js","webpack:///webpack:///bam-browser-sdk-sdkSession-util.js","webpack:///webpack:/webpack/bootstrap 83db718786ee72f675a4","webpack:///webpack:/external {\"amd\":\"bam-browser-sdk\",\"commonjs\":\"bam-browser-sdk\",\"commonjs2\":\"bam-browser-sdk\",\"root\":\"bam-browser-sdk\"}","webpack:///webpack:///src/geoProviderMock.js","webpack:///webpack:///~/check-types/src/check-types.js","webpack:///webpack:///~/events/events.js","webpack:///./node_modules/btm-user-manager/dist/btm-user-manager.js-exposed","webpack:///webpack://[name]/webpack/universalModuleDefinition","webpack:///webpack://[name]/webpack/bootstrap","webpack:///webpack://[name]/node_modules/@babel/runtime/regenerator/index.js","webpack:///webpack://[name]/node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///webpack://[name]/node_modules/@babel/runtime/helpers/typeof.js","webpack:///webpack://[name]/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///webpack:/[name]/external {\"amd\":\"bam-browser-sdk-sdkSession-util\",\"commonjs\":\"bam-browser-sdk-sdkSession-util\",\"commonjs2\":\"bam-browser-sdk-sdkSession-util\",\"root\":\"bam-browser-sdk-sdkSession-util\"}","webpack:///webpack://[name]/node_modules/@babel/runtime/helpers/slicedToArray.js","webpack:///webpack://[name]/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///webpack://[name]/node_modules/regenerator-runtime/runtime.js","webpack:///webpack://[name]/node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///webpack://[name]/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack:///webpack://[name]/node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///webpack://[name]/src/utils/getSdkSession.js","webpack:///webpack://[name]/src/exceptions/UserManagerException.js","webpack:///webpack://[name]/src/account.js","webpack:///webpack://[name]/src/activation.js","webpack:///webpack://[name]/src/identity/bam.js","webpack:///webpack://[name]/src/eligibility.js","webpack:///webpack://[name]/src/exceptions/constants.js","webpack:///webpack://[name]/src/utils/isExpired.js","webpack:///webpack://[name]/src/subscription.js","webpack:///webpack://[name]/src/identity/external.js","webpack:///webpack://[name]/src/profile.js","webpack:///webpack://[name]/src/session.js","webpack:///webpack://[name]/src/token.js","webpack:///webpack://[name]/src/index.js","webpack:///./node_modules/dss-device/dist/main.js-exposed","webpack:///./node_modules/dss-device/dist/main.js","webpack:///./scripts/polyfills.js"],"names":["root","factory","exports","module","define","amd","a","i","this","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","global","core","hide","redefine","ctx","$export","type","source","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","target","expProto","undefined","Function","U","W","R","window","Math","self","__g","exec","e","isObject","it","TypeError","store","uid","USE_SYMBOL","toInteger","min","version","__e","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","O","Attributes","defined","has","SRC","$toString","TPL","split","inspectSource","val","safe","isFunction","join","String","fails","quot","createHTML","string","tag","attribute","p1","replace","NAME","test","toLowerCase","length","createDesc","IObject","method","arg","aFunction","fn","that","b","apply","arguments","ceil","floor","isNaN","pIE","toIObject","gOPD","getOwnPropertyDescriptor","KEY","toObject","toLength","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","res","index","result","push","toString","slice","LIBRARY","$typed","$buffer","anInstance","propertyDesc","redefineAll","toIndex","toAbsoluteIndex","classof","isArrayIter","getPrototypeOf","gOPN","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","Iterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","$DP","$GOPD","RangeError","Uint8Array","ArrayProto","Array","$ArrayBuffer","ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","values","arrayKeys","keys","arrayEntries","entries","arrayLastIndexOf","lastIndexOf","arrayReduce","reduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","sort","arraySlice","arrayToString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","$map","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","set","toOffset","BYTES","offset","validate","C","speciesFromList","list","fromList","addGetter","internal","_d","$from","step","iterator","aLen","mapfn","mapping","iterFn","next","done","$of","TO_LOCALE_BUG","$toLocaleString","proto","copyWithin","start","every","fill","filter","find","predicate","findIndex","forEach","indexOf","searchElement","includes","separator","map","reverse","middle","some","comparefn","subarray","begin","end","$begin","byteOffset","BYTES_PER_ELEMENT","$slice","$set","arrayLike","src","len","$iterators","isTAIndex","$getDesc","$setDesc","desc","configurable","writable","$TypedArrayPrototype$","constructor","wrapper","CLAMPED","GETTER","SETTER","TypedArray","Base","TAC","FORCED","ABV","TypedArrayPrototype","addElement","data","v","round","setter","$offset","$length","byteLength","klass","$len","iter","concat","$nativeIterator","CORRECT_ITER_NAME","$iterator","of","from","valueOf","META","setDesc","id","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","NEED","fastKey","getWeak","onFreeze","bitmap","px","random","$keys","enumBugKeys","max","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","contentWindow","document","open","write","lt","close","Properties","hiddenKeys","getOwnPropertyNames","ObjectProto","UNSCOPABLES","_t","def","stat","spaces","space","ltrim","RegExp","rtrim","exporter","ALIAS","FORCE","trim","DESCRIPTORS","SPECIES","Constructor","forbiddenField","cof","propertyIsEnumerable","ARG","T","tryGet","callee","D","copyright","IS_INCLUDES","el","fromIndex","getOwnPropertySymbols","isArray","SAFE_CLOSING","riter","skipClosing","arr","ignoreCase","multiline","unicode","sticky","builtinExec","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","str","arg2","forceStringMethod","strfn","rxfn","BREAK","RETURN","iterable","navigator","userAgent","forOf","setToStringTag","inheritIfRequired","methods","common","IS_WEAK","ADDER","fixMethod","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","clear","getConstructor","setStrong","Typed","TypedArrayConstructors","g","is","createElement","shared","documentElement","check","setPrototypeOf","buggy","__proto__","count","Infinity","sign","x","$expm1","expm1","TO_STRING","pos","charCodeAt","charAt","$iterCreate","BUGGY","returnThis","DEFAULT","IS_SET","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","isRegExp","searchString","MATCH","$defineProperty","getIteratorMethod","endPos","addToUnscopables","iterated","_i","_k","Arguments","re1","re2","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","lastIndex","reCopy","match","at","defer","channel","port","invoke","html","cel","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","listener","event","args","nextTick","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","setTimeout","PROTOTYPE","WRONG_INDEX","BaseBuffer","abs","pow","log","LN2","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","NaN","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","view","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","j","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","wksExt","$Symbol","names","getKeys","defineProperties","windowNames","getWindowNames","gOPS","$assign","assign","A","K","k","getSymbols","isEnum","y","factories","construct","partArgs","bound","un","$parseInt","parseInt","$trim","ws","hex","radix","$parseFloat","parseFloat","msg","isFinite","log1p","descriptor","ret","original","memo","isRight","to","inc","forced","flags","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","versions","v8","$Promise","isNode","empty","newPromiseCapability","USE_NATIVE","promise","resolve","FakePromise","PromiseRejectionEvent","then","isThenable","notify","isReject","_n","chain","_c","_v","ok","_s","reaction","exited","handler","fail","reject","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","console","unhandled","isUnhandled","emit","onunhandledrejection","reason","error","_a","onrejectionhandled","$reject","_w","$resolve","executor","err","onFulfilled","onRejected","Promise","capability","$$reject","all","remaining","$index","alreadyCalled","race","PromiseCapability","$$resolve","promiseCapability","$iterDefine","SIZE","getEntry","entry","_f","_l","prev","$has","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","splice","ufstore","number","Reflect","ownKeys","repeat","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","isEntries","obj","_global","_babelPolyfill","warn","$fails","wksDefine","enumKeys","_create","gOPNExt","$GOPS","$JSON","JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","findChild","setSymbolDesc","protoDesc","wrap","sym","isSymbol","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","symbols","$getPrototypeOf","$freeze","$seal","$preventExtensions","$isFrozen","$isSealed","$isExtensible","FProto","nameRE","HAS_INSTANCE","FunctionProto","$Number","BROKEN_COF","TRIM","toNumber","argument","third","maxCode","first","code","digits","aNumberValue","$toFixed","toFixed","ERROR","multiply","c2","divide","numToString","acc","fractionDigits","z","x2","$toPrecision","toPrecision","precision","EPSILON","_isFinite","isInteger","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","Number","sqrt","$acosh","acosh","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","fround","EPSILON32","MAX32","MIN32","$abs","$sign","hypot","value1","value2","div","sum","larg","$imul","imul","xn","yn","xl","yl","log10","LOG10E","log2","sinh","tanh","trunc","fromCharCode","$fromCodePoint","fromCodePoint","raw","callSite","tpl","$at","point","codePointAt","context","$endsWith","endsWith","endPosition","search","$startsWith","startsWith","color","size","url","Date","getTime","toJSON","toISOString","pv","$toISOString","lz","num","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","DateProto","hint","createProperty","upTo","cloned","$sort","$forEach","STRICT","$filter","$some","$every","$reduce","$indexOf","NEGATIVE_ZERO","$find","$flags","$RegExp","CORRECT_NEW","tiRE","piRE","fiU","proxy","advanceStringIndex","regExpExec","$match","maybeCallNative","rx","fullUnicode","matchStr","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","searchValue","replaceValue","functionalReplace","results","accumulatedResult","nextSourcePosition","matched","position","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","ch","capture","sameValue","SEARCH","$search","previousLastIndex","callRegExpExec","$min","$push","SUPPORTS_Y","SPLIT","$split","internalSplit","limit","lastLength","output","lastLastIndex","splitLimit","separatorCopy","splitter","unicodeMatching","lim","q","macrotask","Observer","MutationObserver","WebKitMutationObserver","head","last","flush","parent","standalone","toggle","node","createTextNode","observe","characterData","strong","add","InternalMap","each","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","$WeakMap","$isView","isView","fin","viewS","viewT","init","rApply","fApply","thisArgument","argumentsList","L","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","propertyKey","attributes","deleteProperty","Enumerate","enumerate","receiver","getProto","V","existingDescriptor","ownDesc","setProto","$includes","flatMap","flattenIntoArray","arraySpeciesCreate","sourceLen","IS_CONCAT_SPREADABLE","depth","mapper","thisArg","element","spreadable","targetIndex","sourceIndex","mapFn","padStart","$pad","WEBKIT_BUG","padEnd","trimLeft","trimRight","getOwnPropertyDescriptors","getDesc","$values","onFinally","MSIE","time","boundArgs","setInterval","$task","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","runtime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","state","GenStateSuspendedStart","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","pop","skipTempReset","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","IS_WRAP","virtual","callback","loaded","load","readyState","onDOMReady","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","text","tel","email","password","date","month","week","datetime","isValidFocusTarget","nodeName","classList","addFocusVisibleClass","contains","setAttribute","onPointerDown","addInitialPointerMoveListeners","onInitialPointerMove","removeEventListener","activeElement","tagName","readOnly","isContentEditable","hasAttribute","clearTimeout","remove","removeAttribute","visibilityState","body","_Object$defineProperty","_defineProperties","Services","Account","Commerce","Configuration","Content","CustomerService","Device","Drm","Eligibility","ExternalActivation","Exception","Identity","Logging","Media","Paywall","Purchase","Session","Subscription","Token","Util","HttpClient","Storage","ServiceEndpoint","HttpMethod","_Object$getPrototypeOf","_Object$setPrototypeOf","_getPrototypeOf","_typeof","assertThisInitialized","_Object$create","subClass","Logger","LoggingApi","LogEvent","LogSink","ConsoleSink","LogLevel","Metric","ConsoleSinkConfiguration","LoggingClientConfiguration","ErrorReason","ErrorCode","ExceptionReference","InvalidArgumentException","ProviderException","ServiceException","options","reasons","exceptionData","message","GeoLocation","GeoProvider","TokenManager","TokenRefreshFailure","AccessStorage","DeviceGrantStorage","AccessContextState","Access","AccessTokenProvider","AccessTokenUpdater","AccessToken","AccessState","AccessStateData","IdentityTokenStorage","checkResponseCode","getSafe","getScope","adEngineRegex","dateRegex","_Promise","asyncGeneratorStep","gen","AccessContext","DeviceGrant","Grant","IdentityToken","RefreshGrant","TemporaryGrant","ExchangeGrant","SecurityAction","TokenClient","TokenClientConfiguration","TokenClientEndpoint","TokenClientExtrasMap","TokenRequest","TokenRequestBuilder","AccountManagerConfiguration","AdobeIdentityManagerConfiguration","AdEngineManagerConfiguration","BamIdentityManagerConfiguration","BamIdentityManagerExtrasMap","BootstrapConfiguration","CommerceManagerConfiguration","CommerceManagerExtrasMap","ConfigurationClient","ConfigurationClientEndpoint","ConfigurationClientConfiguration","ConfigurationClientExtrasMap","ConfigurationClientHostParams","ConfigurationHostName","ContentManagerConfiguration","CustomerServiceManagerConfiguration","DeviceManagerConfiguration","PlatformProfileReference","DrmManagerConfiguration","EligibilityManagerConfiguration","EnvironmentConfiguration","ExternalActivationManagerConfiguration","LoggerConfiguration","MediaManagerConfiguration","MediaManagerExtrasMap","PaywallManagerConfiguration","PurchaseManagerConfiguration","SessionManagerConfiguration","Platform","PurchaseManagerExtrasMap","SdkSessionConfiguration","ServiceConfiguration","ServiceDefinitionsConfiguration","SubscriptionManagerConfiguration","TelemetryManagerConfiguration","TelemetryManagerExtrasMap","TokenManagerConfiguration","TokenManagerExtrasMap","RetryPolicy","endpoints","baseUrl","strategy","require","account","accountApi","getAccount","updateAccount","linkSubscriptionsFromDevice","authorize","createAccount","commerce","commerceApi","priceOrder","getLocationCandidates","submitOrderWithPaymentMethod","validateOrder","createPaymentMethod","getDefaultPaymentMethod","getPaymentCard","configuration","configurationManager","getConfiguration","content","contentApi","query","getSearchSuggestions","customerService","customerServiceApi","createSupportCode","identity","bam","bamIdentityApi","createIdentity","getIdentity","authenticate","updateIdentity","updatePassword","updateEmail","resetPassword","requestPasswordReset","requiresAuthentication","getAuthenticationFlow","requestOneTimePasscode","authenticateWithPasscode","media","mediaApi","createPlaybackSession","fetch","getSpriteSheetThumbnailSets","getSpriteSheetThumbnailSet","getSpriteSheetThumbnail","getBifThumbnailSets","getBifThumbnailSet","getBifThumbnail","playbackSession","prepare","release","encryptionKeyProvider","getEncryptionKey","messaging","messagingApi","registerChannel","paywall","paywallApi","getPaywall","purchase","purchaseApi","redeem","restore","getEligibilityStatus","activateExternalToken","getExternalActivationToken","sdkSession","createSdkSession","initialize","reauthorize","getAccessState","restoreAccessState","getSessionInfo","createCustomerSupportCode","subscription","subscriptionApi","getSubscriptions","userActivity","personalization","contentRecommendationAward","glimpse","appLaunched","contentSelected","searchViewLoaded","playbackSelected","playbackExited","purchaseCompleted","viewLoaded","userProfile","userProfileApi","createUserProfile","deleteUserProfile","getActiveUserProfile","getUserProfile","getUserProfiles","setActiveUserProfile","updateUserProfile","qualityOfService","audioChanged","bitrateChanged","drmCertificateFetched","drmKeyFetched","masterPlaylistFetched","mediaPayloadFetched","mediaSegmentFetched","playbackInitialized","playbackPaused","playbackReady","playbackResumed","playbackSampled","playbackSeeked","playbackSessionTransferred","playbackStarted","rebufferingStarted","rebufferingEnded","subtitleChanged","variantPlaylistFetched","services","accountClient","createAccountGrant","getCurrentAccount","updateAttributes","commerceClient","lookupByZipCode","getOrderStatus","configurationClient","contentClient","customerServiceClient","device","deviceClient","createDeviceGrant","drm","drmClient","getSilkKey","getPlayReadyLicense","getFairPlayCertificate","getFairPlayLicense","getWidevineCertificate","getWidevineLicense","eligibility","eligibilityClient","externalActivation","externalActivationClient","activateToken","getActivationToken","bamIdentityClient","changeEmail","changePassword","redeemOneTimePasscode","telemetry","telemetryClient","postEvents","adEngine","adEngineClient","updateCookies","getCookies","mediaClient","getMediaPayload","createAuthCookie","getSpriteSheetThumbnails","getBifThumbnails","downloadBifThumbnail","paywallClient","purchaseClient","redeemPurchases","restorePurchases","getTokens","session","sessionClient","getInfo","subscriptionClient","token","tokenClient","exchange","streamSample","bamSdk","disabled","client","extras","Check","assert","instanceStrict","nonEmptyString","nonEmptyObject","DustLogUtility","errorMessage","logger","urn","payload","category","server","timestamp","level","isPublic","errors","parsePayload","generateLogEvent","logEvent","status","transactionId","captureErrors","parsedUrl","regex","isServiceEvent","hasErrors","extraData","generateCategory","eventName","eventType","DustUrnReference","DustCategory","DrmManager","DrmProvider","AtvFairPlayDrmProvider","FairPlayDrmProvider","PlayReadyDrmProvider","SilkDrmProvider","WidevineDrmProvider","CertificateStorage","WidevineCertificateStorage","AtvFairPlayCertificateStorage","FairPlayCertificateStorage","assigned","PlayerAdapter","nativePlayer","playlist","Playlist","drmProvider","accessToken","adEngineData","PlaybackMetricsProvider","AudioRendition","SubtitleRendition","PlaybackVariant","PlaybackAttributes","array","streamUri","playlistType","availablePlaylistTypes","variants","audioRenditions","subtitleRenditions","AudioChangedEventData","QualityOfService","BitrateChangedEventData","MasterPlaylistFetchedEventData","MediaSegmentFetchedEventData","PlaybackExitedEventData","PlaybackInitializedEventData","PlaybackPausedEventData","PlaybackReadyEventData","PlaybackResumedEventData","PlaybackSeekedEventData","PlaybackStartedEventData","RebufferingEndedEventData","RebufferingStartedEventData","SubtitleChangedEventData","VariantPlaylistFetchedEventData","PlaybackEventListener","playbackMetricsProvider","provider","BitrateType","currentBitrate","currentPlayhead","bitrateType","DrmCertificateFetchedEventData","DrmKeyFetchedEventData","FetchStatus","MediaFetchError","MediaPayloadFetchedEventData","MediaSegmentType","NetworkError","NetworkType","PlaybackExitedCause","PlaybackError","PlaybackIntent","PlaybackSampledEventData","PlaybackSeekCause","PlaybackSelectedEventData","PlaybackSessionTransferredEventData","PlaylistLiveType","ServerRequest","SDK","Status","Sequences","UserActivity","UserProfile","SdkSession","ReauthorizationFailure","Endpoint","GraphQlBuilder","graphQl","_Object$getOwnPropertyDescriptor","_Object$getOwnPropertySymbols","_Object$keys","host","path","statusCode","requestId","roundTripTime","serverIp","cdnName","networkType","timeToFirstByte","objectAssign","compare","isBuffer","util","pSlice","functionsHaveNames","pToString","arrbuf","getName","func","truncate","inspect","something","actual","_deepEqual","isArguments","expectedException","_throws","shouldThrow","block","AssertionError","inherits","equal","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","strict","objectKeys","BaseSequence","config","geoProvider","$SDK","clientId","clientApiKey","environment","debugEnabled","application","bootstrapConfiguration","mediaCapabilitiesProvider","GET","POST","DELETE","PATCH","PUT","PlayReadyMessage","DrmClient","QualityOfServiceDustUrnReference","storage","drmManagerConfiguration","accessTokenProvider","dustEnabled","keyLocation","playbackContext","PlaybackContext","playbackSessionId","offline","dustLogUtility","serverPlaybackContext","INVALID","actualTest","submitOrder","playerAdapter","ready","sdk","_LogLevel","none","trace","debug","0","1","2","3","4","5","retryBasePeriod","retryMultiplier","retryMaxAttempts","retryMaxPeriod","activeDate","countryCode","latitude","longitude","modes","GraphQlQuery","boolean","uuid","DrmType","tokenManager","headersCopy","authHeader","headers","item","EventEmitter","MediaPayload","MediaItem","mediaPayload","mediaDescriptor","MediaDescriptor","playhead","PlaylistType","MediaAnalyticsKey","Conviva","tracking","keyClean","trackingData","COMPLETE","videoSegmentTypes","audioSegmentTypes","playbackVariants","stream","slide","SLIDE","renditions","audio","subtitles","getAvailablePlaylistTypes","preferredPlaylistType","getPlaylistType","getStreamUri","eventUrn","AccountApi","AccountManager","Gender","_Symbol$iterator","_Symbol","_typeof2","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","Item","noop","title","browser","env","argv","on","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","grantType","assertion","subjectTokenTypeKey","strictUriEncode","encode","extract","parse","opts","arrayFormat","keysSorter","input","line1","line2","line3","city","country","postalCode","ContentException","CoreStorageProvider","storedKeys","signature","operation","isClear","isRemove","SubscriptionApi","SubscriptionManager","BundleStatus","Product","ProductEntitlement","ProductStatus","SubscriptionProvider","SubscriptionSource","ReflectOwnKeys","ReflectApply","NumberIsNaN","_events","_eventsCount","_maxListeners","defaultMaxListeners","$getMaxListeners","_addListener","warning","onceWrapper","_onceWrap","_listeners","listenerCount","arrayClone","setMaxListeners","getMaxListeners","rawListeners","eventNames","LineItem","OrderCampaign","StrongCustomerAuth","lineItems","orderCampaigns","paymentMethodId","sca","GraphQlPersistedQuery","Dust","Telemetry","AdEngineManager","sdkver","adTargeting","AdEngineClient","advertisingIdProvider","AdvertisingIdProvider","geoLocation","coordinates","sdkGenerated","devid","lat","xny","adEngineObject","TelemetryManager","MediaClient","Presentation","determineAdInsertionStrategy","GeneratePlaybackScenario","deviceMeetsRequirements","determineCodecSupport","determineHdrSupport","determineAudioQuality","MediaManager","mediaManagerConfiguration","drmManager","telemetryManager","adEngineManager","MediaCapabilitiesProvider","playbackUrl","adInsertionStrategy","basePlaybackScenario","mediaPreferences","playbackScenario","getPlaybackScenario","mediaItem","priorityDrms","mediaManager","authCookieProvider","AuthCookieProvider","streamSampleInterval","playbackTelemetryConfiguration","PlaybackTelemetryConfiguration","telemetryDispatcher","PlaybackTelemetryDispatcher","PlaybackSession","isUhdAllowed","playbackScenarioDefault","restrictedPlaybackScenario","securityCheckRequirements","scenario","adInsertion","codec","hdrType","audioQuality","widevine","minimumSecurityLevel","isSecurityCheckRequired","deviceWidevineSecurityLevel","supportedCodecs","meetsRequirements","supportedHdrTypes","supportsAtmos","preferredAudioQuality","thumbnailLink","resolution","thumbnailSets","presentation","AdInsertionStrategy","contentId","MediaPreferences","PurchaseClient","ReceiptCredentials","PurchaseManager","purchaseManagerConfiguration","receiptCredentials","retryPolicy","accessStatus","AccessStatus","forceRefresh","purchaseActivationResult","receipt","logLevel","arrayWithoutHoles","iterableToArray","nonIterableSpread","profileId","profileName","metadata","description","defaultName","defaultMessage","stack","tokenData","AccountClientConfiguration","ServiceClientConfiguration","AdEngineClientConfiguration","AdobeIdentityClientConfiguration","BamIdentityClientConfiguration","CommerceClientConfiguration","ContentClientConfiguration","CustomerServiceClientConfiguration","DeviceClientConfiguration","DrmClientConfiguration","EligibilityClientConfiguration","ExternalActivationClientConfiguration","MediaClientConfiguration","PaywallClientConfiguration","PurchaseClientConfiguration","SessionClientConfiguration","TelemetryClientConfiguration","like","CoreHttpClientProvider","optionsBaseline","optionsMismatchError","responseData","AccountGrant","sku","price","subscriptionPeriod","subscriptionTimeUnit","Sku","Price","discountAmount","subtotalAmount","taxAmount","totalAmount","billingType","productDescription","currency","currencyCode","categories","sessionId","challengeToken","partner","EligibilityStatus","activationSucceeded","activationRetryingWithTda","activationRetryingWithoutTda","activationFailedWithTda","activationFailedWithoutTda","AdEngineClientDustUrnReference","httpClient","getPayload","AdEngineClientEndpoint","rel","credentials","href","requestHeaders","queryString","thumbnailWidth","thumbnailHeight","intervalMilliseconds","totalBytes","presentations","presentationType","thumbnailCount","offsetMilliseconds","paths","adPartner","drms","encryptionType","lastUpdated","thumbnails","bif","spritesheet","MediaThumbnailLink","_rng","_byteToHex","_hexToByte","unparse","buf","_seedBytes","_nodeId","_clockseq","_lastMSecs","v4","v1","campaignCode","voucherCode","unit","campaign","entitlements","introPrice","productType","Campaign","IntroPrice","ACTIVE","EXPIRED","FAILED","IGNORED","UNKNOWN","platform","zipCode","designatedMarketArea","SessionLocationType","contextState","refreshToken","DeviceManager","BAMTECH","APPLE","GOOGLE","ROKU","SAMSUNG","HULU","AMAZON","BillingAddress","billingAddress","isDefault","walletId","PaymentMethodType","PriceOrderRequestAddress","productIdentifiers","identifierType","orderCampaign","address","OrderItem","orderSubTotal","orderTaxAmount","orderTotalAmount","orderDiscountAmount","orderItems","adjustmentTimeLength","adjustmentTimeUnit","paymentRequired","region","average","peak","certificateType","cacheKey","certificate","storedCertificate","EligibilityManager","ExternalActivationManager","NONE","CSAI","SSAI","atmos","level1","level3","StreamSampleTelemetryEvent","isReleased","clearStreamInterval","isInitialized","logQosEvent","startRecordingSamples","interval","serverData","metrics","bitrate","streamSampleTelemetryEvent","intervalId","eventData","qosEnabled","StreamSampleConfiguration","RedeemRetryHandler","Receipt","EventSchema","EventValue","trackingParameters","ex","chalk","isChalkEnabled","hasConsole","hasWindow","levelMap","transformOutput","red","inputHTML","ansi_up","startTag","accountId","activeUserProfile","identities","activeProfile","identityId","providerId","accountNotFound","attributeValidation","invalidToken","linkSubscriptionPartial","accountBlocked","bamIdentity","attributeUpdateFailed","authenticationRequired","invalidCredentials","invalidEmail","invalidEmailSyntax","invalidPasscode","rateLimited","tokenAlreadyUsed","tokenInvalid","updateIdentityConflict","invalidPassword","authenticationBlocked","notFound","invalidData","invalidZipCode","invalidPaymentInformation","orderTimeout","orderProductBlocked","orderFraud","orderPaymentDeclined","paymentMethodNotFound","unpriceableOrder","authenticationExpired","invalidState","locationAcquisition","locationNotAllowed","network","temporarilyUnavailable","configurationNotFound","invalidRequest","accountResolution","huluService","invalidDustConfiguration","authorizationExpired","blackout","keyNotFound","loginRequired","mediaNotAllowed","mediaUnavailable","notEntitled","offlineNotPermitted","kidsModeEnabled","streamConcurrency","thumbnailsNotAvailable","activationFailed","retryFailed","activationTokenExpired","activationBadRequest","activationForbidden","bundleForbidden","maximumProfilesReached","profileRetrieval","userProfileDeleteFailed","userProfileNotFound","userProfileUpdateFailed","accessContextPackage","tokenType","expiresIn","issuedAt","refreshAt","other","propIsEnumerable","expirationBufferSeconds","bufferSeconds","configHostName","dev","prod","appletv","chromecast","netcast","panasonictv","orsay","sonybravia","trilithium","tivo","tizen","vizio","webos","checkOrderStatusDelay","api","service","qos","configHostParams","commonHeaders","loggerConfiguration","environmentConfiguration","processConfig","sdkVersion","versionHeader","platformHeader","loggingClientConfiguration","adobeIdentity","processServices","contentClientEndpoints","contentClientExtras","bamIdentityExtras","commerceExtras","commerceClientEndpoints","commerceClientExtras","commerceAutoRefreshRetryPolicy","tokenExtras","tokenClientEndpoints","tokenClientExtras","tokenAutoRefreshRetryPolicy","mediaExtras","purchaseAutoRefreshRetryPolicy","telemetryExtras","purchaseRetryPolicy","tokenRetryPolicy","commerceRetryPolicy","accountClientConfiguration","processEndpoints","adEngineClientConfiguration","adobeIdentityClientConfiguration","bamIdentityClientConfiguration","contentClientConfiguration","ContentClientExtrasMap","customerServiceClientConfiguration","deviceClientConfiguration","drmClientConfiguration","eligibilityClientConfiguration","externalActivationClientConfiguration","mediaClientConfiguration","purchaseClientConfiguration","sessionClientConfiguration","subscriptionClientConfiguration","SubscriptionClientConfiguration","telemetryClientConfiguration","tokenClientConfiguration","commerceClientConfiguration","CommerceClientExtrasMap","namespace","namespaceId","createPaymentMethodRegionalEndpoints","paywallClientConfiguration","AdEngineManagerExtrasMap","bufferConfigurationDefault","streamSampleBufferConfiguration","glimpseBufferConfiguration","qosBufferConfiguration","fastTrack","serviceEndpoints","endpoint","cookieEnabled","platformId","refreshThreshold","autoRefreshRetryPolicy","subjectTokenTypes","temporary","ttl","timeout","templated","updateAccountAttributes","accountGrant","refreshAccessToken","createPaymentMethodEast","createPaymentMethodWest","creditCardNumber","CreatePaymentMethodPassthroughData","passthroughData","alternateName","expiryMonth","expiryYear","ownerFullName","isShared","isReusable","usage","brand","cardType","firstSix","isCorporate","issuer","lastFour","PaymentCardType","DEBIT","CREDIT","PaymentCard","Other","redemptionCode","guid","orderStatus","strongCustomerAuth","orderStatusKey","OrderStatus","StrongCustomerAuthRequirements","paymentOk","temporaryDirectAccess","authOk","success","redirect","affiliateTracking","cardSecurityCode","AffiliateTracking","affiliateId","partnerId","returnUrl","bookmarks","bookmarksPersisted","catalog","searchPersisted","searchSuggestions","sportsData","sportsDataPersisted","watchlist","watchlistPersisted","autoSuggest","deviceFamily","applicationRuntime","deviceProfile","silkKey","fairPlayCertificate","fairPlayLicense","widevineCertificate","widevineLicense","playReadyLicense","partners","Partner","eligible","ineligible","temporaryAccessGranted","resultStatus","resultStatusKey","TemporaryDefaultAccessActivationStatus","setToken","setTokenRedirect","language","BifThumbnailSet","ThumbnailSet","SILK","PLAYREADY","WIDEVINE","FAIRPLAY","MediaPayloadStream","MediaPlayhead","MediaThumbnailLinks","Success","NoPlayhead","Unavailable","playbackCookie","spriteSheetThumbnails","spriteSheetThumbnail","bifThumbnails","bifThumbnail","SpriteThumbnailSet","thumbnailRows","thumbnailColumns","quality","generatedAt","expiresAt","oneTimePasscode","nonEmptyArray","validOperations","AuthenticationFlow","operations","identityLogin","startPasswordReset","otpRequest","otpRedeem","RedeemedPasscodeToken","securityAction","forgotPassword","postEvent","dustEvent","replyAfter","eventString","playHead","play_head","playback_session_id","correlationIds","DustDevicePayload","DustApplicationPayload","DustSdkPayload","eventId","os","model","accountActiveEntitlement","accountExpiredEntitlement","accountNeverEntitled","anonymous","accountEntitlementContext","paywallHash","products","D2C","IAP","day","year","PurchaseActivationStatus","purchases","receiptBundle","identifierForVendor","location","profile","inSupportedLocation","isSubscriber","SessionAccountInfo","SessionDeviceInfo","SessionLocation","SessionProfileInfo","SessionEntitlement","ANONYMOUS_IP","COUNTRY_CODE","LOW_CONFIDENCE","PROXIED_IP","UNAVAILABLE","ZIP_CODE","PENDING_VOLUNTARY_CANCEL","PENDING_INVOLUNTARY_CANCEL","VOLUNTARY_CANCEL","INVOLUNTARY_CANCEL","LAPSED","SUBSCRIBED","UNSUBSCRIBED","unknown","active","inactive","MemoryStore","SubscriptionClient","subscriptionManagerConfiguration","subscriptions","subscriptionData","access","cacheKeyLegacy","isLegacyToken","saveAccess","getAccessFromStorage","contextStateModes","accessStorage","hasTokenChanged","providerToken","deviceGrant","saveDeviceGrant","getDeviceGrantFromStorage","ProductRule","SubscriptionExpiryType","SubscriptionStatus","SubscriptionType","SubscriptionOffer","SubscriptionFreeTrial","deviceId","expirationDate","expiryType","externalIdentity","isActive","lastSyncDate","nextRenewalDate","rule","startDate","purchaseDate","bundle","offer","freeTrial","productsArray","bundleStatus","hasAccountId","notBundle","categoryCodes","productEntitlements","errorReason","AVAILABLE","SubscriptionSourceSubType","SubscriptionSourceType","ref","subType","AccountClient","identityToken","deleteUserProfileResult","accessState","accessContextState","CommerceApi","CommerceManager","CardPaymentMethodResponse","PaymentMethodInformation","PaymentMethodResponse","PriceOrderRequest","PriceOrderResponse","SubmitOrderWithCardPaymentMethodRequest","SubmitOrderWithPaymentMethodRequest","CommerceClient","CreatePaymentMethodRequest","ServicesPriceOrderRequest","ServicesSubmitOrderWithPaymentMethodRequest","request","priceOrderRequest","priceOrderResponse","serviceRequest","paymentMethodResponse","orderId","exceptions","createPaymentMethodResponse","ConfigurationManager","EmbeddedConfiguration","isFallback","defaultConfigHostName","Accept","bootstrap","ContentApi","ContentManager","ContentQuery","SearchOverrides","Bookmarks","Search","Watchlist","ContentClient","integer","positive","contentManagerConfiguration","overrides","contentTransactionId","queryOptions","graphQlBuilder","suggestionSet","bookmarkQuery","BookmarksQuery","searchQuery","SearchQuery","watchlistQuery","WatchlistQuery","removeFromWatchlistQuery","RemoveFromWatchlistQuery","addToWatchlistQuery","AddToWatchlistQuery","clearWatchlistQuery","ClearWatchlistQuery","graphQlPersistedQuery","contentIds","CustomerServiceManager","completed","canceled","noNetwork","post","put","delete","patch","dns","notConnected","prohibited","cellular3g","cellular4g","cellular5g","wifi","ethernet","sliding","networkFailure","concurrency","pcon","contentNotAvailable","applicationExit","applicationBackground","user","playedToEnd","drmHdcp","drmDecryption","drmExpiredLicense","drmSecurityLevel","drmOther","serviceError","autoplay","userAction","autoAdvance","background","pip","transferred","app","trickplay","scrub","skip","DrmClientEndpoint","failureEvent","certificateStorage","Adobe","Bam","AdobeIdentityClient","AdobeIdentityManager","adobeIdentityManagerConfiguration","adobeIdentityClient","adobeRegistration","adobeId","AdobeRegistration","OneTimePasscodeRequestReason","BamIdentityClient","BamIdentityManager","identityTokenStorage","isTokenValid","newPassword","oldPassword","resetToken","authenticationFlowResponse","passcode","DustServerPayload","DustClientPayload","DustSink","enabled","sdkConfigApplication","applicationData","initialized","dustServerPayload","dustClientPayload","DustEvent","createDustEvent","TelemetryClient","telemetryManagerConfiguration","streamSampleBuffer","EventBuffer","bufferConfiguration","eventBuffer","trackingBuffer","qosBuffer","TelemetryClientEndpoint","postMethod","isScheduled","batchLimit","replyAfterFallback","minimumBatchSize","telemetryEvent","TelemetryEvent","isFastTrackEvent","telemetryPayload","clearSchedule","telemetryPayloads","telemetryResponse","processBatch","DustPayload","AdEngine","MediaApi","AtvPlayerAdapter","BamWebPlayerAdapter","TrilithiumPlayerAdapter","Html5PlayerAdapter","HlsJsPlayerAdapter","CafPlayerAdapter","ChromecastPlayerAdapter","SamsungOrsayPlayerAdapter","SamsungTizenPlayerAdapter","BamHlsPlayerAdapter","DssWebPlayerAdapter","HdrType","ThumbnailResolution","PlaybackMetrics","AudioQuality","SupportedCodec","WidevineSecurityLevel","devId","_limitTracking","PlaybackSessionDustUrnReference","bindTokenProviderEvents","streamUrl","playbackAttributes","preferredPlaylist","cdn","corigin","ssess","adEngineOptions","hasAtvPlayerAdapter","providers","providerReference","Provider","hasBamWebPlayerAdapter","hasTrilithiumPlayerAdapter","hasChromecastPlayerAdapter","hasCafPlayerAdapter","hasBamHlsPlayerAdapter","hasNeedForFilter","hasDrms","hasDrmProvider","hasDrmProviders","createDrmProviders","filterDrms","currentDrms","filteredDrms","priorityDrm","busReference","secureKeyDelivery","unavailableMetric","boundHandlers","onPlay","onPause","onError","onPlayedToCompletion","onPlayerTimeDidChange","playerState","newState","playlistUri","cancelAllRequests","fetchCertificate","fetchAssetId","fetchKeys","uri","assetId","assetIdFromUri","requestData","serverContext","spc","assetID","dispatcher","PlayerEvents","MEDIA_START","MEDIA_RESUME","MEDIA_PAUSED","MEDIA_ERROR","MEDIA_COMPLETE","drmProviders","setDrmConfiguration","keySystems","keySystem","licenseRequestUri","licenseRequestHeadersCallback","serverCertificate","onEncryptionKey","onAudioChanged","onRebufferingEnded","onPlaybackExited","onPlaybackInitialized","onPlaybackSeeked","onSubtitleChanged","onBitrateChanged","onMasterPlaylistFetched","onVariantPlaylistFetched","onMediaSegmentFetched","onPlaybackReady","onPlaybackStarted","onPlaybackPaused","setCallback","keyObject","eventCallback","clientCallback","format","xmlData","onLicenseRequestReady","drmType","playerApi","mediaElement","updateAudioSegmentFormat","updateVideoSegmentFormat","audioSegmentFormat","videoSegmentFormat","isAdEngineCall","requestInfo","protectionSystem","framework","playbackConfig","getCurrentPlayhead","playbackExitedEvent","playbackReadyEvent","playbackStartedEvent","playbackInitializedEvent","rebufferingEvent","playbackSeekedEvent","bitrateChangedEvent","playbackPausedEvent","BUFFERING","PLAY","PLAYING","PAUSE","MEDIA_FINISHED","BITRATE_CHANGED","SEEKED","SEEKING","PLAYER_LOAD_COMPLETE","currentTimeSec","rebufferingStartedEventData","onRebufferingStarted","rebufferingEndedEventData","END_OF_STREAM","STOPPED","endedReason","currentMediaTime","cause","playbackExitedEventData","startAbsoluteTime","playbackInitializedEventData","playbackSeekedEventData","toPlayhead","fromPlayhead","bitrateChangedEventData","playbackReadyEventData","playbackPausedEventData","nativePlayerInstance","setupXhrCallback","currentTime","errorCode","Events","playbackResumedEvent","rebufferingStartedEvent","rebufferingEndedEvent","subtitleChangedEvent","masterPlaylistFetchedEvent","variantPlaylistFetchedEvent","audioChangedEvent","PLAYBACK_PLAYING","PLAYBACK_PAUSED","STREAM_STATE_CHANGED","STREAM_PLAYBACK","STREAM_CANPLAYTHROUGH","PLAYBACK_SEEKING","STREAM_VARIANTS_CHANGED","PLAYBACK_ENDED","STREAM_BUFFERING_STARTED","STREAM_BUFFERING_FINISHED","STREAM_CURRENTSUBTITLERENDITION_CHANGED","MANIFEST_LOADED","VARIANT_UPDATED","STREAM_CURRENTAUDIOTRACK_CHANGED","STREAM_ERROR","fatal","messageDetailed","errorCase","drmCapabilities","drmProvidersIndex","DataTypes","isKeyCall","xhr","playbackStartedEventData","playbackResumedEventData","onPlaybackResumed","areSubtitlesEnabled","currentSubtitleRendition","audioTracks","currentAudioTrack","startBitrate","subtitleRendition","subtitleName","subtitleLanguage","variant","audioCodec","videoCodec","audioTrack","audioName","audioLanguage","audioChannels","subtitleVisibility","isEnded","subtitleChangedEventData","audioChangedEventData","isLive","isSlidingWindow","parseUrl","liveType","serverRequest","masterPlaylistFetchedEventData","details","attrs","loadError","bandwidth","channels","averageBandwidth","variantPlaylistFetchedEventData","configRequiresLevel1","deviceSupportsLevel1","h264","h265","dolbyVision","hdr10","low","medium","high","PaywallApi","PaywallManager","PaywallClient","PurchaseApi","Purchases","PurchaseType","PurchaseActivationResult","policy","isTemporary","attempts","hasRetryMaxPeriod","retryDelay","getLaunchpadQaGraphQlQuery","PlaybackSequence","queryContext","graphQlQuery","exceptionIdentifier","clearOnComplete","HTML5PlayerAdapter","contentQuery","AssertionErrorMessages","contentData","serializedData","serializedDataMatch","createPlaybackSessionErrorMessage","playlistErrorMessage","playerAdapterReadyErrorMessage","SessionManager","UserActivityApi","UserActivityEvent","EventSchemata","EventSchemataProvider","Glimpse","Personalization","schemata","schemaArray","passthrough","_failures","eventPayload","schemaGeneratedData","GlimpseEvent","PersonalizationEvent","UserProfileApi","$Object","AccountApiDustUrnReference","accountManager","subscriptionManager","hadRuntime","oldRuntime","forProvider","sinks","metricOrMessage","sink","overrideLevel","baseLogLevel","metric","_Array$from","_isIterable","_setPrototypeOf","escapeStringRegexp","ansiStyles","stripAnsi","hasAnsi","supportsColor","defineProps","isSimpleWindowsTerm","Chalk","styles","build","_styles","applyStyle","hasColor","stripColor","matchOperatorsRe","ansiRegex","terminator","hasFlag","AccountClientEndpoint","CreateAccountResult","DeleteUserProfileResult","UpdateUserProfileResult","AccountClientDustUrnRefernce","refreshAccessTokenHeader","id_token","response","grant_type","userProfiles","requestBody","accountGetFailed","accountProfileDeleteFailed","accountProfileNotFound","accountProfileReadFailed","accountProfileUpdateFailed","accountProfilesMaxExceeded","clientRevoked","clockSync","copyFailure","copyLimitReached","idpErrorAttributesUpdateFailed","idpErrorIdentityAlreadyExists","idpErrorIdentityBadCredentials","idpErrorPayloadFieldsIncorrect","idpErrorResetTokenAlreadyUsed","idpErrorResetTokenInvalid","idpErrorInvalidPassword","idpErrorAuthenticationBlocked","idpErrorIdentityNotFound","invalidGrant","mediaMissing","mediaNotPlayable","notPermittedOffline","payloadFieldsIncorrect","payloadIdTokenInvalid","securityLevel","streamConcurrencyViolation","unauthorizedClient","unspecifiedDrmError","tokenExpired","tokenMissing","linkedElsewhere","tokenForbidden","expectedSubscriptionsNotFound","checkedSecurityAction","subjectType","TokenClientDustUrnReference","platformData","tokenRequest","apiKey","access_token","token_type","refresh_token","expires_in","webpackContext","req","webpackContextResolve","getResponseData","bodyType","hasArrayBufferType","parseHeaders","getHeaderWithKey","statusText","responseText","responseDataAsBase64","responseHeaders","canGetHeaders","headerStr","headerArr","parts","line","header","ConfigurationClientDustReference","sdkSessionConfiguration","configVersion","errorDescription","isError","isAcceptedErrorCase","checkAcceptedCase","createException","methodName","handleErrorCase","paymentMethods","thumbnailMethods","priceOrderCodes","processReasons","errorCodes","codes","defaultValue","applicationRuntimeProfile","applicationVersion","deviceRuntimeProfile","CACHE","REGEXES_OTHER","RegExes","REGEXES_VERSION","REGEXES_FORMFACTORS","vstr","varr","platformVersion","browserVersion","formFactor","getDeviceDetails","family","getPlatform","getPlatformVersion","getBrowser","getBrowserVersion","getFormFactor","formFactorTest","formFactors","ar","safeArray","ua","reMap","CASE","IOS","BB","ANDROID","WINDOWS","LINUX","MAC","WEBOS","NETCAST","CHROMEBOOK","TIZEN","ORSAY","SONYBRAVIA","WINDOWS_PHONE","CHROMECAST","TIVO","APPLETV","TESLA","DESKTOP","OPEN","FORMFACTORS","desktop","phone","tablet","smarttv","connecteddevice","pattern","devices","regExes","groupIndex","windowsList","platforms","WINDOWSPHONE","MACINTOSH","PANASONICTV","BLACKBERRY","EDGE","CHROME","FIREFOX","OPERA","OPERAMINI","SAFARI","PHANTOMJS","browserCore","WEBKIT","GECKO","TRIDENT","default","ms","constants","CLOSE","PIPE","OTHER","VERSION","major","minor","revision","greater","urlSizeLimit","Request","Headers","hasBodyType","hasArrayBufferSupport","support","searchParams","blob","Blob","formData","arrayBuffer","viewClasses","isDataView","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","items","append","consumed","fileReaderReady","reader","readBlobAsArrayBuffer","bufferClone","Body","bodyUsed","_initBody","_bodyInit","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","rejected","chars","readArrayBufferAsText","json","oldValue","upcased","referrer","decode","form","decodeURIComponent","Response","bodyInit","redirectStatuses","Fetch","rawHeaders","preProcessedHeaders","httpClientInstance","CommerceClientEndpoint","CreatePaymentMethodResponse","QueryOrderResponse","SubmitOrderWithPaymentMethodResponse","ZipLocation","CommerceClientDustUrnReference","regionHeader","processOrderItems","processedOrderItems","processLocations","processedLocations","requestError","accessTokenError","guidResponse","queryOrderResponse","regionalEndpoint","orderItem","subscriptTimePeriod","locations","zipLocation","param","ContentClientEndpoint","ContentClientDustUrnReference","xGeoOverride","xDelorean","xContentTransactionId","overrideHeaders","requestMethod","operationName","variables","mthd","queryUrl","params","urlQueryString","queryId","queryStringParams","CustomerServiceClient","CustomerServiceClientEndpoint","CustomerServiceClientDustUrnReference","DeviceClient","DeviceClientEndpoint","DeviceMetadata","DeviceClientDustReference","deviceMetadata","DrmClientDustUrnReference","EligibilityClient","EligibilityClientEndpoint","EligibilityStatusResponse","EligibilityClientDustUrnRefernce","eligibilityData","eligibilityStatusResponse","Authorization","ActivationToken","ExternalActivationClient","ExternalActivationClientEndpoint","ExternalActivationResult","ExternalActivationClientDustUrnReference","temporaryAccessGrantedHeader","activationTokenString","linkToken","externalActivationResult","activationToken","MediaClientEndpoint","MediaPlayheadStatus","PlaybackRenditions","ThumbnailPresentationType","MediaClientDustUrnReference","getMediaPlayhead","mediaPlayhead","mediaPayloadStream","mediaThumbnailLinks","spritesheets","thumbnailsNotAvailableException","spriteThumbnailSets","bifs","bifThumbnailSets","remap","PlayheadFound","playheadStatus","queryChar","videoBytes","maxAudioRenditionBytes","maxSubtitleRenditionBytes","videoRange","audioType","BUMPER","MAIN","DUB_CARD","AdobeIdentityClientEndpoint","GetIdentityTokenResult","mvpdId","getAdobeRegistration","getIdentityToken","temporaryGrant","AuthenticationFlowResponse","BamIdentityClientEndpoint","BamIdentityClientDustUrnReference","passwordResetToken","redeemedPasscodeToken","TelemetryPayload","TelemetryResponse","StreamSamplePayload","StreamSampleClientPayload","TelemetryClientDustUrnReference","replyAfterHeader","requestIdHeader","rng","crypto","AccountEntitlementContext","PaywallClientEndpoint","ProductType","TimeUnit","PaywallClientDustUrnRefernce","processProducts","skus","_campaign","_introPrice","product","PurchaseClientEndpoint","PurchaseActivation","PurchaseClientDustUrnReference","invalid","purchaseActivations","errorReasons","SessionClient","SessionClientEndpoint","SessionInfo","SessionClientDustUrnReference","sessionInfoId","zip_code","country_code","dma","sessionAccountInfo","sessionDeviceInfo","sessionLocation","sessionProfileInfo","entitlementInstances","entitlement","SubscriptionClientEndpoint","SubscriptionStatusSubType","SubscriptionStatusType","SubscriptionFreeTrialStatus","statusObj","SubscriptionClientDustReference","EXPIRY","NO_EXPIRY","GIFT_SUB","GIFT_CARD","PAID","PROMO_REDEMPTION","COMP","TEMP","INITIAL","MVPD","CST","EXT","BAM_IDENTITY","BEARER","EXTERNAL_IDENTITY","endDate","ruleObj","scope","hasLocalStorage","storeMessage","fileSystemInstance","curWidgetInstance","fileSystem","widgetId","fileStorage","fileObj","openCommonFile","closeCommonFile","dataStr","localStorageInstance","SubscriptionApiDustUrnReference","deviceManager","versionShort","tokenManagerConfiguration","grant","subjectTokenType","exchangeGrant","tokenRequestBuilder","deviceGrantResetRetry","deviceGrantResetMaxAttempts","isDeviceGrant","force","refresh","timeToRefresh","refreshGrant","storedDeviceGrant","clearRetryRefresh","accessContext","hasRefreshToken","delay","retryAttempt","refreshTimeoutId","retryRefresh","deviceGrantStorage","getIdentityTokenFromStorage","identityTokenFromStorage","female","male","unspecified","CommerceApiDustUrnReference","commerceManager","paymentInformation","passThroughData","createPaymentMethodRequest","processedPaymentMethodResponse","getPaymentMethodResponse","ConfigurationManagerDustUrnReference","packageData","configurationClientConfiguration","embeddedConfiguration","storedSdkSessionConfiguration","fallbackConfiguration","platformOverride","platformProfile","ContentApiDustUrnReference","contentManager","SearchExtensions","WatchlistExtensions","BookmarkExtensions","customerSupportCode","live","fguid","video","subtitle","videoPlayerName","videoPlayerVersion","bufferedTime","playbackIntent","preBuffer","licenseRequestHeaders","AdobeIdentityApi","AdobeActivationResult","adobeIdentityManager","BamIdentityApi","BamIdentityApiDustUrnReference","bamIdentityManager","newEmail","streamSampleClientPayload","MediaApiDustUrnReference","isPreBuffering","playbackSelectedEvent","playbackSessionTransferredEventData","thumbnailUrl","thumbnailResolution","spriteSheetUrl","sourceElement","currentLevel","streamingProperty","onCurrentPlayTime","playerListener","onbufferingstart","onerror","onstreamcompleted","oncurrentplaytime","clientListener","getBitrate","currentStreamInfo","hasClientListener","hasPlayerListener","extraInfo","setXhrConfigProvider","mediaSegmentFetchedEvent","events","PLAYBACK","MEDIA_RESUMED","MEDIA_STARTED","INITIALIZED","READY","MEDIA_SEEK_COMPLETE","EXITED","BUFFERING_STARTED","BUFFERING_ENDED","VARIANT_LOADED","CHUNK_LOADED","ACTIVE_PROFILE_CHANGED","QUALITY","SUBTITLE_SELECTED_TRACK_CHANGED","CAPTIONS","SELECTED_TRACK_CHANGED","AUDIO_SELECTED_TRACK_CHANGED","AUDIO","isCorrectListener","getDrmConfiguration","resetSource","resetDrmProviders","startupPosition","mediaSegmentFetchedEventData","_Reflect$get","superPropBase","_get","PaywallApiDustUrnReference","paywallManager","PurchaseApiDustUrnReference","purchaseManager","externalActivationManager","eligibilityManager","AppleIAP","GoogleIAP","DirectToConsumer","Playback","PlaybackCleanup","PlaybackExternalAccount","CommerceStoredPayment","OneTimePasscode","formatRegExp","deprecate","debugEnviron","debugs","stylizeWithColor","stylizeNoColor","formatValue","formatError","formatProperty","isBoolean","isNull","isNumber","isString","isUndefined","isDate","objectToString","pad","debuglog","colors","isNullOrUndefined","isPrimitive","months","_extend","kCustomPromisifiedSymbol","callbackifyOnRejected","promisify","custom","callbackify","PlaybackCleanupSequence","sequenceOptions","playerAdapterErrorMessage","fetchExternalAccountToken","PlaybackExternalAccountSequence","accountToken","configurationHostName","accountGrantToken","playbackSessionErrorMessage","UserProfileSequence","languagePreferences","playbackLanguage","subtitleAppearance","backgroundColor","backgroundOpacity","textColor","font","appLanguage","parentalControls","tv","restrictions","contentMaturityRating","advisoryFilters","drugs","badLanguage","discrimination","scary","sexual","violence","ratingSystem","movie","playbackSettings","previewAudioOnHome","previewVideoOnHome","isTest","_userProfile","_userProfiles","updatedProfile","getUserProfileErrorMessage","priceOrderRequestAddress","firstName","lastName","middleName","paymentMethodInformation","UserActivitySequence","DustGlimpseReference","UserActivityAction","GlimpseEvents","appLaunchedUrn","contentSelectedUrn","rewardToken","action","recommendedContentIds","globalCountryCode","userActivityApi","schemataOptions","additionalParameters","additionalTrackingParameter","overriddenParameters","payloadParams","extraParameters","mashupParameter1","mashupParameter2","OneTimePasscodeSequence","authenticationFlows","authenticationFlowErrorMessage","TemporaryAccess","PersonalizationApiDustUrnReference","schemataProvider","rewardContentId","parameters","globalTrackingData","debuggingPayload","GlimpseUrnReference","PersonalizationEvents","PersonalizationDustUrnReference","CLICK","UserProfileApiDustUrnReference","SdkSessionDustUrnReference","managers","enableDustSink","sessionManager","customerServiceManager","dustSink","processedDirective","SDK_VERSION","SDK_VERSION_SHA","sdkVersionShort","tokenRefreshFailure","directives","_createClass","props","protoProps","staticProps","_checkTypes2","_interopRequireDefault","_bamBrowserSdk2","_geoProviderMock2","_classCallCheck","eventEmitter","sdkSessionPromise","SdkSessionUtil","mockGeoLocation","GeoProviderMock","catch","not","SDK_SESSION_UTIL_KEY","for","API","freeze","_SDK$Token$GeoProvide","ReferenceError","_this","superClass","_inherits","_bamBrowserSdk","assertImpl","modifiedPredicate","collection","modifier","functions","base","strings","al","messages","predicates","iteration","any","neginf","posinf","haveSymbols","maybe","ofModifier","createOfModifiers","__WEBPACK_AMD_DEFINE_RESULT__","exportFunctions","er","fired","UserManagerException","sdkSessionUtil","_sdkSession","getSdkSession","getEmail","getAttribute","errorConstants","getAttributes","newValue","newAttribute","setAttributes","newAttributes","Activation","activationResult","activationError","isLoggedIn","loggedInState","flows","login","identityTokenObject","logout","getIdentityAttributes","isExpired","localStorageSubscriptionsKey","subs","setSubscriptionsInLocalStorage","externalId","activeSubscriptions","sub","expires","localStorageSubscriptionsObj","stringifiedSubscriptionsObj","localStorage","getSubscriptionsFromLocalStorage","localStorageItem","removeSubscriptionsFromLocalStorage","External","defaultProvider","localStorageExternalIdKey","setProvider","getExternalIdFromLocalStorage","setExternalIdInLocalStorage","stringifiedStorageItem","checkExternalIdMatches","_externalId","storedId","externalToken","syncExternalToBtm","externalLoggedIn","isLoggedInBtm","localStorageVal","Profile","getActiveProfile","getProfiles","getProfile","createProfile","setActiveProfile","deleteProfile","initialProfile","updatedAttributes","updateName","newName","updatedProperties","sessionInfo","getAccessToken","ios","bb","android","windows","winpdsk","winpold","winphone","linux","mac","chromebook","windowsphone","blackberry","macintosh","u","h","webkit","gecko","trident","edge","msie","chrome","firefox","opera","operamini","silk","safari","screenOrientation","matchMedia","matches","CustomEvent","bubbles","cancelable","detail","evt","createEvent","initCustomEvent","customEventPolyfill"],"mappings":"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AQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,IACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EA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,4BAGA,WAGO,SACP,SAGA,UAGA,OADA,aACA,EAGA,gBACA,UACA,OACA,iBACA,OACA,uCACA,eAEA,QACA,UAIA,gBACA,kBAGA,cACA,YAiBA,OAfA,YACA,UACA,UAEA,QAEA,oCACA,2BACA,gBACA,cACA,YACA,6CAIA,EAGA,gBACA,qBASA,gBACA,uBACA,wBAj2BA,GACA,UACA,WACA,WACA,YACA,WACA,SACA,UACA,gBACA,aACA,SACA,aACA,YAGA,KACA,KAEA,CACA,CAAK,YAoFL,cACA,cArFK,OACL,CAAK,gBA4FL,YACA,mBA7FK,OACL,CAAK,WAoGL,YACA,iBArGK,OACL,CAAK,wBACL,CAAK,gBAoHL,YACA,MAEA,UACA,UACA,YACA,OACA,OACA,SAIA,iBADA,aACA,+BAhIK,OACL,CAAK,eAycL,cACA,cAEA,SACA,SAGA,uCACA,aAEA,GAGA,IAFA,YAEA,UACA,gBAEO,QAEP,SAKA,IAFA,iBACA,WACA,IAAe,MAAY,EAC3B,eACA,SAIA,UAteK,OACL,CAAK,WAsIL,YACA,eAtIA,CAAK,eA8IL,YACA,sBA9IA,CAAK,gBACL,CAAK,iBACL,CAAK,WAsKL,YACA,mCAtKA,CAAK,UA8KL,YACA,sBA9KA,CAAK,iBACL,CAAK,cACL,CAAK,cAsML,gBACA,WACA,YAGA,cA1MA,CAAK,wBACL,CAAK,qBACL,CAAK,cAoOL,gBACA,WACA,aAGA,eAxOA,CAAK,eAgPL,YACA,gBAhPA,CAAK,eAwPL,YACA,gBAxPA,CAAK,sBACL,CAAK,kBAwQL,YACA,cAzQK,OACL,CAAK,8BACL,CAAK,eAyRL,cACA,gCA1RK,OACL,CAAK,YAiSL,cACA,2BAlSK,OACL,CAAK,cAySL,YACA,sBA1SK,OACL,CAAK,sBACL,CAAK,kBAyTL,YACA,wCA1TK,OACL,CAAK,qBAiUL,YACA,sCAlUK,OACL,CAAK,8BACL,CAAK,eAuVL,cACA,IACA,eACA,6BACA,0DACK,SACL,WA7VK,OACL,CAAK,oBACL,CAAK,qBACL,CAAK,iBAoYL,YACA,2BArYK,OACL,CAAK,oBA4YL,YACA,4BA7Y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kBAGA,QAGA,wBAIA,OAHA,SACA,QAEA,GACA,mBACA,uBACA,GAGA,kBAGA,uBACA,oBACA,YAcA,MAXA,kBACA,oBACA,gBACO,mBACP,yBACA,qBACA,iBACO,uBACP,aAGA,GAGA,mBACA,mCAA8C,OAAQ,GACtD,yBACA,oBAGA,OAFA,uCACA,KACA,IAKA,kBACA,mCAA8C,OAAQ,GACtD,yBACA,iBACA,mBACA,qBACA,YACA,KAEA,UAMA,0CAGA,8BAaA,OAZA,eACA,cACA,aACA,WAGA,uBAGA,YAGA,IAnqBA,oBAEA,sCACA,6BACA,eAMA,OAFA,UAkMA,gBACA,QAEA,qBACA,SACA,gDAGA,UACA,eACA,QAKA,WAMA,IAHA,WACA,UAEA,CACA,iBACA,MACA,aACA,MACA,kBACA,UAIA,qBAGA,0BAEU,GAAD,oBACT,SAEA,MADA,IACA,MAGA,+BAES,qBACT,yBAGA,IAEA,eACA,sBAOA,GAJA,SACA,EACA,EAEA,UACA,SAGA,OACA,YACA,aAGS,mBACT,IAGA,iBACA,eA1QA,QAEA,EAcA,kBACA,IACA,OAAc,+BACT,SACL,OAAc,qBAiBd,cACA,cACA,cA4BA,cACA,+CACA,iBACA,6BAoCA,cAgCA,MAgCA,aA9BA,cACA,aACA,mCAnCA,oBACA,kBACA,oBAEO,CACP,YACA,UACA,UACA,oBACA,oBACA,6CACA,mBACW,YACX,oBAIA,qCAIA,UACA,QACS,YAGT,2BAvBA,SAiCA,aAIA,SAaA,SACA,EAGA,GACA,KA+GA,gBACA,2BACA,UAKA,GAFA,gBAEA,oBACA,uBAGA,kBACA,QACA,OAEA,oBAGA,SAIA,iBACA,oBACA,kDAGA,SAGA,4BAEA,oBAIA,OAHA,iBACA,YACA,gBACA,EAGA,YAEA,SAOA,QAGA,wBAGA,iBAQA,sBACA,gBACA,SAUA,gBACA,GANA,GA3BA,iBACA,wDACA,gBACA,GAoDA,cACA,OAAiB,aAEjB,SACA,iBAGA,SACA,kBACA,iBAGA,wBAGA,cACA,uBACA,uBACA,MACA,eAGA,cAIA,kBAAwB,gBACxB,kBACA,eA8BA,cACA,MACA,WACA,KACA,i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CACb,CAAa,yCACb,CAAa,qCACb,CAAa,0CACb,CAAa,uCACb,CAAa,yCAEb,CACA,CAAa,8CACb,CAAa,6CACb,CAAa,6CACb,CAAa,iDACb,CAAa,8CACb,CAAa,kDACb,CAAa,+CACb,CAAa,mDAOb,aACA,yDACA,cAGA,qCACA,KAEA,WACA,QACA,QAAmB,MAAO,EAC1B,QAAqB,MAAO,EAC5B,sBAJA,GAWA,WACA,IAEA,MAFA,yBACA,kBAAyC,iCAEzC,QAAmB,MAAO,EAC1B,QAAqB,MAAO,EAC5B,QAAuB,MAAO,EAC9B,2BAPA,GAcA,WACA,IAEA,EAFA,IACA,cAAsC,wBAEtC,QAAmB,OAAQ,QAC3B,uBALA,IAUA,wCACA,wCACA,qBACA,cACA,yBAIA,gCACA,sDACA,sCAIA,uCACA,6BAGA,qCAEA,sBADA,IACA,IAGA,oCACA,WACA,oBACA,YAEA,qBACA,iCAKA,OAFA,aAEA,YAGA,0CAIA,gBADA,gBAAkD,GAClD,2BACA,oBAeA,yEAEA,eAEA,WACA,kBAIA,yBACA,SAGA,MACA,SAKA,IAFA,WAEA,aACA,gBACA,cAEA,iBACA,eACA,YACS,MACT,WACS,MACT,UACS,MACT,UACS,YACT,0BACS,YACT,mBACS,YACT,mBACS,cACT,mBACS,gBACT,WACA,aACA,gBACA,gBACA,yBACA,0BACA,gBACA,KASmB,CACnB,YACA,kBACA,sBACA,EACA,OAEA,YAfA,GACA,wBAEA,EACA,UAEA,eAagB,GAAD,sBACf,0BACA,sBACA,sBACA,6CACA,sBACA,EAOA,GACA,sBACA,mBAEA,sBACA,kBAXA,EACA,OAEA,UArCA,GAuDA,4BACA,SAEA,SACA,KACA,KACA,cACA,IACA,EADA,KAEA,WACA,qBACA,sDAGA,sCAyBA,OAtBA,OACA,GACA,mBACA,wBACA,sCACA,sBAGA,+BAGA,OACA,GACA,mBACA,wBACA,sCACA,sBAGA,0CAGA,EACA,4DAEA,4BAAiD,iCAMjD,GAEA,4BAEA,OADA,OACA,oBAGA,oBAEA,OADA,OACA,YAGA,2BAEA,OADA,OACA,mBAGA,yBAEA,OADA,OACA,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GAErB,OACA,QACA,WAkBA,OAfA,4CACA,6CACA,KAEA,eACG,GAEH,eAGA,mCACA,wBACA,2BACA,yCACA,wBACA,eAoCA,SAASytF,EAAiBvgG,EAAI,GAC9B,kBAEA,SACA,0BACA,wBAEA,EAKA,SAASwgG,EAAexgG,EAAI,GAC5B,SAeA,SAASygG,EAAYt3G,EAAI,EAAzB,GAGA,oBACA,GACA,cAEA,yBAEA,6CACA,qBAIA,OAHA,OACA,YAEA,EAIA,MA+FA,SAAyBA,EAAI,GAC7B,QACA,0CACA,SACA,iDACA,oBACA,wBACA,6BAEA,YACA,yBACA,KACA,0BAEA,KACA,8BADA,EA7GA,MACA,KACA,SAIA,qBACA,EApCA,SAAqB29C,GACrB,SAMA,OAJA,yBACA,WAGA,EA6BA,IAQA,GANA,eACA,iCAKA,OACA,sDACA,YAIA,iBACA,SACA,4BACA,8CAEA,QACA,6DAEA,QACA,yDAEA,QACA,YAIA,IA2CA,EA3CA,iBAA4C,KA6B5C,OA1BA,OACA,KACA,aAIA,OAEA,gBADA,uBACA,KAIA,OACA,yCAIA,OACA,0CAIA,OACA,YAGA,6BAIA,IACA,KACA,sDAEA,iCAIA,eAIA,EADA,EAsCA,SAAqB39C,EAAI,EAAzB,OAEA,IADA,SACA,eAAmC,MAAO,EAC1C,eACA,iBACA,eAEA,WASA,OANA,uBACA,kBACA,iBACA,UAGA,EArDA,YAEA,mBACA,yBAIA,aA6GA,SAA8Bo3B,EAAO,EAArC,GAQA,OANA,wBAGA,OADA,gBACA,6CACG,GAEH,GACA,MACA,mBACA,IACA,gBACA,IACA,KAGA,iCA5HA,SAxBA,YA+CA,SAASmgF,EAAY14G,GACrB,+CAwBA,SAAS24G,EAAex3G,EAAI,EAA5B,SACA,UAsCA,IArCA,yCAAyD,aACzD,IAEA,EADA,MACA,uCAEA,gCAGA,QACA,mCAGA,SACA,aAEA,IACA,2BAEA,EADA,KACA,kBAEA,kBAEA,mBAEA,EADA,EACA,+BACA,gBACW,qBAEX,oCACA,iBACW,YAIX,qCAGA,MACA,uBACA,UAEA,wBACA,uCACA,yBACA,wBAEA,wBACA,oBACA,wB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AM,WACAmF,YACAzG,WACAS,SACAvB,UACAgjH,gBACA/iH,aACAU,SACA0E,aACA/E,YAGA2iH,KACAC,OAGKphH,YAoFL,cACA,cArFKA,QACAA,gBA4FL,YACA,mBA7FKA,QACAA,WAoGL,YACA,iBArGKA,QACAA,yBACAA,gBAoHL,YACA,MAEA,UACA,UACA,YACA,OACA,OACA,SAIA,iBADAa,aACA,+BAhIKb,QACAA,eAycL,cACA,cAEA,SACA,SAGA,uCACAgN,aAEA,GAGA,IAFAq0G,YAEA,UACA,gBAEOA,QAEP,SAKA,IAFAl3G,iBACAlF,WACA,IAAe9G,MAAYA,EAC3B,eACA,SAIA,UAteK6B,QACAA,WAsIL,YACA,eAvIKA,CACAA,eA8IL,YACA,sBA/IKA,CACAA,iBACAA,kBACAA,WAsKL,YACA,mCAvKKA,CACAA,UA8KL,YACA,sBA/KKA,CACAA,kBACAA,eACAA,cAsML,gBACA,WACA,YAGA,cA3MKA,CACAA,yBACAA,sBACAA,cAoOL,gBACA,WACA,aAGA,eAzOKA,CACAA,eAgPL,YACA,gBAjPKA,CACAA,eAwPL,YACA,gBAzPKA,CACAA,uBACAA,kBAwQL,YACA,cAzQKA,QACAA,+BACAA,eAyRL,cACA,gCA1RKA,QACAA,YAiSL,cACA,2BAlSKA,QACAA,cAySL,YACA,sBA1SKA,QACAA,uBACAA,kBAyTL,YACA,wCA1TKA,QACAA,qBAiUL,YACA,sCAlUKA,QACAA,+BACAA,eAuVL,cACA,IACA,eACA4Q,6BACA3R,0DACK,SACL,WA7VKe,QACAA,qBACAA,sBACAA,iBAoYL,YACA,2BArYKA,QACAA,oBA4YL,YACA,4BA7YKA,QACAA,2BACAA,eA4ZL,YACA,SAKA,4BAHA,MA/ZKA,QACAA,WAwdL,YACA,kCAzdKA,QACAA,yBACAA,gBA6cL,cACA,2BA9cKA,QACLwO,iBACA,UACA2yG,4BACAC,YAGAL,GACAr7G,MAmeA,cAGA,OAFAq1C,WAEA,KACA,mBACA,gBAIAA,WACAA,wBAEA,qBACA,oBA/eAvsC,IA4fA,cAGA,OAFAusC,YAEA,KASA,cACA,SAMA,OAJA97C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","file":"scripts/basesite_script_bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/builds/fa59ea303b5ccbef7a9c0e4847447a0c49490456_1575396641485/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 124);\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var core = module.exports = { version: '2.6.10' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = false;\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = {};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","exports.f = require('./_wks');\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","var core = module.exports = { version: '2.6.10' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","if(!global[\"btmShared\"]) global[\"btmShared\"] = {};\nmodule.exports = global[\"btmShared\"][\"bamBrowserSDK\"] = require(\"-!/usr/workdir/__shared/__app/node_modules/babel-loader/lib/index.js!./bam-browser-sdk.debug.js\");","if(!global[\"btmShared\"]) global[\"btmShared\"] = {};\nmodule.exports = global[\"btmShared\"][\"sessionUtil\"] = require(\"-!/usr/workdir/__shared/__app/node_modules/babel-loader/lib/index.js!./bam-browser-sdk-sdkSession-util.js\");","// List of shared libraries across the site\n// These will be bundled with the basesite\n// These are accessed on the global window under the bamShared object\nimport '@babel/polyfill';\nimport 'focus-visible/dist/focus-visible.js';\nimport 'bam-browser-sdk';\nimport 'bam-browser-sdk-sdkSession-util';\nimport 'btm-user-manager';\nimport 'dss-device';\nimport './polyfills';\n\nconsole.log('Basesite entry');\n","\"use strict\";\n\nrequire(\"./noConflict\");\n\nvar _global = _interopRequireDefault(require(\"core-js/library/fn/global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nif (_global[\"default\"]._babelPolyfill && typeof console !== \"undefined\" && console.warn) {\n console.warn(\"@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended \" + \"and may have consequences if different versions of the polyfills are applied sequentially. \" + \"If you do need to load the polyfill more than once, use @babel/polyfill/noConflict \" + \"instead to bypass the warning.\");\n}\n\n_global[\"default\"]._babelPolyfill = true;","\"use strict\";\n\nrequire(\"core-js/es6\");\n\nrequire(\"core-js/fn/array/includes\");\n\nrequire(\"core-js/fn/array/flat-map\");\n\nrequire(\"core-js/fn/string/pad-start\");\n\nrequire(\"core-js/fn/string/pad-end\");\n\nrequire(\"core-js/fn/string/trim-start\");\n\nrequire(\"core-js/fn/string/trim-end\");\n\nrequire(\"core-js/fn/symbol/async-iterator\");\n\nrequire(\"core-js/fn/object/get-own-property-descriptors\");\n\nrequire(\"core-js/fn/object/values\");\n\nrequire(\"core-js/fn/object/entries\");\n\nrequire(\"core-js/fn/promise/finally\");\n\nrequire(\"core-js/web\");\n\nrequire(\"regenerator-runtime/runtime\");","require('../modules/es6.symbol');\nrequire('../modules/es6.object.create');\nrequire('../modules/es6.object.define-property');\nrequire('../modules/es6.object.define-properties');\nrequire('../modules/es6.object.get-own-property-descriptor');\nrequire('../modules/es6.object.get-prototype-of');\nrequire('../modules/es6.object.keys');\nrequire('../modules/es6.object.get-own-property-names');\nrequire('../modules/es6.object.freeze');\nrequire('../modules/es6.object.seal');\nrequire('../modules/es6.object.prevent-extensions');\nrequire('../modules/es6.object.is-frozen');\nrequire('../modules/es6.object.is-sealed');\nrequire('../modules/es6.object.is-extensible');\nrequire('../modules/es6.object.assign');\nrequire('../modules/es6.object.is');\nrequire('../modules/es6.object.set-prototype-of');\nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.function.bind');\nrequire('../modules/es6.function.name');\nrequire('../modules/es6.function.has-instance');\nrequire('../modules/es6.parse-int');\nrequire('../modules/es6.parse-float');\nrequire('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nrequire('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nrequire('../modules/es6.string.from-code-point');\nrequire('../modules/es6.string.raw');\nrequire('../modules/es6.string.trim');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/es6.string.code-point-at');\nrequire('../modules/es6.string.ends-with');\nrequire('../modules/es6.string.includes');\nrequire('../modules/es6.string.repeat');\nrequire('../modules/es6.string.starts-with');\nrequire('../modules/es6.string.anchor');\nrequire('../modules/es6.string.big');\nrequire('../modules/es6.string.blink');\nrequire('../modules/es6.string.bold');\nrequire('../modules/es6.string.fixed');\nrequire('../modules/es6.string.fontcolor');\nrequire('../modules/es6.string.fontsize');\nrequire('../modules/es6.string.italics');\nrequire('../modules/es6.string.link');\nrequire('../modules/es6.string.small');\nrequire('../modules/es6.string.strike');\nrequire('../modules/es6.string.sub');\nrequire('../modules/es6.string.sup');\nrequire('../modules/es6.date.now');\nrequire('../modules/es6.date.to-json');\nrequire('../modules/es6.date.to-iso-string');\nrequire('../modules/es6.date.to-string');\nrequire('../modules/es6.date.to-primitive');\nrequire('../modules/es6.array.is-array');\nrequire('../modules/es6.array.from');\nrequire('../modules/es6.array.of');\nrequire('../modules/es6.array.join');\nrequire('../modules/es6.array.slice');\nrequire('../modules/es6.array.sort');\nrequire('../modules/es6.array.for-each');\nrequire('../modules/es6.array.map');\nrequire('../modules/es6.array.filter');\nrequire('../modules/es6.array.some');\nrequire('../modules/es6.array.every');\nrequire('../modules/es6.array.reduce');\nrequire('../modules/es6.array.reduce-right');\nrequire('../modules/es6.array.index-of');\nrequire('../modules/es6.array.last-index-of');\nrequire('../modules/es6.array.copy-within');\nrequire('../modules/es6.array.fill');\nrequire('../modules/es6.array.find');\nrequire('../modules/es6.array.find-index');\nrequire('../modules/es6.array.species');\nrequire('../modules/es6.array.iterator');\nrequire('../modules/es6.regexp.constructor');\nrequire('../modules/es6.regexp.exec');\nrequire('../modules/es6.regexp.to-string');\nrequire('../modules/es6.regexp.flags');\nrequire('../modules/es6.regexp.match');\nrequire('../modules/es6.regexp.replace');\nrequire('../modules/es6.regexp.search');\nrequire('../modules/es6.regexp.split');\nrequire('../modules/es6.promise');\nrequire('../modules/es6.map');\nrequire('../modules/es6.set');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es6.weak-set');\nrequire('../modules/es6.typed.array-buffer');\nrequire('../modules/es6.typed.data-view');\nrequire('../modules/es6.typed.int8-array');\nrequire('../modules/es6.typed.uint8-array');\nrequire('../modules/es6.typed.uint8-clamped-array');\nrequire('../modules/es6.typed.int16-array');\nrequire('../modules/es6.typed.uint16-array');\nrequire('../modules/es6.typed.int32-array');\nrequire('../modules/es6.typed.uint32-array');\nrequire('../modules/es6.typed.float32-array');\nrequire('../modules/es6.typed.float64-array');\nrequire('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('./_set-species')('Array');\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","require('../../modules/es7.array.flat-map');\nmodule.exports = require('../../modules/_core').Array.flatMap;\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","require('../../modules/es7.string.trim-left');\nmodule.exports = require('../../modules/_core').String.trimLeft;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","require('../../modules/es7.string.trim-right');\nmodule.exports = require('../../modules/_core').String.trimRight;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","require('./_wks-define')('asyncIterator');\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\nrequire('../../modules/es6.promise');\nrequire('../../modules/es7.promise.finally');\nmodule.exports = require('../../modules/_core').Promise['finally'];\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","require('../modules/web.timers');\nrequire('../modules/web.immediate');\nrequire('../modules/web.dom.iterable');\nmodule.exports = require('../modules/_core');\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","require('../modules/es7.global');\nmodule.exports = require('../modules/_core').global;\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * https://github.com/WICG/focus-visible\n */\n function init() {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName == 'INPUT' && inputTypesWhitelist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName == 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * Treat `keydown` as a signal that the user is in keyboard modality.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {Event} e\n */\n function onKeyDown(e) {\n if (isValidFocusTarget(document.activeElement)) {\n addFocusVisibleClass(document.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState == 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. ¯\\_(ツ)_/¯\n if (e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('focus', onFocus, true);\n document.addEventListener('blur', onBlur, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n addInitialPointerMoveListeners();\n\n document.body.classList.add('js-focus-visible');\n }\n\n /**\n * Subscription when the DOM is ready\n * @param {Function} callback\n */\n function onDOMReady(callback) {\n var loaded;\n\n /**\n * Callback wrapper for check loaded state\n */\n function load() {\n if (!loaded) {\n loaded = true;\n\n callback();\n }\n }\n\n if (['interactive', 'complete'].indexOf(document.readyState) >= 0) {\n callback();\n } else {\n loaded = false;\n document.addEventListener('DOMContentLoaded', load, false);\n window.addEventListener('load', load, false);\n }\n }\n\n if (typeof document !== 'undefined') {\n onDOMReady(init);\n }\n\n})));\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"bam-browser-sdk\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"bam-browser-sdk\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bam-browser-sdk-sdkSession-util\"] = factory(require(\"bam-browser-sdk\"));\n\telse\n\t\troot[\"bam-browser-sdk-sdkSession-util\"] = factory(root[\"bam-browser-sdk\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 426);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap bfb4f3fb110271d8b395","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/interopRequireDefault.js\n// module id = 0\n// module chunks = 0","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/classCallCheck.js\n// module id = 1\n// module chunks = 0","/*globals define, module, Symbol */\n/*jshint -W056 */\n\n(function (globals) {\n 'use strict';\n\n var strings, messages, predicates, functions, assert, not, maybe,\n collections, slice, neginf, posinf, isArray, haveSymbols;\n\n strings = {\n v: 'value',\n n: 'number',\n s: 'string',\n b: 'boolean',\n o: 'object',\n t: 'type',\n a: 'array',\n al: 'array-like',\n i: 'iterable',\n d: 'date',\n f: 'function',\n l: 'length'\n };\n\n messages = {};\n predicates = {};\n\n [\n { n: 'equal', f: equal, s: 'v' },\n { n: 'undefined', f: isUndefined, s: 'v' },\n { n: 'null', f: isNull, s: 'v' },\n { n: 'assigned', f: assigned, s: 'v' },\n { n: 'primitive', f: primitive, s: 'v' },\n { n: 'includes', f: includes, s: 'v' },\n { n: 'zero', f: zero },\n { n: 'infinity', f: infinity },\n { n: 'number', f: number },\n { n: 'integer', f: integer },\n { n: 'even', f: even },\n { n: 'odd', f: odd },\n { n: 'greater', f: greater },\n { n: 'less', f: less },\n { n: 'between', f: between },\n { n: 'greaterOrEqual', f: greaterOrEqual },\n { n: 'lessOrEqual', f: lessOrEqual },\n { n: 'inRange', f: inRange },\n { n: 'positive', f: positive },\n { n: 'negative', f: negative },\n { n: 'string', f: string, s: 's' },\n { n: 'emptyString', f: emptyString, s: 's' },\n { n: 'nonEmptyString', f: nonEmptyString, s: 's' },\n { n: 'contains', f: contains, s: 's' },\n { n: 'match', f: match, s: 's' },\n { n: 'boolean', f: boolean, s: 'b' },\n { n: 'object', f: object, s: 'o' },\n { n: 'emptyObject', f: emptyObject, s: 'o' },\n { n: 'nonEmptyObject', f: nonEmptyObject, s: 'o' },\n { n: 'instanceStrict', f: instanceStrict, s: 't' },\n { n: 'instance', f: instance, s: 't' },\n { n: 'like', f: like, s: 't' },\n { n: 'array', f: array, s: 'a' },\n { n: 'emptyArray', f: emptyArray, s: 'a' },\n { n: 'nonEmptyArray', f: nonEmptyArray, s: 'a' },\n { n: 'arrayLike', f: arrayLike, s: 'al' },\n { n: 'iterable', f: iterable, s: 'i' },\n { n: 'date', f: date, s: 'd' },\n { n: 'function', f: isFunction, s: 'f' },\n { n: 'hasLength', f: hasLength, s: 'l' },\n ].map(function (data) {\n var n = data.n;\n messages[n] = 'Invalid ' + strings[data.s || 'n'];\n predicates[n] = data.f;\n });\n\n functions = {\n apply: apply,\n map: map,\n all: all,\n any: any\n };\n\n collections = [ 'array', 'arrayLike', 'iterable', 'object' ];\n slice = Array.prototype.slice;\n neginf = Number.NEGATIVE_INFINITY;\n posinf = Number.POSITIVE_INFINITY;\n isArray = Array.isArray;\n haveSymbols = typeof Symbol === 'function';\n\n functions = mixin(functions, predicates);\n assert = createModifiedPredicates(assertModifier, assertImpl);\n not = createModifiedPredicates(notModifier, notImpl);\n maybe = createModifiedPredicates(maybeModifier, maybeImpl);\n assert.not = createModifiedModifier(assertModifier, not);\n assert.maybe = createModifiedModifier(assertModifier, maybe);\n\n collections.forEach(createOfPredicates);\n createOfModifiers(assert, assertModifier);\n createOfModifiers(not, notModifier);\n collections.forEach(createMaybeOfModifiers);\n\n exportFunctions(mixin(functions, {\n assert: assert,\n not: not,\n maybe: maybe\n }));\n\n /**\n * Public function `equal`.\n *\n * Returns true if `lhs` and `rhs` are strictly equal, without coercion.\n * Returns false otherwise.\n */\n function equal (lhs, rhs) {\n return lhs === rhs;\n }\n\n /**\n * Public function `undefined`.\n *\n * Returns true if `data` is undefined, false otherwise.\n */\n function isUndefined (data) {\n return data === undefined;\n }\n\n /**\n * Public function `null`.\n *\n * Returns true if `data` is null, false otherwise.\n */\n function isNull (data) {\n return data === null;\n }\n\n /**\n * Public function `assigned`.\n *\n * Returns true if `data` is not null or undefined, false otherwise.\n */\n function assigned (data) {\n return data !== undefined && data !== null;\n }\n\n /**\n * Public function `primitive`.\n *\n * Returns true if `data` is a primitive type, false otherwise.\n */\n function primitive (data) {\n var type;\n\n switch (data) {\n case null:\n case undefined:\n case false:\n case true:\n return true;\n }\n\n type = typeof data;\n return type === 'string' || type === 'number' || (haveSymbols && type === 'symbol');\n }\n\n /**\n * Public function `zero`.\n *\n * Returns true if `data` is zero, false otherwise.\n */\n function zero (data) {\n return data === 0;\n }\n\n /**\n * Public function `infinity`.\n *\n * Returns true if `data` is positive or negative infinity, false otherwise.\n */\n function infinity (data) {\n return data === neginf || data === posinf;\n }\n\n /**\n * Public function `number`.\n *\n * Returns true if `data` is a number, false otherwise.\n */\n function number (data) {\n return typeof data === 'number' && data > neginf && data < posinf;\n }\n\n /**\n * Public function `integer`.\n *\n * Returns true if `data` is an integer, false otherwise.\n */\n function integer (data) {\n return typeof data === 'number' && data % 1 === 0;\n }\n\n /**\n * Public function `even`.\n *\n * Returns true if `data` is an even number, false otherwise.\n */\n function even (data) {\n return typeof data === 'number' && data % 2 === 0;\n }\n\n /**\n * Public function `odd`.\n *\n * Returns true if `data` is an odd number, false otherwise.\n */\n function odd (data) {\n return integer(data) && data % 2 !== 0;\n }\n\n /**\n * Public function `greater`.\n *\n * Returns true if `lhs` is a number greater than `rhs`, false otherwise.\n */\n function greater (lhs, rhs) {\n return number(lhs) && lhs > rhs;\n }\n\n /**\n * Public function `less`.\n *\n * Returns true if `lhs` is a number less than `rhs`, false otherwise.\n */\n function less (lhs, rhs) {\n return number(lhs) && lhs < rhs;\n }\n\n /**\n * Public function `between`.\n *\n * Returns true if `data` is a number between `x` and `y`, false otherwise.\n */\n function between (data, x, y) {\n if (x < y) {\n return greater(data, x) && data < y;\n }\n\n return less(data, x) && data > y;\n }\n\n /**\n * Public function `greaterOrEqual`.\n *\n * Returns true if `lhs` is a number greater than or equal to `rhs`, false\n * otherwise.\n */\n function greaterOrEqual (lhs, rhs) {\n return number(lhs) && lhs >= rhs;\n }\n\n /**\n * Public function `lessOrEqual`.\n *\n * Returns true if `lhs` is a number less than or equal to `rhs`, false\n * otherwise.\n */\n function lessOrEqual (lhs, rhs) {\n return number(lhs) && lhs <= rhs;\n }\n\n /**\n * Public function `inRange`.\n *\n * Returns true if `data` is a number in the range `x..y`, false otherwise.\n */\n function inRange (data, x, y) {\n if (x < y) {\n return greaterOrEqual(data, x) && data <= y;\n }\n\n return lessOrEqual(data, x) && data >= y;\n }\n\n /**\n * Public function `positive`.\n *\n * Returns true if `data` is a positive number, false otherwise.\n */\n function positive (data) {\n return greater(data, 0);\n }\n\n /**\n * Public function `negative`.\n *\n * Returns true if `data` is a negative number, false otherwise.\n */\n function negative (data) {\n return less(data, 0);\n }\n\n /**\n * Public function `string`.\n *\n * Returns true if `data` is a string, false otherwise.\n */\n function string (data) {\n return typeof data === 'string';\n }\n\n /**\n * Public function `emptyString`.\n *\n * Returns true if `data` is the empty string, false otherwise.\n */\n function emptyString (data) {\n return data === '';\n }\n\n /**\n * Public function `nonEmptyString`.\n *\n * Returns true if `data` is a non-empty string, false otherwise.\n */\n function nonEmptyString (data) {\n return string(data) && data !== '';\n }\n\n /**\n * Public function `contains`.\n *\n * Returns true if `data` is a string that contains `substring`, false\n * otherwise.\n */\n function contains (data, substring) {\n return string(data) && data.indexOf(substring) !== -1;\n }\n\n /**\n * Public function `match`.\n *\n * Returns true if `data` is a string that matches `regex`, false otherwise.\n */\n function match (data, regex) {\n return string(data) && !! data.match(regex);\n }\n\n /**\n * Public function `boolean`.\n *\n * Returns true if `data` is a boolean value, false otherwise.\n */\n function boolean (data) {\n return data === false || data === true;\n }\n\n /**\n * Public function `object`.\n *\n * Returns true if `data` is a plain-old JS object, false otherwise.\n */\n function object (data) {\n return Object.prototype.toString.call(data) === '[object Object]';\n }\n\n /**\n * Public function `emptyObject`.\n *\n * Returns true if `data` is an empty object, false otherwise.\n */\n function emptyObject (data) {\n return object(data) && Object.keys(data).length === 0;\n }\n\n /**\n * Public function `nonEmptyObject`.\n *\n * Returns true if `data` is a non-empty object, false otherwise.\n */\n function nonEmptyObject (data) {\n return object(data) && Object.keys(data).length > 0;\n }\n\n /**\n * Public function `instanceStrict`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n */\n function instanceStrict (data, prototype) {\n try {\n return data instanceof prototype;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `instance`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n * Falls back to testing constructor.name and Object.prototype.toString\n * if the initial instanceof test fails.\n */\n function instance (data, prototype) {\n try {\n return instanceStrict(data, prototype) ||\n data.constructor.name === prototype.name ||\n Object.prototype.toString.call(data) === '[object ' + prototype.name + ']';\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `like`.\n *\n * Tests whether `data` 'quacks like a duck'. Returns true if `data` has all\n * of the properties of `archetype` (the 'duck'), false otherwise.\n */\n function like (data, archetype) {\n var name;\n\n for (name in archetype) {\n if (archetype.hasOwnProperty(name)) {\n if (data.hasOwnProperty(name) === false || typeof data[name] !== typeof archetype[name]) {\n return false;\n }\n\n if (object(data[name]) && like(data[name], archetype[name]) === false) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Public function `array`.\n *\n * Returns true if `data` is an array, false otherwise.\n */\n function array (data) {\n return isArray(data);\n }\n\n /**\n * Public function `emptyArray`.\n *\n * Returns true if `data` is an empty array, false otherwise.\n */\n function emptyArray (data) {\n return array(data) && data.length === 0;\n }\n\n /**\n * Public function `nonEmptyArray`.\n *\n * Returns true if `data` is a non-empty array, false otherwise.\n */\n function nonEmptyArray (data) {\n return array(data) && greater(data.length, 0);\n }\n\n /**\n * Public function `arrayLike`.\n *\n * Returns true if `data` is an array-like object, false otherwise.\n */\n function arrayLike (data) {\n return assigned(data) && greaterOrEqual(data.length, 0);\n }\n\n /**\n * Public function `iterable`.\n *\n * Returns true if `data` is an iterable, false otherwise.\n */\n function iterable (data) {\n if (! haveSymbols) {\n // Fall back to `arrayLike` predicate in pre-ES6 environments.\n return arrayLike(data);\n }\n\n return assigned(data) && isFunction(data[Symbol.iterator]);\n }\n\n /**\n * Public function `includes`.\n *\n * Returns true if `data` contains `value`, false otherwise.\n */\n function includes (data, value) {\n var iterator, iteration, keys, length, i;\n\n if (! assigned(data)) {\n return false;\n }\n\n if (haveSymbols && data[Symbol.iterator] && isFunction(data.values)) {\n iterator = data.values();\n\n do {\n iteration = iterator.next();\n\n if (iteration.value === value) {\n return true;\n }\n } while (! iteration.done);\n\n return false;\n }\n\n keys = Object.keys(data);\n length = keys.length;\n for (i = 0; i < length; ++i) {\n if (data[keys[i]] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Public function `hasLength`.\n *\n * Returns true if `data` has a length property that equals `length`, false\n * otherwise.\n */\n function hasLength (data, length) {\n return assigned(data) && data.length === length;\n }\n\n /**\n * Public function `date`.\n *\n * Returns true if `data` is a valid date, false otherwise.\n */\n function date (data) {\n return instanceStrict(data, Date) && integer(data.getTime());\n }\n\n /**\n * Public function `function`.\n *\n * Returns true if `data` is a function, false otherwise.\n */\n function isFunction (data) {\n return typeof data === 'function';\n }\n\n /**\n * Public function `apply`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result array. If the same function is to be applied across all of the\n * data, a single predicate function may be passed in.\n *\n */\n function apply (data, predicates) {\n assert.array(data);\n\n if (isFunction(predicates)) {\n return data.map(function (value) {\n return predicates(value);\n });\n }\n\n assert.array(predicates);\n assert.hasLength(data, predicates.length);\n\n return data.map(function (value, index) {\n return predicates[index](value);\n });\n }\n\n /**\n * Public function `map`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result object. Supports nested objects. If the `data` is not nested and\n * the same function is to be applied across all of it, a single predicate\n * function may be passed in.\n *\n */\n function map (data, predicates) {\n assert.object(data);\n\n if (isFunction(predicates)) {\n return mapSimple(data, predicates);\n }\n\n assert.object(predicates);\n\n return mapComplex(data, predicates);\n }\n\n function mapSimple (data, predicate) {\n var result = {};\n\n Object.keys(data).forEach(function (key) {\n result[key] = predicate(data[key]);\n });\n\n return result;\n }\n\n function mapComplex (data, predicates) {\n var result = {};\n\n Object.keys(predicates).forEach(function (key) {\n var predicate = predicates[key];\n\n if (isFunction(predicate)) {\n if (not.assigned(data)) {\n result[key] = !!predicate.m;\n } else {\n result[key] = predicate(data[key]);\n }\n } else if (object(predicate)) {\n result[key] = mapComplex(data[key], predicate);\n }\n });\n\n return result;\n }\n\n /**\n * Public function `all`\n *\n * Check that all boolean values are true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function all (data) {\n if (array(data)) {\n return testArray(data, false);\n }\n\n assert.object(data);\n\n return testObject(data, false);\n }\n\n function testArray (data, result) {\n var i;\n\n for (i = 0; i < data.length; i += 1) {\n if (data[i] === result) {\n return result;\n }\n }\n\n return !result;\n }\n\n function testObject (data, result) {\n var key, value;\n\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n value = data[key];\n\n if (object(value) && testObject(value, result) === result) {\n return result;\n }\n\n if (value === result) {\n return result;\n }\n }\n }\n\n return !result;\n }\n\n /**\n * Public function `any`\n *\n * Check that at least one boolean value is true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function any (data) {\n if (array(data)) {\n return testArray(data, true);\n }\n\n assert.object(data);\n\n return testObject(data, true);\n }\n\n function mixin (target, source) {\n Object.keys(source).forEach(function (key) {\n target[key] = source[key];\n });\n\n return target;\n }\n\n /**\n * Public modifier `assert`.\n *\n * Throws if `predicate` returns false.\n */\n function assertModifier (predicate, defaultMessage) {\n return function () {\n return assertPredicate(predicate, arguments, defaultMessage);\n };\n }\n\n function assertPredicate (predicate, args, defaultMessage) {\n var argCount = predicate.l || predicate.length;\n var message = args[argCount];\n var ErrorType = args[argCount + 1];\n assertImpl(\n predicate.apply(null, args),\n nonEmptyString(message) ? message : defaultMessage,\n isFunction(ErrorType) ? ErrorType : TypeError\n );\n return args[0];\n }\n\n function assertImpl (value, message, ErrorType) {\n if (value) {\n return value;\n }\n throw new (ErrorType || Error)(message || 'Assertion failed');\n }\n\n /**\n * Public modifier `not`.\n *\n * Negates `predicate`.\n */\n function notModifier (predicate) {\n var modifiedPredicate = function () {\n return notImpl(predicate.apply(null, arguments));\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function notImpl (value) {\n return !value;\n }\n\n /**\n * Public modifier `maybe`.\n *\n * Returns true if predicate argument is null or undefined,\n * otherwise propagates the return value from `predicate`.\n */\n function maybeModifier (predicate) {\n var modifiedPredicate = function () {\n if (not.assigned(arguments[0])) {\n return true;\n }\n\n return predicate.apply(null, arguments);\n };\n modifiedPredicate.l = predicate.length;\n\n // Hackishly indicate that this is a maybe.xxx predicate.\n // Without this flag, the alternative would be to iterate\n // through the maybe predicates or use indexOf to check,\n // which would be time-consuming.\n modifiedPredicate.m = true;\n\n return modifiedPredicate;\n }\n\n function maybeImpl (value) {\n if (assigned(value) === false) {\n return true;\n }\n\n return value;\n }\n\n /**\n * Public modifier `of`.\n *\n * Applies the chained predicate to members of the collection.\n */\n function ofModifier (target, type, predicate) {\n var modifiedPredicate = function () {\n var collection, args;\n\n collection = arguments[0];\n\n if (target === 'maybe' && not.assigned(collection)) {\n return true;\n }\n\n if (!type(collection)) {\n return false;\n }\n\n collection = coerceCollection(type, collection);\n args = slice.call(arguments, 1);\n\n try {\n collection.forEach(function (item) {\n if (\n (target !== 'maybe' || assigned(item)) &&\n !predicate.apply(null, [ item ].concat(args))\n ) {\n // TODO: Replace with for...of when ES6 is required.\n throw 0;\n }\n });\n } catch (ignore) {\n return false;\n }\n\n return true;\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function coerceCollection (type, collection) {\n switch (type) {\n case arrayLike:\n return slice.call(collection);\n case object:\n return Object.keys(collection).map(function (key) {\n return collection[key];\n });\n default:\n return collection;\n }\n }\n\n function createModifiedPredicates (modifier, object) {\n return createModifiedFunctions([ modifier, predicates, object ]);\n }\n\n function createModifiedFunctions (args) {\n var modifier, object, functions, result;\n\n modifier = args.shift();\n object = args.pop();\n functions = args.pop();\n\n result = object || {};\n\n Object.keys(functions).forEach(function (key) {\n Object.defineProperty(result, key, {\n configurable: false,\n enumerable: true,\n writable: false,\n value: modifier.apply(null, args.concat(functions[key], messages[key]))\n });\n });\n\n return result;\n }\n\n function createModifiedModifier (modifier, modified) {\n return createModifiedFunctions([ modifier, modified, null ]);\n }\n\n function createOfPredicates (key) {\n predicates[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, null), predicates[key], predicates, null ]\n );\n }\n\n function createOfModifiers (base, modifier) {\n collections.forEach(function (key) {\n base[key].of = createModifiedModifier(modifier, predicates[key].of);\n });\n }\n\n function createMaybeOfModifiers (key) {\n maybe[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, 'maybe'), predicates[key], predicates, null ]\n );\n assert.maybe[key].of = createModifiedModifier(assertModifier, maybe[key].of);\n assert.not[key].of = createModifiedModifier(assertModifier, not[key].of);\n }\n\n function exportFunctions (functions) {\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return functions;\n });\n } else if (typeof module !== 'undefined' && module !== null && module.exports) {\n module.exports = functions;\n } else {\n globals.check = functions;\n }\n }\n}(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/check-types/src/check-types.js\n// module id = 2\n// module chunks = 0","var _Object$defineProperty = require(\"../core-js/object/define-property\");\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/createClass.js\n// module id = 3\n// module chunks = 0","/**\n *\n * @module entry\n * @desc Services SDK entry point.\n *\n */\n\nimport Logging from './../logging/entry';\nimport Account from './account/entry';\nimport Commerce from './commerce/entry';\nimport Configuration from './configuration/entry';\nimport Content from './content/entry';\nimport CustomerService from './customerService/entry';\nimport Device from './device/entry';\nimport Drm from './drm/entry';\nimport Eligibility from './eligibility/entry';\nimport ExternalActivation from './externalActivation/entry';\nimport Exception from './exception/entry';\nimport Media from './media/entry';\nimport Identity from './identity/entry';\nimport Internal from './internal/entry';\nimport Paywall from './paywall/entry';\nimport Purchase from './purchase/entry';\nimport Session from './session/entry';\nimport Subscription from './subscription/entry';\nimport Token from './token/entry';\nimport Util from './util/entry';\n\nimport HttpClient from './platforms/httpClient';\nimport Storage from './platforms/storage';\nimport ServiceEndpoint from './configuration/serviceEndpoint';\nimport HttpMethod from './configuration/httpMethod';\n\n/**\n *\n * @class Services\n *\n */\nexport default class Services {\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Account}\n *\n */\n static get Account() {\n return Account;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Commerce}\n *\n */\n static get Commerce() {\n return Commerce;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Configuration}\n *\n */\n static get Configuration() {\n return Configuration;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Content}\n *\n */\n static get Content() {\n return Content;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.CustomerService}\n *\n */\n static get CustomerService() {\n return CustomerService;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Device}\n *\n */\n static get Device() {\n return Device;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Drm}\n *\n */\n static get Drm() {\n return Drm;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Eligibility}\n *\n */\n static get Eligibility() {\n return Eligibility;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.ExternalActivation}\n *\n */\n static get ExternalActivation() {\n return ExternalActivation;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Exception}\n *\n */\n static get Exception() {\n return Exception;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Identity}\n *\n */\n static get Identity() {\n return Identity;\n }\n\n /**\n *\n * @access private\n * @returns {SDK.Services.Internal}\n *\n */\n static get Internal() {\n return Internal;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Logging}\n *\n */\n static get Logging() {\n return Logging;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Media}\n *\n */\n static get Media() {\n return Media;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Paywall}\n *\n */\n static get Paywall() {\n return Paywall;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Purchase}\n *\n */\n static get Purchase() {\n return Purchase;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Session}\n *\n */\n static get Session() {\n return Session;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Subscription}\n *\n */\n static get Subscription() {\n return Subscription;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Token}\n *\n */\n static get Token() {\n return Token;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Services.Util}\n *\n */\n static get Util() {\n return Util;\n }\n\n /**\n *\n * @access private\n * @returns {HttpClient}\n *\n */\n static get HttpClient() {\n return HttpClient;\n }\n\n /**\n *\n * @access private\n * @returns {Storage}\n *\n */\n static get Storage() {\n return Storage;\n }\n\n /**\n *\n * @access private\n * @returns {ServiceEndpoint}\n *\n */\n static get ServiceEndpoint() {\n return ServiceEndpoint;\n }\n\n /**\n *\n * @access private\n * @returns {HttpMethod}\n *\n */\n static get HttpMethod() {\n return HttpMethod;\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/entry.js","var _Object$getPrototypeOf = require(\"../core-js/object/get-prototype-of\");\n\nvar _Object$setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nfunction _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/getPrototypeOf.js\n// module id = 5\n// module chunks = 0","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js\n// module id = 6\n// module chunks = 0","var _Object$create = require(\"../core-js/object/create\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/inherits.js\n// module id = 7\n// module chunks = 0","module.exports = require(\"core-js/library/fn/promise\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/promise.js\n// module id = 8\n// module chunks = 0","/**\n *\n * @module entry\n * @desc {SDK.Logging} entry point.\n *\n */\n\nimport LoggingApi from './loggingApi';\nimport Logger from './logger';\nimport LogEvent from './logEvent';\nimport LogSink from './logSink';\nimport LogLevel from './logLevel';\nimport Metric from './metric';\nimport ConsoleSink from './sinks/consoleSink';\nimport ConsoleSinkConfiguration from './consoleSinkConfiguration';\nimport LoggingClientConfiguration from './loggingClientConfiguration';\n\n/**\n *\n * @desc default shared Logger instance\n * @note ConsoleSink is enabled by default\n *\n */\nLogger.instance = (function () {\n\n const logger = new Logger();\n\n return logger;\n\n}());\n\n/**\n *\n * @typedef SDK.Logging\n * @type {Object}\n *\n * @property {LoggingApi} LoggingApi\n * @property {Logger} Logger\n * @property {LogEvent} LogEvent\n * @property {LogSink} LogSink\n * @property {LogLevel} LogLevel\n * @property {Metric} Metric\n * @property {ConsoleSinkConfiguration} ConsoleSinkConfiguration\n * @property {LoggingClientConfiguration} LoggingClientConfiguration\n *\n */\n\n/**\n *\n * @type {SDK.Logging}\n *\n */\nexport default Object.assign(Logger.instance, {\n\n LoggingApi,\n Logger,\n LogEvent,\n LogSink: Object.assign(LogSink, {\n ConsoleSink\n }),\n LogLevel,\n Metric,\n ConsoleSinkConfiguration,\n LoggingClientConfiguration\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/logging/entry.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Exception} entry point.\n *\n */\n\nimport ErrorReason from './errorReason';\nimport ErrorCode from './errorCode';\nimport ExceptionReference from './exceptionReference';\nimport InvalidArgumentException from './invalidArgumentException';\nimport ProviderException from './providerException';\nimport ServiceException from './serviceException';\n\n/**\n *\n * @typedef SDK.Services.Exception\n * @type {Object}\n *\n * @property {ErrorReason} ErrorReason\n * @property {ErrorCode} ErrorCode\n * @property {ExceptionReference} ExceptionReference\n * @property {InvalidArgumentException} InvalidArgumentException\n * @property {ProviderException} ProviderException\n * @property {ServiceException} ServiceException\n *\n */\n\n/**\n *\n * @type {SDK.Services.Exception}\n *\n */\nexport default {\n\n ErrorReason,\n ErrorCode,\n ExceptionReference,\n InvalidArgumentException,\n ProviderException,\n ServiceException\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/exception/entry.js","/**\n *\n * @module invalidArgumentException\n *\n */\n\nimport ErrorReason from './errorReason';\nimport ServiceException from './serviceException';\n\n/**\n *\n * @class InvalidArgumentException\n * @extends {ServiceException}\n * @desc One or more of the supplied variables does not pass validation.\n *\n */\nexport default class InvalidArgumentException extends ServiceException {\n\n /**\n *\n * @param {String} message - Human-readable description of the error.\n * @desc This will always be thrown at instantiation of an SDK class, and never after requesting for transactionId.\n * It will most often be thrown as part of an assertion test by the check-types library, and will need to\n * accept the args of JavaScript's TypeError class. As such, the 1st arg must be message, not transactionId.\n * Furthermore, it makes no sense to expect the 2nd and 3rd args expected by the ServiceException superclass.\n *\n */\n constructor(message) {\n\n const reasons = [new ErrorReason('', message)];\n const exceptionData = {\n name: 'InvalidArgumentException',\n message\n };\n\n const options = { reasons, exceptionData };\n\n super(options);\n\n }\n\n /**\n *\n * @access public\n * @returns {String}\n *\n */\n static get typeName() {\n return 'InvalidArgumentException';\n }\n\n /**\n *\n * @access public\n * @desc A brief message describing the exception\n * @returns {String}\n *\n */\n static get message() {\n return 'One or more of the supplied variables does not pass validation.';\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/exception/invalidArgumentException.js","/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\"use strict\";\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n var ret = {};\n var key;\n if (!(obj instanceof Object && !Array.isArray(obj))) {\n throw new Error('keyMirror(...): Argument must be an object.');\n }\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n ret[key] = key;\n }\n return ret;\n};\n\nmodule.exports = keyMirror;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/keymirror/index.js\n// module id = 12\n// module chunks = 0","module.exports = require(\"core-js/library/fn/object/assign\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/object/assign.js\n// module id = 13\n// module chunks = 0","/**\n *\n * @module entry\n * @desc {SDK.Token} entry point.\n *\n */\n\nimport GeoLocation from './geoLocation';\nimport GeoProvider from './../platforms/geoProvider';\n\nimport TokenManager from './tokenManager';\nimport TokenRefreshFailure from './tokenRefreshFailure';\nimport AccessStorage from './accessStorage';\nimport DeviceGrantStorage from './deviceGrantStorage';\nimport AccessContextState from './accessContextState';\nimport Access from './access';\nimport AccessTokenProvider from './accessTokenProvider';\nimport AccessTokenUpdater from './accessTokenUpdater';\nimport AccessToken from './accessToken';\nimport AccessState from './accessState';\nimport AccessStateData from './accessStateData';\nimport IdentityTokenStorage from './identityTokenStorage';\n\n/**\n *\n * @typedef SDK.Token\n * @type {Object}\n *\n * @property {GeoLocation} GeoLocation\n * @property {GeoProvider} GeoProvider\n *\n * @property {TokenManager} TokenManager\n * @property {TokenRefreshFailure} TokenRefreshFailure\n * @property {AccessStorage} AccessStorage\n * @property {DeviceGrantStorage} DeviceGrantStorage\n * @property {AccessContextState} AccessContextState\n * @property {Access} Access\n * @property {AccessTokenProvider} AccessTokenProvider\n * @property {AccessTokenUpdater} AccessTokenUpdater\n * @property {AccessToken} AccessToken\n * @property {GeoProvider} GeoProvider\n * @property {GeoLocation} GeoLocation\n * @property {AccessState} AccessState\n * @property {AccessStateData} AccessStateData\n * @property {IdentityTokenStorage} IdentityTokenStorage\n *\n */\n\n/**\n *\n * @type {SDK.Token}\n *\n */\nexport default {\n\n GeoLocation,\n GeoProvider,\n\n TokenManager,\n TokenRefreshFailure,\n AccessStorage,\n DeviceGrantStorage,\n AccessContextState,\n Access,\n AccessTokenProvider,\n AccessTokenUpdater,\n AccessToken,\n AccessState,\n AccessStateData,\n IdentityTokenStorage\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/entry.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Util} entry point.\n *\n */\n\nimport checkResponseCode from './checkResponseCode';\nimport getSafe from './getSafe';\nimport getScope from './getScope';\nimport adEngineRegex from './adEngineRegex';\nimport dateRegex from './dateRegex';\n\n/**\n *\n * @typedef SDK.Services.Util\n * @type {Object}\n *\n * @property {Function} checkResponseCode\n * @property {Function} getSafe\n * @property {Function} getScope\n * @property {Function} adEngineRegex\n *\n */\n\n/**\n *\n * @type {SDK.Services.Util}\n *\n */\nexport default {\n\n checkResponseCode,\n getSafe,\n getScope,\n adEngineRegex,\n dateRegex\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/util/entry.js","var core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_core.js\n// module id = 16\n// module chunks = 0","module.exports = require(\"core-js/library/fn/json/stringify\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/json/stringify.js\n// module id = 17\n// module chunks = 0","module.exports = require(\"regenerator-runtime\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/regenerator/index.js\n// module id = 18\n// module chunks = 0","var _Promise = require(\"../core-js/promise\");\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n _Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new _Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/asyncToGenerator.js\n// module id = 19\n// module chunks = 0","/**\n *\n * @module entry\n * @desc {SDK.Services.Token} entry point.\n *\n */\n\nimport AccessContext from './accessContext';\nimport AccessToken from './accessToken';\nimport DeviceGrant from './deviceGrant';\nimport Grant from './grant';\nimport IdentityToken from './identityToken';\nimport RefreshGrant from './refreshGrant';\nimport TemporaryGrant from './temporaryGrant';\nimport ExchangeGrant from './exchangeGrant';\nimport SecurityAction from './securityAction';\nimport TokenClient from './tokenClient';\nimport TokenClientConfiguration from './tokenClientConfiguration';\nimport TokenClientEndpoint from './tokenClientEndpoint';\nimport TokenClientExtrasMap from './tokenClientExtrasMap';\nimport TokenRequest from './tokenRequest';\nimport TokenRequestBuilder from './tokenRequestBuilder';\n\n/**\n *\n * @typedef SDK.Services.Token\n * @type {Object}\n *\n * @property {AccessContext} AccessContext\n * @property {AccessToken} AccessToken\n * @property {DeviceGrant} DeviceGrant\n * @property {Grant} Grant\n * @property {IdentityToken} IdentityToken\n * @property {RefreshGrant} RefreshGrant\n * @property {TemporaryGrant} TemporaryGrant\n * @property {ExchangeGrant} ExchangeGrant\n * @property {SecurityAction} SecurityAction\n * @property {TokenClient} TokenClient\n * @property {TokenClientConfiguration} TokenClientConfiguration\n * @property {TokenClientEndpoint} TokenClientEndpoint\n * @property {TokenClientExtrasMap} TokenClientExtrasMap\n * @property {TokenRequest} TokenExchangeRequest\n * @property {TokenRequestBuilder} TokenExchangeRequestBuilder\n *\n */\n\n/**\n *\n * @type {SDK.Services.Token}\n *\n */\nexport default {\n\n AccessContext,\n AccessToken,\n DeviceGrant,\n Grant,\n IdentityToken,\n RefreshGrant,\n TemporaryGrant,\n ExchangeGrant,\n SecurityAction,\n TokenClient,\n TokenClientConfiguration,\n TokenClientEndpoint,\n TokenClientExtrasMap,\n TokenRequest,\n TokenRequestBuilder\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/entry.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Configuration} entry point.\n *\n */\n\nimport AccountManagerConfiguration from './accountManagerConfiguration';\nimport AdEngineManagerConfiguration from './adEngineManagerConfiguration';\nimport AdobeIdentityManagerConfiguration from './adobeIdentityManagerConfiguration';\nimport BamIdentityManagerConfiguration from './bamIdentityManagerConfiguration';\nimport BamIdentityManagerExtrasMap from './bamIdentityManagerExtrasMap';\nimport BootstrapConfiguration from './bootstrapConfiguration';\nimport CommerceManagerConfiguration from './commerceManagerConfiguration';\nimport CommerceManagerExtrasMap from './commerceManagerExtrasMap';\nimport ConfigurationClient from './configurationClient';\nimport ConfigurationClientEndpoint from './configurationClientEndpoint';\nimport ConfigurationClientConfiguration from './configurationClientConfiguration';\nimport ConfigurationClientExtrasMap from './configurationClientExtrasMap';\nimport ConfigurationClientHostParams from './configurationClientHostParams';\nimport ConfigurationHostName from './configurationHostName';\nimport ContentManagerConfiguration from './contentManagerConfiguration';\nimport CustomerServiceManagerConfiguration from './customerServiceManagerConfiguration';\nimport DeviceManagerConfiguration from './deviceManagerConfiguration';\nimport PlatformProfileReference from './platformProfileReference';\nimport DrmManagerConfiguration from './drmManagerConfiguration';\nimport EligibilityManagerConfiguration from './eligibilityManagerConfiguration';\nimport EnvironmentConfiguration from './../platforms/environmentConfiguration';\nimport ExternalActivationManagerConfiguration from './externalActivationManagerConfiguration';\nimport LoggerConfiguration from './loggerConfiguration';\nimport MediaManagerConfiguration from './mediaManagerConfiguration';\nimport MediaManagerExtrasMap from './mediaManagerExtrasMap';\nimport PaywallManagerConfiguration from './paywallManagerConfiguration';\nimport PurchaseManagerConfiguration from './purchaseManagerConfiguration';\nimport SessionManagerConfiguration from './sessionManagerConfiguration';\nimport Platform from './platform';\nimport PurchaseManagerExtrasMap from './purchaseManagerExtrasMap';\nimport SdkSessionConfiguration from './sdkSessionConfiguration';\nimport ServiceConfiguration from './serviceConfiguration';\nimport ServiceDefinitionsConfiguration from './serviceDefinitionsConfiguration';\nimport SubscriptionManagerConfiguration from './subscriptionManagerConfiguration';\nimport TelemetryManagerConfiguration from './telemetryManagerConfiguration';\nimport TelemetryManagerExtrasMap from './telemetryManagerExtrasMap';\nimport TokenManagerConfiguration from './tokenManagerConfiguration';\nimport TokenManagerExtrasMap from './tokenManagerExtrasMap';\n\nimport RetryPolicy from './retryPolicy';\nimport HttpMethod from './httpMethod';\n\n/**\n *\n * @typedef SDK.Services.Configuration\n * @type {Object}\n *\n * @property {AccountManagerConfiguration} AccountManagerConfiguration\n * @property {AdEngineManagerConfiguration} AdEngineManagerConfiguration\n * @property {AdobeIdentityManagerConfiguration} AdobeIdentityManagerConfiguration\n * @property {BamIdentityManagerConfiguration} BamIdentityManagerConfiguration\n * @property {BamIdentityManagerExtrasMap} BamIdentityManagerExtrasMap\n * @property {BootstrapConfiguration} BootstrapConfiguration\n * @property {CommerceManagerConfiguration} CommerceManagerConfiguration\n * @property {CommerceManagerExtrasMap} CommerceManagerExtrasMap\n * @property {ConfigurationClient} ConfigurationClient\n * @property {ConfigurationClientEndpoint} ConfigurationClientEndpoint\n * @property {ConfigurationClientConfiguration} ConfigurationClientConfiguration\n * @property {ConfigurationClientExtrasMap} ConfigurationClientExtrasMap\n * @property {ConfigurationClientHostParams} ConfigurationClientHostParams\n * @property {ConfigurationHostName} ConfigurationHostName\n * @property {ContentManagerConfiguration} ContentManagerConfiguration\n * @property {CustomerServiceManagerConfiguration} CustomerServiceManagerConfiguration\n * @property {DeviceManagerConfiguration} DeviceManagerConfiguration\n * @property {PlatformProfileReference} PlatformProfileReference\n * @property {DrmManagerConfiguration} DrmManagerConfiguration\n * @property {EligibilityManagerConfiguration} EligibilityManagerConfiguration\n * @property {EnvironmentConfiguration} EnvironmentConfiguration\n * @property {ExternalActivationManagerConfiguration} ExternalActivationManagerConfiguration\n * @property {LoggerConfiguration} LoggerConfiguration\n * @property {MediaManagerConfiguration} MediaManagerConfiguration\n * @property {MediaManagerExtrasMap} MediaManagerExtrasMap\n * @property {PaywallManagerConfiguration} PaywallManagerConfiguration\n * @property {PurchaseManagerConfiguration} PurchaseManagerConfiguration\n * @property {SessionManagerConfiguration} SessionManagerConfiguration\n * @property {Platform} Platform\n * @property {PurchaseManagerExtrasMap} PurchaseManagerExtrasMap\n * @property {SdkSessionConfiguration} SdkSessionConfiguration\n * @property {ServiceConfiguration} ServiceConfiguration\n * @property {ServiceDefinitionsConfiguration} ServiceDefinitionsConfiguration\n * @property {SubscriptionManagerConfiguration} SubscriptionManagerConfiguration\n * @property {TelemetryManagerConfiguration} TelemetryManagerConfiguration\n * @property {TelemetryManagerExtrasMap} TelemetryManagerExtrasMap\n * @property {TokenManagerConfiguration} TokenManagerConfiguration\n * @property {TokenManagerExtrasMap} TokenManagerExtrasMap\n *\n * @property {RetryPolicy} RetryPolicy\n * @property {HttpMethod} HttpMethod\n *\n */\n\n/**\n *\n * @type {SDK.Services.Configuration}\n *\n */\nexport default {\n\n AccountManagerConfiguration,\n AdobeIdentityManagerConfiguration,\n AdEngineManagerConfiguration,\n BamIdentityManagerConfiguration,\n BamIdentityManagerExtrasMap,\n BootstrapConfiguration,\n CommerceManagerConfiguration,\n CommerceManagerExtrasMap,\n ConfigurationClient,\n ConfigurationClientEndpoint,\n ConfigurationClientConfiguration,\n ConfigurationClientExtrasMap,\n ConfigurationClientHostParams,\n ConfigurationHostName,\n ContentManagerConfiguration,\n CustomerServiceManagerConfiguration,\n DeviceManagerConfiguration,\n PlatformProfileReference,\n DrmManagerConfiguration,\n EligibilityManagerConfiguration,\n EnvironmentConfiguration,\n ExternalActivationManagerConfiguration,\n LoggerConfiguration,\n MediaManagerConfiguration,\n MediaManagerExtrasMap,\n PaywallManagerConfiguration,\n PurchaseManagerConfiguration,\n SessionManagerConfiguration,\n Platform,\n PurchaseManagerExtrasMap,\n SdkSessionConfiguration,\n ServiceConfiguration,\n ServiceDefinitionsConfiguration,\n SubscriptionManagerConfiguration,\n TelemetryManagerConfiguration,\n TelemetryManagerExtrasMap,\n TokenManagerConfiguration,\n TokenManagerExtrasMap,\n\n RetryPolicy,\n HttpMethod\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/entry.js","/**\n *\n * @module serviceClientConfiguration\n *\n */\n\n/**\n *\n * @class serviceClientConfiguration\n * @desc A model containing service client configuration settings.\n *\n */\nexport default class ServiceClientConfiguration {\n\n /**\n *\n * @param {String} baseUrl\n * @param {Object} [endpoints={}]\n *\n */\n constructor(baseUrl, endpoints = {}) {\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.baseUrl = baseUrl;\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.endpoints = endpoints;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/serviceClientConfiguration.js","/**\n *\n * @module httpClient\n * @desc HttpClient provider entry point, determines proper implementation to load\n * based on device family and the current application runtime.\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/DeploymentProfiles.md\n *\n */\n\nconst deviceFamily = process.env.device_family;\nconst applicationRuntime = process.env.application_runtime;\n\nlet strategy = 'isomorphic';\n\nif (deviceFamily === 'apple') {\n strategy = deviceFamily;\n}\n\nif (applicationRuntime === 'trilithium') {\n strategy = `${deviceFamily}/${applicationRuntime}`;\n}\n\nexport default require(`./${strategy}/httpClient`);\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/httpClient.js","/**\n *\n * @module dustUrnReference\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/dust.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/dust.md#api-events\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/dust.md#service-events\n *\n */\n\n/**\n *\n * @access private\n * @typedef SDK.Services.Internal.Dust.DustUrnReference\n * @type {Object}\n * @since 3.4.0\n * @desc Internal DUST API event hash reference.\n * Mapping of all SDK methods and events in a single location.\n *\n * @property {Object} account\n * @property {Object} configuration\n * @property {Object} content\n * @property {Object} identity\n * @property {Object} media\n * @property {Object} purchase\n * @property {Object} sdkSession\n * @property {Object} subscription\n * @property {Object} services\n *\n * @example SDK.Services.Internal.Dust.DustUrnReference.account.accountApi.getAccount\n * @example SDK.Services.Internal.Dust.DustUrnReference.services.account.accountClient.getCurrentAccount\n *\n */\n\n/**\n *\n * @type {SDK.Services.Internal.Dust.DustUrnReference}\n *\n */\nexport default {\n account: {\n accountApi: {\n getAccount: 'urn:bamtech:dust:bamsdk:api:account:getAccount',\n updateAccount: 'urn:bamtech:dust:bamsdk:api:account:updateAccount',\n linkSubscriptionsFromDevice: 'urn:bamtech:dust:bamsdk:api:account:linkSubscriptionsFromDevice',\n authorize: 'urn:bamtech:dust:bamsdk:api:account:authorize',\n createAccount: 'urn:bamtech:dust:bamsdk:api:account:createAccount'\n }\n },\n commerce: {\n commerceApi: {\n priceOrder: 'urn:bamtech:dust:bamsdk:api:commerce:priceOrder',\n getLocationCandidates: 'urn:bamtech:dust:bamsdk:api:commerce:getLocationCandidate',\n submitOrderWithPaymentMethod: 'urn:bamtech:dust:bamsdk:api:commerce:submitOrderWithPaymentMethod',\n validateOrder: 'urn:bamtech:dust:bamsdk:api:commerce:checkOrderStatus',\n createPaymentMethod: 'urn:bamtech:dust:bamsdk:api:commerce:createPaymentMethod',\n getDefaultPaymentMethod: 'urn:bamtech:dust:bamsdk:api:commerce:getDefaultPaymentMethod',\n getPaymentCard: 'urn:bamtech:dust:bamsdk:api:commerce:getPaymentCard'\n }\n },\n configuration: {\n configurationManager: {\n getConfiguration: 'urn:bamtech:dust:bamsdk:service:configuration:loadRemote'\n }\n },\n content: {\n contentApi: {\n query: 'urn:bamtech:dust:bamsdk:api:content:query',\n getSearchSuggestions: 'urn:bamtech:dust:bamsdk:api:content:getSearchSuggestions'\n }\n },\n customerService: {\n customerServiceApi: {\n createSupportCode: 'urn:bamtech:dust:bamsdk:api:customerService:createSupportCode'\n }\n },\n identity: {\n bam: {\n bamIdentityApi: {\n createIdentity: 'urn:bamtech:dust:bamsdk:api:identity:bam:createIdentity',\n getIdentity: 'urn:bamtech:dust:bamsdk:api:identity:bam:getIdentity',\n authenticate: 'urn:bamtech:dust:bamsdk:api:identity:bam:authenticate',\n updateIdentity: 'urn:bamtech:dust:bamsdk:api:identity:bam:updateIdentity',\n updatePassword: 'urn:bamtech:dust:bamsdk:api:identity:bam:updatePassword',\n updateEmail: 'urn:bamtech:dust:bamsdk:api:identity:bam:updateEmail',\n resetPassword: 'urn:bamtech:dust:bamsdk:api:identity:bam:resetPassword',\n requestPasswordReset: 'urn:bamtech:dust:bamsdk:api:identity:bam:requestPasswordReset',\n requiresAuthentication: 'urn:bamtech:dust:bamsdk:api:identity:bam:requiresAuthentication',\n getAuthenticationFlow: 'urn:bamtech:dust:bamsdk:api:identity:bam:getAuthenticationFlow',\n requestOneTimePasscode: 'urn:bamtech:dust:bamsdk:api:identity:bam:requestOneTimePasscode',\n authenticateWithPasscode: 'urn:bamtech:dust:bamsdk:api:identity:bam:authenticateWithPasscode'\n }\n }\n },\n media: {\n mediaApi: {\n createPlaybackSession: 'urn:bamtech:dust:bamsdk:api:media:createPlaybackSession',\n fetch: 'urn:bamtech:dust:bamsdk:api:media:fetch',\n getSpriteSheetThumbnailSets: 'urn:bamtech:dust:bamsdk:api:media:getSpriteSheetThumbnailSets',\n getSpriteSheetThumbnailSet: 'urn:bamtech:dust:bamsdk:api:media:getSpriteSheetThumbnailSet',\n getSpriteSheetThumbnail: 'urn:bamtech:dust:bamsdk:api:media:getSpriteSheetThumbnail',\n getBifThumbnailSets: 'urn:bamtech:dust:bamsdk:api:media:getBifThumbnailSets',\n getBifThumbnailSet: 'urn:bamtech:dust:bamsdk:api:media:getBifThumbnailSet',\n getBifThumbnail: 'urn:bamtech:dust:bamsdk:api:media:getBifThumbnail'\n },\n playbackSession: {\n prepare: 'urn:bamtech:dust:bamsdk:api:media:playbackSession:prepare',\n release: 'urn:bamtech:dust:bamsdk:api:media:playbackSession:release'\n },\n encryptionKeyProvider: {\n getEncryptionKey: 'urn:bamtech:dust:bamsdk:api:media:encryptionKeyProvider:getEncryptionKey'\n }\n },\n messaging: {\n messagingApi: {\n registerChannel: 'urn:bamtech:dust:bamsdk:api:messaging:registerChannel'\n }\n },\n paywall: {\n paywallApi: {\n getPaywall: 'urn:bamtech:dust:bamsdk:api:paywall:getPaywall'\n }\n },\n purchase: {\n purchaseApi: {\n redeem: 'urn:bamtech:dust:bamsdk:api:purchase:redeem',\n restore: 'urn:bamtech:dust:bamsdk:api:purchase:restore',\n getEligibilityStatus: 'urn:bamtech:dust:bamsdk:api:purchase:getEligibilityStatus',\n activateExternalToken: 'urn:bamtech:dust:bamsdk:api:purchase:activateExternalToken',\n getExternalActivationToken: 'urn:bamtech:dust:bamsdk:api:purchase:getExternalActivationToken'\n }\n },\n sdkSession: {\n createSdkSession: 'urn:bamtech:dust:bamsdk:api:session:create',\n initialize: 'urn:bamtech:dust:bamsdk:api:session:initialize',\n reset: 'urn:bamtech:dust:bamsdk:api:session:reset',\n reauthorize: 'urn:bamtech:dust:bamsdk:api:session:reauthorize',\n getAccessState: 'urn:bamtech:dust:bamsdk:api:session:getAccessState',\n restoreAccessState: 'urn:bamtech:dust:bamsdk:api:session:restoreAccessState',\n getSessionInfo: 'urn:bamtech:dust:bamsdk:api:session:getSessionInfo',\n createCustomerSupportCode: 'urn:bamtech:dust:bamsdk:api:session:createCustomerSupportCode',\n authorize: 'urn:bamtech:dust:bamsdk:api:session:authorize'\n },\n subscription: {\n subscriptionApi: {\n getSubscriptions: 'urn:bamtech:dust:bamsdk:api:subscription:getSubscriptions'\n }\n },\n userActivity: {\n personalization: {\n contentRecommendationAward: 'urn:bamtech:dust:bamsdk:app:content-recommendation-reward:v1'\n },\n glimpse: {\n appLaunched: 'urn:dss:glimpse:event:app-lifecycle:app-launched',\n contentSelected: 'urn:dss:glimpse:event:track-action:content-selected',\n searchViewLoaded: 'urn:dss:glimpse:event:track-action:search-view-loaded',\n playbackSelected: 'urn:dss:glimpse:event:track-action:playback-selected',\n playbackExited: 'urn:dss:glimpse:event:track-action:playback-exited',\n purchaseCompleted: 'urn:dss:glimpse:event:track-action:purchase-completed',\n viewLoaded: 'urn:dss:glimpse:event:track-state:view-loaded'\n }\n },\n userProfile: {\n userProfileApi: {\n createUserProfile: 'urn:bamtech:dust:bamsdk:api:account:createUserProfile',\n deleteUserProfile: 'urn:bamtech:dust:bamsdk:api:account:deleteUserProfile',\n getActiveUserProfile: 'urn:bamtech:dust:bamsdk:api:account:getActiveUserProfile',\n getUserProfile: 'urn:bamtech:dust:bamsdk:api:account:getUserProfile',\n getUserProfiles: 'urn:bamtech:dust:bamsdk:api:account:getUserProfiles',\n setActiveUserProfile: 'urn:bamtech:dust:bamsdk:api:account:setActiveUserProfile',\n updateUserProfile: 'urn:bamtech:dust:bamsdk:api:account:updateUserProfile'\n }\n },\n qualityOfService: {\n audioChanged: 'urn:dss:event:fed:media:playback:audio:changed',\n bitrateChanged: 'urn:dss:event:fed:media:playback:bitrate:changed',\n drmCertificateFetched: 'urn:dss:event:fed:media:drm:certificate:fetched',\n drmKeyFetched: 'urn:dss:event:fed:media:drm:key:fetched',\n masterPlaylistFetched: 'urn:dss:event:fed:media:playlist:master:fetched',\n mediaPayloadFetched: 'urn:dss:event:fed:media:payload:fetched',\n mediaSegmentFetched: 'urn:dss:event:fed:media:segment:fetched',\n playbackExited: 'urn:dss:event:fed:media:playback:ended',\n playbackInitialized: 'urn:dss:event:fed:media:playback:initialized',\n playbackPaused: 'urn:dss:event:fed:media:playback:paused',\n playbackReady: 'urn:dss:event:fed:media:playback:ready',\n playbackResumed: 'urn:dss:event:fed:media:playback:resumed',\n playbackSampled: 'urn:dss:event:fed:media:playback:sampled',\n playbackSeeked: 'urn:dss:event:fed:media:playback:seeked',\n playbackSelected: 'urn:dss:event:fed:media:playback:requested',\n playbackSessionTransferred: 'urn:dss:event:fed:media:session:playback:transferred',\n playbackStarted: 'urn:dss:event:fed:media:playback:started',\n rebufferingStarted: 'urn:dss:event:fed:media:playback:rebuffering:started',\n rebufferingEnded: 'urn:dss:event:fed:media:playback:rebuffering:ended',\n subtitleChanged: 'urn:dss:event:fed:media:playback:subtitle:changed',\n variantPlaylistFetched: 'urn:dss:event:fed:media:playlist:variant:fetched'\n },\n services: {\n account: {\n accountClient: {\n createAccount: 'urn:bamtech:dust:bamsdk:service:account:createAccount',\n createAccountGrant: 'urn:bamtech:dust:bamsdk:service:account:createAccountGrant',\n getCurrentAccount: 'urn:bamtech:dust:bamsdk:service:account:getCurrentAccount',\n updateAttributes: 'urn:bamtech:dust:bamsdk:service:account:updateAttributes',\n createUserProfile: 'urn:bamtech:dust:bamsdk:service:account:createUserProfile',\n deleteUserProfile: 'urn:bamtech:dust:bamsdk:service:account:deleteUserProfile',\n getUserProfile: 'urn:bamtech:dust:bamsdk:service:account:getUserProfile',\n getUserProfiles: 'urn:bamtech:dust:bamsdk:service:account:getUserProfiles',\n setActiveUserProfile: 'urn:bamtech:dust:bamsdk:service:account:setActiveUserProfile',\n getActiveUserProfile: 'urn:bamtech:dust:bamsdk:service:account:getActiveUserProfile',\n updateUserProfile: 'urn:bamtech:dust:bamsdk:service:account:updateUserProfile'\n }\n },\n commerce: {\n commerceClient: {\n priceOrder: 'urn:bamtech:dust:bamsdk:service:commerce:priceOrder',\n lookupByZipCode: 'urn:bamtech:dust:bamsdk:service:commerce:lookupByZipCode',\n submitOrderWithPaymentMethod: 'urn:bamtech:dust:bamsdk:service:commerce:submitOrderWithPaymentMethod',\n getOrderStatus: 'urn:bamtech:dust:bamsdk:service:commerce:getOrderStatus',\n createPaymentMethod: 'urn:bamtech:dust:bamsdk:service:commerce:createPaymentMethod',\n getDefaultPaymentMethod: 'urn:bamtech:dust:bamsdk:service:commerce:getDefaultPaymentMethod',\n getPaymentCard: 'urn:bamtech:dust:bamsdk:service:commerce:getPaymentCard'\n }\n },\n configuration: {\n configurationClient: {\n getConfiguration: 'urn:bamtech:dust:bamsdk:service:configuration:getConfiguration'\n }\n },\n content: {\n contentClient: {\n query: 'urn:bamtech:dust:bamsdk:service:content:query',\n getSearchSuggestions: 'urn:bamtech:dust:bamsdk:service:content:getSearchSuggestions'\n }\n },\n customerService: {\n customerServiceClient: {\n createSupportCode: 'urn:bamtech:dust:bamsdk:service:customerService:createSupportCode'\n }\n },\n device: {\n deviceClient: {\n createDeviceGrant: 'urn:bamtech:dust:bamsdk:service:device:createDeviceGrant'\n }\n },\n drm: {\n drmClient: {\n getSilkKey: 'urn:bamtech:dust:bamsdk:service:drm:silkKey',\n getPlayReadyLicense: 'urn:bamtech:dust:bamsdk:service:drm:playReadyLicense',\n getFairPlayCertificate: 'urn:bamtech:dust:bamsdk:service:drm:fairPlayCertificate',\n getFairPlayLicense: 'urn:bamtech:dust:bamsdk:service:drm:fairPlayLicense',\n getWidevineCertificate: 'urn:bamtech:dust:bamsdk:service:drm:widevineCertificate',\n getWidevineLicense: 'urn:bamtech:dust:bamsdk:service:drm:widevineLicense'\n }\n },\n eligibility: {\n eligibilityClient: {\n getEligibilityStatus: 'urn:bamtech:dust:bamsdk:service:eligibility:getEligibilityStatus'\n }\n },\n externalActivation: {\n externalActivationClient: {\n activateToken: 'urn:bamtech:dust:bamsdk:service:externalActivation:activateToken',\n getActivationToken: 'urn:bamtech:dust:bamsdk:service:externalActivation:getActivationToken'\n }\n },\n identity: {\n bam: {\n bamIdentityClient: {\n getIdentity: 'urn:bamtech:dust:bamsdk:service:identity:bam:getIdentity',\n updateAttributes: 'urn:bamtech:dust:bamsdk:service:identity:bam:updateAttributes',\n authenticate: 'urn:bamtech:dust:bamsdk:service:identity:bam:identityLogin',\n createIdentity: 'urn:bamtech:dust:bamsdk:service:identity:bam:createIdentity',\n changeEmail: 'urn:bamtech:dust:bamsdk:service:identity:bam:changeEmail',\n changePassword: 'urn:bamtech:dust:bamsdk:service:identity:bam:changePassword',\n requestPasswordReset: 'urn:bamtech:dust:bamsdk:service:identity:bam:requestPasswordReset',\n resetPassword: 'urn:bamtech:dust:bamsdk:service:identity:bam:resetPassword',\n check: 'urn:bamtech:dust:bamsdk:service:identity:bam:check',\n requestOneTimePasscode: 'urn:bamtech:dust:bamsdk:service:identity:bam:otpRequest',\n redeemOneTimePasscode: 'urn:bamtech:dust:bamsdk:service:identity:bam:otpRedeem'\n }\n }\n },\n internal: {\n telemetry: {\n telemetryClient: {\n postEvents: 'urn:bamtech:dust:bamsdk:service:telemetry:postEvent'\n }\n }\n },\n media: {\n adEngine: {\n adEngineClient: {\n updateCookies: 'urn:bamtech:dust:bamsdk:service:adEngine:setToken',\n getCookies: 'urn:bamtech:dust:bamsdk:service:adEngine:setTokenRedirect'\n }\n },\n mediaClient: {\n getMediaPayload: 'urn:bamtech:dust:bamsdk:service:media:mediaPayload',\n createAuthCookie: 'urn:bamtech:dust:bamsdk:service:media:createAuthCookie',\n getSpriteSheetThumbnails: 'urn:bamtech:dust:bamsdk:service:media:spriteSheetThumbnails',\n getSpriteSheetThumbnail: 'urn:bamtech:dust:bamsdk:service:media:spriteSheetThumbnail',\n getBifThumbnails: 'urn:bamtech:dust:bamsdk:service:media:service:media:bifThumbnails',\n downloadBifThumbnail: 'urn:bamtech:dust:bamsdk:service:media:bifThumbnail'\n }\n },\n paywall: {\n paywallClient: {\n getPaywall: 'urn:bamtech:dust:bamsdk:service:paywall:paywall'\n }\n },\n purchase: {\n purchaseClient: {\n redeemPurchases: 'urn:bamtech:dust:bamsdk:service:purchase:redeemPurchases',\n restorePurchases: 'urn:bamtech:dust:bamsdk:service:purchase:restorePurchases',\n getTokens: 'urn:bamtech:dust:bamsdk:service:purchase:getTokens'\n }\n },\n session: {\n sessionClient: {\n getInfo: 'urn:bamtech:dust:bamsdk:service:session:getInfo'\n }\n },\n subscription: {\n subscriptionClient: {\n linkSubscriptionsFromDevice: 'urn:bamtech:dust:bamsdk:service:subscription:linkSubscriptionsFromDevice',\n getSubscriptions: 'urn:bamtech:dust:bamsdk:service:subscription:getSubscriptions'\n }\n },\n token: {\n tokenClient: {\n exchange: 'urn:bamtech:dust:bamsdk:service:token:exchange'\n }\n }\n },\n streamSample: 'urn:dss:telemetry-service:event:stream-sample',\n bamSdk: 'urn:bamtech:dust:bamsdk'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/dust/dustUrnReference.js","/**\n *\n * @module serviceConfiguration\n *\n */\n\n/**\n *\n * @class ServiceConfiguration\n * @desc Provides base ServiceConfiguration\n *\n */\nexport default class ServiceConfiguration {\n\n /**\n *\n * @param {ServiceClientConfiguration} client\n * @param {Object} extras\n * @param {Boolean} [disabled=false]\n *\n */\n constructor(client, extras, disabled = false) {\n\n /**\n *\n * @access public\n * @type {ServiceClientConfiguration}\n *\n */\n this.client = client;\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.extras = extras;\n\n /**\n *\n * @access public\n * @type {Boolean}\n *\n */\n this.disabled = disabled;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/serviceConfiguration.js","/**\n *\n * @module dustLogUtility\n *\n */\n\nimport Check from 'check-types';\n\nimport Logging from './../../../logging/entry';\n\nimport DustUrnReference from './dustUrnReference';\nimport DustCategory from './dustCategory';\n\nimport InvalidArgumentException from './../../exception/invalidArgumentException';\n\nconst {\n instanceStrict,\n nonEmptyString,\n object,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class DustLogUtility\n * @since 3.4.0\n * @desc helper code that collects server and client data until it is assembled in DustSink#createDustEvent\n *\n */\nexport default class DustLogUtility {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Logger} options.logger\n * @param {String} options.source\n * @param {String} options.urn\n * @param {Object} [options.data={}]\n * @param {String} [options.method]\n * @param {Object} [options.payload={}]\n * @param {String} [options.category]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'DustLogUtility(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get logger() {\n return `${this.ctor} needs SDK.Logger instance.`;\n },\n get source() {\n return `${this.ctor} options.source should be a String with length.`;\n },\n get urn() {\n return `${this.ctor} options.urn should be a String with length`;\n },\n get data() {\n return `${this.ctor} options.data should be an Object`;\n },\n get method() {\n return `${this.ctor} options.method should be a String with length`;\n },\n get payload() {\n return `${this.ctor} options.payload should be an Object`;\n },\n get category() {\n return `${this.ctor} options.category should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { logger, source, urn, data = {}, method, payload = {}, category } = options;\n\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n nonEmptyString(source, errorMessage.source, InvalidArgumentException);\n nonEmptyString(urn, errorMessage.urn, InvalidArgumentException);\n object(data, errorMessage.data, InvalidArgumentException);\n\n if (Check.assigned(method)) {\n nonEmptyString(method, errorMessage.method, InvalidArgumentException);\n }\n\n object(payload, errorMessage.payload, InvalidArgumentException);\n\n if (Check.assigned(category)) {\n nonEmptyString(category, errorMessage.category, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc the constructor name of the file where this event took place\n *\n */\n this.source = source;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc the urn corresponding to this event\n *\n */\n this.urn = urn;\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc stores client data like errors, provider info, query info etc\n *\n */\n this.data = data;\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc the payload generated in the client\n *\n */\n this.payload = payload;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc stores the category of this event\n * @note for `Glimpse` and `Personalization` events this should be supplied when creating `DustLogUtility` for\n * all other events it is constructed in `DustLogUtility.generateCategory()`\n *\n */\n this.category = category;\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc stores server data - only the method string gets passed in via the constructor\n *\n */\n this.server = method ? Object.assign({}, { method }) : {};\n\n /**\n *\n * @access private\n * @type {String}\n * @desc The timestamp of when the event was logged, in ISO 8601/RFC-3339 format\n *\n */\n this.timestamp = new Date().toISOString();\n\n /**\n *\n * @access private\n * @type {String}\n * @desc needs to be {name} for the logger but eventually turns into {event} - the urn for this dustEvent\n * @note the user should be passing in a reference to the full urn or reference to the urn in\n * `SDK.Services.Internal.Dust.DustUrnReference`\n *\n */\n this.name = this.urn;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.level = 3;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc flag that indicates this is a `SDK.Internal.Dust.DustEvent` event - parsed in `SDK.Logging.Logger`\n *\n */\n this.isPublic = true;\n\n /**\n *\n * @access private\n * @type {Array}\n * @desc list of errors including service and/or invalid arguments\n *\n */\n this.errors = [];\n\n /**\n *\n * @note This is called in the constructor to prevent a situation where\n * the client receives an error from services. An error from services\n * would bypass the call to `getResponseCode` which is where\n * `parsePayload` was called. Being called in the constructor ensures it\n * gets called regardless of if the client receives an error back from\n * services\n *\n */\n this.parsePayload();\n\n }\n\n /**\n *\n * @access public\n * @desc entry point for creating a DustEvent. This will piece together the first parts of the DustPayload and\n * send them through the logger flow until DustSink can assemble the final DustEvent.\n * @note (try/catch and finally) ensure this will always resolve, it is a safety mechanism to prevent any methods\n * in the app from failing while chaining this method\n * @returns {Promise}\n *\n */\n log() {\n\n try {\n\n const { generateLogEvent, isPublic, logger, source } = this;\n\n const logEvent = generateLogEvent.call(this);\n\n return logger.log(source, logEvent, isPublic).catch((ex) => {\n\n return logger.warn(ex, logEvent);\n\n }).finally(() => {\n\n return Promise.resolve();\n\n });\n\n } catch (ex) {\n\n return Promise.resolve();\n\n }\n\n }\n\n /**\n *\n * @access public\n * @param {Array|Object} error\n * @desc pushes error(s) into the errors array\n * @note returns an unmodified version of the error\n * @returns {Array|Object}\n *\n */\n captureErrors(error) {\n\n const { errors } = this;\n\n if (Check.nonEmptyArray(error)) {\n errors.push(...error);\n } else if (Check.object(error) && Check.nonEmptyObject(error.data)) {\n errors.push(error.data);\n }\n\n return error;\n\n }\n\n /**\n *\n * @param {Object} data\n * @desc client generated data about the event like a query, the providerType (bamIdentity), etc and errors\n *\n */\n logData(data = {}) {\n\n if (Check.nonEmptyObject(data)) {\n this.data = Object.assign(this.data, data);\n }\n\n }\n\n /**\n *\n * @param {Object} options\n * @param {Object} options.response\n * @param {String} options.transactionId\n * @param {Array} options.errors\n * @desc parses a response from the client\n *\n */\n parseResponse(options) {\n\n if (Check.object(options)) {\n\n const { server, timestamp } = this;\n const { status } = options.response;\n const { transactionId, errors } = options;\n\n server.requestId = Check.nonEmptyString(transactionId) ? transactionId : undefined;\n server.statusCode = status;\n server.roundTripTime = Date.now() - Date.parse(timestamp);\n\n if (Check.assigned(errors)) {\n this.captureErrors(errors);\n }\n\n }\n\n }\n\n /** region private */\n\n /**\n *\n * @access private\n * @desc parses payload to get host and path\n * @note urlRegex parses the payload Url to be able to extract the host and path reliably\n *\n */\n parsePayload() {\n\n const { payload, server } = this;\n\n if (Check.nonEmptyString(payload.url)) {\n\n const urlRegex = '^(.*:)//?([www.]+)*([A-Za-z0-9-.]+)(:[0-9]+)?(.*)$';\n const regex = new RegExp(urlRegex, 'g');\n const parsedUrl = regex.exec(payload.url);\n\n if (Check.nonEmptyArray(parsedUrl)) {\n server.host = parsedUrl[3];\n server.path = parsedUrl[5].split('?')[0];\n }\n\n }\n\n }\n\n /**\n *\n * @access private\n * @desc assembles an object used in DustSink where it gets transformed into a DustEvent\n * @returns {Object}\n *\n */\n generateLogEvent() {\n\n const { data, errors, isPublic, level, name, payload, server, timestamp } = this;\n\n const isServiceEvent = Check.nonEmptyObject(payload);\n const hasErrors = Check.nonEmptyArray(errors);\n\n const logEvent = {\n extraData: {\n category: this.generateCategory({ isServiceEvent, hasErrors }),\n timestamp\n },\n isPublic,\n name,\n level\n };\n\n const { extraData } = logEvent;\n\n if (isServiceEvent) {\n extraData.server = server;\n }\n\n if (Check.nonEmptyObject(data)) {\n extraData.data = data;\n }\n\n if (hasErrors) {\n extraData.errors = errors;\n }\n\n return logEvent;\n\n }\n\n /**\n *\n * @access private\n * @param {Object} options\n * @param {Boolean} options.isServiceEvent\n * @param {Boolean} options.hasErrors\n * @desc sets the category of the event\n * @note this should only create a new category for general dust events -\n * `SDK.UserActivity.Personalization.PersonalizationEvent`'s and `SDK.UserActivity.Glimpse.GlimpseEvent`'s\n * should have their category created when the `DustLogUtility` instance is created\n * this is dynamic due to the fact that general Dust events can originate as a result of an API call or a Service\n * interaction and we don't know if it's successful until after the operation has completed\n * @example 'urn:bamtech:dust:bamsdk:event:service'\n *\n */\n generateCategory(options = {}) {\n\n const { category } = this;\n\n if (Check.not.assigned(category)) {\n\n const { isServiceEvent, hasErrors } = options;\n\n const eventName = isServiceEvent ? 'service' : 'api';\n const eventType = hasErrors ? 'error' : 'event';\n\n return `${DustUrnReference.bamSdk}${DustCategory[eventName][eventType]}`;\n\n }\n\n return category;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/dust/dustLogUtility.js","module.exports = require(\"core-js/library/fn/object/keys\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/object/keys.js\n// module id = 27\n// module chunks = 0","/**\n *\n * @module entry\n * @desc {SDK.Drm} entry point.\n *\n */\n\nimport DrmManager from './drmManager';\nimport DrmProvider from './drmProvider';\nimport AtvFairPlayDrmProvider from './atvFairPlayDrmProvider';\nimport FairPlayDrmProvider from './fairPlayDrmProvider';\nimport PlayReadyDrmProvider from './playReadyDrmProvider';\nimport SilkDrmProvider from './silkDrmProvider';\nimport WidevineDrmProvider from './widevineDrmProvider';\nimport CertificateStorage from './certificateStorage';\nimport WidevineCertificateStorage from './widevineCertificateStorage';\nimport AtvFairPlayCertificateStorage from './atvFairPlayCertificateStorage';\nimport FairPlayCertificateStorage from './fairPlayCertificateStorage';\n\n/**\n *\n * @typedef SDK.Drm\n * @type {Object}\n *\n * @property {DrmManager} DrmManager\n * @property {DrmProvider} DrmProvider\n * @property {AtvFairPlayDrmProvider} AtvFairPlayDrmProvider\n * @property {FairPlayDrmProvider} FairPlayDrmProvider\n * @property {PlayReadyDrmProvider} PlayReadyDrmProvider\n * @property {SilkDrmProvider} SilkDrmProvider\n * @property {WidevineDrmProvider} WidevineDrmProvider\n * @property {CertificateStorage} CertificateStorage\n * @property {WidevineCertificateStorage} WidevineCertificateStorage\n * @property {AtvFairPlayCertificateStorage} AtvFairPlayCertificateStorage\n * @property {FairPlayCertificateStorage} FairPlayCertificateStorage\n *\n */\n\n/**\n *\n * @type {SDK.Drm}\n *\n */\nexport default {\n\n DrmManager,\n DrmProvider,\n AtvFairPlayDrmProvider,\n FairPlayDrmProvider,\n PlayReadyDrmProvider,\n SilkDrmProvider,\n WidevineDrmProvider,\n CertificateStorage,\n WidevineCertificateStorage,\n AtvFairPlayCertificateStorage,\n FairPlayCertificateStorage\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/entry.js","/**\n *\n * @module playerAdapter\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerEvents.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerProperties.md\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../services/exception/entry';\nimport Drm from './../drm/entry';\nimport PlaybackMetricsProvider from './playbackMetricsProvider';\nimport Playlist from './playlist';\n\nconst DrmProvider = Drm.DrmProvider;\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n assigned,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @abstract\n * @class PlayerAdapter\n * @implements {IPlayerAdapter}\n * @extends {SDK.Media.PlaybackMetricsProvider}\n * @desc Interface used to communicate with the media player.\n *\n */\nexport default class PlayerAdapter extends PlaybackMetricsProvider {\n\n /**\n *\n * @param {NativePlayer} nativePlayer\n *\n */\n constructor(nativePlayer) {\n\n const errorMessage = {\n ctor: 'PlayerAdapter(nativePlayer)',\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n }\n };\n\n assigned(nativePlayer, errorMessage.nativePlayer, InvalidArgumentException);\n\n super();\n\n /**\n *\n * @access public\n * @type {String}\n * @since 2.0.0\n *\n */\n this.playlistUri = '';\n\n /**\n *\n * @access public\n * @type {String|Null}\n * @since 4.0.0\n *\n */\n this.videoPlayerName = null;\n\n /**\n *\n * @access public\n * @type {String|Null}\n * @since 4.0.0\n *\n */\n this.videoPlayerVersion = null;\n\n /**\n *\n * @access private\n * @type {NativePlayer}\n * @since 2.0.0\n *\n */\n this.nativePlayer = nativePlayer;\n\n /**\n *\n * @access private\n * @type {SDK.Media.PlaybackEventListener}\n * @since 2.0.0\n *\n */\n this.listener = null;\n\n /**\n *\n * @access public\n * @type {SDK.Drm.DrmProvider}\n * @since 3.2.0\n *\n */\n this.drmProvider = null;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.accessToken = null;\n\n /**\n *\n * @access private\n * @type {Object}\n * @since 2.0.0\n *\n */\n this.boundHandlers = {};\n\n /**\n *\n * @access private\n * @type {Number}\n * @since 2.0.0\n * @desc Value provided if the metric (playhead or bitrate) is not available.\n *\n */\n this.unavailableMetric = null;\n\n /**\n *\n * @access prviate\n * @type {Object}\n * @since 3.6.0\n * @desc used to store adEngine data which is populated from the playlist service in playerAdapter.prepare()\n *\n */\n this.adEngineData = {};\n\n /**\n *\n * @access private\n * @type {String}\n * @since 3.10.0\n * @desc Media failure identifier String\n *\n */\n this.failureEvent = 'MediaFailure';\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Callback used when prepare has been called (usually via the {PlaybackSession}).\n * Sets the source URI on the {NativePlayer} instance.\n * @returns {Promise}\n *\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: 'PlayerAdapter.setSource(playlist)',\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n return new Promise((resolve, reject) => {\n return reject(new Error(`${errorMessage.method} - not-implemented`));\n });\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @returns {Promise}\n *\n */\n setDrmProvider(drmProvider) {\n\n const errorMessage = {\n method: 'PlayerAdapter.setDrmProvider(drmProvider)',\n get drmProvider() {\n return `${this.method} needs SDK.Drm.DrmProvider instance`;\n }\n };\n\n instanceStrict(drmProvider, DrmProvider, errorMessage.drmProvider, InvalidArgumentException);\n\n return new Promise((resolve, reject) => {\n return reject(new Error(`${errorMessage.method} - not-implemented`));\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} accessToken\n * @desc Notifies the player adapter that the access token has been updated.\n * Used for key service authentication.\n * @returns {Promise}\n *\n */\n onAccessChanged(accessToken) {\n\n if (Check.string(accessToken) && Check.nonEmptyString(accessToken)) {\n this.accessToken = accessToken;\n }\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @param {AuthorizationException} exception\n * @desc Notifies the application that the token refresh has failed.\n * Key decryption will fail on next attempt.\n * @returns {Promise}\n *\n */\n onAccessFailed(exception) {\n\n return Promise.resolve(exception);\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n * @returns {Promise}\n *\n */\n clean() {\n\n const method = 'PlayerAdapter.clean()';\n\n return new Promise((resolve, reject) => {\n return reject(new Error(`${method} - not-implemented`));\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {Object} adEngineData\n * @desc overwrites local adEngine object in playbackSession.prepare()\n * @note used in xhrCallbacks for bam-hls and other platforms that need to reuse adEngine data\n *\n */\n setAdEngineData(adEngineData) {\n\n this.adEngineData = adEngineData;\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackStartedEventData} args\n *\n */\n onPlaybackStarted(args) {\n\n const { listener } = this;\n\n listener.onPlaybackStarted(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackPausedEventData} args\n *\n */\n onPlaybackPaused(args) {\n\n const { listener } = this;\n\n listener.onPlaybackPaused(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackResumedEventData} args\n *\n */\n onPlaybackResumed(args) {\n\n const { listener } = this;\n\n listener.onPlaybackResumed(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.RebufferingStartedEventData} args\n *\n */\n onRebufferingStarted(args) {\n\n const { listener } = this;\n\n listener.onRebufferingStarted(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.RebufferingEndedEventData} args\n *\n */\n onRebufferingEnded(args) {\n\n const { listener } = this;\n\n listener.onRebufferingEnded(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackExitedEventData} args\n *\n */\n onPlaybackExited(args) {\n\n const { listener } = this;\n\n listener.onPlaybackExited(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackInitializedEventData} args\n *\n */\n onPlaybackInitialized(args) {\n\n const { listener } = this;\n\n listener.onPlaybackInitialized(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackReadyEventData} args\n *\n */\n onPlaybackReady(args) {\n\n const { listener } = this;\n\n listener.onPlaybackReady(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackSeekedEventData} args\n *\n */\n onPlaybackSeeked(args) {\n\n const { listener } = this;\n\n listener.onPlaybackSeeked(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.AudioChangedEventData} args\n *\n */\n onAudioChanged(args) {\n\n const { listener } = this;\n\n listener.onAudioChanged(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.SubtitleChangedEventData} args\n *\n */\n onSubtitleChanged(args) {\n\n const { listener } = this;\n\n listener.onSubtitleChanged(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.BitrateChangedEventData} args\n *\n */\n onBitrateChanged(args) {\n\n const { listener } = this;\n\n listener.onBitrateChanged(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.MasterPlaylistFetchedEventData} args\n *\n */\n onMasterPlaylistFetched(args) {\n\n const { listener } = this;\n\n listener.onMasterPlaylistFetched(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.VariantPlaylistFetchedEventData} args\n *\n */\n onVariantPlaylistFetched(args) {\n\n const { listener } = this;\n\n listener.onVariantPlaylistFetched(this, args);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.QualityOfService.MediaSegmentFetchedEventData} args\n *\n */\n onMediaSegmentFetched(args) {\n\n const { listener } = this;\n\n listener.onMediaSegmentFetched(this, args);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter.js","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_global.js\n// module id = 30\n// module chunks = 0","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_wks.js\n// module id = 31\n// module chunks = 0","/**\n *\n * @module playlist\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\n\nconst AudioRendition = Services.Media.AudioRendition;\nconst SubtitleRendition = Services.Media.SubtitleRendition;\nconst PlaybackVariant = Services.Media.PlaybackVariant;\nconst PlaybackAttributes = Services.Media.PlaybackAttributes;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n instanceStrict,\n nonEmptyObject,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SDK.Media.Playlist\n * @since 2.0.0\n * @desc The stream URI and metadata about which playlist stream was picked for\n * playback (in the case of requesting one playlistType and getting another that is available).\n *\n */\nexport default class Playlist {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.streamUri\n * @param {SDK.Media.PlaylistType} options.playlistType\n * @param {Array} options.availablePlaylistTypes\n * @param {SDK.Services.Media.PlaybackAttributes} [options.attributes]\n * @param {Array} [options.variants]\n * @param {Array} [options.audioRenditions]\n * @param {Array} [options.subtitleRenditions]\n * @throws {SDK.Services.Exception.InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get streamUri() {\n return `${this.ctor} options.streamUri should be a String with length`;\n },\n get playlistType() {\n return `${this.ctor} options.playlistType should be a String with length`;\n },\n get availablePlaylistTypes() {\n return `${this.ctor} options.availablePlaylistTypes should be an Array of Strings with length`;\n },\n get attributes() {\n return `${this.ctor} options.attributes should be an instance of SDK.Media.PlaybackAttributes`;\n },\n get variants() {\n return `${this.ctor} options.variants should be an Array of SDK.Services.Media.PlaybackVariant`;\n },\n get audioRenditions() {\n return `${this.ctor} options.audioRenditions should be an Array of SDK.Services.Media.AudioRendition`;\n },\n get subtitleRenditions() {\n return `${this.ctor} options.subtitleRenditions should be an Array of SDK.Services.Media.SubtitleRendition`; // eslint-disable-line max-len\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { streamUri, playlistType, availablePlaylistTypes, attributes } = options;\n const { variants, audioRenditions, subtitleRenditions } = options;\n\n nonEmptyString(streamUri, errorMessage.streamUri, InvalidArgumentException);\n nonEmptyString(playlistType, errorMessage.playlistType, InvalidArgumentException);\n array.of.nonEmptyString(availablePlaylistTypes, errorMessage.availablePlaylistTypes, InvalidArgumentException);\n\n if (Check.assigned(attributes)) {\n instanceStrict(attributes, PlaybackAttributes, errorMessage.attributes, InvalidArgumentException);\n }\n\n if (Check.assigned(variants)) {\n array.of.instanceStrict(variants, PlaybackVariant, errorMessage.variants, InvalidArgumentException);\n }\n\n if (Check.assigned(audioRenditions)) {\n array.of.instanceStrict(\n audioRenditions,\n AudioRendition,\n errorMessage.audioRenditions,\n InvalidArgumentException\n );\n }\n\n if (Check.assigned(subtitleRenditions)) {\n array.of.instanceStrict(\n subtitleRenditions,\n SubtitleRendition,\n errorMessage.subtitleRenditions,\n InvalidArgumentException\n );\n }\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.streamUri = streamUri;\n\n /**\n *\n * @access public\n * @type {SDK.Media.PlaylistType}\n *\n */\n this.playlistType = playlistType;\n\n /**\n *\n * @access public\n * @type {Array}\n *\n */\n this.availablePlaylistTypes = availablePlaylistTypes;\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @type {SDK.Services.Media.PlaybackAttributes|undefined}\n * @desc Gets the attributes of the stream.\n *\n */\n this.attributes = attributes;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Array|undefined}\n *\n */\n this.variants = variants;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Array|undefined}\n *\n */\n this.audioRenditions = audioRenditions;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Array|undefined}\n *\n */\n this.subtitleRenditions = subtitleRenditions;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playlist.js","/**\n *\n * @module playbackEventListener\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../services/exception/entry';\nimport PlaybackMetricsProvider from './playbackMetricsProvider';\nimport QualityOfService from './../qualityOfService/entry';\n\nconst AudioChangedEventData = QualityOfService.AudioChangedEventData;\nconst BitrateChangedEventData = QualityOfService.BitrateChangedEventData;\nconst MasterPlaylistFetchedEventData = QualityOfService.MasterPlaylistFetchedEventData;\nconst MediaSegmentFetchedEventData = QualityOfService.MediaSegmentFetchedEventData;\nconst PlaybackExitedEventData = QualityOfService.PlaybackExitedEventData;\nconst PlaybackInitializedEventData = QualityOfService.PlaybackInitializedEventData;\nconst PlaybackPausedEventData = QualityOfService.PlaybackPausedEventData;\nconst PlaybackReadyEventData = QualityOfService.PlaybackReadyEventData;\nconst PlaybackResumedEventData = QualityOfService.PlaybackResumedEventData;\nconst PlaybackSeekedEventData = QualityOfService.PlaybackSeekedEventData;\nconst PlaybackStartedEventData = QualityOfService.PlaybackStartedEventData;\nconst RebufferingEndedEventData = QualityOfService.RebufferingEndedEventData;\nconst RebufferingStartedEventData = QualityOfService.RebufferingStartedEventData;\nconst SubtitleChangedEventData = QualityOfService.SubtitleChangedEventData;\nconst VariantPlaylistFetchedEventData = QualityOfService.VariantPlaylistFetchedEventData;\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class PlaybackEventListener\n * @since 2.0.0\n *\n */\nexport default class PlaybackEventListener {\n\n /**\n *\n * @access public\n * @param {PlaybackMetricsProvider} playbackMetricsProvider\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onMediaChanged(playbackMetricsProvider) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onMediaChanged(playbackMetricsProvider)`,\n get playbackMetricsProvider() {\n return `${this.method} needs PlaybackMetricsProvider instance`;\n }\n };\n\n instanceStrict(playbackMetricsProvider, PlaybackMetricsProvider, errorMessage.playbackMetricsProvider, InvalidArgumentException); // eslint-disable-line max-len\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackStartedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onPlaybackStarted(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackStarted(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackStartedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackStartedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackPausedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onPlaybackPaused(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackPaused(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackPausedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackPausedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackResumedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onPlaybackResumed(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackResumed(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackResumedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackResumedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.RebufferingStartedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onRebufferingStarted(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onRebufferingStarted(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.RebufferingStartedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, RebufferingStartedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.RebufferingEndedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onRebufferingEnded(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onRebufferingEnded(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.RebufferingEndedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, RebufferingEndedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackExitedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onPlaybackExited(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackExited(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackExitedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackExitedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackInitializedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onPlaybackInitialized(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackInitialized(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackInitializedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackInitializedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackReadyEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onPlaybackReady(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackReady(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackReadyEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackReadyEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackSeekedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onPlaybackSeeked(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackSeeked(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackSeekedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackSeekedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.AudioChangedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onAudioChanged(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onAudioChanged(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.AudioChangedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, AudioChangedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.SubtitleChangedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onSubtitleChanged(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onSubtitleChanged(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.SubtitleChangedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, SubtitleChangedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.BitrateChangedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onBitrateChanged(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onBitrateChanged(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.BitrateChangedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, BitrateChangedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.MasterPlaylistFetchedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onMasterPlaylistFetched(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onMasterPlaylistFetched(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.MasterPlaylistFetchedEventData`; // eslint-disable-line max-len\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, MasterPlaylistFetchedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.VariantPlaylistFetchedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onVariantPlaylistFetched(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onVariantPlaylistFetched(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.VariantPlaylistFetchedEventData`; // eslint-disable-line max-len\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, VariantPlaylistFetchedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.MediaSegmentFetchedEventData} args\n * @throws {Error} This method is not implemented\n * @returns {Promise}\n *\n */\n async onMediaSegmentFetched(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onMediaSegmentFetched(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.MediaSegmentFetchedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, MediaSegmentFetchedEventData, errorMessage.args, InvalidArgumentException);\n\n throw Error(`${errorMessage.method} - not-implemented`);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playbackEventListener.js","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_export.js\n// module id = 34\n// module chunks = 0","/**\n *\n * @module playbackMetrics\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\nimport QualityOfService from './../qualityOfService/entry';\n\nconst BitrateType = QualityOfService.BitrateType;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n includes,\n number,\n object\n} = Check.assert;\n\n/**\n *\n * @class PlaybackMetrics\n * @desc Contains a snapshot of information about media playback.\n * @since 2.0.0\n *\n */\nexport default class PlaybackMetrics {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {Number} [currentBitrate]\n * @param {Number} [currentPlayhead]\n * @param {SDK.QualityOfService.BitrateType} [bitrateType]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get currentBitrate() {\n return `${this.ctor} options.currentBitrate should be a Number`;\n },\n get currentPlayhead() {\n return `${this.ctor} options.currentPlayhead should be a Number`;\n },\n get bitrateType() {\n return `${this.ctor} options.bitrateType should be a member of SDK.QualityOfService.BitrateType`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { currentBitrate, currentPlayhead, bitrateType = null } = options;\n\n if (Check.assigned(currentBitrate)) {\n number(currentBitrate, errorMessage.currentBitrate, InvalidArgumentException);\n }\n\n if (Check.assigned(currentPlayhead)) {\n number(currentPlayhead, errorMessage.currentPlayhead, InvalidArgumentException);\n }\n\n if (Check.assigned(bitrateType)) {\n includes(BitrateType, bitrateType, errorMessage.bitrateType, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Gets or sets the current bitrate in Kbps.\n *\n */\n this.currentBitrate = currentBitrate;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Gets or sets the current playhead position.\n *\n */\n this.currentPlayhead = currentPlayhead;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.BitrateType}\n * @desc Gets or sets the current playhead position.\n *\n */\n this.bitrateType = bitrateType;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playbackMetrics.js","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_an-object.js\n// module id = 36\n// module chunks = 0","/**\n *\n * @module entry\n * @desc {SDK.QualityOfService} entry point.\n *\n */\n\nimport AudioChangedEventData from './audioChangedEventData';\nimport BitrateChangedEventData from './bitrateChangedEventData';\nimport BitrateType from './bitrateType';\nimport DrmCertificateFetchedEventData from './drmCertificateFetchedEventData';\nimport DrmKeyFetchedEventData from './drmKeyFetchedEventData';\nimport FetchStatus from './fetchStatus';\nimport HttpMethod from './httpMethod';\nimport MasterPlaylistFetchedEventData from './masterPlaylistFetchedEventData';\nimport MediaFetchError from './mediaFetchError';\nimport MediaPayloadFetchedEventData from './mediaPayloadFetchedEventData';\nimport MediaSegmentFetchedEventData from './mediaSegmentFetchedEventData';\nimport MediaSegmentType from './mediaSegmentType';\nimport NetworkError from './networkError';\nimport NetworkType from './networkType';\nimport PlaybackExitedCause from './playbackExitedCause';\nimport PlaybackExitedEventData from './playbackExitedEventData';\nimport PlaybackError from './playbackError';\nimport PlaybackInitializedEventData from './playbackInitializedEventData';\nimport PlaybackIntent from './playbackIntent';\nimport PlaybackPausedEventData from './playbackPausedEventData';\nimport PlaybackReadyEventData from './playbackReadyEventData';\nimport PlaybackResumedEventData from './playbackResumedEventData';\nimport PlaybackSampledEventData from './playbackSampledEventData';\nimport PlaybackSeekCause from './playbackSeekCause';\nimport PlaybackSeekedEventData from './playbackSeekedEventData';\nimport PlaybackSelectedEventData from './playbackSelectedEventData';\nimport PlaybackSessionTransferredEventData from './playbackSessionTransferredEventData';\nimport PlaybackStartedEventData from './playbackStartedEventData';\nimport PlaylistLiveType from './playlistLiveType';\nimport RebufferingStartedEventData from './rebufferingStartedEventData';\nimport RebufferingEndedEventData from './rebufferingEndedEventData';\nimport ServerRequest from './serverRequest';\nimport SubtitleChangedEventData from './subtitleChangedEventData';\nimport VariantPlaylistFetchedEventData from './variantPlaylistFetchedEventData';\n\n/**\n *\n * @typedef SDK.QualityOfService\n * @type {Object}\n *\n * @property {SDK.QualityOfService.AudioChangedEventData} AudioChangedEventData\n * @property {SDK.QualityOfService.BitrateChangedEventData} BitrateChangedEventData\n * @property {SDK.QualityOfService.BitrateType} BitrateType\n * @property {SDK.QualityOfService.DrmCertificateFetchedEventData} DrmCertificateFetchedEventData\n * @property {SDK.QualityOfService.DrmKeyFetchedEventData} DrmKeyFetchedEventData\n * @property {SDK.QualityOfService.FetchStatus} FetchStatus\n * @property {SDK.QualityOfService.HttpMethod} HttpMethod\n * @property {SDK.QualityOfService.MasterPlaylistFetchedEventData} MasterPlaylistFetchedEventData\n * @property {SDK.QualityOfService.MediaFetchError} MediaFetchError\n * @property {SDK.QualityOfService.MediaPayloadFetchedEventData} MediaPayloadFetchedEventData\n * @property {SDK.QualityOfService.MediaSegmentFetchedEventData} MediaSegmentFetchedEventData\n * @property {SDK.QualityOfService.MediaSegmentType} MediaSegmentType\n * @property {SDK.QualityOfService.NetworkError} NetworkError\n * @property {SDK.QualityOfService.NetworkType} NetworkType\n * @property {SDK.QualityOfService.PlaybackExitedCause} PlaybackExitedCause\n * @property {SDK.QualityOfService.PlaybackExitedEventData} PlaybackExitedEventData\n * @property {SDK.QualityOfService.PlaybackError} PlaybackError\n * @property {SDK.QualityOfService.PlaybackInitializedEventData} PlaybackInitializedEventData\n * @property {SDK.QualityOfService.PlaybackIntent} PlaybackIntent\n * @property {SDK.QualityOfService.PlaybackPausedEventData} PlaybackPausedEventData\n * @property {SDK.QualityOfService.PlaybackReadyEventData} PlaybackReadyEventData\n * @property {SDK.QualityOfService.PlaybackResumedEventData} PlaybackResumedEventData\n * @property {SDK.QualityOfService.PlaybackSampledEventData} PlaybackSampledEventData\n * @property {SDK.QualityOfService.PlaybackSeekCause} PlaybackSeekCause\n * @property {SDK.QualityOfService.PlaybackSeekedEventData} PlaybackSeekedEventData\n * @property {SDK.QualityOfService.PlaybackSelectedEventData} PlaybackSelectedEventData\n * @property {SDK.QualityOfService.PlaybackSessionTransferredEventData} PlaybackSessionTransferredEventData\n * @property {SDK.QualityOfService.PlaybackStartedEventData} PlaybackStartedEventData\n * @property {SDK.QualityOfService.PlaylistLiveType} PlaylistLiveType\n * @property {SDK.QualityOfService.RebufferingStartedEventData} RebufferingStartedEventData\n * @property {SDK.QualityOfService.RebufferingEndedEventData} RebufferingEndedEventData\n * @property {SDK.QualityOfService.ServerRequest} ServerRequest\n * @property {SDK.QualityOfService.SubtitleChangedEventData} SubtitleChangedEventData\n * @property {SDK.QualityOfService.VariantPlaylistFetchedEventData} VariantPlaylistFetchedEventData\n *\n */\n\n/**\n *\n * @type {SDK.QualityOfService}\n *\n */\nexport default {\n\n AudioChangedEventData,\n BitrateChangedEventData,\n BitrateType,\n DrmCertificateFetchedEventData,\n DrmKeyFetchedEventData,\n FetchStatus,\n HttpMethod,\n MasterPlaylistFetchedEventData,\n MediaFetchError,\n MediaPayloadFetchedEventData,\n MediaSegmentFetchedEventData,\n MediaSegmentType,\n NetworkError,\n NetworkType,\n PlaybackExitedCause,\n PlaybackExitedEventData,\n PlaybackError,\n PlaybackInitializedEventData,\n PlaybackIntent,\n PlaybackPausedEventData,\n PlaybackReadyEventData,\n PlaybackResumedEventData,\n PlaybackSampledEventData,\n PlaybackSeekCause,\n PlaybackSeekedEventData,\n PlaybackSelectedEventData,\n PlaybackSessionTransferredEventData,\n PlaybackStartedEventData,\n PlaylistLiveType,\n RebufferingStartedEventData,\n RebufferingEndedEventData,\n ServerRequest,\n SubtitleChangedEventData,\n VariantPlaylistFetchedEventData\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/entry.js","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_descriptors.js\n// module id = 38\n// module chunks = 0","/**\n *\n * @module sdk\n * @desc {BAM.SDK} entry point (core).\n *\n */\n\nimport Account from './account/entry';\nimport Commerce from './commerce/entry';\nimport Configuration from './configuration/entry';\nimport Content from './content/entry';\nimport CustomerService from './customerService/entry';\nimport Device from './device/entry';\nimport Drm from './drm/entry';\nimport Eligibility from './eligibility/entry';\nimport ExternalActivation from './externalActivation/entry';\nimport Identity from './identity/entry';\nimport Internal from './internal/entry';\nimport Logging from './logging/entry';\nimport Media from './media/entry';\nimport Paywall from './paywall/entry';\nimport Purchase from './purchase/entry';\nimport QualityOfService from './qualityOfService/entry';\nimport Services from './services/entry';\nimport Sequences from './sequences/entry';\nimport Status from './status/entry';\nimport Subscription from './subscription/entry';\nimport Token from './token/entry';\nimport Session from './session/entry';\nimport UserActivity from './userActivity/entry';\nimport UserProfile from './userProfile/entry';\n\nimport SdkSession from './sdkSession';\nimport ReauthorizationFailure from './reauthorizationFailure';\nimport Endpoint from './endpoint';\n\n/**\n *\n * @class SDK\n * @desc The BAM SDK manages all BAM platform service API interactions and simplifies client-side integrations.\n *\n */\nexport default class SDK {\n\n /**\n *\n * @access public\n * @returns {SDK.Account}\n *\n */\n static get Account() {\n return Account;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Commerce}\n *\n */\n static get Commerce() {\n return Commerce;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Configuration}\n *\n */\n static get Configuration() {\n return Configuration;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Content}\n *\n */\n static get Content() {\n return Content;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.CustomerService}\n *\n */\n static get CustomerService() {\n return CustomerService;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Device}\n *\n */\n static get Device() {\n return Device;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Drm}\n *\n */\n static get Drm() {\n return Drm;\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @returns {SDK.Eligibility}\n *\n */\n static get Eligibility() {\n return Eligibility;\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @returns {SDK.ExternalActivation}\n *\n */\n static get ExternalActivation() {\n return ExternalActivation;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Identity}\n *\n */\n static get Identity() {\n return Identity;\n }\n\n /**\n *\n * @access private\n * @returns {SDK.Internal}\n *\n */\n static get Internal() {\n return Internal;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Logging}\n *\n */\n static get Logging() {\n return Logging;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Media}\n *\n */\n static get Media() {\n return Media;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Paywall}\n *\n */\n static get Paywall() {\n return Paywall;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Purchase}\n *\n */\n static get Purchase() {\n return Purchase;\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @returns {SDK.QualityOfService}\n *\n */\n static get QualityOfService() {\n return QualityOfService;\n }\n\n /**\n *\n * @access private\n * @returns {SDK.Services}\n *\n */\n static get Services() {\n return Services;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Status}\n *\n */\n static get Status() {\n return Status;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Subscription}\n *\n */\n static get Subscription() {\n return Subscription;\n }\n\n /**\n *\n * @access private\n * @returns {SDK.Test}\n *\n */\n static get Test() {\n return {\n Sequences\n };\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Token}\n *\n */\n static get Token() {\n return Token;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.Session}\n *\n */\n static get Session() {\n return Session;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.UserActivity}\n *\n */\n static get UserActivity() {\n return UserActivity;\n }\n\n /**\n *\n * @access public\n * @returns {SDK.UserProfile}\n *\n */\n static get UserProfile() {\n return UserProfile;\n }\n\n /**\n *\n * @access public\n * @returns {SdkSession}\n *\n */\n static get SdkSession() {\n return SdkSession;\n }\n\n /**\n *\n * @access public\n * @returns {ReauthorizationFailure}\n *\n */\n static get ReauthorizationFailure() {\n return ReauthorizationFailure;\n }\n\n /**\n *\n * @access public\n * @returns {Endpoint}\n *\n */\n static get Endpoint() {\n return Endpoint;\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/sdk.js","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-dp.js\n// module id = 40\n// module chunks = 0","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_is-object.js\n// module id = 41\n// module chunks = 0","/**\n *\n * @module graphQlQuery\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\n\nconst GraphQlBuilder = Services.Content.GraphQlBuilder;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class ContentQuery\n * @desc Represents a Content query with context and a GraphQlQuery.\n *\n */\nexport default class ContentQuery {\n\n /**\n *\n * @param {String} context\n * @param {GraphQlBuilder} graphQl\n *\n */\n constructor(context, graphQl) {\n\n const errorMessage = {\n ctor: 'ContentQuery(context, graphQl)',\n get context() {\n return `${this.ctor} needs context String with length`;\n },\n get graphQlBuilder() {\n return `${this.ctor} needs GraphQlBuilder instance`;\n }\n };\n\n nonEmptyString(context, errorMessage.context, InvalidArgumentException);\n instanceStrict(graphQl, GraphQlBuilder, errorMessage.graphQlBuilder, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.context = context;\n\n /**\n *\n * @access public\n * @type {GraphQlBuilder}\n *\n */\n this.graphQl = graphQl;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/contentQuery.js","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_has.js\n// module id = 43\n// module chunks = 0","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-iobject.js\n// module id = 44\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 45\n// module chunks = 0","var _Object$getOwnPropertyDescriptor = require(\"../core-js/object/get-own-property-descriptor\");\n\nvar _Object$getOwnPropertySymbols = require(\"../core-js/object/get-own-property-symbols\");\n\nvar _Object$keys = require(\"../core-js/object/keys\");\n\nvar defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n var ownKeys = _Object$keys(source);\n\n if (typeof _Object$getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(_Object$getOwnPropertySymbols(source).filter(function (sym) {\n return _Object$getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/objectSpread.js\n// module id = 46\n// module chunks = 0","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_hide.js\n// module id = 47\n// module chunks = 0","module.exports = require(\"core-js/library/fn/get-iterator\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/get-iterator.js\n// module id = 48\n// module chunks = 0","/**\n *\n * @module serverRequest\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport FetchStatus from './fetchStatus';\nimport HttpMethod from './httpMethod';\nimport NetworkError from './networkError';\nimport NetworkType from './networkType';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n includes,\n nonEmptyString,\n number,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.ServerRequest\n * @since 4.0.0\n *\n */\nexport default class ServerRequest {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {SDK.QualityOfService.HttpMethod} [options.method]\n * @param {String} [options.host]\n * @param {String} [options.path]\n * @param {Number} [options.statusCode]\n * @param {String} [options.requestId]\n * @param {Number} [options.roundTripTime]\n * @param {SDK.QualityOfService.FetchStatus} [options.status]\n * @param {String} [options.serverIp]\n * @param {String} [options.cdnName]\n * @param {SDK.QualityOfService.NetworkType} [options.networkType]\n * @param {Number} [options.timeToFirstByte]\n * @param {SDK.QualityOfService.NetworkError} [options.error]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get method() {\n return `${this.ctor} options.method should be a member of SDK.QualityOfService.HttpMethod`;\n },\n get host() {\n return `${this.ctor} options.host should be a String with length`;\n },\n get path() {\n return `${this.ctor} options.path should be a String with length`;\n },\n get statusCode() {\n return `${this.ctor} options.audioLanguage should be a Number`;\n },\n get requestId() {\n return `${this.ctor} options.requestId should be a String with length`;\n },\n get roundTripTime() {\n return `${this.ctor} options.roundTripTime should be a Number`;\n },\n get status() {\n return `${this.ctor} options.status should be a member of SDK.QualityOfService.FetchStatus`;\n },\n get serverIp() {\n return `${this.ctor} options.serverIp should be a String with length`;\n },\n get cdnName() {\n return `${this.ctor} options.cdnName should be a String with length`;\n },\n get networkType() {\n return `${this.ctor} options.networkType should be a member of SDK.QualityOfService.NetworkType`;\n },\n get timeToFirstByte() {\n return `${this.ctor} options.timeToFirstByte should be a Number`;\n },\n get error() {\n return `${this.ctor} options.error should be a member of SDK.QualityOfService.NetworkError`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { method = null, host = null, path = null, statusCode = null } = options;\n const { requestId = null, roundTripTime = null, status = null, serverIp = null } = options;\n const { cdnName = null, networkType = null, timeToFirstByte = null, error = null } = options;\n\n if (Check.assigned(method)) {\n includes(HttpMethod, method, errorMessage.method, InvalidArgumentException);\n }\n\n if (Check.assigned(host)) {\n nonEmptyString(host, errorMessage.host, InvalidArgumentException);\n }\n\n if (Check.assigned(path)) {\n nonEmptyString(path, errorMessage.path, InvalidArgumentException);\n }\n\n if (Check.assigned(statusCode)) {\n number(statusCode, errorMessage.statusCode, InvalidArgumentException);\n }\n\n if (Check.assigned(requestId)) {\n nonEmptyString(requestId, errorMessage.requestId, InvalidArgumentException);\n }\n\n if (Check.assigned(roundTripTime)) {\n number(roundTripTime, errorMessage.roundTripTime, InvalidArgumentException);\n }\n\n if (Check.assigned(status)) {\n includes(FetchStatus, status, errorMessage.status, InvalidArgumentException);\n }\n\n if (Check.assigned(serverIp)) {\n nonEmptyString(serverIp, errorMessage.serverIp, InvalidArgumentException);\n }\n\n if (Check.assigned(cdnName)) {\n nonEmptyString(cdnName, errorMessage.cdnName, InvalidArgumentException);\n }\n\n if (Check.assigned(networkType)) {\n includes(NetworkType, networkType, errorMessage.networkType, InvalidArgumentException);\n }\n\n if (Check.assigned(timeToFirstByte)) {\n number(timeToFirstByte, errorMessage.timeToFirstByte, InvalidArgumentException);\n }\n\n if (Check.assigned(error)) {\n includes(NetworkError, error, errorMessage.error, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.HttpMethod|null}\n *\n */\n this.method = method;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n *\n */\n this.host = host;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n *\n */\n this.path = path;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n *\n */\n this.statusCode = statusCode;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n *\n */\n this.requestId = requestId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n *\n */\n this.roundTripTime = roundTripTime;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.FetchStatus|null}\n *\n */\n this.status = status;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n *\n */\n this.serverIp = serverIp;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n *\n */\n this.cdnName = cdnName;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.NetworkType|null}\n *\n */\n this.networkType = networkType;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n *\n */\n this.timeToFirstByte = timeToFirstByte;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.NetworkError|null}\n *\n */\n this.error = error;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/serverRequest.js","'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/assert/assert.js\n// module id = 50\n// module chunks = 0","/**\n *\n * @module base\n * @see https://github.com/graphql/graphiql/blob/master/README.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/GraphQL-Model-Component-Parts.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/BAM-SDK-Mock-Environment-Cheat-Sheet.md\n *\n */\n\nimport SDK from './../sdk';\n\nimport Exception from './../services/exception/entry';\n\nconst ServiceException = Exception.ServiceException;\nconst ErrorReason = Exception.ErrorReason;\nconst ExceptionReference = Exception.ExceptionReference;\n\n/**\n *\n * @class BaseSequence\n *\n */\nexport default class BaseSequence {\n\n /**\n *\n * @param {Object} options contains all of the parameters for this function\n * @param {Object} [options.config={}] configuration used to build a BootstrapConfiguration instance\n * @param {SDK.Token.GeoProvider} [options.geoProvider=null]\n * @param {Object} [options.dependencies={}] provides a way of injecting dependencies for tests.\n * It will likely not be used in production\n * @param {Object} [options.dependencies.$SDK=SDK] Allows for an injectable SDK, but defaults to the actual\n */\n\n constructor(options) {\n\n const { config = {}, geoProvider = null, dependencies = {} } = options;\n const { $SDK = SDK } = dependencies;\n const defaultConfig = {\n clientId: 'launchpad',\n clientApiKey: 'clientApiKey',\n environment: 'qa',\n debugEnabled: false,\n application: {\n name: 'name',\n id: 'id',\n version: 'version'\n }\n };\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.config = Object.assign(defaultConfig, config);\n\n /**\n *\n * @access public\n * @type {SDK.Services.Authorization.GeoProvider}\n *\n */\n this.geoProvider = geoProvider;\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc Save the injected or default SDK into the `this` scope\n *\n */\n this.$SDK = $SDK;\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @method createSdkSession\n * @param {SDK.Services.Configuration.BootstrapConfiguration} bootstrapConfiguration - The bootstrap\n * information used to initialize the SDK.\n * @param {SDK.Token.GeoProvider} [geoProvider=null]\n * @param {SDK.Media.MediaCapabilitiesProvider} [mediaCapabilitiesProvider=null]\n * @desc Creates an SDK session from the injected SDK instance\n * @returns {Promise}\n * @example createSdkSession(bootstrapConfiguration, geoProvider mediaCapabilitiesProvider)\n *\n */\n async createSdkSession(bootstrapConfiguration, geoProvider = null, mediaCapabilitiesProvider = null) {\n\n const session = this.$SDK.SdkSession;\n\n return session.createSdkSession(bootstrapConfiguration, geoProvider, mediaCapabilitiesProvider);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @method createInitializedSdkSession\n * @param {SDK.Services.Configuration.BootstrapConfiguration} bootstrapConfiguration - The bootstrap\n * information used to initialize the SDK.\n * @param {SDK.Token.GeoProvider} [geoProvider=null]\n * @param {SDK.Media.MediaCapabilitiesProvider} [mediaCapabilitiesProvider=null]\n * @desc Creates and Initializes an SDK session from the injected SDK instance\n * @returns {Promise}\n *\n */\n async createInitializedSdkSession(bootstrapConfiguration, geoProvider = null, mediaCapabilitiesProvider = null) {\n\n const sdkSession = await this.createSdkSession(bootstrapConfiguration, geoProvider, mediaCapabilitiesProvider);\n\n await sdkSession.initialize();\n\n return sdkSession;\n\n }\n\n /**\n *\n * @access public\n * @method execute\n * @desc runs the sequence to completion\n * @returns {Promise}\n *\n */\n execute() {\n\n const method = 'BaseSequence.execute()';\n const reasons = [new ErrorReason('', `${method} - not-implemented`)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return new Promise((resolve, reject) => {\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/sequences/base.js","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_ctx.js\n// module id = 52\n// module chunks = 0","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_fails.js\n// module id = 53\n// module chunks = 0","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iterators.js\n// module id = 54\n// module chunks = 0","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-keys.js\n// module id = 55\n// module chunks = 0","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-object.js\n// module id = 56\n// module chunks = 0","/**\n *\n * @module httpMethod\n * @see https://github.com/STRML/keyMirror\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef HttpMethod\n * @type {Object}\n *\n * @property {String} GET\n * @property {String} POST\n * @property {String} DELETE\n * @property {String} PATCH\n * @property {String} PUT\n *\n */\n\n/**\n *\n * @enum\n * @type {HttpMethod}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n GET: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n POST: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n DELETE: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n PATCH: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n PUT: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/httpMethod.js","/**\n *\n * @module drmManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\nimport PlaybackContext from './../media/playbackContext';\nimport QualityOfService from './../qualityOfService/entry';\n\nconst AccessTokenProvider = Token.AccessTokenProvider;\nconst DrmCertificateFetchedEventData = QualityOfService.DrmCertificateFetchedEventData;\nconst DrmKeyFetchedEventData = QualityOfService.DrmKeyFetchedEventData;\n\nconst Util = Services.Util;\nconst PlayReadyMessage = Services.Drm.PlayReadyMessage;\nconst DrmClient = Services.Drm.DrmClient;\nconst DrmManagerConfiguration = Services.Configuration.DrmManagerConfiguration;\nconst Storage = Services.Storage;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst DustCategory = Services.Internal.Dust.DustCategory;\nconst QualityOfServiceDustUrnReference = Services.Internal.Dust.DustUrnReference.qualityOfService;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class DrmManager\n * @desc Provides a manager that can be used to facilitate DRM protected playback.\n * @since 3.2.0\n *\n */\nexport default class DrmManager {\n\n /**\n *\n * @param {SDK.Services.Drm.DrmManagerConfiguration} drmManagerConfiguration\n * @param {SDK.Services.Drm.DrmClient} drmClient\n * @param {SDK.Token.AccessTokenProvider} accessTokenProvider\n * @param {String} clientId\n * @param {String} environment\n * @param {SDK.Token.Storage} [storage=null]\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(drmManagerConfiguration, drmClient, accessTokenProvider,\n clientId, environment, storage = null, logger = Logging) {\n\n const errorMessage = {\n ctor: 'DrmManager(drmManagerConfiguration, drmClient, accessTokenProvider, clientId, environment, storage, logger)', // eslint-disable-line\n get drmManagerConfiguration() {\n return `${this.ctor} needs SDK.Services.Drm.DrmManagerConfiguration instance`;\n },\n get drmClient() {\n return `${this.ctor} needs SDK.Services.Drm.DrmClient instance`;\n },\n get accessTokenProvider() {\n return `${this.ctor} needs SDK.Token.AccessTokenProvider instance`;\n },\n get clientId() {\n return `${this.ctor} clientId should be a String`;\n },\n get environment() {\n return `${this.ctor} environment should be a String`;\n },\n get storage() {\n return `${this.ctor} needs SDK.Services.Storage instance`;\n }\n };\n\n instanceStrict(drmManagerConfiguration, DrmManagerConfiguration, errorMessage.drmManagerConfiguration, InvalidArgumentException); // eslint-disable-line\n instanceStrict(drmClient, DrmClient, errorMessage.drmClient, InvalidArgumentException);\n instanceStrict(accessTokenProvider, AccessTokenProvider, errorMessage.accessTokenProvider, InvalidArgumentException); // eslint-disable-line\n\n if (Check.assigned(storage)) {\n instanceStrict(storage, Storage, errorMessage.storage, InvalidArgumentException);\n }\n\n Check.nonEmptyString(clientId, errorMessage.clientId, InvalidArgumentException);\n Check.nonEmptyString(environment, errorMessage.environment, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {SDK.Services.Drm.DrmManagerConfiguration}\n *\n */\n this.config = drmManagerConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Drm.DrmClient}\n *\n */\n this.client = drmClient;\n\n /**\n *\n * @access private\n * @type {SDK.Token.AccessTokenProvider}\n *\n */\n this.accessTokenProvider = accessTokenProvider;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.clientId = clientId;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.environment = environment;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Storage}\n *\n */\n this.storage = storage || new Storage(this.logger);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @since 4.0.0\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => {\n return this.client.dustEnabled;\n }, false);\n\n this.logger.log(DrmManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {String} keyLocation - The URL of the decryption key.\n * @param {SDK.Media.PlaybackContext} [playbackContext=null] - Context information about the playback attempt.\n * @desc Retrieves a SILK decryption key from the key service.\n * @returns {Promise>} The decryption key for this media asset.\n *\n */\n getSilkKey(keyLocation, playbackContext = null) {\n\n const errorMessage = {\n method: 'DrmManager.getSilkKey(keyLocation, playbackContext)',\n get keyLocation() {\n return `${this.method} keyLocation should be a String with length`;\n },\n get playbackContext() {\n return `${this.method} needs SDK.Media.PlaybackContext instance`;\n }\n };\n\n nonEmptyString(keyLocation, errorMessage.keyLocation, InvalidArgumentException);\n\n if (Check.assigned(playbackContext)) {\n instanceStrict(playbackContext, PlaybackContext, errorMessage.playbackContext, InvalidArgumentException);\n }\n\n const { client, accessToken, logger, dustEnabled } = this;\n\n const playbackSessionId = Util.getSafe(() => playbackContext.playbackSessionId);\n\n if (dustEnabled && Check.assigned(playbackSessionId)) {\n\n const offline = Util.getSafe(() => playbackContext.offline);\n\n const drmKeyFetched = new DrmKeyFetchedEventData({\n playbackSessionId,\n offline\n });\n\n const dustLogUtility = new DustLogUtility({\n category: DustCategory.qos,\n logger,\n source: DrmManager.name,\n urn: QualityOfServiceDustUrnReference.drmKeyFetched,\n data: {\n ...drmKeyFetched\n }\n });\n\n dustLogUtility.log();\n\n }\n\n return client.getSilkKey(keyLocation, accessToken);\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Media.PlaybackContext} [playbackContext=null] - Context information about the playback attempt.\n * @desc Retrieves the BAMTECH FairPlay Application Certificate.\n * @note This certificate is the same for all partners. It will be hosted\n * statically and can be stored on a long-term basis.\n * @returns {Promise>} A Promise fulfilled by the BAMTECH FairPlay\n * Application Certificate as binary data.\n *\n */\n getFairPlayCertificate(playbackContext = null) {\n\n const errorMessage = {\n method: 'DrmManager.getFairPlayCertificate(playbackContext)',\n get playbackContext() {\n return `${this.method} needs SDK.Media.PlaybackContext instance`;\n }\n };\n\n if (Check.assigned(playbackContext)) {\n instanceStrict(playbackContext, PlaybackContext, errorMessage.playbackContext, InvalidArgumentException);\n }\n\n const { client, accessToken, logger, dustEnabled } = this;\n\n const playbackSessionId = Util.getSafe(() => playbackContext.playbackSessionId);\n\n if (dustEnabled && Check.assigned(playbackSessionId)) {\n\n const offline = Util.getSafe(() => playbackContext.offline);\n\n const drmCertificateFetched = new DrmCertificateFetchedEventData({\n playbackSessionId,\n offline\n });\n\n const dustLogUtility = new DustLogUtility({\n category: DustCategory.qos,\n logger,\n source: DrmManager.name,\n urn: QualityOfServiceDustUrnReference.drmCertificateFetched,\n data: {\n ...drmCertificateFetched\n }\n });\n\n dustLogUtility.log();\n\n }\n\n return client.getFairPlayCertificate(accessToken);\n\n }\n\n /**\n *\n * @access private\n * @param {Array} serverPlaybackContext - A server playback context created by the\n * DRM client (typically directly by the player or the platform).\n * @param {SDK.Media.PlaybackContext} [playbackContext=null] - Context information about the playback attempt.\n * @desc Requests a FairPlay content key context from the license service\n * to authorize and decrypt media.\n * @note Nearly all FairPlay DRM clients will provide a mechanism to create the\n * server playback context. The SDK shall leverage these capabilities wherever possible.\n * @returns {Promise>} A Promise fulfilled by a content key context from\n * the license server.\n *\n */\n getFairPlayLicense(serverPlaybackContext, playbackContext = null) {\n\n const errorMessage = {\n method: 'DrmManager.getFairPlayLicense(serverPlaybackContext, playbackContext)',\n get serverPlaybackContextString() {\n return `${this.method} serverPlaybackContext should be a String with length`;\n },\n get serverPlaybackContext() {\n return `${this.method} serverPlaybackContext should be an ArrayBuffer view`;\n },\n get playbackContext() {\n return `${this.method} needs SDK.Media.PlaybackContext instance`;\n }\n };\n\n if (Check.not.string(serverPlaybackContext)) {\n\n Check.assert(ArrayBuffer.isView(serverPlaybackContext), errorMessage.serverPlaybackContext, InvalidArgumentException); // eslint-disable-line max-len\n\n } else {\n\n nonEmptyString(serverPlaybackContext, errorMessage.serverPlaybackContextString, InvalidArgumentException);\n\n }\n\n if (Check.assigned(playbackContext)) {\n instanceStrict(playbackContext, PlaybackContext, errorMessage.playbackContext, InvalidArgumentException);\n }\n\n const { client, accessToken, logger, dustEnabled } = this;\n\n const playbackSessionId = Util.getSafe(() => playbackContext.playbackSessionId);\n\n if (dustEnabled && Check.assigned(playbackSessionId)) {\n\n const offline = Util.getSafe(() => playbackContext.offline);\n\n const drmKeyFetched = new DrmKeyFetchedEventData({\n playbackSessionId,\n offline\n });\n\n const dustLogUtility = new DustLogUtility({\n category: DustCategory.qos,\n logger,\n source: DrmManager.name,\n urn: QualityOfServiceDustUrnReference.drmKeyFetched,\n data: {\n ...drmKeyFetched\n }\n });\n\n dustLogUtility.log();\n\n }\n\n return client.getFairPlayLicense(serverPlaybackContext, accessToken);\n\n }\n\n /**\n *\n * @access private\n * @desc Gets a certificate required for decrypting Widevine protected content.\n * @returns {Promise>}\n *\n */\n getWidevineCertificate() {\n\n const { client, accessToken } = this;\n\n return client.getWidevineCertificate(accessToken);\n\n }\n\n /**\n *\n * @access private\n * @param {Array} buffer - A protocol buffer conforming to the Widevine\n * specification identifying the asset and encryption mode.\n * @param {SDK.Media.PlaybackContext} [playbackContext=null] - Context information about the playback attempt.\n * @desc Requests a Widevine license from the license service.\n * @note Nearly all Widevine DRM clients will provide a mechanism to create the\n * Widevine protocol buffer. The SDK shall leverage these capabilities wherever possible.\n * @returns {Promise>} A Promise fulfilled with the Widevine license as\n * binary data.\n *\n */\n getWidevineLicense(buffer, playbackContext = null) {\n\n const errorMessage = {\n method: 'DrmManager.getWidevineLicense(buffer, playbackContext)',\n get buffer() {\n return `${this.method} buffer should be an ArrayBuffer view`;\n },\n get playbackContext() {\n return `${this.method} needs SDK.Media.PlaybackContext instance`;\n }\n };\n\n Check.assert(ArrayBuffer.isView(buffer), errorMessage.buffer, InvalidArgumentException);\n\n if (Check.assigned(playbackContext)) {\n instanceStrict(playbackContext, PlaybackContext, errorMessage.playbackContext, InvalidArgumentException);\n }\n\n const { client, accessToken, logger, dustEnabled } = this;\n\n const playbackSessionId = Util.getSafe(() => playbackContext.playbackSessionId);\n\n if (dustEnabled && Check.assigned(playbackSessionId)) {\n\n const offline = Util.getSafe(() => playbackContext.offline);\n\n const drmKeyFetched = new DrmKeyFetchedEventData({\n playbackSessionId,\n offline\n });\n\n const dustLogUtility = new DustLogUtility({\n category: DustCategory.qos,\n logger,\n source: DrmManager.name,\n urn: QualityOfServiceDustUrnReference.drmKeyFetched,\n data: {\n ...drmKeyFetched\n }\n });\n\n dustLogUtility.log();\n\n }\n\n return client.getWidevineLicense(buffer, accessToken);\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Drm.PlayReadyMessage} message - A configured\n * `PlayReadyMessage` containing any required headers and a PlayReadyObject body.\n * @param {SDK.Media.PlaybackContext} [playbackContext=null] - Context information about the playback attempt.\n * @desc Requests a PlayReady license from the license service.\n * @returns {Promise>} A Promise fulfilled with the PlayReady license as\n * binary data.\n *\n */\n getPlayReadyLicense(message, playbackContext = null) {\n\n const errorMessage = {\n method: 'DrmManager.getPlayReadyLicense(message, playbackContext)',\n get message() {\n return `${this.method} needs PlayReadyMessage instance`;\n },\n get playbackContext() {\n return `${this.method} needs SDK.Media.PlaybackContext instance`;\n }\n };\n\n instanceStrict(message, PlayReadyMessage, errorMessage.message, InvalidArgumentException);\n\n if (Check.assigned(playbackContext)) {\n instanceStrict(playbackContext, PlaybackContext, errorMessage.playbackContext, InvalidArgumentException);\n }\n\n const { client, accessToken, logger, dustEnabled } = this;\n\n const playbackSessionId = Util.getSafe(() => playbackContext.playbackSessionId);\n\n if (dustEnabled && Check.assigned(playbackSessionId)) {\n\n const offline = Util.getSafe(() => playbackContext.offline);\n\n const drmKeyFetched = new DrmKeyFetchedEventData({\n playbackSessionId,\n offline\n });\n\n const dustLogUtility = new DustLogUtility({\n category: DustCategory.qos,\n logger,\n source: DrmManager.name,\n urn: QualityOfServiceDustUrnReference.drmKeyFetched,\n data: {\n ...drmKeyFetched\n }\n });\n\n dustLogUtility.log();\n\n }\n\n return client.getPlayReadyLicense(message, accessToken);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.accessTokenProvider.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/drmManager.js","/**\n *\n * @module assertionErrorMessages\n *\n */\n\nconst INVALID = 'is malformed, missing, or invalid';\n\n/**\n *\n * @typedef AssertionErrorMessages\n * @type {Object}\n * @since 4.0.0\n * @property {String} actualTest\n * @property {Object} bamIdentityApi\n * @property {String} bamIdentityApi.authenticateWithPasscode\n * @property {String} bamIdentityApi.getAuthenticationFlow\n * @property {Object} commerceApi\n * @property {String} commerceApi.createPaymentMethod\n * @property {String} commerceApi.getLocationCandidates\n * @property {String} commerceApi.getDefaultPaymentMethod\n * @property {String} commerceApi.getPaymentCard\n * @property {String} commerceApi.submitOrder\n * @property {Object} contentApi\n * @property {String} contentApi.query\n * @property {Object} mediaApi\n * @property {String} mediaApi.fetch\n * @property {String} mediaApi.createPlaybackSession\n * @property {Object} mediaApi.playbackSession\n * @property {String} mediaApi.playbackSession.playlist\n * @property {Object} playerAdapter\n * @property {String} playerAdapter.ready\n * @property {String} playerAdapter.reset\n * @property {String} sdk\n * @property {Object} userProfileApi\n * @property {String} userProfileApi.createUserProfile\n * @property {String} userProfileApi.getUserProfiles\n * @property {String} userProfileApi.getUserProfile\n * @desc Describes specific AssertionError messages to be using in Sequence validations\n * @example AssertionErrorMessages.commerceApi.createPaymentMethod\n *\n */\nexport default {\n actualTest: 'The actual test for success failed',\n bamIdentityApi: {\n authenticateWithPasscode: `bamIdentityApi.authenticateWithPasscode() redeemedPasscodeToken ${INVALID}`,\n getAuthenticationFlow: 'bamIdentityApi.getAuthenticationFlow() does not allow oneTimePasscode'\n },\n commerceApi: {\n createPaymentMethod: `commerceApi.createPaymentMethod() paymentMethodId ${INVALID}`,\n getLocationCandidates: `commerceApi.getLocationCandidates() zipLocations ${INVALID}`,\n getDefaultPaymentMethod: `commerceApi.getDefaultPaymentMethod() paymentMethodResponse ${INVALID}`,\n getPaymentCard: `commerceApi.getPaymentCard() paymentMethodResponse from getPaymentCard ${INVALID}`,\n priceOrder: `commerceApi.priceOrder() ${INVALID}`,\n submitOrder: `commerceApi.submitOrder () orderId ${INVALID}`\n },\n contentApi: {\n query: `contentApi.query() contentQuery ${INVALID}`\n },\n mediaApi: {\n fetch: `mediaApi.fetch() mediaItem ${INVALID}`,\n createPlaybackSession: `mediaApi.createPlaybackSession() playbackSession ${INVALID}`,\n playbackSession: {\n playlist: `mediaApi.playbackSession.playlist() ${INVALID}`\n }\n },\n playerAdapter: {\n ready: `playerAdapter.ready() ${INVALID}`,\n reset: 'playerAdapter.reset() failed'\n },\n sdk: 'SdkSession was not created',\n userProfileApi: {\n createUserProfile: `userProfileApi.createUserProfile() userProfile ${INVALID}`,\n getUserProfiles: `userProfileApi.getUserProfiles() userProfiles ${INVALID}`,\n getUserProfile: `userProfileApi.getUserProfile() userProfile ${INVALID}`\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/sequences/assertionErrorMessages.js","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_property-desc.js\n// module id = 60\n// module chunks = 0","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.string.iterator.js\n// module id = 61\n// module chunks = 0","module.exports = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_library.js\n// module id = 62\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_cof.js\n// module id = 63\n// module chunks = 0","exports.f = {}.propertyIsEnumerable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-pie.js\n// module id = 64\n// module chunks = 0","/**\n *\n * @module logLevel\n *\n */\n\n/**\n *\n * @typedef {Number} LogLevel\n * @enum\n *\n * @desc The enumerable keys of LogLevel are strings like none, trace, warn, error, the values of which are integers.\n * The use of integers instead of strings for this enumeration allow comparison filters and ordering of severity.\n * There are non-enumerable numeric keys pointing back to the level name, see below:\n *\n * LogLevel[0] === 'none'; // hidden in prototype\n * LogLevel.none === 0; // own property\n *\n */\n\nconst LogLevel = (function () {\n\n const numericCodes = {\n 0: 'none',\n 1: 'trace',\n 2: 'debug',\n 3: 'info',\n 4: 'warn',\n 5: 'error'\n };\n\n /**\n *\n * @function {_LogLevel}\n *\n */\n function _LogLevel() {\n\n /**\n *\n * @type {LogLevel}\n * @desc A level that is ignored by the Logger.\n *\n */\n this.none = 0;\n\n /**\n *\n * @type {LogLevel}\n * @desc The level used for very detailed trace debugging.\n *\n */\n this.trace = 1;\n\n /**\n *\n * @type {LogLevel}\n * @desc The level used for normal debug events. This is the level for messages logged by the Logger.\n *\n */\n this.debug = 2;\n\n /**\n *\n * @type {LogLevel}\n * @desc The level used for informational events. This is the default base level in production.\n *\n */\n this.info = 3;\n\n /**\n *\n * @type {LogLevel}\n * @desc The level used for non-fatal errors or unusual events.\n *\n */\n this.warn = 4;\n\n /**\n *\n * @type {LogLevel}\n * @desc The level used for fatal events.\n *\n */\n this.error = 5;\n\n }\n\n _LogLevel.prototype = Object.create(numericCodes);\n\n /**\n *\n * @type {Object}\n *\n * @property {LogLevel} none\n * @property {LogLevel} trace\n * @property {LogLevel} debug\n * @property {LogLevel} info\n * @property {LogLevel} warn\n * @property {LogLevel} error\n *\n */\n return new _LogLevel();\n\n}());\n\nexport default LogLevel;\n\n\n\n// WEBPACK FOOTER //\n// ./src/logging/logLevel.js","module.exports = require(\"core-js/library/fn/object/create\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/object/create.js\n// module id = 66\n// module chunks = 0","/**\n *\n * @module retryPolicy\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class RetryPolicy\n * @desc Provides service retry rules.\n *\n */\nexport default class RetryPolicy {\n\n /**\n *\n * @param {Number} retryBasePeriod\n * @param {Number} retryMultiplier\n * @param {Number} retryMaxAttempts\n * @param {Number} retryMaxPeriod\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(retryBasePeriod, retryMultiplier, retryMaxAttempts, retryMaxPeriod, logger = Logging) {\n\n const errorMessage = {\n ctor: 'RetryPolicy(retryBasePeriod, retryMultiplier, retryMaxAttempts, retryMaxPeriod, logger)',\n get retryBasePeriod() {\n return `${this.ctor} retryBasePeriod should be a Number`;\n },\n get retryMultiplier() {\n return `${this.ctor} retryMultiplier should be a Number`;\n },\n get retryMaxAttempts() {\n return `${this.ctor} retryMaxAttempts should be a Numberr`;\n },\n get retryMaxPeriod() {\n return `${this.ctor} retryMaxPeriod should be a Number`;\n },\n get logger() {\n return `${this.ctor} needs SDK.Services.Logger instance.`;\n }\n };\n\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n if (Check.not.number(retryBasePeriod)) {\n logger.warn(RetryPolicy.name, errorMessage.retryBasePeriod);\n }\n\n if (Check.not.number(retryMultiplier)) {\n logger.warn(RetryPolicy.name, errorMessage.retryMultiplier);\n }\n\n if (Check.not.number(retryMaxAttempts)) {\n logger.warn(RetryPolicy.name, errorMessage.retryMaxAttempts);\n }\n\n if (Check.not.number(retryMaxPeriod)) {\n logger.warn(RetryPolicy.name, errorMessage.retryMaxPeriod);\n }\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Gets or sets the retry base period for activation in seconds.\n *\n */\n this.retryBasePeriod = retryBasePeriod;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Gets or sets the retry multiplier for activation.\n *\n */\n this.retryMultiplier = retryMultiplier;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Gets or sets the maximum number of retry attempts for activation.\n *\n */\n this.retryMaxAttempts = retryMaxAttempts;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Gets or sets the maximum period for retry attempts for activation.\n *\n */\n this.retryMaxPeriod = retryMaxPeriod;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/retryPolicy.js","/**\n *\n * @module searchOverrides\n *\n */\nimport Check from 'check-types';\nimport Exception from './../services/exception/entry';\nimport Util from './../services/util/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString,\n date,\n object\n} = Check.assert;\n\n/**\n *\n * @class SearchOverrides\n * @desc Provides a mechanism to override the country or date values\n * for testing search responses\n *\n */\nexport default class SearchOverrides {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.activeDate] - Defines the time of origin for the search request.\n * May affect availability, appearance, and expiration of content. See ISO 8601 for format\n * @param {String} [options.countryCode] - Defines the country of origin for the search request.\n * See ISO 3166-1 alpha-2 for format\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'SearchOverrides(options)',\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get activeDate() {\n return `${this.ctor} options.activeDate should be a String with length and conform to ISO 8601`;\n },\n get countryCode() {\n return `${this.ctor} options.countryCode should be a String with length and conform to ISO 3166-1 Alpha-2`; // eslint-disable-line max-len\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { activeDate, countryCode } = options;\n\n if (Check.assigned(activeDate) && !Util.dateRegex(activeDate)) {\n date(null, errorMessage.activeDate, InvalidArgumentException);\n }\n\n if (Check.assigned(countryCode)) {\n nonEmptyString(countryCode, errorMessage.countryCode, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {String|undefiend}\n *\n */\n this.activeDate = activeDate;\n\n /**\n *\n * @access private\n * @type {String|undefined}\n *\n */\n this.countryCode = countryCode;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/searchOverrides.js","/**\n *\n * @module geoLocation\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n number\n} = Check.assert;\n\n/**\n *\n * @class GeoLocation\n * @desc Represents a geographic location.\n *\n */\nexport default class GeoLocation {\n\n /**\n *\n * @param {Number} longitude\n * @param {Number} latitude\n *\n */\n constructor(longitude, latitude) {\n\n const errorMessage = {\n ctor: 'GeoLocation(longitude, latitude)',\n get longitude() {\n return `${this.ctor} longitude should be a Number`;\n },\n get latitude() {\n return `${this.ctor}latitude should be a Number`;\n }\n };\n\n number(latitude, errorMessage.latitude, InvalidArgumentException);\n number(longitude, errorMessage.longitude, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The longitude of the location.\n *\n */\n this.longitude = longitude;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The latitude of the location.\n *\n */\n this.latitude = latitude;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/geoLocation.js","/**\n *\n * @module accessContextState\n *\n */\n\n/**\n *\n * @class AccessContextState\n *\n */\nexport default class AccessContextState {\n\n /**\n *\n * @param {Array} [modes=[]]\n *\n */\n constructor(modes = []) {\n\n /**\n *\n * @access private\n * @type {Array}\n * @desc Array of strings representing enabled / authenticated providers\n *\n */\n this.modes = modes;\n\n }\n\n /**\n *\n * @access public\n * @param {String} mode\n * @returns {Boolean}\n *\n */\n hasMode(mode) {\n\n return this.modes.includes(mode);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/accessContextState.js","/**\n *\n * @module graphQlQuery\n *\n */\n\nimport Services from './../services/entry';\n\n/**\n *\n * @class GraphQlQuery\n * @extends {SDK.Services.Content.GraphQlQuery}\n * @desc Represents a GraphQL query.\n *\n */\nexport default class GraphQlQuery extends Services.Content.GraphQlQuery {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/graphQlQuery.js","/**\n *\n * @module playbackContext\n *\n */\n\nimport uuid from 'uuid';\nimport Check from 'check-types';\nimport Exception from './../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n boolean\n} = Check.assert;\n\n/**\n *\n * @class SDK.Media.PlaybackContext\n * @since 4.0.0\n *\n */\nexport default class PlaybackContext {\n\n /**\n *\n * @param {Boolean} [offline=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(offline = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(offline)`,\n get offline() {\n return `${this.ctor} offline should be a Boolean`;\n }\n };\n\n if (Check.assigned(offline)) {\n boolean(offline, errorMessage.offline, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc The client-side generated unique ID for the playback session.\n *\n */\n this.playbackSessionId = uuid.v4();\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean}\n * @desc Indicates that the media is offline/previously downloaded.\n *\n */\n this.offline = offline;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playbackContext.js","/**\n *\n * @module drmProvider\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md\n *\n */\n\nimport Check from 'check-types';\nimport EventEmitter from 'events';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\nimport DrmManager from './drmManager';\n\nconst TokenManager = Token.TokenManager;\nconst DrmType = Services.Media.DrmType;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class DrmProvider\n * @extends {EventEmitter}\n * @see https://nodejs.org/api/events.html\n * @since 3.2.0\n *\n */\nexport default class DrmProvider extends EventEmitter {\n\n /**\n *\n * @param {SDK.Drm.DrmManager} provider\n * @param {SDK.Token.TokenManager} tokenManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(provider, tokenManager, logger = Logging) {\n\n const errorMessage = {\n ctor: 'DrmProvider(provider, tokenManager, logger)',\n get provider() {\n return `${this.ctor} needs valid provider SDK.Drm.DrmManager instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n }\n };\n\n instanceStrict(provider, DrmManager, errorMessage.provider, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n\n super();\n\n /**\n *\n * @access private\n * @type {SDK.Drm.DrmManager}\n *\n */\n this.provider = provider;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc DRM identifier String\n *\n */\n this.type = DrmType.NONE;\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc Contains license request headers if any.\n *\n */\n this.licenseRequestHeaders = {};\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc Contains certificate headers if any.\n *\n */\n this.certificateHeaders = {};\n\n /**\n *\n * @access private\n * @type {String}\n * @desc Media failure identifier String.\n *\n */\n this.failureEvent = 'MediaFailure';\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @type {SDK.Media.PlaybackContext|null}\n * @desc Context information about the playback attempt.\n *\n */\n this.playbackContext = null;\n\n this.logger.log(DrmProvider.name, 'Created.');\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.tokenManager.getAccessToken();\n\n }\n\n /**\n *\n * @access private\n * @desc Returns an object containing a modified copy of license headers if they exist\n * @returns {Object}\n *\n */\n processLicenseRequestHeaders() {\n\n const headersCopy = Object.assign({}, this.licenseRequestHeaders);\n const authHeader = headersCopy.Authorization;\n\n if (authHeader) {\n headersCopy.Authorization = authHeader.replace('{accessToken}', this.accessToken.token);\n }\n\n return headersCopy;\n\n }\n\n /**\n *\n * @param {Object} headers\n * @desc bam-hls expects the headers to come in an array rather than the typical Object format\n * @returns {Array}\n *\n */\n formatRequestHeadersList(headers) {\n\n const errorMessage = {\n method: 'DrmProvider.formatRequestHeadersList(headers)',\n get headers() {\n return `${this.method} needs a non-empty Object`;\n }\n };\n\n nonEmptyObject(headers, errorMessage.headers, InvalidArgumentException);\n\n return Object.keys(headers).map((item) => {\n return {\n name: item,\n value: headers[item]\n };\n });\n\n }\n\n /**\n *\n * @access private\n * @desc Returns an object containing a modified copy of certificate headers if they exist\n * @returns {Object}\n *\n */\n processCertificateHeaders() {\n\n const headersCopy = Object.assign({}, this.certificateHeaders);\n const authHeader = headersCopy.Authorization;\n\n if (authHeader) {\n headersCopy.Authorization = authHeader.replace('{accessToken}', this.accessToken.token);\n }\n\n return headersCopy;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/drmProvider.js","/**\n *\n * @module mediaItem\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\nimport MediaDescriptor from './mediaDescriptor';\nimport PlaybackContext from './playbackContext';\nimport Playlist from './playlist';\nimport PlaylistType from './playlistType';\nimport MediaAnalyticsKey from './mediaAnalyticsKey';\n\nconst Util = Services.Util;\nconst MediaPayload = Services.Media.MediaPayload;\nconst AudioRendition = Services.Media.AudioRendition;\nconst SubtitleRendition = Services.Media.SubtitleRendition;\nconst PlaybackVariant = Services.Media.PlaybackVariant;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n includes,\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class SDK.Media.MediaItem\n * @since 2.0.0\n * @desc Encapsulated payload and media description with convenience methods\n * for retrieving streams and telemetry data.\n *\n */\nexport default class MediaItem {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Services.Media.MediaPayload} options.mediaPayload\n * @param {SDK.Media.MediaDescriptor} options.mediaDescriptor\n * @param {SDK.Media.PlaybackContext} [options.playbackContext]\n * @throws {SDK.Services.Exception.InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get mediaPayload() {\n return `${this.ctor} options.mediaPayload should be a SDK.Services.Media.MediaPayload instance`;\n },\n get mediaDescriptor() {\n return `${this.ctor} options.mediaDescriptor should be a SDK.Media.MediaDescriptor instance`;\n },\n get playbackContext() {\n return `${this.ctor} options.playbackContext should be a SDK.Media.PlaybackContext instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { mediaPayload, mediaDescriptor, playbackContext = null } = options;\n\n instanceStrict(mediaPayload, MediaPayload, errorMessage.mediaPayload, InvalidArgumentException);\n instanceStrict(mediaDescriptor, MediaDescriptor, errorMessage.mediaDescriptor, InvalidArgumentException);\n\n if (Check.assigned(playbackContext)) {\n instanceStrict(playbackContext, PlaybackContext, errorMessage.playbackContext, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {SDK.Services.Media.MediaPayload}\n *\n */\n this.payload = mediaPayload;\n\n /**\n *\n * @access private\n * @type {SDK.Media.MediaDescriptor}\n *\n */\n this.descriptor = mediaDescriptor;\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @type {SDK.Media.PlaybackContext}\n *\n */\n this.playbackContext = playbackContext;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Media.MediaPlayhead}\n *\n */\n this.playhead = this.payload.playhead;\n\n }\n\n /**\n *\n * @access public\n * @returns {Promise}\n *\n */\n getDefaultPlaylist() {\n\n return this.getPlaylist();\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.PlaylistType} playlistType\n * @returns {Promise}\n *\n */\n getPreferredPlaylist(playlistType) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getPreferredPlaylist(playlistType)`,\n get playlistType() {\n return `${this.method} needs a valid SDK.Media.PlaylistType`;\n }\n };\n\n includes(PlaylistType, playlistType, errorMessage.playlistType, InvalidArgumentException);\n\n return this.getPlaylist(playlistType);\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.MediaAnalyticsKey} [key=MediaAnalyticsKey.Conviva]\n * @returns {Promise}\n * @example mediaItem.getTrackingData(MediaAnalyticsKey.Conviva).then((trackingData) => {});\n *\n */\n getTrackingData(key = MediaAnalyticsKey.Conviva) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getTrackingData(key)`,\n get key() {\n return `${this.method} needs a valid MediaAnalyticsKey instance`;\n }\n };\n\n includes(MediaAnalyticsKey, key, errorMessage.key, InvalidArgumentException);\n\n const { payload } = this;\n const { tracking } = payload;\n\n const keyClean = key.toLowerCase();\n const trackingData = tracking[keyClean] || {};\n\n return Promise.resolve(trackingData);\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.PlaylistType} [playlistType=SDK.Media.PlaylistType.COMPLETE]\n * @returns {Promise}\n *\n */\n getSegmentTypes(playlistType = PlaylistType.COMPLETE) {\n\n return this.getPreferredPlaylist(playlistType).then((playlist) => {\n\n return Promise.resolve({\n videoSegmentTypes: Util.getSafe(() => playlist.attributes.videoSegmentTypes),\n audioSegmentTypes: Util.getSafe(() => playlist.attributes.audioSegmentTypes)\n });\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @returns {Promise>}\n *\n */\n getAudioRenditions() {\n\n const { payload } = this;\n const { stream } = payload;\n const { renditions = {} } = stream;\n const { audio = [] } = renditions;\n\n const audioRenditions = audio.map((item) => new AudioRendition(item.name, item.language));\n\n return Promise.resolve(audioRenditions);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @returns {Promise>}\n *\n */\n getSubtitleRenditions() {\n\n const { payload } = this;\n const { stream } = payload;\n const { renditions = {} } = stream;\n const { subtitles = [] } = renditions;\n\n const subtitleRenditions = subtitles.map((item) => new SubtitleRendition(\n item.name,\n item.language,\n item.forced\n ));\n\n return Promise.resolve(subtitleRenditions);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @returns {Promise>}\n *\n */\n getVariants() {\n\n const { payload } = this;\n const { stream } = payload;\n const { variants = [] } = stream;\n\n const playbackVariants = variants.map((item) => new PlaybackVariant(item));\n\n return Promise.resolve(playbackVariants);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {SDK.Media.PlaylistType} playlistType\n * @param {SDK.Services.Media.MediaPayloadStream} stream\n * @returns {String}\n *\n */\n getStreamUri(playlistType, stream) {\n\n const { complete, slide } = stream;\n\n const streamUri = playlistType === PlaylistType.COMPLETE ? complete : slide;\n\n return streamUri;\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Media.MediaPayloadStream} stream\n * @returns {Array}\n *\n */\n getAvailablePlaylistTypes(stream) {\n\n const { complete, slide } = stream;\n\n const availablePlaylistTypes = [];\n\n if (Check.nonEmptyString(complete)) {\n availablePlaylistTypes.push(PlaylistType.COMPLETE);\n }\n\n if (Check.nonEmptyString(slide)) {\n availablePlaylistTypes.push(PlaylistType.SLIDE);\n }\n\n return availablePlaylistTypes;\n\n }\n\n /**\n *\n * @access private\n * @param {Array} availablePlaylistTypes\n * @param {SDK.Media.PlaylistType} [playlistType]\n * @returns {SDK.Media.PlaylistType}\n *\n */\n getPlaylistType(availablePlaylistTypes, playlistType) {\n\n const { COMPLETE, SLIDE } = PlaylistType;\n\n switch (playlistType) {\n case COMPLETE:\n return availablePlaylistTypes.includes(COMPLETE) ? COMPLETE : SLIDE;\n case SLIDE:\n return availablePlaylistTypes.includes(SLIDE) ? SLIDE : COMPLETE;\n default:\n return availablePlaylistTypes[0];\n }\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Media.PlaylistType} [playlistType]\n * @returns {Promise}\n *\n */\n getPlaylist(playlistType) {\n\n const { payload } = this;\n const { stream } = payload;\n const { variants = [], renditions = {}, attributes } = stream;\n const { audio = [], subtitles = [] } = renditions;\n\n const availablePlaylistTypes = this.getAvailablePlaylistTypes(stream);\n const preferredPlaylistType = this.getPlaylistType(availablePlaylistTypes, playlistType);\n const streamUri = this.getStreamUri(preferredPlaylistType, stream);\n const playbackVariants = variants.map((item) => new PlaybackVariant(item));\n const audioRenditions = audio.map((item) => new AudioRendition(item.name, item.language));\n const subtitleRenditions = subtitles.map((item) => new SubtitleRendition(\n item.name,\n item.language,\n item.forced\n ));\n\n const playlist = new Playlist({\n streamUri,\n playlistType: preferredPlaylistType,\n availablePlaylistTypes,\n attributes,\n variants: playbackVariants,\n audioRenditions,\n subtitleRenditions\n });\n\n return Promise.resolve(playlist);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/mediaItem.js","/**\n *\n * @module userActivityEvent\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @interface UserActivityEvent\n * @desc creates a key for referencing UserActivity-related events\n *\n */\nexport default class UserActivityEvent {\n\n /**\n *\n * @param {String} eventUrn\n * @throws {InvalidArgumentException}\n *\n */\n constructor(eventUrn) {\n\n const errorMessage = {\n ctor: 'UserActivityEvent(eventUrn)',\n eventUrn() {\n return `${this.ctor} eventUrn should be a String with length`;\n }\n };\n\n nonEmptyString(eventUrn, errorMessage.eventUrn, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {String}\n * @note stores the event urn referenced from `SDK.Services.Internal.Dust.DustUrnReference` or a custom urn\n *\n * @example new UserActivityEvent(SDK.Services.Internal.Dust.DustUrnReference.userActivity.glimpse.appLoaded)\n * @example new UserActivityEvent('urn:dss:something:custom') // when you need something custom\n *\n */\n this.eventUrn = eventUrn;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/userActivityEvent.js","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_a-function.js\n// module id = 76\n// module chunks = 0","/**\n *\n * @module entry\n * @desc {SDK.Account} entry point.\n *\n */\n\nimport AccountApi from './accountApi';\nimport AccountManager from './accountManager';\nimport Gender from './gender';\n\n/**\n *\n * @typedef SDK.Account\n * @type {Object}\n *\n * @property {AccountApi} AccountApi\n * @property {AccountManager} AccountManager\n * @property {Gender} Gender\n *\n */\n\n/**\n *\n * @type {SDK.Account}\n *\n */\nexport default {\n\n AccountApi,\n AccountManager,\n Gender\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/account/entry.js","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_uid.js\n// module id = 78\n// module chunks = 0","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_set-to-string-tag.js\n// module id = 79\n// module chunks = 0","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/web.dom.iterable.js\n// module id = 80\n// module chunks = 0","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-sap.js\n// module id = 81\n// module chunks = 0","var _Symbol$iterator = require(\"../core-js/symbol/iterator\");\n\nvar _Symbol = require(\"../core-js/symbol\");\n\nfunction _typeof2(obj) { if (typeof _Symbol === \"function\" && typeof _Symbol$iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof _Symbol === \"function\" && _typeof2(_Symbol$iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/typeof.js\n// module id = 82\n// module chunks = 0","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gopd.js\n// module id = 83\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 84\n// module chunks = 0","/**\n *\n * @module grant\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class Grant\n * @desc Provides a base implementation for a grant.\n *\n */\nexport default class Grant {\n\n /**\n *\n * @param {String} grantType\n * @param {String} assertion\n *\n */\n constructor(grantType, assertion) {\n\n const errorMessage = {\n ctor: 'Grant(grantType, assertion)',\n get grantType() {\n return `${this.ctor} grantType should be a String with length`;\n },\n get assertion() {\n return `${this.ctor} assertion should be a String with length`;\n }\n };\n\n if (Check.assigned(grantType)) {\n nonEmptyString(grantType, errorMessage.grantType, InvalidArgumentException);\n }\n\n nonEmptyString(assertion, errorMessage.assertion, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the grant type. This must be a valid type that is recognized by the service.\n *\n */\n this.grantType = grantType;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the packet of security information for the token.\n *\n */\n this.assertion = assertion;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the subject token type key used to lookup\n * the subject_token_type value needed during token exchange.\n * @note for lookup purposes only, should not be included in a request body.\n *\n */\n this.subjectTokenTypeKey = '';\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/grant.js","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tformatter(decodeURIComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/query-string/index.js\n// module id = 86\n// module chunks = 0","/**\n *\n * @module billingAddress\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class BillingAddress\n *\n */\nexport default class BillingAddress {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.line1]\n * @param {String} [options.line2]\n * @param {String} [options.line3]\n * @param {String} [options.city]\n * @param {String} [options.state]\n * @param {String} options.country\n * @param {String} [options.postalCode]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: 'BillingAddress(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get line1() {\n return `${this.ctor} line1 should be a non-empty String`;\n },\n get line2() {\n return `${this.ctor} line2 should be a non-empty String`;\n },\n get line3() {\n return `${this.ctor} line3 should be a non-empty String`;\n },\n get city() {\n return `${this.ctor} city should be a non-empty String`;\n },\n get state() {\n return `${this.ctor} state should be a non-empty String`;\n },\n get country() {\n return `${this.ctor} country should be a non-empty String`;\n },\n get postalCode() {\n return `${this.ctor} postalCode should be a non-empty String`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { line1, line2, line3, city, state, country, postalCode } = options;\n\n if (Check.assigned(line1)) {\n nonEmptyString(line1, errorMessage.line1, InvalidArgumentException);\n }\n\n if (Check.assigned(line2)) {\n nonEmptyString(line2, errorMessage.line2, InvalidArgumentException);\n }\n\n if (Check.assigned(line3)) {\n nonEmptyString(line3, errorMessage.line3, InvalidArgumentException);\n }\n\n if (Check.assigned(city)) {\n nonEmptyString(city, errorMessage.city, InvalidArgumentException);\n }\n\n if (Check.assigned(state)) {\n nonEmptyString(state, errorMessage.state, InvalidArgumentException);\n }\n\n nonEmptyString(country, errorMessage.country, InvalidArgumentException);\n\n if (Check.assigned(postalCode)) {\n nonEmptyString(postalCode, errorMessage.postalCode, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.line1 = line1;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.line2 = line2;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.line3 = line3;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n * @desc City. Required for select regions, optional otherwise.\n *\n */\n this.city = city;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n * @desc State / County / Province / Region. Required for select regions, optional otherwise.\n *\n */\n this.state = state;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n * @desc ZIP or postal code. Required for select regions, optional otherwise.\n *\n */\n this.postalCode = postalCode;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Country. See ISO 3166-1 alpha-2 for format\n *\n */\n this.country = country;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/billingAddress.js","/**\n *\n * @module graphQlBuilder\n *\n */\n\nimport Exception from './../exception/entry';\n\nconst ContentException = Exception.ContentException;\nconst ErrorReason = Exception.ErrorReason;\n\n/**\n *\n * @class GraphQlBuilder\n *\n */\nexport default class GraphQlBuilder {\n\n /**\n *\n * @param {String} url - The URL for which to build the query.\n * @param {HttpMethod} method - The method for which to build the query.\n * @desc Returns the URL for the query.\n * @returns {Promise} The URL for the query.\n *\n */\n createQueryUrl(url, method) { // eslint-disable-line\n\n const methodSignature = 'createQueryUrl(url, method)';\n\n return new Promise((resolve) => {\n resolve(new ContentException('', [new ErrorReason('', `${methodSignature} - not-implemented`)]));\n });\n\n }\n\n /**\n *\n * @desc Returns the post content for the query.\n * @returns {Promise} The post content for the query.\n *\n */\n createPostContent() {\n\n const methodSignature = 'createPostContent()';\n\n return new Promise((resolve) => {\n resolve(new ContentException('', [new ErrorReason('', `${methodSignature} - not-implemented`)]));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/content/graphQlBuilder.js","/**\n *\n * @module coreStorageProvider\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../../logging/entry';\nimport Exception from './../../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ProviderException = Exception.ProviderException;\n\nconst {\n assigned\n} = Check.assert;\n\n/**\n *\n * @class CoreStorageProvider\n * @implements {IStorage}\n * @desc Core Storage provider implementation definition. Acts as a base definition that\n * is then extended by platform specific implementations.\n * @note in this implementation the key is expected to be a String, which differs\n * from other implementations that accept various types i.e. Number, Undefined, etc...\n *\n */\nexport default class CoreStorageProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc storage reference\n *\n */\n this.store = null;\n\n /**\n *\n * @access private\n * @type {Array}\n * @desc tracks stored keys\n *\n */\n this.storedKeys = [];\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n }\n\n /**\n *\n * @access public\n * @method set\n * @param {String} key\n * @param {Object} value\n * @desc sets a key/value pair in storage, returns cached data if key already exists.\n * @returns {Promise}\n *\n * @example\n * storage.set('some-key', { 'item': 'data' }).then(() => {});\n *\n */\n set(key, value) {\n\n const method = 'Storage.set(key, value)';\n\n return this.op(method, key, value);\n\n }\n\n /**\n *\n * @access public\n * @method get\n * @param {String} key\n * @desc retrieves a given key from storage.\n * @returns {Promise}\n *\n * @example\n * storage.get('some-key').then((value) => { console.log(value); });\n *\n */\n get(key) {\n\n const method = 'Storage.get(key)';\n\n return this.op(method, key);\n\n }\n\n /**\n *\n * @access public\n * @method remove\n * @param {String} key\n * @desc removes a given key from storage.\n * @returns {Promise}\n *\n * @example\n * storage.remove('some-key').then(() => { console.log('key removed'); });\n *\n */\n remove(key) {\n\n const method = 'Storage.remove(key)';\n\n return this.op(method, key);\n\n }\n\n /**\n *\n * @access public\n * @method clear\n * @desc removes all known keys from storage, items added outside of the\n * current Storage instance will be unaffected.\n * @returns {Promise}\n *\n * @example\n * storage.clear().then(() => { console.log('all SDK keys removed'); });\n *\n */\n clear() {\n\n const method = 'Storage.clear()';\n\n return this.op(method);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {String} signature - the current active method signature\n * @param {String} key - Storage key reference\n * @param {*} value - value to store with key\n * @throws {InvalidArgumentException}\n * @throws {ProviderException}\n * @returns {Promise<*>}\n *\n */\n op(signature, key, value) {\n\n const errorMessage = {\n get operationError() {\n return `${signature} cannot complete successfully`;\n },\n get keyError() {\n return `${signature} key should be a String with length`;\n },\n get keyMissingWarning() {\n return `${signature} reference cache key \"${key}\" does not exist`;\n },\n get valueParseError() {\n return `${signature} unable to parse value`;\n },\n get storeError() {\n return `${signature} missing expected store reference`;\n }\n };\n\n const operation = signature.slice(signature.indexOf('.') + 1, signature.indexOf('('));\n const isClear = Check.equal(operation, 'clear');\n const isRemove = Check.equal(operation, 'remove');\n\n const store = this.store;\n\n assigned(store, errorMessage.storeError, ProviderException);\n\n return new Promise((resolve, reject) => {\n\n const { logger, storedKeys } = this;\n\n /**\n *\n * @desc verify key validity for all operations except clear\n *\n */\n if (Check.equal(isClear, false) && (Check.not.string(key) || Check.emptyString(key))) {\n return reject(new InvalidArgumentException(errorMessage.keyError));\n }\n\n /**\n *\n * @desc process given operation\n * @note all items set in Storage are expected to be stringified values\n * @note JSON operations are processed in a try...catch\n * @note if a given key is not found, fail silently and display warning\n *\n */\n try {\n\n if (isClear) {\n\n // remove all known keys\n storedKeys.map((keyInStorage) => {\n return store.removeItem(keyInStorage);\n });\n\n return resolve();\n\n }\n\n if (isRemove) {\n\n // remove item and key from reference\n storedKeys.splice(storedKeys.indexOf(key), 1);\n\n return resolve(store.removeItem(key));\n\n } else if (Check.not.undefined(value)) {\n\n // set item if valid value provided\n // stringify before updating stored keys reference for accuracy\n const val = JSON.stringify(value);\n\n storedKeys.push(key);\n\n return resolve(store.setItem(key, val));\n\n } else {\n\n // if valid value not provided, attempt to get cached item\n try {\n\n const item = store.getItem(key);\n\n if (Check.not.assigned(item)) {\n logger.warn('Storage', errorMessage.keyMissingWarning);\n return resolve();\n }\n\n return resolve(JSON.parse(item));\n\n } catch (error) {\n\n return reject(new InvalidArgumentException(`${errorMessage.valueParseError} - ${error}`));\n\n }\n\n }\n\n } catch (error) {\n\n return reject(new ProviderException(`${errorMessage.operationError} - ${error}`));\n\n }\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/shared/coreStorageProvider.js","/**\n *\n * @module entry\n * @desc {SDK.Subscription} entry point.\n *\n */\n\nimport SubscriptionApi from './subscriptionApi';\nimport SubscriptionManager from './subscriptionManager';\n\nimport BundleStatus from './bundleStatus';\nimport Product from './product';\nimport ProductEntitlement from './productEntitlement';\nimport ProductStatus from './productStatus';\nimport Subscription from './subscription';\nimport SubscriptionProvider from './subscriptionProvider';\nimport SubscriptionSource from './subscriptionSource';\n\n/**\n *\n * @typedef SDK.Subscription\n * @type {Object}\n *\n * @property {SubscriptionApi} SubscriptionApi\n * @property {SubscriptionManager} SubscriptionManager\n *\n * @property {BundleStatus} BundleStatus\n * @property {Product} Product\n * @property {ProductEntitlement} ProductEntitlement\n * @property {ProductStatus} ProductStatus\n * @property {Subscription} Subscription\n * @property {SubscriptionProvider} SubscriptionProvider\n * @property {SubscriptionSource} SubscriptionSource\n *\n */\n\n/**\n *\n * @type {SDK.Subscription}\n *\n */\nexport default {\n\n SubscriptionApi,\n SubscriptionManager,\n\n BundleStatus,\n Product,\n ProductEntitlement,\n ProductStatus,\n Subscription,\n SubscriptionProvider,\n SubscriptionSource\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription/entry.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = $getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) args.push(arguments[i]);\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n ReflectApply(this.listener, this.target, args);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/node-libs-browser/node_modules/events/events.js\n// module id = 91\n// module chunks = 0","/**\n *\n * @module submitOrderWithPaymentMethodRequest\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst LineItem = Services.Commerce.LineItem;\nconst OrderCampaign = Services.Commerce.OrderCampaign;\nconst StrongCustomerAuth = Services.Commerce.StrongCustomerAuth;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n nonEmptyString,\n nonEmptyObject,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class SubmitOrderWithPaymentMethodRequest\n * @since 3.5.0\n * @desc Information necessary to place an order.\n *\n */\nexport default class SubmitOrderWithPaymentMethodRequest {\n\n /**\n *\n * @param {Object} options\n * @param {Array} options.lineItems\n * @param {String} options.paymentMethodId\n * @param {Array} options.orderCampaigns\n * @param {SDK.Services.Commerce.StrongCustomerAuth} [options.sca]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get lineItems() {\n return `${this.ctor} options.lineItems should be an Array of SDK.Services.Commerce.LineItem`;\n },\n get paymentMethodId() {\n return `${this.ctor} options.paymentMethodId should be a String with length`;\n },\n get orderCampaigns() {\n return `${this.ctor} options.orderCampaigns should be an Array of SDK.Services.Commerce.OrderCampaign`;\n },\n get sca() {\n return `${this.ctor} options.sca should be an instance of SDK.Services.Commerce.StrongCustomerAuth`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { lineItems, orderCampaigns, paymentMethodId, sca } = options;\n\n array.of.instanceStrict(lineItems, LineItem, errorMessage.lineItems, InvalidArgumentException);\n nonEmptyString(paymentMethodId, errorMessage.paymentMethodId, InvalidArgumentException);\n array.of.instanceStrict(orderCampaigns, OrderCampaign, errorMessage.orderCampaigns, InvalidArgumentException);\n\n if (Check.assigned(sca)) {\n instanceStrict(sca, StrongCustomerAuth, errorMessage.sca, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {Array}\n * @desc Products to be purchased in this order.\n * @note the spec states that this should be `SDK.Commerce.LineItem` however this model is a direct copy\n * from `SDK.Services.Commerce.LineItem` so the JS SDK does not provide a duplicate\n *\n */\n this.lineItems = lineItems;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Payment method ID retrieved from a request to create or get a payment method.\n *\n */\n this.paymentMethodId = paymentMethodId;\n\n /**\n *\n * @access public\n * @type {Array}\n * @desc Information relevant to special pricing considerations for an order.\n * @note the spec states that we should use `SDK.Commerce.OrderCampaign` but that is a direct copy of\n * `SDK.Services.Commerce.OrderCampaign`\n *\n */\n this.orderCampaigns = orderCampaigns;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.Services.Commerce.StrongCustomerAuth|undefined}\n * @desc Additional information that is only required for 3DS security challenges.\n *\n */\n this.sca = sca;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/commerce/submitOrderWithPaymentMethodRequest.js","/**\n *\n * @module graphQlPersistedQuery\n *\n */\n\nimport Services from './../services/entry';\n\n/**\n *\n * @class GraphQlPersistedQuery\n * @extends {SDK.Services.Content.GraphQlPersistedQuery}\n * @desc Represents a GraphQL persisted query.\n *\n */\nexport default class GraphQlPersistedQuery extends Services.Content.GraphQlPersistedQuery {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/graphQlPersistedQuery.js","/**\n *\n * @module entry\n * @desc {SDK.Internal} entry point.\n *\n */\n\nimport Dust from './dust/entry';\nimport Telemetry from './telemetry/entry';\n\n/**\n *\n * @typedef SDK.Internal\n * @type {Object}\n *\n * @property {Dust} Dust\n * @property {Telemetry} Telemetry\n *\n */\n\n/**\n *\n * @type {SDK.Internal}\n *\n */\nexport default {\n\n Dust,\n Telemetry\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/internal/entry.js","/**\n *\n * @module adEngineManager\n *\n */\n\nimport Check from 'check-types';\n\nimport Token from './../../token/entry';\nimport Services from './../../services/entry';\nimport Logging from './../../logging/entry';\n\nimport AdvertisingIdProvider from './advertisingIdProvider';\n\nimport AdEngineClient from './../../services/media/adEngine/adEngineClient';\nimport GeoProvider from './../../platforms/geoProvider';\n\nconst AdEngineManagerConfiguration = Services.Configuration.AdEngineManagerConfiguration;\nconst TokenManager = Token.TokenManager;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyObject,\n object,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class AdEngineManager\n * @since 3.6.0\n *\n */\nexport default class AdEngineManager {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Services.Configuration.AdEngineManagerConfiguration} options.config\n * @param {SDK.Services.Media.AdEngine.AdEngineClient} options.client\n * @param {SDK.Token.TokenManager} options.tokenManager\n * @param {String} options.sdkver\n * @param {SDK.Logging.Logger} options.logger\n * @param {GeoProvider} [options.geoProvider=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'AdEngineManager(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get config() {\n return `${this.ctor} needs SDK.Services.Configuration.AdEngineManagerConfiguration instance`;\n },\n get client() {\n return `${this.ctor} needs SDK.Services.Media.AdEngine.AdEngineClient instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n },\n get geoProvider() {\n return `${this.ctor} needs GeoProvider instance`;\n },\n get sdkver() {\n return `${this.ctor} options.sdkver should be a String with length`;\n },\n get advertisingIdProvider() {\n return `${this.ctor} needs SDK.Media.AdEngine.AdvertisingIdProvider`;\n },\n get adTargeting() {\n return `${this.ctor} options.adTargeting should be an Object`;\n },\n get logger() {\n return `${this.ctor} needs SDK.Logging.Logger instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { config, client, tokenManager, sdkver, logger, geoProvider = null } = options;\n const { extras = {} } = config;\n const { adTargeting = {} } = extras;\n\n instanceStrict(config, AdEngineManagerConfiguration, errorMessage.config, InvalidArgumentException);\n instanceStrict(client, AdEngineClient, errorMessage.client, InvalidArgumentException);\n\n instanceStrict(\n tokenManager,\n TokenManager,\n errorMessage.tokenManager,\n InvalidArgumentException\n );\n\n nonEmptyString(sdkver, errorMessage.sdkver, InvalidArgumentException);\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n if (Check.assigned(geoProvider)) {\n instanceStrict(geoProvider, GeoProvider, errorMessage.geoProvider, InvalidArgumentException);\n }\n\n object(adTargeting, errorMessage.adTargeting, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.AdEngineManagerConfiguration}\n *\n */\n this.config = config;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Media.AdEngine.AdEngineClient}\n *\n */\n this.client = client;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Media.AdEngine.AdvertisingIdProvider}\n * @desc the AdvertisingIdProvider provides device-specific advertising information for the adEngine team\n *\n */\n this.advertisingIdProvider = new AdvertisingIdProvider();\n\n /**\n *\n * @access private\n * @type {SDK.GeoProvider}\n *\n */\n this.geoProvider = Check.assigned(geoProvider) ? geoProvider : new GeoProvider(logger);\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc contains some static values used for AdEngine tracking - pulled from the SDK Config\n * @note adTargeting comes from adEngine.extras.adTargeting\n * @note sdver comes from deviceManger.environmentConfiguration.sdkVersion,\n *\n */\n this.adTargeting = Object.assign({}, adTargeting, { sdkver });\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.disabled = this.config.disabled;\n\n this.logger.log(AdEngineManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {Object} options\n * @desc returns set-cookie headers from the service that are stored in the device's cookie jar\n * @note this method needs to catch a failure in order to prevent playback from failing\n * @returns {Promise}\n *\n */\n updateCookies(options) {\n\n const errorMessage = {\n ctor: 'AdEngineManager.updateCookies(options)',\n options: () => {\n return `${this.ctor} options should be a non-empty Object`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { client, accessToken, logger } = this;\n\n return this.constructAdEngineData(options).then((adEngineObject) => {\n\n return client.updateCookies(accessToken, adEngineObject).catch((ex) => {\n\n logger.warn(AdEngineManager.name, ex);\n\n return Promise.resolve();\n\n });\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {Object} options\n * @note this method needs to catch a failure in order to prevent playback from failing\n * @note in the event of a failure we return an empty Array\n * @note this method is not currently used but exists to align with the spec\n * @returns {Promise|Array>}\n *\n */\n getCookies(options) {\n\n const errorMessage = {\n ctor: 'AdEngineManager.getCookies(options)',\n options: () => {\n return `${this.ctor} options should be a non-empty Object`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { client, accessToken, logger } = this;\n\n return this.constructAdEngineData(options).then((adEngineObject) => {\n\n return client.getCookies(accessToken, adEngineObject).catch((ex) => {\n\n logger.warn(AdEngineManager.name, ex);\n\n return Promise.resolve([]);\n\n });\n\n });\n\n }\n\n /** region private */\n\n /**\n *\n * @param {Object} options\n * @desc gets geoLocation and merges various tracking information into a temporary, flat object\n * @note xny needs to be a String w/o spaces - e.g. '[1,2]'\n * @note xny should default to undefined to avoid being serialized in the client\n * @note xny should be omitted if 0,0 i.e. not provided\n * @note lat maps true to 1 and false to 0 - must be 0|1\n * @note all adEngine query param keys are lowercase not camelCase\n * @note IMPORTANT: when constructing the adEngine object make sure that `this.adTargeting` is merged last to\n * avoid app developers from overriding values from the config\n * @returns {Promise}\n *\n */\n constructAdEngineData(options) {\n\n const errorMessage = {\n method: 'constructAdEngineData(options)',\n get options() {\n return `${this.method} options should be a non-empty Object`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { advertisingIdProvider, adTargeting } = this;\n\n return this.geoProvider.getGeoLocation().then((geoLocation) => {\n\n const { latitude, longitude } = geoLocation;\n\n const coordinates = `[${latitude},${longitude}]`;\n const advertisingId = advertisingIdProvider.getId();\n const limitAdTracking = advertisingIdProvider.limitTracking() ? 1 : 0;\n const sdkGenerated = {\n devid: advertisingId,\n lat: limitAdTracking,\n xny: coordinates !== '[0,0]' ? coordinates : undefined\n };\n\n const adEngineObject = Object.assign({}, sdkGenerated, options, adTargeting);\n\n return Promise.resolve(adEngineObject);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.tokenManager.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/adEngine/adEngineManager.js","/**\n *\n * @module mediaManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/playback-session.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/playhead.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Drm from './../drm/entry';\nimport Token from './../token/entry';\nimport Internal from './../internal/entry';\nimport QualityOfService from './../qualityOfService/entry';\nimport MediaItem from './mediaItem';\nimport MediaCapabilitiesProvider from './mediaCapabilitiesProvider';\nimport MediaDescriptor from './mediaDescriptor';\nimport PlayerAdapter from './playerAdapter';\nimport PlaybackTelemetryDispatcher from './playbackTelemetryDispatcher';\nimport PlaybackTelemetryConfiguration from './playbackTelemetryConfiguration';\nimport PlaybackContext from './playbackContext';\nimport PlaybackSession from './playbackSession';\nimport AuthCookieProvider from './authCookieProvider';\nimport AdEngineManager from './adEngine/adEngineManager';\nimport GeneratePlaybackScenario from './generatePlaybackScenario';\n\nconst DrmManager = Drm.DrmManager;\nconst TokenManager = Token.TokenManager;\nconst TelemetryManager = Internal.Telemetry.TelemetryManager;\nconst MediaPayloadFetchedEventData = QualityOfService.MediaPayloadFetchedEventData;\n\nconst Util = Services.Util;\nconst AccessToken = Services.Token.AccessToken;\nconst MediaClient = Services.Media.MediaClient;\nconst MediaManagerConfiguration = Services.Configuration.MediaManagerConfiguration;\nconst Presentation = Services.Media.Presentation;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst DustCategory = Services.Internal.Dust.DustCategory;\nconst QualityOfServiceDustUrnReference = Services.Internal.Dust.DustUrnReference.qualityOfService;\nconst determineAdInsertionStrategy = GeneratePlaybackScenario.determineAdInsertionStrategy;\nconst deviceMeetsRequirements = GeneratePlaybackScenario.deviceMeetsRequirements;\nconst determineCodecSupport = GeneratePlaybackScenario.determineCodecSupport;\nconst determineHdrSupport = GeneratePlaybackScenario.determineHdrSupport;\nconst determineAudioQuality = GeneratePlaybackScenario.determineAudioQuality;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n instanceStrict,\n nonEmptyObject,\n nonEmptyString,\n number\n} = Check.assert;\n\n/**\n *\n * @class SDK.Media.MediaManager\n * @desc Manages a media player to help load, control, and monitor playback on your behalf.\n * @throws {InvalidArgumentException}\n *\n */\nexport default class MediaManager {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Services.Configuration.MediaManagerConfiguration} options.mediaManagerConfiguration\n * @param {SDK.Token.TokenManager} options.tokenManager\n * @param {SDK.Drm.DrmManager} options.drmManager\n * @param {SDK.Internal.Telemetry.TelemeteryManager} options.telemetryManager\n * @param {SDK.Media.MediaCapabilitiesProvider} [options.mediaCapabilitiesProvider]\n * @param {SDK.Services.Media.MediaClient} options.mediaClient\n * @param {SDK.Media.AdEngine.AdEngineManager} options.adEngineManager\n * @param {SDK.Logging.Logger} [options.logger=Logging]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'MediaManager(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get mediaManagerConfiguration() {\n return `${this.ctor} needs SDK.Services.Configuration.MediaManagerConfiguration instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n },\n get drmManager() {\n return `${this.ctor} needs SDK.Drm.DrmManager instance`;\n },\n get telemetryManager() {\n return `${this.ctor} needs SDK.Internal.TelemetryManager instance`;\n },\n get mediaCapabilitiesProvider() {\n return `${this.ctor} needs SDK.Media.MediaCapabilitiesProvider instance`;\n },\n get mediaClient() {\n return `${this.ctor} needs MediaClient instance`;\n },\n get adEngineManager() {\n return `${this.ctor} needs SDK.Media.AdEngine.AdEngineManager instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { mediaManagerConfiguration, tokenManager, drmManager, telemetryManager } = options;\n const { mediaCapabilitiesProvider, mediaClient, adEngineManager, logger = Logging } = options;\n\n instanceStrict(mediaManagerConfiguration, MediaManagerConfiguration, errorMessage.mediaManagerConfiguration, InvalidArgumentException); // eslint-disable-line\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n instanceStrict(drmManager, DrmManager, errorMessage.drmManager, InvalidArgumentException);\n instanceStrict(telemetryManager, TelemetryManager, errorMessage.telemetryManager, InvalidArgumentException);\n\n if (Check.assigned(mediaCapabilitiesProvider)) {\n instanceStrict(\n mediaCapabilitiesProvider,\n MediaCapabilitiesProvider,\n errorMessage.mediaCapabilitiesProvider,\n InvalidArgumentException\n );\n }\n\n instanceStrict(mediaClient, MediaClient, errorMessage.mediaClient, InvalidArgumentException);\n instanceStrict(adEngineManager, AdEngineManager, errorMessage.adEngineManager, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.MediaManagerConfiguration}\n *\n */\n this.config = mediaManagerConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @type {SDK.Drm.DrmManager}\n *\n */\n this.drmManager = drmManager;\n\n /**\n *\n * @access private\n * @type {SDK.Internal.Telemetry.TelemetryManager}\n *\n */\n this.telemetryManager = telemetryManager;\n\n /**\n *\n * @access private\n * @type {SDK.Media.AdEngine.AdEngineManager}\n *\n */\n this.adEngineManager = adEngineManager;\n\n /**\n *\n * @access private\n * @type {SDK.Media.MediaCapabilitiesProvider}\n *\n */\n this.mediaCapabilitiesProvider = mediaCapabilitiesProvider || new MediaCapabilitiesProvider(logger);\n\n /**\n *\n * @access private\n * @type {SDK.Services.Media.MediaClient}\n *\n */\n this.client = mediaClient;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @since 4.0.0\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => {\n return this.client.dustEnabled;\n }, false);\n\n this.logger.log(MediaManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Media.MediaDescriptor} mediaDescriptor\n * @param {SDK.Media.PlaybackContext} [playbackContext=null]\n * @desc Retrieves a media item, based on the descriptor.\n * @returns {Promise}\n *\n */\n async getMediaItem(mediaDescriptor, playbackContext = null) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getMediaItem(mediaDescriptor)`,\n get mediaDescriptor() {\n return `${this.method} mediaDescriptor needs SDK.Media.MediaDescriptor instance`;\n },\n get playbackContext() {\n return `${this.method} playbackContext needs SDK.Media.PlaybackContext instance`;\n }\n };\n\n instanceStrict(mediaDescriptor, MediaDescriptor, errorMessage.mediaDescriptor, InvalidArgumentException);\n\n if (Check.assigned(playbackContext)) {\n instanceStrict(playbackContext, PlaybackContext, errorMessage.playbackContext, InvalidArgumentException);\n }\n\n const { accessToken, client, logger, dustEnabled } = this;\n const { playbackUrl, adInsertionStrategy, basePlaybackScenario } = mediaDescriptor;\n const { mediaPreferences = {} } = mediaDescriptor;\n\n const playbackScenario = basePlaybackScenario || this.getPlaybackScenario(adInsertionStrategy, mediaPreferences); // eslint-disable-line max-len\n const mediaPayload = await client.getMediaPayload(playbackUrl, accessToken, playbackScenario);\n const mediaItem = new MediaItem({ mediaPayload, mediaDescriptor, playbackContext });\n\n const playbackSessionId = Util.getSafe(() => playbackContext.playbackSessionId);\n\n if (dustEnabled && Check.assigned(playbackSessionId)) {\n\n const attributes = Util.getSafe(() => mediaPayload.stream.attributes);\n const variants = await mediaItem.getVariants();\n\n const mediaPayloadFetched = new MediaPayloadFetchedEventData({\n playbackSessionId,\n playbackUrl,\n playbackScenario,\n attributes,\n variants\n });\n\n const dustLogUtility = new DustLogUtility({\n category: DustCategory.qos,\n logger,\n source: MediaManager.name,\n urn: QualityOfServiceDustUrnReference.mediaPayloadFetched,\n data: {\n ...mediaPayloadFetched\n }\n });\n\n dustLogUtility.log();\n\n }\n\n return mediaItem;\n\n }\n\n /**\n *\n * @access public\n * @param {PlayerAdapter} playerAdapter - The player adapter you would like to create a new media session for.\n * @param {Array} [priorityDrms=null] - override drm with a specified drm or order\n * of Drms\n * @desc Creates a playback session (A contiguous block of time while a user is consuming a hosted media item).\n * @returns {Promise} Injected with all dependencies.\n * @example mediaManager.createPlaybackSession(playerAdapter).then((playbackSession) => {});\n *\n */\n async createPlaybackSession(playerAdapter, priorityDrms = null) {\n\n const errorMessage = {\n method: `${this.constructor.name}.createPlaybackSession(playerAdapter)`,\n get playerAdapter() {\n return `${this.method} needs PlayerAdapter instance`;\n },\n get priorityDrms() {\n return `${this.method} needs an array of SDK.Service.Media.DrmType`;\n }\n };\n\n instanceStrict(playerAdapter, PlayerAdapter, errorMessage.playerAdapter, InvalidArgumentException);\n\n if (Check.assigned(priorityDrms)) {\n array.of.nonEmptyString(priorityDrms, errorMessage.priorityDrms, InvalidArgumentException);\n }\n\n const { config, drmManager, tokenManager, telemetryManager, adEngineManager, logger } = this;\n\n const mediaManager = this;\n const authCookieProvider = new AuthCookieProvider(mediaManager);\n const streamSampleInterval = Util.getSafe(() => config.extras.playbackSession.streamSampleInterval);\n const playbackTelemetryConfiguration = new PlaybackTelemetryConfiguration(streamSampleInterval);\n\n const telemetryDispatcher = new PlaybackTelemetryDispatcher(\n playbackTelemetryConfiguration,\n telemetryManager,\n logger\n );\n\n logger.info(MediaManager.name, 'Create playback session.');\n\n const options = {\n tokenManager,\n drmManager,\n mediaManager,\n telemetryDispatcher,\n logger,\n playerAdapter,\n authCookieProvider,\n adEngineManager,\n priorityDrms\n };\n\n return Promise.resolve(new PlaybackSession(options));\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Token.AccessToken} accessToken - The current access token.\n * @desc Creates an auth cookie\n * @returns {Promise}\n *\n */\n async createAuthCookie(accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.createAuthCookie(accessToken)`,\n get accessToken() {\n return `${this.method} needs AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n return await this.client.createAuthCookie(accessToken);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Get the playback scenario mapping for the media client.\n * @param {SDK.Media.AdInsertionStrategy} adInsertionStrategy\n * @param {SDK.Media.MediaPreferences} mediaPreferences\n * @note Type checking for adInsertionStrategy is performed in GeneratePlaybackScenario#determineAdInsertionStrategy\n * Similarly, type checking for mediaPreferences is performed in GeneratePlaybackScenario#determineAudioQuality if\n * its assigned\n * @returns {String}\n *\n */\n getPlaybackScenario(adInsertionStrategy, mediaPreferences) {\n\n const { mediaCapabilitiesProvider, config } = this;\n const { extras } = config;\n const { isUhdAllowed, playbackScenarioDefault, restrictedPlaybackScenario } = extras;\n const { securityCheckRequirements = {} } = extras;\n\n const scenario = restrictedPlaybackScenario || playbackScenarioDefault;\n const adInsertion = determineAdInsertionStrategy(adInsertionStrategy);\n\n let codec = '';\n let hdrType = '';\n let audioQuality = '';\n\n if (isUhdAllowed) {\n\n const { widevine = {} } = securityCheckRequirements;\n const { minimumSecurityLevel, isSecurityCheckRequired } = widevine;\n\n const deviceWidevineSecurityLevel = mediaCapabilitiesProvider.getWidevineSecurityLevel();\n const supportedCodecs = mediaCapabilitiesProvider.getSupportedCodecs();\n const meetsRequirements = deviceMeetsRequirements({\n minimumSecurityLevel,\n isSecurityCheckRequired,\n restrictedPlaybackScenario,\n deviceWidevineSecurityLevel\n });\n\n codec = determineCodecSupport(supportedCodecs);\n\n if (meetsRequirements) {\n\n const supportedHdrTypes = mediaCapabilitiesProvider.getSupportedHdrTypes();\n const supportsAtmos = mediaCapabilitiesProvider.supportsAtmos();\n const preferredAudioQuality = Util.getSafe(\n () => mediaPreferences.preferredAudioQuality\n );\n\n hdrType = determineHdrSupport(supportedHdrTypes);\n audioQuality = determineAudioQuality(preferredAudioQuality, supportsAtmos);\n\n }\n\n }\n\n return (scenario + codec + hdrType + audioQuality + adInsertion);\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {SDK.Media.MediaItem} mediaItem - The MediaItem for the current media that was returned by a call to\n * Fetch.\n * @desc Fetches the details about the spritesheet thumbnail images that players can show to users when scrubbing\n * video.\n * @returns {Promise>}\n *\n */\n getSpriteSheetThumbnailSets(mediaItem) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getSpriteSheetThumbnailSets(mediaItem)`,\n get mediaItem() {\n return `${this.method} mediaItem should be an instance of SDK.Media.MediaItem`;\n }\n };\n\n instanceStrict(mediaItem, MediaItem, errorMessage.mediaItem, InvalidArgumentException);\n\n const { accessToken, client } = this;\n\n const thumbnailLink = Util.getSafe(() => mediaItem.payload.thumbnails.spritesheet);\n\n const options = {\n thumbnailLink,\n accessToken\n };\n\n return client.getSpriteSheetThumbnails(options);\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {SDK.Media.MediaItem} mediaItem - The MediaItem for the current media that was returned by a call to\n * Fetch.\n * @param {String} resolution - The desired resolution of thumbnails to fetch\n * @desc Fetches the details about the spritesheet thumbnail images that players can show to users when scrubbing\n * video.\n * @returns {Promise}\n *\n */\n getSpriteSheetThumbnailSet(mediaItem, resolution) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getSpriteSheetThumbnailSets(mediaItem, resolution)`,\n get mediaItem() {\n return `${this.method} mediaItem should be an instance of SDK.Media.MediaItem`;\n },\n get resolution() {\n return `${this.method} resolution should be a String with length`;\n }\n };\n\n instanceStrict(mediaItem, MediaItem, errorMessage.mediaItem, InvalidArgumentException);\n nonEmptyString(resolution, errorMessage.resolution, InvalidArgumentException);\n\n const { accessToken, client } = this;\n\n const thumbnailLink = Util.getSafe(() => mediaItem.payload.thumbnails.spritesheet);\n\n const options = {\n thumbnailLink,\n resolution,\n accessToken\n };\n\n return client.getSpriteSheetThumbnails(options).then((thumbnailSets) => {\n return Promise.resolve(thumbnailSets[0]);\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {SDK.Services.Media.Presentation} presentation - The thumbnail presentation to download. Typically chosen\n * by desired resolution.\n * @param {Number} index - The index of the thumbnail in the pod to download.\n * @desc Fetches the details about the spritesheet thumbnail images that players can show to users when scrubbing\n * video.\n * @returns {Promise>}\n *\n */\n getSpriteSheetThumbnail(presentation, index) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getSpriteSheetThumbnail(presentation, index)`,\n get presentation() {\n return `${this.method} presentation should be an instance of SDK.Media.Presentation`;\n },\n get index() {\n return `${this.method} index should be a Number`;\n }\n };\n\n instanceStrict(presentation, Presentation, errorMessage.presentation, InvalidArgumentException);\n number(index, errorMessage.index, InvalidArgumentException);\n\n const { client } = this;\n\n return client.getSpriteSheetThumbnail(presentation, index);\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {SDK.Media.MediaItem} mediaItem - The MediaItem for the current media that was returned by a call to\n * Fetch.\n * @desc Fetches the details about the BIF thumbnail images that players can show to users when scrubbing video.\n * @returns {Promise>}\n *\n */\n getBifThumbnailSets(mediaItem) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getBifThumbnailSets(mediaItem)`,\n get mediaItem() {\n return `${this.method} mediaItem should be an instance of SDK.Media.MediaItem`;\n }\n };\n\n instanceStrict(mediaItem, MediaItem, errorMessage.mediaItem, InvalidArgumentException);\n\n const { accessToken, client } = this;\n\n const thumbnailLink = Util.getSafe(() => mediaItem.payload.thumbnails.bif);\n\n const options = {\n thumbnailLink,\n accessToken\n };\n\n return client.getBifThumbnails(options);\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {SDK.Media.MediaItem} mediaItem - The MediaItem for the current media that was returned by a call to\n * Fetch.\n * @param {SDK.Media.ThumbnailResolution} resolution - The desired resolution of thumbnails to fetch.\n * @desc Fetches the details about the BIF thumbnail images that players can show to users when scrubbing video.\n * @returns {Promise}\n *\n */\n getBifThumbnailSet(mediaItem, resolution) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getBifThumbnailSet(mediaItem, resolution)`,\n get mediaItem() {\n return `${this.method} mediaItem should be an instance of SDK.Media.MediaItem`;\n },\n get resolution() {\n return `${this.method} resolution should be a String with length`;\n }\n };\n\n instanceStrict(mediaItem, MediaItem, errorMessage.mediaItem, InvalidArgumentException);\n nonEmptyString(resolution, errorMessage.resolution, InvalidArgumentException);\n\n const { accessToken, client } = this;\n\n const thumbnailLink = Util.getSafe(() => mediaItem.payload.thumbnails.bif);\n\n const options = {\n thumbnailLink,\n resolution,\n accessToken\n };\n\n return client.getBifThumbnails(options).then((thumbnailSets) => {\n return Promise.resolve(thumbnailSets[0]);\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @note the JS SDK does not support this method\n * @returns {Promise}\n *\n */\n getBifThumbnail() {\n\n const errorMessage = {\n method: `${this.constructor.name}.getBifThumbnail()`\n };\n\n return new Promise((resolve, reject) => {\n return reject(new Error(`${errorMessage.method} - not-implemented`));\n });\n\n }\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.tokenManager.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/mediaManager.js","/**\n *\n * @module mediaDescriptor\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/playback-mapping.md\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../services/exception/entry';\nimport AdInsertionStrategy from './adInsertionStrategy';\nimport MediaPreferences from './mediaPreferences';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n includes,\n instanceStrict,\n nonEmptyString,\n object,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class MediaDescriptor\n * @desc A description of an item available from the media service.\n *\n */\nexport default class MediaDescriptor {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.playbackUrl - The absolute URL for the media service request.\n * @param {SDK.Media.AdInsertionStrategy} [options.adInsertionStrategy=AdInsertionStrategy.NONE] - The advertising\n * insertion strategy to be used with the media.\n * @param {String} [options.basePlaybackScenario=null] - The playback scenario key that will be used to convey\n * additional information about what variant of media that is desired.\n * @param {Object} [options.adTargeting={}]\n * @param {String} [options.contentId] - ID for cache resolution of every cached MediaItem\n * @param {SDK.Media.MediaPreferences} [options.mediaPreferences] - Object of media related\n * preference enums\n * provided by the app developer, used in scenario string manipulation\n * @throws {InvalidArgumentException}\n * @note Since offline downloads is not a requirement on JS, contentId is marked as optional.\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'MediaDescriptor(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get adInsertionStrategy() {\n return `${this.ctor} options.adInsertionStrategy should be a valid SDK.Media.AdInsertionStrategy`;\n },\n get playbackUrl() {\n return `${this.ctor} options.playbackUrl should be String with length`;\n },\n get basePlaybackScenario() {\n return `${this.ctor} options.basePlaybackScenario should be a String with length`;\n },\n get adTargeting() {\n return `${this.ctor} options.adTargeting should be an Object`;\n },\n get contentId() {\n return `${this.ctor} options.contentId should be a String with length`;\n },\n get mediaPreferences() {\n return `${this.ctor} options.mediaPreferences should be an instance of SDK.Media.MediaPreferences`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackUrl, adInsertionStrategy = AdInsertionStrategy.NONE, basePlaybackScenario = null } = options;\n const { adTargeting = {}, contentId, mediaPreferences } = options;\n\n nonEmptyString(playbackUrl, errorMessage.playbackUrl, InvalidArgumentException);\n\n includes(AdInsertionStrategy, adInsertionStrategy, errorMessage.AdInsertionStrategy, InvalidArgumentException);\n\n if (Check.assigned(basePlaybackScenario)) {\n nonEmptyString(basePlaybackScenario, errorMessage.basePlaybackScenario, InvalidArgumentException);\n }\n\n if (Check.assigned(adTargeting)) {\n object(adTargeting, errorMessage.adTargeting, InvalidArgumentException);\n }\n\n if (Check.assigned(contentId)) {\n nonEmptyString(contentId, errorMessage.contentId, InvalidArgumentException);\n }\n\n if (Check.assigned(mediaPreferences)) {\n instanceStrict(mediaPreferences, MediaPreferences, errorMessage.mediaPreferences, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets the absolute URL for the media service request.\n *\n */\n this.playbackUrl = playbackUrl;\n\n /**\n *\n * @access public\n * @type {SDK.Media.AdInsertionStrategy}\n * @desc Gets or sets the advertising insertion strategy to be used with the media.\n * Default is AdInsertionStrategy.None\n *\n */\n this.adInsertionStrategy = adInsertionStrategy;\n\n /**\n *\n * @access public\n * @type {String|null}\n * @desc Gets or sets the playback scenario key used to convey additional information\n * about what variant of media that is desired. Default is null.\n *\n */\n this.basePlaybackScenario = basePlaybackScenario;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Custom adTargeting object to be used when setting cookies related to AdEngine\n *\n */\n this.adTargeting = adTargeting;\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String|undefined}\n * @desc ID for cache resolution of every cached MediaItem.\n * @note Since offline downloads is not a requirement on JS, hence why is undefined.\n *\n */\n this.contentId = contentId;\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {SDK.Media.MediaPreferences|undefined}\n * @desc Object of media related preference enums provided by the app developer, used in scenario string\n * manipulation\n *\n */\n this.mediaPreferences = mediaPreferences;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/mediaDescriptor.js","/**\n *\n * @module playbackMetricsProvider\n *\n */\n\nimport Check from 'check-types';\nimport EventEmitter from 'events';\nimport Exception from './../services/exception/entry';\nimport PlaybackEventListener from './playbackEventListener';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class PlaybackMetricsProvider\n * @extends {EventEmitter}\n * @see https://nodejs.org/api/events.html\n * @since 2.0.0\n *\n */\nexport default class PlaybackMetricsProvider extends EventEmitter {\n\n constructor() {\n\n super();\n\n }\n\n /**\n *\n * @access public\n * @desc Gets a snapshot of information about media playback.\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n *\n */\n getPlaybackMetrics() {\n\n const errorMessage = {\n method: 'PlaybackMetricsProvider.getPlaybackMetrics()'\n };\n\n return new Promise((resolve, reject) => {\n return reject(new Error(`${errorMessage.method} - not-implemented`));\n });\n\n }\n\n /**\n *\n * @access public\n * @param {PlaybackEventListener} listener\n * @returns {Promise}\n *\n */\n addListener(listener) {\n\n const errorMessage = {\n method: 'PlaybackMetricsProvider.addListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n return new Promise((resolve, reject) => {\n return reject(new Error(`${errorMessage.method} - not-implemented`));\n });\n\n }\n\n /**\n *\n * @access public\n * @param {PlaybackEventListener} listener\n * @returns {Promise}\n *\n */\n removeListener(listener) {\n\n const errorMessage = {\n method: 'PlaybackMetricsProvider.removeListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n return new Promise((resolve, reject) => {\n return reject(new Error(`${errorMessage.method} - not-implemented`));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playbackMetricsProvider.js","/**\n *\n * @module purchaseManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/purchase.md#x-bamtech-refresh-access-token-header\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\nimport AccessStatus from './accessStatus';\n\nconst Util = Services.Util;\nconst PurchaseManagerConfiguration = Services.Configuration.PurchaseManagerConfiguration;\nconst PurchaseClient = Services.Purchase.PurchaseClient;\nconst ReceiptCredentials = Services.Purchase.ReceiptCredentials;\nconst TokenManager = Token.TokenManager;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class PurchaseManager\n * @desc Manages the redemption of purchases made through platform-specific stores.\n *\n */\nexport default class PurchaseManager {\n\n /**\n *\n * @param {SDK.Services.Configuration.PurchaseManagerConfiguration} purchaseManagerConfiguration\n * @param {SDK.Services.Purchase.PurchaseClient} purchaseClient\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Token.TokenManager} tokenManager\n *\n */\n constructor(purchaseManagerConfiguration, purchaseClient, logger = Logging, tokenManager) {\n\n const errorMessage = {\n ctor: 'PurchaseManager(purchaseManagerConfiguration, purchaseClient, logger, tokenManager)',\n get purchaseManagerConfiguration() {\n return `${this.ctor} needs SDK.Services.Configuration.PurchaseManagerConfiguration instance`;\n },\n get purchaseClient() {\n return `${this.ctor} needs SDK.Services.PurchaseClient instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n }\n };\n\n instanceStrict(purchaseManagerConfiguration, PurchaseManagerConfiguration, errorMessage.purchaseManagerConfiguration, InvalidArgumentException); // eslint-disable-line\n instanceStrict(purchaseClient, PurchaseClient, errorMessage.purchaseClient, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.PurchaseManagerConfiguration}\n *\n */\n this.config = purchaseManagerConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Purchase.PurchaseClient}\n *\n */\n this.client = purchaseClient;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n this.logger.log(PurchaseManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Purchase.ReceiptCredentails} receiptCredentials - Information\n * about the purchase made in the store.\n * @param {SDK.Purchase.RedeemRetryHandler} [handler=null]\n * @desc Uses the receipt provided to verify if pertains to a valid purchase\n * @returns {Promise}\n *\n */\n redeemPurchases(receiptCredentials, handler) {\n\n const errorMessage = {\n method: 'PurchaseManager.redeemPurchases(receiptCredentials)',\n get receiptCredentials() {\n return `${this.method} needs SDK.Services.Purchase.ReceiptCredentials instance`;\n }\n };\n\n instanceStrict(receiptCredentials, ReceiptCredentials, errorMessage.receiptCredentials, InvalidArgumentException); // eslint-disable-line\n\n const { client, accessToken, config } = this;\n const retryPolicy = Util.getSafe(() => config.extras.retryPolicy);\n\n return client.redeemPurchases(receiptCredentials, accessToken).then((purchaseActivationResult) => {\n\n const accessStatus = new AccessStatus(purchaseActivationResult, retryPolicy, handler);\n const forceRefresh = purchaseActivationResult.refreshAccessToken;\n\n if (forceRefresh) {\n\n return this.tokenManager.refreshAccessToken(forceRefresh).then(() => {\n return Promise.resolve(accessStatus);\n });\n\n }\n\n return Promise.resolve(accessStatus);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Purchase.ReceiptCredentails} receiptCredentials - Information\n * about the purchase made in the store.\n * @desc Uses the receipt provided to verify if it pertains to a valid purchase\n * @returns {Promise}\n *\n */\n restorePurchases(receiptCredentials) {\n\n const errorMessage = {\n method: 'PurchaseManager.restorePurchases(receiptCredentials)',\n get receiptCredentials() {\n return `${this.method} needs SDK.Services.Purchase.ReceiptCredentials instance`;\n }\n };\n\n instanceStrict(receiptCredentials, ReceiptCredentials, errorMessage.receiptCredentials, InvalidArgumentException); // eslint-disable-line\n\n const { client, accessToken, config } = this;\n const retryPolicy = Util.getSafe(() => config.extras.retryPolicy);\n\n return client.restorePurchases(receiptCredentials, accessToken).then((purchaseActivationResult) => {\n\n const accessStatus = new AccessStatus(purchaseActivationResult, retryPolicy);\n const forceRefresh = purchaseActivationResult.refreshAccessToken;\n\n if (forceRefresh) {\n\n return this.tokenManager.refreshAccessToken(forceRefresh).then(() => {\n return Promise.resolve(accessStatus);\n });\n\n }\n\n return Promise.resolve(accessStatus);\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.tokenManager.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/purchase/purchaseManager.js","/**\n *\n * @module receipt\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\n\nconst ReceiptCredentials = Services.Purchase.ReceiptCredentials;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n object,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class Receipt\n *\n */\nexport default class Receipt {\n\n /**\n *\n * @param {String} store\n * @param {Object} receipt\n *\n */\n constructor(store, receipt) {\n\n const errorMessage = {\n ctor: 'Receipt(store, receipt)',\n get store() {\n return `${this.ctor} store should be String with length`;\n },\n get receipt() {\n return `${this.ctor} should be an Object`;\n }\n };\n\n object(receipt, errorMessage.receipt, InvalidArgumentException);\n nonEmptyString(store, errorMessage.store, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc contains the receipt information necessary to identify this purchase\n *\n */\n this.receiptCredentials = new ReceiptCredentials(store, receipt);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/purchase/receipt.js","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_dom-create.js\n// module id = 101\n// module chunks = 0","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-primitive.js\n// module id = 102\n// module chunks = 0","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-integer.js\n// module id = 103\n// module chunks = 0","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_defined.js\n// module id = 104\n// module chunks = 0","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-create.js\n// module id = 105\n// module chunks = 0","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-length.js\n// module id = 106\n// module chunks = 0","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_shared-key.js\n// module id = 107\n// module chunks = 0","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_shared.js\n// module id = 108\n// module chunks = 0","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_enum-bug-keys.js\n// module id = 109\n// module chunks = 0","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gpo.js\n// module id = 110\n// module chunks = 0","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_classof.js\n// module id = 111\n// module chunks = 0","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/core.get-iterator-method.js\n// module id = 112\n// module chunks = 0","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_new-promise-capability.js\n// module id = 113\n// module chunks = 0","exports.f = Object.getOwnPropertySymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gops.js\n// module id = 114\n// module chunks = 0","/**\n *\n * @module logSink\n *\n */\n\n/* eslint no-unused-vars: \"off\" */\n\nimport LogLevel from './logLevel';\n\n/**\n *\n * @abstract LogSink\n * @desc Defines the contract for a logging \"endpoint\" that can be registered with the Logger.\n *\n * @note a LogSink implementation will construct with a LogLevel, filtering out events that fall below that\n * level. Further each LogSink will log these LogEvents in a unique way, examples being:\n *\n * ConsoleSink: writes the logEvent as a string to the console\n * MemorySink: simply stores the logEvent in an array.\n * Potential NetworkSinks will POST the logEvent to a URL.\n *\n */\nexport default class LogSink {\n\n /**\n *\n * @param {LogLevel} [logLevel=LogLevel.none]\n *\n */\n constructor(logLevel = LogLevel.none) {\n\n /**\n *\n * @access public\n * @type {LogLevel}\n *\n */\n this.logLevel = logLevel;\n\n }\n\n /**\n *\n * @access public\n * @param {LogEvent} logEvent - The event to be logged.\n *\n */\n log(logEvent) {\n\n throw new ReferenceError('Sink must implement log(LogEvent)');\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/logging/logSink.js","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/toConsumableArray.js\n// module id = 116\n// module chunks = 0","exports.f = require('./_wks');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_wks-ext.js\n// module id = 117\n// module chunks = 0","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_wks-define.js\n// module id = 118\n// module chunks = 0","/**\n *\n * @module userProfile\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyObject,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class UserProfile\n * @since 3.5.0\n *\n */\nexport default class UserProfile {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.profileId\n * @param {String} options.profileName\n * @param {Object} [options.attributes={}]\n * @param {Object} [options.metadata={}]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'UserProfile(options)',\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get profileId() {\n return `${this.ctor} options.profileId should be a String with length`;\n },\n get profileName() {\n return `${this.ctor} options.profileName should be a String with length`;\n },\n get attributes() {\n return `${this.ctor} options.attributes should be an Object`;\n },\n get metadata() {\n return `${this.ctor} options.metadata should be an Object`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { profileId, profileName, attributes = {}, metadata = {} } = options;\n\n nonEmptyString(profileId, errorMessage.profileId, InvalidArgumentException);\n nonEmptyString(profileName, errorMessage.profileName, InvalidArgumentException);\n\n if (Check.assigned(attributes)) {\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n }\n\n if (Check.assigned(metadata)) {\n object(metadata, errorMessage.metadata, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.profileId = profileId;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.profileName = profileName;\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.attributes = attributes;\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.metadata = metadata;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/account/userProfile.js","/**\n *\n * @module errorReason\n *\n */\n\n/**\n *\n * @class ErrorReason\n * @desc information regarding exception\n *\n */\nexport default class ErrorReason {\n\n /**\n *\n * @param {String} code - Reason code. Can be used by the application developer to look up localized error messages.\n * @param {String} [description=''] - Additional error information (optional).\n *\n */\n constructor(code, description = '') {\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.code = code;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.description = description;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/exception/errorReason.js","/**\n *\n * @module serviceException\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/exceptions.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\n\n/**\n *\n * @class ServiceException\n * @extends {Error}\n * @desc base exception for SDK services\n * @note Interacts with Logging package and active sinks\n *\n */\nexport default class ServiceException {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.transactionId=''] - The identifier allows BAM to lookup the entire operation in DUST\n * @param {Array} [options.reasons=[]] - Returned by the upstream service or by the SDK operation\n * @param {Object} [options.exceptionData={}]\n * @param {Number} [options.status=null]\n *\n */\n constructor(options = {}) {\n\n const { transactionId, reasons, status, exceptionData = {} } = options;\n\n const defaultName = 'ServiceException';\n const defaultMessage = 'An unexpected error occurred communicating with a service.';\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.transactionId = Check.string(transactionId) ? transactionId : '';\n\n /**\n *\n * @access public\n * @type {Array}\n *\n */\n this.reasons = Check.array(reasons) ? reasons : [];\n\n /**\n *\n * @access public\n * @type {Number|null}\n *\n */\n this.status = Check.number(status) ? status : null;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Sets the name property from the ExceptionReference object.\n * Defaults to ServiceException if no name is provided.\n *\n */\n this.name = Check.nonEmptyString(exceptionData.name) ? exceptionData.name : defaultName;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.message = Check.nonEmptyString(exceptionData.message) ? exceptionData.message : defaultMessage;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Exception information provided to aid in debugging.\n *\n */\n this.data = {\n name: this.name,\n message: this.message\n };\n\n Error.call(this, this.message);\n\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, this.constructor);\n }\n\n if (typeof this.stack === 'string') {\n const stack = this.stack.split('\\n');\n Logging.error(stack.slice(0, 3).join('\\n'), this);\n } else {\n Logging.error('Unknown', this);\n }\n\n }\n\n}\n\nServiceException.prototype = Object.create(Error.prototype);\n\n/**\n *\n * @access public\n * @returns {String}\n *\n */\nServiceException.prototype.toString = function () {\n return `${this.name}: ${this.message}`;\n};\n\n/**\n *\n * @access public\n * @returns {String}\n *\n */\nServiceException.prototype.inspect = function () {\n return this.toString();\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/exception/serviceException.js","/**\n *\n * @module tokenRequestBuilder\n *\n */\n\nimport Check from 'check-types';\nimport TokenRequest from './tokenRequest';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n number\n} = Check.assert;\n\n/**\n *\n * @class TokenRequestBuilder\n * @desc Interface used to build a token exchange request.\n *\n */\nexport default class TokenRequestBuilder {\n\n constructor() {\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the grant type. This must be a\n * valid type that is recognized by the service.\n *\n */\n this.grantType = '';\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.tokenData = Object.create(null);\n\n }\n\n /**\n *\n * @access public\n * @param {Number} latitude - The latitude of the device.\n * @param {Number} longitude - The longitude of the device.\n * @desc Builds the token request.\n * @returns {Promise} Data required to make a token request.\n *\n */\n build(latitude, longitude) {\n\n const errorMessage = {\n method: 'TokenRequestBuilder.build(latitude, longitude)',\n get latitude() {\n return `${this.method} latitude should be a Number`;\n },\n get longitude() {\n return `${this.method} longitude should be a Number`;\n }\n };\n\n number(latitude, errorMessage.latitude, InvalidArgumentException);\n number(longitude, errorMessage.longitude, InvalidArgumentException);\n\n const { grantType, tokenData } = this;\n\n return Promise.resolve(\n new TokenRequest(grantType, tokenData, latitude, longitude)\n );\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/tokenRequestBuilder.js","/**\n *\n * @module tokenRequest\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n number,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class TokenRequest\n * @desc Information required by TokenClient to exchange a token.\n *\n */\nexport default class TokenRequest {\n\n /**\n *\n * @param {String} grantType - The grant type of the token that will be exchanged.\n * @param {Object} tokenData - The parameters that will be added to the token.\n * @param {Number} latitude - The latitude of the device.\n * @param {Number} longitude - The longitude of the device.\n *\n */\n constructor(grantType, tokenData, latitude, longitude) {\n\n const errorMessage = {\n ctor: 'TokenRequest(grantType, tokenData, latitude, longitude)',\n get grantType() {\n return `${this.ctor} grantType should be a String with length`;\n },\n get tokenData() {\n return `${this.ctor} tokenData should be a plain Object`;\n },\n get latitude() {\n return `${this.ctor} latitude should be a Number`;\n },\n get longitude() {\n return `${this.ctor} latitude should be a Number`;\n }\n };\n\n nonEmptyString(grantType, errorMessage.grantType, InvalidArgumentException);\n nonEmptyObject(tokenData, errorMessage.tokenData, InvalidArgumentException);\n\n number(latitude, errorMessage.latitude, InvalidArgumentException);\n number(longitude, errorMessage.longitude, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.grantType = grantType;\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.tokenData = tokenData;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.latitude = latitude;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.longitude = longitude;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/tokenRequest.js","module.exports = require(\"core-js/library/fn/object/values\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/object/values.js\n// module id = 124\n// module chunks = 0","/**\n *\n * @module environmentConfiguration\n *\n */\n\nconst deviceFamily = process.env.device_family;\nconst applicationRuntime = process.env.application_runtime;\n\nlet strategy = 'isomorphic';\n\n/**\n *\n * @note runtime specific Storage implementation\n *\n */\nif (applicationRuntime === 'trilithium') {\n strategy = `${deviceFamily}/${applicationRuntime}`;\n}\n\nmodule.exports = require(`./${strategy}/environmentConfiguration`);\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/environmentConfiguration.js","/**\n *\n * @module accountClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class AccountClientConfiguration\n * @extends ServiceClientConfiguration\n * @desc Provides configuration information used by the AccountClient.\n *\n */\nexport default class AccountClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/account/accountClientConfiguration.js","/**\n *\n * @module adEngineClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from '../../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class AdEngineClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the AdEngineClient.\n *\n */\nexport default class AdEngineClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/adEngine/adEngineClientConfiguration.js","/**\n *\n * @module adobeIdentityClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class AdobeIdentityClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the AdobeIdentityClient.\n *\n */\nexport default class AdobeIdentityClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/adobe/adobeIdentityClientConfiguration.js","/**\n *\n * @module bamIdentityClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class BamIdentityClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the BamIdentityClient.\n *\n */\nexport default class BamIdentityClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/bam/bamIdentityClientConfiguration.js","/**\n *\n * @module commerceClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class CommerceClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the CommerceClient.\n *\n */\nexport default class CommerceClientConfiguration extends ServiceClientConfiguration {\n\n /**\n *\n * @param {String} baseUrl\n * @param {Object} endpoints\n * @param {CommerceClientExtrasMap} extras\n *\n */\n constructor(baseUrl, endpoints, extras) {\n\n super(baseUrl, endpoints);\n\n /**\n *\n * @access public\n * @type {CommerceClientExtrasMap}\n *\n */\n this.extras = extras;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/commerceClientConfiguration.js","/**\n *\n * @module contentClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class ContentClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the ContentClient\n *\n */\nexport default class ContentClientConfiguration extends ServiceClientConfiguration {\n\n /**\n *\n * @param {String} baseUrl\n * @param {Object} endpoints\n * @param {ContentClientExtrasMap} extras\n *\n */\n constructor(baseUrl, endpoints, extras) {\n\n super(baseUrl, endpoints);\n\n /**\n *\n * @access public\n * @type {ContentClientExtrasMap}\n * @desc Gets or sets the extra data needed by the client.\n *\n */\n this.extras = extras;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/content/contentClientConfiguration.js","/**\n *\n * @module customerServiceClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class CustomerServiceClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the CustomerServiceClient.\n *\n */\nexport default class CustomerServiceClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/customerService/customerServiceClientConfiguration.js","/**\n *\n * @module deviceClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class DeviceClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the DeviceClient.\n *\n */\nexport default class DeviceClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/device/deviceClientConfiguration.js","/**\n *\n * @module drmClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class DrmClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the DrmClient.\n *\n */\nexport default class DrmClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/drm/drmClientConfiguration.js","/**\n *\n * @module eligibilityClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class EligibilityClientConfiguration\n * @extends ServiceClientConfiguration\n * @desc Provides configuration information used by the EligibilityClient.\n *\n */\nexport default class EligibilityClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/eligibility/eligibilityClientConfiguration.js","/**\n *\n * @module externalActivationClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class ExternalActivationClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the ExternalActivationClient.\n *\n */\nexport default class ExternalActivationClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/externalActivation/externalActivationClientConfiguration.js","/**\n *\n * @module mediaClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class MediaClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc A model containing the MediaClient's configuration settings.\n *\n */\nexport default class MediaClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/mediaClientConfiguration.js","/**\n *\n * @module paywallClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class PaywallClientConfiguration\n * @extends ServiceClientConfiguration\n * @desc Provides configuration information used by the PaywallClient.\n *\n */\nexport default class PaywallClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/paywall/paywallClientConfiguration.js","/**\n *\n * @module purchaseClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class PurchaseClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the PurchaseClient.\n *\n */\nexport default class PurchaseClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/purchase/purchaseClientConfiguration.js","/**\n *\n * @module sessionClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class SessionClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the SessionClient.\n *\n */\nexport default class SessionClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/session/sessionClientConfiguration.js","/**\n *\n * @module telemetryClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class TelemetryClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the TelemetryClient\n *\n */\nexport default class TelemetryClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/telemetry/telemetryClientConfiguration.js","/**\n *\n * @module tokenClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class TokenClientConfiguration\n * @extends {ServiceClientConfiguration}\n *\n */\nexport default class TokenClientConfiguration extends ServiceClientConfiguration {\n\n /**\n *\n * @param {String} baseUrl\n * @param {Object} endpoints\n * @param {TokenClientExtrasMap} extras\n *\n */\n constructor(baseUrl, endpoints, extras) {\n\n super(baseUrl, endpoints);\n\n /**\n *\n * @access public\n * @type {TokenClientExtrasMap}\n *\n */\n this.extras = extras;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/tokenClientConfiguration.js","/**\n *\n * @module coreHttpClientProvider\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../../logging/entry';\nimport Exception from './../../exception/entry';\n\nconst ErrorReason = Exception.ErrorReason;\nconst ExceptionReference = Exception.ExceptionReference;\nconst ServiceException = Exception.ServiceException;\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ProviderException = Exception.ProviderException;\n\nconst {\n like\n} = Check.assert;\n\n/**\n *\n * @class CoreHttpClientProvider\n * @implements {IHttpClient}\n * @desc Core `HttpClient` provider implementation definition.\n * Acts as a base definition that is extended by platform specific implementations.\n *\n */\nexport default class CoreHttpClientProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc required options structure\n *\n */\n this.optionsBaseline = {\n url: ''\n };\n\n /**\n *\n * @access private\n * @type {String}\n * @desc message exposed if provided options dont meet baseline requirements\n *\n */\n this.optionsMismatchError = 'Options do not match expected input';\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.log(CoreHttpClientProvider.name, 'Created Core Provider.');\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {ProviderException} Not implemented\n * @returns {Promise}\n *\n * @example\n * httpClient.post(options).then((response) => { console.log(response.data); });\n *\n */\n post(options) {\n\n const errorMessage = {\n method: 'HttpClient.patch(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return Promise.reject(new ProviderException(`${errorMessage.method} - not-implemented`));\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {ProviderException} Not implemented\n * @returns {Promise}\n *\n * @example\n * httpClient.get(options).then((response) => { console.log(response.data); });\n *\n */\n get(options) {\n\n const errorMessage = {\n method: 'HttpClient.patch(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return Promise.reject(new ProviderException(`${errorMessage.method} - not-implemented`));\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {ProviderException} Not implemented\n * @returns {Promise}\n *\n * @example\n * httpClient.del(options).then((response) => { console.log(response.data); });\n *\n */\n del(options) {\n\n const errorMessage = {\n method: 'HttpClient.patch(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return Promise.reject(new ProviderException(`${errorMessage.method} - not-implemented`));\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {ProviderException} Not implemented\n * @returns {Promise}\n *\n * @example\n * httpClient.patch(options).then((response) => { console.log(response.data); });\n *\n */\n patch(options) {\n\n const errorMessage = {\n method: 'HttpClient.patch(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return Promise.reject(new ProviderException(`${errorMessage.method} - not-implemented`));\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {ProviderException} Not implemented\n * @returns {Promise}\n *\n * @example\n * httpClient.put(options).then((response) => { console.log(response.data); });\n *\n */\n put(options) {\n\n const errorMessage = {\n method: 'HttpClient.patch(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return Promise.reject(new ProviderException(`${errorMessage.method} - not-implemented`));\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @method getResponseData\n * @param {*} responseData\n * @desc if the response cannot be parsed, provide the response as a plain String\n * @returns {Object|String}\n *\n */\n getResponseData(responseData) {\n\n let data;\n\n try {\n\n data = JSON.parse(responseData);\n\n } catch (error) {\n\n data = responseData;\n\n }\n\n return data;\n\n }\n\n /**\n *\n * @access private\n * @param {Number} status\n * @desc Allow status codes to pass through to the client\n * implementations where they are expected to be handled\n * @returns {Boolean}\n *\n */\n verifyStatus(status) {\n\n if (status >= 200) {\n\n return true;\n\n } else {\n\n return false;\n\n }\n\n }\n\n /**\n *\n * @access private\n * @param {Object} error\n * @returns {Promise}\n * @desc Fetch API \"will only reject on network failure or\n * if anything prevented the request from completing.\"\n * Therefore, reject a `NetworkException`. 4xx and 5xx responses\n * \"will resolve normally (with ok status set to false)\"\n * Handle them further down the Promise chain.\n *\n */\n onError(error) {\n\n const exceptionData = ExceptionReference.common.network;\n\n let reasons = [];\n\n if (Check.assigned(error)) {\n reasons = [new ErrorReason(error.name, error.message)];\n }\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/shared/coreHttpClientProvider.js","/**\n *\n * @module accountGrant\n *\n */\n\nimport Check from 'check-types';\nimport Token from './../token/entry';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class AccountGrant\n * @extends {SDK.Services.Token.Grant}\n * @desc A special type of grant used for exchanging account information for a token.\n * @note services returns grant_type NOT grantType and is renamed when destructured\n *\n */\nexport default class AccountGrant extends Token.Grant {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.assertion\n * @param {Object} options.grant_type\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'AccountGrant(options)',\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get assertion() {\n return `${this.ctor} options.assertion should be a String with length`;\n },\n get grantType() {\n return `${this.ctor} options.grantType should be a String with length`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { assertion, grant_type: grantType } = options;\n\n nonEmptyString(assertion, errorMessage.assertion, InvalidArgumentException);\n\n if (Check.assigned(grantType)) {\n nonEmptyString(grantType, errorMessage.grantType, InvalidArgumentException);\n }\n\n super(grantType, assertion);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.subjectTokenTypeKey = 'account';\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/account/accountGrant.js","/**\n *\n * @module orderItem\n *\n */\n\nimport Check from 'check-types';\n\nimport Price from './price';\nimport Sku from './sku';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n number,\n nonEmptyObject,\n nonEmptyString,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class OrderItem\n *\n */\nexport default class OrderItem {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Services.Commerce.Sku} options.sku\n * @param {SDK.Services.Commerce.Price} options.price\n * @param {Number} [subscriptionPeriod]\n * @param {String} [subscriptionTimeUnit]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'OrderItem(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get sku() {\n return `${this.ctor} options.sku should be an instance of SDK.Services.Commerce.Sku`;\n },\n get price() {\n return `${this.ctor} options.price should be an instance of SDK.Services.Commerce.Price`;\n },\n get subscriptionPeriod() {\n return `${this.ctor} options.subscriptionPeriod should be a Number`;\n },\n get subscriptionTimeUnit() {\n return `${this.ctor} options.subscriptionTimeUnit should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { sku, price, subscriptionPeriod, subscriptionTimeUnit } = options;\n\n instanceStrict(\n sku,\n Sku,\n errorMessage.sku,\n InvalidArgumentException\n );\n\n instanceStrict(\n price,\n Price,\n errorMessage.price,\n InvalidArgumentException\n );\n\n if (Check.assigned(subscriptionPeriod)) {\n number(subscriptionPeriod, errorMessage.subscriptionPeriod, InvalidArgumentException);\n }\n\n if (Check.assigned(subscriptionTimeUnit)) {\n nonEmptyString(subscriptionTimeUnit, errorMessage.subscriptionTimeUnit, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {SDK.Services.Commerce.Sku}\n *\n */\n this.sku = sku;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Commerce.Price}\n *\n */\n this.price = price;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|undefined}\n *\n */\n this.subscriptionPeriod = subscriptionPeriod;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|undefined}\n *\n */\n this.subscriptionTimeUnit = subscriptionTimeUnit;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/orderItem.js","/**\n *\n * @module price\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n number,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class Price\n *\n */\nexport default class Price {\n\n /**\n *\n * @param {Object} options\n * @param {Number} options.discountAmount\n * @param {Number} options.subtotalAmount\n * @param {Number} options.taxAmount\n * @param {Number} options.totalAmount\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'Price(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get discountAmount() {\n return `${this.ctor} options.discountAmount should be a Number`;\n },\n get subtotalAmount() {\n return `${this.ctor} options.subtotalAmount should be a Number`;\n },\n get taxAmount() {\n return `${this.ctor} options.taxAmount should be a Number`;\n },\n get totalAmount() {\n return `${this.ctor} options.totalAmount should be a Number`;\n }\n };\n\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { discountAmount, subtotalAmount, taxAmount, totalAmount } = options;\n\n number(discountAmount, errorMessage.discountAmount, InvalidArgumentException);\n number(subtotalAmount, errorMessage.subtotalAmount, InvalidArgumentException);\n number(taxAmount, errorMessage.taxAmount, InvalidArgumentException);\n number(totalAmount, errorMessage.totalAmount, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.discountAmount = discountAmount;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.subtotalAmount = subtotalAmount;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.taxAmount = taxAmount;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.totalAmount = totalAmount;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/price.js","/**\n *\n * @module sku\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n nonEmptyObject,\n array\n} = Check.assert;\n\n/**\n *\n * @class Sku\n *\n */\nexport default class Sku {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.name\n * @param {String} [options.billingType]\n * @param {String} [options.productDescription]\n * @param {String} options.currency\n * @param {String} options.currencyCode\n * @param {Array} [options.categories]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'Sku(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get name() {\n return `${this.ctor} options.name should be a String with length`;\n },\n get billingType() {\n return `${this.ctor} options.billingType should be a String with length`;\n },\n get productDescription() {\n return `${this.ctor} options.productDescription should be a String with length`;\n },\n get currency() {\n return `${this.ctor} options.currency should be a String with length`;\n },\n get currencyCode() {\n return `${this.ctor} options.currencyCode should be a String with length`;\n },\n get categories() {\n return `${this.ctor} options.categories should be an Array of Strings with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { name, billingType, productDescription, currency, currencyCode, categories } = options;\n\n nonEmptyString(name, errorMessage.name, InvalidArgumentException);\n\n if (Check.assigned(billingType)) {\n nonEmptyString(billingType, errorMessage.billingType, InvalidArgumentException);\n }\n\n if (Check.assigned(productDescription)) {\n nonEmptyString(productDescription, errorMessage.productDescription, InvalidArgumentException);\n }\n\n nonEmptyString(currency, errorMessage.currency, InvalidArgumentException);\n nonEmptyString(currencyCode, errorMessage.currencyCode, InvalidArgumentException);\n\n if (Check.assigned(categories)) {\n array.of.string(categories, errorMessage.categories, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.name = name;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.billingType = billingType;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.productDescription = productDescription;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.currency = currency;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @description `ISO 4217` Currency Alpha code (\"USD\") for type of currency used to price this product.\n *\n */\n this.currencyCode = currencyCode;\n\n /**\n *\n * @access public\n * @type {Array}\n *\n */\n this.categories = categories;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/sku.js","/**\n *\n * @module strongCustomerAuthRequirements\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from '../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class StringCustomerAuth\n * @since 4.0.0\n * @desc unique identification used when making a secure purchase\n *\n */\nexport default class StrongCustomerAuthRequirements {\n\n /**\n *\n * @param {String} sessionId\n * @param {String} challengeToken\n *\n */\n constructor(sessionId, challengeToken) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(sessionId, challengeToken)`,\n get sessionId() {\n return `${this.ctor} sessionId should be a String with length`;\n },\n get challengeToken() {\n return `${this.ctor} challengeToken should be a String with length`;\n }\n };\n\n nonEmptyString(sessionId, errorMessage.sessionId, InvalidArgumentException);\n nonEmptyString(challengeToken, errorMessage.challengeToken, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc unique identifier received from 3DS Authentication Partner\n *\n */\n this.sessionId = sessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Challenge JWT token for clients to help customer complete 3DS challenge\n *\n */\n this.challengeToken = challengeToken;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/strongCustomerAuthRequirements.js","/**\n *\n * @module partner\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nimport EligibilityStatus from './eligibilityStatus';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n includes,\n nonEmptyObject,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class Partner\n * @since 4.2.0\n *\n */\nexport default class Partner {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.partner\n * @param {String} options.eligibility\n * @param {String} options.email\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get partner() {\n return `${this.ctor} partner should be a String with length`;\n },\n get eligibility() {\n return `${this.ctor} eligibility should be a valid SDK.Services.Eligibility.EligibilityStatus`;\n },\n get email() {\n return `${this.ctor} email should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { partner, eligibility, email } = options;\n\n nonEmptyString(partner, errorMessage.partner, InvalidArgumentException);\n includes(EligibilityStatus, eligibility, errorMessage.eligibility, InvalidArgumentException);\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n this.partner = partner;\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n this.eligibility = eligibility;\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n this.email = email;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/eligibility/partner.js","/**\n *\n * @module temporaryDefaultAccessActivationStatus\n *\n */\n\n/**\n *\n * @since 4.2.0\n * @typedef TemporaryDefaultAccessActivationStatus\n * @type {Object}\n * @desc Represents the activation status of temporary default access.\n *\n * @property {String} activationSucceeded\n * @property {String} activationRetryingWithTda\n * @property {String} activationRetryingWithoutTda\n * @property {String} activationFailedWithTda\n * @property {String} activationFailedWithoutTda\n *\n */\n\nexport default {\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n activationSucceeded: 'ACTIVATION_SUCCEEDED',\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n activationRetryingWithTda: 'ACTIVATION_RETRYING_WITH_TDA',\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n activationRetryingWithoutTda: 'ACTIVATION_RETRYING_WITHOUT_TDA',\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n activationFailedWithTda: 'ACTIVATION_FAILED_WITH_TDA',\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n activationFailedWithoutTda: 'ACTIVATION_FAILED_WITHOUT_TDA'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/externalActivation/temporaryDefaultAccessActivationStatus.js","/**\n *\n * @module adEngineClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/playback-session.md#adengineclient // eslint-disable-line\n * @see https://wiki.bamtechmedia.com/pages/viewpage.action?pageId=17892211\n *\n */\n\nimport Check from 'check-types';\nimport queryString from 'query-string';\n\nimport Util from './../../util/entry';\nimport Exception from './../../exception/entry';\nimport Logging from './../../../logging/entry';\nimport Token from './../../token/entry';\nimport HttpClient from './../../platforms/httpClient';\nimport DustLogUtility from './../../internal/dust/dustLogUtility';\nimport DustUrnReference from './../../internal/dust/dustUrnReference';\nimport Configuration from './../../configuration/entry';\n\nimport AdEngineClientConfiguration from './adEngineClientConfiguration';\nimport AdEngineClientEndpoint from './adEngineClientEndpoint';\n\nconst AccessToken = Token.AccessToken;\nconst AdEngineClientDustUrnReference = DustUrnReference.services.media.adEngine.adEngineClient;\nconst HttpMethod = Configuration.HttpMethod;\n\nconst ServiceException = Exception.ServiceException;\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class AdEngineClient\n * @since 3.6.0\n *\n */\nexport default class AdEngineClient {\n\n /**\n *\n * @param {SDK.Services.Media.adEngineClientConfiguration} adEngineClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(adEngineClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'AdEngineClient(adEngineClientConfiguration, logger, httpClient)',\n get adEngineClientConfiguration() {\n return `${this.ctor} needs SDK.Services.Media.AdEngine.AdEngineClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n adEngineClientConfiguration,\n AdEngineClientConfiguration,\n errorMessage.adEngineClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {SDK.Services.Media.AdEngine.AdEngineClientConfiguration}\n *\n */\n this.config = adEngineClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(AdEngineClient.name, 'Created.');\n\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {Object} adEngineObject\n * @returns {Promise}\n *\n */\n updateCookies(accessToken, adEngineObject) {\n\n const errorMessage = {\n method: 'AdEngineClient.updateCookies(namespace)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n },\n get adEngineObject() {\n return `${this.method} adEngineObject should be a non-empty Object`;\n }\n };\n\n nonEmptyObject(adEngineObject, errorMessage.adEngineObject, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, httpClient, logger } = this;\n\n const credentials = 'include';\n\n const payload = this.getPayload(\n accessToken,\n AdEngineClientEndpoint.setToken,\n adEngineObject,\n credentials\n );\n\n logger.info(AdEngineClient.name, `Attempting to update AdEngine cookies with: \"${adEngineObject}\".`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AdEngineClient.name,\n urn: AdEngineClientDustUrnReference.updateCookies,\n payload,\n method: HttpMethod.GET,\n data: {\n query: payload.url.split('?')[1]\n }\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {Object} adEngineObject\n * @returns {Promise}\n *\n */\n getCookies(accessToken, adEngineObject) {\n\n const errorMessage = {\n method: 'AdEngineClient.getCookies(namespace)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n },\n get query() {\n return `${this.method} adEngineObject should be a non-empty Object`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n nonEmptyObject(adEngineObject, errorMessage.adEngineObject, InvalidArgumentException);\n\n const { dustEnabled, httpClient, logger } = this;\n\n const payload = this.getPayload(\n accessToken,\n AdEngineClientEndpoint.setToken, // uses the same endpoint as updateCookies\n adEngineObject\n );\n\n logger.info(AdEngineClient.name, `Attempting to update AdEngine cookies with: \"${adEngineObject}\".`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AdEngineClient.name,\n urn: AdEngineClientDustUrnReference.getCookies,\n payload,\n method: HttpMethod.GET,\n data: {\n query: payload.url.split('?')[1]\n }\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {AdEngineClientEndpoint} rel - endpoint type\n * @param {Object} adEngineObject\n * @param {String} credentials\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, adEngineObject, credentials) {\n\n const { endpoints } = this.config;\n const { href, headers } = endpoints[rel];\n\n const requestHeaders = Object.assign({}, headers);\n const url = `${href}?${queryString.stringify(adEngineObject)}`;\n\n if (Check.assigned(requestHeaders.Authorization)) {\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi, accessToken.token);\n }\n\n return {\n url,\n headers: requestHeaders,\n credentials\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/adEngine/adEngineClient.js","/**\n *\n * @module thumbnailSet\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nimport Presentation from './presentation';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyObject,\n number,\n array\n} = Check.assert;\n\n/**\n *\n * @class ThumbnailSet\n *\n */\nexport default class ThumbnailSet {\n\n /**\n *\n * @param {Object} options\n * @param {Number} options.thumbnailWidth\n * @param {Number} options.thumbnailHeight\n * @param {Number} options.intervalMilliseconds\n * @param {Number} options.totalBytes\n * @param {Array} options.presentations\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get thumbnailWidth() {\n return `${this.ctor} options.thumbnailWidth should be a Number`;\n },\n get thumbnailHeight() {\n return `${this.ctor} options.thumbnailHeight should be a Number`;\n },\n get intervalMilliseconds() {\n return `${this.ctor} options.intervalMilliseconds should be a Number`;\n },\n get totalBytes() {\n return `${this.ctor} options.totalBytes should be a Number`;\n },\n get presentations() {\n return `${this.ctor} options.presentations should be an Array of SDK.Services.Media.Presentation`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { thumbnailWidth, thumbnailHeight, intervalMilliseconds, totalBytes, presentations } = options;\n\n number(thumbnailWidth, errorMessage.thumbnailWidth, InvalidArgumentException);\n number(thumbnailHeight, errorMessage.thumbnailHeight, InvalidArgumentException);\n number(intervalMilliseconds, errorMessage.intervalMilliseconds, InvalidArgumentException);\n number(totalBytes, errorMessage.totalBytes, InvalidArgumentException);\n array.of.instanceStrict(presentations, Presentation, options.presentations, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The x resolution for each thumbnail\n *\n */\n this.thumbnailWidth = thumbnailWidth;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The y resolution for each thumbnail\n *\n */\n this.thumbnailHeight = thumbnailHeight;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The amount of media time between each thumbnail\n *\n */\n this.intervalMilliseconds = intervalMilliseconds;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The total download size of all thumbnails at this resolution. This is the sum of the sizes of all of\n * the spritesheets or all of the bifs supplied for a given resolution\n *\n */\n this.totalBytes = totalBytes;\n\n /**\n *\n * @access public\n * @type {Array}\n * @desc A list of presentations for this resolution\n *\n */\n this.presentations = presentations;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/thumbnailSet.js","/**\n *\n * @module presentation\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString,\n number,\n nonEmptyObject,\n array\n} = Check.assert;\n\n/**\n *\n * @class Presentation\n *\n */\nexport default class Presentation {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.presentationType\n * @param {Number} options.thumbnailCount\n * @param {Number} options.offsetMilliseconds\n * @param {Array} options.paths\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get presentationType() {\n return `${this.ctor} options.presentationType should be a String with length`;\n },\n get thumbnailCount() {\n return `${this.ctor} options.thumbnailCount should be a Number`;\n },\n get offsetMilliseconds() {\n return `${this.ctor} options.offsetMilliseconds should be a Number`;\n },\n get paths() {\n return `${this.ctor} options.paths should be an Array of Strings with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { presentationType, thumbnailCount, offsetMilliseconds, paths } = options;\n\n nonEmptyString(presentationType, errorMessage.presentationType, InvalidArgumentException);\n number(thumbnailCount, errorMessage.thumbnailCount, InvalidArgumentException);\n number(offsetMilliseconds, errorMessage.offsetMilliseconds, InvalidArgumentException);\n array.of.nonEmptyString(paths, options.paths, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n * @note it is entirely possible that the service returns a String that isn't in our enum\n * @desc the presentation type\n *\n */\n this.presentationType = presentationType;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The number of thumbnails available for this presentation\n *\n */\n this.thumbnailCount = thumbnailCount;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The milliseconds offset in the media file for the presentation which these thumbnails represent\n *\n */\n this.offsetMilliseconds = offsetMilliseconds;\n\n /**\n *\n * @access public\n * @type {Array}\n * @desc List of ordered urls to the spritesheets themselves\n *\n */\n this.paths = paths;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/presentation.js","/**\n *\n * @module mediaPayloadStream\n *\n */\n\nimport Check from 'check-types';\n\nimport PlaybackAttributes from './playbackAttributes';\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n object,\n nonEmptyString,\n array\n} = Check.assert;\n\n/**\n *\n * @class SDK.Services.Media.MediaPayloadStream\n * @since 4.0.0\n *\n */\nexport default class MediaPayloadStream {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.complete]\n * @param {String} [options.slide]\n * @param {Array} [options.variants]\n * @param {Object} [options.renditions]\n * @param {SDK.Services.Media.PlaybackAttributes} [options.attributes]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get complete() {\n return `${this.ctor} options.complete should be a String with length`;\n },\n get slide() {\n return `${this.ctor} options.slide should be a String with length`;\n },\n get variants() {\n return `${this.ctor} options.variants should be an Array of Objects`;\n },\n get renditions() {\n return `${this.ctor} options.renditions should be an Object`;\n },\n get attributes() {\n return `${this.ctor} options.attributes should be an instance of SDK.Services.Media.PlaybackAttributes`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { complete, slide, variants, renditions, attributes } = options;\n\n if (Check.assigned(complete)) {\n nonEmptyString(complete, errorMessage.complete, InvalidArgumentException);\n }\n\n if (Check.assigned(slide)) {\n nonEmptyString(slide, errorMessage.slide, InvalidArgumentException);\n }\n\n if (Check.assigned(variants)) {\n array.of.object(variants, errorMessage.variants, InvalidArgumentException);\n }\n\n if (Check.assigned(renditions)) {\n object(renditions, errorMessage.renditions, InvalidArgumentException);\n }\n\n if (Check.assigned(attributes)) {\n instanceStrict(attributes, PlaybackAttributes, errorMessage.attributes, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|undefined}\n * @desc Gets the \"complete\" media stream URL.\n * @note This URL can typically be supplied to a media player.\n *\n */\n this.complete = complete;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|undefined}\n * @desc Gets the \"slide\" media stream URL.\n * @note This URL can typically be supplied to a media player.\n *\n */\n this.slide = slide;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Array|undefined}\n * @desc Gets additional information used to track the media.\n *\n */\n this.variants = variants;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Object|undefined}\n *\n */\n this.renditions = renditions;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.Services.Media.PlaybackAttributes|undefined}\n *\n */\n this.attributes = attributes;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/mediaPayloadStream.js","/**\n *\n * @module playbackAttributes\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../exception/entry';\n\nimport DrmType from './drmType';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyObject,\n nonEmptyString,\n array\n} = Check.assert;\n\n/**\n *\n * @class SDK.Services.Media.PlaybackAttributes\n * @since 4.0.0\n * @desc Contains information about the playlist streams.\n *\n */\nexport default class PlaybackAttributes {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.adPartner]\n * @param {Array} options.drms\n * @param {String} options.encryptionType\n * @param {Array} options.audioSegmentTypes\n * @param {Array} options.videoSegmentTypes\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get adPartner() {\n return `${this.ctor} options.adPartner should be a String with length`;\n },\n get drms() {\n return `${this.ctor} options.drms should be an Array of SDK.Services.Media.DrmType`;\n },\n get encryptionType() {\n return `${this.ctor} options.encryptionType should be a String with length`;\n },\n get audioSegmentTypes() {\n return `${this.ctor} options.audioSegmentTypes should be an Array of Strings with length`;\n },\n get videoSegmentTypes() {\n return `${this.ctor} options.videoSegmentTypes should be an Array of Strings with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { adPartner, drms, encryptionType, audioSegmentTypes, videoSegmentTypes } = options;\n\n if (Check.assigned(adPartner)) {\n nonEmptyString(adPartner, errorMessage.adPartner, InvalidArgumentException);\n }\n\n array.of.string(drms, DrmType, errorMessage.drms, InvalidArgumentException);\n nonEmptyString(encryptionType, errorMessage.encryptionType, InvalidArgumentException);\n array.of.nonEmptyString(audioSegmentTypes, errorMessage.audioSegmentTypes, InvalidArgumentException);\n array.of.nonEmptyString(videoSegmentTypes, errorMessage.videoSegmentTypes, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|undefined}\n * @desc Gets the ad partner ID\n *\n */\n this.adPartner = adPartner;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Array}\n * @desc Gets the list of DRMs supported by this content\n *\n */\n this.drms = drms;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n this.encryptionType = encryptionType;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Array}\n *\n */\n this.audioSegmentTypes = audioSegmentTypes;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Array}\n *\n */\n this.videoSegmentTypes = videoSegmentTypes;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/playbackAttributes.js","/**\n *\n * @module mediaPlayhead\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n object,\n nonEmptyString,\n number\n} = Check.assert;\n\n/**\n *\n * @class SDK.Services.Media.MediaPlayhead\n * @since 4.0.0\n * @desc Represents the position of the associated media when it was last viewed by the current user.\n *\n */\nexport default class MediaPlayhead {\n\n /**\n *\n * @param {Object} options\n * @param {Number} [options.position]\n * @param {String} [options.lastUpdated]\n * @param {String} [options.status]\n * @param {String} [options.contentId]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'MediaPlayhead(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get position() {\n return `${this.ctor} position should be a Number`;\n },\n get lastUpdated() {\n return `${this.ctor} lastUpdated should be a String with length`;\n },\n get status() {\n return `${this.ctor} status should be a String with length`;\n },\n get contentId() {\n return `${this.ctor} contentId should be a String with length`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { position, lastUpdated, status, contentId } = options;\n\n if (Check.assigned(position)) {\n number(position, errorMessage.position, InvalidArgumentException);\n }\n\n if (Check.assigned(lastUpdated)) {\n nonEmptyString(lastUpdated, errorMessage.lastUpdated, InvalidArgumentException);\n }\n\n if (Check.assigned(status)) {\n nonEmptyString(status, errorMessage.status, InvalidArgumentException);\n }\n\n if (Check.assigned(contentId)) {\n nonEmptyString(contentId, errorMessage.contentId, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|undefined}\n * @desc Gets the position of the playhead in the last session for the associated media.\n *\n */\n this.position = position;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|undefined}\n * @desc Gets the timestamp when the playhead was last recorded.\n *\n */\n this.lastUpdated = lastUpdated;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|undefined}\n * @desc Gets or sets the status of retrieving the last playhead.\n *\n */\n this.status = status;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|undefined}\n *\n */\n this.contentId = contentId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/mediaPlayhead.js","/**\n *\n * @module mediaThumbnailLinks\n *\n */\n\nimport Check from 'check-types';\n\nimport MediaThumbnailLink from './mediaThumbnailLink';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n object\n} = Check.assert;\n\n/**\n *\n * @class MediaThumbnailLinks\n *\n */\nexport default class MediaThumbnailLinks {\n\n /**\n * @param {Object} thumbnails\n * @note If the playlist service response contains a `thumbnails` object we will try to construct one or both of\n * the properties in this file. These properties will be used when attempting to fetch thumbnails.\n * @note both `spritesheet` and `bif` are optional\n *\n */\n constructor(thumbnails) {\n\n const errorMessage = {\n ctor: 'MediaThumbnailLinks(thumbnails)',\n get thumbnails() {\n return `${this.ctor} thumbnails should be an Object`;\n }\n };\n\n object(thumbnails, errorMessage.thumbnails, InvalidArgumentException);\n\n const { bif, spritesheet } = thumbnails;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Media.MediaThumbnailLink|null}\n * @desc response from the playlist service used to fetch a thumbnail presentation\n *\n */\n this.bif = Check.assigned(bif) ? new MediaThumbnailLink(bif) : null;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Media.MediaThumbnailLink|null}\n * @desc response from the playlist service used to fetch a thumbnail presentation\n *\n */\n this.spritesheet = Check.assigned(spritesheet) ? new MediaThumbnailLink(spritesheet) : null;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/mediaThumbnailLinks.js","/**\n *\n * @module mediaThumbnailLink\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString,\n nonEmptyObject,\n object\n} = Check.assert;\n\n/**\n *\n * @class MediaThumbnailLink\n *\n */\nexport default class MediaThumbnailLink {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.href\n * @param {String} options.rel\n * @param {String} options.method\n * @param {Object} [options.headers]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'MediaThumbnailLink(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get href() {\n return `${this.ctor} options.href should be a String with length`;\n },\n get rel() {\n return `${this.ctor} options.rel should be a String with length`;\n },\n get method() {\n return `${this.ctor} options.method should be a String with length`;\n },\n get headers() {\n return `${this.ctor} options.headers should be an Object`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { href, rel, method, headers } = options;\n\n nonEmptyString(href, errorMessage.href, InvalidArgumentException);\n nonEmptyString(rel, errorMessage.rel, InvalidArgumentException);\n nonEmptyString(method, errorMessage.method, InvalidArgumentException);\n\n if (Check.assigned(headers)) {\n object(headers, errorMessage.headers, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String}\n * @desc href for a given thumbnail presentation\n *\n */\n this.href = href;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The name of the relationship - a HATEOAS header\n *\n */\n this.rel = rel;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc the method used to fetch the thumbnail presentation - should always be GET\n *\n */\n this.method = method;\n\n /**\n *\n * @access public\n * @type {Object|undefined}\n * @desc custom headers for this thumbnail service - will be merged with headers from the SDK config\n *\n */\n this.headers = headers;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/mediaThumbnailLink.js","// uuid.js\n//\n// Copyright (c) 2010-2012 Robert Kieffer\n// MIT License - http://opensource.org/licenses/mit-license.php\n\n// Unique ID creation requires a high quality random # generator. We feature\n// detect to determine the best RNG source, normalizing to a function that\n// returns 128-bits of randomness, since that's what's usually required\nvar _rng = require('./rng');\n\n// Maps for number <-> hex string conversion\nvar _byteToHex = [];\nvar _hexToByte = {};\nfor (var i = 0; i < 256; i++) {\n _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n _hexToByte[_byteToHex[i]] = i;\n}\n\n// **`parse()` - Parse a UUID into it's component bytes**\nfunction parse(s, buf, offset) {\n var i = (buf && offset) || 0, ii = 0;\n\n buf = buf || [];\n s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) {\n if (ii < 16) { // Don't overflow!\n buf[i + ii++] = _hexToByte[oct];\n }\n });\n\n // Zero out remaining bytes if string was short\n while (ii < 16) {\n buf[i + ii++] = 0;\n }\n\n return buf;\n}\n\n// **`unparse()` - Convert UUID byte array (ala parse()) into a string**\nfunction unparse(buf, offset) {\n var i = offset || 0, bth = _byteToHex;\n return bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]];\n}\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\n// random #'s we need to init node and clockseq\nvar _seedBytes = _rng();\n\n// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\nvar _nodeId = [\n _seedBytes[0] | 0x01,\n _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]\n];\n\n// Per 4.2.2, randomize (14 bit) clockseq\nvar _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff;\n\n// Previous uuid creation time\nvar _lastMSecs = 0, _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n var node = options.node || _nodeId;\n for (var n = 0; n < 6; n++) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : unparse(b);\n}\n\n// **`v4()` - Generate random UUID**\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v4(options, buf, offset) {\n // Deprecated - 'format' argument, as supported in v1.2\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options == 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || _rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ii++) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || unparse(rnds);\n}\n\n// Export public API\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\nuuid.parse = parse;\nuuid.unparse = unparse;\n\nmodule.exports = uuid;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/uuid.js\n// module id = 159\n// module chunks = 0","/**\n *\n * @module campaign\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class Campaign\n * @since 3.9.0\n * @desc Provides campaign and voucher codes for a given sku. This will only be populated for direct billing skus.\n *\n */\nexport default class Campaign {\n\n /**\n *\n * @param {String} campaignCode\n * @param {String} voucherCode\n * @throws {InvalidArgumentException}\n *\n */\n constructor(campaignCode, voucherCode) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(campaignCode, voucherCode)`,\n get campaignCode() {\n return `${this.ctor} options.campaignCode should be a String with length`;\n },\n get voucherCode() {\n return `${this.ctor} options.voucherCode should be a String with length`;\n }\n };\n\n nonEmptyString(campaignCode, errorMessage.campaignCode, InvalidArgumentException);\n nonEmptyString(voucherCode, errorMessage.voucherCode, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n * @desc Campaign code associated with a sku.\n *\n */\n this.campaignCode = campaignCode;\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n * @desc Voucher code associated with a sku.\n *\n */\n this.voucherCode = voucherCode;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/paywall/campaign.js","/**\n *\n * @module introPrice\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n number,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class IntroPrice\n * @since 3.9.0\n * @desc Defines introductory pricing and free trial information for IAP products.\n *\n */\nexport default class IntroPrice {\n\n /**\n *\n * @param {Object} options\n * @param {Number} options.length\n * @param {Number} options.price\n * @param {String} options.unit\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get length() {\n return `${this.ctor} options.length should be a Number`;\n },\n get price() {\n return `${this.ctor} options.price should be a Number`;\n },\n get unit() {\n return `${this.ctor} options.unit should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { length, price, unit } = options;\n\n number(length, errorMessage.length, InvalidArgumentException);\n number(price, errorMessage.price, InvalidArgumentException);\n nonEmptyString(unit, errorMessage.unit, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {Number}\n * @desc Length of intro period.\n *\n */\n this.length = length;\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {Number}\n * @desc Price during intro period. For free trials this would be 0.00.\n *\n */\n this.price = price;\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n * @desc Unit of time.\n *\n */\n this.unit = unit;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/paywall/introPrice.js","/**\n *\n * @module product\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nimport Campaign from './campaign';\nimport IntroPrice from './introPrice';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n array,\n nonEmptyString,\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class Product\n * @since 3.9.0\n * @desc The available product information.\n *\n */\nexport default class Product {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Services.Paywall.Campaign} [options.campaign]\n * @param {Array} options.entitlements\n * @param {Array} [options.groups=[]]\n * @param {SDK.Services.Paywall.IntroPrice|null} [options.introPrice]\n * @param {String} options.name\n * @param {String} options.productType\n * @param {String} options.sku\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get campaign() {\n return `${this.ctor} needs SDK.Services.Paywall.Campaign instance`;\n },\n get entitlements() {\n return `${this.ctor} options.entitlements should be an Array of Strings with length`;\n },\n get groups() {\n return `${this.ctor} options.groups should be an Array of Strings`;\n },\n get introPrice() {\n return `${this.ctor} needs SDK.Services.Paywall.IntroPrice instance`;\n },\n get name() {\n return `${this.ctor} options.name should be a String with length`;\n },\n get productType() {\n return `${this.ctor} options.productType should be a String with length`;\n },\n get sku() {\n return `${this.ctor} options.sku should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { campaign, entitlements, groups, introPrice, name, productType, sku } = options;\n\n if (Check.assigned(campaign)) {\n instanceStrict(campaign, Campaign, errorMessage.campaign, InvalidArgumentException);\n }\n\n array.of.nonEmptyString(entitlements, errorMessage.entitlements, InvalidArgumentException);\n\n if (Check.assigned(groups)) {\n array.of.nonEmptyString(groups, errorMessage.groups, InvalidArgumentException);\n }\n\n if (Check.assigned(introPrice)) {\n instanceStrict(introPrice, IntroPrice, errorMessage.introPrice, InvalidArgumentException);\n }\n\n nonEmptyString(name, errorMessage.name, InvalidArgumentException);\n nonEmptyString(productType, errorMessage.productType, InvalidArgumentException);\n nonEmptyString(sku, errorMessage.sku, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {SDK.Services.Paywall.Campaign}\n * @desc The campaign information, will be null for IAP products.\n *\n */\n this.campaign = campaign;\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {Array}\n * @desc The product entitlements.\n *\n */\n this.entitlements = entitlements;\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {Array}\n * @desc Maps to product categories in commerce.\n *\n */\n this.groups = groups;\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {SDK.Services.Paywall.IntroPrice|null}\n * @desc The introductory pricing info, will be null for direct billing products.\n *\n */\n this.introPrice = introPrice;\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n * @desc The product name.\n *\n */\n this.name = name;\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n * @desc The product type (IAP or D2C).\n *\n */\n this.productType = productType;\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n * @desc The product sku.\n *\n */\n this.sku = sku;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/paywall/product.js","/**\n *\n * @module purchaseActivationStatus\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef PurchaseActivationStatus\n * @type {Object}\n *\n * @property {String} ACTIVE\n * @property {String} EXPIRED\n * @property {String} FAILED\n * @property {String} IGNORED\n * @property {String} UNKNOWN\n *\n */\n\n/**\n *\n * @enum\n * @type {PurchaseActivationStatus}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n ACTIVE: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n EXPIRED: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n FAILED: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n IGNORED: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n UNKNOWN: null\n});\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/purchase/purchaseActivationStatus.js","/**\n *\n * @module sessionAccountInfo\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\n/**\n *\n * @class SessionAccountInfo\n * @desc Represents the session account info provided by the service.\n *\n */\nexport default class SessionAccountInfo {\n\n /**\n *\n * @param {String} id\n *\n */\n constructor(id) {\n\n const errorMessage = {\n ctor: 'SessionAccountInfo(id)',\n get id() {\n return `${this.ctor} id should be a String with length`;\n }\n };\n\n Check.assert.nonEmptyString(id, errorMessage.id, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.id = id;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/session/sessionAccountInfo.js","/**\n *\n * @module sessionDeviceInfo\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SessionDeviceInfo\n * @desc Represents the session device info provided by the service.\n *\n */\nexport default class SessionDeviceInfo {\n\n /**\n *\n * @param {String} id\n * @param {String} platform\n *\n */\n constructor(id, platform) {\n\n const errorMessage = {\n ctor: 'SessionDeviceInfo(id, platform)',\n get id() {\n return `${this.ctor} id should be a String with length`;\n },\n get platform() {\n return `${this.ctor} platform should be a String with length`;\n }\n };\n\n nonEmptyString(id, errorMessage.id, InvalidArgumentException);\n nonEmptyString(platform, errorMessage.platform, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.id = id;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.platform = platform;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/session/sessionDeviceInfo.js","/**\n *\n * @module sessionProfileInfo\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\n/**\n *\n * @class SessionProfileInfo\n * @desc Represents the session profile info provided by the service.\n *\n */\nexport default class SessionProfileInfo {\n\n /**\n *\n * @param {String} id\n *\n */\n constructor(id) {\n\n const errorMessage = {\n ctor: 'SessionProfileInfo(id)',\n get id() {\n return `${this.ctor} id should be a String with length`;\n }\n };\n\n Check.assert.nonEmptyString(id, errorMessage.id, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.id = id;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/session/sessionProfileInfo.js","/**\n *\n * @module sessionEntitlement\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SessionEntitlement\n * @desc Represents the session entitlement data provided by the service.\n *\n */\nexport default class SessionEntitlement {\n\n /**\n *\n * @param {String} name\n *\n */\n constructor(name) {\n\n const errorMessage = {\n ctor: 'SessionEntitlement(name)',\n get name() {\n return `${this.ctor} name should be a String with length`;\n }\n };\n\n nonEmptyString(name, errorMessage.name, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.name = name;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/session/sessionEntitlement.js","/**\n *\n * @module sessionLocation\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../exception/entry';\nimport SessionLocationType from './sessionLocationType';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SessionLocation\n * @desc Represents the session location data provided by the service.\n * @todo update type to SessionLocationType when configs are updated\n *\n */\nexport default class SessionLocation {\n\n /**\n *\n * @param {String} type\n * @param {String} [zipCode='']\n * @param {String} [countryCode='']\n * @param {Number} [designatedMarketArea=null]\n *\n */\n constructor(type, zipCode = '', countryCode = '', designatedMarketArea = null) {\n\n const errorMessage = {\n ctor: 'SessionLocation(type, zipCode, countryCode, designatedMarketArea)',\n get type() {\n return `${this.ctor} type should be a String with length`;\n }\n };\n\n nonEmptyString(type, errorMessage.type, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.type = SessionLocationType[type] || SessionLocationType.UNKNOWN;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.zipCode = zipCode;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.countryCode = countryCode;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.designatedMarketArea = designatedMarketArea;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/session/sessionLocation.js","/**\n *\n * @module geoProvider\n * @see https://github.bamtech.co/fed-devflow/build#configuration\n *\n */\n\nconst deviceFamily = process.env.device_family;\nconst applicationRuntime = process.env.application_runtime;\n\nlet strategy = 'browser';\n\n/**\n *\n * @note device specific GeoProvider implementation\n *\n */\nif (deviceFamily === 'node' || deviceFamily === 'apple') {\n strategy = `${deviceFamily}`;\n}\n\n/**\n *\n * @note runtime specific GeoProvider implementation\n *\n */\nif (applicationRuntime === 'trilithium') {\n strategy = `${deviceFamily}/${applicationRuntime}`;\n}\n\nmodule.exports = require(`./${strategy}/geoProvider`);\n\n\n\n// WEBPACK FOOTER //\n// ./src/platforms/geoProvider.js","/**\n *\n * @module access\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\nimport AccessContextState from './accessContextState';\n\nconst AccessContext = Services.Token.AccessContext;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class Access\n * @desc An interface with a reference to AccessContext and AccessContextState, used to\n * group the two as they are expected to be sent over and stored together.\n *\n */\nexport default class Access {\n\n /**\n *\n * @param {SDK.Services.Token.AccessContext} context\n * @param {AccessContextState} contextState\n * @throws {InvalidArgumentException}\n *\n */\n constructor(context, contextState) {\n\n const errorMessage = {\n ctor: 'Access(context, contextState)',\n get context() {\n return `${this.ctor} needs AccessContext instance`;\n },\n get contextState() {\n return `${this.ctor} needs valid AccessContextState`;\n }\n };\n\n instanceStrict(context, AccessContext, errorMessage.context, InvalidArgumentException);\n instanceStrict(contextState, AccessContextState, errorMessage.contextState, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {SDK.Services.Token.AccessContext}\n *\n */\n this.context = context;\n\n /**\n *\n * @access public\n * @type {AccessContextState}\n *\n */\n this.contextState = contextState;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/access.js","/**\n *\n * @module accessStateData\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../services/exception/entry';\n\nimport AccessContextState from './accessContextState';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class AccessStateData\n * @desc Represents the access state data.\n *\n */\nexport default class AccessStateData {\n\n /**\n *\n * @param {String} token\n * @param {String} refreshToken\n * @param {AccessContextState} contextState\n * @throws {InvalidArgumentException}\n *\n */\n constructor(token, refreshToken, contextState) {\n\n const errorMessage = {\n ctor: 'AccessStateData(token, refreshToken, contextState)',\n get token() {\n return `${this.ctor} token should be a String with length`;\n },\n get refreshToken() {\n return `${this.ctor} refreshToken should be a String with length`;\n },\n get contextState() {\n return `${this.ctor} needs valid AccessContextState`;\n }\n };\n\n nonEmptyString(token, errorMessage.token, InvalidArgumentException);\n nonEmptyString(refreshToken, errorMessage.refreshToken, InvalidArgumentException);\n instanceStrict(contextState, AccessContextState, errorMessage.contextState, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The primary access token.\n *\n */\n this.token = token;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The token needed for refreshing and obtaining a new token.\n *\n */\n this.refreshToken = refreshToken;\n\n /**\n *\n * @access public\n * @type {AccessContextState}\n * @desc The modes or permissions the token provides.\n *\n */\n this.contextState = contextState;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/accessStateData.js","/**\n *\n * @module accessToken\n *\n */\n\nimport Services from './../services/entry';\n\n/**\n *\n * @class AccessToken\n *\n */\nexport default class AccessToken extends Services.Token.AccessToken {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/accessToken.js","/**\n *\n * @module entry\n * @desc {SDK.Device} entry point.\n *\n */\n\nimport DeviceManager from './deviceManager';\n\n/**\n *\n * @typedef SDK.Device\n * @type {Object}\n *\n * @property {DeviceManager} DeviceManager\n *\n */\n\n/**\n *\n * @type {SDK.Device}\n *\n */\nexport default {\n\n DeviceManager\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/device/entry.js","/**\n *\n * @module subscriptionProvider\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SubscriptionProvider\n * @type {Object}\n * @desc Defines the providers of subscriptions.\n *\n * @property {String} BAMTECH - The subscription was initiated through BAMTECH.\n * @property {String} APPLE - The subscription was initiated through Apple.\n * @property {String} GOOGLE - The subscription was initiated through Google.\n * @property {String} ROKU - The subscription was initiated through Roku.\n * @property {String} SAMSUNG - The subscription was initiated through Samsung.\n * @property {String} HULU - The subscription was initiated through Hulu.\n * @property {String} AMAZON - The subscription was initiated through Amazon.\n *\n */\n\n/**\n *\n * @enum\n * @type {SubscriptionProvider}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n BAMTECH: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n APPLE: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n GOOGLE: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n ROKU: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n SAMSUNG: null,\n /**\n *\n * @access public\n * @since 4.1.2\n * @type {String}\n *\n */\n HULU: null,\n /**\n *\n * @access public\n * @since 4.1.2\n * @type {String}\n *\n */\n AMAZON: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription/subscriptionProvider.js","/**\n *\n * @module paymentMethodResponse\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport PaymentMethodType from './paymentMethodType';\n\nconst BillingAddress = Services.Commerce.BillingAddress;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean,\n includes,\n nonEmptyObject,\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class PaymentMethodResponse\n * @desc Response containing information on a payment method.\n *\n */\nexport default class PaymentMethodResponse {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Services.Commerce.BillingAddress} options.billingAddress\n * @param {Boolean} options.isDefault\n * @param {String} options.paymentMethodId\n * @param {String} options.walletId\n * @param {SDK.Commerce.PaymentMethodType} options.type\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get billingAddress() {\n return `${this.ctor} needs SDK.Services.Commerce.BillingAddress instance`;\n },\n get isDefault() {\n return `${this.ctor} options.isDefault should be a Boolean`;\n },\n get paymentMethodId() {\n return `${this.ctor} options.paymentMethodId should be a String with length`;\n },\n get walletId() {\n return `${this.ctor} options.walletId should be a String with length`;\n },\n get type() {\n return `${this.ctor} options.type should be a member of SDK.Commerce.PaymentMethodType`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { billingAddress, isDefault, paymentMethodId, walletId, type = PaymentMethodType.Other } = options;\n\n instanceStrict(billingAddress, BillingAddress, errorMessage.billingAddress, InvalidArgumentException);\n boolean(isDefault, errorMessage.isDefault, InvalidArgumentException);\n nonEmptyString(paymentMethodId, errorMessage.paymentMethodId, InvalidArgumentException);\n nonEmptyString(walletId, errorMessage.walletId, InvalidArgumentException);\n includes(PaymentMethodType, type, errorMessage.type, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {SDK.Services.Commerce.BillingAddress}\n *\n */\n this.billingAddress = billingAddress;\n\n /**\n *\n * @access public\n * @type {Boolean}\n *\n */\n this.isDefault = isDefault;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.paymentMethodId = paymentMethodId;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.walletId = walletId;\n\n /**\n *\n * @access public\n * @type {SDK.Commerce.PaymentMethodType}\n * @desc The type of payment method.\n *\n */\n this.type = PaymentMethodType[type];\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/commerce/paymentMethodResponse.js","/**\n *\n * @module priceOrderRequest\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst OrderCampaign = Services.Commerce.OrderCampaign;\nconst PriceOrderRequestAddress = Services.Commerce.PriceOrderRequestAddress;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n number,\n instanceStrict,\n array\n} = Check.assert;\n\n/**\n *\n * @class PriceOrderRequest\n * @since 4.0.0\n *\n */\nexport default class PriceOrderRequest {\n\n /**\n *\n * @param {Object} options\n * @param {Array} [options.productIdentifiers]\n * @param {Number} [options.identifierType]\n * @param {SDK.Services.Commerce.OrderCampaign} options.orderCampaign\n * @param {SDK.Services.Commerce.PriceOrderRequestAddress} [options.address]\n * @note type checks are out of order due to the optionality of some fields\n * @note if `orderCampaign.redemptionCode` is provided then everything else is optional\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'PriceOrderRequest(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get productIdentifiers() {\n return `${this.ctor} productIdentifiers should be an Array of Strings with length`;\n },\n get identifierType() {\n return `${this.ctor} identifierType should be a Number`;\n },\n get orderCampaign() {\n return `${this.ctor} orderCampaign should be an instance of SDK.Services.Commerce.OrderCampaign`;\n },\n get address() {\n return `${this.ctor} address should be an instance of SDK.Services.Commerce.PriceOrderRequestAddress`;\n }\n };\n\n const { productIdentifiers, identifierType, orderCampaign, address } = options;\n\n instanceStrict(\n orderCampaign,\n OrderCampaign,\n errorMessage.orderCampaign,\n InvalidArgumentException\n );\n\n if (Check.assigned(orderCampaign.redemptionCode)) {\n\n if (Check.assigned(productIdentifiers)) {\n array.of.nonEmptyString(productIdentifiers, errorMessage.productIdentifiers, InvalidArgumentException);\n }\n\n if (Check.assigned(identifierType)) {\n number(identifierType, errorMessage.identifierType, InvalidArgumentException);\n }\n\n } else {\n\n array.of.nonEmptyString(productIdentifiers, errorMessage.productIdentifiers, InvalidArgumentException);\n number(identifierType, errorMessage.identifierType, InvalidArgumentException);\n\n }\n\n if (Check.assigned(address)) {\n\n instanceStrict(\n address,\n PriceOrderRequestAddress,\n errorMessage.priceOrderRequestAddress,\n InvalidArgumentException\n );\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Array|undefined}\n * @desc this field is optional if `orderCampaign.redemptionCode` is provided\n *\n */\n this.productIdentifiers = productIdentifiers;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|undefined}\n * @desc this field is optional if `orderCampaign.redemptionCode` is provided\n *\n */\n this.identifierType = identifierType;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.Services.Commerce.OrderCampaign}\n * @note the spec states that we should use `SDK.Commerce.OrderCampaign` but that is a direct copy of\n * `SDK.Services.Commerce.OrderCampaign`\n *\n */\n this.orderCampaign = orderCampaign;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.Services.Commerce.PriceOrderRequestAddress|undefined}\n * @desc this field is always optional and is not dependent on `redemptionCode`\n *\n */\n this.address = address;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/commerce/priceOrderRequest.js","/**\n *\n * @module priceOrderResponse\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\n\nconst OrderCampaign = Services.Commerce.OrderCampaign;\nconst OrderItem = Services.Commerce.OrderItem;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n number,\n string,\n boolean,\n nonEmptyObject,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class PriceOrderResponse\n * @since 4.0.0\n *\n */\nexport default class PriceOrderResponse {\n\n /**\n *\n * @param {Object} options\n * @param {Number} options.orderSubTotal\n * @param {Number} options.orderTaxAmount\n * @param {Number} options.orderTotalAmount\n * @param {Number} options.orderDiscountAmount\n * @param {Array} options.orderItems\n * @param {Number} [options.adjustmentTimeLength]\n * @param {String} [options.adjustmentTimeUnit]\n * @param {Boolean} [options.paymentRequired]\n * @param {SDK.Services.Commerce.OrderCampaign} options.orderCampaign\n * @param {String} [region]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'PriceOrderResponse(options)',\n get options() {\n return `${this.ctor} options should be non-empty Object`;\n },\n get orderSubTotal() {\n return `${this.ctor} options.orderSubTotal should be a Number`;\n },\n get orderTaxAmount() {\n return `${this.ctor} options.orderTaxAmount should be a Number`;\n },\n get orderTotalAmount() {\n return `${this.ctor} options.orderTotalAmount should be a Number`;\n },\n get orderDiscountAmount() {\n return `${this.ctor} options.orderDiscountAmount should be a Number`;\n },\n get orderItems() {\n return `${this.ctor} options.orderItems should be an Array of SDK.Services.Commerce.OrderItem`;\n },\n get adjustmentTimeLength() {\n return `${this.ctor} options.adjustmentTimeLength should be an Array of SDK.Services.Commerce.OrderItem`; // eslint-disable-line max-len\n },\n get adjustmentTimeUnit() {\n return `${this.ctor} options.adjustmentTimeUnit should be an Array of SDK.Services.Commerce.OrderItem`;\n },\n get paymentRequired() {\n return `${this.ctor} options.paymentRequired should be a Boolean`;\n },\n get orderCampaign() {\n return `${this.ctor} options.orderCampaign should be an instance of SDK.Services.Commerce.OrderCampaign`; // eslint-disable-line max-len\n },\n get region() {\n return `${this.ctor} options.region should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { orderSubTotal, orderTaxAmount, orderTotalAmount, orderDiscountAmount, orderItems } = options;\n const { adjustmentTimeLength, adjustmentTimeUnit, paymentRequired, orderCampaign, region } = options;\n\n number(orderSubTotal, errorMessage.orderSubTotal, InvalidArgumentException);\n number(orderTaxAmount, errorMessage.orderTaxAmount, InvalidArgumentException);\n number(orderTotalAmount, errorMessage.orderTotalAmount, InvalidArgumentException);\n number(orderDiscountAmount, errorMessage.orderDiscountAmount, InvalidArgumentException);\n\n array.of.instanceStrict(orderItems, OrderItem, errorMessage.orderItems, InvalidArgumentException);\n\n if (Check.assigned(adjustmentTimeLength)) {\n number(adjustmentTimeLength, errorMessage.orderDiscountAmount, InvalidArgumentException);\n }\n\n if (Check.assigned(adjustmentTimeUnit)) {\n string(adjustmentTimeUnit, errorMessage.adjustmentTimeUnit, InvalidArgumentException);\n }\n\n if (Check.assigned(paymentRequired)) {\n boolean(paymentRequired, errorMessage.paymentRequired, InvalidArgumentException);\n }\n\n instanceStrict(orderCampaign, OrderCampaign, errorMessage.orderCampaign, InvalidArgumentException);\n\n if (Check.assigned(region)) {\n string(region, errorMessage.region, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number}\n *\n */\n this.orderSubTotal = orderSubTotal;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number}\n *\n */\n this.orderTaxAmount = orderTaxAmount;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number}\n *\n */\n this.orderTotalAmount = orderTotalAmount;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n this.orderDiscountAmount = orderDiscountAmount;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Array}\n * @note the spec states that we should use `SDK.Commerce.OrderItem` but that is a direct copy of\n * `SDK.Services.Commerce.OrderItem`\n *\n */\n this.orderItems = orderItems;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|undefined}\n *\n */\n this.adjustmentTimeLength = adjustmentTimeLength;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|undefined}\n *\n */\n this.adjustmentTimeUnit = adjustmentTimeUnit;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean|undefined}\n *\n */\n this.paymentRequired = paymentRequired;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.Services.Commerce.OrderCampaign|undefined}\n * @note the spec states this is `package private` but application developers are expected to use it when\n * constructing `SDK.Commerce.SubmitOrderWithPaymentMethodRequest` so it's marked as `public`\n *\n */\n this.orderCampaign = orderCampaign;\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @type {String|null}\n *\n */\n this.region = region;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/commerce/priceOrderResponse.js","/**\n *\n * @module bitrateType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SDK.QualityOfService.BitrateType\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different types of bitrates\n * @example\n * SDK.QualityOfService.BitrateType.average // 'average'\n *\n * @property {String} average\n * @property {String} peak\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.BitrateType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Average bitrate, AVERAGE-BANDWIDTH from HLS playlist\n *\n */\n average: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Peak bitrate, BANDWIDTH from HLS playlist\n *\n */\n peak: null\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/bitrateType.js","/**\n *\n * @module fairPlayCertificateStorage\n *\n */\n\nimport Services from './../services/entry';\nimport CertificateStorage from './certificateStorage';\n\nconst DrmType = Services.Media.DrmType;\n\n/**\n *\n * @class FairPlayCertificateStorage\n * @extends {CertificateStorage}\n * @desc Provides a storage mechanism for storing a Fairplay Certificate.\n * @since 3.2.0\n *\n */\nexport default class FairPlayCertificateStorage extends CertificateStorage {\n\n /**\n *\n * @param {Sring} clientId\n * @param {String} environment\n * @param {SDK.Services.Storage} storage\n * @param {SDK.Logging.Logger} logger\n *\n */\n constructor(clientId, environment, storage, logger) {\n\n super(DrmType.FAIRPLAY, clientId, environment, storage, logger);\n\n this.logger.log(FairPlayCertificateStorage.name, 'Created.');\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/fairPlayCertificateStorage.js","/**\n *\n * @module certificateStorage\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\n\nconst Storage = Services.Storage;\nconst DrmType = Services.Media.DrmType;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class CertificateStorage\n * @desc Provides a mechanism for storing a certificate.\n * @since 3.2.0\n *\n */\nexport default class CertificateStorage {\n\n /**\n *\n * @param {String} certificateKey\n * @param {String} clientId\n * @param {String} environment\n * @param {SDK.Services.Storage} [storage=null]\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(certificateKey, clientId, environment, storage = null, logger = Logging) {\n\n const errorMessage = {\n ctor: 'CertificateStorage(certificateKey, clientId, environment, storage, logger)',\n get clientId() {\n return `${this.ctor} clientId should be a String with length`;\n },\n get environment() {\n return `${this.ctor} needs environment String`;\n },\n get storage() {\n return `${this.ctor} needs SDK.Services.Storage instance`;\n },\n get certificateType() {\n return `${this.ctor} needs certificateKey String`;\n }\n };\n\n const certificateType = DrmType[certificateKey].toLowerCase();\n\n nonEmptyString(certificateType, errorMessage.certificateType, InvalidArgumentException);\n nonEmptyString(clientId, errorMessage.clientId, InvalidArgumentException);\n nonEmptyString(environment, errorMessage.environment, InvalidArgumentException);\n\n if (Check.assigned(storage)) {\n instanceStrict(storage, Storage, errorMessage.storage, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.certificateType = certificateType;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.clientId = clientId;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.environment = environment;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Storage}\n *\n */\n this.storage = storage || new Storage(logger);\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc cache key scoped under client ID and environment to prevent clashes,\n * maintains the same structure as all other cacheKey(s) in the SDK\n *\n */\n this.cacheKey = `\n __bam_sdk_drm-${this.certificateType}-certificate--${this.clientId}_${this.environment}\n `.replace(/(?:\\n\\s+)/g, '');\n\n }\n\n /**\n *\n * @access private\n * @desc gets the stored certificate if found\n * @returns {Promise|Undefined>}\n *\n */\n getStoredCertificate() {\n\n const { cacheKey, storage } = this;\n\n return storage.get(cacheKey).then((storedCertificate) => {\n\n let certificate;\n\n try {\n\n // needs to be explictly converted to Uint8Array from an Object\n // after being parsed by storage.get\n certificate = new Uint8Array(\n Object.keys(storedCertificate).map((byte) => storedCertificate[byte])\n );\n\n } catch (ex) {\n\n // bam-hls expects undefined in this case, note\n // that this might need to be revisited for other types\n certificate = undefined;\n\n }\n\n return Promise.resolve(certificate);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {ArrayBuffer} certificate\n * @desc attempts to store a certificate via the Storage API\n * @returns {Promise}\n *\n */\n storeCertificate(certificate) {\n\n const { cacheKey, storage } = this;\n\n return storage.set(cacheKey, new Uint8Array(certificate));\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/certificateStorage.js","/**\n *\n * @module entry\n * @desc {SDK.Eligibility} entry point.\n *\n */\n\nimport EligibilityManager from './eligibilityManager';\n\n/**\n *\n * @typedef SDK.Eligibility\n * @type {Object}\n *\n * @property {EligibilityManager} EligibilityManager\n *\n */\n\n/**\n *\n * @type {SDK.Eligibility}\n *\n */\nexport default {\n\n EligibilityManager\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/eligibility/entry.js","/**\n *\n * @module entry\n * @desc {SDK.ExternalActivation} entry point.\n *\n */\n\nimport ExternalActivationManager from './externalActivationManager';\n\n/**\n *\n * @typedef SDK.ExternalActivation\n * @type {Object}\n *\n * @property {ExternalActivationManager} ExternalActivationManager\n *\n */\n\n/**\n *\n * @type {SDK.ExternalActivation}\n *\n */\nexport default {\n\n ExternalActivationManager\n\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/externalActivation/entry.js","/**\n *\n * @module adInsertionStrategy\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef AdInsertionStrategy\n * @type {Object}\n * @since 3.0.0\n * @desc Defines the ad insertion strategy types\n * @example AdInsertionStrategy.CSAI // 'CSAI'\n *\n * @property {String} NONE - Ad tags will not be provided in the playlist. Ads will not play (slate only).\n * @property {String} CSAI - Ad tags will be provided in the playlist. The client\n * is expected to process tags and present ads.\n * @property {String} SSAI - Ad tags will not be provided in the playlist. Ads will be stitched into the main stream.\n *\n */\n\n/**\n *\n * @enum\n * @type {AdInsertionStrategy}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n NONE: null,\n /**\n *\n * @access public\n * @type {String}\n * @desc insertion strategy used for client side ad insertion.\n *\n */\n CSAI: null,\n /**\n *\n * @access public\n * @type {String}\n * @desc insertion strategy used for server side ad insertion.\n *\n */\n SSAI: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/adInsertionStrategy.js","/**\n *\n * @module audioQuality\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef AudioQuality\n * @type {Object}\n * @since 4.2.0\n * @desc An enumeration of possible user-preferred audio qualities. Used to differentiate atmos in playback scenario\n * name\n * @example AudioQuality.atmos // 'atmos'\n *\n * @property {String} atmos\n *\n */\n\n/**\n *\n * @enum\n * @type {AudioQuality}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n * @desc Playlist responses contain atmos audio variants\n *\n */\n atmos: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/audioQuality.js","/**\n *\n * @module playlistType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef PlaylistType\n * @type {Object}\n * @since 2.0.0\n * @desc Enumerates the available playlist types for media.\n * @example PlaylistType.COMPLETE // 'COMPLETE'\n *\n * @property {String} COMPLETE - The \"complete\" playlist type.\n * @property {String} SLIDE - The \"slide\" playlist type.\n *\n */\n\n/**\n *\n * @enum\n * @type {PlaylistType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n COMPLETE: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n SLIDE: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playlistType.js","/**\n *\n * @module mediaAnalyticsKey\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef MediaAnalyticsKey\n * @type {Object}\n * @since 2.0.0\n * @desc Enumerates the known keys for media tracking data.\n * @example MediaAnalyticsKey.Conviva // 'Conviva'\n *\n * @property {String} Conviva - The \"conviva\" key.\n * @property {String} Telemetry - The \"telemetry\" key.\n *\n */\n\n/**\n *\n * @enum\n * @type {MediaAnalyticsKey}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n Conviva: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n Telemetry: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/mediaAnalyticsKey.js","/**\n *\n * @module widevineSecurityLevel\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef WidevineSecurityLevel\n * @type {Object}\n * @since 4.2.0\n * @desc Defines the different levels of widevine security available\n * @example WidevineSecurityLevel.level1 // 'level1'\n *\n * @property {String} level1\n * @property {String} level3\n *\n */\n\n/**\n *\n * @enum\n * @type {WidevineSecurityLevel}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n level1: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n level3: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/widevineSecurityLevel.js","/**\n *\n * @module playbackTelemetryDispatcher\n *\n */\n\nimport uuid from 'uuid';\nimport Check from 'check-types';\n\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Internal from './../internal/entry';\nimport MediaAnalyticsKey from './mediaAnalyticsKey';\nimport MediaItem from './mediaItem';\nimport PlaybackEventListener from './playbackEventListener';\nimport PlaybackTelemetryConfiguration from './playbackTelemetryConfiguration';\nimport PlaybackMetricsProvider from './playbackMetricsProvider';\nimport QualityOfService from './../qualityOfService/entry';\n\nconst Util = Services.Util;\nconst TelemetryManager = Internal.Telemetry.TelemetryManager;\nconst StreamSampleTelemetryEvent = Internal.Telemetry.StreamSampleTelemetryEvent;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst DustUrnReference = Services.Internal.Dust.DustUrnReference;\nconst DustCategory = Services.Internal.Dust.DustCategory;\nconst QualityOfServiceDustUrnReference = DustUrnReference.qualityOfService;\nconst AudioChangedEventData = QualityOfService.AudioChangedEventData;\nconst BitrateChangedEventData = QualityOfService.BitrateChangedEventData;\nconst MasterPlaylistFetchedEventData = QualityOfService.MasterPlaylistFetchedEventData;\nconst MediaSegmentFetchedEventData = QualityOfService.MediaSegmentFetchedEventData;\nconst PlaybackExitedEventData = QualityOfService.PlaybackExitedEventData;\nconst PlaybackInitializedEventData = QualityOfService.PlaybackInitializedEventData;\nconst PlaybackPausedEventData = QualityOfService.PlaybackPausedEventData;\nconst PlaybackReadyEventData = QualityOfService.PlaybackReadyEventData;\nconst PlaybackResumedEventData = QualityOfService.PlaybackResumedEventData;\nconst PlaybackSampledEventData = QualityOfService.PlaybackSampledEventData;\nconst PlaybackSeekedEventData = QualityOfService.PlaybackSeekedEventData;\nconst PlaybackStartedEventData = QualityOfService.PlaybackStartedEventData;\nconst RebufferingEndedEventData = QualityOfService.RebufferingEndedEventData;\nconst RebufferingStartedEventData = QualityOfService.RebufferingStartedEventData;\nconst SubtitleChangedEventData = QualityOfService.SubtitleChangedEventData;\nconst VariantPlaylistFetchedEventData = QualityOfService.VariantPlaylistFetchedEventData;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\nconst ServiceException = Services.Exception.ServiceException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class PlaybackTelemetryDispatcher\n * @extends {SDK.Media.PlaybackEventListener}\n * @desc Handles stream sample and other player telemetry events\n * @since 2.0.0\n *\n */\nexport default class PlaybackTelemetryDispatcher extends PlaybackEventListener {\n\n /**\n *\n * @param {SDK.Media.PlaybackTelemetryConfiguration} playbackTelemetryConfiguration\n * @param {SDK.Internal.Telemetry.TelemetryManager} telemetryManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(playbackTelemetryConfiguration, telemetryManager, logger = Logging) {\n\n const errorMessage = {\n ctor: 'PlaybackTelemetryDispatcher(playbackTelemetryConfiguration, telemetryManager, logger)',\n get playbackTelemetryConfiguration() {\n return `${this.ctor} needs SDK.Media.PlaybackTelemetryConfiguration instance`;\n },\n get telemetryManager() {\n return `${this.ctor} needs SDK.Internal.Telemetry.TelemetryManager instance`;\n }\n };\n\n instanceStrict(playbackTelemetryConfiguration, PlaybackTelemetryConfiguration, errorMessage.playbackTelemetryConfiguration, InvalidArgumentException); // eslint-disable-line max-len\n instanceStrict(telemetryManager, TelemetryManager, errorMessage.telemetryManager, InvalidArgumentException);\n\n super();\n\n /**\n *\n * @access private\n * @type {SDK.Media.PlaybackTelemetryConfiguration}\n *\n */\n this.config = playbackTelemetryConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Internal.Telemetry.TelemetryManager}\n *\n */\n this.manager = telemetryManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.serverData = {};\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.sessionId = null;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.interval = this.config.streamSampleInterval;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.intervalId = -1;\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.isInitialized = false;\n\n /**\n *\n * @access private\n * @type {SDK.Media.MediaItem}\n *\n */\n this.mediaItem = null;\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.isReleased = false;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.qosEnabled = !(Util.getSafe(() => this.manager.qosBuffer.disabled));\n\n this.logger.log(PlaybackTelemetryDispatcher.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Media.PlaybackMetricsProvider} playbackMetricsProvider\n * @param {SDK.Media.MediaItem} mediaItem\n * @desc Initializes the dispatcher with a provider and a mediaItem.\n *\n */\n init(playbackMetricsProvider, mediaItem) {\n\n const errorMessage = {\n method: `${this.constructor.name}.init(playbackMetricsProvider, serverData)`,\n get playbackMetricsProvider() {\n return `${this.method} playbackMetricsProvider should be a SDK.Media.PlaybackMetricsProvider instance`;\n },\n get mediaItem() {\n return `${this.method} mediaItem should be a SDK.Media.MediaItem instance`;\n }\n };\n\n instanceStrict(playbackMetricsProvider, PlaybackMetricsProvider, errorMessage.playbackMetricsProvider, InvalidArgumentException); // eslint-disable-line\n instanceStrict(mediaItem, MediaItem, errorMessage.mediaItem, InvalidArgumentException);\n\n const logger = this.logger;\n const isReleased = this.isReleased;\n\n mediaItem.getTrackingData(MediaAnalyticsKey.Telemetry).then((telemetryTrackingData) => {\n\n if (Check.emptyObject(telemetryTrackingData)) {\n return;\n }\n\n if (isReleased) {\n\n const reasons = [new ErrorReason('', 'The dispatcher has been released and cannot be reused.')];\n const exceptionData = ExceptionReference.common.invalidState;\n\n throw new ServiceException({ reasons, exceptionData });\n\n }\n\n playbackMetricsProvider.addListener(this).then(() => {\n\n this.serverData = telemetryTrackingData;\n\n this.sessionId = Util.getSafe(() => {\n return mediaItem.playbackContext.playbackSessionId;\n }, uuid.v4());\n\n this.isInitialized = true;\n this.mediaItem = mediaItem;\n\n logger.info(PlaybackTelemetryDispatcher.name, 'Initialized.');\n\n }).catch((ex) => {\n\n logger.error(PlaybackTelemetryDispatcher.name, ex);\n\n });\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.PlaybackMetricsProvider} playbackMetricsProvider\n * @desc Cleans up the dispatcher and prevents further use.\n * @returns {Promise}\n *\n */\n async release(playbackMetricsProvider) {\n\n const errorMessage = {\n method: `${this.constructor.name}.release(playbackMetricsProvider)`,\n get playbackMetricsProvider() {\n return `${this.method} needs SDK.Media.PlaybackMetricsProvider instance`;\n }\n };\n\n instanceStrict(playbackMetricsProvider, PlaybackMetricsProvider, errorMessage.playbackMetricsProvider, InvalidArgumentException); // eslint-disable-line max-len\n\n const logger = this.logger;\n\n logger.warn(PlaybackTelemetryDispatcher.name, 'Released.');\n\n if (this.isReleased) {\n return;\n }\n\n try {\n\n await playbackMetricsProvider.removeListener(this);\n\n this.clearStreamInterval();\n\n this.isInitialized = false;\n this.isReleased = true;\n this.mediaItem = null;\n\n } catch (ex) {\n\n logger.error(PlaybackTelemetryDispatcher.name, ex);\n\n throw ex;\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackStartedEventData} args\n *\n */\n onPlaybackStarted(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackStarted(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackStartedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackStartedEventData, errorMessage.args, InvalidArgumentException);\n\n if (this.isInitialized) {\n\n this.logQosEvent(QualityOfServiceDustUrnReference.playbackStarted, args);\n this.startRecordingSamples(provider);\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackPausedEventData} args\n *\n */\n onPlaybackPaused(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackPaused(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackPausedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackPausedEventData, errorMessage.args, InvalidArgumentException);\n\n if (this.isInitialized) {\n\n this.logQosEvent(QualityOfServiceDustUrnReference.playbackPaused, args);\n this.clearStreamInterval();\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackResumedEventData} args\n *\n */\n onPlaybackResumed(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackResumed(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackResumedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackResumedEventData, errorMessage.args, InvalidArgumentException);\n\n if (this.isInitialized) {\n\n this.logQosEvent(QualityOfServiceDustUrnReference.playbackResumed, args);\n this.startRecordingSamples(provider);\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.RebufferingStartedEventData} args\n *\n */\n onRebufferingStarted(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onRebufferingStarted(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.RebufferingStartedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, RebufferingStartedEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.rebufferingStarted, args);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.RebufferingEndedEventData} args\n *\n */\n onRebufferingEnded(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onRebufferingEnded(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.RebufferingEndedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, RebufferingEndedEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.rebufferingEnded, args);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackExitedEventData} args\n *\n */\n onPlaybackExited(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackExited(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackExitedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackExitedEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.playbackExited, args);\n this.clearStreamInterval();\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackInitializedEventData} args\n *\n */\n onPlaybackInitialized(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackInitialized(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackInitializedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackInitializedEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.playbackInitialized, args);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackReadyEventData} args\n *\n */\n onPlaybackReady(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackReady(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackReadyEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackReadyEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.playbackReady, args);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackSeekedEventData} args\n *\n */\n onPlaybackSeeked(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackSeeked(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackSeekedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackSeekedEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.playbackSeeked, args);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.AudioChangedEventData} args\n *\n */\n onAudioChanged(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onAudioChanged(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.AudioChangedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, AudioChangedEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.audioChanged, args);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.SubtitleChangedEventData} args\n *\n */\n onSubtitleChanged(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onSubtitleChanged(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.SubtitleChangedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, SubtitleChangedEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.subtitleChanged, args);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.BitrateChangedEventData} args\n *\n */\n onBitrateChanged(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onBitrateChanged(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.BitrateChangedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, BitrateChangedEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.bitrateChanged, args);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.MasterPlaylistFetchedEventData} args\n *\n */\n onMasterPlaylistFetched(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onMasterPlaylistFetched(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.MasterPlaylistFetchedEventData`; // eslint-disable-line max-len\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, MasterPlaylistFetchedEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.masterPlaylistFetched, args);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.VariantPlaylistFetchedEventData} args\n *\n */\n onVariantPlaylistFetched(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onVariantPlaylistFetched(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.VariantPlaylistFetchedEventData`; // eslint-disable-line max-len\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, VariantPlaylistFetchedEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.variantPlaylistFetched, args);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.MediaSegmentFetchedEventData} args\n *\n */\n onMediaSegmentFetched(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onMediaSegmentFetched(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.MediaSegmentFetchedEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, MediaSegmentFetchedEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.mediaSegmentFetched, args);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackMetricsProvider} provider\n * @param {SDK.QualityOfService.PlaybackSampledEventData} args\n *\n */\n onPlaybackSampled(provider, args) {\n\n const errorMessage = {\n method: `${this.constructor.name}.onPlaybackSampled(provider, args)`,\n get provider() {\n return `${this.method} provider should be an instance of SDK.Media.PlaybackMetricsProvider`;\n },\n get args() {\n return `${this.method} args should be an instance of SDK.QualityOfService.PlaybackSampledEventData`;\n }\n };\n\n instanceStrict(provider, PlaybackMetricsProvider, errorMessage.provider, InvalidArgumentException);\n instanceStrict(args, PlaybackSampledEventData, errorMessage.args, InvalidArgumentException);\n\n this.logQosEvent(QualityOfServiceDustUrnReference.playbackSampled, args);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {PlaybackMetricsProvider} playbackMetricsProvider\n * @returns {Promise}\n *\n */\n startRecordingSamples(playbackMetricsProvider) {\n\n return this.timedRecordStreamSample(playbackMetricsProvider);\n\n }\n\n /**\n *\n * @access private\n * @param {PlaybackMetricsProvider} playbackMetricsProvider\n * @returns {Promise}\n *\n */\n timedRecordStreamSample(playbackMetricsProvider) {\n\n const { isInitialized, interval } = this;\n\n if (!isInitialized) {\n return Promise.resolve();\n }\n\n this.clearStreamInterval();\n\n return this.recordStreamSample(playbackMetricsProvider).then(() => {\n\n this.intervalId = setTimeout(() => {\n\n this.timedRecordStreamSample(playbackMetricsProvider);\n\n }, interval * 1000);\n\n });\n\n\n }\n\n /**\n *\n * @access private\n * @param {PlaybackMetricsProvider} playbackMetricsProvider\n * @returns {Promise}\n *\n */\n recordStreamSample(playbackMetricsProvider) {\n\n const { isInitialized, serverData } = this;\n\n if (!isInitialized) {\n return Promise.resolve();\n }\n\n return playbackMetricsProvider.getPlaybackMetrics().then((metrics) => {\n\n const playbackSessionId = this.sessionId;\n const playhead = metrics.currentPlayhead;\n const bitrate = metrics.currentBitrate;\n const bitrateType = metrics.bitrateType;\n const streamSampleTelemetryEvent = new StreamSampleTelemetryEvent({\n playbackSessionId,\n playhead,\n bitrate,\n serverData\n });\n\n const args = new PlaybackSampledEventData({\n currentBitrate: bitrate,\n playhead,\n bitrateType\n });\n\n this.onPlaybackSampled(playbackMetricsProvider, args);\n\n return this.manager.streamSampleBuffer.postEvent(streamSampleTelemetryEvent);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @desc Clears the stream interval for sending telemetry events\n *\n */\n clearStreamInterval() {\n\n clearTimeout(this.intervalId);\n this.intervalId = -1;\n\n }\n\n /**\n *\n * @access private\n * @param {String} urn\n * @param {Object} eventData\n *\n */\n logQosEvent(urn, eventData) {\n\n const { isInitialized, logger, qosEnabled, mediaItem } = this;\n\n const playbackSessionId = Util.getSafe(() => mediaItem.playbackContext.playbackSessionId);\n\n if (isInitialized && qosEnabled && Check.nonEmptyString(playbackSessionId)) {\n\n const dustLogUtility = new DustLogUtility({\n category: DustCategory.qos,\n logger,\n source: PlaybackTelemetryDispatcher.name,\n urn,\n data: {\n ...eventData,\n playbackSessionId\n }\n });\n\n dustLogUtility.log();\n\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playbackTelemetryDispatcher.js","/**\n *\n * @module playbackTelemetryConfiguration\n *\n */\n\nimport Services from './../services/entry';\n\n/**\n *\n * @class PlaybackTelemetryConfiguration\n * @extends {SDK.Services.Media.StreamSampleConfiguration}\n * @since 2.0.0\n *\n */\nexport default class PlaybackTelemetryConfiguration extends Services.Media.StreamSampleConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playbackTelemetryConfiguration.js","/**\n *\n * @module AuthCookieProvider\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\nimport MediaManager from './mediaManager';\n\nconst Util = Services.Util;\nconst AccessToken = Services.Token.AccessToken;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class AuthCookieProvider\n * @since 3.1.0\n * @desc Defines the contract for providing a key required for decrypting media.\n * @note Facade for {SDK.Media.MediaManager}\n *\n */\nexport default class AuthCookieProvider {\n\n /**\n *\n * @param {MediaManager} provider\n *\n */\n constructor(provider) {\n\n const errorMessage = {\n ctor: 'AuthCookieProvider(provider)',\n get provider() {\n return `${this.ctor} needs SDK.Media.MediaManager instance`;\n }\n };\n\n instanceStrict(provider, MediaManager, errorMessage.provider, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {MediaManager}\n *\n */\n this.provider = provider;\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Token.AccessToken} accessToken - The current access token.\n * @desc Gets the current encryption key in the form of a cookie via the key service.\n * @returns {Promise}\n *\n */\n createCookie(accessToken) {\n\n const errorMessage = {\n method: 'AuthCookieProvider.createCookie(accessToken)',\n get accessToken() {\n return `${this.method} needs AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { provider } = this;\n const cookieEnabled = Util.getSafe(() => provider.config.extras.cookieEnabled);\n\n if (cookieEnabled) {\n\n return provider.createAuthCookie(accessToken);\n\n }\n\n return Promise.resolve();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/authCookieProvider.js","/**\n *\n * @module redeemRetryHandler\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../services/exception/entry';\nimport PurchaseManager from './purchaseManager';\nimport Receipt from './receipt';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class RedeemRetryHandler\n *\n */\nexport default class RedeemRetryHandler {\n\n /**\n *\n * @param {SDK.Purchase.PurchaseManager} provider\n * @param {SDK.Purchase.Receipt} receipt\n *\n */\n constructor(provider, receipt) {\n\n const errorMessage = {\n ctor: 'RedeemRetryHandler(provider, receipt)',\n get provider() {\n return `${this.ctor} needs SDK.Purchase.PurchaseManager instance`;\n },\n get receipt() {\n return `${this.ctor} needs SDK.Purchase.Receipt instancee`;\n }\n };\n\n instanceStrict(provider, PurchaseManager, errorMessage.provider, InvalidArgumentException); // eslint-disable-line\n instanceStrict(receipt, Receipt, errorMessage.receipt, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access public\n * @type {SDK.Purchase.PurchaseManager}\n *\n */\n this.provider = provider;\n\n /**\n *\n * @access public\n * @type {SDK.Purchase.Receipt}\n *\n */\n this.receipt = receipt;\n\n }\n\n /**\n *\n * @access private\n * @desc handles the running of SDK.Purchase.PurchaseManager.redeemPurchases\n * @returns {Promise}\n *\n */\n run() {\n\n const { provider, receipt } = this;\n\n return provider.redeemPurchases(receipt.receiptCredentials, this);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/purchase/redeemRetryHandler.js","/**\n *\n * @module eventSchema\n *\n */\n\nimport Check from 'check-types';\nimport EventValue from './eventValue';\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n object,\n nonEmptyString,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class EventSchema\n * @desc An event payload schema that can be customized by the application developer\n *\n */\nexport default class EventSchema {\n\n /**\n *\n * @param {Object} [values={}]\n *\n */\n constructor(values = {}) {\n\n const errorMessage = {\n ctor: 'EventSchema(values)',\n get values() {\n return `${this.ctor} values should be an Object of `;\n }\n };\n\n if (Check.assigned(values)) {\n\n object(values, errorMessage.values, InvalidArgumentException);\n\n Check.assert(\n Check.all(Object.values(values).map((value) => {\n return instanceStrict(value, EventValue);\n })),\n errorMessage.values,\n InvalidArgumentException\n );\n\n }\n\n /**\n *\n * @private\n * @type {Object|Object}\n *\n */\n this.values = values;\n\n }\n\n /**\n *\n * @access public\n * @param {String} name\n * @param {SDK.UserActivity.EventValue} value\n *\n */\n setValue(name, value) {\n\n const errorMessage = {\n method: 'EventSchema.setValue(name, value)',\n get name() {\n return `${this.method} name should be a String with length`;\n },\n get value() {\n return `${this.method} value should be an instance of SDK.UserActivity.EventValue`;\n }\n };\n\n nonEmptyString(name, errorMessage.name, InvalidArgumentException);\n instanceStrict(value, EventValue, errorMessage.value, InvalidArgumentException);\n\n this.values[name] = value;\n\n }\n\n /**\n *\n * @access public\n * @param {String} name\n *\n */\n removeValue(name) {\n\n const errorMessage = {\n method: 'EventSchema.removeValue(name)',\n get name() {\n return `${this.method} name should be a String with length`;\n }\n };\n\n nonEmptyString(name, errorMessage.name, InvalidArgumentException);\n\n delete this.values[name];\n\n }\n\n /**\n *\n * @access private\n * @param {Object} trackingParameters\n * @desc loops through all of the schemas values and generates a new value\n * @note the JS SDK passes in `trackingParameters` which is a reference to the combined global tracking parameters\n * and what the application developer passed into `UserActivityApi.trackEvent(event, trackingParameters)`\n * it's possible that `generateValue` ignores `trackingParameters` this depends on how the application developer\n * structured this callback when creating a new instance of `EventSchema` - if nothing was provided we ignore it\n * and return the result of this method\n * @note we wrap the function call in a try/catch to protect against possible errors when the application developer\n * provides the callback invoked by `.generateValue()` - the failed keys are added to an array and reported\n * in `UserActivityApi.trackEvent` and are stripped from the payload before sending to `Dust` - not part of the spec\n * @returns {Object}\n *\n */\n generateEventData(trackingParameters) {\n\n const errorMessage = {\n method: 'EventSchema.generateEventData(trackingParameters)',\n get trackingParameters() {\n return `${this.method} trackingParameters should be an Object`;\n }\n };\n\n object(trackingParameters, errorMessage.trackingParameters, InvalidArgumentException);\n\n const { values } = this;\n\n const eventData = {};\n\n for (const item of (Object.keys(values))) {\n\n try {\n eventData[item] = values[item].generateValue(trackingParameters);\n } catch (ex) {\n eventData._failures = Array.isArray(eventData._failures) ?\n eventData._failures.push(ex.stack) :\n eventData._failures = [ex.stack];\n }\n\n }\n\n return eventData;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/eventSchema.js","module.exports = require(\"core-js/library/fn/object/define-property\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/object/define-property.js\n// module id = 193\n// module chunks = 0","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_ie8-dom-define.js\n// module id = 194\n// module chunks = 0","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-define.js\n// module id = 196\n// module chunks = 0","module.exports = require('./_hide');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_redefine.js\n// module id = 197\n// module chunks = 0","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-keys-internal.js\n// module id = 198\n// module chunks = 0","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iobject.js\n// module id = 199\n// module chunks = 0","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_html.js\n// module id = 200\n// module chunks = 0","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-call.js\n// module id = 201\n// module chunks = 0","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_is-array-iter.js\n// module id = 202\n// module chunks = 0","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_species-constructor.js\n// module id = 203\n// module chunks = 0","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_task.js\n// module id = 204\n// module chunks = 0","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_perform.js\n// module id = 205\n// module chunks = 0","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_promise-resolve.js\n// module id = 206\n// module chunks = 0","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-detect.js\n// module id = 207\n// module chunks = 0","/**\n *\n * @module logEvent\n *\n */\n\nimport LogLevel from './logLevel';\n\n/**\n *\n * @class LogEvent\n * @implements {ToString}\n * @implements {JSONSerializable}\n * @desc Represents an event that can be logged by the Logger to its registered ILogSink instances.\n *\n */\nexport default class LogEvent {\n\n /**\n *\n * @param {Boolean} [isPublic=false] A value indicating whether or not the event is publicly visible.\n * @param {LogLevel} level The severity level of the event.\n * @param {String} [source=''] The source object that generated the event.\n * @param {String} [message=''] The message describing the event.\n * @param {Object} [extraData] The dictionary containing any\n * extra data that should be logged with the event.\n *\n */\n constructor(isPublic = false, level, source = '', message = '', extraData) {\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.isPublic = isPublic;\n\n /**\n *\n * @access private\n * @type {LogLevel}\n *\n */\n this.level = (level === undefined ? null : level);\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.source = source;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.message = message;\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.extraData = extraData || {};\n\n }\n\n /**\n *\n * @access private\n * @returns {String}\n *\n */\n toJSON() {\n\n return JSON.stringify({\n isPublic: this.isPublic,\n level: LogLevel[this.level],\n source: this.source,\n message: this.message,\n extraData: this.extraData\n });\n\n }\n\n /**\n *\n * @access private\n * @returns {String}\n *\n */\n toString() {\n\n return `(${LogLevel[this.level]}): ${this.source} - ${this.message}`;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/logging/logEvent.js","/**\n *\n * @module consoleSink\n *\n */\n\n/* eslint no-console: \"off\" */\n/* eslint camelcase: \"off\" */\n\nimport chalk from 'chalk';\nimport ansi_up from 'ansi_up';\nimport LogSink from './../logSink';\nimport LogLevel from './../logLevel';\n\n/**\n *\n * @class ConsoleSink\n * @extends {LogSink}\n * @desc Sink implementation that logs to the JavaScript console.\n *\n */\nexport default class ConsoleSink extends LogSink {\n\n /**\n *\n * @param {LogLevel} logLevel\n *\n */\n constructor(logLevel) {\n\n super(logLevel);\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.isChalkEnabled = chalk.enabled || false;\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.hasConsole = typeof console !== 'undefined';\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.hasWindow = typeof window !== 'undefined';\n\n }\n\n /**\n *\n * @access public\n * @param {LogEvent} logEvent - The event to be logged.\n * @desc prints a given {LogEvent} to the console; provides colored output to\n * help visually aid developers (if supported on a given platform)\n * @returns {Promise}\n *\n */\n log(logEvent) {\n\n if (logEvent.level < this.logLevel) {\n return Promise.resolve();\n }\n\n const { isChalkEnabled, hasConsole, hasWindow, levelMap, transformOutput } = this;\n\n return new Promise((resolve) => {\n\n const level = LogLevel[logEvent.level];\n const message = logEvent.toString();\n\n if (isChalkEnabled) {\n console.log(levelMap(level)(message));\n }\n\n /**\n *\n * @desc for platforms with a window Object, enable chalk manually,\n * and transform the output to something the browser console can understand;\n * otherwise, fall back to a standard console log\n *\n */\n if (!isChalkEnabled) {\n\n if (hasWindow) {\n chalk.enabled = true;\n console.log(...transformOutput(levelMap(level, chalk)(message)));\n }\n\n if (!hasWindow && hasConsole) {\n console.log(message);\n }\n\n }\n\n return resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {String} [level='none']\n * @param {Object} [instance=chalk] optional, chalk instance\n * @desc maps log levels with chalk methods\n * @see https://github.com/chalk/chalk\n *\n */\n levelMap(level = 'none', instance = chalk) {\n\n const map = {\n none: instance.gray,\n trace: instance.green,\n debug: instance.magenta,\n info: instance.blue,\n warn: instance.yellow,\n error: instance.underline.red\n };\n\n return map[level];\n\n }\n\n /**\n *\n * @access private\n * @param {String} input (for example, '\\u001b[31mfoobar\\u001b[39m')\n * @desc transforms a String with ANSI escape codes, exposes an Array that can\n * be consumed by a browser console implementation with the correct {LogLevel}\n * @returns {Array}\n * @see https://github.com/drudru/ansi_up\n * @note the last item in the Array must be an empty String\n *\n */\n transformOutput(input) {\n\n const inputHTML = ansi_up.ansi_to_html(input);\n const startTag = //gi;\n const endTag = /<\\/span>/gi;\n\n if (!startTag.test(inputHTML)) {\n return [\n input\n ];\n }\n\n const inputClean = inputHTML.replace(startTag, '%c').replace(endTag, '%c');\n const inputGroup = startTag.exec(inputHTML);\n const inputColor = inputGroup.pop();\n const inputSpacer = ' ';\n\n return [\n inputClean,\n inputColor,\n inputSpacer\n ];\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/logging/sinks/consoleSink.js","module.exports = require(\"core-js/library/fn/symbol/iterator\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/symbol/iterator.js\n// module id = 210\n// module chunks = 0","module.exports = require(\"core-js/library/fn/symbol\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/symbol.js\n// module id = 211\n// module chunks = 0","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.symbol.js\n// module id = 212\n// module chunks = 0","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gopn-ext.js\n// module id = 213\n// module chunks = 0","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-gopn.js\n// module id = 214\n// module chunks = 0","module.exports = require(\"core-js/library/fn/object/set-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/object/set-prototype-of.js\n// module id = 215\n// module chunks = 0","'use strict';\nmodule.exports = function () {\n\treturn /[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ansi-regex/index.js\n// module id = 216\n// module chunks = 0","/**\n *\n * @module consoleSinkConfiguration\n *\n */\n\n/**\n *\n * @class ConsoleSinkConfiguration\n * @desc A model containing the console sink configuration settings.\n *\n */\nexport default class ConsoleSinkConfiguration {\n\n /**\n *\n * @param {String} logLevel\n *\n */\n constructor(logLevel) {\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.logLevel = logLevel;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/logging/consoleSinkConfiguration.js","/**\n *\n * @module loggingClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from '../services/configuration/serviceClientConfiguration';\n\n/**\n *\n * @class LoggingClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc A model containing the LoggingClient's configuration settings.\n *\n */\nexport default class LoggingClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/logging/loggingClientConfiguration.js","/**\n *\n * @module account\n *\n */\n\nimport Check from 'check-types';\n\nimport UserProfile from './userProfile';\nimport Identity from './identity';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n object,\n array,\n nonEmptyString,\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class Account\n * @desc Represents the account information associated with a given a user.\n *\n */\nexport default class Account {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.accountId - the account ID.\n * @param {UserProfile} options.activeUserProfile\n * @param {Object} [options.attributes={}] - the account attributes which can be modified and saved.\n * @param {Array} [options.identities=[]] an array of associated Identities\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: 'Account(options)',\n get object() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get accountId() {\n return `${this.ctor} options.accountId should be a String with length`;\n },\n get activeUserProfile() {\n return `${this.ctor} options.activeUserProfile should be an instance of SDK.Services.Account.UserProfile`; // eslint-disable-line max-len\n },\n get attributes() {\n return `${this.ctor} options.attributes should be an Object`;\n },\n get identities() {\n return `${this.ctor} options.identities should be an Array`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { accountId, activeUserProfile, attributes = {}, identities = [] } = options;\n\n nonEmptyString(accountId, errorMessage.accountIdError, InvalidArgumentException);\n instanceStrict(activeUserProfile, UserProfile, errorMessage.activeUserProfile, InvalidArgumentException);\n\n if (Check.assigned(attributes)) {\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n }\n\n if (Check.assigned(identities)) {\n array(identities, errorMessage.identities, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets the ID of the account.\n *\n */\n this.accountId = accountId;\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @type {UserProfile}\n *\n */\n this.activeProfile = activeUserProfile;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Gets the attributes of an account that may be returned by the service.\n *\n */\n this.attributes = attributes;\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @type {Array}\n *\n */\n this.identities = identities.map((identity) => new Identity(identity.identityId, identity.providerId));\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/account/account.js","/**\n *\n * @module identity\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class Identity\n * @since 3.5.0\n *\n */\nexport default class Identity {\n\n /**\n *\n * @param {String} identityId\n * @param {String} providerId\n * @throws {InvalidArgumentException}\n *\n */\n constructor(identityId, providerId) {\n\n const errorMessage = {\n ctor: 'Identity(identityId, providerId)',\n get identityId() {\n return `${this.ctor} identityId should be a String with length`;\n },\n get providerId() {\n return `${this.ctor} providerId should be a String with length`;\n }\n };\n\n nonEmptyString(identityId, errorMessage.identityId, InvalidArgumentException);\n nonEmptyString(providerId, errorMessage.providerId, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.identityId = identityId;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.providerId = providerId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/account/identity.js","/**\n *\n * @module exceptionReference\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/Error-Handling.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/Error-Handling.md#error-cases\n *\n */\n\n/**\n *\n * @access public\n * @typedef SDK.Services.Exception.ExceptionReference\n * @type {Object}\n * @since 3.7.0\n * @desc Internal Exception reference.\n *\n * @property {Object} account\n * @property {Object} bamIdentity\n * @property {Object} commerce\n * @property {Object} configuration\n * @property {Object} common\n * @property {Object} global\n * @property {Object} media\n * @property {Object} purchase\n * @property {Object} userProfile\n *\n */\nexport default {\n account: {\n accountNotFound: {\n name: 'AccountNotFoundException',\n message: 'The account was not found.'\n },\n attributeValidation: {\n name: 'AttributeValidationException',\n message: 'One or more attribute was invalid.'\n },\n invalidToken: {\n name: 'InvalidTokenException',\n message: 'External identity token was invalid.'\n },\n linkSubscriptionPartial: {\n name: 'LinkSubscriptionPartialException',\n message: 'Copy partial Error.'\n },\n accountBlocked: {\n name: 'AccountBlockedException',\n message: 'The account is blocked.'\n }\n },\n bamIdentity: {\n attributeUpdateFailed: {\n name: 'AttributeUpdateFailedException',\n message: 'The attributes were not updated due to required field removal or failed validation.'\n },\n authenticationRequired: {\n name: 'AuthenticationRequiredException',\n message: 'User has not authenticated recently and must log in again.'\n },\n invalidCredentials: {\n name: 'InvalidCredentialsException',\n message: 'Incorrect email or password.'\n },\n invalidEmail: {\n name: 'InvalidEmailException',\n message: 'The new email address is invalid.'\n },\n invalidEmailSyntax: {\n name: 'InvalidEmailSyntaxException',\n message: 'Invalid email address syntax'\n },\n invalidPasscode: {\n name: 'InvalidPasscodeException',\n message: 'The passcode is invalid.'\n },\n rateLimited: {\n name: 'RateLimitedException',\n message: 'Too many passcodes have been requested.'\n },\n tokenAlreadyUsed: {\n name: 'TokenAlreadyUsedException',\n message: 'Unable to use the reset token, it has already been used.'\n },\n tokenInvalid: {\n name: 'TokenInvalidException',\n message: 'Unable to reset the password as the reset token is not recognized by the service.'\n },\n updateIdentityConflict: {\n name: 'UpdateIdentityConflictException',\n message: 'The new email address is already taken.'\n },\n invalidPassword: {\n name: 'InvalidPasswordException',\n message: 'The user entered a password that does not meet the minimum password requirements.'\n },\n authenticationBlocked: {\n name: 'AuthenticationBlockedException',\n message: 'The users account should be blocked for being a minor or due to inappropriate behavior.'\n },\n notFound: {\n name: 'IdentityNotFoundException',\n message: 'The requested identity does not exist.'\n }\n },\n commerce: {\n invalidData: {\n name: 'InvalidDataException',\n message: 'Unable to create payment information due to invalid data.'\n },\n invalidZipCode: {\n name: 'InvalidZipCodeException',\n message: 'Invalid or nonexistent zip code.'\n },\n invalidPaymentInformation: {\n name: 'InvalidPaymentInformationException',\n message: 'Unable to submit the order due to invalid payment information.'\n },\n orderTimeout: {\n name: 'OrderTimeoutException',\n message: 'The order could not be verified in a timely fashion. Requests Limit reached for an order.'\n },\n orderProductBlocked: {\n name: 'OrderProductBlockedException',\n message: 'Indicated order was blocked, product is already owned by the user.'\n },\n orderFraud: {\n name: 'OrderFraudException',\n message: 'Indicated order failed to pass fraud prevention checks.'\n },\n orderPaymentDeclined: {\n name: 'OrderPaymentDeclinedException',\n message: 'Indicated order failed due to the payment method being declined.'\n },\n paymentMethodNotFound: {\n name: 'PaymentMethodNotFoundException',\n message: 'Unable to retrieve the payment method as it was not found.'\n },\n unpriceableOrder: {\n name: 'UnpriceableOrderException',\n message: 'Order could not be priced due to issues with the provided data.'\n }\n },\n common: {\n authenticationExpired: {\n name: 'AuthenticationExpiredException',\n message: 'Authentication has expired and needs to be updated before proceeding.'\n },\n invalidState: {\n name: 'InvalidStateException',\n message: 'The operation being attempted is not valid for the current state.'\n },\n locationAcquisition: {\n name: 'LocationAcquisitionException',\n message: 'Unable to get user location due to location service being disabled.'\n },\n locationNotAllowed: {\n name: 'LocationNotAllowedException',\n message: 'User is not allowed to use the app in their current location.'\n },\n network: {\n name: 'NetworkException',\n message: 'Problem with the underlying network connection.'\n },\n temporarilyUnavailable: {\n name: 'TemporarilyUnavailableException',\n message: 'There was a general error while processing the request'\n }\n },\n configuration: {\n configurationNotFound: {\n name: 'ConfigurationNotFoundException',\n message: 'Unable to locate configuration data based on the supplied bootstrap parameter.'\n }\n },\n content: {\n invalidRequest: {\n name: 'InvalidRequestException',\n message: 'The content query request was invalid.'\n }\n },\n eligibility: {\n accountResolution: {\n name: 'AccountResolutionException',\n message: 'The account could not be resolved.'\n },\n huluService: {\n name: 'HuluServiceException',\n message: 'There was a general Hulu error while processing the request'\n },\n invalidRequest: {\n name: 'InvalidRequestException',\n message: 'The eligibility request was invalid.'\n }\n },\n internal: {\n invalidDustConfiguration: {\n name: 'InvalidDustConfigurationException',\n message: 'Dust Configuration is incomplete or incorrect - most likely the application or environment Object is incomplete.' // eslint-disable-line max-len\n }\n },\n media: {\n authorizationExpired: {\n name: 'AuthorizationExpiredException',\n message: 'Could not reauthorize before attempting to access media.'\n },\n blackout: {\n name: 'BlackoutException',\n message: 'The current user is not allowed to access the media for the requested license because they are in a blackout location.' // eslint-disable-line max-len\n },\n drm: {\n name: 'DrmException',\n message: 'General DRM error.'\n },\n keyNotFound: {\n name: 'KeyNotFoundException',\n message: 'The requested license is not available.'\n },\n loginRequired: {\n name: 'LoginRequiredException',\n message: 'The requested media can only be viewed after authentication.'\n },\n mediaNotAllowed: {\n name: 'MediaNotAllowedException',\n message: 'The current user is not allowed to access the media for the requested license.'\n },\n mediaUnavailable: {\n name: 'MediaUnavailableException',\n message: 'The requested media is not available.'\n },\n notEntitled: {\n name: 'NotEntitledException',\n message: 'The user is not entitled to the requested media for the requested license.'\n },\n offlineNotPermitted: {\n name: 'OfflineNotPermittedException',\n message: 'The current user is not allowed to obtain the requested license because the media is not available for offline viewing.' // eslint-disable-line max-len\n },\n kidsModeEnabled: {\n name: 'KidsModeEnabledException',\n message: 'The current user is not allowed to access the media for the requested license due to parental controls restrictions on the account.' // eslint-disable-line max-len\n },\n streamConcurrency: {\n name: 'StreamConcurrencyException',\n message: 'The current user is not allowed to access the media for the requested license because they have too many concurrent streams.' // eslint-disable-line max-len\n },\n thumbnailsNotAvailable: {\n name: 'ThumbnailsNotAvailableException',\n message: 'No thumbnails are available for the given media.'\n }\n },\n purchase: {\n activationFailed: {\n name: 'ActivationFailedException',\n message: 'The service failed to activate the receipt.'\n },\n retryFailed: {\n name: 'RetryFailedException',\n message: 'The SDK exhausted all retry attempts without successfully activating.'\n },\n activationTokenExpired: {\n name: 'ActivationTokenExpiredException',\n message: 'The service failed to activate due to the activation token being expired.'\n },\n activationBadRequest: {\n name: 'ActivationBadRequestException',\n message: 'The service failed to activate due to a bad request.'\n },\n activationForbidden: {\n name: 'ActivationForbiddenException',\n message: 'The service failed to activate due to linking being forbidden.'\n },\n bundleForbidden: {\n name: 'BundleForbiddenException',\n message: 'The service failed to return the ActivationToken for the bundle purchase.'\n }\n },\n userProfile: {\n maximumProfilesReached: {\n name: 'MaximumProfilesReachedException',\n message: 'The maximum number of profiles for the user\\'s account has already been reached.'\n },\n profileRetrieval: {\n name: 'ProfileRetrievalException',\n message: 'The profiles for the user\\'s account could not be retrieved.'\n },\n userProfileDeleteFailed: {\n name: 'UserProfileDeleteFailedException',\n message: 'The userProfile failed to be deleted.'\n },\n userProfileNotFound: {\n name: 'UserProfileNotFoundException',\n message: 'The userProfile was not found.'\n },\n userProfileUpdateFailed: {\n name: 'UserProfileUpdateFailedException',\n message: 'The userProfile update failed.'\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/exception/exceptionReference.js","/**\n *\n * @module accessContext\n * @desc The AccessContext contains tokens which prove the client has\n * been granted authorization to use BAM services. Additionally, content feature\n * responses have the ability to be user and platform specific based on a given AccessContext.\n *\n */\n\nimport RefreshGrant from './refreshGrant';\n\n/**\n *\n * @class AccessContext\n * @extends {RefreshGrant}\n * @implements {AccessToken}\n * @desc Represents the response from exchanging a token and provides\n * access context for subsequent service requests.\n * @note Also acts as a TokenRequestBuilder (via RefreshGrant) to refresh itself.\n *\n */\nexport default class AccessContext extends RefreshGrant {\n\n /**\n *\n * @param {Object} accessContextPackage\n *\n */\n constructor(accessContextPackage) {\n\n const { token, tokenType, refreshToken } = accessContextPackage;\n const { expiresIn, issuedAt, refreshAt } = accessContextPackage;\n\n super(refreshToken);\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The access token issued by the authorization server.\n *\n */\n this.token = token;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc Gets or sets the token type.\n *\n */\n this.tokenType = tokenType;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The lifetime in seconds of the access token from the time that it was issued.\n *\n */\n this.expiresIn = expiresIn || 600;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The timestamp of when the access token was issued (set by the SDK).\n * @note Returns the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.\n *\n */\n this.issuedAt = issuedAt || Date.now();\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The timestamp of when the access token expires (calculated by the SDK).\n * @note Based on issuedAt + expiresIn\n *\n */\n this.expiresAt = new Date(this.issuedAt + (this.expiresIn * 1000)).getTime();\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Determines when the access token should be refreshed.\n * @note Calculated by the SDK using issuedAt, expiredAt, and\n * the refresh threshold set in configuration.\n *\n */\n this.refreshAt = refreshAt || null;\n\n }\n\n /**\n *\n * @access public\n * @desc Convenience method, determines if the access token has expired.\n * @returns {Boolean}\n *\n */\n expired() {\n\n return this.expiresAt < Date.now();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/accessContext.js","/**\n *\n * @module refreshGrant\n *\n */\n\nimport Check from 'check-types';\nimport TokenRequestBuilder from './tokenRequestBuilder';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class RefreshGrant\n * @extends {TokenRequestBuilder}\n * @desc Represents the response from exchanging a token and provides\n * access context for subsequent service requests.\n *\n */\nexport default class RefreshGrant extends TokenRequestBuilder {\n\n /**\n *\n * @param {String} [refreshToken]\n *\n */\n constructor(refreshToken) {\n\n const errorMessage = {\n ctor: 'RefreshGrant(refreshToken)',\n get refreshToken() {\n return `${this.ctor} refreshToken should be a String with length`;\n }\n };\n\n if (Check.assigned(refreshToken)) {\n nonEmptyString(refreshToken, errorMessage.refreshToken, InvalidArgumentException);\n }\n\n super();\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The refresh token, which can be used to obtain a new access token.\n *\n */\n this.refreshToken = refreshToken || '';\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.grantType = 'refresh_token';\n\n /**\n *\n * @desc token data, used in a TokenRequest\n *\n */\n this.tokenData.refresh_token = this.refreshToken;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/refreshGrant.js","/**\n *\n * @module securityAction\n *\n */\n\n/**\n *\n * @typedef SDK.Services.Token.SecurityAction\n * @since 3.10.0\n * @type {Object}\n * @desc Defines the different security actions that are supported.\n *\n * @property {String} other\n * @property {String} changePassword\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.Services.Token.SecurityAction}\n *\n */\nexport default {\n /**\n *\n * @access public\n * @since 3.10.0\n * @type {String}\n *\n */\n other: 'other',\n /**\n *\n * @access public\n * @since 3.10.0\n * @type {String}\n * @note The service response will return 'ChangePassword'\n *\n */\n changePassword: 'ChangePassword'\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/securityAction.js","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 225\n// module chunks = 0","/**\n *\n * @module accountManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class AccountManagerConfiguration\n *\n */\nexport default class AccountManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/accountManagerConfiguration.js","/**\n *\n * @module adEngineManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class AdEngineManagerConfiguration\n *\n */\nexport default class AdEngineManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/adEngineManagerConfiguration.js","/**\n *\n * @module adobeIdentityManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class AdobeIdentityManagerConfiguration\n * @desc Provides configuration information necessary for managing Adobe authentication.\n *\n */\nexport default class AdobeIdentityManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/adobeIdentityManagerConfiguration.js","/**\n *\n * @module bamIdentityManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class BamIdentityManagerConfiguration\n * @desc Provides configuration information necessary for managing BAM authentication.\n *\n */\nexport default class BamIdentityManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/bamIdentityManagerConfiguration.js","/**\n *\n * @module bamIdentityManagerExtrasMap\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\n\nimport InvalidArgumentException from './../../services/exception/entry';\n\nconst {\n instanceStrict\n} = Check.assert;\n\n\n/**\n *\n * @class BamIdentityManagerExtrasMap\n * @desc Provides additional configuration information used by the BamIdentityManager.\n * @note defaults expirationBufferSeconds to 15 if it is not a number.\n *\n */\nexport default class BamIdentityManagerExtrasMap {\n\n /**\n *\n * @param {Number} [expirationBufferSeconds=15]\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(expirationBufferSeconds = 15, logger = Logging) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(expirationBufferSeconds, logger)`,\n get expirationBufferSeconds() {\n return `${this.ctor} expirationBufferSeconds should be a number`;\n },\n get logger() {\n return `${this.ctor} logger should be an instance of SDK.Logging.Logger`;\n }\n };\n\n let bufferSeconds = expirationBufferSeconds;\n\n if (Check.not.number(expirationBufferSeconds)) {\n\n logger.warn(BamIdentityManagerExtrasMap.name, errorMessage.expirationBufferSeconds);\n\n bufferSeconds = 15;\n\n }\n\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.expirationBufferSeconds = bufferSeconds * 1000;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/bamIdentityManagerExtrasMap.js","/**\n *\n * @module bootstrapConfiguration\n *\n */\n\nimport Check from 'check-types';\nimport ConfigurationHostName from './configurationHostName';\nimport Platform from './platform';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n includes,\n boolean,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class BootstrapConfiguration\n * @desc Provides configuration information used by the ConfigurationClient to\n * retrieve the SdkSessionConfiguration necessary to create a SdkSession instance.\n *\n */\nexport default class BootstrapConfiguration {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.clientId\n * @param {String} options.clientApiKey\n * @param {String} options.environment\n * @param {Boolean} [options.debugEnabled=false]\n * @param {String} [options.platform=null]\n * @param {ConfigurationHostName} [options.configHostName=ConfigurationHostName.prod]\n * @param {Object} [options.application] - used to construct `SDK.Services.Internal.Dust.DustApplicationPayload`\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'BootstrapConfiguration(options)',\n get options() {\n return `${this.ctor} should be a non-empty Object`;\n },\n get clientId() {\n return `${this.ctor} clientId should be a String with length`;\n },\n get clientApiKey() {\n return `${this.ctor} clientApiKey should be a String with length`;\n },\n get environment() {\n return `${this.ctor} environment should be a String with length`;\n },\n get debugEnabled() {\n return `${this.ctor} debugEnabled should be a Boolean`;\n },\n get platform() {\n return `${this.ctor} platform should be a String with length`;\n },\n get configHostName() {\n return `${this.ctor} configHostName should be a String with length`;\n },\n get application() {\n return `${this.ctor} application should be non-empty Object`;\n },\n get version() {\n return `${this.ctor} application.version should be a non-empty String`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { clientId, clientApiKey, environment, debugEnabled = false } = options;\n const { platform = null, configHostName = ConfigurationHostName.prod, application } = options;\n\n nonEmptyString(clientId, errorMessage.clientId, InvalidArgumentException);\n nonEmptyString(clientApiKey, errorMessage.clientApiKey, InvalidArgumentException);\n nonEmptyString(environment, errorMessage.environment, InvalidArgumentException);\n boolean(debugEnabled, errorMessage.debugEnabled, InvalidArgumentException);\n\n if (Check.assigned(platform)) {\n\n includes(\n Platform,\n platform,\n errorMessage.platform,\n InvalidArgumentException\n );\n\n }\n\n includes(\n ConfigurationHostName,\n configHostName,\n errorMessage.configHostName,\n InvalidArgumentException\n );\n\n if (Check.assigned(application)) {\n\n nonEmptyObject(application, errorMessage.application, InvalidArgumentException);\n nonEmptyString(application.version, errorMessage.version, InvalidArgumentException);\n\n }\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The client ID to use the SDK against.\n *\n */\n this.clientId = clientId;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The public application key for the SDK.\n *\n */\n this.clientApiKey = clientApiKey;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The environment that the SDK services should run in.\n *\n */\n this.environment = environment;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc A value that indicates whether or not to enable debug mode for the SDK.\n *\n */\n this.debugEnabled = debugEnabled;\n\n /**\n *\n * @access public\n * @type {String|null}\n * @desc The application runtime used for device.\n *\n */\n this.platform = platform;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The configuration host name to use (\"dev\" or \"prod\") - defaults to `ConfigurationHostName.prod`\n *\n */\n this.configHostName = configHostName;\n\n /**\n *\n * @access public\n * @type {Object|undefined}\n * @desc application driven values used for sdk configuration\n *\n */\n this.application = application;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/bootstrapConfiguration.js","/**\n *\n * @module configurationHostName\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef ConfigurationHostName\n * @type {Object}\n *\n * @property {String} dev\n * @property {String} prod\n *\n */\n\n/**\n *\n * @enum\n * @type {ConfigurationHostName}\n * @desc Enum for the possible host name values in the ConfigurationClientConfiguration\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n dev: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n prod: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/configurationHostName.js","/**\n *\n * @module platform\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef Platform\n * @type {Object}\n *\n * @property {String} appletv\n * @property {String} chromecast\n * @property {String} netcast\n * @property {String} panasonictv\n * @property {String} orsay\n * @property {String} sonybravia\n * @property {String} trilithium\n * @property {String} tivo\n * @property {String} tizen\n * @property {String} vizio\n * @property {String} webos\n *\n */\n\n/**\n *\n * @enum\n * @type {Platform}\n * @desc Enum for the possible platform values in the ConfigurationClientConfiguration\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n appletv: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n chromecast: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n netcast: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n panasonictv: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n orsay: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n sonybravia: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n trilithium: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n tivo: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n tizen: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n vizio: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n webos: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/platform.js","/**\n *\n * @module commerceManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class CommerceManagerConfiguration\n * @desc Provides configuration information necessary for managing commerce.\n *\n */\nexport default class CommerceManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/commerceManagerConfiguration.js","/**\n *\n * @module commerceManagerExtrasMap\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport RetryPolicy from './retryPolicy';\n\n/**\n *\n * @class CommerceManagerExtrasMap\n * @desc Provides additional configuration information used by the manager.\n *\n */\nexport default class CommerceManagerExtrasMap {\n\n /**\n *\n * @param {RetryPolicy} retryPolicy\n * @param {Number} [checkOrderStatusDelay=4.0]\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(retryPolicy, checkOrderStatusDelay = 4.0, logger = Logging) {\n\n const errorMessage = {\n ctor: 'CommerceManagerExtrasMap(getOrderStatusRetryPolicy, logger)',\n get retryPolicy() {\n return `${this.ctor} needs RetryPolicy instance`;\n },\n get checkOrderStatusDelay() {\n return `${this.ctor} checkOrderStatusDelay should be a Number`;\n }\n };\n\n\n if (Check.not.instanceStrict(retryPolicy, RetryPolicy)) {\n logger.warn('CommerceManagerExtrasMap', errorMessage.retryPolicy);\n }\n\n if (Check.not.number(checkOrderStatusDelay)) {\n logger.warn('CommerceManagerExtrasMap', errorMessage.checkOrderStatusDelay);\n }\n\n /**\n *\n * @access public\n * @type {RetryPolicy}\n * @desc Gets or sets the retry policy to help drive the retry behavior for service failures.\n *\n */\n this.retryPolicy = retryPolicy;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.checkOrderStatusDelay = checkOrderStatusDelay;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/commerceManagerExtrasMap.js","/**\n *\n * @module dustCategory\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/dust.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/dust.md#categories\n *\n */\n\n/**\n *\n * @access private\n * @typedef SDK.Services.Internal.Dust.DustCategory\n * @type {Object}\n * @since 3.4.0\n * @desc Internal DUST API category reference\n *\n */\n\n/**\n *\n * @type {SDK.Services.Internal.Dust.DustCategory}\n *\n */\nexport default {\n\n api: {\n event: ':event:sdk',\n error: ':error:sdk'\n },\n service: {\n event: ':event:service',\n error: ':error:service'\n },\n glimpse: 'urn:bamtech:dust:bamsdk:event:glimpse',\n personalization: 'urn:bamtech:dust:bamsdk:event:app',\n qos: 'urn:bamtech:dust:bamsdk:event:qos'\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/dust/dustCategory.js","/**\n *\n * @module configurationClientConfiguration\n *\n */\n\nimport Check from 'check-types';\nimport ConfigurationClientExtrasMap from './configurationClientExtrasMap';\nimport ServiceClientConfiguration from './serviceClientConfiguration';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class ConfigurationClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc A model containing the ConfigurationClient's configuration settings.\n *\n */\nexport default class ConfigurationClientConfiguration extends ServiceClientConfiguration {\n\n /**\n *\n * @param {ConfigurationClientExtrasMap} extras\n * @param {String} baseUrl\n * @param {Object} [endpoints={}]\n *\n */\n constructor(extras, baseUrl, endpoints = {}) {\n\n const errorMessage = {\n ctor: 'ConfigurationClientConfiguration(extras, baseUrl, endpoints)',\n get extras() {\n return `${this.ctor} needs ConfigurationClientExtrasMap instance`;\n },\n get baseUrl() {\n return `${this.ctor} baseUrl should be a String with length`;\n }\n };\n\n instanceStrict(\n extras,\n ConfigurationClientExtrasMap,\n errorMessage.extras,\n InvalidArgumentException\n );\n\n nonEmptyString(baseUrl, errorMessage.baseUrl, InvalidArgumentException);\n\n super(baseUrl, endpoints);\n\n /**\n *\n * @access public\n * @type {ConfigurationClientExtrasMap}\n * @desc The object containing the list of configuration host names and corresponding baseUrls\n *\n */\n this.extras = extras;\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/configurationClientConfiguration.js","/**\n *\n * @module configurationClientExtrasMap\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class ConfigurationClientExtrasMap\n * @desc Used to expose the list of configuration host names and corresponding baseUrls\n * in the `ConfigurationClientConfiguration`\n *\n */\nexport default class ConfigurationClientExtrasMap {\n\n /**\n *\n * @param {Object} configHostParams\n *\n */\n constructor(configHostParams) {\n\n const errorMessage = {\n ctor: 'ConfigurationClientExtrasMap(configHostParams)',\n get configHostParams() {\n return `${this.ctor} configHostParams should be a plain Object`;\n }\n };\n\n nonEmptyObject(configHostParams, errorMessage.configHostParams, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc The object containing the list of configuration host names and corresponding baseUrls\n *\n */\n this.configHostParams = configHostParams;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/configurationClientExtrasMap.js","/**\n *\n * @module sdkSessionConfiguration\n *\n */\n\nimport Check from 'check-types';\n\nimport Logging from './../../logging/entry';\n\nimport ServiceDefinitionsConfiguration from './serviceDefinitionsConfiguration';\nimport LoggerConfiguration from './loggerConfiguration';\nimport ConsoleSinkConfiguration from './../../logging/consoleSinkConfiguration';\nimport LoggingClientConfiguration from './../../logging/loggingClientConfiguration';\nimport EnvironmentConfiguration from './../platforms/environmentConfiguration';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyObject,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class SdkSessionConfiguration\n * @desc Provides configuration information necessary to create an SdkSession instance.\n *\n */\nexport default class SdkSessionConfiguration {\n\n /**\n *\n * @param {Object} options\n * @param {Object} options.commonHeaders\n * @param {Object} options.loggerConfiguration\n * @param {Object} options.services\n * @param {SDK.Services.Configuration.EnvironmentConfiguration} options.environmentConfiguration\n * @param {Object} [options.application]\n * @param {SDK.Logging.Logger} [options.logger=Logging]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'SdkSessionConfiguration(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get commonHeaders() {\n return `${this.ctor} commonHeaders should be a non-empty Object`;\n },\n get loggerConfiguration() {\n return `${this.ctor} loggerConfiguration should be a non-empty Object`;\n },\n get services() {\n return `${this.ctor} services should be a non-empty Object`;\n },\n get environmentConfiguration() {\n return `${this.ctor} needs EnvironmentConfiguration instance`;\n },\n get application() {\n return `${this.ctor} application should be a non-empty Object`;\n }\n };\n\n const { commonHeaders, loggerConfiguration, services, environmentConfiguration } = options;\n const { application, logger } = options;\n\n nonEmptyObject(commonHeaders, errorMessage.commonHeaders, InvalidArgumentException);\n nonEmptyObject(loggerConfiguration, errorMessage.loggerConfiguration, InvalidArgumentException);\n nonEmptyObject(services, errorMessage.services, InvalidArgumentException);\n\n instanceStrict(\n environmentConfiguration,\n EnvironmentConfiguration,\n errorMessage.environmentConfiguration,\n InvalidArgumentException\n );\n\n if (Check.assigned(application)) {\n nonEmptyObject(application, errorMessage.application, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Gets or sets the collection of headers to be used for all service requests.\n *\n */\n this.commonHeaders = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.LoggerConfiguration}\n * @desc Gets or sets the configuration information necessary for logging.\n * @note Property matches loggerConfiguration class name instead of using the object name from the config.\n *\n */\n this.loggerConfiguration = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.ServiceDefinitionsConfiguration}\n *\n */\n this.services = {};\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {Object|undefined}\n *\n */\n this.application = application;\n\n /**\n *\n * @desc process plain config Object and create configuration instances\n *\n */\n this.processConfig({\n commonHeaders,\n loggerConfiguration,\n services,\n application\n },\n environmentConfiguration,\n logger);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {Object} config JSON configuration object returned from configuration service endpoint.\n * @param {SDK.Services.Configuration.EnvironmentConfiguration} environmentConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @desc Initialize SdkSessionConfiguration by processing config object.\n *\n */\n processConfig(config, environmentConfiguration, logger = Logging) {\n\n const { commonHeaders, loggerConfiguration, services } = config;\n const { sdkVersion, platform } = environmentConfiguration;\n\n this.commonHeaders = commonHeaders;\n\n const versionHeader = this.commonHeaders['X-BAMSDK-Version'].replace(/\\{SDKVersion\\}/gi, sdkVersion);\n const platformHeader = this.commonHeaders['X-BAMSDK-Platform'].replace(/\\{SDKPlatform\\}/gi, platform);\n\n this.commonHeaders['X-BAMSDK-Version'] = versionHeader;\n this.commonHeaders['X-BAMSDK-Platform'] = platformHeader;\n\n /**\n *\n * @type {SDK.Logging.LoggingClientConfiguration}\n *\n */\n const loggingClientConfiguration = new LoggingClientConfiguration('', {});\n\n /**\n *\n * @type {SDK.Services.Configuration.LoggerConfiguration}\n *\n */\n this.loggerConfiguration = new LoggerConfiguration(\n new ConsoleSinkConfiguration(loggerConfiguration.logLevel),\n loggingClientConfiguration\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.ServiceDefinitionsConfiguration}\n *\n */\n this.services = new ServiceDefinitionsConfiguration(services, this.commonHeaders, logger);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/sdkSessionConfiguration.js","/**\n *\n * @module serviceDefinitionsConfiguration\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Util from './../util/entry';\n\nimport AccountClientConfiguration from './../account/accountClientConfiguration';\nimport AccountManagerConfiguration from './accountManagerConfiguration';\nimport AdEngineManagerConfiguration from './adEngineManagerConfiguration';\nimport AdEngineClientConfiguration from './../media/adEngine/adEngineClientConfiguration';\nimport AdEngineManagerExtrasMap from './adEngineManagerExtrasMap';\nimport AdobeIdentityClientConfiguration from './../identity/adobe/adobeIdentityClientConfiguration';\nimport AdobeIdentityManagerConfiguration from './adobeIdentityManagerConfiguration';\nimport BamIdentityClientConfiguration from './../identity/bam/bamIdentityClientConfiguration';\nimport BamIdentityManagerConfiguration from './bamIdentityManagerConfiguration';\nimport BamIdentityManagerExtrasMap from './bamIdentityManagerExtrasMap';\nimport CommerceClientConfiguration from './../commerce/commerceClientConfiguration';\nimport CommerceClientExtrasMap from './../commerce/commerceClientExtrasMap';\nimport CommerceManagerConfiguration from './commerceManagerConfiguration';\nimport CommerceManagerExtrasMap from './commerceManagerExtrasMap';\nimport ContentClientConfiguration from './../content/contentClientConfiguration';\nimport ContentClientExtrasMap from './../content/contentClientExtrasMap';\nimport ContentManagerConfiguration from './contentManagerConfiguration';\nimport CustomerServiceClientConfiguration from './../customerService/customerServiceClientConfiguration';\nimport CustomerServiceManagerConfiguration from './customerServiceManagerConfiguration';\nimport DeviceClientConfiguration from './../device/deviceClientConfiguration';\nimport DrmClientConfiguration from './../drm/drmClientConfiguration';\nimport DeviceManagerConfiguration from './deviceManagerConfiguration';\nimport DrmManagerConfiguration from './drmManagerConfiguration';\nimport EligibilityClientConfiguration from './../eligibility/eligibilityClientConfiguration';\nimport EligibilityManagerConfiguration from './eligibilityManagerConfiguration';\nimport ExternalActivationClientConfiguration from './../externalActivation/externalActivationClientConfiguration';\nimport ExternalActivationManagerConfiguration from './externalActivationManagerConfiguration';\nimport MediaClientConfiguration from './../media/mediaClientConfiguration';\nimport MediaManagerConfiguration from './mediaManagerConfiguration';\nimport MediaManagerExtrasMap from './mediaManagerExtrasMap';\nimport PaywallManagerConfiguration from './paywallManagerConfiguration';\nimport PaywallClientConfiguration from './../paywall/paywallClientConfiguration';\nimport PurchaseClientConfiguration from './../purchase/purchaseClientConfiguration';\nimport PurchaseManagerConfiguration from './purchaseManagerConfiguration';\nimport PurchaseManagerExtrasMap from './purchaseManagerExtrasMap';\nimport SessionClientConfiguration from './../session/sessionClientConfiguration';\nimport SessionManagerConfiguration from './sessionManagerConfiguration';\nimport SubscriptionClientConfiguration from './../subscription/subscriptionClientConfiguration';\nimport SubscriptionManagerConfiguration from './subscriptionManagerConfiguration';\nimport TelemetryClientConfiguration from './../internal/telemetry/telemetryClientConfiguration';\nimport TelemetryManagerConfiguration from './telemetryManagerConfiguration';\nimport TelemetryManagerExtrasMap from './telemetryManagerExtrasMap';\nimport TokenClientConfiguration from './../token/tokenClientConfiguration';\nimport TokenClientExtrasMap from './../token/tokenClientExtrasMap';\nimport TokenManagerConfiguration from './tokenManagerConfiguration';\nimport TokenManagerExtrasMap from './tokenManagerExtrasMap';\n\nimport RetryPolicy from './retryPolicy';\nimport ServiceEndpoint from './serviceEndpoint';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class ServiceDefinitionsConfiguration\n * @desc Provides configuration information necessary to communicate with services.\n *\n */\nexport default class ServiceDefinitionsConfiguration {\n\n /**\n *\n * @param {Object} services\n * @param {Object} [commonHeaders={}]\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(services, commonHeaders, logger = Logging) {\n\n const errorMessage = {\n ctor: 'ServiceDefinitionsConfiguration(services, commonHeaders, logger)',\n get services() {\n return `${this.ctor} services should be a plain non-empty Object`;\n }\n };\n\n nonEmptyObject(\n services,\n errorMessage.services,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.commonHeaders = commonHeaders;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.AccountManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing accounts.\n *\n */\n this.account = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.AdEngineConfiguration}\n * @desc Gets or sets the configuration information necessary for managing adEngine.\n *\n */\n this.adEngine = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.CustomerServiceManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing customer service.\n *\n */\n this.customerService = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.DeviceManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing device identity.\n *\n */\n this.device = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.DrmManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing Drm capabilities.\n *\n */\n this.drm = {};\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {SDK.Services.Configuration.EligibilityManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing Eligibility.\n *\n */\n this.eligibility = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.AdobeIdentityManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing MVPD authentication.\n *\n */\n this.adobeIdentity = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.BamIdentityManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing BAM authentication.\n *\n */\n this.bamIdentity = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.PurchaseManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing receipt activation.\n *\n */\n this.purchase = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.SessionManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing session.\n *\n */\n this.session = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.SubscriptionManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing subscriptions.\n *\n */\n this.subscription = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.TokenManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing token exchange.\n *\n */\n this.token = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.MediaManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing media.\n *\n */\n this.media = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.TelemetryManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing telemetry.\n *\n */\n this.telemetry = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.ContentManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing content data.\n *\n */\n this.content = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.CommerceManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing commerce.\n *\n */\n this.commerce = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.PaywallManagerConfiguration}\n * @desc Gets or sets the configuration information necessary for managing paywall.\n *\n */\n this.paywall = {};\n\n /**\n *\n * @access public\n * @type {SDK.Services.Configuration.ExternalActivationManagerConfiguration}\n *\n */\n this.externalActivation = {};\n\n /**\n *\n * @desc process services Object and create configuration instances\n *\n */\n this.processServices(services, logger);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {Object} services - JSON services config object returned from configuration service.\n * @param {SDK.Logging.Logger} logger\n * @desc Initialize SdkSessionConfiguration services.\n *\n */\n processServices(services, logger) {\n\n const { account, adEngine, customerService, device, drm, adobeIdentity, bamIdentity, purchase } = services;\n const { session, subscription, token, media, telemetry, content, commerce, paywall } = services;\n const { externalActivation, eligibility } = services;\n\n const { client: contentClient } = content;\n const { endpoints: contentClientEndpoints, extras: contentClientExtras } = contentClient;\n\n const { extras: adEngineExtras } = adEngine;\n const { adTargeting } = adEngineExtras;\n\n const { extras: bamIdentityExtras } = bamIdentity;\n\n const { client: commerceClient, extras: commerceExtras } = commerce;\n const { endpoints: commerceClientEndpoints, extras: commerceClientExtras } = commerceClient;\n const { retryPolicy: commerceAutoRefreshRetryPolicy, checkOrderStatusDelay } = commerceExtras;\n\n const { client: tokenClient, extras: tokenExtras } = token;\n const { endpoints: tokenClientEndpoints, extras: tokenClientExtras } = tokenClient;\n const { autoRefreshRetryPolicy: tokenAutoRefreshRetryPolicy } = tokenExtras;\n\n const { extras: mediaExtras } = media;\n const { extras: purchaseExtras } = purchase;\n const { retryPolicy: purchaseAutoRefreshRetryPolicy } = purchaseExtras;\n const { extras: telemetryExtras } = telemetry;\n\n const purchaseRetryPolicy = new RetryPolicy(\n purchaseAutoRefreshRetryPolicy.retryBasePeriod,\n purchaseAutoRefreshRetryPolicy.retryMultiplier,\n purchaseAutoRefreshRetryPolicy.retryMaxAttempts,\n purchaseAutoRefreshRetryPolicy.retryMaxPeriod,\n logger\n );\n\n const tokenRetryPolicy = new RetryPolicy(\n tokenAutoRefreshRetryPolicy.retryBasePeriod,\n tokenAutoRefreshRetryPolicy.retryMultiplier,\n tokenAutoRefreshRetryPolicy.retryMaxAttempts,\n tokenAutoRefreshRetryPolicy.retryMaxPeriod,\n logger\n );\n\n const commerceRetryPolicy = new RetryPolicy(\n commerceAutoRefreshRetryPolicy.retryBasePeriod,\n commerceAutoRefreshRetryPolicy.retryMultiplier,\n commerceAutoRefreshRetryPolicy.retryMaxAttempts,\n commerceAutoRefreshRetryPolicy.retryMaxPeriod,\n logger\n );\n\n /**\n *\n * @type {SDK.Services.Account.AccountClientConfiguration}\n *\n */\n const accountClientConfiguration = new AccountClientConfiguration(\n Util.getSafe(() => account.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => account.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Media.AdEngine.AdEngineClientConfiguration}\n *\n */\n const adEngineClientConfiguration = new AdEngineClientConfiguration(\n Util.getSafe(() => adEngine.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => adEngine.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Identity.Adobe.AdobeIdentityClientConfiguration}\n *\n */\n const adobeIdentityClientConfiguration = new AdobeIdentityClientConfiguration(\n Util.getSafe(() => adobeIdentity.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => adobeIdentity.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Identity.Bam.BamIdentityClientConfiguration}\n *\n */\n const bamIdentityClientConfiguration = new BamIdentityClientConfiguration(\n Util.getSafe(() => bamIdentity.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => bamIdentity.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Content.ContentClientConfiguration}\n *\n */\n const contentClientConfiguration = new ContentClientConfiguration(\n contentClient.baseUrl,\n this.processEndpoints(contentClientEndpoints),\n new ContentClientExtrasMap(contentClientExtras.urlSizeLimit)\n );\n\n /**\n *\n * @type {SDK.Services.CustomerService.CustomerServiceClientConfiguration}\n *\n */\n const customerServiceClientConfiguration = new CustomerServiceClientConfiguration(\n Util.getSafe(() => customerService.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => customerService.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Device.DeviceClientConfiguration}\n *\n */\n const deviceClientConfiguration = new DeviceClientConfiguration(\n Util.getSafe(() => device.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => device.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Drm.DrmClientConfiguration}\n *\n */\n const drmClientConfiguration = new DrmClientConfiguration(\n Util.getSafe(() => drm.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => drm.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Eligibility.EligibilityClientConfiguration}\n *\n */\n const eligibilityClientConfiguration = new EligibilityClientConfiguration(\n Util.getSafe(() => eligibility.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => eligibility.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.ExternalActivation.ExternalActivationClientConfiguration}\n *\n */\n const externalActivationClientConfiguration = new ExternalActivationClientConfiguration(\n Util.getSafe(() => externalActivation.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => externalActivation.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Media.MediaClientConfiguration}\n *\n */\n const mediaClientConfiguration = new MediaClientConfiguration(\n Util.getSafe(() => media.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => media.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Purchase.PurchaseClientConfiguration}\n *\n */\n const purchaseClientConfiguration = new PurchaseClientConfiguration(\n Util.getSafe(() => purchase.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => purchase.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Session.SessionClientConfiguration}\n *\n */\n const sessionClientConfiguration = new SessionClientConfiguration(\n Util.getSafe(() => session.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => session.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Subscription.SubscriptionClientConfiguration}\n *\n */\n const subscriptionClientConfiguration = new SubscriptionClientConfiguration(\n Util.getSafe(() => subscription.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => subscription.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Internal.Telemetry.TelemetryClientConfiguration}\n *\n */\n const telemetryClientConfiguration = new TelemetryClientConfiguration(\n Util.getSafe(() => telemetry.client.baseUrl),\n this.processEndpoints(Util.getSafe(() => telemetry.client.endpoints))\n );\n\n /**\n *\n * @type {SDK.Services.Token.TokenClientConfiguration}\n *\n */\n const tokenClientConfiguration = new TokenClientConfiguration(\n tokenClient.baseUrl,\n this.processEndpoints(tokenClientEndpoints),\n new TokenClientExtrasMap(\n tokenClientExtras.platformId\n )\n );\n\n /**\n *\n * @type {SDK.Services.Commerce.CommerceClientConfiguration}\n *\n */\n const commerceClientConfiguration = new CommerceClientConfiguration(\n commerceClient.baseUrl,\n this.processEndpoints(commerceClientEndpoints),\n new CommerceClientExtrasMap({\n namespace: Util.getSafe(() => commerceClientExtras.namespace),\n clientId: Util.getSafe(() => commerceClientExtras.clientId),\n namespaceId: Util.getSafe(() => commerceClientExtras.namespaceId),\n createPaymentMethodRegionalEndpoints: Util.getSafe(() =>\n commerceClientExtras.createPaymentMethodRegionalEndpoints\n )\n })\n );\n\n /**\n *\n * @type {SDK.Services.Paywall.PaywallClientConfiguration}\n *\n */\n const paywallClientConfiguration = new PaywallClientConfiguration(\n Util.getSafe(() => paywall.client.baseUrl),\n this.processEndpoints(paywall.client.endpoints)\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.AccountManagerConfiguration}\n *\n */\n this.account = new AccountManagerConfiguration(\n accountClientConfiguration,\n null,\n account.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.AdobeIdentityManagerConfiguration}\n *\n */\n this.adobeIdentity = new AdobeIdentityManagerConfiguration(\n adobeIdentityClientConfiguration,\n null,\n adobeIdentity.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.AdEngineManagerConfiguration}\n *\n */\n this.adEngine = new AdEngineManagerConfiguration(\n adEngineClientConfiguration,\n new AdEngineManagerExtrasMap(\n adTargeting,\n logger\n ),\n adEngine.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.BamIdentityManagerConfiguration}\n *\n */\n this.bamIdentity = new BamIdentityManagerConfiguration(\n bamIdentityClientConfiguration,\n new BamIdentityManagerExtrasMap(\n bamIdentityExtras.expirationBufferSeconds,\n logger\n ),\n bamIdentity.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.ContentManagerConfiguration}\n *\n */\n this.commerce = new CommerceManagerConfiguration(\n commerceClientConfiguration,\n new CommerceManagerExtrasMap(\n commerceRetryPolicy,\n checkOrderStatusDelay,\n logger\n ),\n commerce.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.ContentManagerConfiguration}\n *\n */\n this.content = new ContentManagerConfiguration(\n contentClientConfiguration,\n null,\n content.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.CustomerServiceManagerConfiguration}\n *\n */\n this.customerService = new CustomerServiceManagerConfiguration(\n customerServiceClientConfiguration,\n null,\n customerService.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.DeviceManagerConfiguration}\n *\n */\n this.device = new DeviceManagerConfiguration(\n deviceClientConfiguration,\n null,\n device.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.Drm}\n *\n */\n this.drm = new DrmManagerConfiguration(\n drmClientConfiguration,\n null,\n drm.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.EligibilityManagerConfiguration}\n *\n */\n this.eligibility = new EligibilityManagerConfiguration(\n eligibilityClientConfiguration,\n null,\n eligibility.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.ExternalActivation}\n *\n */\n this.externalActivation = new ExternalActivationManagerConfiguration(\n externalActivationClientConfiguration,\n null\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.MediaManagerConfiguration}\n *\n */\n this.media = new MediaManagerConfiguration(\n mediaClientConfiguration,\n new MediaManagerExtrasMap({\n ...mediaExtras,\n logger\n }),\n media.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.PurchaseManagerConfiguration}\n *\n */\n this.purchase = new PurchaseManagerConfiguration(\n purchaseClientConfiguration,\n new PurchaseManagerExtrasMap(\n purchaseRetryPolicy,\n logger\n ),\n purchase.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.SessionManagerConfiguration}\n *\n */\n this.session = new SessionManagerConfiguration(\n sessionClientConfiguration,\n null,\n session.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.SubscriptionManagerConfiguration}\n *\n */\n this.subscription = new SubscriptionManagerConfiguration(\n subscriptionClientConfiguration,\n null,\n subscription.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.TelemetryManagerConfiguration}\n *\n */\n this.telemetry = new TelemetryManagerConfiguration(\n telemetryClientConfiguration,\n new TelemetryManagerExtrasMap({\n bufferConfigurationDefault: telemetryExtras.bufferConfigurationDefault,\n streamSampleBufferConfiguration: telemetryExtras.streamSampleBufferConfiguration,\n glimpseBufferConfiguration: telemetryExtras.glimpseBufferConfiguration,\n qosBufferConfiguration: telemetryExtras.qosBufferConfiguration,\n fastTrack: telemetryExtras.fastTrack,\n logger\n }),\n telemetry.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.TokenManagerConfiguration}\n *\n */\n this.token = new TokenManagerConfiguration(\n tokenClientConfiguration,\n new TokenManagerExtrasMap(\n tokenExtras.refreshThreshold,\n tokenRetryPolicy,\n tokenExtras.subjectTokenTypes,\n logger\n ),\n token.disabled\n );\n\n /**\n *\n * @type {SDK.Services.Configuration.PaywallManagerConfiguration}\n *\n */\n this.paywall = new PaywallManagerConfiguration(\n paywallClientConfiguration,\n null,\n paywall.disabled\n );\n\n }\n\n /**\n *\n * @access private\n * @param {Object} [endpoints={}]\n * @desc creates service endpoint instance for each item\n * @returns {Object}\n *\n */\n processEndpoints(endpoints = {}) {\n\n const { commonHeaders } = this;\n const serviceEndpoints = {};\n\n Object.keys(endpoints).forEach((key) => {\n\n const endpoint = endpoints[key];\n\n Object.assign(endpoint.headers, commonHeaders);\n\n endpoint.rel = key;\n\n serviceEndpoints[endpoint.rel] = new ServiceEndpoint(\n endpoint.rel,\n endpoint.href,\n endpoint.ttl,\n endpoint.timeout,\n endpoint.templated,\n endpoint.method,\n endpoint.headers\n );\n\n });\n\n return serviceEndpoints;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/serviceDefinitionsConfiguration.js","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptor\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/object/get-own-property-descriptor.js\n// module id = 241\n// module chunks = 0","var _Object$defineProperty = require(\"../core-js/object/define-property\");\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/defineProperty.js\n// module id = 242\n// module chunks = 0","/**\n *\n * @module commerceClientExtrasMap\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from '../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n object\n} = Check;\n\n/**\n *\n * @class CommerceClientExtrasMap\n *\n */\nexport default class CommerceClientExtrasMap {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.namespace\n * @param {String} options.clientId\n * @param {String} options.namespaceId\n * @param {Object} options.createPaymentMethodRegionalEndpoints\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'CommerceClientExtrasMap(options)',\n get namespace() {\n return `${this.ctor} namespace should be a String with length`;\n },\n get clientId() {\n return `${this.ctor} clientId should be a String with length`;\n },\n get namespaceId() {\n return `${this.ctor} namespaceId should be a String with length`;\n },\n get createPaymentMethodRegionalEndpoints() {\n return `${this.ctor} createPaymentMethodRegionalEndpoints should be an Object`;\n }\n };\n\n const { namespace, clientId, namespaceId, createPaymentMethodRegionalEndpoints } = options;\n\n if (Check.assigned(namespace)) {\n nonEmptyString(namespace, errorMessage.namespace, InvalidArgumentException);\n }\n\n if (Check.assigned(clientId)) {\n nonEmptyString(clientId, errorMessage.clientId, InvalidArgumentException);\n }\n\n if (Check.assigned(namespaceId)) {\n nonEmptyString(namespaceId, errorMessage.namespaceId, InvalidArgumentException);\n }\n\n if (Check.assigned(createPaymentMethodRegionalEndpoints)) {\n object(createPaymentMethodRegionalEndpoints, errorMessage.createPaymentMethodRegionalEndpoints, InvalidArgumentException); // eslint-disable-line max-len\n }\n\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.namespace = namespace;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.clientId = clientId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n this.namespaceId = namespaceId;\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.createPaymentMethodRegionalEndpoints = createPaymentMethodRegionalEndpoints;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/commerceClientExtrasMap.js","/**\n *\n * @module contentManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class ContentManagerConfiguration\n * @desc Provides configuration information necessary for managing content data.\n *\n */\nexport default class ContentManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/contentManagerConfiguration.js","/**\n *\n * @module customerServiceManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class CustomerServiceManagerConfiguration\n *\n */\nexport default class CustomerServiceManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/customerServiceManagerConfiguration.js","/**\n *\n * @module deviceManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class DeviceManagerConfiguration\n *\n */\nexport default class DeviceManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/deviceManagerConfiguration.js","/**\n *\n * @module drmManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class DrmManagerConfiguration\n *\n */\nexport default class DrmManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/drmManagerConfiguration.js","/**\n *\n * @module eligibilityManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class EligibilityManagerConfiguration\n *\n */\nexport default class EligibilityManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/eligibilityManagerConfiguration.js","/**\n *\n * @module externalActivationManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class ExternalActivationManagerConfiguration\n *\n */\nexport default class ExternalActivationManagerConfiguration extends ServiceConfiguration {}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/externalActivationManagerConfiguration.js","/**\n *\n * @module mediaManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class MediaManagerConfiguration\n * @desc Provides configuration information necessary for managing media.\n *\n */\nexport default class MediaManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/mediaManagerConfiguration.js","/**\n *\n * @module mediaManagerExtrasMap\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\n\n/**\n *\n * @class MediaManagerExtrasMap\n * @desc Provides additional configuration information used by the manager.\n *\n */\nexport default class MediaManagerExtrasMap {\n\n /**\n *\n * @param {Object} options\n * @param {Object} options.playbackSession\n * @param {String} options.playbackScenarioDefault\n * @param {String} options.restrictedPlaybackScenario\n * @param {Object} options.securityCheckRequirements\n * @param {Boolean} [options.cookieEnabled=false]\n * @param {Boolean} [options.isUhdAllowed=false]\n * @param {SDK.Logging.Logger} [options.logger=Logging]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: 'MediaManagerExtrasMap(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get playbackSession() {\n return `${this.ctor} options.playbackSession should be a non-empty Object`;\n },\n get playbackScenarioDefault() {\n return `${this.ctor} options.playbackScenarioDefault should be a String with length`;\n },\n get restrictedPlaybackScenario() {\n return `${this.ctor} options.restrictedPlaybackScenario should be a String with length`;\n },\n get securityCheckRequirements() {\n return `${this.ctor} options.securityCheckRequirements should be a non-empty Object`;\n },\n get cookieEnabled() {\n return `${this.ctor} options.cookieEnabled should be a Boolean`;\n },\n get isUhdAllowed() {\n return `${this.ctor} options.isUhdAllowed should be a Boolean`;\n }\n };\n\n const { logger = Logging } = options;\n\n if (Check.not.nonEmptyObject(options)) {\n logger.warn(MediaManagerExtrasMap.name, errorMessage.options);\n }\n\n const { playbackSession, playbackScenarioDefault, restrictedPlaybackScenario } = options;\n const { securityCheckRequirements, cookieEnabled = false, isUhdAllowed = false } = options;\n\n // do not assert checks here because we want to let it pass and just log when arguments are not correct\n\n if (Check.not.nonEmptyObject(playbackSession)) {\n logger.warn(MediaManagerExtrasMap.name, errorMessage.playbackSession);\n }\n\n if (Check.not.nonEmptyString(playbackScenarioDefault)) {\n logger.warn(MediaManagerExtrasMap.name, errorMessage.playbackScenarioDefault);\n }\n\n if (Check.not.nonEmptyString(restrictedPlaybackScenario)) {\n logger.warn(MediaManagerExtrasMap.name, errorMessage.restrictedPlaybackScenario);\n }\n\n if (Check.not.nonEmptyObject(securityCheckRequirements)) {\n logger.warn(MediaManagerExtrasMap.name, errorMessage.securityCheckRequirements);\n }\n\n if (Check.not.boolean(cookieEnabled)) {\n logger.warn(MediaManagerExtrasMap.name, errorMessage.cookieEnabled);\n }\n\n if (Check.not.boolean(isUhdAllowed)) {\n logger.warn(MediaManagerExtrasMap.name, errorMessage.isUhdAllowed);\n }\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Gets or sets configuration that applies to each playback session.\n *\n */\n this.playbackSession = playbackSession;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the default playback scenario for the playform.\n *\n */\n this.playbackScenarioDefault = playbackScenarioDefault;\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n this.restrictedPlaybackScenario = restrictedPlaybackScenario;\n\n /**\n *\n * @access public\n * @type {Boolean}\n * @desc Gets or sets flag to enable cookies.\n *\n */\n this.cookieEnabled = !!cookieEnabled;\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {Object}\n *\n */\n this.securityCheckRequirements = securityCheckRequirements;\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {Boolean}\n *\n */\n this.isUhdAllowed = !!isUhdAllowed;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/mediaManagerExtrasMap.js","/**\n *\n * @module paywallManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class PaywallManagerConfiguration\n *\n */\nexport default class PaywallManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/paywallManagerConfiguration.js","/**\n *\n * @module purchaseManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class PurchaseManagerConfiguration\n * @desc Provides configuration information necessary for managing receipt activation.\n *\n */\nexport default class PurchaseManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/purchaseManagerConfiguration.js","/**\n *\n * @module purchaseManagerExtrasMap\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport RetryPolicy from './retryPolicy';\n\n/**\n *\n * @class PurchaseManagerExtrasMap\n * @desc Provides additional configuration information used by the manager.\n *\n */\nexport default class PurchaseManagerExtrasMap {\n\n /**\n *\n * @param {RetryPolicy} retryPolicy\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(retryPolicy, logger = Logging) {\n\n const errorMessage = {\n ctor: 'PurchaseManagerExtrasMap(retryPolicy, logger)',\n get retryPolicy() {\n return `${this.ctor} needs RetryPolicy instance`;\n }\n };\n\n if (Check.not.instanceStrict(retryPolicy, RetryPolicy)) {\n logger.warn('PurchaseManagerExtrasMap', errorMessage.retryPolicy);\n }\n\n /**\n *\n * @access public\n * @type {RetryPolicy}\n * @desc Gets or sets the retry policy to help drive the retry behavior for service failures.\n *\n */\n this.retryPolicy = retryPolicy;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/purchaseManagerExtrasMap.js","/**\n *\n * @module sessionManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class SessionManagerConfiguration\n * @desc Provides configuration information necessary for managing session.\n *\n */\nexport default class SessionManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/sessionManagerConfiguration.js","/**\n *\n * @module subscriptionClientConfiguration\n *\n */\n\nimport ServiceClientConfiguration from './../configuration/serviceClientConfiguration';\n\n/**\n *\n * @class SubscriptionClientConfiguration\n * @extends {ServiceClientConfiguration}\n * @desc Provides configuration information used by the SubscriptionClient.\n *\n */\nexport default class SubscriptionClientConfiguration extends ServiceClientConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionClientConfiguration.js","/**\n *\n * @module subscriptionManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class SubscriptionManagerConfiguration\n * @desc Provides configuration information necessary for managing subscriptions.\n *\n */\nexport default class SubscriptionManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/subscriptionManagerConfiguration.js","/**\n *\n * @module telemetryManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class TelemetryManagerConfiguration\n * @desc Provides configuration information necessary for managing telemetry.\n *\n */\nexport default class TelemetryManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/telemetryManagerConfiguration.js","/**\n *\n * @module telemetryManagerExtrasMap\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Exception from './../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class TelemetryManagerExtrasMap\n * @desc Provides additional configuration information used by the manager.\n *\n */\nexport default class TelemetryManagerExtrasMap {\n\n /**\n *\n * @param {Object} options\n * @param {Number} options.batchLimit\n * @param {Number} options.replyAfterFallback\n * @param {Number} options.minimumBatchSize\n * @param {Object} options.bufferConfigurationDefault\n * @param {Object} [options.glimpseBufferConfiguration=bufferConfigurationDefault]\n * @param {Object} [options.streamSampleBufferConfiguration=bufferConfigurationDefault]\n * @param {Object} [options.qosBufferConfiguration=bufferConfigurationDefault]\n * @param {Object} [options.fastTrack]\n * @param {SDK.Logging.Logger} [options.logger=Logging]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get bufferConfigurationDefault() {\n return `${this.ctor} options.bufferConfigurationDefault should be a Object`;\n },\n get streamSampleBufferConfiguration() {\n return `${this.ctor} options.streamSampleBufferConfiguration should be a Object`;\n },\n get glimpseBufferConfiguration() {\n return `${this.ctor} options.glimpseBufferConfiguration should be a Object`;\n },\n get qosBufferConfiguration() {\n return `${this.ctor} options.qosBufferConfiguration should be a Object`;\n },\n get fastTrack() {\n return `${this.ctor} options.fastTrack should be a Object`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { bufferConfigurationDefault, streamSampleBufferConfiguration } = options;\n const { glimpseBufferConfiguration, qosBufferConfiguration } = options;\n const { fastTrack, logger = Logging } = options;\n\n if (Check.not.object(bufferConfigurationDefault)) {\n logger.warn('TelemetryManagerExtrasMap', errorMessage.bufferConfigurationDefault);\n }\n\n if (Check.not.object(streamSampleBufferConfiguration)) {\n logger.warn('TelemetryManagerExtrasMap', errorMessage.streamSampleBufferConfiguration);\n }\n\n if (Check.not.object(glimpseBufferConfiguration)) {\n logger.warn('TelemetryManagerExtrasMap', errorMessage.glimpseBufferConfiguration);\n }\n\n if (Check.not.object(qosBufferConfiguration)) {\n logger.warn('TelemetryManagerExtrasMap', errorMessage.qosBufferConfiguration);\n }\n\n if (Check.not.object(fastTrack)) {\n logger.warn('TelemetryManagerExtrasMap', errorMessage.fastTrack);\n }\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc default event buffer configuration\n *\n */\n this.bufferConfigurationDefault = bufferConfigurationDefault;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc optional stream buffer configuration\n *\n */\n this.streamSampleBufferConfiguration = streamSampleBufferConfiguration || bufferConfigurationDefault;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc optional Glimpse buffer configuration\n *\n */\n this.glimpseBufferConfiguration = glimpseBufferConfiguration || bufferConfigurationDefault;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc optional QoS buffer configuration\n *\n */\n this.qosBufferConfiguration = qosBufferConfiguration || bufferConfigurationDefault;\n\n /**\n *\n * @access public\n * @since 3.10.0\n * @type {Object|undefined}\n * @desc contains fast track information for events - it is expected to contain a property `urns` which\n * is an `Array` that will contain a list of urn's used to fast track events\n *\n */\n this.fastTrack = fastTrack;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/telemetryManagerExtrasMap.js","/**\n *\n * @module tokenClientExtrasMap\n *\n */\n\n/**\n *\n * @class TokenClientExtrasMap\n *\n */\nexport default class TokenClientExtrasMap {\n\n /**\n *\n * @param {String} platformId\n *\n */\n constructor(platformId) {\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the platform ID.\n *\n */\n this.platformId = platformId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/tokenClientExtrasMap.js","/**\n *\n * @module tokenManagerConfiguration\n *\n */\n\nimport ServiceConfiguration from './serviceConfiguration';\n\n/**\n *\n * @class TokenManagerConfiguration\n *\n */\nexport default class TokenManagerConfiguration extends ServiceConfiguration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/tokenManagerConfiguration.js","/**\n *\n * @module tokenManagerExtrasMap\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport RetryPolicy from './retryPolicy';\n\n/**\n *\n * @class TokenManagerExtrasMap\n * @desc Provides additional configuration information used by the manager.\n *\n */\nexport default class TokenManagerExtrasMap {\n\n /**\n *\n * @param {Number} refreshThreshold\n * @param {RetryPolicy} autoRefreshRetryPolicy\n * @param {Object} [subjectTokenTypes]\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(refreshThreshold, autoRefreshRetryPolicy, subjectTokenTypes, logger = Logging) {\n\n const errorMessage = {\n ctor: 'TokenManagerExtrasMap(refreshThreshold, autoRefreshRetryPolicy, subjectTokenTypes, logger)',\n get refreshThreshold() {\n return `${this.ctor} refreshThreshold should be a Number`;\n },\n get autoRefreshRetryPolicy() {\n return `${this.ctor} needs RetryPolicy instance`;\n },\n get subjectTokenTypes() {\n return `${this.ctor} subjectTokenTypes should be a non-empty Object. Assigning default values`;\n }\n };\n\n if (Check.not.number(refreshThreshold)) {\n logger.warn('TokenManagerExtrasMap', errorMessage.refreshThreshold);\n }\n\n if (Check.not.instanceStrict(autoRefreshRetryPolicy, RetryPolicy)) {\n logger.warn('TokenManagerExtrasMap', errorMessage.autoRefreshRetryPolicy);\n }\n\n if (Check.not.nonEmptyObject(subjectTokenTypes)) {\n logger.warn('TokenManagerExtrasMap', errorMessage.subjectTokenTypes);\n }\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Gets or sets a value that indicates when the access context should be refreshed.\n *\n */\n this.refreshThreshold = refreshThreshold;\n\n /**\n *\n * @access public\n * @type {RetryPolicy}\n * @desc Gets or sets the retry policy to help drive the retry behavior for service failures.\n *\n */\n this.autoRefreshRetryPolicy = autoRefreshRetryPolicy;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Gets or sets the `subject_token_type` values to use with each grant type.\n *\n */\n this.subjectTokenTypes = subjectTokenTypes || this.getDefaultSubjectTokenTypes();\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Default subjectTokenTypes, act as a fallback for the configuration values.\n * @returns {Object}\n *\n */\n getDefaultSubjectTokenTypes() {\n\n return {\n device: 'urn:bamtech:params:oauth:token-type:device',\n account: 'urn:bamtech:params:oauth:token-type:account',\n temporary: 'urn:ietf:params:oauth:token-type:jwt'\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/tokenManagerExtrasMap.js","/**\n *\n * @module serviceEndpoint\n *\n */\n\nimport HttpMethod from './httpMethod';\n\n/**\n *\n * @class ServiceEndpoint\n * @desc Provides configuration information for a service endpoint (i.e. link).\n *\n */\nexport default class ServiceEndpoint {\n\n /**\n *\n * @param {String} rel\n * @param {String} href\n * @param {Integer} ttl\n * @param {Integer} timeout\n * @param {Boolean} templated\n * @param {String} [method=HttpMethod.Get]\n * @param {Object} [headers=null]\n *\n */\n constructor(rel, href, ttl, timeout, templated, method = HttpMethod.GET, headers = null) {\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.rel = rel;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the URL for the service request.\n *\n */\n this.href = href;\n\n /**\n *\n * @access public\n * @type {Integer}\n *\n */\n this.ttl = ttl;\n\n /**\n *\n * @access public\n * @type {Integer}\n * @desc Gets or sets the timeout for the service request.\n *\n */\n this.timeout = timeout;\n\n /**\n *\n * @access public\n * @type {Boolean}\n * @desc Gets or sets a value that indicates whether or not the href requires\n * template string substitution prior to sending the service request.\n *\n */\n this.templated = templated;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the HTTP method that should be used for requests to the endpoint.\n *\n */\n this.method = method;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Gets or sets the headers to append to the service request.\n *\n */\n this.headers = headers;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/serviceEndpoint.js","/**\n *\n * @module LoggerConfiguration\n *\n */\n\n/**\n *\n * @class LoggerConfiguration\n *\n */\nexport default class LoggerConfiguration {\n\n /**\n *\n * @param {ConsoleSinkConfiguration} [console=null]\n * @param {SDK.Logging.LoggingClientConfiguration} [loggingClientConfiguration=null]\n *\n */\n constructor(console, loggingClientConfiguration) {\n\n /**\n *\n * @access public\n * @type {ConsoleSinkConfiguration}\n *\n */\n this.console = console;\n\n /**\n *\n * @access public\n * @type {LoggingClientConfiguration}\n *\n */\n this.client = loggingClientConfiguration;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/loggerConfiguration.js","/**\n *\n * @module tokenClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef TokenClientEndpoint\n * @type {Object}\n *\n * @property {String} exchange\n *\n */\n\n/**\n *\n * @enum\n * @type {TokenClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n exchange: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/tokenClientEndpoint.js","/**\n *\n * @module accountClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef AccountClientEndpoint\n * @type {Object}\n *\n * @property {String} createAccount\n * @property {String} getCurrentAccount\n * @property {String} createAccountGrant\n * @property {String} updateAccountAttributes\n * @property {String} createUserProfile\n * @property {String} deleteUserProfile\n * @property {String} getUserProfile\n * @property {String} getUserProfiles\n * @property {String} setActiveUserProfile\n * @property {String} getActiveUserProfile\n * @property {String} updateUserProfile\n *\n */\n\n/**\n *\n * @enum\n * @type {AccountClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n createAccount: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getCurrentAccount: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n createAccountGrant: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n updateAccountAttributes: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n createUserProfile: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n deleteUserProfile: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getUserProfile: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getUserProfiles: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n setActiveUserProfile: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getActiveUserProfile: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n updateUserProfile: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/account/accountClientEndpoint.js","/**\n *\n * @module createAccountResult\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class CreateAccountResult\n *\n */\nexport default class CreateAccountResult {\n\n /**\n *\n * @param {String} accountId\n * @throws {InvalidArgumentException}\n *\n */\n constructor(accountId) {\n\n const errorMessage = {\n ctor: 'CreateAccountResult(accountId)',\n get accountId() {\n return `${this.ctor} accountId should be a String with length`;\n }\n };\n\n nonEmptyString(accountId, errorMessage.accountId, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.accountId = accountId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/account/createAccountResult.js","/**\n *\n * @module deleteUserProfileResult\n *\n */\n\nimport Check from 'check-types';\n\nimport AccountGrant from './accountGrant';\nimport InvalidArgumentException from '../exception/invalidArgumentException';\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class DeleteUserProfileResult\n * @since 3.5.0\n *\n */\nexport default class DeleteUserProfileResult {\n\n /**\n *\n * @param {AccountGrant} [accountGrant=undefined]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(accountGrant) {\n\n const errorMessage = {\n ctor: 'DeleteUserProfile(accountGrant)',\n get accountGrant() {\n return `${this.ctor} accountGrant should be an instance of SDK.Services.Account.AccountGrant`;\n }\n };\n\n if (Check.assigned(accountGrant)) {\n instanceStrict(accountGrant, AccountGrant, errorMessage.accountGrant, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.accountGrant = accountGrant;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/account/deleteUserProfileResult.js","/**\n *\n * @module updateUserProfileResult\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n boolean\n} = Check.assert;\n\n/**\n *\n * @class UpdateUserProfileResult\n * @since 3.6.0\n *\n */\nexport default class UpdateUserProfileResult {\n\n /**\n *\n * @param {Boolean} [refreshAccessToken=false]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(refreshAccessToken = false) {\n\n const errorMessage = {\n ctor: 'UpdateUserProfileResult(refreshAccessToken)',\n get refreshAccessToken() {\n return `${this.ctor} refreshAccessToken should be a Boolean`;\n }\n };\n\n if (Check.assigned(refreshAccessToken)) {\n boolean(refreshAccessToken, errorMessage.refreshAccessToken, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {Boolean}\n * @desc Indicates that the access token should be refreshed before proceeding.\n *\n */\n this.refreshAccessToken = refreshAccessToken;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/account/updateUserProfileResult.js","/**\n *\n * @module commerceClientEndpoint\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef CommerceClientEndpoint\n * @type {Object}\n *\n * @property {String} priceOrder\n * @property {String} zipCode\n * @property {String} submitOrderWithPaymentMethod\n * @property {String} orderStatus\n * @property {String} createPaymentMethod\n * @property {String} getDefaultPaymentMethod\n * @property {String} getPaymentCard\n * @property {String} createPaymentMethodEast\n * @property {String} createPaymentMethodWest\n *\n */\n\n/**\n *\n * @enum\n * @type {CommerceClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n priceOrder: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n lookupByZipCode: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n submitOrderWithPaymentMethod: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getOrderStatus: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n createPaymentMethod: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getDefaultPaymentMethod: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getPaymentCard: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n createPaymentMethodEast: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n createPaymentMethodWest: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/commerceClientEndpoint.js","/**\n *\n * @module createPaymentMethodRequest\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nimport CreatePaymentMethodPassthroughData from './createPaymentMethodPassthroughData';\n\nconst {\n number,\n nonEmptyString,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class CreatePaymentMethodRequest\n *\n */\nexport default class CreatePaymentMethodRequest {\n\n /**\n *\n * @param {String} creditCardNumber\n * @param {Number} namespaceId\n * @param {SDK.Services.Commerce.CreatePaymentMethodPassthroughData} passthroughData\n * @throws {InvalidArgumentException}\n *\n */\n constructor(creditCardNumber, namespaceId, passthroughData) {\n\n const errorMessage = {\n ctor: 'CreatePaymentMethodRequest(creditCardNumber, namespaceId, passthroughData)',\n get creditCardNumber() {\n return `${this.ctor} creditCardNumber should be a non-empty String`;\n },\n get namespaceId() {\n return `${this.ctor} namespaceId should be a Number`;\n },\n get passthroughData() {\n return `${this.ctor} passthroughData should be an instance of SDK.Services.Commerce.CreatePaymentMethodPassthroughData`; // eslint-disable-line max-len\n }\n };\n\n nonEmptyString(creditCardNumber, errorMessage.creditCardNumber, InvalidArgumentException);\n number(namespaceId, errorMessage.namespaceId, InvalidArgumentException);\n\n instanceStrict(\n passthroughData,\n CreatePaymentMethodPassthroughData,\n errorMessage.passthroughData,\n InvalidArgumentException\n );\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.creditCardNumber = creditCardNumber;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.namespaceId = namespaceId;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Commerce.CreatePaymentMethodPassthroughData}\n *\n */\n this.passthroughData = passthroughData;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/createPaymentMethodRequest.js","/**\n *\n * @module createPaymentMethodPassthroughData\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nimport BillingAddress from './billingAddress';\n\nconst {\n number,\n nonEmptyString,\n nonEmptyObject,\n instanceStrict,\n boolean\n} = Check.assert;\n\n/**\n *\n * @class CreatePaymentMethodPassthroughData\n *\n */\nexport default class CreatePaymentMethodPassthroughData {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.alternateName]\n * @param {Number} options.expiryMonth\n * @param {Number} options.expiryYear\n * @param {String} options.ownerFullName\n * @param {Boolean} options.isDefault\n * @param {Boolean} options.isShared\n * @param {Boolean} options.isReusable\n * @param {SDK.Services.Commerce.BillingAddress} options.billingAddress\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: 'CreatePaymentMethodPassthroughData(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get alternateName() {\n return `${this.ctor} alternate should be a non-empty String`;\n },\n get expiryMonth() {\n return `${this.ctor} expiryMonth should be a Number`;\n },\n get expiryYear() {\n return `${this.ctor} expiryYear should be a Number`;\n },\n get ownerFullName() {\n return `${this.ctor} ownerFullName should be a non-empty String`;\n },\n get isDefault() {\n return `${this.ctor} isDefault should be a Boolean`;\n },\n get isShared() {\n return `${this.ctor} options.isShared should be a Boolean`;\n },\n get isReusable() {\n return `${this.ctor} isReusable should be a Boolean`;\n },\n get billingAddress() {\n return `${this.ctor} billingAddress should be an instance of SDK.Services.Commerce.BillingAddress`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { alternateName, expiryMonth, expiryYear, ownerFullName, isDefault, isShared, isReusable } = options;\n const { billingAddress } = options;\n\n if (Check.assigned(alternateName)) {\n nonEmptyString(alternateName, errorMessage.alternateName, InvalidArgumentException);\n }\n\n number(expiryMonth, errorMessage.expiryMonth, InvalidArgumentException);\n number(expiryYear, errorMessage.expiryYear, InvalidArgumentException);\n nonEmptyString(ownerFullName, errorMessage.ownerFullName, InvalidArgumentException);\n boolean(isDefault, errorMessage.isDefault, InvalidArgumentException);\n boolean(isShared, errorMessage.isShared, InvalidArgumentException);\n boolean(isReusable, errorMessage.isReusable, InvalidArgumentException);\n instanceStrict(billingAddress, BillingAddress, errorMessage.isDefault, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.alternateName = alternateName;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.expiryMonth = expiryMonth;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.expiryYear = expiryYear;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.ownerFullName = ownerFullName;\n\n /**\n *\n * @access public\n * @type {Boolean}\n *\n */\n this.isDefault = isDefault;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean}\n *\n */\n this.isShared = isShared;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @note These strings and their format are defined by the service.\n *\n */\n this.usage = isReusable ? 'multi_use' : 'single_use';\n\n /**\n *\n * @access public\n * @type {SDK.Services.Commerce.BillingAddress}\n *\n */\n this.billingAddress = billingAddress;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/createPaymentMethodPassthroughData.js","/**\n *\n * @module createPaymentResponse\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class CreatePaymentMethodPassthroughData\n *\n */\nexport default class CreatePaymentMethodResponse {\n\n /**\n *\n * @param {String} paymentMethodId\n * @throws {InvalidArgumentException}\n *\n */\n constructor(paymentMethodId) {\n\n const errorMessage = {\n ctor: 'CreatePaymentMethodResponse(paymentMethodId)',\n get paymentMethodId() {\n return `${this.ctor} paymentMethodId shoudld be a String with length`;\n }\n };\n\n nonEmptyString(paymentMethodId, errorMessage.paymentMethodId, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.paymentMethodId = paymentMethodId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/createPaymentMethodResponse.js","/**\n *\n * @module paymentMethodResponse\n *\n */\n\nimport Check from 'check-types';\n\nimport BillingAddress from './billingAddress';\nimport PaymentCardType from './paymentCardType';\nimport PaymentMethodType from './paymentMethodType';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyObject,\n nonEmptyString,\n number,\n instanceStrict,\n boolean\n} = Check.assert;\n\n/**\n *\n * @class PaymentMethodResponse\n *\n */\nexport default class PaymentMethodResponse {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.alternateName]\n * @param {BillingAddress} options.billingAddress\n * @param {String} [options.brand]\n * @param {SDK.Services.Commerce.PaymentCardType} [options.cardType]\n * @param {String} [options.country]\n * @param {Number} [options.expiryMonth]\n * @param {Number} [options.expiryYear]\n * @param {String} [options.firstSix]\n * @param {Boolean} [options.isCorporate]\n * @param {Boolean} options.isDefault\n * @param {String} [options.issuer]\n * @param {String} [options.lastFour]\n * @param {String} [options.ownerFullName]\n * @param {String} options.paymentMethodId\n * @param {String} options.walletId\n * @param {String} options.type\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get alternateName() {\n return `${this.ctor} alternateName should be a non-empty String`;\n },\n get billingAddress() {\n return `${this.ctor} billingAddress should be an instance of SDK.Services.Commerce.BillingAddress`;\n },\n get brand() {\n return `${this.ctor} brand should be a non-empty String`;\n },\n get cardType() {\n return `${this.ctor} cardType should be a non-empty String`;\n },\n get country() {\n return `${this.ctor} country should be a non-empty String`;\n },\n get expiryMonth() {\n return `${this.ctor} expiryMonth should be a Number`;\n },\n get expiryYear() {\n return `${this.ctor} expiryYear should be a Number`;\n },\n get firstSix() {\n return `${this.ctor} firstSix should be a non-empty String`;\n },\n get isCorporate() {\n return `${this.ctor} isCorporate should be a Boolean`;\n },\n get isDefault() {\n return `${this.ctor} isDefault should be a Boolean`;\n },\n get issuer() {\n return `${this.ctor} issuer should be a non-empty String`;\n },\n get lastFour() {\n return `${this.ctor} lastFour should be a non-empty String`;\n },\n get ownerFullName() {\n return `${this.ctor} ownerFullName should be a non-empty String`;\n },\n get paymentMethodId() {\n return `${this.ctor} paymentMethodId should be a non-empty String`;\n },\n get walletId() {\n return `${this.ctor} walletId should be a non-empty String`;\n },\n get type() {\n return `${this.ctor} type should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { alternateName, billingAddress, brand, cardType, country, expiryMonth } = options;\n const { expiryYear, firstSix, isCorporate, isDefault, issuer, lastFour } = options;\n const { ownerFullName, paymentMethodId, walletId, type } = options;\n\n if (Check.assigned(alternateName)) {\n nonEmptyString(alternateName, errorMessage.alternateName, InvalidArgumentException);\n }\n\n instanceStrict(billingAddress, BillingAddress, errorMessage.billingAddress, InvalidArgumentException);\n\n if (Check.assigned(brand)) {\n nonEmptyString(brand, errorMessage.brand, InvalidArgumentException);\n }\n\n if (Check.assigned(cardType)) {\n nonEmptyString(cardType, errorMessage.cardType, InvalidArgumentException);\n }\n\n if (Check.assigned(country)) {\n nonEmptyString(country, errorMessage.country, InvalidArgumentException);\n }\n\n if (Check.assigned(expiryMonth)) {\n number(expiryMonth, errorMessage.expiryMonth, InvalidArgumentException);\n }\n\n if (Check.assigned(expiryYear)) {\n number(expiryYear, errorMessage.expiryYear, InvalidArgumentException);\n }\n\n if (Check.assigned(firstSix)) {\n nonEmptyString(firstSix, errorMessage.firstSix, InvalidArgumentException);\n }\n\n if (Check.assigned(isCorporate)) {\n boolean(isCorporate, errorMessage.isCorporate, InvalidArgumentException);\n }\n\n boolean(isDefault, errorMessage.isDefault, InvalidArgumentException);\n\n if (Check.assigned(issuer)) {\n nonEmptyString(issuer, errorMessage.issuer, InvalidArgumentException);\n }\n\n if (Check.assigned(lastFour)) {\n nonEmptyString(lastFour, errorMessage.lastFour, InvalidArgumentException);\n }\n\n if (Check.assigned(ownerFullName)) {\n nonEmptyString(ownerFullName, errorMessage.ownerFullName, InvalidArgumentException);\n }\n\n nonEmptyString(paymentMethodId, errorMessage.paymentMethodId, InvalidArgumentException);\n nonEmptyString(walletId, errorMessage.walletId, InvalidArgumentException);\n\n if (Check.assigned(type)) {\n nonEmptyString(type, errorMessage.type, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.alternateName = alternateName;\n\n /**\n *\n * @access public\n * @type {BillingAddress}\n *\n */\n this.billingAddress = billingAddress;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.brand = brand;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Commerce.PaymentCardType|undefined}\n *\n */\n this.cardType = PaymentCardType[cardType];\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.country = country;\n\n /**\n *\n * @access public\n * @type {Number|undefined}\n *\n */\n this.expiryMonth = expiryMonth;\n\n /**\n *\n * @access public\n * @type {Number|undefined}\n *\n */\n this.expiryYear = expiryYear;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.firstSix = firstSix;\n\n /**\n *\n * @access public\n * @type {Boolean|undefined}\n *\n */\n this.isCorporate = isCorporate;\n\n /**\n *\n * @access public\n * @type {Boolean}\n *\n */\n this.isDefault = isDefault;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.issuer = issuer;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.lastFour = lastFour;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.ownerFullName = ownerFullName;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.paymentMethodId = paymentMethodId;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.walletId = walletId;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n * @desc The type of payment method. `\"PaymentCard\"` for a Credit Card, `\"PayPalExpress\"` for PayPal,\n * `\"IDealPayment\"` for IDeal.\n *\n */\n this.type = type;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/paymentMethodResponse.js","/**\n *\n * @module paymentCardType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef PaymentCardType\n * @type {Object}\n * @desc An enumeration of recognized payment methods.\n * @note These values are returned from the service in UPPERCASE.\n *\n * @property {String} DEBIT\n * @property {String} CREDIT\n *\n */\n\n/**\n*\n* @enum\n* @type {PaymentCardType}\n*\n*/\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n DEBIT: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n CREDIT: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/paymentCardType.js","/**\n *\n * @module paymentMethodType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef PaymentMethodType\n * @type {Object}\n * @desc An enumeration of recognized payment methods.\n * @note These values are returned from the service in PascalCase\n *\n * @property {String} PaymentCard\n * @property {String} Other\n *\n */\n\n/**\n*\n* @enum\n* @type {PaymentMethodType}\n*\n*/\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n PaymentCard: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n Other: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/paymentMethodType.js","/**\n *\n * @module priceOrderRequest\n *\n */\n\nimport Check from 'check-types';\n\nimport PriceOrderRequestAddress from './priceOrderRequestAddress';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n number,\n instanceStrict,\n array,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class PriceOrderRequest\n *\n */\nexport default class PriceOrderRequest {\n\n /**\n *\n * @param {Object} options\n * @param {Array} [options.productIdentifiers]\n * @param {Number} [options.identifierType]\n * @param {String} [options.campaignCode]\n * @param {String} [options.voucherCode]\n * @param {SDK.Services.Commerce.PriceOrderRequestAddress} [options.address]\n * @param {String} [options.redemptionCode]\n * @note type checks are out of order due to the optionality of some fields\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'SDK.Services.Commerce.PriceOrderRequest(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get productIdentifiers() {\n return `${this.ctor} productIdentifiers should be an Array of Strings with length`;\n },\n get identifierType() {\n return `${this.ctor} identifierType should be a Number`;\n },\n get campaignCode() {\n return `${this.ctor} campaignCode should be a String with length`;\n },\n get voucherCode() {\n return `${this.ctor} voucherCode should be a String with length`;\n },\n get address() {\n return `${this.ctor} address should be an instance of SDK.Services.Commerce.PriceOrderRequestAddress`;\n },\n get redemptionCode() {\n return `${this.ctor} redemptionCode should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { productIdentifiers, identifierType, campaignCode, voucherCode, address, redemptionCode } = options;\n\n if (Check.assigned(redemptionCode)) {\n\n nonEmptyString(redemptionCode, errorMessage.redemptionCode, InvalidArgumentException);\n\n if (Check.assigned(campaignCode)) {\n nonEmptyString(campaignCode, errorMessage.campaignCode, InvalidArgumentException);\n }\n\n if (Check.assigned(voucherCode)) {\n nonEmptyString(voucherCode, errorMessage.voucherCode, InvalidArgumentException);\n }\n\n if (Check.assigned(productIdentifiers)) {\n array.of.nonEmptyString(productIdentifiers, errorMessage.productIdentifiers, InvalidArgumentException);\n }\n\n if (Check.assigned(identifierType)) {\n number(identifierType, errorMessage.identifierType, InvalidArgumentException);\n }\n\n } else {\n\n nonEmptyString(campaignCode, errorMessage.campaignCode, InvalidArgumentException);\n nonEmptyString(voucherCode, errorMessage.voucherCode, InvalidArgumentException);\n array.of.nonEmptyString(productIdentifiers, errorMessage.productIdentifiers, InvalidArgumentException);\n number(identifierType, errorMessage.identifierType, InvalidArgumentException);\n\n }\n\n if (Check.assigned(address)) {\n\n instanceStrict(\n address,\n PriceOrderRequestAddress,\n errorMessage.priceOrderRequestAddress,\n InvalidArgumentException\n );\n\n }\n\n /**\n *\n * @access public\n * @type {Array|undefined}\n * @note this field is optional if `orderCampaign.redemptionCode` is provided\n *\n */\n this.productIdentifiers = productIdentifiers;\n\n /**\n *\n * @access public\n * @type {Number|undefined}\n * @note this field is optional if `orderCampaign.redemptionCode` is provided\n *\n */\n this.identifierType = identifierType;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n * @note this field is optional if `orderCampaign.redemptionCode` is provided\n *\n */\n this.campaignCode = campaignCode;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n * @note this field is optional if `orderCampaign.redemptionCode` is provided\n *\n */\n this.voucherCode = voucherCode;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Commerce.PriceOrderRequestAddress|undefined}\n * @note this field is always optional and is not dependent on `redemptionCode`\n *\n */\n this.address = address;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.redemptionCode = redemptionCode;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/priceOrderRequest.js","/**\n *\n * @module priceOrderRequestAddress\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n object,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class PriceOrderRequestAddress\n * @note the spec states that all of these properties are required however they are actually optional since this entire\n * model is optional\n *\n */\nexport default class PriceOrderRequestAddress {\n\n /**\n *\n * @param {Object} [options]\n * @param {String} [options.zipCode]\n * @param {String} [options.city]\n * @param {String} [options.state]\n * @param {String} [options.country]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: 'PriceOrderRequestAddress(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get zipCode() {\n return `${this.ctor} zipCode should be a String with length`;\n },\n get city() {\n return `${this.ctor} city should be a String with length`;\n },\n get state() {\n return `${this.ctor} state should be a String with length`;\n },\n get country() {\n return `${this.ctor} country should be a String with length`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { zipCode, city, state, country } = options;\n\n if (Check.assigned(zipCode)) {\n nonEmptyString(zipCode, errorMessage.zipCode, InvalidArgumentException);\n }\n\n if (Check.assigned(city)) {\n nonEmptyString(city, errorMessage.city, InvalidArgumentException);\n }\n\n if (Check.assigned(state)) {\n nonEmptyString(state, errorMessage.state, InvalidArgumentException);\n }\n\n if (Check.assigned(country)) {\n nonEmptyString(country, errorMessage.country, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.zipCode = zipCode;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.city = city;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.state = state;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.country = country;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/priceOrderRequestAddress.js","/**\n *\n * @module priceOrderResponse\n *\n */\n\nimport Check from 'check-types';\n\nimport OrderItem from './orderItem';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n array,\n number,\n boolean,\n nonEmptyObject,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class PriceOrderResponse\n *\n */\nexport default class PriceOrderResponse {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.region]\n * @param {Number} options.orderSubTotal\n * @param {Number} options.orderTaxAmount\n * @param {Number} options.orderTotalAmount\n * @param {Number} options.orderDiscountAmount\n * @param {Array} options.orderItems\n * @param {Number} [options.adjustmentTimeLength]\n * @param {String} [options.adjustmentTimeUnit]\n * @param {String} options.campaignCode\n * @param {String} options.voucherCode\n * @param {String} [options.redemptionCode]\n * @param {Boolean} [options.paymentRequired]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'PriceOrderResponse(options)',\n get options() {\n return `${this.ctor} options should be non-empty Object`;\n },\n get region() {\n return `${this.ctor} options.region should be a String with length`;\n },\n get orderSubTotal() {\n return `${this.ctor} options.orderSubTotal should be a Number`;\n },\n get orderTaxAmount() {\n return `${this.ctor} options.orderTaxAmount should be a Number`;\n },\n get orderTotalAmount() {\n return `${this.ctor} options.orderTotalAmount should be a Number`;\n },\n get orderDiscountAmount() {\n return `${this.ctor} options.orderDiscountAmount should be a Number`;\n },\n get orderItems() {\n return `${this.ctor} options.orderItems should be an Array of SDK.Services.Commerce.OrderItem`;\n },\n get adjustmentTimeLength() {\n return `${this.ctor} options.adjustmentTimeLength should be a Number`;\n },\n get adjustmentTimeUnit() {\n return `${this.ctor} options.adjustmentTimePeriod should be a String with length`;\n },\n get campaignCode() {\n return `${this.ctor} options.campaignCode should be a String with length`;\n },\n get voucherCode() {\n return `${this.ctor} options.voucherCode should be a String with length`;\n },\n get paymentRequired() {\n return `${this.ctor} options.paymentRequired should be a Boolean`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { region = null, orderSubTotal, orderTaxAmount, orderTotalAmount, orderDiscountAmount } = options;\n const { orderItems, adjustmentTimeLength, adjustmentTimeUnit, campaignCode, voucherCode } = options;\n const { redemptionCode, paymentRequired } = options;\n\n if (Check.assigned(region)) {\n nonEmptyString(region, errorMessage.region, InvalidArgumentException);\n }\n\n number(orderSubTotal, errorMessage.orderSubTotal, InvalidArgumentException);\n number(orderTaxAmount, errorMessage.orderTaxAmount, InvalidArgumentException);\n number(orderTotalAmount, errorMessage.orderTotalAmount, InvalidArgumentException);\n number(orderDiscountAmount, errorMessage.orderDiscountAmount, InvalidArgumentException);\n array.of.instanceStrict(orderItems, OrderItem, errorMessage.orderItems, InvalidArgumentException);\n\n if (Check.assigned(adjustmentTimeLength)) {\n number(adjustmentTimeLength, errorMessage.orderDiscountAmount, InvalidArgumentException);\n }\n\n if (Check.assigned(adjustmentTimeUnit)) {\n nonEmptyString(adjustmentTimeUnit, errorMessage.adjustmentTimeUnit, InvalidArgumentException);\n }\n\n nonEmptyString(campaignCode, errorMessage.campaignCode, InvalidArgumentException);\n nonEmptyString(voucherCode, errorMessage.voucherCode, InvalidArgumentException);\n\n if (Check.assigned(redemptionCode)) {\n nonEmptyString(redemptionCode, errorMessage.redemptionCode, InvalidArgumentException);\n }\n\n if (Check.assigned(paymentRequired)) {\n boolean(paymentRequired, errorMessage.paymentRequired, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {String|null}\n * @desc Contains the region which is to be used when calling createPaymentMethod to lookup which\n * createPaymentMethod endpoint to use.\n * @note This value comes from the `x-bamtech-region` response header when calling the `priceEngineService`.\n *\n */\n this.region = region;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.orderSubTotal = orderSubTotal;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.orderTaxAmount = orderTaxAmount;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.orderTotalAmount = orderTotalAmount;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number}\n *\n */\n this.orderDiscountAmount = orderDiscountAmount;\n\n /**\n *\n * @access public\n * @type {Array}\n *\n */\n this.orderItems = orderItems;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|undefined}\n *\n */\n this.adjustmentTimeLength = adjustmentTimeLength;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|undefined}\n *\n */\n this.adjustmentTimeUnit = adjustmentTimeUnit;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n this.campaignCode = campaignCode;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n this.voucherCode = voucherCode;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|undefined}\n *\n */\n this.redemptionCode = redemptionCode;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean|undefined}\n *\n */\n this.paymentRequired = paymentRequired;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/priceOrderResponse.js","/**\n *\n * @module queryOrderResponse\n *\n */\n\nimport Check from 'check-types';\n\nimport OrderStatus from './orderStatus';\nimport StrongCustomerAuthRequirements from './strongCustomerAuthRequirements';\n\nimport InvalidArgumentException from '../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n nonEmptyObject,\n instance,\n includes\n} = Check.assert;\n\n/**\n *\n * @class QueryOrderResponse\n * @since 4.0.0\n * @desc unique information about an order\n *\n */\nexport default class QueryOrderResponse {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.guid\n * @param {SDK.Services.Commerce.OrderStatus} options.orderStatus\n * @param {SDK.Services.Commerce.StrongCustomerAuthRequirements} [options.strongCustomerAuth]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get guid() {\n return `${this.ctor} options.guid should be a String with length`;\n },\n get orderStatus() {\n return `${this.ctor} options.orderStatus be a member of SDK.Services.Commerce.OrderStatus`;\n },\n get strongCustomerAuth() {\n return `${this.ctor} options.strongCustomerAuth should be an instance of SDK.Services.Commerce.StrongCustomerAuthRequirements`; // eslint-disable-line max-len\n }\n };\n\n const { guid, orderStatus, strongCustomerAuth } = options;\n\n const orderStatusKey = Object.keys(OrderStatus).find((key) => OrderStatus[key] === orderStatus);\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n nonEmptyString(guid, errorMessage.guid, InvalidArgumentException);\n includes(Object.keys(OrderStatus), orderStatusKey, errorMessage.orderStatus, InvalidArgumentException);\n\n if (Check.assigned(strongCustomerAuth)) {\n instance(strongCustomerAuth, StrongCustomerAuthRequirements, errorMessage.strongCustomerAuth, InvalidArgumentException); // eslint-disable-line max-len\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Represents unique identifier of an order, internally referred as guid\n *\n */\n this.guid = guid;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Represents status of an order\n * @note the JS SDK stores the associated key not the value\n *\n */\n this.orderStatus = orderStatusKey;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.Services.Commerce.StrongCustomerAuthRequirements}\n * @desc Represents additional information required if 3DS challenge is required\n * @note This property will be returned as `sca` in the json response\n *\n */\n this.strongCustomerAuth = strongCustomerAuth;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/queryOrderResponse.js","/**\n *\n * @module orderStatus\n * @see https://github.bamtech.co/mercury/order-status/blob/master/docs/design/OrderStatus.md\n *\n */\n\n/**\n *\n * @since 4.0.0\n * @typedef OrderStatus\n * @type {Object}\n * @desc represents the status of an order\n *\n * @property {String} paymentOk\n * @property {String} temporaryDirectAccess\n * @property {String} authOk\n * @property {String} success\n * @property {String} redirect\n *\n * @note the service returns values that do not match the SDK keys in the spec\n *\n */\n\nexport default {\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Order processed successfully and user is given subscription/entitlement. In this case user got charged\n * either full amount or discounted amount.\n *\n */\n paymentOk: 'PAYMENT_OK',\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc User is given TDA (Temporary Direct Access) when there was hiccup in one of the services\n * (internal or external) in order processing flow.\n *\n */\n temporaryDirectAccess: 'TDA',\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Order processed successfully and user is given subscription/entitlement (except in case of payment update\n * where there is no subscription/entitlement). AUTH OK could be in case of either free trial or payment update.*\n *\n */\n authOk: 'AUTH_OK',\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Order processed successfully.\n *\n */\n success: 'SUCCESS',\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc User needs to be redirected to external sites for payment validation or verification (3DS, IDEAL).\n *\n */\n redirect: 'REDIRECT'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/orderStatus.js","/**\n *\n * @module submitOrderWithPaymentRequest\n *\n */\n\nimport Check from 'check-types';\n\nimport AffiliateTracking from './affiliateTracking';\nimport LineItem from './lineItem';\nimport OrderCampaign from './orderCampaign';\nimport StrongCustomerAuth from './strongCustomerAuth';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n instanceStrict,\n string,\n nonEmptyObject,\n array\n} = Check.assert;\n\n/**\n *\n * @class SubmitOrderWithPaymentRequest\n *\n */\nexport default class SubmitOrderWithPaymentRequest {\n\n /**\n *\n * @param {Object} options\n * @param {AffiliateTracking} [options.affiliateTracking]\n * @param {String} [options.cardSecurityCode]\n * @param {SDK.Services.Commerce.StrongCustomerAuth} [sca]\n * @param {Array} options.lineItems\n * @param {Array} options.orderCampaigns\n * @param {String} options.paymentMethodId\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: 'SubmitOrderWithPaymentMethodRequest(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get affiliateTracking() {\n return `${this.ctor} options.affiliateTracking should be an instance of SDK.Services.Commerce.AffiliateTracking`; // eslint-disable-line\n },\n get cardSecurityCode() {\n return `${this.ctor} options.cardSecurityCode should be a String`;\n },\n get sca() {\n return `${this.ctor} options.sca should be an instance of SDK.Services.Commerce.StrongCustomerAuth`;\n },\n get lineItems() {\n return `${this.ctor} needs an Array of SDK.Services.Commerce.LineItem`;\n },\n get orderCampaigns() {\n return `${this.ctor} needs an Array of SDK.Services.Commerce.OrderCampaign`;\n },\n get paymentMethodId() {\n return `${this.ctor} options.paymentMethodId should be a String`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { affiliateTracking, cardSecurityCode, sca, lineItems, orderCampaigns, paymentMethodId } = options;\n\n if (Check.assigned(affiliateTracking)) {\n\n instanceStrict(\n affiliateTracking,\n AffiliateTracking,\n errorMessage.affiliateTracking,\n InvalidArgumentException\n );\n\n }\n\n if (Check.assigned(cardSecurityCode)) {\n string(cardSecurityCode, errorMessage.cardSecurityCode, InvalidArgumentException);\n }\n\n if (Check.assigned(sca)) {\n instanceStrict(sca, StrongCustomerAuth, errorMessage.sca, InvalidArgumentException);\n }\n\n array.of.instanceStrict(lineItems, LineItem, errorMessage.lineItem, InvalidArgumentException);\n\n array.of.instanceStrict(\n orderCampaigns,\n OrderCampaign,\n errorMessage.orderCampaigns,\n InvalidArgumentException\n );\n\n string(paymentMethodId, errorMessage.paymentMethodId, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.Services.Commerce.AffiliateTracking|undefined}\n *\n */\n this.affiliateTracking = affiliateTracking;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.cardSecurityCode = cardSecurityCode;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.Services.Commerce.StrongCustomerAuth|undefined}\n *\n */\n this.sca = sca;\n\n /**\n *\n * @access public\n * @type {Array}\n *\n */\n this.lineItems = lineItems;\n\n /**\n *\n * @access public\n * @type {Array}\n *\n */\n this.orderCampaigns = orderCampaigns;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.paymentMethodId = paymentMethodId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/submitOrderWithPaymentMethodRequest.js","/**\n *\n * @module affiliateTracking\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n string\n} = Check.assert;\n\n/**\n *\n * @class AffiliateTracking\n *\n */\nexport default class AffiliateTracking {\n\n /**\n *\n * @param {String} [affiliateId]\n * @param {String} [partnerId]\n * @param {String} [source]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(affiliateId, partnerId, source) {\n\n const errorMessage = {\n ctor: 'AffiliateTracking(affiliateId, partnerId, source)',\n get affiliateId() {\n return `${this.ctor} affiliateId should be a String with length`;\n },\n get partnerId() {\n return `${this.ctor} partnerId should be a String with length`;\n },\n get source() {\n return `${this.ctor} source should be a String with length`;\n }\n };\n\n if (Check.assigned(affiliateId)) {\n string(affiliateId, errorMessage.affiliateId, InvalidArgumentException);\n }\n\n if (Check.assigned(partnerId)) {\n string(partnerId, errorMessage.partnerId, InvalidArgumentException);\n }\n\n if (Check.assigned(source)) {\n string(source, errorMessage.source, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.affiliateId = affiliateId;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.partnerId = partnerId;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.source = source;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/affiliateTracking.js","/**\n *\n * @module lineItem\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class LineItem\n *\n */\nexport default class LineItem {\n\n /**\n *\n * @param {String} sku\n * @throws {InvalidArgumentException}\n *\n */\n constructor(sku) {\n\n const errorMessage = {\n ctor: 'LineItem(sku)',\n get sku() {\n return `${this.ctor} sku should be a String with length`;\n }\n };\n\n nonEmptyString(sku, errorMessage.sku, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.sku = sku;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/lineItem.js","/**\n *\n * @module orderCampaign\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class OrderCampaign\n *\n */\nexport default class OrderCampaign {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.campaignCode]\n * @param {String} [options.voucherCode]\n * @param {String} [options.redemptionCode]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'OrderCampaign(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get campaignCode() {\n return `${this.ctor} options.campaignCode should be a String with length`;\n },\n get voucherCode() {\n return `${this.ctor} options.voucherCode should be a String with length`;\n },\n get redemptionCode() {\n return `${this.ctor} options.redemptionCode should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { campaignCode, voucherCode, redemptionCode } = options;\n\n if (Check.assigned(redemptionCode)) {\n\n nonEmptyString(redemptionCode, errorMessage.redemptionCode, InvalidArgumentException);\n\n if (Check.assigned(campaignCode)) {\n nonEmptyString(campaignCode, errorMessage.campaignCode, InvalidArgumentException);\n }\n\n if (Check.assigned(voucherCode)) {\n nonEmptyString(voucherCode, errorMessage.voucherCode, InvalidArgumentException);\n }\n\n } else {\n\n nonEmptyString(campaignCode, errorMessage.campaignCode, InvalidArgumentException);\n nonEmptyString(voucherCode, errorMessage.voucherCode, InvalidArgumentException);\n\n }\n\n /**\n *\n * @access public\n * @type {String|undefined}\n * @desc `campaignCode` is required unless `redemptionCode` is provided\n *\n */\n this.campaignCode = campaignCode;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n * @desc `voucherCode` is required unless `redemptionCode` is provided\n *\n */\n this.voucherCode = voucherCode;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|undefined}\n * @desc `redemptionCode` is optional - if it is provided then `voucherCode` and `campaignCode` are optional\n *\n */\n this.redemptionCode = redemptionCode;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/orderCampaign.js","/**\n *\n * @module strongCustomerAuth\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from '../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class StrongCustomerAuth\n * @since 4.0.0\n * @desc unique identification used when making a secure purchase\n *\n */\nexport default class StrongCustomerAuth {\n\n /**\n *\n * @param {String} sessionId\n * @param {String} returnUrl\n *\n */\n constructor(sessionId, returnUrl) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(sessionId, returnUrl)`,\n get sessionId() {\n return `${this.ctor} sessionId should be a String with length`;\n },\n get returnUrl() {\n return `${this.ctor} returnUrl should be a String with length`;\n }\n };\n\n nonEmptyString(sessionId, errorMessage.sessionId, InvalidArgumentException);\n nonEmptyString(returnUrl, errorMessage.returnUrl, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc unique identifier received from 3DS Authentication Partner\n *\n */\n this.sessionId = sessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc The URL on your website that will be invoked when the challenge is complete\n *\n */\n this.returnUrl = returnUrl;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/strongCustomerAuth.js","/**\n *\n * @module submitOrderWithPaymentMethodResponse\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SubmitOrderWithPaymentMethodResponse\n *\n */\nexport default class SubmitOrderWithPaymentMethodResponse {\n\n /**\n *\n * @param {String} guid\n * @throws {InvalidArgumentException}\n * @note params out of order with spec to keep optional items at the end\n *\n */\n constructor(guid) {\n\n const errorMessage = {\n ctor: 'SubmitOrderWithPaymentMethodResponse(guid)',\n get guid() {\n return `${this.ctor} guid should be a String`;\n }\n };\n\n nonEmptyString(guid, errorMessage.guid, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.guid = guid;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/submitOrderWithPaymentMethodResponse.js","/**\n *\n * @module zipLocation\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class ZipLocation\n *\n */\nexport default class ZipLocation {\n\n /**\n *\n * @param {String} city\n * @param {String} state\n * @param {String} country\n * @throws {InvalidArgumentException}\n *\n */\n constructor(city, state, country) {\n\n const errorMessage = {\n ctor: 'Location(city, state, country)',\n get city() {\n return `${this.ctor} city should be a String with length`;\n },\n get state() {\n return `${this.ctor} state should be a String with length`;\n },\n get country() {\n return `${this.ctor} country should be a String with length`;\n }\n };\n\n nonEmptyString(city, errorMessage.city, InvalidArgumentException);\n nonEmptyString(state, errorMessage.state, InvalidArgumentException);\n nonEmptyString(country, errorMessage.country, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.city = city;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.state = state;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.country = country;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/zipLocation.js","/**\n *\n * @module contentClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef ContentClientEndpoint\n * @type {Object}\n *\n * @property {String} bookmarks\n * @property {String} bookmarksPersisted\n * @property {String} catalog\n * @property {String} search\n * @property {String} searchPersisted\n * @property {String} searchSuggestions\n * @property {String} sportsData\n * @property {String} sportsDataPersisted\n * @property {String} watchlist\n * @property {String} watchlistPersisted\n * @property {String} autoSuggest\n *\n */\n\n/**\n *\n * @enum\n * @type {ContentClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n bookmarks: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n bookmarksPersisted: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n catalog: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n search: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n searchPersisted: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n searchSuggestions: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n sportsData: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n sportsDataPersisted: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n watchlist: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n watchlistPersisted: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n autoSuggest: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/content/contentClientEndpoint.js","/**\n *\n * @module customerServiceClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef CustomerServiceClientEndpoint\n * @type {Object}\n *\n * @property {String} createSupportCode\n *\n */\n\n/**\n *\n * @enum\n * @type {CustomerServiceClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n createSupportCode: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/customerService/customerServiceClientEndpoint.js","/**\n *\n * @module deviceMetadata\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class DeviceMetadata\n * @desc A semi-structured data type, containing a few mandatory fields, but\n * allowing a number of arbitrary key -> string to be added at the top level of the structure.\n *\n */\nexport default class DeviceMetadata {\n\n /**\n *\n * @param {String} deviceFamily\n * @param {String} applicationRuntime\n * @param {String} deviceProfile\n * @param {Object} [extraData=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(deviceFamily, applicationRuntime, deviceProfile, extraData = null) {\n\n const errorMessage = {\n ctor: 'DeviceMetadata(deviceFamily, applicationRuntime, deviceProfile, extraData)',\n get deviceFamily() {\n return `${this.ctor} deviceFamily should be a String with length`;\n },\n get applicationRuntime() {\n return `${this.ctor} applicationRuntime should be a String with length`;\n },\n get deviceProfile() {\n return `${this.ctor} deviceProfile should be a String with length`;\n },\n get extraData() {\n return `${this.ctor} extraData should be a plain Object`;\n }\n };\n\n nonEmptyString(deviceFamily, errorMessage.deviceFamily, InvalidArgumentException);\n nonEmptyString(applicationRuntime, errorMessage.applicationRuntime, InvalidArgumentException);\n nonEmptyString(deviceProfile, errorMessage.deviceProfile, InvalidArgumentException);\n\n if (Check.assigned(extraData)) {\n object(extraData, errorMessage.extraData, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets the device family (like android, apple, browser, microsoft, roku).\n *\n */\n this.deviceFamily = deviceFamily;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets the runtime (for example OS) for the device.\n *\n */\n this.applicationRuntime = applicationRuntime;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets the concrete hardware or browser.\n *\n */\n this.deviceProfile = deviceProfile;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Gets a map of String -> String for additional properties.\n *\n */\n this.extraData = extraData || {};\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/device/deviceMetadata.js","/**\n *\n * @module deviceClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef DeviceClientEndpoint\n * @type {Object}\n *\n * @property {String} createDeviceGrant\n *\n */\n\n/**\n *\n * @enum\n * @type {DeviceClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n createDeviceGrant: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/device/deviceClientEndpoint.js","/**\n *\n * @module drmClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef DrmClientEndpoint\n * @type {Object}\n *\n * @property {String} silkKey\n * @property {String} fairPlayCertificate\n * @property {String} fairPlayLicense\n * @property {String} widevineCertificate\n * @property {String} widevineLicense\n * @property {String} playReadyLicense\n *\n */\n\n/**\n *\n * @enum\n * @type {DrmClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n silkKey: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n fairPlayCertificate: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n fairPlayLicense: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n widevineCertificate: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n widevineLicense: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n playReadyLicense: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/drm/drmClientEndpoint.js","/**\n *\n * @module playReadyMessage\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n object\n} = Check.assert;\n\n/**\n *\n * @class PlayReadyMessage\n * @desc Encapsulates the message sent to the PlayReady license service.\n *\n */\nexport default class PlayReadyMessage {\n\n /**\n *\n * @param {PlayReadyMessage} playReadyMessage\n * @param {Object} [body={}]\n * @param {Object} [headers={}]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(body = {}, headers = {}) {\n\n const errorMessage = {\n ctor: 'PlayReadyMessage(body, headers)',\n get body() {\n return `${this.ctor} body should be an Object`;\n },\n get headers() {\n return `${this.ctor} headers should be an Object`;\n }\n };\n\n object(body, errorMessage.body, InvalidArgumentException);\n object(headers, errorMessage.headers, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc The body sent to the getPlayReadyLicense endpoint\n *\n */\n this.body = body;\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc Map of headers sent to the getPlayReadyLicense endpoint\n *\n */\n this.headers = headers;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/drm/playReadyMessage.js","/**\n *\n * @module eligibilityClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef EligibilityClientEndpoint\n * @type {Object}\n *\n * @property {String} getEligibilityStatus\n *\n */\n\n/**\n *\n * @since 4.2.0\n * @enum\n * @type {EligibilityClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n getEligibilityStatus: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/eligibility/eligibilityClientEndpoint.js","/**\n *\n * @module eligibilityStatusResponse\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nimport Partner from './partner';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class EligibilityStatusResponse\n * @since 4.2.0\n *\n */\nexport default class EligibilityStatusResponse {\n\n /**\n *\n * @param {Object} partners\n * @throws {InvalidArgumentException}\n *\n */\n constructor(partners) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(partners)`,\n get partners() {\n return `${this.ctor} partners should be a non-empty Object containing instances of SDK.Service.Eligibility.Partner`;\n }\n };\n\n nonEmptyObject(partners, errorMessage.partners, InvalidArgumentException);\n\n Object.keys(partners).forEach((key) => {\n instanceStrict(partners[key], Partner, errorMessage.partners, InvalidArgumentException);\n });\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {Object}\n *\n */\n this.partners = partners;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/eligibility/eligibilityStatusResponse.js","/**\n *\n * @module eligibilityStatus\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef EligibilityStatus\n * @type {Object}\n * @desc Defines the different eligibility status\n *\n * @property {String} eligible\n * @property {String} redirect\n * @property {String} ineligible\n *\n */\n\n/**\n *\n * @since 4.2.0\n * @enum\n * @type {EligibilityStatus}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n eligible: null,\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n redirect: null,\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {String}\n *\n */\n ineligible: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/eligibility/eligibilityStatus.js","/**\n *\n * @module activationToken\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from '../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class ActivationToken\n *\n */\nexport default class ActivationToken {\n\n /**\n *\n * @param {String} token\n *\n */\n constructor(token) {\n\n const errorMessage = {\n method: `${this.constructor.name}(token)`,\n get token() {\n return `${this.method} token should be a non-empty String`;\n }\n };\n\n nonEmptyString(token, errorMessage.token, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n * @desc A JWT token based on user's super bundle subscription.\n * @note This property will be returned as `linkToken` in the json response.\n *\n */\n this.token = token;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/externalActivation/activationToken.js","/**\n *\n * @module externalActivationResult\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nimport TemporaryDefaultAccessActivationStatus from './temporaryDefaultAccessActivationStatus';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst {\n array,\n boolean,\n includes,\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @access public\n * @class ExternalActivationResult\n * @throws {InvalidArgumentException}\n *\n */\nexport default class ExternalActivationResult {\n\n /**\n *\n * @param {Boolean} [options.refreshAccessToken=false]\n * @param {Boolean} [options.temporaryAccessGranted=false]\n * @param {SDK.Services.ExternalActivation.TemporaryDefaultAccessActivationStatus|ServiceException} [options.resultStatus=null] // eslint-disable-line max-len\n * @param {Array} [options.errors=[]]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get refreshAccessToken() {\n return `${this.ctor} refreshAccessToken should be a Boolean`;\n },\n get temporaryAccessGranted() {\n return `${this.ctor} temporaryAccessGranted should be a Boolean`;\n },\n get resultStatus() {\n return `${this.ctor} resultStatus should be a String with length`;\n },\n get resultStatusException() {\n return `${this.ctor} resultStatus should an instance of ServiceException`;\n },\n get errors() {\n return `${this.ctor} errors should be an Array`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { refreshAccessToken = false, temporaryAccessGranted = false } = options;\n const { resultStatus = null, errors = [] } = options;\n\n let resultStatusKey;\n\n boolean(refreshAccessToken, errorMessage.refreshAccessToken, InvalidArgumentException);\n boolean(temporaryAccessGranted, errorMessage.temporaryAccessGranted, InvalidArgumentException);\n\n if (Check.assigned(resultStatus)) {\n\n if (Check.string(resultStatus)) {\n\n resultStatusKey = Object.keys(TemporaryDefaultAccessActivationStatus).find((key) => {\n return TemporaryDefaultAccessActivationStatus[key] === resultStatus;\n });\n\n includes(\n Object.keys(TemporaryDefaultAccessActivationStatus),\n resultStatusKey,\n errorMessage.resultStatus,\n InvalidArgumentException\n );\n\n } else {\n\n instanceStrict(\n resultStatus,\n ServiceException,\n errorMessage.resultStatusException,\n InvalidArgumentException\n );\n\n }\n\n }\n\n array(errors, errorMessage.errors, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc A Boolean that indicates whether or not the Access token should be refreshed.\n * @note This property will be set from the `X-BAMTech-Refresh-Access-Token` header in\n * the JSON response. It defaults to `false` if the header does not exist.\n *\n */\n this.refreshAccessToken = refreshAccessToken;\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {Boolean}\n * @desc An indicator of whether or not temporary access has been granted in the meantime.\n * @note This property will be set from the `X-BAMTech-Temporary-Access-Granted` header in\n * the JSON response. It defaults to `false` if the header does not exist.\n *\n */\n this.temporaryAccessGranted = temporaryAccessGranted;\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {TemporaryDefaultAccessActivationStatus|ServiceException}\n * @desc temporary default access status based on the service status and temporary access granted token\n * @note the result status logic is set up in the ExternalActivationClient activateToken method, based\n * on the status code and temporary access granted header\n * @note the JS SDK stores the associated key not the value\n *\n */\n this.resultStatus = resultStatusKey || resultStatus;\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {Array}\n * @desc group of errors returned from services\n * @note exposed to app developers as a source of additional data if necessary\n *\n */\n this.errors = errors;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/externalActivation/externalActivationResult.js","/**\n *\n * @module externalActivationClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef ExternalActivationClientEndpoint\n * @type {Object}\n *\n * @property {String} activateToken\n * @property {String} getActivationToken\n *\n */\n\n/**\n *\n * @enum\n * @type {ExternalActivationClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n activateToken: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getActivationToken: null\n});\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/externalActivation/externalActivationClientEndpoint.js","/**\n *\n * @module adEngineClientEndpoint\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef AdEngineClientEndpoint\n * @type {Object}\n *\n * @property {String} setToken\n * @property {String} setTokenRedirect\n *\n */\n\n/**\n *\n * @enum\n * @type {AdEngineClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n setToken: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n setTokenRedirect: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/adEngine/adEngineClientEndpoint.js","/**\n *\n * @module audioRendition\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SDK.Services.Media.AudioRendition\n * @desc Describes an audio track contained in the stream.\n * @since 4.0.0\n *\n */\nexport default class AudioRendition {\n\n /**\n *\n * @param {String} name\n * @param {String} language\n * @throws {SDK.Services.Exception.InvalidArgumentException}\n *\n */\n constructor(name, language) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(name, language)`,\n get name() {\n return `${this.ctor} name should be a String with length`;\n },\n get language() {\n return `${this.ctor} language should be a String with length`;\n }\n };\n\n nonEmptyString(name, errorMessage.name, InvalidArgumentException);\n nonEmptyString(language, errorMessage.language, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The name of the audio track.\n *\n */\n this.name = name;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The language of the audio track.\n *\n */\n this.language = language;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/audioRendition.js","/**\n *\n * @module bifThumbnailSet\n *\n */\n\nimport ThumbnailSet from './thumbnailSet';\n\n/**\n *\n * @class BifThumbnailSet\n * @extends {SDK.Services.Media.ThumbnailSet}\n *\n */\nexport default class BifThumbnailSet extends ThumbnailSet {\n\n /**\n *\n * @param {Object} options\n * @param {Number} options.thumbnailWidth\n * @param {Number} options.thumbnailHeight\n * @param {Number} options.intervalMilliseconds\n * @param {Number} options.totalBytes\n * @param {Array} options.presentations\n * @note params are type checked and assigned in the base class\n *\n */\n constructor(options) {\n\n super(options);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/bifThumbnailSet.js","/**\n *\n * @module drmType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef DrmType\n * @type {Object}\n *\n * @property {String} NONE - Used to signify that no DrmType is available.\n * @property {String} SILK - SILK is the existing encryption key mechanism.\n * @property {String} PLAYREADY - PlayReady is the Microsoft content encryption standard.\n * @property {String} WIDEVINE - Widevine is Google's content encryption standard.\n * @property {String} FAIRPLAY - FairPlay is the Apple content encryption standard.\n *\n */\n\n/**\n *\n * @enum\n * @type {DrmType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n NONE: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n SILK: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n PLAYREADY: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n WIDEVINE: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n FAIRPLAY: null\n});\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/drmType.js","/**\n *\n * @module mediaPayload\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../exception/entry';\n\nimport MediaPayloadStream from './mediaPayloadStream';\nimport MediaPlayhead from './mediaPlayhead';\nimport MediaThumbnailLinks from './mediaThumbnailLinks';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n object,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class SDK.Services.Media.MediaPayload\n * @implements {IMediaPayload}\n * @desc Represents the media payload response from the playlist service.\n *\n */\nexport default class MediaPayload {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Services.Media.MediaPayloadStream} options.stream\n * @param {Object} options.tracking\n * @param {SDK.Services.Media.MediaPlayhead} options.playhead\n * @param {SDK.Services.Media.MediaThumbnailLinks} [options.thumbnails]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'MediaPayload(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get stream() {\n return `${this.ctor} options.stream should be an instance of SDK.Services.Media.MediaPayloadStream`;\n },\n get tracking() {\n return `${this.ctor} options.tracking should be an Object`;\n },\n get playhead() {\n return `${this.ctor} options.playhead should be an instance of SDK.Services.Media.MediaPlayhead`;\n },\n get thumbnails() {\n return `${this.ctor} options.thumbnails should be an instance of SDK.Services.Media.MediaThumbnailLinks`; // eslint-disable-line max-len\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { stream, tracking, playhead, thumbnails } = options;\n\n instanceStrict(stream, MediaPayloadStream, errorMessage.stream, InvalidArgumentException);\n object(tracking, errorMessage.tracking, InvalidArgumentException);\n instanceStrict(playhead, MediaPlayhead, errorMessage.playhead, InvalidArgumentException);\n\n if (Check.assigned(thumbnails)) {\n instanceStrict(thumbnails, MediaThumbnailLinks, errorMessage.thumbnails, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.Services.Media.MediaPayloadStream}\n * @desc Gets the \"complete\" media stream URL\n *\n */\n this.stream = stream;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Object}\n * @desc Gets additional information used to track the media.\n *\n */\n this.tracking = tracking;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.Services.Media.MediaPlayhead}\n * @desc Gets playhead information from the previous playback session for the current user.\n *\n */\n this.playhead = playhead;\n\n /**\n *\n * @access public\n * @since 3.8.0\n * @type {SDK.Services.Media.MediaThumbnailLinks|undefined}\n * @desc Gets thumbnail information for the media\n *\n */\n this.thumbnails = thumbnails;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/mediaPayload.js","/**\n *\n * @module mediaPlayheadStatus\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef MediaPlayheadStatus\n * @type {Object}\n * @desc Provides the status of the playhead retrieval.\n *\n * @property {String} Success - A previous playhead position was found for the associated media and user.\n * @property {String} NoPlayhead - No playhead position was found for the associated media and user.\n * @property {String} Unavailable - Unable to retrieve the playhead position for the associated media and user.\n *\n */\n\n/**\n *\n * @enum\n * @since 4.0.0\n * @type {MediaPlayheadStatus}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n Success: null,\n /**\n *\n * @access public\n * @type {String}\n * @desc User has never played video before or cleared bookmarks.\n *\n */\n NoPlayhead: null,\n /**\n *\n * @access public\n * @type {String}\n * @desc There was an error retrieving the playhead position.\n *\n */\n Unavailable: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/mediaPlayheadStatus.js","/**\n *\n * @module mediaClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef MediaClientEndpoint\n * @type {Object}\n *\n * @property {String} mediaPayload\n * @property {String} key\n * @property {String} playbackCookie\n *\n */\n\n/**\n *\n * @enum\n * @type {MediaClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n mediaPayload: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n key: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n playbackCookie: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n spriteSheetThumbnails: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n spriteSheetThumbnail: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n bifThumbnails: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n bifThumbnail: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/mediaClientEndpoint.js","/**\n *\n * @module spriteThumbnailSet\n *\n */\n\nimport Check from 'check-types';\n\nimport ThumbnailSet from './thumbnailSet';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n number,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class SpriteThumbnailSet\n * @extends {SDK.Services.Media.ThumbnailSet}\n *\n */\nexport default class SpriteThumbnailSet extends ThumbnailSet {\n\n /**\n *\n * @param {Object} options\n * @param {Number} options.thumbnailRows\n * @param {Number} options.thumbnailColumns\n * @param {Number} options.quality\n * @note params below are checked in the base class\n * @param {Number} options.thumbnailWidth\n * @param {Number} options.thumbnailHeight\n * @param {Number} options.intervalMilliseconds\n * @param {Number} options.totalBytes\n * @param {Array} options.presentations\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'SpriteThumbnailSet(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get thumbnailRows() {\n return `${this.ctor} options.thumbnailRows should be a Number`;\n },\n get thumbnailColumns() {\n return `${this.ctor} options.thumbnailColumns should be a Number`;\n },\n get quality() {\n return `${this.ctor} options.quality should be a Number`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { thumbnailRows, thumbnailColumns, quality } = options;\n\n number(thumbnailRows, errorMessage.thumbnailRows, InvalidArgumentException);\n number(thumbnailColumns, errorMessage.thumbnailColumns, InvalidArgumentException);\n number(quality, errorMessage.quality, InvalidArgumentException);\n\n super(options);\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The number of rows of thumbnails in each sprite sheet\n *\n */\n this.thumbnailRows = thumbnailRows;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The number of rows of thumbnails in each sprite sheet\n *\n */\n this.thumbnailColumns = thumbnailColumns;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Quality equates to jpeg quality, which represents the loss due to compression\n *\n */\n this.quality = quality;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/spriteThumbnailSet.js","/**\n *\n * @module subtitleRendition\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n boolean,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SDK.Services.Media.SubtitleRendition\n * @desc Describes a subtitle track contained in the stream.\n * @since 4.0.0\n *\n */\nexport default class SubtitleRendition {\n\n /**\n *\n * @param {String} name\n * @param {String} language\n * @param {Boolean} forced\n * @throws {SDK.Services.Exception.InvalidArgumentException}\n *\n */\n constructor(name, language, forced) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(name, language, forced)`,\n get name() {\n return `${this.ctor} name should be a String with length`;\n },\n get language() {\n return `${this.ctor} language should be a String with length`;\n },\n get forced() {\n return `${this.ctor} forced should be a Boolean`;\n }\n };\n\n nonEmptyString(name, errorMessage.name, InvalidArgumentException);\n nonEmptyString(language, errorMessage.language, InvalidArgumentException);\n boolean(forced, errorMessage.forced, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The name of the subtitle track.\n *\n */\n this.name = name;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The language of the subtitle track.\n *\n */\n this.language = language;\n\n /**\n *\n * @access public\n * @type {Boolean}\n * @desc Indicates if the subtitle track should be forced to be shown.\n *\n */\n this.forced = forced;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/subtitleRendition.js","/**\n *\n * @module adobeRegistration\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n number\n} = Check.assert;\n\n/**\n *\n * @class AdobeRegistration\n * @desc The response when the client has created a registration code.\n *\n */\nexport default class AdobeRegistration {\n\n /**\n *\n * @param {String} code\n * @param {Number} generatedAt\n * @param {Number} expiresAt\n *\n */\n constructor(code, generatedAt, expiresAt) {\n\n const errorMessage = {\n ctor: 'AdobeRegistration(code, generatedAt, expiresAt)',\n get code() {\n return `${this.ctor} code should be a String with length`;\n },\n get generatedAt() {\n return `${this.ctor} generatedAt should be a Number`;\n },\n get expiresAt() {\n return `${this.ctor} expiresAt should be a Number`;\n }\n };\n\n nonEmptyString(code, errorMessage.code, InvalidArgumentException);\n number(generatedAt, errorMessage.generatedAt, InvalidArgumentException);\n number(expiresAt, errorMessage.expiresAt, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets a code an adobe user needs to authorize so they can access content.\n *\n */\n this.code = code;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Gets the timestamp of the moment at which the registration code was generated.\n *\n */\n this.generatedAt = generatedAt;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Gets the expiration timestamp of the registration code.\n *\n */\n this.expiresAt = expiresAt;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/adobe/adobeRegistration.js","/**\n *\n * @module authenticationFlow\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/identity-bam.md#oneid-get-authentication-flow\n * @see https://github.bamtech.co/services-commons/public-api/blob/master/swagger/services/bam-idp.md#checkresponse\n *\n */\n\n/**\n *\n * @since 3.9.0\n * @typedef AuthenticationFlow\n * @type {Object}\n * @desc Enumerates the known authentication operations from the Bam Identity Service.\n * @example AuthenticationFlow.authenticate // 'Login'\n *\n * @property {String} createIdentity - indicates a user has not been registered and must create a new Identity\n * @property {String} oneTimePasscode - indicates a user needs to request a one time passcode before authenticating\n * @property {String} authenticate - indicates a user can be authenticated and has been registered with BamIdp\n *\n * @note the service returns values that do not match the SDK keys in the spec\n *\n */\nexport default {\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n authenticate: 'Login',\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n createIdentity: 'Register',\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n oneTimePasscode: 'OTP'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/bam/authenticationFlow.js","/**\n *\n * @module authenticationFlowResponse\n * @see https://github.bamtech.co/services-commons/public-api/blob/master/swagger/services/bam-idp.md#checkresponse\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../../exception/entry';\n\nimport AuthenticationFlow from './authenticationFlow';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyArray,\n includes\n} = Check.assert;\n\n/**\n *\n * @since 3.9.0\n * @type {SDK.Services.Identity.Bam.AuthenticationFlowResponse}\n *\n */\nexport default class AuthenticationFlowResponse {\n\n /**\n *\n * @param {Array} operations\n * @note `validOperations` is a list of allowed operations from the BamIdp Service. If the response doesn't contain\n * one of the pre-approved operations an error will be thrown. This indicates a change in the service contract.\n *\n */\n constructor(operations) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(operations)`,\n get operations() {\n return `${this.ctor} operations should be an Array of SDK.Services.Identity.Bam.AuthenticationFlow`;\n },\n get invalidOperation() {\n return `${this.ctor} operation should be a member of SDK.Services.Identity.Bam.AuthenticationFlow`;\n }\n };\n\n const validOperations = Object.values(AuthenticationFlow);\n\n nonEmptyArray(operations, errorMessage.operations, InvalidArgumentException);\n\n operations.forEach((operation) => {\n includes(validOperations, operation, errorMessage.invalidOperation, InvalidArgumentException);\n });\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {Array}\n * @desc an array of operations that the application developer should use to determine if a user has been\n * registered with the BamIdp service\n *\n */\n this.operations = operations;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/bam/authenticationFlowResponse.js","/**\n *\n * @module bamIdentityClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef BamIdentityClientEndpoint\n * @type {Object}\n *\n * @property {String} identityLogin\n * @property {String} createIdentity\n * @property {String} changeEmail\n * @property {String} changePassword\n * @property {String} startPasswordReset\n * @property {String} resetPassword\n * @property {String} getIdentity\n * @property {String} updateAttributes\n * @property {String} otpRequest\n * @property {String} otpRedeem\n *\n */\n\n/**\n *\n * @enum\n * @type {BamIdentityClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n identityLogin: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n createIdentity: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n changeEmail: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n changePassword: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n startPasswordReset: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n resetPassword: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getIdentity: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n updateAttributes: null,\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n check: null,\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n otpRequest: null,\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n otpRedeem: null\n\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/bam/bamIdentityClientEndpoint.js","/**\n *\n * @module redeemedPasscodeToken\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../../exception/entry';\nimport Token from './../../token/entry';\n\nconst IdentityToken = Token.IdentityToken;\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyObject,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class RedeemedPasscodeToken\n * @extends {SDK.Services.Token.IdentityToken}\n *\n */\nexport default class RedeemedPasscodeToken extends IdentityToken {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.token\n * @param {Number} options.expiresIn\n * @param {SDK.Services.Token.SecurityAction} [options.securityAction]\n * @param {String} [options.reason]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n // hard-coded to RedeemedPasscodeToken in this message because you can't use 'this' before calling 'super'\n ctor: 'RedeemedPasscodeToken(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get reason() {\n return `${this.ctor} reason should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { token, expiresIn, securityAction, reason } = options;\n\n if (Check.assigned(reason)) {\n nonEmptyString(reason, errorMessage.reason, InvalidArgumentException);\n }\n\n super({ token, expiresIn, securityAction });\n\n /**\n *\n * @access private\n * @param {String|undefined} reason\n *\n */\n this.reason = reason;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/bam/redeemedPasscodeToken.js","/**\n *\n * @module oneTimePasscodeRequestReason\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/identity-bam.md#one-time-passcodes\n *\n */\n\n/* eslint new-cap: 'off' */\n\n\n/**\n *\n * @typedef OneTimePasscodeRequestReason\n * @type {Object}\n * @since 3.9.0\n * @desc Enumerates the known keys for one time passcode request reason.\n * @example OneTimePassCodeRequestReason.authenticate // 'Login'\n *\n * @property {String} authenticate - The \"Login\" key.\n * @property {String} forgotPassword - The \"ForgotPassword\" key.\n *\n */\n\n/**\n *\n * @enum\n * @type {OneTimePasscodeRequestReason}\n *\n */\nexport default {\n /**\n *\n * @access public\n * @type {String}\n *\n */\n authenticate: 'Login',\n /**\n *\n * @access public\n * @type {String}\n *\n */\n forgotPassword: 'ForgotPassword'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/bam/oneTimePasscodeRequestReason.js","/**\n *\n * @module identity\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class identity\n *\n */\nexport default class Identity {\n\n /**\n *\n * @param {String} email\n * @param {String} id\n * @param {String} partner\n * @param {Object} [attributes={}]\n *\n */\n constructor(email, id, partner, attributes = {}) {\n\n const errorMessage = {\n ctor: 'Identity(attributes, email, id, partner)',\n get attributes() {\n return `${this.ctor} attributes should be an Object`;\n },\n get email() {\n return `${this.ctor} email should be a String with length`;\n },\n get id() {\n return `${this.ctor} id should be a String with length`;\n },\n get partner() {\n return `${this.ctor} partner should be a String with length`;\n }\n };\n\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(id, errorMessage.id, InvalidArgumentException);\n nonEmptyString(partner, errorMessage.partner, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @param {Object} attributes\n *\n */\n this.attributes = attributes;\n\n /**\n *\n * @access public\n * @param {String} email\n *\n */\n this.email = email;\n\n /**\n *\n * @access public\n * @param {String} id\n *\n */\n this.id = id;\n\n /**\n *\n * @access public\n * @param {String} partner\n *\n */\n this.partner = partner;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/bam/identity.js","/**\n *\n * @module telemetryClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef TelemetryClientEndpoint\n * @type {Object}\n *\n * @property {String} postEvent\n *\n */\n\n/**\n *\n * @enum\n * @type {TelemetryClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n postEvent: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n dustEvent: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/telemetry/telemetryClientEndpoint.js","/**\n *\n * @module telemetryPayload\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../../exception/invalidArgumentException';\n\nconst {\n object\n} = Check.assert;\n\n/**\n *\n * @class TelemetryPayload\n * @desc Model containing the information to report to the telemetry service.\n *\n */\nexport default class TelemetryPayload {\n\n /**\n *\n * @param {Object} [server={}]\n * @param {Object} [client={}]\n *\n */\n constructor(server = {}, client = {}) {\n\n const errorMessage = {\n ctor: 'StreamSampleEvent(server, client)',\n get server() {\n return `${this.ctor} needs a server data Object`;\n },\n get client() {\n return `${this.ctor} needs a client data Object`;\n }\n };\n\n object(server, errorMessage.server, InvalidArgumentException);\n object(client, errorMessage.client, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Dictionary containing server provided tracking information.\n *\n */\n this.server = server;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Dictionary containing client provided tracking information.\n *\n */\n this.client = client;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/telemetry/telemetryPayload.js","/**\n *\n * @module telemetryResponse\n *\n */\n\n/**\n *\n * @class TelemetryResponse\n * @desc Model describing the response from the telemetry service\n * optionally containing both information and instructions.\n *\n */\nexport default class TelemetryResponse {\n\n /**\n *\n * @param {Number} replyAfter\n * @param {String} requestId\n *\n */\n constructor(replyAfter, requestId) {\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Gets the optional time to indicate the client should\n * back-off for a fixed time period before sending telemetry data.\n *\n */\n this.replyAfter = replyAfter;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets a unique tracking identifier for any API request.\n *\n */\n this.requestId = requestId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/telemetry/telemetryResponse.js","/**\n *\n * @module streamSampleClientPayload\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from '../../exception/invalidArgumentException';\n\nconst {\n number,\n string\n} = Check.assert;\n\n/**\n *\n * @class StreamSampleClientPayload\n * @since 3.5.0\n *\n */\nexport default class StreamSampleClientPayload {\n\n /**\n *\n * @param {String} event\n * @param {String} timestamp\n * @param {String} playback_session_id\n * @param {Number} play_head\n * @param {Number} bitrate\n * @throws {InvalidArgumentException}\n *\n */\n constructor(eventString, timestamp, playbackSessionId, playHead, bitrate) {\n\n const errorMessage = {\n ctor: 'StreamSampleClientPayload(eventString, timestamp, playback_session_id, play_head, bitrate)',\n get eventString() {\n return `${this.ctor} eventString needs to be a String`;\n },\n get timestamp() {\n return `${this.ctor} timestamp needs to be a Number`;\n },\n get playbackSessionId() {\n return `${this.ctor} playbackSessionId needs to be a String`;\n },\n get playHead() {\n return `${this.ctor} playHead needs to be Number`;\n },\n get bitrate() {\n return `${this.ctor} bitrate needs to be an Number`;\n }\n };\n\n string(eventString, errorMessage.eventString, InvalidArgumentException);\n number(timestamp, errorMessage.timestamp, InvalidArgumentException);\n string(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n\n if (Check.assigned(playHead)) {\n number(playHead, errorMessage.playHead, InvalidArgumentException);\n }\n\n if (Check.assigned(bitrate)) {\n number(bitrate, errorMessage.bitrate, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.event = eventString;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.timestamp = timestamp;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.play_head = playHead || 0;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.playback_session_id = playbackSessionId;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.bitrate = bitrate || 0;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/telemetry/streamSampleClientPayload.js","/**\n *\n * @module dustApplicationPayload\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../../exception/invalidArgumentException';\n\nconst {\n nonEmptyObject,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class DustApplicationPayload\n * @since 3.4.0\n * @desc describes the application environment\n *\n */\nexport default class DustApplicationPayload {\n\n /**\n *\n * @access private\n * @param {Object} options\n * @param {String} options.version\n * @param {String} options.id\n * @param {String} options.name\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'DustApplicationPayload(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get version() {\n return `${this.ctor} version should be a String with length`;\n },\n get id() {\n return `${this.ctor} id should be a String with length`;\n },\n get name() {\n return `${this.ctor} name should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { version, id, name } = options;\n\n nonEmptyString(version, errorMessage.version, InvalidArgumentException);\n nonEmptyString(id, errorMessage.id, InvalidArgumentException);\n nonEmptyString(name, errorMessage.name, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {String}\n * @desc Application version\n * @example \"1.0\"\n *\n */\n this.version = version;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc Application Id\n * @example \"com.espn.enterprise.sportscenter\"\n *\n */\n this.id = id;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc Application name\n * @example \"Espn\"\n *\n */\n this.name = name;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/dust/dustApplicationPayload.js","/**\n *\n * @module dustClientPayload\n *\n */\n\nimport Check from 'check-types';\nimport uuid from 'uuid';\nimport DustDevicePayload from './dustDevicePayload';\nimport DustApplicationPayload from './dustApplicationPayload';\nimport DustSdkPayload from './dustSdkPayload';\nimport Util from './../../../services/util/entry';\n\nimport InvalidArgumentException from './../../exception/invalidArgumentException';\n\nconst {\n instanceStrict,\n nonEmptyString,\n string,\n object,\n date,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class DustClientPayload\n * @since 3.4.0\n * @desc describes the client payload which contains all non-server related data\n *\n */\nexport default class DustClientPayload {\n\n /**\n *\n * @access private\n * @param {Object} options\n * @param {String} options.category\n * @param {SDK.Services.Internal.Dust.DustDevicePayload} options.device\n * @param {Object} [options.data={}]\n * @param {String} options.event\n * @param {SDK.Services.Internal.Dust.DustApplicationPayload} options.application\n * @param {SDK.Services.Internal.Dust.DustSdkPayload} options.sdk\n * @param {String} [options.transactionId]\n * @param {Object} [options.correlationIds]\n * @param {String} [options.timestamp=new Date().toISOString()]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'DustClientPayload(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get category() {\n return `${this.ctor} options.category should be a String with length`;\n },\n get device() {\n return `${this.ctor} options.device should be an instance of SDK.Services.Internal.Dust.DustDevicePayload`; // eslint-disable-line max-len\n },\n get data() {\n return `${this.ctor} options.data should be an Object`;\n },\n get event() {\n return `${this.ctor} options.event should be a String with length`;\n },\n get application() {\n return `${this.ctor} options.application should be an instance of SDK.Services.Internal.Dust.DustApplicationPayload`; // eslint-disable-line max-len\n },\n get sdk() {\n return `${this.ctor} options.sdk should be an instance of SDK.Services.Internal.Dust.DustSdkPayload`;\n },\n get transactionId() {\n return `${this.ctor} options.transactionId should be a String`;\n },\n get correlationIds() {\n return `${this.ctor} options.correlationIds should be an Object`;\n },\n get timestamp() {\n return `${this.ctor} options.timestamp should be an ISO Date String`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { category, device, data = {}, event, application, sdk, transactionId, correlationIds } = options;\n const { timestamp = new Date().toISOString() } = options;\n\n nonEmptyString(category, errorMessage.category, InvalidArgumentException);\n instanceStrict(device, DustDevicePayload, errorMessage.device, InvalidArgumentException);\n object(data, errorMessage.data, InvalidArgumentException);\n nonEmptyString(event, errorMessage.event, InvalidArgumentException);\n instanceStrict(application, DustApplicationPayload, errorMessage.application, InvalidArgumentException);\n instanceStrict(sdk, DustSdkPayload, errorMessage.sdk, InvalidArgumentException);\n\n if (Check.assigned(transactionId)) {\n string(transactionId, errorMessage.transactionId, InvalidArgumentException);\n }\n\n if (Check.assigned(correlationIds)) {\n object(correlationIds, errorMessage.correlationIds, InvalidArgumentException);\n }\n\n if (!Util.dateRegex(timestamp)) {\n date(null, errorMessage.timestamp, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.category = category;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Internal.Dust.DustDevicePayload}\n *\n */\n this.device = device;\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.data = data;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.event = event;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc RFC4122 UUID used to identify this payload\n * @note typecheck is not needed for this because it's generated directly and not passed into the constructor\n *\n */\n this.eventId = uuid.v4();\n\n /**\n *\n * @access private\n * @type {SDK.Services.Internal.Dust.DustApplicationPayload}\n *\n */\n this.application = application;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Internal.Dust.DustSdkPayload}\n *\n */\n this.sdk = sdk;\n\n /**\n *\n * @access private\n * @type {String|undefined}\n * @note the JS SDK does not currently support this property\n *\n */\n this.transactionId = transactionId;\n\n /**\n *\n * @access private\n * @type {Object|undefined}\n * @note the JS SDK does not currently support this property\n *\n */\n this.correlationIds = correlationIds;\n\n /**\n *\n * @access private\n * @type {String}\n * @note ISO 8601/RFC-3339 timestamp\n *\n */\n this.timestamp = timestamp;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/dust/dustClientPayload.js","/**\n *\n * @module dustDevicePayload\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class DustDevicePayload\n * @desc describes the device payload\n *\n */\nexport default class DustDevicePayload {\n\n /**\n *\n * @access private\n * @param {String} os\n * @param {String} model\n * @throws {InvalidArgumentException}\n *\n */\n constructor(os, model) {\n\n const errorMessage = {\n ctor: 'DustDevicePayload(os, model)',\n get os() {\n return `${this.ctor} os should be a String with length.`;\n },\n get model() {\n return `${this.ctor} model should be a String with length.`;\n }\n };\n\n nonEmptyString(os, errorMessage.os, InvalidArgumentException);\n nonEmptyString(model, errorMessage.model, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.os = os;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.model = model;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/dust/dustDevicePayload.js","/**\n *\n * @module dustSdkPayload\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class DustSdkPayload\n * @since 3.4.0\n * @desc contains information specific to this SDK version\n *\n */\nexport default class DustSdkPayload {\n\n /**\n *\n * @access private\n * @param {String} version\n * @param {String} platform\n * @throws {InvalidArgumentException}\n *\n */\n constructor(version, platform) {\n\n const errorMessage = {\n ctor: 'DustPayload(server, client)',\n get version() {\n return `${this.ctor} version should be a String with length`;\n },\n get platform() {\n return `${this.ctor} platform should be a String with length`;\n }\n };\n\n nonEmptyString(version, errorMessage.version, InvalidArgumentException);\n nonEmptyString(platform, errorMessage.platform, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.version = version;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.platform = platform;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/dust/dustSdkPayload.js","/**\n *\n * @module dustServerPayload\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from '././../../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n number,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class DustServerPayload\n * @since 3.4.0\n * @desc describes any relevant server information\n * @note if the dustEvent did not include a service call this will be unused\n *\n */\nexport default class DustServerPayload {\n\n /**\n *\n * @access private\n * @param {Object} options\n * @param {String} options.host\n * @param {String} options.path\n * @param {String} options.method\n * @param {Number} [options.statusCode]\n * @param {String} [options.requestId]\n * @param {Number} [options.roundTripTime]\n * @note unfortunately some services return an empty string for requestId\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: 'DustServerPayload(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get host() {\n return `${this.ctor} host should be a String with length`;\n },\n get path() {\n return `${this.ctor} path should be a String with length`;\n },\n get method() {\n return `${this.ctor} method should be a String with length`;\n },\n get statusCode() {\n return `${this.ctor} statusCode should be a Number`;\n },\n get requestId() {\n return `${this.ctor} requestId should be a String with length`;\n },\n get roundTripTime() {\n return `${this.ctor} roundTripTime should be a Number`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { host, path, method, statusCode, requestId, roundTripTime } = options;\n\n nonEmptyString(host, errorMessage.host, InvalidArgumentException);\n nonEmptyString(path, errorMessage.path, InvalidArgumentException);\n nonEmptyString(method, errorMessage.method, InvalidArgumentException);\n\n if (Check.assigned(statusCode)) {\n number(statusCode, errorMessage.statusCode, InvalidArgumentException);\n }\n\n if (Check.assigned(requestId)) {\n nonEmptyString(requestId, errorMessage.requestId, InvalidArgumentException);\n }\n\n if (Check.assigned(roundTripTime)) {\n number(roundTripTime, errorMessage.roundTripTime, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.host = host;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.path = path;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.method = method;\n\n /**\n *\n * @access private\n * @type {Number|undefined}\n *\n */\n this.statusCode = statusCode;\n\n /**\n *\n * @access private\n * @type {String|undefined}\n *\n */\n this.requestId = requestId;\n\n /**\n *\n * @access private\n * @type {Number|undefined}\n *\n */\n this.roundTripTime = roundTripTime;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/dust/dustServerPayload.js","/**\n *\n * @module accountEntitlementContext\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/architecture/services/class.sdk.services.paywall.plantuml\n *\n */\n\n/* eslint new-cap: 'off' */\n\n/**\n *\n * @typedef AccountEntitlementContext\n * @type {Object}\n * @desc Defines the accountEntitlementContext types\n *\n * @property {String} accountActiveEntitlement\n * @property {String} accountExpiredEntitlement\n * @property {String} accountNeverEntitled\n * @property {String} anonymous\n *\n */\n\n/**\n *\n * @since 3.9.0\n * @enum\n * @type {AccountEntitlementContext}\n *\n */\nexport default {\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n accountActiveEntitlement: 'account_active_entitlement',\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n accountExpiredEntitlement: 'account_expired_entitlement',\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n accountNeverEntitled: 'account_never_entitled',\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n anonymous: 'anonymous'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/paywall/accountEntitlementContext.js","/**\n *\n * @module paywall\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nimport Product from './product';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n array,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class Paywall\n * @since 3.9.0\n * @desc Contains sku, campaign and account context information for a given country, platform and account/device.\n *\n */\nexport default class Paywall {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.accountEntitlementContext\n * @param {String} options.paywallHash\n * @param {Array} options.products\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get accountEntitlementContext() {\n return `${this.ctor} options.accountEntitlementContext should be a String with length`;\n },\n get paywallHash() {\n return `${this.ctor} options.paywallHash should be a String with length`;\n },\n get products() {\n return `${this.ctor} options.products should be an Array of SDK.Services.Paywall.Product`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { accountEntitlementContext, paywallHash, products } = options;\n\n nonEmptyString(accountEntitlementContext, errorMessage.accountEntitlementContext, InvalidArgumentException);\n nonEmptyString(paywallHash, errorMessage.paywallHash, InvalidArgumentException);\n\n array.of.instanceStrict(products, Product, errorMessage.products, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n * @desc Account contexts such as new, existing etc.\n *\n */\n this.accountEntitlementContext = accountEntitlementContext;\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n * @desc A base64 encoded MD5 hash of country and account context,\n * the source string is country_code+context (i.e usnew).\n *\n */\n this.paywallHash = paywallHash;\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {Array}\n * @desc The list of products represented by the paywall.\n *\n */\n this.products = products;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/paywall/paywall.js","/**\n *\n * @module paywallClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef PaywallClientEndpoint\n * @type {Object}\n *\n * @property {String} paywall\n *\n */\n\n/**\n *\n * @since 3.9.0\n * @enum\n * @type {PaywallClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n paywall: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/paywall/paywallClientEndpoint.js","/**\n *\n * @module productType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef ProductType\n * @type {Object}\n * @desc Defines the different product types that are supported.\n *\n * @property {String} D2C - Direct to consumer\n * @property {String} IAP - In app purchase\n *\n */\n\n/**\n *\n * @since 3.9.0\n * @enum\n * @type {ProductType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n D2C: null,\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n IAP: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/paywall/productType.js","/**\n *\n * @module timeUnit\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef TimeUnit\n * @type {Object}\n * @desc Defines the time unit types for creating an IntroPrice object\n *\n * @property {String} day\n * @property {String} week\n * @property {String} month\n * @property {String} year\n *\n */\n\n/**\n *\n * @since 3.9.0\n * @enum\n * @type {TimeUnit}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n day: null,\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n week: null,\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n month: null,\n /**\n *\n * @access public\n * @since 3.9.0\n * @type {String}\n *\n */\n year: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/paywall/timeUnit.js","/**\n *\n * @module purchaseActivation\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../exception/entry';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\nimport PurchaseActivationStatus from './purchaseActivationStatus';\n\nconst ErrorReason = Exception.ErrorReason;\n\nconst {\n array,\n assigned,\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class PurchaseActivation\n * @since 3.5.0\n * @desc The information about the purchase activation.\n *\n */\nexport default class PurchaseActivation {\n\n /**\n *\n * @param {Array} [products=[]]\n * @param {String} [sku='']\n * @param {PurchaseActivationStatus} status\n * @param {ErrorReason} [reason=null]\n * @note Normally optional params would be at the end but in this case they\n * are in this order to match the service response.\n *\n */\n constructor(products = [], sku = '', status, reason = null) {\n\n const errorMessage = {\n method: 'purchaseActivation(products, sku, status, reason)',\n get products() {\n return `${this.method} products should be an Array`;\n },\n get sku() {\n return `${this.method} sku should be a string with length`;\n },\n get status() {\n return `${this.method} needs PurchaseActivationStatus instance`;\n },\n get reason() {\n return `${this.method} needs ErrorReason instance`;\n }\n };\n\n array(products, errorMessage.products, InvalidArgumentException);\n nonEmptyString(sku, errorMessage.sku, InvalidArgumentException);\n assigned(PurchaseActivationStatus[status], errorMessage.status, InvalidArgumentException);\n\n if (Check.assigned(reason)) {\n instanceStrict(reason, ErrorReason, errorMessage.reason, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {Array}\n * @desc The product ids, as given by the subscription service.\n *\n */\n this.products = products;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc The SKU, as given by the 3rd party store.\n *\n */\n this.sku = sku;\n\n /**\n *\n * @access private\n * @type {PurchaseActivationStatus}\n * @desc The status of the purchase. One of [\"ACTIVE\", \"EXPIRED\", \"FAILED\", \"IGNORED\", \"UNKNOWN\"].\n * This is tightly coupled with the reason field.\n *\n */\n this.status = status;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Exception.ErrorReason}\n * @desc The reason that the purchase was ignored or the subscription may not be in effect.\n * This is tightly coupled with the status field.\n *\n */\n this.reason = reason;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/purchase/purchaseActivation.js","/**\n *\n * @module purchaseActivationResult\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from '../exception/invalidArgumentException';\n\nconst {\n array,\n boolean\n} = Check.assert;\n\n/**\n *\n * @class PurchaseActivationResult\n * @desc Describes the result of a purchase activation attempt.\n *\n */\nexport default class PurchaseActivationResult {\n\n /**\n *\n * @param {Boolean} [refreshAccessToken=false]\n * @param {Boolean} [temporaryAccessGranted=false]\n * @param {Array} [errors=[]]\n * @param {Array} [purchases=[]]\n *\n */\n constructor(refreshAccessToken = false, temporaryAccessGranted = false, errors = [], purchases = []) {\n\n const errorMessage = {\n method: 'PurchaseActivationResult(refreshAccessToken, temporaryAccessGranted, errors, purchases)',\n get refreshAccessToken() {\n return `${this.method} refreshAccessToken should be a Boolean`;\n },\n get temporaryAccessGranted() {\n return `${this.method} temporaryAccessGranted should be a Boolean`;\n },\n get errors() {\n return `${this.method} errors should be an Array`;\n },\n get purchases() {\n return `${this.method} purchases should be an Array`;\n }\n };\n\n boolean(refreshAccessToken, errorMessage.refreshAccessToken, InvalidArgumentException);\n boolean(temporaryAccessGranted, errorMessage.temporaryAccessGranted, InvalidArgumentException);\n array(errors, errorMessage.errors, InvalidArgumentException);\n array(purchases, errorMessage.purchases, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc Gets an indicator that the access token should be refreshed before proceeding.\n *\n */\n this.refreshAccessToken = refreshAccessToken;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc Gets an indicator of whether temporary access was granted.\n *\n */\n this.temporaryAccessGranted = temporaryAccessGranted;\n\n /**\n *\n * @access private\n * @type {Array}\n * @desc Gets Errors responsible for why the request did not succeeded.\n *\n */\n this.errors = errors;\n\n /**\n *\n * @access private\n * @type {Array}\n * @desc Purchase information for all activated SKUs.\n *\n */\n this.purchases = purchases;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/purchase/purchaseActivationResult.js","/**\n *\n * @module purchaseClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef PurchaseClientEndpoint\n * @type {Object}\n *\n * @property {String} redeemPurchases\n * @property {String} restorePurchases\n *\n */\n\n/**\n *\n * @enum\n * @type {PurchaseClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n redeemPurchases: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n restorePurchases: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/purchase/purchaseClientEndpoint.js","/**\n *\n * @module receiptCredentials\n *\n */\n\nimport Check from 'check-types';\nimport Util from './../util/entry';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class ReceiptCredentials\n * @desc Represents the data used to authenticate a purchase activation.\n *\n */\nexport default class ReceiptCredentials {\n\n /**\n *\n * @param {String} store - the store associated with this receipt\n * @param {Object} receipt - contains information about the purchase you are trying to validate\n *\n */\n constructor(store, receipt) {\n\n const errorMessage = {\n ctor: 'ReceiptCredentials(store, receipt)',\n get store() {\n return `${this.ctor} store should be a string with length`;\n },\n get receipt() {\n return `${this.ctor} receipt should be an Object`;\n }\n };\n\n nonEmptyString(store, errorMessage.store, InvalidArgumentException);\n object(receipt, errorMessage.receipt, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type String\n * @desc the store associated with this receipt\n *\n */\n this.store = store;\n\n /**\n *\n * @access public\n * @type Object\n * @desc the receipt used to validate the purchase\n *\n */\n this.receipt = receipt;\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @returns {Object} the payload being sent to services to validate the store purchase\n *\n */\n payload() {\n\n const receipt = this.receipt;\n let payload = {};\n\n switch (this.store) {\n\n case 'apple':\n payload = {\n receiptBundle: Util.getSafe(() => receipt.properties.receiptBundle),\n email: Util.getSafe(() => receipt.properties.email),\n identifierForVendor: Util.getSafe(() => receipt.properties.identifierForVendor)\n };\n break;\n\n }\n\n return payload;\n\n }\n\n /**\n *\n * @access private\n * @returns {String} the name of the store\n *\n */\n getStore() {\n\n return this.store;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/purchase/receiptCredentials.js","/**\n *\n * @module sessionClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SessionClientEndpoint\n * @type {Object}\n *\n * @property {String} getLocation\n * @property {String} getInfo\n *\n */\n\n/**\n *\n * @enum\n * @type {SessionClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getInfo: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/session/sessionClientEndpoint.js","/**\n *\n * @module sessionInfo\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../exception/entry';\n\nimport SessionDeviceInfo from './sessionDeviceInfo';\nimport SessionProfileInfo from './sessionProfileInfo';\nimport SessionAccountInfo from './sessionAccountInfo';\nimport SessionLocation from './sessionLocation';\nimport SessionEntitlement from './sessionEntitlement';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n boolean,\n instanceStrict,\n nonEmptyString,\n nonEmptyObject,\n array\n} = Check.assert;\n\n/**\n *\n * @class SessionInfo\n * @desc Represents the session info provided by the service.\n *\n */\nexport default class SessionInfo {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.id\n * @param {SDK.Services.Session.SessionAccountInfo} [options.account]\n * @param {SDK.Services.Session.SessionDeviceInfo} options.device\n * @param {SDK.Services.Session.SessionLocation} options.location\n * @param {SDK.Services.Session.SessionProfileInfo} [options.profile]\n * @param {SDK.Services.Session.SessionEntitlement[]} options.entitlements\n * @param {Boolean} options.inSupportedLocation - Denotes whether a user is in a supported country\n * @param {Boolean} options.isSubscriber\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'SessionInfo(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get id() {\n return `${this.ctor} options.id should be a String with length`;\n },\n get account() {\n return `${this.ctor} needs SessionAccountInfo instance`;\n },\n get device() {\n return `${this.ctor} needs SessionDeviceInfo instance`;\n },\n get location() {\n return `${this.ctor} needs SessionLocation instance`;\n },\n get profile() {\n return `${this.ctor} needs SessionProfileInfo instance`;\n },\n get entitlements() {\n return `${this.ctor} needs Array of SessionEntitlement instances`;\n },\n get inSupportedLocation() {\n return `${this.ctor} options.inSupportedLocation should be a Boolean`;\n },\n get isSubscriber() {\n return `${this.ctor} options.isSubscriber should be a Boolean`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { id, account, device, location, profile, entitlements, inSupportedLocation, isSubscriber } = options;\n\n nonEmptyString(id, errorMessage.id, InvalidArgumentException);\n\n if (Check.assigned(account)) {\n instanceStrict(\n account,\n SessionAccountInfo,\n errorMessage.account,\n InvalidArgumentException\n );\n }\n\n instanceStrict(\n device,\n SessionDeviceInfo,\n errorMessage.device,\n InvalidArgumentException\n );\n\n instanceStrict(\n location,\n SessionLocation,\n errorMessage.location,\n InvalidArgumentException\n );\n\n if (Check.assigned(profile)) {\n instanceStrict(\n profile,\n SessionProfileInfo,\n errorMessage.profile,\n InvalidArgumentException\n );\n }\n\n array.of.instanceStrict(\n entitlements,\n SessionEntitlement,\n errorMessage.entitlements,\n InvalidArgumentException\n );\n\n boolean(inSupportedLocation, errorMessage.inSupportedLocation, InvalidArgumentException);\n boolean(isSubscriber, errorMessage.isSubscriber, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.id = id;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Session.SessionAccountInfo|undefined}\n *\n */\n this.account = account;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Session.SessionDeviceInfo}\n *\n */\n this.device = device;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Session.SessionLocation}\n *\n */\n this.location = location;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Session.SessionProfileInfo|undefined}\n *\n */\n this.profile = profile;\n\n /**\n *\n * @access public\n * @type {Array}\n *\n */\n this.entitlements = entitlements;\n\n /**\n *\n * @access public\n * @type {Boolean}\n *\n */\n this.inSupportedLocation = inSupportedLocation;\n\n /**\n *\n * @access public\n * @since 3.10.0\n * @type {Boolean}\n *\n */\n this.isSubscriber = isSubscriber;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/session/sessionInfo.js","/**\n *\n * @module sessionLocationType\n *\n */\n\n/* eslint new-cap: 'off' */\n\n/**\n *\n * @enum\n *\n */\nexport default {\n /**\n *\n * @type {String}\n *\n */\n ANONYMOUS_IP: 'AnonymousIp',\n /**\n *\n * @type {String}\n *\n */\n COUNTRY_CODE: 'CountryCode',\n /**\n *\n * @type {String}\n *\n */\n LOW_CONFIDENCE: 'LowConfidence',\n /**\n *\n * @type {String}\n *\n */\n PROXIED_IP: 'ProxiedIp',\n /**\n *\n * @type {String}\n *\n */\n UNAVAILABLE: 'Unavailable',\n /**\n *\n * @type {String}\n *\n */\n UNKNOWN: 'Unknown',\n /**\n *\n * @type {String}\n *\n */\n ZIP_CODE: 'ZipCode'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/session/sessionLocationType.js","/**\n *\n * @module subscriptionStatusSubType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SubscriptionStatusSubType\n * @type {Object}\n *\n * @property {String} PENDING_VOLUNTARY_CANCEL\n * @property {String} PENDING_INVOLUNTARY_CANCEL\n * @property {String} VOLUNTARY_CANCEL\n * @property {String} INVOLUNTARY_CANCEL\n * @property {String} LAPSED\n *\n */\n\n/**\n *\n * @enum\n * @type {SubscriptionStatusSubType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n PENDING_VOLUNTARY_CANCEL: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n PENDING_INVOLUNTARY_CANCEL: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n VOLUNTARY_CANCEL: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n INVOLUNTARY_CANCEL: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n LAPSED: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionStatusSubType.js","/**\n *\n * @module subscriptionStatusType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SubscriptionStatusType\n * @type {Object}\n *\n * @property {String} SUBSCRIBED\n * @property {String} UNSUBSCRIBED\n *\n */\n\n/**\n *\n * @enum\n * @type {SubscriptionStatusType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n SUBSCRIBED: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n UNSUBSCRIBED: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionStatusType.js","/**\n *\n * @module subscriptionClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SubscriptionClientEndpoint\n * @type {Object}\n *\n * @property {String} getSubscriptions\n * @property {String} linkSubscriptionsFromDevice\n *\n */\n\n/**\n *\n * @enum\n * @type {SubscriptionClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getSubscriptions: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n linkSubscriptionsFromDevice: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionClientEndpoint.js","/**\n *\n * @module subscriptionFreeTrialStatus\n *\n */\n\n/**\n *\n * @enum\n * @since 4.2.4\n * @type {SDK.Services.Subscription.SubscriptionFreeTrialStatus}\n * @desc Whether or not the subscription is in a free trial.\n * The status may be unknown if the client that created the subscription\n * cannot know for sure if the subscription is in a free trial or not.\n * For D2C subscriptions we should know with certainty if the subscription\n * is in free trial or not.\n * @note Closed enum, when dealing with a unrecognized value use unknown\n *\n * @property {String} unknown\n * @property {String} active\n * @property {String} inactive\n *\n */\nexport default {\n\n /**\n *\n * @access public\n * @since 4.2.4\n * @type {String}\n *\n */\n unknown: 'UNKNOWN',\n /**\n *\n * @access public\n * @since 4.2.4\n * @type {String}\n *\n */\n active: 'ACTIVE',\n /**\n *\n * @access public\n * @since 4.2.4\n * @type {String}\n *\n */\n inactive: 'INACTIVE'\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionFreeTrialStatus.js","/**\n *\n * @module memoryStore\n *\n */\n\n/**\n *\n * @class MemoryStore\n * @desc Simple storage implementation, based on a plain Object\n * @since 2.1.0\n *\n */\nexport default class MemoryStore {\n\n constructor() {\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc local store\n *\n */\n this.store = {};\n\n }\n\n /**\n *\n * @access public\n * @method setItem\n * @param {String} key\n * @param {Object} value\n * @returns {Object}\n *\n */\n setItem(key, value) {\n\n this.store[key] = value;\n\n return this.store[key];\n\n }\n\n /**\n *\n * @access public\n * @method getItem\n * @param {String} key\n * @returns {String}\n *\n */\n getItem(key) {\n\n return this.store[key];\n\n }\n\n /**\n *\n * @access public\n * @method removeItem\n * @param {String} key\n * @returns {Undefined}\n *\n */\n removeItem(key) {\n\n delete this.store[key];\n\n return undefined;\n\n }\n\n /**\n *\n * @access public\n * @method clear\n * @returns {Object}\n *\n */\n clear() {\n\n this.store = {};\n\n return this.store;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/memoryStore.js","/**\n *\n * @module subscriptionManager\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\nimport Subscription from './subscription';\n\nconst AccessTokenProvider = Token.AccessTokenProvider;\nconst SubscriptionManagerConfiguration = Services.Configuration.SubscriptionManagerConfiguration;\nconst SubscriptionClient = Services.Subscription.SubscriptionClient;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class SubscriptionManager\n *\n */\nexport default class SubscriptionManager {\n\n /**\n *\n * @param {SDK.Services.Configuration.SubscriptionManagerConfiguration} subscriptionManagerConfiguration\n * @param {SDK.Services.Subscription.SubscriptionClient} subscriptionClient\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Token.AccessTokenProvider} accessTokenProvider\n *\n */\n constructor(subscriptionManagerConfiguration, subscriptionClient, logger = Logging, accessTokenProvider) {\n\n const errorMessage = {\n ctor: 'SubscriptionManager(subscriptionManagerConfiguration, subscriptionClient, logger, accessTokenProvider)', // eslint-disable-line\n get subscriptionManagerConfiguration() {\n return `${this.ctor} needs SubscriptionManagerConfiguration instance`;\n },\n get subscriptionClient() {\n return `${this.ctor} needs SDK.Services.Subscription.SubscriptionClient instance`;\n },\n get accessTokenProvider() {\n return `${this.ctor} needs SDK.Token.AccessTokenProvider instance`;\n }\n };\n\n instanceStrict(subscriptionManagerConfiguration, SubscriptionManagerConfiguration, errorMessage.subscriptionManagerConfiguration, InvalidArgumentException); // eslint-disable-line\n instanceStrict(subscriptionClient, SubscriptionClient, errorMessage.subscriptionClient, InvalidArgumentException); // eslint-disable-line\n instanceStrict(accessTokenProvider, AccessTokenProvider, errorMessage.accessTokenProvider, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.SubscriptionManagerConfiguration}\n *\n */\n this.config = subscriptionManagerConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Subscription.SubscriptionClient}\n *\n */\n this.client = subscriptionClient;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Token.AccessTokenProvider}\n *\n */\n this.accessTokenProvider = accessTokenProvider;\n\n this.logger.log(SubscriptionManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @desc Returns a list of subscriptions for the current user.\n * @returns {Promise>}\n *\n */\n getSubscriptions() {\n\n return this.client.getSubscriptions(this.accessToken).then((subscriptionData) => {\n\n const subscriptions = [];\n\n if (Check.nonEmptyArray(subscriptionData)) {\n\n subscriptionData.forEach((subscription) => {\n subscriptions.push(new Subscription(subscription));\n });\n\n }\n\n return Promise.resolve(subscriptions);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @desc Links (copies) all subscriptions from the user's device to the Account.\n * @returns {Promise}\n *\n */\n linkSubscriptionsFromDevice() {\n\n return this.client.linkSubscriptionsFromDevice(this.accessToken);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.accessTokenProvider.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription/subscriptionManager.js","/**\n *\n * @module accessState\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../services/exception/entry';\nimport AccessStateData from './accessStateData';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class AccessState\n * @desc Represents the state of the SDK to allow it to be transfered to another device.\n *\n */\nexport default class AccessState {\n\n /**\n *\n * @param {String} version\n * @param {AccessStateData} data\n * @throws {InvalidArgumentException}\n *\n */\n constructor(version, data) {\n\n const errorMessage = {\n ctor: 'AccessState(version, data)',\n get version() {\n return `${this.ctor} version should be a String with length`;\n },\n get data() {\n return `${this.ctor} needs AccessStateData instance`;\n }\n };\n\n nonEmptyString(version, errorMessage.version, InvalidArgumentException);\n instanceStrict(data, AccessStateData, errorMessage.data, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.version = version;\n\n /**\n *\n * @access public\n * @type {AccessStateData}\n *\n */\n this.data = data;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/accessState.js","/**\n *\n * @module accessStorage\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Access from './access';\nimport AccessContextState from './accessContextState';\n\nconst Util = Services.Util;\nconst Storage = Services.Storage;\nconst AccessContext = Services.Token.AccessContext;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class AccessStorage\n * @desc Provides a storage mechanism for storing Access.\n *\n */\nexport default class AccessStorage {\n\n /**\n *\n * @param {String} clientId\n * @param {String} environment\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Token.Access} [access=null]\n * @param {SDK.Services.Storage} [storage=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(clientId, environment, logger = Logging, access = null, storage = null) {\n\n const errorMessage = {\n ctor: 'AccessStorage(clientId, environment, logger, access, storage)',\n get clientId() {\n return `${this.ctor} clientId should be a String with length`;\n },\n get environment() {\n return `${this.ctor} environment should be a String with length`;\n },\n get access() {\n return `${this.ctor} needs SDK.Token.Access instance`;\n },\n get storage() {\n return `${this.ctor} needs SDK.Services.Storage instance`;\n }\n };\n\n nonEmptyString(clientId, errorMessage.clientId, InvalidArgumentException);\n nonEmptyString(environment, errorMessage.environment, InvalidArgumentException);\n\n if (Check.assigned(access)) {\n instanceStrict(access, Access, errorMessage.access, InvalidArgumentException);\n }\n\n if (Check.assigned(storage)) {\n instanceStrict(storage, Storage, errorMessage.storage, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.clientId = clientId;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.environment = environment;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Access|Null}\n *\n */\n this.access = null;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Storage}\n *\n */\n this.storage = storage || new Storage(this.logger);\n\n /**\n *\n * @access private\n * @type {String}\n * @desc cache key scoped under client ID and environment to prevent clashes,\n * maintains the same structure as all other cacheKey(s) in the SDK\n *\n */\n this.cacheKey = `\n __bam_sdk_access--${this.clientId}_${this.environment}\n `.replace(/(?:\\n\\s+)/g, '');\n\n /**\n *\n * @access private\n * @type {String}\n * @desc legacy (version 2) cacheKey reference\n *\n */\n this.cacheKeyLegacy = `\n __bam_sdk_authorization_context--${this.clientId}_${this.environment}\n `.replace(/(?:\\n\\s+)/g, '');\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc helps determine if you are migrating from a v2 -> v3 token\n *\n */\n this.isLegacyToken = false;\n\n this.logger.log(AccessStorage.name, 'Created.');\n\n /**\n *\n * @note save Access if passed in as an argument, otherwise\n * attempt to fetch from the {SDK.Services.Storage} implementation\n *\n */\n if (Check.assigned(access)) {\n\n this.saveAccess(access);\n\n } else {\n\n this.getAccessFromStorage();\n\n }\n\n }\n\n /**\n *\n * @access private\n * @param {Access} access\n * @desc stores Access in Storage\n * @returns {Promise}\n *\n */\n saveAccess(access) {\n\n const errorMessage = {\n method: 'AccessStorage.saveAccess(access)',\n get access() {\n return `${this.method} needs Access instance`;\n }\n };\n\n instanceStrict(access, Access, errorMessage.access, InvalidArgumentException);\n\n const { cacheKey, logger, storage } = this;\n\n logger.info(AccessStorage.name, `Save Access to Storage using key: \"${cacheKey}\".`);\n\n this.access = access;\n\n return storage.set(cacheKey, this.access);\n\n }\n\n /**\n *\n * @access private\n * @desc returns Access from Storage\n * @returns {Access}\n *\n */\n getAccess() {\n\n const { logger } = this;\n\n logger.log(AccessStorage.name, 'Get cached Access.');\n\n return this.access;\n\n }\n\n /**\n *\n * @access private\n * @desc deletes the current Access from Storage\n * @returns {Promise}\n *\n */\n clear() {\n\n const { cacheKey, logger, storage } = this;\n\n logger.warn(AccessStorage.name, `Clearing cached Access for key: \"${cacheKey}\".`);\n\n this.access = null;\n\n return storage.remove(cacheKey);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc executed a single time on AccessStorage instantiation\n * checks Storage to determine if Access was previously stored,\n * should fail silently if no Access found\n * @note when the primary cache key is not found, the legacy key is\n * checked for migration purposes (the old token is exchanged for a new one)\n * @returns {Promise}\n *\n */\n getAccessFromStorage() {\n\n const { cacheKey, logger, storage } = this;\n\n logger.info(AccessStorage.name, `Get Access from Storage using cache key: \"${cacheKey}\".`);\n\n return storage.get(cacheKey).catch(() => {\n\n return Promise.resolve(this.access);\n\n }).then((access) => {\n\n const context = Util.getSafe(() => access.context);\n const contextStateModes = Util.getSafe(() => access.contextState.modes);\n\n if (Check.assigned(context)) {\n\n this.access = new Access(\n new AccessContext(context),\n new AccessContextState(contextStateModes)\n );\n\n return Promise.resolve(this.access);\n\n }\n\n return this.getLegacyAccessFromStorage();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @desc grabs the legacy access context from Storage for migration purposes\n * @note for migration purposes, the refreshToken is required, however both tokens\n * are included below for completness\n * @note the expiresIn value is set to 0 to force an immediate refresh\n * @returns {Promise}\n *\n */\n getLegacyAccessFromStorage() {\n\n const { cacheKeyLegacy, logger, storage } = this;\n\n logger.info(AccessStorage.name, `Get legacy Access from Storage using cache key: \"${cacheKeyLegacy}\".`);\n\n return storage.get(cacheKeyLegacy).catch(() => {\n\n return Promise.resolve(this.access);\n\n }).then((context) => {\n\n const token = Util.getSafe(() => context.accessToken);\n const refreshToken = Util.getSafe(() => context.refreshToken);\n const expiresIn = 0;\n\n if (Check.assigned(refreshToken)) {\n\n this.isLegacyToken = true;\n this.access = new Access(\n new AccessContext({\n token,\n refreshToken,\n expiresIn\n }),\n new AccessContextState()\n );\n\n }\n\n return storage.remove(cacheKeyLegacy).then(() => {\n return Promise.resolve(this.access);\n });\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/accessStorage.js","/**\n *\n * @module accessTokenProvider\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/token.md\n *\n */\n\nimport Check from 'check-types';\nimport EventEmitter from 'events';\nimport Logging from './../logging/entry';\nimport AccessToken from './accessToken';\n\n/**\n *\n * @class AccessTokenProvider\n * @extends {EventEmitter}\n * @see https://nodejs.org/api/events.html\n * @desc Provides the Access token and associated state.\n *\n */\nexport default class AccessTokenProvider extends EventEmitter {\n\n /**\n *\n * @param {AccessStorage} [accessStorage=null]\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(accessStorage = null, logger = Logging) {\n\n super();\n\n /**\n *\n * @access private\n * @type {AccessStorage}\n * @note returns storage instance to be used when AccessTokenProvder is\n * not extended\n *\n */\n this.accessStorage = accessStorage;\n\n /**\n *\n * @access private\n * @type {AccessToken|null}\n *\n */\n this.accessToken = this.getAccessToken();\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.log(AccessTokenProvider.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @emits {AccessChange} The event raised each time a access token is updated.\n * @returns {AccessToken|null}\n *\n */\n getAccessToken() {\n\n const { logger } = this;\n\n const storage = this.storage ? this.storage : this.accessStorage;\n const access = storage && storage.getAccess();\n\n if (Check.not.assigned(access)) {\n return null;\n }\n\n const accessToken = new AccessToken(access.context.token);\n\n if (this.hasTokenChanged(accessToken)) {\n\n logger.info(AccessTokenProvider.name, 'Dispatch AccessChange event.');\n\n this.emit('AccessChange', accessToken);\n\n }\n\n this.accessToken = accessToken;\n\n return this.accessToken;\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {AccessToken} providerToken\n * @desc determines if the access token value has been updated\n * @returns {Boolean}\n *\n */\n hasTokenChanged(providerToken) {\n\n const accessToken = this.accessToken;\n\n if (Check.assigned(accessToken) && Check.assigned(providerToken)) {\n if (Check.not.equal(accessToken.token, providerToken.token)) {\n return true;\n }\n }\n\n return false;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/accessTokenProvider.js","/**\n *\n * @module tokenRefreshFailure\n *\n */\n\n/**\n *\n * @class TokenRefreshFailure\n *\n */\nexport default class TokenRefreshFailure {\n\n /**\n *\n * @param {Exception} error\n *\n */\n constructor(error) {\n\n /**\n *\n * @access public\n * @type {Exception}\n *\n */\n this.error = error;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/tokenRefreshFailure.js","/**\n *\n * @module deviceGrantStorage\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\n\nconst Util = Services.Util;\nconst Storage = Services.Storage;\nconst DeviceGrant = Services.Token.DeviceGrant;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class DeviceGrantStorage\n * @desc Provides a storage mechanism for storing DeviceGrant.\n *\n */\nexport default class DeviceGrantStorage {\n\n /**\n *\n * @param {String} clientId\n * @param {String} environment\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Services.Token.DeviceGrant} [deviceGrant=null]\n * @param {SDK.Services.Storage} [storage=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(clientId, environment, logger = Logging, deviceGrant = null, storage = null) {\n\n const errorMessage = {\n ctor: 'DeviceGrantStorage(clientId, environment, logger, deviceGrant, storage)',\n get clientId() {\n return `${this.ctor} clientId should be a String with length`;\n },\n get environment() {\n return `${this.ctor} environment should be a String with length`;\n },\n get deviceGrant() {\n return `${this.ctor} needs SDK.Services.Token.DeviceGrant instance`;\n },\n get storage() {\n return `${this.ctor} needs SDK.Services.Storage instance`;\n }\n };\n\n\n nonEmptyString(clientId, errorMessage.clientId, InvalidArgumentException);\n nonEmptyString(environment, errorMessage.environment, InvalidArgumentException);\n\n if (Check.assigned(deviceGrant)) {\n instanceStrict(deviceGrant, DeviceGrant, errorMessage.deviceGrant, InvalidArgumentException);\n }\n\n if (Check.assigned(storage)) {\n instanceStrict(storage, Storage, errorMessage.storage, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.clientId = clientId;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.environment = environment;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Token.DeviceGrant|Null}\n *\n */\n this.deviceGrant = null;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Storage}\n *\n */\n this.storage = storage || new Storage(this.logger);\n\n /**\n *\n * @access private\n * @type {String}\n * @desc cache key scoped under client ID and environment to prevent clashes,\n * maintains the same structure as all other cacheKey(s) in the SDK\n *\n */\n this.cacheKey = `\n __bam_sdk_device_grant--${this.clientId}_${this.environment}\n `.replace(/(?:\\n\\s+)/g, '');\n\n this.logger.log(DeviceGrantStorage.name, 'Created.');\n\n /**\n *\n * @note save DeviceGrant if passed in as an argument, otherwise\n * attempt to fetch from the {SDK.Services.Storage} implementation\n *\n */\n if (Check.assigned(deviceGrant)) {\n\n this.saveDeviceGrant(deviceGrant);\n\n } else {\n\n this.getDeviceGrantFromStorage();\n\n }\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.DeviceGrant} deviceGrant\n * @desc stores a device grant in Storage\n * @returns {Promise}\n *\n */\n saveDeviceGrant(deviceGrant) {\n\n const errorMessage = {\n method: 'DeviceGrantStorage.saveDeviceGrant(deviceGrant)',\n get deviceGrant() {\n return `${this.method} needs SDK.Services.Token.DeviceGrant instance`;\n }\n };\n\n instanceStrict(deviceGrant, DeviceGrant, errorMessage.deviceGrant, InvalidArgumentException);\n\n const { cacheKey, logger, storage } = this;\n\n logger.info(DeviceGrantStorage.name, `Save device grant to Storage using key: \"${cacheKey}\".`);\n\n this.deviceGrant = deviceGrant;\n\n return storage.set(cacheKey, this.deviceGrant);\n\n }\n\n /**\n *\n * @access private\n * @desc returns the current device grant from Storage\n * @returns {SDK.Services.Token.DeviceGrant}\n *\n */\n getDeviceGrant() {\n\n const { logger } = this;\n\n logger.log(DeviceGrantStorage.name, 'Get cached device grant.');\n\n return this.deviceGrant;\n\n }\n\n /**\n *\n * @access private\n * @desc deletes the current device grant from Storage\n * @returns {Promise}\n *\n */\n clear() {\n\n const { cacheKey, logger, storage } = this;\n\n logger.warn(DeviceGrantStorage.name, `Clearing cached device grant for key: \"${cacheKey}\".`);\n\n this.deviceGrant = null;\n\n return storage.remove(cacheKey);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc executed a single time on DeviceGrantStorage instantiation\n * checks Storage to determine if a device grant was previously stored,\n * should fail silently if no device grant found\n * @returns {Promise}\n *\n */\n getDeviceGrantFromStorage() {\n\n const { cacheKey, logger, storage } = this;\n\n logger.info(DeviceGrantStorage.name, `Get device grant from Storage using cache key: \"${cacheKey}\".`);\n\n return storage.get(cacheKey).catch(() => {\n\n return Promise.resolve(this.deviceGrant);\n\n }).then((deviceGrant) => {\n\n const grantType = Util.getSafe(() => deviceGrant.grantType);\n const assertion = Util.getSafe(() => deviceGrant.assertion);\n\n if (Check.assigned(grantType)) {\n this.deviceGrant = new DeviceGrant(grantType, assertion);\n }\n\n return Promise.resolve(this.deviceGrant);\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/deviceGrantStorage.js","/**\n *\n * @module subscription\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport BundleStatus from './bundleStatus';\nimport Product from './product';\nimport SubscriptionSource from './subscriptionSource';\nimport SubscriptionProvider from './subscriptionProvider';\n\nconst Account = Services.Account.Account;\n\nconst ProductRule = Services.Subscription.ProductRule;\nconst SubscriptionExpiryType = Services.Subscription.SubscriptionExpiryType;\nconst SubscriptionStatus = Services.Subscription.SubscriptionStatus;\nconst SubscriptionType = Services.Subscription.SubscriptionType;\nconst SubscriptionOffer = Services.Subscription.SubscriptionOffer;\nconst SubscriptionFreeTrial = Services.Subscription.SubscriptionFreeTrial;\n\nconst Util = Services.Util;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n boolean,\n date,\n instanceStrict,\n nonEmptyObject,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class Subscription\n * @desc Represents the subscription data the services provide.\n *\n */\nexport default class Subscription {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.accountId]\n * @param {String} [options.deviceId]\n * @param {String} [options.expirationDate]\n * @param {String} [options.expiryType=SubscriptionExpiryType.UNKNOWN]\n * @param {String} [options.externalIdentity]\n * @param {String} options.id\n * @param {Boolean} options.isActive\n * @param {String} [options.lastSyncDate]\n * @param {String} [options.nextRenewalDate]\n * @param {Array} options.products\n * @param {Object} [options.rule]\n * @param {Object} options.source\n * @param {String} [options.startDate]\n * @param {Object} options.status\n * @param {String} [options.type]\n * @param {String} [options.purchaseDate]\n * @param {Boolean} [options.bundle]\n * @param {Object} [options.offer]\n * @param {Object} [options.freeTrial]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'Subscription(options)',\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get accountId() {\n return `${this.ctor} accountId should be a String with length`;\n },\n get deviceId() {\n return `${this.ctor} deviceId should be a String with length`;\n },\n get expirationDate() {\n return `${this.ctor} expirationDate should be a String with length`;\n },\n get expiryType() {\n return `${this.ctor} expiryType should be a String with length`;\n },\n get externalIdentity() {\n return `${this.ctor} externalIdentity should be a String with length`;\n },\n get id() {\n return `${this.ctor} id should be a String with length`;\n },\n get isActive() {\n return `${this.ctor} isActive should be a Boolean`;\n },\n get lastSyncDate() {\n return `${this.ctor} lastSyncDate should be a String with length`;\n },\n get nextRenewalDate() {\n return `${this.ctor} nextRenewalDate should be a String with length`;\n },\n get products() {\n return `${this.ctor} products needs Array of Objects`;\n },\n get rule() {\n return `${this.ctor} rule should be an Object`;\n },\n get source() {\n return `${this.ctor} source should be an Object`;\n },\n get startDate() {\n return `${this.ctor} startDate should be a String with length`;\n },\n get status() {\n return `${this.ctor} status should be an Object`;\n },\n get type() {\n return `${this.ctor} type should be a String with length`;\n },\n get purchaseDate() {\n return `${this.ctor} options.purchaseDate should be a String with length and conform to ISO 8601`;\n },\n get bundle() {\n return `${this.ctor} bundle should be a Boolean`;\n },\n get offer() {\n return `${this.ctor} offer should be an Object`;\n },\n get freeTrial() {\n return `${this.ctor} freeTrial should be an Object`;\n }\n };\n\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { accountId, deviceId, expirationDate, expiryType, externalIdentity } = options;\n const { id, isActive, lastSyncDate, nextRenewalDate, products = [] } = options;\n const { rule, source, startDate, status, type, purchaseDate, bundle } = options;\n const { offer, freeTrial } = options;\n\n let bundleStatus;\n\n if (Check.assigned(accountId)) {\n nonEmptyString(accountId, errorMessage.accountId, InvalidArgumentException);\n }\n\n if (Check.assigned(deviceId)) {\n nonEmptyString(deviceId, errorMessage.deviceId, InvalidArgumentException);\n }\n\n if (Check.assigned(expirationDate)) {\n nonEmptyString(expirationDate, errorMessage.expirationDate, InvalidArgumentException);\n }\n\n if (Check.assigned(expiryType)) {\n nonEmptyString(expiryType, errorMessage.expiryType, InvalidArgumentException);\n }\n\n if (Check.assigned(externalIdentity)) {\n nonEmptyString(externalIdentity, errorMessage.externalIdentity, InvalidArgumentException);\n }\n\n nonEmptyString(id, errorMessage.id, InvalidArgumentException);\n boolean(isActive, errorMessage.isActive, InvalidArgumentException);\n\n if (Check.assigned(lastSyncDate)) {\n nonEmptyString(lastSyncDate, errorMessage.lastSyncDate, InvalidArgumentException);\n }\n\n if (Check.assigned(nextRenewalDate)) {\n nonEmptyString(nextRenewalDate, errorMessage.nextRenewalDate, InvalidArgumentException);\n }\n\n array.of.instanceStrict(products, Object, errorMessage.products, InvalidArgumentException);\n\n const productsArray = [];\n\n if (Check.nonEmptyArray(products)) {\n products.forEach((product) => {\n productsArray.push(new Product(product));\n });\n }\n\n if (Check.assigned(rule)) {\n nonEmptyObject(rule, errorMessage.rule, InvalidArgumentException);\n }\n\n instanceStrict(source, Object, errorMessage.source, InvalidArgumentException);\n\n if (Check.assigned(startDate)) {\n nonEmptyString(startDate, errorMessage.startDate, InvalidArgumentException);\n }\n\n instanceStrict(status, Object, errorMessage.status, InvalidArgumentException);\n\n if (Check.assigned(type)) {\n nonEmptyString(type, errorMessage.type, InvalidArgumentException);\n }\n\n if (Check.assigned(purchaseDate) && !Util.dateRegex(purchaseDate)) {\n date(null, errorMessage.purchaseDate, InvalidArgumentException);\n }\n\n if (Check.assigned(bundle)) {\n\n boolean(bundle, errorMessage.bundle, InvalidArgumentException);\n\n bundleStatus = bundle ? BundleStatus.bundle : BundleStatus.notBundle;\n\n }\n\n if (Check.assigned(offer)) {\n instanceStrict(offer, Object, errorMessage.offer, InvalidArgumentException);\n }\n\n if (Check.assigned(freeTrial)) {\n instanceStrict(freeTrial, Object, errorMessage.freeTrial, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {Date|null}\n * @desc Gets the expiration date of the subscription.\n *\n */\n this.expirationDate = expirationDate ? new Date(expirationDate) : null;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Subscription.SubscriptionExpiryType}\n * @desc Gets the expiry type.\n *\n */\n this.expiryType = SubscriptionExpiryType[expiryType] || SubscriptionExpiryType.UNKNOWN;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets the URN associated with the subscription.\n *\n */\n this.id = id;\n\n /**\n *\n * @access public\n * @type {Boolean}\n * @gets Gets the boolean value of whether is active or not.\n *\n */\n this.isActive = isActive;\n\n /**\n *\n * @access public\n * @type {Date|null}\n * @desc Gets the date of the subscription's next renewal.\n *\n */\n this.nextRenewalDate = nextRenewalDate ? new Date(nextRenewalDate) : null;\n\n /**\n *\n * @access public\n * @type {Array}\n * @desc Gets the array of Products.\n *\n */\n this.products = productsArray;\n\n /**\n *\n * @access public\n * @type {Date|null}\n * @desc Gets the start date of the subscription.\n *\n */\n this.startDate = startDate ? new Date(startDate) : null;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Subscription.SubscriptionStatus}\n * @desc Gets the status of the subscription.\n *\n */\n this.status = new SubscriptionStatus(status);\n\n /**\n *\n * @access public\n * @type {SDK.Subscription.SubscriptionProvider}\n *\n */\n this.provider = SubscriptionProvider[source.provider] || SubscriptionProvider.OTHER;\n\n /**\n *\n * @access private\n * @type {String|undefined}\n * @desc Gets the ID of the account the subscription is associated with.\n *\n */\n this.accountId = accountId;\n\n /**\n *\n * @access private\n * @type {String|undefined}\n * @desc Gets the ID of the device the subscription is associated with.\n *\n */\n this.deviceId = deviceId;\n\n /**\n *\n * @access private\n * @type {String|undefined}\n * @desc Gets the external identity.\n *\n */\n this.externalIdentity = externalIdentity;\n\n /**\n *\n * @access private\n * @type {Date|null}\n * @desc Gets the date of the last time the subscription was synchronized.\n *\n */\n this.lastSyncDate = lastSyncDate ? new Date(lastSyncDate) : null;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Subscription.ProductRule|null}\n * @desc Gets the product rule.\n *\n */\n this.rule = rule ? new ProductRule(rule) : null;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Subscription.SubscriptionSource}\n * @desc Gets the source of the subscription.\n *\n */\n this.source = new SubscriptionSource(source);\n\n /**\n *\n * @access private\n * @type {SDK.Services.Subscription.SubscriptionType|undefined}\n * @desc Gets the type of the subscription.\n *\n */\n this.type = SubscriptionType[type];\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {String|undefined}\n * @note (\"YYYY-MM-DDThh:mm:ss.sssZ\") Should conform to ISO-8601.\n * @desc The date which the subscription is purchased.\n *\n */\n this.purchaseDate = purchaseDate;\n\n /**\n *\n * @access public\n * @since 4.1.1\n * @type {SDK.Subscription.BundleStatus}\n * @desc Indicates whether the subscription is a bundle of entitlements for\n * different partners or third party systems.\n *\n */\n this.bundleStatus = bundleStatus || BundleStatus.unknown;\n\n /**\n *\n * @access public\n * @since 4.2.4\n * @type {SDK.Services.Subscription.SubscriptionOffer|null}\n *\n */\n this.offer = offer ? new SubscriptionOffer(offer) : null;\n\n /**\n *\n * @access public\n * @since 4.2.4\n * @type {SDK.Services.Subscription.SubscriptionFreeTrial|null}\n * @desc Free trial information for the subscription.\n *\n */\n this.freeTrial = freeTrial ? new SubscriptionFreeTrial(freeTrial) : null;\n\n }\n\n /**\n *\n * @access public\n * @desc Checks a subscription to determine if it is already bound to a device.\n * @returns {Boolean}\n *\n */\n isBoundToDevice() {\n\n return Check.nonEmptyString(this.deviceId);\n\n }\n\n /**\n *\n * @access public\n * @desc Checks a subscription to determine if it is already bound to an account.\n * @param {SDK.Services.Account.Account} [account=null]\n * @returns {Boolean}\n *\n */\n isBoundToAccount(account = null) {\n\n const { accountId } = this;\n\n const hasAccountId = Check.assigned(accountId);\n\n if (hasAccountId && Check.instanceStrict(account, Account)) {\n return Check.equal(accountId, account.accountId);\n }\n\n return hasAccountId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription/subscription.js","/**\n *\n * @module bundleStatus\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef BundleStatus\n * @type {Object}\n * @since 4.2.0\n * @desc Defines the different status a bundle can be in.\n * @example BundleStatus.bundle // 'bundle'\n *\n * @property {String} bundle - The `bundle` field was true\n * @property {String} notBundle - The `bundle` field was false\n * @property {String} unknown - The `bundle` field was null\n *\n */\n\n/**\n *\n * @enum\n * @type {BundleStatus}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n bundle: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n notBundle: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n unknown: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription/bundleStatus.js","/**\n *\n * @module product\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\nimport ProductEntitlement from './productEntitlement';\nimport ProductStatus from './productStatus';\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ProductRule = Services.Subscription.ProductRule;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n nonEmptyObject,\n nonEmptyString,\n number\n} = Check.assert;\n\n/**\n *\n * @class Product\n * @desc Represents a product a user is subscribed to.\n *\n */\nexport default class Product {\n\n /**\n *\n * @param {Object} options\n * @param {Array} [options.categoryCodes=[]]\n * @param {Object} [options.error=null]\n * @param {Number} [options.id=undefined]\n * @param {String} [options.name=undefined]\n * @param {String} [options.partner=undefined]\n * @param {Array} [options.productEntitlements=[]]\n * @param {Object} [options.rule=null]\n * @param {String} options.sku\n * @param {String} options.status\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'Product(options)',\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get categoryCodes() {\n return `${this.ctor} options.categoryCodes should be an Array of Strings`;\n },\n get error() {\n return `${this.ctor} options.error should be an Object`;\n },\n get id() {\n return `${this.ctor} options.id should be a Number`;\n },\n get name() {\n return `${this.ctor} options.name should be a String with length`;\n },\n get partner() {\n return `${this.ctor} options.partner should be a String with length`;\n },\n get productEntitlements() {\n return `${this.ctor} options.productEntitlements should be an Array of Objects`;\n },\n get rule() {\n return `${this.ctor} options.rule should be an Object`;\n },\n get sku() {\n return `${this.ctor} options.sku should be a String with length`;\n },\n get status() {\n return `${this.ctor} options.status should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { categoryCodes = [], error, id, name, partner, productEntitlements = [], rule, sku, status } = options;\n\n nonEmptyString(sku, errorMessage.sku, InvalidArgumentException);\n nonEmptyString(status, errorMessage.status, InvalidArgumentException);\n array.of.nonEmptyString(categoryCodes, errorMessage.categoryCodes, InvalidArgumentException);\n\n let errorReason = null;\n\n if (Check.assigned(error) && Check.assigned(error.code) && Check.assigned(error.description)) {\n errorReason = new ErrorReason(error.code, error.description);\n }\n\n if (Check.assigned(id)) {\n number(id, errorMessage.id, InvalidArgumentException);\n }\n\n if (Check.assigned(name)) {\n nonEmptyString(name, errorMessage.name, InvalidArgumentException);\n }\n\n if (Check.assigned(partner)) {\n nonEmptyString(partner, errorMessage.partner, InvalidArgumentException);\n }\n\n array.of.nonEmptyObject(productEntitlements, errorMessage.productEntitlements, InvalidArgumentException);\n\n if (Check.assigned(rule)) {\n nonEmptyObject(rule, errorMessage.rule, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {Array}\n * @desc An array of category codes associated with the product.\n *\n */\n this.categoryCodes = categoryCodes;\n\n /**\n *\n * @access public\n * @type {Number|undefined}\n * @desc Gets the ID.\n *\n */\n this.id = id;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n * @desc Gets the name of the product.\n *\n */\n this.name = name;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets the SKU.\n *\n */\n this.sku = sku;\n\n /**\n *\n * @access public\n * @type {SDK.Subscription.ProductStatus}\n *\n */\n this.status = ProductStatus[status] || ProductStatus.UNKNOWN;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Exception.ErrorReason|null}\n * @desc Gets the error reason if one is associated with the product.\n *\n */\n this.error = errorReason;\n\n /**\n *\n * @access public\n * @type {Array}\n * @desc Gets an array of product entitlements.\n *\n */\n this.entitlements = productEntitlements.map((entitlement) => new ProductEntitlement(entitlement));\n\n /**\n *\n * @access private\n * @type {String|undefined}\n * @desc Gets the partner associated with the product.\n *\n */\n this.partner = partner;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Subscription.ProductRule|null}\n * @desc Gets the product rule.\n *\n */\n this.rule = rule ? new ProductRule(rule) : null;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription/product.js","/**\n *\n * @module productEntitlement\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString,\n number,\n object\n} = Check.assert;\n\n/**\n *\n * @class ProductEntitlement\n * @desc Represents the entitlements associated with a product a user is subscribed to.\n *\n */\nexport default class ProductEntitlement {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.desc=undefined]\n * @param {Number} options.id\n * @param {String} options.name\n * @param {String} [options.partner]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'ProductEntitlement(options)',\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get id() {\n return `${this.ctor} id should be a Number`;\n },\n get name() {\n return `${this.ctor} name should be a String with length`;\n },\n get desc() {\n return `${this.ctor} desc should be a String with length`;\n },\n get partner() {\n return `${this.ctor} partner should be a String with length`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { desc, id, name, partner } = options;\n\n number(id, errorMessage.id, InvalidArgumentException);\n nonEmptyString(name, errorMessage.name, InvalidArgumentException);\n\n if (Check.assigned(desc)) {\n nonEmptyString(desc, errorMessage.desc, InvalidArgumentException);\n }\n\n if (Check.assigned(partner)) {\n nonEmptyString(partner, errorMessage.partner, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {String|undefined}\n * @desc The description of the product entitlement.\n *\n */\n this.description = desc;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The id of the product entitlement.\n *\n */\n this.id = id;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The name of the product entitlement.\n *\n */\n this.name = name;\n\n /**\n *\n * @access public\n * @since 4.1.1\n * @type {String|undefined}\n * @desc The partner this entitlement is related to\n *\n */\n this.partner = partner;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription/productEntitlement.js","/**\n *\n * @module productStatus\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef ProductStatus\n * @type {Object}\n * @since 3.0.1\n * @desc Defines the different status a Product can be in.\n * @example ProductStatus.AVAILABLE // 'AVAILABLE'\n *\n * @property {String} AVAILABLE - The product is currently available.\n * @property {String} UNKNOWN - The product status is unknown.\n * @property {String} UNAVAILABLE - The product is currently unavailable.\n *\n */\n\n/**\n *\n * @enum\n * @type {ProductStatus}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n AVAILABLE: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n UNKNOWN: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n UNAVAILABLE: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription/productStatus.js","/**\n *\n * @module subscriptionSource\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\nimport SubscriptionProvider from './subscriptionProvider';\n\nconst SubscriptionSourceSubType = Services.Subscription.SubscriptionSourceSubType;\nconst SubscriptionSourceType = Services.Subscription.SubscriptionSourceType;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyObject,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SubscriptionSource\n * @desc Represents a source a subscription can be from.\n *\n */\nexport default class SubscriptionSource {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.provider\n * @param {String} options.ref\n * @param {String} options.type\n * @param {String} [options.subType]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'SubscriptionSource(options)',\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get provider() {\n return `${this.ctor} options.provider should be a String with length`;\n },\n get ref() {\n return `${this.ctor} options.ref should be a String with length`;\n },\n get type() {\n return `${this.ctor} options.type should be a String with length`;\n },\n get subType() {\n return `${this.ctor} options.subType should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { provider, ref, subType, type } = options;\n\n nonEmptyString(provider, errorMessage.provider, InvalidArgumentException);\n nonEmptyString(ref, errorMessage.ref, InvalidArgumentException);\n nonEmptyString(type, errorMessage.type, InvalidArgumentException);\n\n if (Check.assigned(subType)) {\n nonEmptyString(subType, errorMessage.subType, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {SDK.Subscription.SubscriptionProvider|String}\n * @desc Gets the provider of the subscription.\n *\n */\n this.provider = SubscriptionProvider[provider] || provider;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc Gets the reference name of the source.\n *\n */\n this.ref = ref;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Subscription.SubscriptionSourceSubType}\n * @desc Gets the subtype of the source.\n *\n */\n this.subType = SubscriptionSourceSubType[subType] || SubscriptionSourceSubType.OTHER;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Subscription.SubscriptionSourceType|String}\n * @desc Gets the type of the source.\n *\n */\n this.type = SubscriptionSourceType[type] || type;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription/subscriptionSource.js","/**\n *\n * @module accountManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/account.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\n\nconst TokenManager = Token.TokenManager;\nconst AccountManagerConfiguration = Services.Configuration.AccountManagerConfiguration;\nconst AccountClient = Services.Account.AccountClient;\nconst UserProfile = Services.Account.UserProfile;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n object,\n instanceStrict,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class AccountManager\n * @desc Manages the current account and serves as a go between for the public APIs and the AccountClient.\n *\n */\nexport default class AccountManager {\n\n /**\n *\n * @param {SDK.Services.Configuration.AccountManagerConfiguration} config\n * @param {SDK.Services.Account.AccountClient} client\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Token.TokenManager} tokenManager\n * @throws {InvalidArgumentException}\n *\n */\n constructor(config, client, logger = Logging, tokenManager) {\n\n const errorMessage = {\n ctor: 'AccountManager(config, client, logger, tokenManager)',\n get config() {\n return `${this.ctor} needs SDK.Services.Configuration.AccountManagerConfiguration instance`;\n },\n get client() {\n return `${this.ctor} needs SDK.Services.Account.AccountClient instance`;\n },\n get logger() {\n return `${this.ctor} needs SDK.Logger instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n }\n };\n\n instanceStrict(config, AccountManagerConfiguration, errorMessage.config, InvalidArgumentException);\n instanceStrict(client, AccountClient, errorMessage.client, InvalidArgumentException);\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.AccountManagerConfiguration}\n *\n */\n this.config = config;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Account.AccountClient}\n *\n */\n this.client = client;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n this.logger.log(AccountManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {String} identityToken - An identity token representing the validated identity.\n * @param {Object} attributes - A set of attributes to associate with the new account. Note: certain\n * attributes may be required while others are optional.\n * @note {Object} [metadata] - Contains additional info on the account being created like `isTest`\n * to indicate if the account being made is for testing purposes and should have a temporary lifespan\n * @desc Creates a new account and associates with the supplied identity.\n * @returns {Promise}\n *\n */\n async createAccount(identityToken, attributes, metadata) {\n\n const errorMessage = {\n method: 'AccountManager.createAccount(identityToken, attributes, metadata)',\n get identityToken() {\n return `${this.method} identityToken should be a String with length`;\n },\n get attributes() {\n return `${this.method} attributes should be an Object`;\n },\n get metadata() {\n return `${this.method} metadata should be an Object`;\n }\n };\n\n nonEmptyString(identityToken, errorMessage.identityToken, InvalidArgumentException);\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n\n if (Check.assigned(metadata)) {\n object(metadata, errorMessage.metadata, InvalidArgumentException);\n }\n\n const { client, accessToken } = this;\n\n const options = {\n identityToken,\n attributes,\n accessToken,\n metadata\n };\n\n return await client.createAccount(options);\n\n }\n\n /**\n *\n * @access private\n * @param {String} identityToken - An identity token representing the validated identity.\n * @desc Gets an account grant for the identified user.\n * @returns {Promise}\n *\n */\n async createAccountGrant(identityToken) {\n\n const errorMessage = {\n method: 'AccountManager.createAccountGrant(identityToken)',\n get identityToken() {\n return `${this.method} identityToken should be a String with length`;\n }\n };\n\n nonEmptyString(identityToken, errorMessage.identityToken, InvalidArgumentException);\n\n const { client, accessToken } = this;\n\n return await client.createAccountGrant(identityToken, accessToken);\n\n }\n\n /**\n *\n * @access private\n * @since 3.1.0\n * @desc Gets the current account.\n * @note Attributes are not cached in the SDK, each time the app developer accesses `Account.attributes`\n * it will retrieve them from the service.\n * @returns {Promise} An account object containing the account ID and a dictionary of account attributes.\n *\n */\n async getAccount() {\n\n const { client, accessToken } = this;\n\n return await client.getCurrentAccount(accessToken);\n\n }\n\n /**\n *\n * @access private\n * @param {Object} attributes - The attributes to change.\n * @desc Updates the supplied attributes. Ommited attributes are not updated.\n * @returns {Promise}\n *\n */\n async updateAttributes(attributes) {\n\n const errorMessage = {\n method: 'AccountManager.updateAttributes(attributes)',\n get attributes() {\n return `${this.method} attributes should be an Object`;\n }\n };\n\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n\n const { client, accessToken } = this;\n\n return await client.updateAttributes(attributes, accessToken);\n\n }\n\n /**\n *\n * @access private\n * @since 3.5.0\n * @param {String} profileName - The name of the profile.\n * @param {Object} [attributes=null] - The attributes to use when creating the profile.\n * @param {Object} [metadata=null] - The metadata to use when creating the profile.\n * @desc Creates a user profile.\n * @returns {Promise}\n *\n */\n async createUserProfile(profileName, attributes = null, metadata = null) {\n\n const errorMessage = {\n method: 'AccountManager.createUserProfile(profileName, attributes, metadata)',\n get profileName() {\n return `${this.method} profileName should be a String with length`;\n },\n get attributes() {\n return `${this.method} attributes should be a non empty Object`;\n },\n get metadata() {\n return `${this.method} metadata should be a non empty Object`;\n }\n };\n\n nonEmptyString(profileName, errorMessage.profileName, InvalidArgumentException);\n\n if (Check.assigned(attributes)) {\n nonEmptyObject(attributes, errorMessage.attributes, InvalidArgumentException);\n }\n\n if (Check.assigned(metadata)) {\n nonEmptyObject(metadata, errorMessage.metadata, InvalidArgumentException);\n }\n\n const { client, accessToken } = this;\n\n return await client.createUserProfile(profileName, attributes, metadata, accessToken);\n\n }\n\n /**\n *\n * @access private\n * @since 3.5.0\n * @param {SDK.Services.Account.UserProfile} profile - The user profile to delete.\n * @desc Deletes the user profile.\n * @returns {Promise}\n *\n */\n async deleteUserProfile(profile) {\n\n const errorMessage = {\n method: 'AccountManager.deleteUserProfile(profile)',\n get profile() {\n return `${this.method} profile should be an instance of UserProfile`;\n }\n };\n\n instanceStrict(profile, UserProfile, errorMessage.profile, InvalidArgumentException);\n\n const { client, accessToken, tokenManager } = this;\n const deleteUserProfileResult = await client.deleteUserProfile(profile.profileId, accessToken);\n const accountGrant = deleteUserProfileResult.accountGrant;\n\n if (Check.assigned(accountGrant)) {\n\n const accessState = tokenManager.getAccessState();\n const accessContextState = accessState.data.contextState;\n\n await tokenManager.exchangeGrant(accountGrant, accessContextState);\n\n }\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @since 3.5.0\n * @param {String} profileId - The ID of the user profile to activate.\n * @desc Returns the user profile specified by the profileId.\n * @returns {Promise}\n *\n */\n async getUserProfile(profileId) {\n\n const errorMessage = {\n method: 'AccountManager.getUserProfile(profileId)',\n get profileId() {\n return `${this.method} profileId should be a String with length`;\n }\n };\n\n nonEmptyString(profileId, errorMessage.profileId, InvalidArgumentException);\n\n const { client, accessToken } = this;\n\n return await client.getUserProfile(profileId, accessToken);\n\n }\n\n /**\n *\n * @access private\n * @since 3.5.0\n * @desc Returns the user profiles.\n * @returns {Promise>}\n *\n */\n async getUserProfiles() {\n\n const { client, accessToken } = this;\n\n return await client.getUserProfiles(accessToken);\n\n }\n\n /**\n *\n * @access private\n * @since 3.5.0\n * @param {SDK.Services.Account.UserProfile} profile - The user profile to activate.\n * @desc Sets the active user profile.\n * @returns {Promise}\n *\n */\n async setActiveUserProfile(profile) {\n\n const errorMessage = {\n method: 'AccountManager.setActiveUserProfile(profile)',\n get profile() {\n return `${this.method} profile should be an instance of UserProfile`;\n }\n };\n\n instanceStrict(profile, UserProfile, errorMessage.profile, InvalidArgumentException);\n\n const { client, accessToken, tokenManager } = this;\n\n const accountGrant = await client.setActiveUserProfile(profile.profileId, accessToken);\n const accessState = tokenManager.getAccessState();\n const accessContextState = accessState.data.contextState;\n\n return await tokenManager.exchangeGrant(accountGrant, accessContextState);\n\n }\n\n /**\n *\n * @access private\n * @since 3.5.0\n * @desc Returns the active user profile.\n * @returns {Promise}\n *\n */\n async getActiveUserProfile() {\n\n const { client, accessToken } = this;\n\n return await client.getActiveUserProfile(accessToken);\n\n }\n\n /**\n *\n * @access private\n * @since 3.5.0\n * @param {SDK.Services.Account.UserProfile} profile - The user profile to update.\n * @desc Saves all changes made to the user profile.\n * @returns {Promise}\n *\n */\n async updateUserProfile(profile) {\n\n const errorMessage = {\n method: 'AccountManager.updateUserProfile(profile)',\n get profile() {\n return `${this.method} profile should be an instance of UserProfile`;\n }\n };\n\n instanceStrict(profile, UserProfile, errorMessage.profile, InvalidArgumentException);\n\n const { client, accessToken } = this;\n\n const updateUserProfileResult = await client.updateUserProfile(profile, accessToken);\n\n if (updateUserProfileResult.refreshAccessToken) {\n await this.tokenManager.refreshAccessToken(true);\n }\n\n return await this.getUserProfile(profile.profileId);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the TokenManager instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.tokenManager.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/account/accountManager.js","/**\n *\n * @module entry\n * @desc {SDK.Commerce} entry point.\n *\n */\n\nimport CommerceApi from './commerceApi';\nimport CommerceManager from './commerceManager';\nimport PaymentMethodInformation from './paymentMethodInformation';\nimport PaymentMethodResponse from './paymentMethodResponse';\nimport PaymentMethodType from './paymentMethodType';\nimport PriceOrderRequest from './priceOrderRequest';\nimport PriceOrderResponse from './priceOrderResponse';\nimport CardPaymentMethodResponse from './cardPaymentMethodResponse';\nimport SubmitOrderWithCardPaymentMethodRequest from './submitOrderWithCardPaymentMethodRequest';\nimport SubmitOrderWithPaymentMethodRequest from './submitOrderWithPaymentMethodRequest';\n\n/**\n *\n * @typedef SDK.Commerce\n * @type {Object}\n *\n * @property {CommerceApi} CommerceApi\n * @property {CommerceManager} CommerceManager\n * @property {CardPaymentMethodResponse} CardPaymentMethodResponse\n * @property {PaymentMethodInformation} PaymentMethodInformation\n * @property {PaymentMethodResponse} PaymentMethodResponse\n * @property {PaymentMethodType} PaymentMethodType\n * @property {PriceOrderRequest} PriceOrderRequest\n * @property {PriceOrderResponse} PriceOrderResponse\n * @property {SubmitOrderWithCardPaymentMethodRequest} SubmitOrderWithCardPaymentMethodRequest\n * @property {SubmitOrderWithPaymentMethodRequest} SubmitOrderWithPaymentMethodRequest\n *\n */\n\n/**\n *\n * @type {SDK.Commerce}\n *\n */\nexport default {\n\n CommerceApi,\n CommerceManager,\n CardPaymentMethodResponse,\n PaymentMethodInformation,\n PaymentMethodResponse,\n PaymentMethodType,\n PriceOrderRequest,\n PriceOrderResponse,\n SubmitOrderWithCardPaymentMethodRequest,\n SubmitOrderWithPaymentMethodRequest\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/commerce/entry.js","/**\n *\n * @module cardPaymentMethodResponse\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport PaymentMethodResponse from './paymentMethodResponse';\n\nconst PaymentCardType = Services.Commerce.PaymentCardType;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean,\n nonEmptyObject,\n number,\n includes,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class CardPaymentMethodResponse\n * @desc Response containing information on a card payment method.\n * @note some params are type-checked in the super class\n *\n */\nexport default class CardPaymentMethodResponse extends PaymentMethodResponse {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Services.Commerce.BillingAddress} options.billingAddress\n * @param {Boolean} options.isDefault\n * @param {String} options.paymentMethodId\n * @param {String} options.walletId\n * @param {SDK.Commerce.PaymentMethodType} options.type\n * @note params above are type checked in the super class\n * @param {String} [options.alternateName]\n * @param {String} options.brand\n * @param {SDK.Services.Commerce.PaymentCardType} options.cardType\n * @param {String} options.country\n * @param {Number} options.expiryMonth\n * @param {Number} options.expiryYear\n * @param {String} options.firstSix\n * @param {Boolean} options.isCorporate\n * @param {String} options.issuer\n * @param {String} options.lastFour\n * @param {String} options.ownerFullName\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'CardPaymentMethodResponse(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get alternateName() {\n return `${this.ctor} options.alternateName should be a String with length`;\n },\n get brand() {\n return `${this.ctor} options.brand should be a String with length`;\n },\n get cardType() {\n return `${this.ctor} options.cardType should be a String with length`;\n },\n get country() {\n return `${this.ctor} options.country should be a String with length`;\n },\n get expiryMonth() {\n return `${this.ctor} options.expiryMonth should be a Number`;\n },\n get expiryYear() {\n return `${this.ctor} options.expiryYear should be a Number`;\n },\n get firstSix() {\n return `${this.ctor} options.firstSix should be a String with length`;\n },\n get isCorporate() {\n return `${this.ctor} options.isCorporate should be a Boolean`;\n },\n get issuer() {\n return `${this.ctor} options.issuer should be a String with length`;\n },\n get lastFour() {\n return `${this.ctor} options.lastFour should be a String with length`;\n },\n get ownerFullName() {\n return `${this.ctor} options.ownerFullName should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { alternateName, brand, cardType = PaymentCardType.CREDIT, country, expiryMonth } = options;\n const { expiryYear, firstSix, isCorporate, issuer, lastFour, ownerFullName } = options;\n\n if (Check.assigned(alternateName)) {\n nonEmptyString(alternateName, errorMessage.alternateName, InvalidArgumentException);\n }\n\n nonEmptyString(brand, errorMessage.brand, InvalidArgumentException);\n includes(PaymentCardType, cardType, errorMessage.cardType, InvalidArgumentException);\n nonEmptyString(cardType, errorMessage.cardType, InvalidArgumentException);\n nonEmptyString(country, errorMessage.country, InvalidArgumentException);\n number(expiryMonth, errorMessage.expiryMonth, InvalidArgumentException);\n number(expiryYear, errorMessage.expiryYear, InvalidArgumentException);\n nonEmptyString(firstSix, errorMessage.firstSix, InvalidArgumentException);\n boolean(isCorporate, errorMessage.isCorporate, InvalidArgumentException);\n nonEmptyString(issuer, errorMessage.issuer, InvalidArgumentException);\n nonEmptyString(lastFour, errorMessage.lastFour, InvalidArgumentException);\n nonEmptyString(ownerFullName, errorMessage.ownerFullName, InvalidArgumentException);\n\n super(options);\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.alternateName = alternateName;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.brand = brand;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Commerce.PaymentCardType}\n *\n */\n this.cardType = PaymentCardType[cardType];\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.country = country;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.expiryMonth = expiryMonth;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.expiryYear = expiryYear;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.firstSix = firstSix;\n\n /**\n *\n * @access public\n * @type {Boolean}\n *\n */\n this.isCorporate = isCorporate;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.issuer = issuer;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.lastFour = lastFour;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.ownerFullName = ownerFullName;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/commerce/cardPaymentMethodResponse.js","/**\n *\n * @module paymentMethodType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef PaymentMethodType\n * @type {Object}\n * @desc An enumeration of recognized payment methods.\n * @note These values are returned from the service in PascalCase\n *\n * @property {String} PaymentCard\n * @property {String} Other\n *\n */\n\n/**\n*\n* @enum\n* @type {PaymentMethodType}\n*\n*/\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n PaymentCard: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n Other: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/commerce/paymentMethodType.js","/**\n *\n * @module commerceManager\n *\n */\n\nimport Check from 'check-types';\n\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\n\nimport PriceOrderRequest from './priceOrderRequest';\nimport PriceOrderResponse from './priceOrderResponse';\nimport SubmitOrderWithPaymentMethodRequest from './submitOrderWithPaymentMethodRequest';\n\nconst Util = Services.Util;\n\nconst AccessTokenProvider = Token.AccessTokenProvider;\n\nconst CommerceManagerConfiguration = Services.Configuration.CommerceManagerConfiguration;\n\nconst CommerceClient = Services.Commerce.CommerceClient;\nconst CreatePaymentMethodRequest = Services.Commerce.CreatePaymentMethodRequest;\nconst OrderCampaign = Services.Commerce.OrderCampaign;\nconst ServicesPriceOrderRequest = Services.Commerce.PriceOrderRequest;\nconst ServicesSubmitOrderWithPaymentMethodRequest = Services.Commerce.SubmitOrderWithPaymentMethodRequest;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class CommerceManager\n *\n */\nexport default class CommerceManager {\n\n /**\n *\n * @param {SDK.Services.Configuration.CommerceManagerConfiguration} config\n * @param {SDK.Services.Commerce.CommerceClient} client\n * @param {SDK.Token.AccessTokenProvider} accessTokenProvider\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(config, client, accessTokenProvider, logger = Logging) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(config, client, accessTokenProvider, logger)`,\n get config() {\n return `${this.ctor} needs SDK.Services.Configuration.CommerceManagerConfiguration instance`;\n },\n get client() {\n return `${this.ctor} needs SDK.Services.Commerce.CommerceClient instance`;\n },\n get accessTokenProvider() {\n return `${this.ctor} needs SDK.Token.AccessTokenProvider instance`;\n }\n };\n\n instanceStrict(config, CommerceManagerConfiguration, errorMessage.config, InvalidArgumentException);\n instanceStrict(client, CommerceClient, errorMessage.client, InvalidArgumentException);\n instanceStrict(accessTokenProvider, AccessTokenProvider, errorMessage.accessTokenProvider, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.CommerceManagerConfiguration}\n *\n */\n this.config = config;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Commerce.CommerceClient}\n *\n */\n this.client = client;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.counter = 0;\n\n /**\n *\n * @access private\n * @type {SDK.Token.AccessTokenProvider}\n *\n */\n this.accessTokenProvider = accessTokenProvider;\n\n this.logger.log(CommerceManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Commerce.PriceOrderRequest} request\n * @returns {Promise}\n *\n */\n priceOrder(request) {\n\n const errorMessage = {\n method: `${this.constructor.name}.priceOrder(request)`,\n get request() {\n return `${this.method} needs SDK.Commerce.PriceOrderRequest instance`;\n }\n };\n\n instanceStrict(request, PriceOrderRequest, errorMessage.request, InvalidArgumentException);\n\n const { productIdentifiers, identifierType, orderCampaign, address } = request;\n const { campaignCode, voucherCode, redemptionCode } = orderCampaign;\n\n const priceOrderRequestOptions = {\n productIdentifiers,\n identifierType,\n campaignCode,\n voucherCode,\n address,\n redemptionCode\n };\n\n const priceOrderRequest = new ServicesPriceOrderRequest(priceOrderRequestOptions);\n\n const { client, accessToken } = this;\n\n return client.priceOrder(priceOrderRequest, accessToken).then((priceOrderResponse) => {\n\n const { orderSubTotal, orderTaxAmount, orderTotalAmount, orderDiscountAmount } = priceOrderResponse;\n const { orderItems, adjustmentTimeLength, adjustmentTimeUnit, paymentRequired } = priceOrderResponse;\n const { region } = priceOrderResponse;\n\n const options = {\n orderSubTotal,\n orderTaxAmount,\n orderTotalAmount,\n orderDiscountAmount,\n orderItems,\n adjustmentTimeLength,\n adjustmentTimeUnit,\n paymentRequired,\n orderCampaign: new OrderCampaign({\n campaignCode: priceOrderResponse.campaignCode,\n voucherCode: priceOrderResponse.voucherCode,\n redemptionCode: priceOrderResponse.redemptionCode\n }),\n region\n };\n\n return new PriceOrderResponse(options);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {String} zipCode\n * @returns {Promise>}\n *\n */\n lookupByZipCode(zipCode) {\n\n const errorMessage = {\n method: `${this.constructor.name}.lookupByZipCode(zipCode)`,\n get zipCode() {\n return `${this.method} zipCode should be a String with length`;\n }\n };\n\n nonEmptyString(zipCode, errorMessage.zipCode, InvalidArgumentException);\n\n const { client } = this;\n\n return client.lookupByZipCode(zipCode);\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {SDK.Commerce.SubmitOrderWithPaymentMethodRequest} request\n * @returns {Promise}\n *\n */\n submitOrderWithPaymentMethod(request) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}.submitOrderWithPaymentMethod(request)`,\n get request() {\n return `${this.ctor} needs SDK.Commerce.SubmitOrderWithPaymentMethodRequest instance`;\n }\n };\n\n instanceStrict(\n request,\n SubmitOrderWithPaymentMethodRequest,\n errorMessage.request,\n InvalidArgumentException\n );\n\n const { client, accessToken } = this;\n const { lineItems, paymentMethodId, orderCampaigns, sca, cardSecurityCode } = request;\n\n const options = {\n lineItems,\n orderCampaigns,\n paymentMethodId,\n sca,\n cardSecurityCode\n };\n\n const serviceRequest = new ServicesSubmitOrderWithPaymentMethodRequest(options);\n\n return client.submitOrderWithPaymentMethod(serviceRequest, accessToken).then((paymentMethodResponse) => {\n\n const { guid } = paymentMethodResponse;\n\n return Promise.resolve(guid);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {String} orderId\n * @returns {Promise}\n * @desc 400 - Thrown when a user token is expired or invalid\n * @desc 422 - Thrown in the event of a billing failure\n * @desc 429 - Thrown after too many requests to the service have been made or the process times out\n * @note return value is SDK.Services.Commerce.OrderStatusResponse enum\n *\n */\n validateOrder(orderId) {\n\n const { client, config, counter, accessToken } = this;\n\n const retryPolicy = Util.getSafe(() => config.extras.retryPolicy);\n const retryMaxAttempts = Util.getSafe(() => retryPolicy.retryMaxAttempts);\n const checkOrderStatusDelay = Util.getSafe(() => config.extras.checkOrderStatusDelay);\n const delayMultiplier = checkOrderStatusDelay < 4 ? 4 : checkOrderStatusDelay;\n const delayMilliseconds = delayMultiplier * 1000;\n\n const exceptions = [400, 422, 429];\n\n const delay = (time, value) => {\n\n return new Promise((resolve) => {\n setTimeout(resolve.bind(null, value), time);\n });\n\n };\n\n return delay(delayMilliseconds).then(() => {\n\n return client.getOrderStatus(orderId, counter, accessToken);\n\n }).then((response) => {\n\n // reset the counter on success case\n this.counter = 0;\n\n return Promise.resolve(response);\n\n }).catch((exception) => {\n\n const status = Util.getSafe(() => exception.status);\n\n if (counter > retryMaxAttempts) {\n\n // reset the counter after retry cycle\n this.counter = 0;\n\n return Promise.reject(exception);\n\n }\n\n if (!exceptions.includes(status)) {\n\n this.counter++;\n\n return this.validateOrder(orderId);\n\n }\n\n // reset the counter if no retry case is applicable\n this.counter = 0;\n\n return Promise.reject(exception);\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {SDK.Services.Commerce.CreatePaymentMethodRequest} request\n * @param {String} [region]\n * @returns {Promise}\n *\n */\n createPaymentMethod(request, region) {\n\n const errorMessage = {\n method: `${this.constructor.name}.createPaymentMethod(request, region)`,\n get request() {\n return `${this.method} needs SDK.Services.Commerce.CreatePaymentMethodRequest instance`;\n },\n get region() {\n return `${this.method} region should be a String with length`;\n }\n };\n\n instanceStrict(request, CreatePaymentMethodRequest, errorMessage.request, InvalidArgumentException);\n\n if (Check.assigned(region)) {\n nonEmptyString(region, errorMessage.region, InvalidArgumentException);\n }\n\n const { client, accessToken } = this;\n\n const options = {\n request,\n region,\n accessToken\n };\n\n return client.createPaymentMethod(options).then((createPaymentMethodResponse) => {\n\n const paymentMethodId = createPaymentMethodResponse.paymentMethodId;\n\n return Promise.resolve(paymentMethodId);\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @returns {Promise}\n *\n */\n async getDefaultPaymentMethod() {\n\n const { client, accessToken } = this;\n\n return await client.getDefaultPaymentMethod(accessToken);\n\n }\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @param {String} paymentMethodId\n * @returns {Promise}\n *\n */\n async getPaymentCard(paymentMethodId) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getPaymentCard(paymentMethodId)`,\n get paymentMethodId() {\n return `${this.method} paymentMethodId should be a String with length`;\n }\n };\n\n nonEmptyString(paymentMethodId, errorMessage.paymentMethodId, InvalidArgumentException);\n\n const { client, accessToken } = this;\n\n return await client.getPaymentCard(paymentMethodId, accessToken);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.accessTokenProvider.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/commerce/commerceManager.js","/**\n *\n * @module paymentMethodInformation\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst BillingAddress = Services.Commerce.BillingAddress;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n number,\n nonEmptyString,\n nonEmptyObject,\n instanceStrict,\n boolean\n} = Check.assert;\n\n/**\n *\n * @class PaymentMethodInformation\n * @since 3.5.0\n * @desc Provides information about a new payment method to add for commerce transactions.\n *\n */\nexport default class PaymentMethodInformation {\n\n /**\n *\n * @param {Object} options\n * @param {Boolean} [options.isDefault=true]\n * @param {String} options.creditCardNumber\n * @param {String} [options.alternateName]\n * @param {SDK.Services.Commerce.BillingAddress} options.billingAddress\n * @param {Number} options.expiryMonth\n * @param {Number} options.expiryYear\n * @param {String} options.ownerFullName\n * @param {Boolean} options.isReusable\n * @param {Boolean} options.isShared\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'PaymentMethodInformation(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get isDefault() {\n return `${this.ctor} options.isDefault should be a Boolean`;\n },\n get creditCardNumber() {\n return `${this.ctor} options.creditCardNumber should be a String with length`;\n },\n get alternateName() {\n return `${this.ctor} options.alternateName should be a String with length`;\n },\n get billingAddress() {\n return `${this.ctor} options.billingAddress should be an instance of SDK.Services.Commerce.BillingAddress`; // eslint-disable-line max-len\n },\n get expiryMonth() {\n return `${this.ctor} options.expiryMonth should be a Number`;\n },\n get expiryYear() {\n return `${this.ctor} options.expiryYear should be a Number`;\n },\n get ownerFullName() {\n return `${this.ctor} options.ownerFullName should be a String with length`;\n },\n get isReusable() {\n return `${this.ctor} options.isReusable should be a Boolean`;\n },\n get isShared() {\n return `${this.ctor} options.isShared should be a Boolean`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { isDefault = true, creditCardNumber, alternateName, billingAddress } = options;\n const { expiryMonth, expiryYear, ownerFullName, isReusable, isShared } = options;\n\n boolean(isDefault, errorMessage.isDefault, InvalidArgumentException);\n nonEmptyString(creditCardNumber, errorMessage.creditCardNumber, InvalidArgumentException);\n\n if (Check.assigned(alternateName)) {\n nonEmptyString(alternateName, errorMessage.alternateName, InvalidArgumentException);\n }\n\n instanceStrict(billingAddress, BillingAddress, errorMessage.billingAddress, InvalidArgumentException);\n number(expiryMonth, errorMessage.expiryMonth, InvalidArgumentException);\n number(expiryYear, errorMessage.expiryYear, InvalidArgumentException);\n nonEmptyString(ownerFullName, errorMessage.ownerFullName, InvalidArgumentException);\n boolean(isReusable, errorMessage.isReusable, InvalidArgumentException);\n boolean(isShared, errorMessage.isShared, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {Boolean}\n * @desc Flag to mark this payment method as default (defaults to true)\n *\n */\n this.isDefault = isDefault;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The valid credit card number.\n *\n */\n this.creditCardNumber = creditCardNumber;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Alias (nickname) for the payment method.\n *\n */\n this.alternateName = alternateName;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Commerce.BillingAddress}\n * @desc A postal address.\n *\n */\n this.billingAddress = billingAddress;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Expiry month of a payment method.\n *\n */\n this.expiryMonth = expiryMonth;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Expiry year of a payment method.\n *\n */\n this.expiryYear = expiryYear;\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Card holder full name.\n *\n */\n this.ownerFullName = ownerFullName;\n\n /**\n *\n * @access public\n * @type {Boolean}\n * @desc Flag to mark this payment method as reusable for future transactions.\n * @note The value of this field will need to be translated to one of two possible string values for\n * the usage field of `SDK.Services.Commerce.CreatePaymentMethodPassthroughData`\n * A `true` value maps to `\"multi_use\"`, and a `false` value maps to `\"single_use\"`.\n * These strings and their format are defined by the service.\n *\n */\n this.isReusable = isReusable;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean}\n * @desc Flag to mark if the user wants to allow the payment method to be shared across TWDC partners\n *\n */\n this.isShared = isShared;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/commerce/paymentMethodInformation.js","/**\n *\n * @module entry\n * @desc {SDK.Configuration} entry point.\n *\n */\n\nimport ConfigurationManager from './configurationManager';\nimport EmbeddedConfiguration from './embeddedConfiguration';\n/**\n *\n * @typedef SDK.Configuration\n * @type {Object}\n *\n * @property {ConfigurationManager} ConfigurationManager\n * @property {EmbeddedConfiguration} EmbeddedConfiguration\n *\n */\n\n/**\n *\n * @type {SDK.Configuration}\n *\n */\nexport default {\n\n ConfigurationManager,\n EmbeddedConfiguration\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/configuration/entry.js","/**\n *\n * @module embeddedConfiguration\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\n\nconst ConfigurationClientConfiguration = Services.Configuration.ConfigurationClientConfiguration;\nconst ConfigurationClientExtrasMap = Services.Configuration.ConfigurationClientExtrasMap;\nconst ConfigurationHostName = Services.Configuration.ConfigurationHostName;\nconst ServiceEndpoint = Services.ServiceEndpoint;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean\n} = Check.assert;\n\n/**\n *\n * @class EmbeddedConfiguration\n *\n */\nexport default class EmbeddedConfiguration {\n\n /**\n *\n * @param {Boolean} [isFallback=false] flag to determine if the EmbeddedConfiguration\n * instance is being used as a fallback (for example, if config fetch fails)\n *\n */\n constructor(isFallback = false) {\n\n const errorMessage = {\n ctor: 'EmbeddedConfiguration(isFallback)',\n get isFallback() {\n return `${this.ctor} needs ConfigurationClientConfiguration instance`;\n }\n };\n\n boolean(isFallback, errorMessage.isFallback, InvalidArgumentException);\n\n const defaultConfigHostName = ConfigurationHostName.prod;\n const configHostParams = {\n dev: {\n baseUrl: 'https://dev-bam-sdk-configs.bamgrid.com/bam-sdk'\n },\n prod: {\n baseUrl: 'https://bam-sdk-configs.bamgrid.com/bam-sdk'\n }\n };\n\n let href = `\n {baseUrl}/\n v{configVersion}/\n {clientId}/{deviceFamily}/v{sdkVersion}/\n {deviceProfile}/{applicationRuntime}/{environment}.json\n `.replace(/(?:\\n\\s+)/g, '');\n\n if (isFallback) {\n href = href\n .replace(/\\{deviceProfile\\}/gi, 'default')\n .replace(/\\{applicationRuntime\\}/gi, 'browser');\n }\n\n const headers = {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n };\n\n const endpoints = {\n bootstrap: new ServiceEndpoint(\n 'bootstrap',\n href,\n 0,\n 30,\n true,\n null,\n headers\n )\n };\n\n /**\n *\n * @access public\n * @type {String}\n * @desc The default configuration host name to use (\"dev\" or \"prod\").\n *\n */\n this.defaultConfigHostName = defaultConfigHostName;\n\n /**\n *\n * @access public\n * @type {ConfigurationClientConfiguration}\n *\n */\n this.client = new ConfigurationClientConfiguration(\n new ConfigurationClientExtrasMap(configHostParams),\n defaultConfigHostName,\n endpoints\n );\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/configuration/embeddedConfiguration.js","/**\n *\n * @module entry\n * @desc {SDK.Content} entry point.\n *\n */\n\nimport ContentApi from './contentApi';\nimport ContentManager from './contentManager';\nimport GraphQlQuery from './graphQlQuery';\nimport GraphQlPersistedQuery from './graphQlPersistedQuery';\nimport ContentQuery from './contentQuery';\nimport SearchOverrides from './searchOverrides';\n\nimport Search from './search/entry';\nimport Watchlist from './watchlist/entry';\nimport Bookmarks from './bookmarks/entry';\n\n/**\n *\n * @typedef SDK.Content\n * @type {Object}\n *\n * @property {ContentApi} ContentApi\n * @property {ContentManager} ContentManager\n * @property {GraphQlQuery} GraphQlQuery\n * @property {GraphQlPersistedQuery} GraphQlPersistedQuery\n * @property {ContentQuery} ContentQuery\n * @property {SearchOverrides} SearchOverrides\n *\n * @property {Bookmarks} Bookmarks\n * @property {Search} Search\n * @property {Watchlist} Watchlist\n *\n */\n\n/**\n *\n * @type {SDK.Content}\n *\n */\nexport default {\n\n ContentApi,\n ContentManager,\n GraphQlQuery,\n GraphQlPersistedQuery,\n ContentQuery,\n SearchOverrides,\n\n Bookmarks,\n Search,\n Watchlist\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/entry.js","/**\n *\n * @module contentManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/content.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\nimport ContentQuery from './contentQuery';\nimport BookmarkExtensions from './bookmarks/bookmarkExtensions';\nimport SearchExtensions from './search/searchExtensions';\nimport WatchlistExtensions from './watchlist/watchlistExtensions';\nimport SearchOverrides from './searchOverrides';\n\nconst ContentManagerConfiguration = Services.Configuration.ContentManagerConfiguration;\nconst ContentClient = Services.Content.ContentClient;\nconst AccessTokenProvider = Token.AccessTokenProvider;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n integer,\n positive,\n instanceStrict,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class ContentManager\n * @desc Provides a manager that can be used to access content data.\n *\n */\nexport default class ContentManager {\n\n /**\n *\n * @param {SDK.Services.Configuration.ContentManagerConfiguration} contentManagerConfiguration\n * @param {SDK.Services.Content.ContentClient} contentClient\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Token.AccessTokenProvider} accessTokenProvider\n *\n */\n constructor(contentManagerConfiguration, contentClient, logger = Logging, accessTokenProvider) {\n\n const errorMessage = {\n ctor: 'ContentManager(contentManagerConfiguration, contentClient, logger, accessTokenProvider)',\n get contentManagerConfiguration() {\n return `${this.ctor} needs ContentManagerConfiguration instance`;\n },\n get accessTokenProvider() {\n return `${this.ctor} needs AccessTokenProvider instance`;\n },\n get contentClient() {\n return `${this.ctor} needs ContentClient instance`;\n }\n };\n\n instanceStrict(contentManagerConfiguration, ContentManagerConfiguration, errorMessage.contentManagerConfiguration, InvalidArgumentException); // eslint-disable-line\n instanceStrict(accessTokenProvider, AccessTokenProvider, errorMessage.accessTokenProvider, InvalidArgumentException); // eslint-disable-line\n instanceStrict(contentClient, ContentClient, errorMessage.contentClient, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.ContentManagerConfiguration}\n *\n */\n this.config = contentManagerConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Token.AccessTokenProvider}\n *\n */\n this.accessTokenProvider = accessTokenProvider;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Content.ContentClient}\n *\n */\n this.client = contentClient;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @desc Add extension methods\n *\n */\n BookmarkExtensions(ContentManager);\n SearchExtensions(ContentManager);\n WatchlistExtensions(ContentManager);\n\n this.logger.log(ContentManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @param {ContentQuery} options.query Query to be used to retrieve content.\n * @param {SDK.Content.SearchOverrides} [options.overrides] - Object which contains override information on the time\n * of origin and or the country of origin to apply to the query request\n * @param {String} [options.contentTransactionId] - An application developer-provided value to be included with the\n * HTTP request as the value of the `X-Content-Transaction-ID` header.\n * @desc Queries the a content service based on query context.\n * @returns {Promise} The GraphQL JSON returned from the content service.\n *\n */\n async query(options) {\n\n const errorMessage = {\n method: 'ContentManager.query(options)',\n get options() {\n return `${this.method} options should be a non-empty Object`;\n },\n get query() {\n return `${this.method} options.query should be an instance of SDK.Content.ContentQuery`;\n },\n get overrides() {\n return `${this.method} options.overrides should be an instance of SDK.Content.SearchOverrides`;\n },\n get contentTransactionId() {\n return `${this.method} options.contentTransactionId should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { query, overrides, contentTransactionId } = options;\n\n instanceStrict(query, ContentQuery, errorMessage.query, InvalidArgumentException);\n\n if (Check.assigned(overrides)) {\n instanceStrict(overrides, SearchOverrides, errorMessage.overrides, InvalidArgumentException);\n }\n\n if (Check.assigned(contentTransactionId)) {\n nonEmptyString(contentTransactionId, errorMessage.contentTransactionId, InvalidArgumentException);\n }\n\n const { logger, client } = this;\n\n logger.info(ContentManager.name, 'Getting content.');\n\n const queryOptions = {\n context: query.context,\n graphQlBuilder: query.graphQl,\n accessToken: this.accessToken,\n overrides,\n contentTransactionId\n };\n\n return await client.query(queryOptions);\n\n }\n\n /**\n *\n * @access public\n * @param {String} suggestionSet\n * @param {String} query\n * @param {Integer} [limit=null] - limit the number of results\n * @param {String} [filter=null] - filter results\n * @desc Gets search suggestions.\n * @returns {Promise} A list of search suggestions.\n *\n */\n async getSearchSuggestions(suggestionSet, query, limit = null, filter = null) {\n\n const errorMessage = {\n method: 'ContentManager.getSearchSuggestions(suggestionSet, query, limit, filter)',\n get suggestionSet() {\n return `${this.method} suggestionSet should be a String with length`;\n },\n get query() {\n return `${this.method} query should be a string with length`;\n },\n get limit() {\n return `${this.method} limit should be a positive integer`;\n },\n get filter() {\n return `${this.method} filter should be a string with length`;\n }\n };\n\n nonEmptyString(suggestionSet, errorMessage.suggestionSet, InvalidArgumentException);\n nonEmptyString(query, errorMessage.query, InvalidArgumentException);\n\n if (Check.assigned(limit)) {\n integer(limit, errorMessage.limit, InvalidArgumentException);\n positive(limit, errorMessage.limit, InvalidArgumentException);\n }\n\n if (Check.assigned(filter)) {\n nonEmptyString(filter, errorMessage.filter, InvalidArgumentException);\n }\n\n return await this.client.getSearchSuggestions(suggestionSet, query, limit, filter);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.accessTokenProvider.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/contentManager.js","/**\n *\n * @module bookmarkExtensions\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\nimport BookmarksQuery from './bookmarksQuery';\n\nconst GraphQlBuilder = Services.Content.GraphQlBuilder;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class BookmarkExtensions\n *\n */\nexport default (ContentManager) => {\n\n /**\n *\n * @access public\n * @param {GraphQlBuilder} query Query to be used to retrieve bookmarks.\n * @param {String} [contentTransactionId] - An application developer-provided value to be included with the HTTP\n * request as the value of the `X-Content-Transaction-ID` header.\n * @desc Queries the bookmark service.\n * @returns {Promise} The GraphQL JSON returned from the bookmark service.\n *\n */\n ContentManager.prototype.getBookmarks = function (query, contentTransactionId) {\n\n const errorMessage = {\n method: 'BookmarkExtensions.getBookmarks(query, contentTransactionId)',\n get query() {\n return `${this.method} needs GraphQlBuilder instance`;\n },\n get contentTransactionId() {\n return `${this.method} contentTransactionId should be a String with length`;\n }\n };\n\n instanceStrict(query, GraphQlBuilder, errorMessage.query, InvalidArgumentException);\n\n if (Check.assigned(contentTransactionId)) {\n nonEmptyString(contentTransactionId, errorMessage.contentTransactionId, InvalidArgumentException);\n }\n\n const bookmarkQuery = new BookmarksQuery(query);\n\n return this.query({\n query: bookmarkQuery,\n contentTransactionId\n });\n\n };\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/bookmarks/bookmarkExtensions.js","/**\n *\n * @module bookmarksQuery\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../../services/exception/entry';\nimport GraphQlQuery from './../graphQlQuery';\nimport ContentQuery from './../contentQuery';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class BookmarksQuery\n *\n */\nexport default class BookmarksQuery extends ContentQuery {\n\n /**\n *\n * @param {GraphQlQuery} query\n *\n */\n constructor(query) {\n\n const errorMessage = {\n ctor: 'BookmarksQuery(query)',\n get query() {\n return `${this.ctor} needs GraphQlQuery instance`;\n }\n };\n\n instanceStrict(query, GraphQlQuery, errorMessage.query, InvalidArgumentException);\n\n super('bookmarks', query);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/bookmarks/bookmarksQuery.js","/**\n *\n * @module searchExtensions\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../../services/exception/entry';\nimport GraphQlQuery from './../graphQlQuery';\nimport SearchOverrides from './../searchOverrides';\nimport SearchQuery from './searchQuery';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @function SearchExtensions\n * @param {SDK.Content.ContentManager} ContentManager\n * @desc Adds extension methods onto the ContentManager prototype.\n *\n */\nexport default (ContentManager) => {\n\n /**\n *\n * @access public\n * @param {GraphQlQuery} query - Query to be used to retrieve content.\n * @param {SearchOverrides} [overrides] - Object that will override the default date and or location of the search\n * @param {String} [contentTransactionId] - An application developer-provided value to be included with the HTTP\n * request as the value of the `X-Content-Transaction-ID` header.\n * @returns {Promise} The GraphQL JSON returned from the search service.\n *\n */\n ContentManager.prototype.search = function (query, overrides, contentTransactionId) {\n\n const errorMessage = {\n method: 'SearchExtensions.search(query, overrides, contentTransactionId)',\n get query() {\n return `${this.method} needs GraphQlQuery instance`;\n },\n get overrides() {\n return `${this.method} overrides should be an instance of SDK.Content.SearchOverrides`;\n },\n get contentTransactionId() {\n return `${this.method} contentTransactionId should be a String with length`;\n }\n };\n\n instanceStrict(query, GraphQlQuery, errorMessage.query, InvalidArgumentException);\n\n if (Check.assigned(contentTransactionId)) {\n nonEmptyString(contentTransactionId, errorMessage.contentTransactionId, InvalidArgumentException);\n }\n\n if (Check.assigned(overrides)) {\n instanceStrict(overrides, SearchOverrides, errorMessage.overrides, InvalidArgumentException);\n }\n\n const searchQuery = new SearchQuery(query);\n\n return this.query({\n query: searchQuery,\n overrides,\n contentTransactionId\n });\n\n };\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/search/searchExtensions.js","/**\n *\n * @module searchQuery\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../../services/exception/entry';\nimport GraphQlQuery from './../graphQlQuery';\nimport ContentQuery from './../contentQuery';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class SearchQuery\n *\n */\nexport default class SearchQuery extends ContentQuery {\n\n /**\n *\n * @param {GraphQlQuery} query\n *\n */\n constructor(query) {\n\n const errorMessage = {\n ctor: 'SearchQuery(query)',\n get query() {\n return `${this.ctor} needs graphQlQuery instance`;\n }\n };\n\n instanceStrict(query, GraphQlQuery, errorMessage.query, InvalidArgumentException);\n\n super('search', query);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/search/searchQuery.js","/**\n *\n * @module watchlistExtensions\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\nimport WatchlistQuery from './watchlistQuery';\nimport RemoveFromWatchlistQuery from './removeFromWatchlistQuery';\nimport AddToWatchlistQuery from './addToWatchlistQuery';\nimport ClearWatchlistQuery from './clearWatchlistQuery';\n\nconst GraphQlBuilder = Services.Content.GraphQlBuilder;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @function WatchlistExtensions\n * @param {SDK.Content.ContentManager} ContentManager\n * @desc Adds extension methods onto the ContentManager prototype.\n *\n */\nexport default (ContentManager) => {\n\n /**\n *\n * @access public\n * @param {GraphQlQuery} query\n * @param {String} [contentTransactionId] - An application developer-provided value to be included with the HTTP\n * request as the value of the `X-Content-Transaction-ID` header.\n * @returns {Promise}\n *\n */\n ContentManager.prototype.getWatchlist = function (query, contentTransactionId) {\n\n const errorMessage = {\n method: 'getWatchlist(query, contentTransactionId)',\n get query() {\n return `${this.method} needs GraphQlBuilder instance`;\n },\n get contentTransactionId() {\n return `${this.method} contentTransactionId should be a String with length`;\n }\n };\n\n instanceStrict(query, GraphQlBuilder, errorMessage.query, InvalidArgumentException);\n\n if (Check.assigned(contentTransactionId)) {\n nonEmptyString(contentTransactionId, errorMessage.contentTransactionId, InvalidArgumentException);\n }\n\n const watchlistQuery = new WatchlistQuery(query);\n\n return this.query({\n query: watchlistQuery,\n contentTransactionId\n });\n\n };\n\n /**\n *\n * @access public\n * @param {Array} contentIds\n * @param {String} [contentTransactionId] - An application developer-provided value to be included with the HTTP\n * request as the value of the `X-Content-Transaction-ID` header.\n * @return {Promise}\n *\n */\n ContentManager.prototype.removeFromWatchlist = function (contentIds, contentTransactionId) {\n\n const errorMessage = {\n method: 'removeFromWatchlist(contentIds)',\n get contentIds() {\n return `${this.method} needs Array of Strings`;\n },\n get contentTransactionId() {\n return `${this.method} contentTransactionId should be a String with length`;\n }\n };\n\n array.of.nonEmptyString(contentIds, errorMessage.contentIds, InvalidArgumentException);\n\n if (Check.assigned(contentTransactionId)) {\n nonEmptyString(contentTransactionId, errorMessage.contentTransactionId, InvalidArgumentException);\n }\n\n const removeFromWatchlistQuery = new RemoveFromWatchlistQuery(contentIds);\n\n return this.query({\n query: removeFromWatchlistQuery,\n contentTransactionId\n });\n\n };\n\n /**\n *\n * @access public\n * @param {Array} contentIds\n * @param {String} [contentTransactionId] - An application developer-provided value to be included with the HTTP\n * request as the value of the `X-Content-Transaction-ID` header.\n * @returns {Promise}\n *\n */\n ContentManager.prototype.addToWatchlist = function (contentIds, contentTransactionId) {\n\n const errorMessage = {\n method: 'addToWatchlist(contentIds)',\n get contentIds() {\n return `${this.method} needs Array of Strings`;\n },\n get contentTransactionId() {\n return `${this.method} contentTransactionId should be a String with length`;\n }\n };\n\n array.of.nonEmptyString(contentIds, errorMessage.contentIds, InvalidArgumentException);\n\n if (Check.assigned(contentTransactionId)) {\n nonEmptyString(contentTransactionId, errorMessage.contentTransactionId, InvalidArgumentException);\n }\n\n const addToWatchlistQuery = new AddToWatchlistQuery(contentIds);\n\n return this.query({\n query: addToWatchlistQuery,\n contentTransactionId\n });\n\n };\n\n /**\n *\n * @access public\n * @returns {Promise}\n *\n */\n ContentManager.prototype.clearWatchlist = function () {\n\n const clearWatchlistQuery = new ClearWatchlistQuery();\n\n return this.query(clearWatchlistQuery);\n\n };\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/watchlist/watchlistExtensions.js","/**\n *\n * @module watchlistQuery\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../../services/exception/entry';\nimport ContentQuery from './../contentQuery';\nimport GraphQlQuery from './../graphQlQuery';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class WatchlistQuery\n * @extends {SDK.Content.ContentQuery}\n *\n */\nexport default class WatchlistQuery extends ContentQuery {\n\n /**\n *\n * @param {GraphQlQuery} query\n *\n */\n constructor(query) {\n\n const errorMessage = {\n ctor: 'WatchlistQuery(query)',\n get query() {\n return `${this.ctor} needs GraphQlQuery instance`;\n }\n };\n\n instanceStrict(query, GraphQlQuery, errorMessage.query, InvalidArgumentException);\n\n super('watchlist', query);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/watchlist/watchlistQuery.js","/**\n *\n * @module removeFromWatchlistQuery\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../../services/exception/entry';\nimport ContentQuery from './../contentQuery';\nimport GraphQlPersistedQuery from './../graphQlPersistedQuery';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\n/**\n *\n * @class RemoveFromWatchlistQuery\n * @extends {SDK.Content.ContentQuery}\n *\n */\nexport default class RemoveFromWatchlistQuery extends ContentQuery {\n\n /**\n *\n * @param {Array} contentIds\n *\n */\n constructor(contentIds) {\n\n const errorMessage = {\n ctor: 'RemoveFromWatchlistQuery(contentIds)',\n get contentIds() {\n return `${this.ctor} needs Array of Strings`;\n }\n };\n\n Check.assert(\n Check.all(\n [\n Check.array.of.nonEmptyString(contentIds),\n Check.nonEmptyArray(contentIds)\n ]\n ),\n errorMessage.contentIds,\n InvalidArgumentException\n );\n\n const graphQlPersistedQuery = new GraphQlPersistedQuery('deleteFromWatchlist', {\n contentIds\n });\n\n super('watchlistPersisted', graphQlPersistedQuery);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/watchlist/removeFromWatchlistQuery.js","/**\n *\n * @module addToWatchlistQuery\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../../services/exception/entry';\nimport ContentQuery from './../contentQuery';\nimport GraphQlPersistedQuery from './../graphQlPersistedQuery';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\n/**\n *\n * @class AddToWatchlistQuery\n * @extends {SDK.Content.ContentQuery}\n *\n */\nexport default class AddToWatchlistQuery extends ContentQuery {\n\n /**\n *\n * @param {Array} contentIds\n *\n */\n constructor(contentIds) {\n\n const errorMessage = {\n ctor: 'AddToWatchlistQuery(contentIds)',\n get contentIds() {\n return `${this.ctor} needs Array of Strings`;\n }\n };\n\n Check.assert(\n Check.all(\n [\n Check.array.of.nonEmptyString(contentIds),\n Check.nonEmptyArray(contentIds)\n ]\n ),\n errorMessage.contentIds,\n InvalidArgumentException\n );\n\n const graphQlPersistedQuery = new GraphQlPersistedQuery('addToWatchList', {\n contentIds\n });\n\n super('watchlistPersisted', graphQlPersistedQuery);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/watchlist/addToWatchlistQuery.js","/**\n *\n * @module clearWatchlistQuery\n *\n */\n\nimport ContentQuery from './../contentQuery';\nimport GraphQlPersistedQuery from './../graphQlPersistedQuery';\n\n/**\n *\n * @class ClearWatchlistQuery\n * @extends {SDK.Content.ContentQuery}\n *\n */\nexport default class ClearWatchlistQuery extends ContentQuery {\n\n constructor() {\n\n super('watchlistPersisted', new GraphQlPersistedQuery('clearWatchlist'));\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/watchlist/clearWatchlistQuery.js","/**\n *\n * @module entry\n * @desc {SDK.CustomerService} entry point.\n *\n */\n\nimport CustomerServiceManager from './customerServiceManager';\n\n/**\n *\n * @typedef SDK.CustomerService\n * @type {Object}\n *\n * @property {CustomerServiceManager} CustomerServiceManager\n *\n */\n\n/**\n *\n * @type {SDK.CustomerService}\n *\n */\nexport default {\n\n CustomerServiceManager\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/customerService/entry.js","/**\n *\n * @module fetchStatus\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SDK.QualityOfService.FetchStatus\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different types of fetch status.\n * @example\n * SDK.QualityOfService.FetchStatus.completed // 'completed'\n *\n * @property {String} completed\n * @property {String} canceled\n * @property {String} noNetwork\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.FetchStatus}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n completed: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n canceled: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n noNetwork: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/fetchStatus.js","/**\n *\n * @module httpMethod\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SDK.QualityOfService.HttpMethod\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different types of http methods.\n * @example\n * SDK.QualityOfService.HttpMethod.get // 'get'\n *\n * @property {String} get\n * @property {String} post\n * @property {String} put\n * @property {String} delete\n * @property {String} patch\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.HttpMethod}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n get: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n post: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n put: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n delete: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n patch: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/httpMethod.js","/**\n *\n * @module networkError\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SDK.QualityOfService.NetworkError\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different types of network errors.\n * @example\n * SDK.QualityOfService.NetworkError.dns // 'dns'\n *\n * @property {String} dns\n * @property {String} timeout\n * @property {String} notconnected\n * @property {String} prohibited\n * @property {String} unknown\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.NetworkError}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc a DNS failure\n *\n */\n dns: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc a request timeout\n *\n */\n timeout: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc network connectivity error\n *\n */\n notConnected: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc server certificate validation error\n *\n */\n prohibited: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc all other errors\n *\n */\n unknown: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/networkError.js","/**\n *\n * @module networkType\n *\n */\n\n/**\n *\n * @typedef SDK.QualityOfService.NetworkType\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different types of networks.\n * @example\n * SDK.QualityOfService.NetworkType.event // 'event'\n *\n * @property {String} 3g\n * @property {String} 4g\n * @property {String} 5g\n * @property {String} wifi\n * @property {String} ethernet\n * @property {String} unknown\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.NetworkType}\n *\n */\nexport default {\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n cellular3g: '3g',\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n cellular4g: '4g',\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n cellular5g: '5g',\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n wifi: 'wifi',\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n ethernet: 'ethernet',\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n *\n */\n unknown: 'unknown'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/networkType.js","/**\n *\n * @module playlistLiveType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SDK.QualityOfService.PlaylistLiveType\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different types of playlists.\n * @example\n * SDK.QualityOfService.PlaylistLiveType.event // 'event'\n *\n * @property {String} event\n * @property {String} sliding\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.PlaylistLiveType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Event based playlist\n *\n */\n event: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Sliding playlist\n *\n */\n sliding: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playlistLiveType.js","/**\n *\n * @module mediaFetchError\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SDK.QualityOfService.MediaFetchError\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different types errors for media fetch.\n * @example\n * SDK.QualityOfService.MediaFetchError.networkFailure // 'networkFailure'\n *\n * @property {String} networkFailure\n * @property {String} authorizationExpired\n * @property {String} concurrency\n * @property {String} pcon\n * @property {String} blackout\n * @property {String} notEntitled\n * @property {String} contentNotAvailable\n * @property {String} unknown\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.MediaFetchError}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Any failure due to a network related problem\n *\n */\n networkFailure: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc DSS user token expired\n *\n */\n authorizationExpired: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Concurrency violation\n *\n */\n concurrency: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Failure due to user being locked out of content due to parental controls\n *\n */\n pcon: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Failure due to user being blacked out from watching content\n *\n */\n blackout: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Failure due to user not being entitled to watch content\n *\n */\n notEntitled: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Failure due to content no longer being available\n *\n */\n contentNotAvailable: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc All other errors\n *\n */\n unknown: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/mediaFetchError.js","/**\n *\n * @module playbackExitedCause\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SDK.QualityOfService.PlaybackExitedCause\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different end causes of playback.\n * @example\n * SDK.QualityOfService.PlaybackExitedCause.applicationExit // 'applicationExit'\n *\n * @property {String} applicationExit\n * @property {String} applicationBackground\n * @property {String} user\n * @property {String} error\n * @property {String} playedToEnd\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.PlaybackExitedCause}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc When the application was terminated during playback.\n *\n */\n applicationExit: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc When the application was sent to background during playback. Note if playback\n * continues in PiP, it is not considered to have ended.\n *\n */\n applicationBackground: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc When the user exits the player.\n *\n */\n user: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc When a fatal error occurs which prevents playback from continuing.\n *\n */\n error: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc When the media plays to completion and the player automatically closes.\n *\n */\n playedToEnd: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackExitedCause.js","/**\n *\n * @module playbackError\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SDK.QualityOfService.PlaybackError\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different types of playback errors.\n * @example\n * SDK.QualityOfService.PlaybackError.drmHdcp // 'drmHdcp'\n *\n * @property {String} drmHdcp\n * @property {String} drmDecryption\n * @property {String} drmExpiredLicense\n * @property {String} drmSecurityLevel\n * @property {String} drmOther\n * @property {String} networkFailure\n * @property {String} serviceError\n * @property {String} authorizationExpired\n * @property {String} concurrency\n * @property {String} pcon\n * @property {String} blackout\n * @property {String} notEntitled\n * @property {String} contentNotAvailable\n * @property {String} unknown\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.PlaybackError}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc All HDCP related errors\n *\n */\n drmHdcp: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc DRM decryption error\n *\n */\n drmDecryption: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc DRM license expired\n *\n */\n drmExpiredLicense: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc DRM security level error\n *\n */\n drmSecurityLevel: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc All other DRM errors\n *\n */\n drmOther: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Any failure due to a network related problem\n *\n */\n networkFailure: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Failure due to HTTP errors when requesting media\n *\n */\n serviceError: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc DSS user token expired\n *\n */\n authorizationExpired: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Concurrency violation\n *\n */\n concurrency: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Failure due to user being locked out of content due to parental controls\n *\n */\n pcon: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Failure due to user being blacked out from watching content\n *\n */\n blackout: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Failure due to user not being entitled to watch content\n *\n */\n notEntitled: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Failure due to content no longer being available\n *\n */\n contentNotAvailable: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc All other errors\n *\n */\n unknown: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackError.js","/**\n *\n * @module playbackIntent\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SDK.QualityOfService.PlaybackIntent\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different types of playback intent.\n * @example\n * SDK.QualityOfService.PlaybackIntent.autoplay // 'autoplay'\n *\n * @property {String} autoplay\n * @property {String} userAction\n * @property {String} autoAdvance\n * @property {String} background\n * @property {String} pip\n * @property {String} transferred\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.PlaybackIntent}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc when the application automatically plays a video. e.g. the frontmost cell of a content carousel.\n *\n */\n autoplay: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc when the user clicks or taps on a video to begin playback.\n *\n */\n userAction: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc when a new media item automatically plays after the previous has ended.\n * e.g. when viewing a series season or playlist.\n *\n */\n autoAdvance: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc when video is part of a UI element, such as a hero on a series detail page.\n *\n */\n background: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc when the user explicitly enables picture in picture, or when implicitly enabled via backgrounding the app.\n *\n */\n pip: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc when the user transferres the video to Chromecast or Airplay.\n *\n */\n transferred: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackIntent.js","/**\n *\n * @module playbackSeekCause\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SDK.QualityOfService.PlaybackSeekCause\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different types of playlists.\n * @example\n * SDK.QualityOfService.PlaybackSeekCause.app // 'app'\n *\n * @property {String} app\n * @property {String} trickplay\n * @property {String} scrub\n * @property {String} skip\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.PlaybackSeekCause}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc When the player jumps to live or the application decides the target playhead.\n *\n */\n app: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc When the user seeks to a specific point.\n *\n */\n trickplay: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc When a new position is reached via linear reverse or forward playback at a non-1x rate.\n *\n */\n scrub: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc When the user skips to a milestone (intro skip, recap end).\n *\n */\n skip: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackSeekCause.js","/**\n *\n * @module fairPlayDrmProvider\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md#fairplay\n * @see https://github.bamtech.co/services-commons/mdrm/blob/master/FairPlayStreaming_PG.pdf\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\nimport DrmManager from './drmManager';\nimport DrmProvider from './drmProvider';\nimport FairPlayCertificateStorage from './fairPlayCertificateStorage';\n\nconst Util = Services.Util;\nconst TokenManager = Token.TokenManager;\nconst DrmType = Services.Media.DrmType;\nconst DrmClientEndpoint = Services.Drm.DrmClientEndpoint;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class FairPlayDrmProvider\n * @desc FairPlay is the Apple content encryption standard.\n * @since 3.2.0\n *\n */\nexport default class FairPlayDrmProvider extends DrmProvider {\n\n /**\n *\n * @param {SDK.Drm.DrmManager} provider\n * @param {SDK.Token.TokenManager} tokenManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(provider, tokenManager, logger = Logging) {\n\n const errorMessage = {\n ctor: 'FairPlayDrmProvider(provider, tokenManager, logger)',\n get provider() {\n return `${this.ctor} needs valid provider SDK.Drm.DrmManager instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n }\n };\n\n instanceStrict(provider, DrmManager, errorMessage.provider, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n\n super(provider, tokenManager, logger);\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.licenseRequestUri = Util.getSafe(() => {\n return provider.config.client.endpoints[DrmClientEndpoint.fairPlayLicense].href;\n }, '');\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.licenseRequestHeaders = Util.getSafe(() => {\n return provider.config.client.endpoints[DrmClientEndpoint.fairPlayLicense].headers;\n }, {});\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.certificateUri = Util.getSafe(() => {\n return provider.config.client.endpoints[DrmClientEndpoint.fairPlayCertificate].href;\n }, '');\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.certificateHeaders = Util.getSafe(() => {\n return provider.config.client.endpoints[DrmClientEndpoint.fairPlayCertificate].headers;\n }, {});\n\n /**\n *\n * @access private\n * @type {String}\n * @desc DRM identifier String\n *\n */\n this.type = DrmType.FAIRPLAY;\n\n /**\n *\n * @access private\n * @type {FairPlayCertificateStorage}\n * @desc references the Storage API to get/set a certificate\n *\n */\n this.certificateStorage = new FairPlayCertificateStorage(\n Util.getSafe(() => this.provider.clientId),\n Util.getSafe(() => this.provider.environment),\n Util.getSafe(() => this.provider.storage),\n this.logger\n );\n\n this.logger.log(FairPlayDrmProvider.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {Array} serverPlaybackContext\n * @desc Gets a license required for decrypting FairPlay protected content.\n * @emits {MediaFailure} - Raised when the method fails, describing the cause of the problem.\n * @returns {Promise>}\n *\n */\n getFairPlayLicense(serverPlaybackContext) {\n\n const errorMessage = {\n method: 'FairPlayDrmProvider.getFairPlayLicense(serverPlaybackContext)',\n get serverPlaybackContext() {\n return `${this.method} serverPlaybackContext should be an ArrayBuffer view`;\n }\n };\n\n Check.assert(ArrayBuffer.isView(serverPlaybackContext), errorMessage.serverPlaybackContext, InvalidArgumentException); // eslint-disable-line\n\n const { provider, logger, failureEvent, playbackContext } = this;\n\n return provider.getFairPlayLicense(serverPlaybackContext, playbackContext).then((data) => {\n\n return Promise.resolve(data);\n\n }).catch((exception) => {\n\n logger.error(FairPlayDrmProvider.name, 'FairPlay license request failure.');\n logger.info(FairPlayDrmProvider.name, `Dispatch ${failureEvent} event.`);\n\n this.emit(failureEvent, exception);\n\n return Promise.reject(exception);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @desc Gets a certificate required for decrypting FairPlay protected content. First we attempt to retreive the\n * certificate from storage, if that does not exist we make a new request for a new certificate, store that and\n * then return the certificate.\n * @emits {MediaFailure} - Raised when the method fails, describing the cause of the problem.\n * @returns {Promise>}\n *\n */\n getFairPlayCertificate() {\n\n const { provider, logger, failureEvent, certificateStorage, playbackContext } = this;\n\n return certificateStorage.getStoredCertificate().then((storedCertificate) => {\n\n if (Check.assigned(storedCertificate)) {\n\n return Promise.resolve(storedCertificate);\n\n } else {\n\n return provider.getFairPlayCertificate(playbackContext).then((certificate) => {\n\n return certificateStorage.storeCertificate(certificate).then(() => {\n return certificateStorage.getStoredCertificate();\n });\n\n }).catch((exception) => {\n\n logger.error(FairPlayDrmProvider.name, 'FairPlay certificate request failure.');\n logger.info(FairPlayDrmProvider.name, `Dispatch ${failureEvent} event.`);\n\n this.emit(failureEvent, exception);\n\n return Promise.reject(exception);\n\n });\n }\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/fairPlayDrmProvider.js","/**\n *\n * @module atvFairPlayCertificateStorage\n *\n */\n\nimport Check from 'check-types';\n\nimport FairPlayCertificateStorage from './fairPlayCertificateStorage';\n\n/**\n *\n * @class AtvFairPlayCertificateStorage\n * @extends {FairPlayCertificateStorage}\n * @desc Provides a storage mechanism for storing a Fairplay Certificate.\n * @since 3.3.3\n *\n */\nexport default class AtvFairPlayCertificateStorage extends FairPlayCertificateStorage {\n\n /**\n *\n * @param {Sring} clientId\n * @param {String} environment\n * @param {SDK.Services.Storage} storage\n * @param {SDK.Logging.Logger} logger\n *\n */\n constructor(clientId, environment, storage, logger) {\n\n super(clientId, environment, storage, logger);\n\n this.logger.log(AtvFairPlayCertificateStorage.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @desc gets the stored certificate if found\n * @returns {Promise}\n *\n */\n getStoredCertificate() {\n\n const { cacheKey, storage } = this;\n\n return storage.get(cacheKey).then((storedCertificate) => {\n\n let certificate;\n\n if (Check.nonEmptyString(storedCertificate)) {\n certificate = storedCertificate;\n }\n\n return Promise.resolve(certificate);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {String} certificate\n * @desc attempts to store a certificate via the Storage API\n * @returns {Promise}\n *\n */\n storeCertificate(certificate) {\n\n const { cacheKey, storage } = this;\n\n return storage.set(cacheKey, certificate);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/atvFairPlayCertificateStorage.js","/**\n *\n * @module widevineCertificateStorage\n *\n */\n\nimport Services from './../services/entry';\nimport CertificateStorage from './certificateStorage';\n\nconst DrmType = Services.Media.DrmType;\n\n/**\n *\n * @class WidevineCertificateStorage\n * @extends {CertificateStorage}\n * @desc Provides a storage mechanism for storing a Widevine Certificate.\n * @since 3.2.0\n *\n */\nexport default class WidevineCertificateStorage extends CertificateStorage {\n\n /**\n *\n * @param {Sring} clientId\n * @param {String} environment\n * @param {SDK.Services.Storage} storage\n * @param {SDK.Logging.Logger} logger\n *\n */\n constructor(clientId, environment, storage, logger) {\n\n super(DrmType.WIDEVINE, clientId, environment, storage, logger);\n\n this.logger.log(WidevineCertificateStorage.name, 'Created.');\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/widevineCertificateStorage.js","/**\n *\n * @module entry\n * @desc {SDK.Identity} entry point.\n *\n */\n\nimport Adobe from './adobe/entry';\nimport Bam from './bam/entry';\n\n/**\n *\n * @typedef SDK.Identity\n * @type {Object}\n *\n * @property {Adobe} Adobe\n * @property {Bam} Bam\n *\n */\n\n/**\n *\n * @type {SDK.Identity}\n *\n */\nexport default {\n\n Adobe,\n Bam\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/identity/entry.js","/**\n *\n * @module adobeIdentityManager\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Services from './../../services/entry';\nimport Token from './../../token/entry';\nimport AdobeRegistration from './adobeRegistration';\n\nconst AccessTokenProvider = Token.AccessTokenProvider;\nconst AdobeIdentityManagerConfiguration = Services.Configuration.AdobeIdentityManagerConfiguration;\nconst AdobeIdentityClient = Services.Identity.Adobe.AdobeIdentityClient;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class AdobeIdentityManager\n *\n */\nexport default class AdobeIdentityManager {\n\n /**\n *\n * @param {SDK.Services.Configuration.AdobeIdentityManagerConfiguration} adobeIdentityManagerConfiguration\n * @param {SDK.Services.Identity.Adobe.AdobeIdentityClient} adobeIdentityClient\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Token.AccessTokenProvider} accessTokenProvider\n *\n */\n constructor(adobeIdentityManagerConfiguration, adobeIdentityClient, logger = Logging, accessTokenProvider) {\n\n const errorMessage = {\n ctor: 'AdobeIdentityManager(adobeIdentityManagerConfiguration, adobeIdentityClient, logger, accessTokenProvider)', // eslint-disable-line\n get adobeIdentityManagerConfiguration() {\n return `${this.ctor} needs SDK.Services.Configuration.AdobeIdentityManagerConfiguration instance`;\n },\n get adobeIdentityClient() {\n return `${this.ctor} needs SDK.Services.AdobeIdentityClient instance`;\n },\n get accessTokenProvider() {\n return `${this.ctor} needs SDK.Token.AccessTokenProvider instance`;\n }\n };\n\n instanceStrict(adobeIdentityManagerConfiguration, AdobeIdentityManagerConfiguration, adobeIdentityManagerConfiguration, InvalidArgumentException); // eslint-disable-line\n instanceStrict(adobeIdentityClient, AdobeIdentityClient, errorMessage.adobeIdentityClient, InvalidArgumentException); // eslint-disable-line\n instanceStrict(accessTokenProvider, AccessTokenProvider, errorMessage.accessTokenProvider, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.AdobeIdentityManagerConfiguration}\n *\n */\n this.config = adobeIdentityManagerConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Services.AdobeIdentityClient}\n *\n */\n this.client = adobeIdentityClient;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Token.AccessTokenProvider}\n *\n */\n this.accessTokenProvider = accessTokenProvider;\n\n this.logger.log(AdobeIdentityManager.name, 'Created');\n\n }\n\n /**\n *\n * @access public\n * @desc Gets an AdobeRegistration instance with a code that can be\n * used to activate the identity.\n * @returns {Promise} Returns an AdobeRegistration that can\n * be passed to AdobeIdentityApi#activateRegistration to activate the identity.\n *\n */\n getRegistration() {\n\n return new Promise((resolve, reject) => {\n return reject(new Error('Not Implemented'));\n });\n\n }\n\n /**\n *\n * @access public\n * @param {AdobeRegistration} adobeRegistration - The AdobeRegistration that\n * was generated for the identity.\n * @param {String} adobeId - The ID of the MVPD the identity is activating with.\n * @desc Activates the Adobe identity.\n * @returns {Promise} Returns an asynchronous action that will\n * send a notification when it is complete\n *\n */\n activateRegistration(adobeRegistration, adobeId) {\n\n const errorMessage = {\n method: 'AdobeIdentityManager.activateRegistration(adobeRegistration, adobeId)',\n get adobeRegistration() {\n return `${this.method} needs AdobeRegistration instance`;\n },\n get adobeId() {\n return `${this.method} adobeId should be a String with length`;\n }\n };\n\n instanceStrict(adobeRegistration, AdobeRegistration, errorMessage.adobeRegistration, InvalidArgumentException);\n nonEmptyString(adobeId, errorMessage.adobeId, InvalidArgumentException);\n\n return new Promise((resolve, reject) => {\n return reject(new Error('Not Implemented'));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/identity/adobe/adobeIdentityManager.js","/**\n *\n * @module adobeRegistration\n *\n */\n\nimport Services from './../../services/entry';\n\n/**\n *\n * @class {AdobeRegistration}\n * @extends {SDK.Services.Identity.Adobe.AdobeRegistration}\n *\n */\nexport default class AdobeRegistration extends Services.Identity.Adobe.AdobeRegistration {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/identity/adobe/adobeRegistration.js","/**\n *\n * @module bamIdentityManager\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Services from './../../services/entry';\nimport Token from './../../token/entry';\n\nconst Util = Services.Util;\nconst TokenManager = Token.TokenManager;\nconst IdentityTokenStorage = Token.IdentityTokenStorage;\nconst OneTimePasscodeRequestReason = Services.Identity.Bam.OneTimePasscodeRequestReason;\nconst BamIdentityManagerConfiguration = Services.Configuration.BamIdentityManagerConfiguration;\nconst BamIdentityClient = Services.Identity.Bam.BamIdentityClient;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n string,\n object,\n instanceStrict,\n nonEmptyString,\n nonEmptyObject,\n includes\n} = Check.assert;\n\n/**\n *\n * @class BamIdentityManager\n *\n */\nexport default class BamIdentityManager {\n\n /**\n *\n * @param {SDK.Services.Configuration.BamIdentityManagerConfiguration} config\n * @param {SDK.Services.Identity.Bam.BamIdentityClient} bamIdentityClient\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Token.IdentityTokenStorage} identityTokenStorage\n * @param {SDK.Token.TokenManager} tokenManager\n *\n */\n constructor(config, bamIdentityClient, logger = Logging, tokenManager, identityTokenStorage) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(config, bamIdentityClient, logger, tokenManager, identityTokenStorage)`,\n get config() {\n return `${this.ctor} needs SDK.Services.Configuration.BamIdentityManagerConfiguration instance`;\n },\n get bamIdentityClient() {\n return `${this.ctor} needs SDK.Services.Identity.BamIdentityClient instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n },\n get identityTokenStorage() {\n return `${this.ctor} needs SDK.Token.IdentityTokenStorage instance`;\n }\n };\n\n instanceStrict(config, BamIdentityManagerConfiguration, errorMessage.config, InvalidArgumentException);\n instanceStrict(bamIdentityClient, BamIdentityClient, errorMessage.bamIdentityClient, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n instanceStrict(identityTokenStorage, IdentityTokenStorage, errorMessage.identityTokenStorage, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.BamIdentityManagerConfiguration}\n *\n */\n this.config = config;\n\n /**\n *\n * @access private\n * @type {SDK.Services.BamIdentityClient}\n *\n */\n this.client = bamIdentityClient;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Token.IdentityTokenStorage}\n *\n */\n this.identityTokenStorage = identityTokenStorage;\n\n this.logger.log(BamIdentityManager.name, 'Created');\n\n }\n\n /**\n *\n * @access private\n * @note If `(Date.now() < idenitityToken.issueAt)`, assume the user changed their clock\n * and treat the token as if it has expired.\n * @returns {Promise}\n *\n */\n requiresAuthentication() {\n\n const { identityToken, config } = this;\n\n const now = Date.now();\n const expirationBufferSeconds = Util.getSafe(() => config.extras.expirationBufferSeconds);\n const hasIdentityToken = Check.assigned(identityToken);\n\n if (!hasIdentityToken) {\n return Promise.resolve(true);\n }\n\n const { issuedAt, expiresIn } = identityToken;\n\n if (now < issuedAt) {\n return Promise.resolve(true);\n }\n\n const refreshIn = expiresIn - expirationBufferSeconds;\n const isTokenValid = now > refreshIn;\n\n return Promise.resolve(isTokenValid);\n\n }\n\n /**\n *\n * @access private\n * @param {String} email - The email associated with the identity.\n * @param {String} password - The password associated with the identity.\n * @desc Logs into the BAM services with an existing identity.\n * @returns {Promise} An awaitable action that\n * completes when the authenticate operation has succeeded.\n *\n */\n authenticate(email, password) {\n\n const errorMessage = {\n method: `${this.constructor.name}.authenticate(email, password)`,\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get password() {\n return `${this.method} password should be a String with length`;\n }\n };\n\n string(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n string(password, errorMessage.password, InvalidArgumentException);\n nonEmptyString(password, errorMessage.password, InvalidArgumentException);\n\n const { accessToken, client, identityTokenStorage } = this;\n\n return client.authenticate(email, password, accessToken).then((identityToken) => {\n\n return identityTokenStorage.saveIdentityToken(identityToken);\n\n }).then(() => {\n\n return Promise.resolve(this.identityToken);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {Object} options\n * @param {String} options.email - The email for the new identity.\n * @param {String} options.password - The password for the new identity.\n * @param {Object} [options.attributes]\n * @note {Object} [options.metadata] - Contains additional information about the identity being created (ex: isTest)\n * @returns {Promise} An awaitable task indicating settings were updated successfully.\n *\n */\n createIdentity(options) {\n const errorMessage = {\n method: `${this.constructor.name}.createIdentity(options)`,\n get options() {\n return `${this.method} options should be a non-empty Object`;\n },\n get email() {\n return `${this.method} options.email should be a String with length`;\n },\n get password() {\n return `${this.method} options.password should be a String with length`;\n },\n get attributes() {\n return `${this.method} options.attributes should be an Object`;\n },\n get metadata() {\n return `${this.method} options.metadata should be an Object`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { email, password, attributes, metadata } = options;\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(password, errorMessage.password, InvalidArgumentException);\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n\n if (Check.assigned(metadata)) {\n object(metadata, errorMessage.metadata, InvalidArgumentException);\n }\n\n const { client, accessToken } = this;\n\n return client.createIdentity({\n email,\n password,\n attributes,\n accessToken,\n metadata\n });\n\n }\n\n /**\n *\n * @access private\n * @param {String} email\n * @param {String} password\n * @returns {Promise}\n *\n */\n changeEmail(email, password) {\n\n const errorMessage = {\n method: `${this.constructor.name}.changeEmail(email, password)`,\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get password() {\n return `${this.method} password should be a String with length`;\n }\n };\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(password, errorMessage.password, InvalidArgumentException);\n\n const { client, identityToken } = this;\n\n return client.changeEmail(email, password, identityToken);\n\n }\n\n /**\n *\n * @access private\n * @param {String} newPassword\n * @param {String} [oldPassword]\n * @returns {Promise}\n *\n */\n changePassword(newPassword, oldPassword) {\n\n const errorMessage = {\n method: `${this.constructor.name}.changePassword(newPassword, oldPassword)`,\n get newPassword() {\n return `${this.method} newPassword should be a String with length`;\n },\n get oldPassword() {\n return `${this.method} oldPassword should be a String with length`;\n }\n };\n\n nonEmptyString(newPassword, errorMessage.newPassword, InvalidArgumentException);\n\n if (Check.assigned(oldPassword)) {\n nonEmptyString(oldPassword, errorMessage.oldPassword, InvalidArgumentException);\n }\n\n const { client, identityToken } = this;\n\n return client.changePassword(newPassword, oldPassword, identityToken);\n\n }\n\n /**\n *\n * @access private\n * @param {String} email\n * @returns {Promise}\n *\n */\n requestPasswordReset(email) {\n\n const errorMessage = {\n method: `${this.constructor.name}.requestPasswordReset(email)`,\n get email() {\n return `${this.method} email should be a String with length`;\n }\n };\n\n string(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n\n const { client, accessToken } = this;\n\n return client.requestPasswordReset(email, accessToken);\n\n }\n\n /**\n *\n * @access private\n * @param {String} newPassword\n * @param {String} resetToken\n * @returns {Promise}\n *\n */\n resetPassword(newPassword, resetToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.resetPassword(newPassword, resetToken)`,\n get newPassword() {\n return `${this.method} newPassword should be a String with length`;\n },\n get resetToken() {\n return `${this.method} resetToken should be a String with length`;\n }\n };\n\n string(newPassword, errorMessage.newPassword, InvalidArgumentException);\n nonEmptyString(newPassword, errorMessage.newPassword, InvalidArgumentException);\n string(resetToken, errorMessage.resetToken, InvalidArgumentException);\n nonEmptyString(resetToken, errorMessage.resetToken, InvalidArgumentException);\n\n const { client, accessToken } = this;\n\n return client.resetPassword(newPassword, resetToken, accessToken);\n\n }\n\n /**\n *\n * @access private\n * @returns {Promise}\n *\n */\n getIdentity() {\n\n const { client, identityToken } = this;\n\n return client.getIdentity(identityToken);\n\n }\n\n /**\n *\n * @access private\n * @param {Object} attributes - The attributes to change.\n * @desc Updates the supplied attributes. Omitted attributes are not updated.\n * @returns {Promise}\n *\n */\n updateAttributes(attributes) {\n\n const errorMessage = {\n method: `${this.constructor.name}.updateAttributes(attributes)`,\n get attributes() {\n return `${this.method} attributes should be a non empty Object`;\n }\n };\n\n nonEmptyObject(attributes, errorMessage.attributes, InvalidArgumentException);\n\n const { client, identityToken } = this;\n\n return client.updateAttributes(attributes, identityToken);\n\n }\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @param {String} email\n * @desc checks if a user's email is registered with BamIdp\n * @returns {Promise>} resolves with a flag indicating if the\n * account has been registered with the BamIdp service\n *\n */\n async getAuthenticationFlow(email) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getAuthenticationFlow(email)`,\n get email() {\n return `${this.method} email should be a String with length`;\n }\n };\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n\n const { client, accessToken } = this;\n\n const authenticationFlowResponse = await client.check(email, accessToken);\n\n return authenticationFlowResponse.operations;\n\n }\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @param {String} email - The email to send the passcode to.\n * @param {SDK.Services.Identity.Bam.OneTimePasscodeRequestReason} reason - The intended use of the passcode.\n * @desc Request that a one-time passcode be sent to an email address.\n * @returns {Promise}\n *\n */\n async requestOneTimePasscode(email, reason) {\n\n const errorMessage = {\n method: `${this.constructor.name}.requestOneTimePasscode(email, reason)`,\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get reason() {\n return `${this.method} reason should be a valid SDK.Services.Identity.Bam.OneTimePasscodeRequestReason`;\n }\n };\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n includes(OneTimePasscodeRequestReason, reason, errorMessage.reason, InvalidArgumentException);\n\n const { client, accessToken } = this;\n\n return await client.requestOneTimePasscode(email, reason, accessToken);\n\n }\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @param {String} email - The email that received the passcode.\n * @param {String} passcode - The passcode sent to the email associated with the identity.\n * @desc Logs the user in with the BAM identity service.\n * @returns {Promise}\n *\n */\n async redeemOneTimePasscode(email, passcode) {\n\n const errorMessage = {\n method: `${this.constructor.name}.redeemOneTimePasscode(email, passcode)`,\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get passcode() {\n return `${this.method} passcode should be a String with length`;\n }\n };\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(passcode, errorMessage.passcode, InvalidArgumentException);\n\n const { client, accessToken, identityTokenStorage } = this;\n\n return await client.redeemOneTimePasscode(email, passcode, accessToken).then((redeemedPasscodeToken) => {\n\n return identityTokenStorage.saveIdentityToken(redeemedPasscodeToken);\n\n }).then(() => {\n\n return Promise.resolve(this.identityToken);\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the TokenManager instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.tokenManager.getAccessToken();\n\n }\n\n /**\n *\n * @access private\n * @desc Grabs the stored IdentityToken from the IdentityTokenStorage instance\n * @returns {SDK.Token.IdentityToken}\n *\n */\n get identityToken() {\n\n return this.identityTokenStorage.getIdentityToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/identity/bam/bamIdentityManager.js","/**\n *\n * @module dustSink\n *\n */\n\nimport Check from 'check-types';\n\nimport Logging from './../../logging/entry';\nimport Services from './../../services/entry';\n\nimport TelemetryManager from './../telemetry/telemetryManager';\n\nimport DustEvent from './dustEvent';\n\nconst Dust = Services.Internal.Dust;\nconst DustServerPayload = Dust.DustServerPayload;\nconst DustClientPayload = Dust.DustClientPayload;\nconst DustDevicePayload = Dust.DustDevicePayload;\nconst DustApplicationPayload = Dust.DustApplicationPayload;\nconst DustSdkPayload = Dust.DustSdkPayload;\nconst DustCategory = Dust.DustCategory;\nconst LogSink = Logging.LogSink;\n\nconst Exception = Services.Exception;\nconst ErrorReason = Services.Exception.ErrorReason;\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\nconst ExceptionReference = Exception.ExceptionReference;\n\nconst {\n nonEmptyObject,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class DustSink\n * @desc Sink implementation that logs to Dust Service via TelemetryManager.postEvent\n * @extends {LogSink}\n *\n */\nexport default class DustSink extends LogSink {\n\n /**\n *\n * @param {SDK.Logging.Logger} logger\n *\n */\n constructor(logger) {\n\n super();\n\n const errorMessage = {\n ctor: `${this.constructor.name}(logger)`,\n get logger() {\n return `${this.ctor} logger should be an instance of SDK.Logging.Logger`;\n }\n };\n\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {Array}\n * @desc holds dustEvents until the TelemetryManager is available and then it is no longer used\n *\n */\n this.queue = [];\n\n /**\n *\n * @access private\n * @type {SDK.Internal.Telemetry.TelemetryManager}\n *\n */\n this.telemetryManager = null;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc true when `SDK.Internal.Telemetry.TelemetryManager.EventBuffer` is ready for use\n *\n */\n this.eventBufferReady = false;\n\n /**\n *\n * @access private\n * @type {Object|null}\n * @desc static environment properties for dust reporting\n * @note `environment.sdk: SDK.Services.Internal.Dust.DustSdkPayload`\n * @note `environment.device: SDK.Services.Internal.Dust.DustDevicePayload`\n *\n */\n this.environment = null;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Internal.Dust.DustApplicationPayload|null}\n * @desc contains information required for `SDK.Services.Internal.Dust.DustApplicationPayload`\n *\n */\n this.application = null;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {Boolean}\n * @desc determines if dust logs should be queued or sent to the Telemetry service\n *\n */\n this.enabled = false;\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {Boolean}\n *\n */\n this.initialized = false;\n\n }\n\n /**\n *\n * @access public\n * @param {Object} event - The event to be logged.\n * @desc receives an event from logger.log and stores it in a queue or creates a dust event and posts it to\n * either telemetryManager.eventBuffer.postEvent or telemetryManager.trackingBuffer.postEvent, depending\n * on the event's category.\n * @note `event.isPublic` indicates this is a `Dust-like` event, i.e. not a `StreamSample` event\n * @returns {Promise}\n *\n */\n log(event) {\n\n const { enabled, queue } = this;\n\n if (event.isPublic && queue) {\n\n if (enabled) {\n\n this.postEvent(event);\n\n } else {\n\n queue.push(event);\n\n }\n\n }\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @desc enables the DustSink and empties the queue\n * @desc enables the DustSink to start sending events to the `EventBuffer`\n * @note called from `SdkSession.enableDustSink`\n *\n */\n enableDustSink() {\n\n this.enabled = true;\n\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @desc empties the sink and tries to send all of the stored events to the respective `EventBuffer`\n * @note called from `SdkSession.enableDustSink`\n *\n */\n emptySink() {\n\n const { queue } = this;\n\n while (queue.length) {\n this.postEvent(queue.shift());\n }\n\n }\n\n /**\n *\n * @access public\n * @desc disabled the dust sink and invalidates the queue\n * @note called from `SdkSession.createSdkSession`\n * @note this disables the `DustSink` for the remainder of the SDK lifecycle and erases the queue\n *\n */\n disableDustSink() {\n\n this.enabled = false;\n this.queue = [];\n\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @param {Object} options\n * @param {TelemetryManager} options.telemetryManager\n * @param {Object} options.environment\n * @param {Object} options.sdkConfigApplication\n * @param {Object} [options.application]\n * @throws {InvalidDustConfigurationException}\n * @note thrown if an incorrect or incomplete `application` is provided with\n * `SDK.Services.Configuration.BootstrapConfiguration` and the SDK Client Config via or if `environment` cannot be\n * determined or if the `environment` cannot be determined\n * @note merge `application` last allowing Application Developers to override what is in the config\n * @note `application` is optional, but if it is provided it must have a `version` property at a minimum\n * @note this method must be called before `this.enableDustSink`\n *\n */\n initializeDustSink(options) {\n\n const errorMessage = {\n method: `${this.constructor.name}(options)`,\n get telemetryManager() {\n return `${this.method} telemetryManager should be an instance of SDK.Internal.Telemetry.TelemetryManager`; // eslint-disable-line max-len\n },\n get environment() {\n return `${this.method} environment should be a non-empty Object`;\n },\n get sdkConfigApplication() {\n return `${this.method} sdkConfigApplication should be a non-empty Object`;\n },\n get application() {\n return `${this.method} application should be a non-empty Object`;\n },\n get device() {\n return `${this.method} environment.device should be a non-empty Object`;\n },\n get sdk() {\n return `${this.method} environment.sdk should be a non-empty Object`;\n }\n };\n\n try {\n\n const { telemetryManager, environment, sdkConfigApplication, application } = options;\n const { device, sdk } = environment;\n\n instanceStrict(telemetryManager, TelemetryManager, errorMessage.telemetryManager, InvalidArgumentException);\n nonEmptyObject(environment, errorMessage.environment, InvalidArgumentException);\n nonEmptyObject(sdkConfigApplication, errorMessage.sdkConfigApplication, InvalidArgumentException);\n\n if (Check.assigned(application)) {\n nonEmptyObject(application, errorMessage.application, InvalidArgumentException);\n }\n\n nonEmptyObject(device, errorMessage.device, InvalidArgumentException);\n nonEmptyObject(sdk, errorMessage.sdk, InvalidArgumentException);\n\n const applicationData = Object.assign({}, sdkConfigApplication, application);\n\n this.application = new DustApplicationPayload(applicationData);\n\n this.environment = {\n device: new DustDevicePayload(device.os, device.model),\n sdk: new DustSdkPayload(sdk.version, sdk.platform)\n };\n\n this.telemetryManager = telemetryManager;\n this.initialized = true;\n\n } catch (ex) {\n\n throw new ServiceException({\n reasons: [new ErrorReason('', ex.message)],\n exceptionData: ExceptionReference.internal.invalidDustConfiguration\n });\n\n }\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {Object} event\n * @desc creates an instance of `SDK.Internal.Dust.DustEvent`\n * @note currently we do not support `transactionId` and `correlationIds`\n * @returns {SDK.Internal.Dust.DustEvent}\n *\n */\n createDustEvent(event) {\n\n const { environment, application } = this;\n const { device, sdk } = environment;\n const { extraData = {} } = event;\n\n const server = extraData.server;\n const data = Object.assign({}, extraData.data);\n\n let dustServerPayload = {};\n\n if (extraData.errors) {\n data.errors = extraData.errors;\n }\n\n if (Check.nonEmptyObject(server)) {\n\n const { host, path, method, statusCode, requestId, roundTripTime } = server;\n\n dustServerPayload = new DustServerPayload({\n host,\n path,\n method,\n statusCode,\n requestId,\n roundTripTime\n });\n\n }\n\n const dustClientPayload = new DustClientPayload({\n application,\n device,\n sdk,\n category: extraData.category,\n data,\n event: event.message,\n timestamp: extraData.timestamp\n });\n\n return new DustEvent(dustClientPayload, dustServerPayload);\n\n }\n\n /**\n *\n * @access private\n * @param {Object} event - The event to be posted.\n * @desc calls postEvent on the EventBuffer that is appropriate for the event supplied. Depending on the\n * event's category, this could be either the telemetryManager.eventBuffer or telemetryManager.trackingBuffer.\n * @note telemetryManager.trackingBuffer.postEvent and telemetryManager.eventBuffer.postEvent fire\n * asynchronous methods but we do not wait for them to resolve.\n *\n */\n postEvent(event) {\n\n try {\n\n const { telemetryManager } = this;\n const { extraData = {} } = event;\n const { category } = extraData;\n\n const dustEvent = this.createDustEvent(event);\n\n if (category === DustCategory.qos) {\n\n telemetryManager.qosBuffer.postEvent(dustEvent);\n\n } else if (category === DustCategory.glimpse) {\n\n telemetryManager.trackingBuffer.postEvent(dustEvent);\n\n } else {\n\n telemetryManager.eventBuffer.postEvent(dustEvent);\n\n }\n\n } catch (ex) {\n\n this.logger.warn(DustSink.name, `Error creating SDK.Internal.Dust.DustEvent ${ex.message}`);\n\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/internal/dust/dustSink.js","/**\n *\n * @module telemetryManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/telemetry.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Services from './../../services/entry';\nimport Token from './../../token/entry';\nimport EventBuffer from './eventBuffer';\n\nconst TelemetryManagerConfiguration = Services.Configuration.TelemetryManagerConfiguration;\nconst TelemetryClient = Services.Internal.Telemetry.TelemetryClient;\nconst TokenManager = Token.TokenManager;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class TelemetryManager\n * @desc Provides a manager that can be used to access post telemetry events.\n *\n */\nexport default class TelemetryManager {\n\n /**\n *\n * @access private\n * @param {SDK.Services.Configuration.TelemetryManagerConfiguration} telemetryManagerConfiguration\n * @param {SDK.Token.TokenManager} tokenManager\n * @param {SDK.Services.Internal.Telemetry.TelemetryClient} telemetryClient\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(telemetryManagerConfiguration, tokenManager, telemetryClient, logger = Logging) {\n\n\n const errorMessage = {\n ctor: 'TelemetryManager(telemetryManagerConfiguration, tokenManager, telemetryClient, logger)',\n get telemetryManagerConfiguration() {\n return `${this.ctor} needs TelemetryManagerConfiguration instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n },\n get telemetryClient() {\n return `${this.ctor} needs telemetryClient instance`;\n }\n };\n\n instanceStrict(telemetryManagerConfiguration, TelemetryManagerConfiguration, errorMessage.telemetryManagerConfiguration, InvalidArgumentException); // eslint-disable-line\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n instanceStrict(telemetryClient, TelemetryClient, errorMessage.telemetryClient, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Internal.Telemetry.EventBuffer}\n * @desc used for `StreamSampleEvents`\n *\n */\n this.streamSampleBuffer = new EventBuffer({\n bufferConfiguration: telemetryManagerConfiguration.extras.streamSampleBufferConfiguration,\n tokenManager,\n endpoint: telemetryClient.config.endpoints.postEvent,\n telemetryClient,\n logger,\n fastTrack: telemetryManagerConfiguration.extras.fastTrack\n });\n\n /**\n *\n * @access private\n * @type {SDK.Internal.Telemetry.EventBuffer}\n * @desc used for `Dust` events\n *\n */\n this.eventBuffer = new EventBuffer({\n bufferConfiguration: telemetryManagerConfiguration.extras.bufferConfigurationDefault,\n tokenManager,\n endpoint: telemetryClient.config.endpoints.dustEvent,\n telemetryClient,\n logger,\n fastTrack: telemetryManagerConfiguration.extras.fastTrack\n });\n\n /**\n *\n * @access private\n * @type {SDK.Internal.Telemetry.EventBuffer}\n * @desc used for `UserActivity` related events\n *\n */\n this.trackingBuffer = new EventBuffer({\n bufferConfiguration: telemetryManagerConfiguration.extras.glimpseBufferConfiguration,\n tokenManager,\n endpoint: telemetryClient.config.endpoints.dustEvent,\n telemetryClient,\n logger,\n fastTrack: telemetryManagerConfiguration.extras.fastTrack\n });\n\n /**\n *\n * @access private\n * @type {SDK.Internal.Telemetry.EventBuffer}\n * @desc used for `QoS` events\n *\n */\n this.qosBuffer = new EventBuffer({\n bufferConfiguration: telemetryManagerConfiguration.extras.qosBufferConfiguration,\n tokenManager,\n endpoint: telemetryClient.config.endpoints.dustEvent,\n telemetryClient,\n logger,\n fastTrack: telemetryManagerConfiguration.extras.fastTrack\n });\n\n this.logger.log(TelemetryManager.name, 'Created.');\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/internal/telemetry/telemetryManager.js","/**\n *\n * @module eventBuffer\n *\n */\n\nimport Check from 'check-types';\n\nimport Logging from './../../logging/entry';\nimport Services from './../../services/entry';\nimport Token from './../../token/entry';\n\nimport TelemetryEvent from './telemetryEvent';\n\nconst TelemetryClient = Services.Internal.Telemetry.TelemetryClient;\nconst TelemetryClientEndpoint = Services.Internal.Telemetry.TelemetryClientEndpoint;\n\nconst TokenManager = Token.TokenManager;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n nonEmptyObject,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @since 3.1.0\n * @class EventBuffer\n * @desc Provides a base class used for publishing and queueing Telemetry Events via a service client\n *\n */\nexport default class EventBuffer {\n\n /**\n *\n * @param {Object} options\n * @param {Object} options.bufferConfiguration\n * @param {SDK.Token.TokenManager} options.tokenManager\n * @param {SDK.Services.Internal.TelemetryClient} options.telemetryClient\n * @param {SDK.Logging.Logger} options.logger\n * @param {Object} options.endpoint\n * @param {Object} [options.fastTrack=null]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'EventBuffer(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get bufferConfiguration() {\n return `${this.ctor} options.bufferConfiguration should be a non-empty Object`;\n },\n get tokenManager() {\n return `${this.ctor} options.tokenManager should be an instance of SDK.Token.TokenManager`;\n },\n get telemetryClient() {\n return `${this.ctor} options.telemetryClient should be an instance of SDK.Services.Internal.Telemetry.TelemetryClient`; // eslint-disable-line max-len\n },\n get logger() {\n return `${this.ctor} options.logger should be an instance of SDK.Logging.Logger`;\n },\n get endpoint() {\n return `${this.ctor} options.endpoint should be a non-empty Object`;\n },\n get fastTrack() {\n return `${this.ctor} options.fastTrack should be a non-empty Object`;\n },\n get urns() {\n return `${this.ctor} options.fastTrack.urns should be an Array`;\n }\n };\n\n const { bufferConfiguration, tokenManager, telemetryClient, logger, endpoint, fastTrack = null } = options;\n\n nonEmptyObject(bufferConfiguration, errorMessage.bufferConfiguration, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n instanceStrict(telemetryClient, TelemetryClient, errorMessage.telemetryClient, InvalidArgumentException);\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n nonEmptyObject(endpoint, errorMessage.endpoint, InvalidArgumentException);\n\n if (Check.assigned(fastTrack)) {\n\n nonEmptyObject(fastTrack, errorMessage.fastTrack, InvalidArgumentException);\n array.of.nonEmptyString(fastTrack.urns, errorMessage.urns, InvalidArgumentException);\n\n }\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc this config will be one of `streamSampleBufferConfiguration`, `glimpseBufferConfiguration` or\n * `bufferConfigurationDefault` all of which are defined in the SDK Client Config\n * @note if a `bufferConfiguration` isn't provided this will default to `bufferConfigurationDefault` in\n * `SDK.Internal.Telemetry.TelemetryManagerExtrasMap`\n * @note the spec states that this property should be an instance of `SDK.Configuration.ConfigurationProvider`\n *\n */\n this.config = bufferConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Internal.Telemetry.TelemetryClient}\n *\n */\n this.client = telemetryClient;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.endpoint = endpoint;\n\n /**\n *\n * @access private\n * @since 3.10.0\n * @type {Object}\n * @desc contains information related to fast tracking events\n *\n */\n this.fastTrack = fastTrack;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc maps an endpoint from `SDK.Services.Internal.Telemetry.TelemetryClientEndpoint` to a method in\n * `SDK.Services.Internal.Telemetry.TelemetryClient`\n * @note `streamSamples` are sent to `postEvents` all others are sent to `postDustEvents`\n *\n */\n this.postMethod = this.endpoint.rel === TelemetryClientEndpoint.postEvent ? 'postEvents' : 'postDustEvents';\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.isScheduled = false;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.batchLimit = this.config.batchLimit;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.replyAfterFallback = this.config.replyAfterFallback;\n\n /**\n *\n * @access private\n * @type {Number}\n * @note defaults to `replyAfterFallback` until a `TelemetryResponse` is received and this value is updated\n *\n */\n this.replyAfter = this.replyAfterFallback;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.minimumBatchSize = this.config.minimumBatchSize;\n\n /**\n *\n * @access private\n * @type {Array}\n * @desc The manager will persist telemetry events in a queue prior to\n * forwarding to the client. This queue should survive an app restart.\n * this queue should be specific to this instances type - stream events or dust events\n * @todo set in Storage\n * @todo drain queue when authorization fails\n *\n */\n this.queue = [];\n\n /**\n * @access private\n * @type {Boolean}\n * @desc if this is true then telemetry events will not be published\n */\n this.disabled = this.config.disabled;\n\n this.logger.log(EventBuffer.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Internal.Telemetry.TelemetryEvent} telemetryEvent\n * @desc Post an event to the telemetry queue for upload to the ce-telemetry-service\n * @note `fastTrack` events need to be sent immediately\n * @throws {InvalidArgumentException}\n * @returns {Promise}\n *\n */\n postEvent(telemetryEvent) {\n\n const errorMessage = {\n method: 'EventBuffer.postEvent(telemetryEvent)',\n get telemetryEvent() {\n return `${this.method} needs TelemetryEvent instance`;\n }\n };\n\n const { disabled, logger } = this;\n\n if (disabled) {\n\n logger.warn(EventBuffer.name, 'Buffering is disabled, events will not be posted.');\n\n return Promise.resolve();\n\n }\n\n Check.assert(Check.like(telemetryEvent, TelemetryEvent, errorMessage.telemetryEvent, InvalidArgumentException));\n\n return telemetryEvent.getPayload().then((telemetryPayload) => {\n\n const { queue } = this;\n\n const isFastTrackEvent = this.fastTrack.urns.includes(telemetryPayload.client.event);\n\n if (isFastTrackEvent) {\n\n queue.unshift(telemetryPayload);\n logger.info(EventBuffer.name, `Event added to beginning of queue: ${telemetryPayload.client.event}`);\n this.processBatch(isFastTrackEvent);\n\n } else {\n\n queue.push(telemetryPayload);\n logger.info(EventBuffer.name, `Event added to end of queue: ${telemetryPayload.client.event}`);\n this.scheduleNextBatch(this.replyAfter || this.replyAfterFallback);\n\n }\n\n return Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.tokenManager.getAccessToken();\n\n }\n\n /**\n *\n * @access private\n * @param {Boolean} isFastTrackEvent\n * @returns {Promise}\n * @note client returns {TelemetryResponse} with replyAfter and requestId\n * @note the config has a `replyAfterFallback` prop in case `replyAfter` returns null\n * @note `isFastTrack` event bypasses the timer and sends the queue contents immediately\n * @note only send events when `queue.length >= minimumBatchSize`\n *\n */\n processBatch(isFastTrackEvent) {\n\n const { logger } = this;\n\n if (!isFastTrackEvent && (this.queue.length < this.minimumBatchSize)) {\n\n this.clearSchedule();\n\n return Promise.resolve();\n\n }\n\n const telemetryPayloads = this.queue.splice(0, this.batchLimit);\n\n logger.info(EventBuffer.name, `Attempting to post ${telemetryPayloads.length} events`);\n\n // this.postMethod will either be postEvents or postDustEvents\n return this.client[this.postMethod](this.accessToken, telemetryPayloads).then((telemetryResponse) => {\n\n this.replyAfter = telemetryResponse.replyAfter || this.replyAfterFallback;\n\n this.clearSchedule();\n this.scheduleNextBatch(this.replyAfter);\n\n }).catch(() => {\n\n // Add payloads back to the front of the queue on error.\n this.queue = telemetryPayloads.concat(this.queue);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {Number} replyAfter\n * @desc The client may return a replyAfter value in its response. If so,\n * the manager should note the time and not send any additional\n * events until after the specified wait period. If the client fails, the manager\n * should retry at a later time using the replyAfter value if available, or a configured value\n * if the replyAfter value is not available.\n * @note If the application restarts, the telemetry manager should send any queued events.\n * @returns {Void}\n *\n */\n scheduleNextBatch(replyAfter) {\n\n // check for a current replyAfter timer, if already set then bail\n if (this.isScheduled) {\n return;\n }\n\n this.isScheduled = true;\n\n setTimeout(this.processBatch.bind(this), replyAfter * 1000);\n\n }\n\n /**\n *\n * @access private\n * @desc Clears the last scheduled batch\n *\n */\n clearSchedule() {\n\n this.isScheduled = false;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/internal/telemetry/eventBuffer.js","/**\n *\n * @module telemetryEvent\n *\n */\n\n/**\n *\n * @interface TelemetryEvent\n *\n */\nexport default class TelemetryEvent {\n\n /**\n *\n * @access private\n * @returns {SDK.Services.Internal.Telemetry.TelemetryPayload} JSONSerializable payload\n *\n */\n getPayload() {\n\n return new Promise((resolve) => {\n return resolve(new Error('TelemetryEvent#getPayload - not-implemented'));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/internal/telemetry/telemetryEvent.js","/**\n *\n * @module dustEvent\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\n\nconst Dust = Services.Internal.Dust;\nconst DustPayload = Dust.DustPayload;\nconst DustClientPayload = Dust.DustClientPayload;\nconst DustServerPayload = Dust.DustServerPayload;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class DustEvent\n * @implements {TelemetryEvent}\n *\n */\nexport default class DustEvent {\n\n /**\n *\n * @param {SDK.Services.Internal.Dust.DustClientPayload} client\n * @param {SDK.Services.Internal.Dust.DustServerPayload} [server={}]\n *\n */\n constructor(client, server = {}) {\n\n const errorMessage = {\n ctor: 'DustEvent(client, server)',\n get client() {\n return `${this.ctor} needs SDK.Services.Internal.Dust.DustClientPayload instance`;\n },\n get server() {\n return `${this.ctor} needs SDK.Services.Internal.Dust.DustServerPayload instance`;\n }\n };\n\n instanceStrict(client, DustClientPayload, errorMessage.client, InvalidArgumentException);\n\n if (Check.nonEmptyObject(server)) {\n instanceStrict(server, DustServerPayload, errorMessage.server, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {SDK.Services.Internal.Dust.DustClientPayload}\n * @desc Dictionary containing client provided tracking information.\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/dust.md#client-data\n *\n */\n this.client = client;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Internal.Dust.DustServerPayload|Object}\n * @desc Optional Dictionary containing server provided tracking information.\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/dust.md#server-data\n *\n */\n this.server = server;\n\n }\n\n /**\n *\n * @access private\n * @desc assembles a dust payload object\n * @returns {Promise(} jsonSerializable object\n * @note should take a an empty `Object` for `server` by default\n *\n */\n getPayload() {\n\n const { client, server } = this;\n\n return Promise.resolve(new DustPayload(client, server));\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/internal/dust/dustEvent.js","/**\n *\n * @module entry\n * @desc {SDK.Media} entry point.\n *\n */\n\nimport AdEngine from './adEngine/entry';\nimport MediaApi from './mediaApi';\nimport MediaManager from './mediaManager';\nimport PlayerAdapter from './playerAdapter';\nimport MediaCapabilitiesProvider from './mediaCapabilitiesProvider';\nimport MediaDescriptor from './mediaDescriptor';\nimport HdrType from './hdrType';\nimport PlaybackSession from './playbackSession';\nimport AdInsertionStrategy from './adInsertionStrategy';\nimport ThumbnailResolution from './thumbnailResolution';\nimport GeneratePlaybackScenario from './generatePlaybackScenario';\n\nimport AuthCookieProvider from './authCookieProvider';\nimport MediaAnalyticsKey from './mediaAnalyticsKey';\nimport MediaItem from './mediaItem';\nimport Playlist from './playlist';\nimport PlaybackContext from './playbackContext';\nimport PlaylistType from './playlistType';\n\nimport PlaybackTelemetryDispatcher from './playbackTelemetryDispatcher';\nimport PlaybackEventListener from './playbackEventListener';\nimport PlaybackMetricsProvider from './playbackMetricsProvider';\nimport PlaybackMetrics from './playbackMetrics';\nimport PlaybackTelemetryConfiguration from './playbackTelemetryConfiguration';\nimport AudioQuality from './audioQuality';\nimport SupportedCodec from './supportedCodec';\nimport WidevineSecurityLevel from './widevineSecurityLevel';\nimport MediaPreferences from './mediaPreferences';\n\nimport BamWebPlayerAdapter from './playerAdapter/bamWebPlayerAdapter';\nimport TrilithiumPlayerAdapter from './playerAdapter/trilithiumPlayerAdapter';\nimport Html5PlayerAdapter from './playerAdapter/html5PlayerAdapter';\nimport HlsJsPlayerAdapter from './playerAdapter/hlsJsPlayerAdapter';\nimport CafPlayerAdapter from './playerAdapter/cafPlayerAdapter';\nimport ChromecastPlayerAdapter from './playerAdapter/chromecastPlayerAdapter';\nimport SamsungOrsayPlayerAdapter from './playerAdapter/samsungOrsayPlayerAdapter';\nimport SamsungTizenPlayerAdapter from './playerAdapter/samsungTizenPlayerAdapter';\nimport AtvPlayerAdapter from './playerAdapter/atvPlayerAdapter';\nimport BamHlsPlayerAdapter from './playerAdapter/bamHlsPlayerAdapter';\nimport DssWebPlayerAdapter from './playerAdapter/dssWebPlayerAdapter';\n\n/**\n *\n * @typedef SDK.Media\n * @type {Object}\n *\n * @property {AdEngine} AdEngine\n * @property {MediaApi} MediaApi\n * @property {MediaManager} MediaManager\n * @property {PlayerAdapter} PlayerAdapter\n * @property {MediaCapabilitiesProvider} MediaCapabilitiesProvider\n * @property {MediaDescriptor} MediaDescriptor\n * @property {HdrType} HdrType\n * @property {PlaybackSession} PlaybackSession\n * @property {AdInsertionStrategy} AdInsertionStrategy\n * @property {ThumbnailResolution} ThumbnailResolution\n * @property {GeneratePlaybackScenario} GeneratePlaybackScenario\n *\n * @property {AuthCookieProvider} AuthCookieProvider\n * @property {MediaAnalyticsKey} MediaAnalyticsKey\n * @property {MediaItem} MediaItem\n * @property {Playlist} Playlist\n * @property {PlaybackContext} PlaybackContext\n * @property {PlaylistType} PlaylistType\n *\n * @property {PlaybackTelemetryDispatcher} PlaybackTelemetryDispatcher\n * @property {PlaybackEventListener} PlaybackEventListener\n * @property {PlaybackMetricsProvider} PlaybackMetricsProvider\n * @property {PlaybackMetrics} PlaybackMetrics\n * @property {PlaybackTelemetryConfiguration} PlaybackTelemetryConfiguration\n * @property {AudioQuality} AudioQuality\n * @property {SupportedCodec} SupportedCodec\n * @property {WidevineSecurityLevel} WidevineSecurityLevel\n * @property {MediaPreferences} MediaPreferences\n *\n */\n\n/**\n *\n * @typedef SDK.Media.PlayerAdapter\n * @type {PlayerAdapter}\n *\n * @property {AtvPlayerAdapter} AtvPlayerAdapter\n * @property {BamWebPlayerAdapter} BamWebPlayerAdapter\n * @property {TrilithiumPlayerAdapter} TrilithiumPlayerAdapter\n * @property {Html5PlayerAdapter} Html5PlayerAdapter\n * @property {HlsJsPlayerAdapter} HlsJsPlayerAdapter\n * @property {CafPlayerAdapter} CafPlayerAdapter\n * @property {ChromecastPlayerAdapter} ChromecastPlayerAdapter\n * @property {SamsungOrsayPlayerAdapter} SamsungOrsayPlayerAdapter\n * @property {SamsungTizenPlayerAdapter} SamsungTizenPlayerAdapter\n * @property {BamHlsPlayerAdapter} BamHlsPlayerAdapter\n * @property {DssWebPlayerAdapter} DssWebPlayerAdapter\n *\n */\n\n/**\n *\n * @type {SDK.Media}\n *\n */\nexport default {\n\n AdEngine,\n MediaApi,\n MediaManager,\n /**\n *\n * @type {SDK.Media.PlayerAdapter}\n *\n */\n PlayerAdapter: Object.assign(PlayerAdapter, {\n AtvPlayerAdapter,\n BamWebPlayerAdapter,\n TrilithiumPlayerAdapter,\n Html5PlayerAdapter,\n HlsJsPlayerAdapter,\n CafPlayerAdapter,\n ChromecastPlayerAdapter,\n SamsungOrsayPlayerAdapter,\n SamsungTizenPlayerAdapter,\n BamHlsPlayerAdapter,\n DssWebPlayerAdapter\n }),\n MediaCapabilitiesProvider,\n MediaDescriptor,\n HdrType,\n PlaybackSession,\n AdInsertionStrategy,\n ThumbnailResolution,\n GeneratePlaybackScenario,\n\n AuthCookieProvider,\n MediaAnalyticsKey,\n MediaItem,\n Playlist,\n PlaybackContext,\n PlaylistType,\n\n PlaybackTelemetryDispatcher,\n PlaybackEventListener,\n PlaybackMetricsProvider,\n PlaybackMetrics,\n PlaybackTelemetryConfiguration,\n AudioQuality,\n SupportedCodec,\n WidevineSecurityLevel,\n MediaPreferences\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/entry.js","/**\n *\n * @module advertisingIdProvider\n *\n */\n\n/**\n *\n * @class AdvertisingIdProvider\n * @since 3.6.0\n *\n */\nexport default class AdvertisingIdProvider {\n\n constructor() {\n\n /**\n *\n * @access private\n * @type {String}\n * @desc hardcoded to this value since JS SDK platforms do not support advertisingId's\n * @see https://wiki.bamtechmedia.com/pages/viewpage.action?pageId=61506803\n *\n */\n this.devId = '00000000-0000-0000-0000-00000000000';\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc will indcate if a user has enabled or disabled tracking on their device\n * @note will always be false (meaning they have not disabled tracking) for JS platforms\n * @note we use _limitTracking because we want to match the spec and keep this private property while providing\n * the limitTracking method on the instance\n *\n */\n this._limitTracking = false;\n\n }\n\n /** #region private */\n\n /**\n *\n * @access private\n * @returns {String}\n * @desc will return a device's advertisingId if tracking is enabled\n * @note currently no JS platforms support limitTracking so we return the default devId\n * @note some platforms may override this method to interact with a system API\n *\n */\n getId() {\n\n const { devId } = this;\n\n return this.limitTracking() ? devId : devId;\n\n }\n\n /**\n *\n * @access private\n * @returns {Boolean}\n * @note meant to interact with a system API to determine if a user has disabled tracking - currently not supported\n * on any JS platforms\n * @note some platforms may override this method to interact with a system API\n *\n */\n limitTracking() {\n\n return this._limitTracking;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/adEngine/advertisingIdProvider.js","/**\n *\n * @module mediaPreferences\n *\n */\n\nimport Check from 'check-types';\n\nimport AudioQuality from './audioQuality';\n\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n includes\n} = Check.assert;\n\n/**\n *\n * @class SDK.Media.MediaPreferences\n * @since 4.2.0\n * @desc Object of media related preference enums provided by the app developer, used in scenario string manipulation\n *\n */\nexport default class MediaPreferences {\n\n /**\n *\n * @param {SDK.Media.AudioQuality} [preferredAudioQuality] Optional: enum to indicate audio quality in\n * playback scenario\n * @note Not including MediaQuality because it is not applicable for JavaScript platform\n *\n */\n constructor(preferredAudioQuality) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(preferredAudioQuality)`,\n get preferredAudioQuality() {\n return `${this.ctor} preferredAudioQuality should be a member of SDK.Media.AudioQuality`;\n }\n };\n\n if (Check.assigned(preferredAudioQuality)) {\n includes(AudioQuality, preferredAudioQuality, errorMessage.preferredAudioQuality, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @type {SDK.Media.AudioQuality|undefined}\n * @desc enum to indicate audio quality in playback scenario\n *\n */\n this.preferredAudioQuality = preferredAudioQuality;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/mediaPreferences.js","/**\n *\n * @module mediaCapabilitiesProvider\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\nimport Logging from './../logging/entry';\nimport WidevineSecurityLevel from './widevineSecurityLevel';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class MediaCapabilitiesProvider\n * @since 3.8.0\n * @desc Defines the contract for a class that can provide the current media capabilities of the device.\n * The SDK ships with a default implementation of the MediaCapabilitiesProvider that returns\n * falsy values. This guarantees that a valid Playback Scenario (PBS) will always be used, but the\n * default implementation will return a lower quality stream. For UHD support, app developers must\n * implement their own MediaCapabilitiesProvider including all methods in their implementation.\n *\n */\nexport default class MediaCapabilitiesProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n const errorMessage = {\n ctor: 'MediaCapabilitiesProvider(logger)',\n get logger() {\n return `${this.ctor} needs SDK.Logger instance`;\n }\n };\n\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.log(MediaCapabilitiesProvider.name, 'Created provider');\n\n }\n\n /**\n *\n * @access public\n * @method getSupportedHdrTypes\n * @desc An interface method. Retrieves the supported HDR types of the device. An\n * empty array signifies HDR is not compatible.\n * @returns {Array}\n * @note The SDK ships with a default implementation that returns a falsy value.\n *\n */\n getSupportedHdrTypes() {\n\n return [];\n\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @returns {SDK.Media.WidevineSecurityLevel|null}\n * @note The SDK ships with a default implementation that returns a falsy value.\n *\n */\n getWidevineSecurityLevel() {\n\n return null;\n\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @returns {Array}\n * @note The SDK ships with a default implementation that returns a falsy value.\n *\n */\n getSupportedCodecs() {\n\n return [];\n\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @returns {Boolean}\n * @note The SDK ships with a default implementation that returns a falsy value.\n *\n */\n supportsAtmos() {\n\n return false;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/mediaCapabilitiesProvider.js","/**\n *\n * @module playbackSession\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/MediaApi.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/MediaApi.md#playback-scenarios-and-ad-insertion-strategy\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/playback-session.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/playhead.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Drm from './../drm/entry';\nimport Token from './../token/entry';\nimport AdEngineManager from './adEngine/adEngineManager';\nimport MediaItem from './mediaItem';\nimport MediaManager from './mediaManager';\nimport PlaylistType from './playlistType';\nimport PlaybackTelemetryDispatcher from './playbackTelemetryDispatcher';\nimport AuthCookieProvider from './authCookieProvider';\nimport PlayerAdapter from './playerAdapter';\nimport AtvPlayerAdapter from './playerAdapter/atvPlayerAdapter';\nimport BamWebPlayerAdapter from './playerAdapter/bamWebPlayerAdapter';\nimport TrilithiumPlayerAdapter from './playerAdapter/trilithiumPlayerAdapter';\nimport ChromecastPlayerAdapter from './playerAdapter/chromecastPlayerAdapter';\nimport CafPlayerAdapter from './playerAdapter/cafPlayerAdapter';\nimport BamHlsPlayerAdapter from './playerAdapter/bamHlsPlayerAdapter';\n\nconst TokenManager = Token.TokenManager;\nconst DrmManager = Drm.DrmManager;\n\nconst WidevineDrmProvider = Drm.WidevineDrmProvider;\nconst AtvFairPlayDrmProvider = Drm.AtvFairPlayDrmProvider;\nconst FairPlayDrmProvider = Drm.FairPlayDrmProvider;\nconst PlayReadyDrmProvider = Drm.PlayReadyDrmProvider;\nconst SilkDrmProvider = Drm.SilkDrmProvider;\n\nconst Util = Services.Util;\nconst DrmType = Services.Media.DrmType;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst PlaybackSessionDustUrnReference = Services.Internal.Dust.DustUrnReference.media.playbackSession;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n includes,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class SDK.Media.PlaybackSession\n * @since 2.0.0\n * @desc Encapsulates the playlist request and player adapter preparation.\n *\n */\nexport default class PlaybackSession {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Token.TokenManager} options.tokenManager\n * @param {SDK.Drm.DrmManager} options.drmManager\n * @param {MediaManager} options.mediaManager\n * @param {PlaybackTelemetryDispatcher} options.telemetryDispatcher\n * @param {SDK.Logging.Logger} options.logger\n * @param {PlayerAdapter} options.playerAdapter\n * @param {AuthCookieProvider} options.authCookieProvider\n * @param {SDK.Media.AdEngine.AdEngineManager} options.adEngineManager\n * @param {Array} [options.priorityDrms=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'PlaybackSession(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n },\n get drmManager() {\n return `${this.ctor} needs SDK.Drm.DrmManager instance`;\n },\n get mediaManager() {\n return `${this.ctor} needs SDK.Media.MediaManager instance`;\n },\n get telemetryDispatcher() {\n return `${this.ctor} needs PlaybackTelemetryDispatcher instance`;\n },\n get logger() {\n return `${this.ctor} needs SDK.Logger instance`;\n },\n get playerAdapter() {\n return `${this.ctor} needs PlayerAdapter instance`;\n },\n get authCookieProvider() {\n return `${this.ctor} needs AuthCookieProvider instance`;\n },\n get adEngineManager() {\n return `${this.ctor} needs SDK.Media.AdEngine.AdEngineManager`;\n },\n get priorityDrms() {\n return `${this.ctor} needs an array of SDK.Services.Media.DrmType`;\n }\n };\n\n const { tokenManager, drmManager, mediaManager, telemetryDispatcher, logger = Logging } = options;\n const { playerAdapter, authCookieProvider, adEngineManager, priorityDrms = null } = options;\n\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n instanceStrict(drmManager, DrmManager, errorMessage.drmManager, InvalidArgumentException);\n instanceStrict(mediaManager, MediaManager, errorMessage.mediaManager, InvalidArgumentException);\n instanceStrict(telemetryDispatcher, PlaybackTelemetryDispatcher, errorMessage.telemetryDispatcher, InvalidArgumentException); // eslint-disable-line\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n instanceStrict(playerAdapter, PlayerAdapter, errorMessage.playerAdapter, InvalidArgumentException);\n instanceStrict(authCookieProvider, AuthCookieProvider, errorMessage.authCookieProvider, InvalidArgumentException); // eslint-disable-line\n instanceStrict(adEngineManager, AdEngineManager, errorMessage.adEngineManager, InvalidArgumentException);\n\n if (Check.assigned(priorityDrms)) {\n array.of.nonEmptyString(priorityDrms, errorMessage.priorityDrms, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @type {SDK.Drm.DrmManager}\n *\n */\n this.drmManager = drmManager;\n\n /**\n *\n * @access private\n * @type {MediaManager}\n *\n */\n this.mediaManager = mediaManager;\n\n /**\n *\n * @access private\n * @type {PlaybackTelemetryDispatcher}\n *\n */\n this.telemetryDispatcher = telemetryDispatcher;\n\n /**\n *\n * @access private\n * @type {PlayerAdapter}\n *\n */\n this.playerAdapter = playerAdapter;\n\n /**\n *\n * @access private\n * @type {AuthCookieProvider}\n *\n */\n this.authCookieProvider = authCookieProvider;\n\n /**\n *\n * @access private\n * @type {SDK.Media.AdEngine.AdEngineManager}\n *\n */\n this.adEngineManager = adEngineManager;\n\n /**\n *\n * @access private\n * @type {Array}\n *\n */\n this.priorityDrms = priorityDrms;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => this.mediaManager.client.dustEnabled);\n\n /**\n *\n * @desc listen to {TokenManager} events\n *\n */\n this.bindTokenProviderEvents();\n\n this.logger.log(PlaybackSession.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {MediaItem} mediaItem\n * @param {PlaylistType} [playlistType=PlaylistType.COMPLETE] - Specifies playlist to\n * prepare (COMPLETE or SLIDE).\n * @desc Uses provided payload to prepare the player. Assigns to local payload variable.\n * @returns {Promise} - containing information about the media that was prepared.\n * @note MediaItem#getPreferredPlaylist(playlistType). If not provided, uses MediaItem#getDefaultPlaylist().\n *\n */\n prepare(mediaItem, playlistType = PlaylistType.COMPLETE) {\n\n const errorMessage = {\n method: 'PlaybackSession.prepare(mediaItem, playlistType)',\n get mediaItem() {\n return `${this.method} needs MediaItem instance`;\n },\n get playlistType() {\n return `${this.method} needs a valid PlaylistType`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: PlaybackSession.name,\n urn: PlaybackSessionDustUrnReference.prepare,\n data: {\n streamUrl: mediaItem.completeStreamUri,\n playbackScenario: mediaItem.basePlaybackScenario\n }\n });\n\n instanceStrict(mediaItem, MediaItem, errorMessage.mediaItem, InvalidArgumentException);\n includes(PlaylistType, playlistType, errorMessage.playlistType, InvalidArgumentException);\n\n const { telemetryDispatcher, playerAdapter } = this;\n const { authCookieProvider, tokenManager } = this;\n const { playhead = {}, playbackContext } = mediaItem;\n const { position, status } = playhead || {};\n\n const accessToken = tokenManager.getAccessToken();\n\n logger.info(PlaybackSession.name, 'Execute #prepare');\n logger.info(PlaybackSession.name, `Playlist type: ${playlistType}`);\n\n if (Check.assigned(position)) {\n logger.info(PlaybackSession.name, `Playhead position: \"${position}\"`);\n }\n\n if (Check.assigned(status)) {\n logger.info(PlaybackSession.name, `Playhead status: \"${status}\"`);\n }\n\n let playlist;\n let playbackAttributes;\n\n return this.updatePlayerAdapter().then(() => {\n\n telemetryDispatcher.init(playerAdapter, mediaItem);\n\n return mediaItem.getPreferredPlaylist(playlistType);\n\n }).then((preferredPlaylist) => {\n\n playlist = preferredPlaylist;\n playbackAttributes = preferredPlaylist.attributes;\n\n if (Check.assigned(playbackAttributes)) {\n return this.setDrm(playbackAttributes, playbackContext);\n }\n\n return Promise.resolve();\n\n }).then(() => {\n\n return this.updateAdEngineCookies(mediaItem);\n\n }).then(() => {\n\n return authCookieProvider.createCookie(accessToken);\n\n }).then(() => {\n\n logger.info(PlaybackSession.name, `Setting source on PlayerAdapter, ${playlist.streamUri}`);\n\n return playerAdapter.setSource(playlist);\n\n }).then(() => {\n\n logger.info(PlaybackSession.name, 'Successfully set source on PlayerAdapter');\n\n return Promise.resolve(playlist);\n\n }).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @desc Initiates an extra, immediate stream sample collection,\n * based on the player's current playhead.\n * @returns {Promise}\n *\n */\n collectStreamSample() {\n\n const { telemetryDispatcher, playerAdapter } = this;\n\n return telemetryDispatcher.recordStreamSample(playerAdapter);\n\n }\n\n /**\n *\n * @access public\n * @desc Stops authorization refresh listener, stops playback listener, and clears the payload value\n * @returns {Promise}\n *\n */\n release() {\n\n const { dustEnabled, logger, playerAdapter, telemetryDispatcher } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: PlaybackSession.name,\n urn: PlaybackSessionDustUrnReference.release\n });\n\n logger.info(PlaybackSession.name, 'Release.');\n\n return telemetryDispatcher.release(playerAdapter).then(() => {\n\n return playerAdapter.clean();\n\n }).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {SDK.Media.MediaItem} mediaItem\n * @desc if adEngine is enabled and adEngine data exists try to update adEngine cookies\n * @returns {Promise}\n *\n */\n updateAdEngineCookies(mediaItem) {\n\n const errorMessage = {\n method: 'PlaybackSession.updateAdEngineCookies(mediaItem)',\n mediaItem: () => {\n return `${this.method} needs SDK.Media.MediaItem instance`;\n }\n };\n\n instanceStrict(mediaItem, MediaItem, errorMessage.mediaItem, InvalidArgumentException);\n\n const { adEngineManager, playerAdapter } = this;\n const { payload = {}, descriptor = {} } = mediaItem;\n const { adTargeting } = descriptor;\n const { tracking = {} } = payload;\n const { adEngine } = tracking;\n\n if (!adEngineManager.disabled && Check.nonEmptyObject(adEngine)) {\n\n const { cdn, corigin, fguid: ssess } = adEngine;\n\n /**\n *\n * @note ssess is mapped from fguid - identifies the unique user\n *\n */\n const adEngineOptions = Object.assign({}, {\n cdn,\n corigin,\n ssess\n }, adTargeting);\n\n // stores adEngine data to be used with adEngine .ts segment requests by the nativePlayer - might be ignored\n playerAdapter.setAdEngineData({ ssess, ...adEngine });\n\n // getCookies also exists but since we don't need to return the Cookie[] to the caller it is not used\n return adEngineManager.updateCookies(adEngineOptions);\n\n } else {\n\n // reset to an empty object if adEngine data is disabled or not returned with the playlist response\n playerAdapter.setAdEngineData({});\n\n }\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @param {Array} drms\n * @param {SDK.Media.PlaybackContext} [playbackContext] - Context information about the playback attempt.\n * @desc Creates SDK.Drm.DrmProvider instances based on the provided data set\n * @returns {Array}\n *\n */\n createDrmProviders(drms, playbackContext) {\n\n const { logger, drmManager, tokenManager, playerAdapter } = this;\n const hasAtvPlayerAdapter = Check.instanceStrict(playerAdapter, AtvPlayerAdapter);\n const providers = [];\n\n const providerReference = {\n [DrmType.FAIRPLAY]: hasAtvPlayerAdapter ? AtvFairPlayDrmProvider : FairPlayDrmProvider,\n [DrmType.PLAYREADY]: PlayReadyDrmProvider,\n [DrmType.WIDEVINE]: WidevineDrmProvider,\n [DrmType.SILK]: SilkDrmProvider\n };\n\n if (Check.nonEmptyArray(drms)) {\n\n for (const drm of drms) {\n\n const Provider = providerReference[drm];\n\n if (Check.assigned(Provider)) {\n\n const provider = new Provider(drmManager, tokenManager, logger);\n\n if (Check.assigned(playbackContext)) {\n provider.playbackContext = playbackContext;\n }\n\n logger.info(PlaybackSession.name, `Created ${Provider.name} instance`);\n\n providers.push(provider);\n\n }\n\n }\n\n }\n\n return providers;\n\n }\n\n /**\n *\n * @access private\n * @param {Array} drms\n * @desc Additional filtering for provided drms. This is especially useful for\n * testing, in certain cases the drms returned may not be supported by a given\n * platform, breaking the logic in the PlayerAdapter.\n * @returns {Array}\n *\n */\n filterDrms(drms) {\n\n const { playerAdapter } = this;\n\n const hasAtvPlayerAdapter = Check.instanceStrict(playerAdapter, AtvPlayerAdapter);\n const hasBamWebPlayerAdapter = Check.instanceStrict(playerAdapter, BamWebPlayerAdapter);\n const hasTrilithiumPlayerAdapter = Check.instanceStrict(playerAdapter, TrilithiumPlayerAdapter);\n const hasChromecastPlayerAdapter = Check.instanceStrict(playerAdapter, ChromecastPlayerAdapter);\n const hasCafPlayerAdapter = Check.instanceStrict(playerAdapter, CafPlayerAdapter);\n const hasBamHlsPlayerAdapter = Check.instanceStrict(playerAdapter, BamHlsPlayerAdapter);\n\n const hasNeedForFilter = [\n hasAtvPlayerAdapter,\n hasBamWebPlayerAdapter,\n hasTrilithiumPlayerAdapter,\n hasChromecastPlayerAdapter,\n hasCafPlayerAdapter,\n hasBamHlsPlayerAdapter\n ];\n\n // Skip filter logic completely for PlayerAdapter(s) that dont need it\n if (!hasNeedForFilter.includes(true)) {\n return drms;\n }\n\n // Filter drms, return a new Array with supported drms for a particular PlayerAdapter\n return drms.filter((drm) => {\n\n if (hasAtvPlayerAdapter) {\n return drm !== DrmType.PLAYREADY && drm !== DrmType.WIDEVINE;\n }\n\n if (hasTrilithiumPlayerAdapter) {\n return drm !== DrmType.FAIRPLAY && drm !== DrmType.WIDEVINE;\n }\n\n if (hasChromecastPlayerAdapter || hasCafPlayerAdapter) {\n return drm !== DrmType.FAIRPLAY && drm !== DrmType.PLAYREADY;\n }\n\n if (hasBamWebPlayerAdapter || hasBamHlsPlayerAdapter) {\n return drm !== DrmType.SILK;\n }\n\n return drm;\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {Array} drms\n * @param {SDK.Media.PlaybackContext} [playbackContext] - Context information about the playback attempt.\n * @desc Sets SDK.Drm.DrmProvider instances on a given PlayerAdapter\n * @returns {Promise}\n *\n */\n setDrmProviders(drms, playbackContext) {\n\n const { playerAdapter, priorityDrms, logger } = this;\n\n const hasDrms = Check.nonEmptyArray(drms);\n const hasDrmProvider = Check.assigned(playerAdapter.drmProvider);\n const hasDrmProviders = Check.nonEmptyArray(playerAdapter.drmProviders);\n const hasTrilithiumPlayerAdapter = Check.instanceStrict(playerAdapter, TrilithiumPlayerAdapter);\n\n if (hasDrmProvider || hasDrmProviders) {\n return Promise.resolve();\n }\n\n let providers;\n\n if (Check.not.assigned(priorityDrms)) {\n\n // Provide a default DrmProvider {SilkDrmProvider}\n providers = this.createDrmProviders(this.filterDrms([DrmType.SILK]), playbackContext);\n\n // Process the provided drms data set\n // create a DrmProvider instance for each DrmType\n if (hasDrms) {\n\n const currentDrms = hasTrilithiumPlayerAdapter ? drms.concat([DrmType.SILK]) : drms;\n const filteredDrms = this.filterDrms(currentDrms);\n\n providers = this.createDrmProviders(filteredDrms, playbackContext);\n\n }\n\n } else {\n\n if (hasDrms) {\n\n // Check drms vs priority drm\n for (const priorityDrm of priorityDrms) {\n\n drms.find((drm) => {\n\n if (drm === priorityDrm) {\n return true;\n }\n\n logger.warn(PlaybackSession.name, `${priorityDrm} is not part of the supported DRMs.`);\n\n return false;\n\n });\n\n }\n\n }\n\n providers = this.createDrmProviders(priorityDrms, playbackContext);\n\n }\n\n // API based check, PlayerAdapter(s) that need a group\n // of DrmProvider(s) expose the drmProviders property and #setDrmProviders method\n if (!hasDrmProviders && Check.function(playerAdapter.setDrmProviders)) {\n return playerAdapter.setDrmProviders(providers);\n }\n\n // Standard check, assign a DrmProvider if one isn't\n // already associated with a given PlayerAdapter\n if (!hasDrmProvider) {\n return playerAdapter.setDrmProvider(providers[0]);\n }\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @param {PlaybackAttributes} playbackAttributes\n * @param {SDK.Media.PlaybackContext} [playbackContext] - Context information about the playback attempt.\n * @desc Bootstraps necessary DRM logic\n * @returns {Promise}\n *\n */\n setDrm(playbackAttributes, playbackContext) {\n\n const { logger, playerAdapter } = this;\n const { audioSegmentTypes, videoSegmentTypes, drms } = playbackAttributes;\n\n if (Check.function(playerAdapter.updateSegmentFormat)) {\n\n logger.info(PlaybackSession.name, 'Update segment types.');\n logger.info(PlaybackSession.name, `Audio segment types: ${JSON.stringify(audioSegmentTypes)}`);\n logger.info(PlaybackSession.name, `Video segment types: ${JSON.stringify(videoSegmentTypes)}`);\n\n if (Check.assigned(playbackContext)) {\n logger.info(PlaybackSession.name, 'Playback context set.');\n logger.info(PlaybackSession.name, `Playback context: ${JSON.stringify(playbackContext)}`);\n }\n\n return playerAdapter.updateSegmentFormat(audioSegmentTypes, videoSegmentTypes).then(() => {\n return this.setDrmProviders(drms, playbackContext);\n });\n\n }\n\n return this.setDrmProviders(drms, playbackContext);\n\n }\n\n /**\n *\n * @access private\n * @desc Updates the PlayerAdapter instance and ensures the\n * stored accessToken property is fresh\n * @returns {Promise}\n *\n */\n updatePlayerAdapter() {\n\n const { playerAdapter } = this;\n\n playerAdapter.accessToken = this.accessToken.token;\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @desc listens and reacts to {SDK.Token.TokenManager} events\n *\n */\n bindTokenProviderEvents() {\n\n const { playerAdapter, tokenManager, authCookieProvider } = this;\n\n tokenManager.on('TokenRefreshFailed', (exception) => {\n\n playerAdapter.onAccessFailed(exception);\n\n });\n\n tokenManager.on('AccessChange', (accessToken) => {\n\n const token = Util.getSafe(() => accessToken.token);\n\n playerAdapter.onAccessChanged(token);\n\n return authCookieProvider.createCookie(accessToken);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.tokenManager.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playbackSession.js","/**\n *\n * @module atvPlayerAdapter\n * @desc PlayerAdapter for legacy Apple TV\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://github.bamtech.co/fed-ce/hbo-appletv-app/blob/master/source/js/app/App.SecureKeyDelivery.js#L241\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerEvents.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerProperties.md\n * @see https://github.bamtech.co/fed-ce/mls-appletv-app/blob/master/docs/apple_atv_legacy.pdf\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\nimport Drm from './../../drm/entry';\nimport PlayerAdapter from './../playerAdapter';\nimport PlaybackMetrics from './../playbackMetrics';\nimport PlaybackEventListener from './../playbackEventListener';\nimport Playlist from './../playlist';\n\nconst Util = Services.Util;\nconst DrmProvider = Drm.DrmProvider;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n object,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class AtvPlayerAdapter\n * @extends {PlayerAdapter}\n * @desc Interface used to communicate with the media player.\n *\n */\nexport default class AtvPlayerAdapter extends PlayerAdapter {\n\n /**\n *\n * @param {NativePlayer} nativePlayer\n * @param {atv.secureKeyDelivery} secureKeyDelivery\n * @param {Object|Null} [busReference=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(nativePlayer, secureKeyDelivery, busReference = null) {\n\n const errorMessage = {\n ctor: 'AtvPlayerAdapter(nativePlayer, secureKeyDelivery, busReference)',\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n },\n get secureKeyDelivery() {\n return `${this.ctor} needs atv.secureKeyDelivery instance`;\n },\n get busReference() {\n return `${this.ctor} needs plain BusReference instance`;\n }\n };\n\n Check.assert.function(Util.getSafe(() => nativePlayer.playerStateChanged), errorMessage.nativePlayer, InvalidArgumentException); // eslint-disable-line\n object(secureKeyDelivery, errorMessage.secureKeyDelivery, InvalidArgumentException);\n\n if (Check.assigned(busReference)) {\n\n Check.assert.function(busReference.handler, errorMessage.busReference, InvalidArgumentException); // eslint-disable-line\n Check.assert.function(busReference.releaseHandler, errorMessage.busReference, InvalidArgumentException); // eslint-disable-line\n\n }\n\n super(nativePlayer);\n\n /**\n *\n * @access private\n * @type {Number}\n * @desc The elapsed time, in seconds, of the current playhead position.\n *\n */\n this.currentPlayhead = null;\n\n /**\n *\n * @access private\n * @type {atv.secureKeyDelivery}\n * @since 3.3.3\n *\n */\n this.secureKeyDelivery = secureKeyDelivery;\n\n /**\n *\n * @access private\n * @type {Object|Null}\n * @since 2.2.0\n *\n */\n this.busReference = busReference;\n\n }\n\n /**\n *\n * @access public\n *@param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Callback used when prepare has been called (usually via the {PlaybackSession}).\n * Sets the source URI on the {NativePlayer} instance.\n * @returns {Promise}\n *\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: 'AtvPlayerAdapter.setSource(playlist)',\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n return new Promise((resolve) => {\n\n this.playlistUri = playlist.streamUri;\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @desc Gets a snapshot of information about media playback.\n * @throws {InvalidStateException} Unable to get NativePlayer playhead data\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n * @note metric value is rounded down to prevent possible service issues with floats\n * @note executed by {PlaybackTelemetryDispatcher#recordStreamSample}\n *\n */\n getPlaybackMetrics() {\n\n const errorMessage = {\n method: 'AtvPlayerAdapter.getPlaybackMetrics()',\n get currentPlayhead() {\n return `${this.method} unable to get NativePlayer playhead data`;\n }\n };\n\n const { nativePlayer, unavailableMetric } = this;\n\n if (Check.not.function(nativePlayer.playerTimeDidChange)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentPlayhead)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n const currentBitrate = unavailableMetric;\n const currentPlayhead = Math.floor(this.currentPlayhead) || unavailableMetric;\n\n return Promise.resolve(new PlaybackMetrics({ currentBitrate, currentPlayhead }));\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @throws {InvalidStateException} Unable to add PlaybackEventListener\n * @returns {Promise}\n *\n */\n addListener(listener) {\n\n const errorMessage = {\n method: 'AtvPlayerAdapter.addListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get addListener() {\n return `${this.method} unable to add PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer, boundHandlers, busReference } = this;\n const { onPlay, onPause, onError, onPlayedToCompletion } = this;\n const { onPlayerTimeDidChange } = this;\n\n return new Promise((resolve, reject) => {\n\n if (Check.function(nativePlayer.playerTimeDidChange)) {\n\n this.listener = listener;\n\n boundHandlers.onPlay = onPlay.bind(this);\n boundHandlers.onPause = onPause.bind(this);\n boundHandlers.onError = onError.bind(this);\n boundHandlers.onPlayedToCompletion = onPlayedToCompletion.bind(this);\n boundHandlers.onPlayerTimeDidChange = onPlayerTimeDidChange.bind(this);\n\n boundHandlers.playerStateChanged = (playerState = {}) => {\n\n const { newState } = playerState;\n\n if (newState === nativePlayer.states.Paused) {\n return boundHandlers.onPause.call(this);\n }\n\n return undefined;\n\n };\n\n if (Check.assigned(busReference)) {\n\n busReference.handler(\n 'atv.player.willStartPlaying',\n boundHandlers.onPlay\n );\n\n busReference.handler(\n 'atv.player.playerStateChanged',\n boundHandlers.playerStateChanged\n );\n\n busReference.handler(\n 'atv.player.onPlaybackError',\n boundHandlers.onError\n );\n\n busReference.handler(\n 'atv.player.didStopPlaying',\n boundHandlers.onPlayedToCompletion\n );\n\n busReference.handler(\n 'atv.player.playerTimeDidChange',\n boundHandlers.onPlayerTimeDidChange\n );\n\n return resolve();\n\n }\n\n nativePlayer.willStartPlaying = boundHandlers.onPlay;\n nativePlayer.didStopPlaying = boundHandlers.onPause;\n nativePlayer.onPlaybackError = boundHandlers.onError;\n nativePlayer.didStopPlaying = boundHandlers.onPlayedToCompletion;\n nativePlayer.playerTimeDidChange = boundHandlers.onPlayerTimeDidChange;\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.addListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @returns {Promise}\n *\n */\n removeListener(listener) {\n\n const errorMessage = {\n method: 'AtvPlayerAdapter.removeListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer, busReference, boundHandlers } = this;\n\n return new Promise((resolve) => {\n\n if (Check.function(nativePlayer.playerTimeDidChange) && Check.equal(this.listener, listener)) {\n\n this.listener = null;\n\n if (Check.assigned(busReference)) {\n\n busReference.releaseHandler(\n 'atv.player.willStartPlaying',\n boundHandlers.onPlay\n );\n\n busReference.releaseHandler(\n 'atv.player.playerStateChanged',\n boundHandlers.playerStateChanged\n );\n\n busReference.releaseHandler(\n 'atv.player.onPlaybackError',\n boundHandlers.onError\n );\n\n busReference.releaseHandler(\n 'atv.player.didStopPlaying',\n boundHandlers.onPlayedToCompletion\n );\n\n busReference.releaseHandler(\n 'atv.player.playerTimeDidChange',\n boundHandlers.onPlayerTimeDidChange\n );\n\n return resolve();\n\n }\n\n nativePlayer.willStartPlaying = null;\n nativePlayer.didStopPlaying = null;\n nativePlayer.onPlaybackError = null;\n nativePlayer.didStopPlaying = null;\n nativePlayer.playerTimeDidChange = null;\n\n }\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @returns {Promise}\n *\n */\n setDrmProvider(drmProvider) {\n\n const errorMessage = {\n method: 'AtvPlayerAdapter.setDrmProvider(drmProvider)',\n get drmProvider() {\n return `${this.method} needs SDK.Drm.DrmProvider instance`;\n }\n };\n\n instanceStrict(drmProvider, DrmProvider, errorMessage.drmProvider, InvalidArgumentException);\n\n this.drmProvider = drmProvider;\n\n return this.attach();\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n * @returns {Promise}\n *\n */\n clean() {\n\n const { listener } = this;\n\n this.playlistUri = '';\n this.boundHandlers = {};\n this.currentPlayhead = null;\n this.drmProvider = null;\n\n if (Check.assigned(listener)) {\n return this.removeListener(listener);\n }\n\n return Promise.resolve();\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @desc Completes the cleanup process by completely cleaning up all `PlayerAdapter`\n * references. This method should be executed by the application developer\n * when they no longer need to use a `PlayerAdapter` instance.\n * @note Because `clean` is automatically called by the `PlaybackSession` instance,\n * another method is necessary to handle the use case of an application developer who\n * wants to continue using a `PlayerAdapter` instance after a `PlaybackSession` has been released.\n * @returns {Promise}\n *\n */\n dispose() {\n\n this.nativePlayer = null;\n this.accessToken = null;\n this.secureKeyDelivery = null;\n this.busReference = null;\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @since 2.0.0\n * @param {Object} time\n * @desc called whenever the playhead time changes for the currently playing asset.\n * @returns {Promise}\n *\n */\n onPlayerTimeDidChange(time) {\n\n return new Promise((resolve) => {\n\n this.currentPlayhead = time.timeIntervalSec;\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.3.0\n * @returns {Promise}\n *\n */\n attach() {\n\n const { secureKeyDelivery } = this;\n\n secureKeyDelivery.cancelAllRequests = this.cancelAllRequests.bind(this);\n secureKeyDelivery.fetchCertificate = this.fetchCertificate.bind(this);\n secureKeyDelivery.fetchAssetID = this.fetchAssetId.bind(this);\n secureKeyDelivery.fetchKeys = this.fetchKeys.bind(this);\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @since 3.3.3\n * @note: This method needs to be around in order for atv to call even if it returns nothing\n * @returns {Void}\n *\n */\n cancelAllRequests() {\n }\n\n /**\n *\n * @access private\n * @since 3.3.3\n * @returns {Void}\n *\n */\n fetchCertificate(uri, callback) {\n\n const { drmProvider } = this;\n\n drmProvider.getFairPlayCertificate().then((certificate) => {\n\n callback.success(certificate);\n\n }).catch((ex) => {\n\n callback.failure(ex);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.3.3\n * @returns {Void}\n *\n */\n fetchAssetId(uri, callback) {\n\n const assetId = this.assetIdFromUri(uri);\n\n if (Check.assigned(assetId)) {\n callback.success(assetId, false);\n }\n\n }\n\n /**\n *\n * @access private\n * @since 3.3.3\n * @returns {Void}\n *\n */\n fetchKeys(uri, requestData, callback) {\n\n const { drmProvider } = this;\n const serverContext = JSON.stringify({ spc: requestData });\n\n drmProvider.getFairPlayLicense(serverContext).then((license) => {\n\n callback.success(license);\n\n }).catch((ex) => {\n\n callback.failure(ex);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.3.3\n * @returns {String}\n *\n */\n assetIdFromUri(uri) {\n\n const scheme = 'skd://';\n const schemeLoc = uri.indexOf(scheme);\n\n let assetID = null;\n\n if (schemeLoc > -1) {\n assetID = uri.substring(scheme.length);\n }\n\n return assetID;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter/atvPlayerAdapter.js","/**\n *\n * @module bamWebPlayerAdapter\n * @desc PlayerAdapter for the web-based bam-video-players\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerEvents.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerProperties.md\n * @see https://github.bamtech.co/fed-app-media-platform/bam-video-players/tree/master/jsdoc\n * @see https://github.bamtech.co/fed-app-media-platform/bam-video-players/tree/master/jsdoc#playerevents--enum\n * @see https://github.bamtech.co/bam-hls/bam-hls.js/blob/production-drm/API.md\n * @see https://github.bamtech.co/bam-hls/bam-hls.js/blob/production-drm/API.md#drm-configuration\n * @see https://github.bamtech.co/bam-hls/bam-hls.js/blob/production-drm/demo/index.html\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\nimport Drm from './../../drm/entry';\nimport PlayerAdapter from './../playerAdapter';\nimport PlaybackMetrics from './../playbackMetrics';\nimport PlaybackEventListener from './../playbackEventListener';\nimport Playlist from './../playlist';\n\nconst Util = Services.Util;\nconst DrmProvider = Drm.DrmProvider;\nconst DrmType = Services.Media.DrmType;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n assigned,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class BamWebPlayerAdapter\n * @extends {PlayerAdapter}\n * @desc Interface used to communicate with the media player.\n * @note BAM internal web player adapter\n *\n */\nexport default class BamWebPlayerAdapter extends PlayerAdapter {\n\n /**\n *\n * @param {NativePlayer} nativePlayer An instance of the web-based bam-video-players\n * @throws {InvalidArgumentException}\n * @note The BamWebPlayerAdapter requires nativePlayer.dispatcher\n *\n */\n constructor(nativePlayer) {\n\n const errorMessage = {\n ctor: 'BamWebPlayerAdapter(nativePlayer)',\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n }\n };\n\n assigned(Util.getSafe(() => nativePlayer.dispatcher), errorMessage.nativePlayer, InvalidArgumentException); // eslint-disable-line\n\n super(nativePlayer);\n\n /**\n *\n * @access public\n * @type {Array}\n * @since 3.2.0\n * @desc Set of DRM providers\n *\n */\n this.drmProviders = [];\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Callback used when prepare has been called (usually via the {PlaybackSession}).\n * Sets the source URI on the {NativePlayer} instance.\n * @return {Promise}\n *\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: 'BamWebPlayerAdapter.setSource(playlist)',\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n return new Promise((resolve) => {\n\n this.playlistUri = playlist.streamUri;\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @desc Gets a snapshot of information about media playback.\n * @throws {InvalidStateException} Unable to get NativePlayer playhead or bitrate data\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n * @note metric value is rounded down to prevent possible service issues with floats\n * @note executed by {PlaybackTelemetryDispatcher#recordStreamSample}\n *\n */\n getPlaybackMetrics() {\n\n const errorMessage = {\n method: 'BamWebPlayerAdapter.getPlaybackMetrics()',\n get currentPlayhead() {\n return `${this.method} unable to get NativePlayer playhead data`;\n },\n get currentBitrate() {\n return `${this.method} unable to get NativePlayer bitrate data`;\n }\n };\n\n const { nativePlayer, unavailableMetric } = this;\n\n if (Check.not.assigned(nativePlayer.bitrates)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentPlayhead)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n if (Check.not.function(nativePlayer.getCurrentTimeInSecs)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentBitrate)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n const currentBitrate = Math.floor(nativePlayer.bitrates.getCurrentKbps()) || unavailableMetric;\n const currentPlayhead = Math.floor(nativePlayer.getCurrentTimeInSecs()) || unavailableMetric;\n\n return Promise.resolve(new PlaybackMetrics({ currentBitrate, currentPlayhead }));\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @throws {InvalidStateException} Unable to add PlaybackEventListener\n * @returns {Promise}\n *\n */\n addListener(listener) {\n\n const errorMessage = {\n method: 'BamWebPlayerAdapter.addListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get addListener() {\n return `${this.method} unable to add PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer, boundHandlers } = this;\n const { onPlay, onPause, onError, onPlayedToCompletion } = this;\n const { dispatcher } = nativePlayer;\n const EventList = nativePlayer.events.getEventList();\n const { PlayerEvents } = EventList;\n const { MEDIA_START, MEDIA_RESUME, MEDIA_PAUSED, MEDIA_ERROR, MEDIA_COMPLETE } = PlayerEvents;\n\n return new Promise((resolve, reject) => {\n\n if (Check.assigned(dispatcher)) {\n\n this.listener = listener;\n\n boundHandlers.onPlay = onPlay.bind(this);\n boundHandlers.onPause = onPause.bind(this);\n boundHandlers.onError = onError.bind(this);\n boundHandlers.onPlayedToCompletion = onPlayedToCompletion.bind(this);\n\n dispatcher.on(MEDIA_START, boundHandlers.onPlay);\n dispatcher.on(MEDIA_RESUME, boundHandlers.onPlay);\n dispatcher.on(MEDIA_PAUSED, boundHandlers.onPause);\n dispatcher.on(MEDIA_ERROR, boundHandlers.onError);\n dispatcher.on(MEDIA_COMPLETE, boundHandlers.onPlayedToCompletion);\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.addListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @throws {InvalidStateException} Unable to remove PlaybackEventListener\n * @returns {Promise}\n *\n */\n removeListener(listener) {\n\n const errorMessage = {\n method: 'BamWebPlayerAdapter.removeListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get removeListener() {\n return `${this.method} unable to remove PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer, boundHandlers } = this;\n const { dispatcher } = nativePlayer;\n const EventList = nativePlayer.events.getEventList();\n const { PlayerEvents } = EventList;\n const { MEDIA_START, MEDIA_RESUME, MEDIA_PAUSED, MEDIA_ERROR, MEDIA_COMPLETE } = PlayerEvents;\n\n return new Promise((resolve, reject) => {\n\n if (Check.assigned(dispatcher) && Check.equal(this.listener, listener)) {\n\n this.listener = null;\n\n dispatcher.off(MEDIA_START, boundHandlers.onPlay);\n dispatcher.off(MEDIA_RESUME, boundHandlers.onPlay);\n dispatcher.off(MEDIA_PAUSED, boundHandlers.onPause);\n dispatcher.off(MEDIA_ERROR, boundHandlers.onError);\n dispatcher.off(MEDIA_COMPLETE, boundHandlers.onPlayedToCompletion);\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.removeListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @throws {InvalidStateException} this PlayerAdapter needs multiple SDK.Drm.DrmProvider instances,\n * please use BamWebPlayerAdapter#setDrmProviders(drmProviders) which takes in an\n * Array of SDK.Drm.DrmProvider instances\n *\n */\n setDrmProvider(drmProvider) { // eslint-disable-line\n\n const method = 'BamWebPlayerAdapter.setDrmProvider(drmProvider)';\n const exceptionData = ExceptionReference.common.invalidState;\n\n const reasons = [new ErrorReason('', `\n ${method} - this PlayerAdapter needs multiple SDK.Drm.DrmProvider instances,\n please use BamWebPlayerAdapter#setDrmProviders(drmProviders) which takes in an\n Array of SDK.Drm.DrmProvider instances\n `)];\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @param {Array} drmProviders\n * @returns {Promise}\n *\n */\n setDrmProviders(drmProviders) {\n\n const errorMessage = {\n method: 'BamWebPlayerAdapter.setDrmProviders(drmProviders)',\n get drmProviders() {\n return `${this.method} needs Array of SDK.Drm.DrmProvider`;\n }\n };\n\n array.of.instanceStrict(drmProviders, DrmProvider, errorMessage.drmProviders, InvalidArgumentException);\n\n const { nativePlayer, setDrmConfiguration } = this;\n\n this.drmProviders = drmProviders;\n\n nativePlayer.utils.drmConfigCallback(setDrmConfiguration.bind(this));\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n * @returns {Promise}\n *\n */\n clean() {\n\n const { listener, nativePlayer, boundHandlers } = this;\n const { dispatcher } = nativePlayer;\n const EventList = nativePlayer.events.getEventList();\n const { PlayerEvents } = EventList;\n const { MEDIA_START, MEDIA_RESUME, MEDIA_PAUSED, MEDIA_ERROR, MEDIA_COMPLETE } = PlayerEvents;\n\n dispatcher.off(MEDIA_START, boundHandlers.onPlay);\n dispatcher.off(MEDIA_RESUME, boundHandlers.onPlay);\n dispatcher.off(MEDIA_PAUSED, boundHandlers.onPause);\n dispatcher.off(MEDIA_ERROR, boundHandlers.onError);\n dispatcher.off(MEDIA_COMPLETE, boundHandlers.onPlayedToCompletion);\n\n this.playlistUri = '';\n this.boundHandlers = {};\n this.drmProvider = null;\n this.drmProviders = [];\n\n if (Check.assigned(listener)) {\n return this.removeListener(listener);\n }\n\n return Promise.resolve();\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @since 3.2.0\n * @desc The DRM Configuration contains an array of key system configurations, one for\n * each supported key system. At a minimum, the key system configuration specifies\n * the key system, and a method to acquire a license, either a uri or a callback function.\n *\n * If a callback is provided, then the license request uri is optional, and would be available to the callback.\n * If no callback is provided, then the licenseRequestUri is not optional.\n *\n * @note licenseRequestHeaders expects a name/value set,\n * i.e. [{name: 'Content-Type', value: 'application/octet-stream'}]\n * @note serverCertifcate is mandatory for FAIRPLAY and recommended for WIDEVINE\n * @note serverCertificate is expected to be a Promise or BufferSource\n * @see https://github.bamtech.co/bam-hls/bam-hls.js/blob/master/API.md#keysystemconfiguration\n * @returns {Object}\n *\n */\n setDrmConfiguration() {\n\n const { drmProviders } = this;\n const keySystems = [];\n\n for (const drmProvider of drmProviders) {\n\n const keySystem = drmProvider.type;\n const licenseRequestUri = Util.getSafe(() => drmProvider.licenseRequestUri);\n\n keySystems.push({\n keySystem,\n licenseRequestUri,\n licenseRequestHeadersCallback: () => drmProvider.formatRequestHeadersList(\n drmProvider.processLicenseRequestHeaders()\n ),\n /**\n *\n * @note bam-hls calls `Promise.resolve(this._keySystemConfig.serverCertificate)`\n * where serverCertificate is a reference to this function, in EME.js.\n * We need to use an IIFE here so we setup a promise since they are not executing this function\n * only expecting a Promise(cert), Promise(undefined), cert or undefined\n *\n */\n serverCertificate: (() => {\n\n if (keySystem === DrmType.FAIRPLAY) {\n\n return drmProvider.getFairPlayCertificate();\n\n } else if (keySystem === DrmType.WIDEVINE) {\n\n return drmProvider.getWidevineCertificate();\n\n }\n\n // bam-hls expects undefined so they don't attempt to process this as a certificate\n return Promise.resolve(undefined);\n\n })()\n });\n\n }\n\n return {\n keySystems\n };\n\n }\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @desc Completes the cleanup process by completely cleaning up all `PlayerAdapter`\n * references. This method should be executed by the application developer\n * when they no longer need to use a `PlayerAdapter` instance.\n * @note Because `clean` is automatically called by the `PlaybackSession` instance,\n * another method is necessary to handle the use case of an application developer who\n * wants to continue using a `PlayerAdapter` instance after a `PlaybackSession` has been released.\n * @returns {Promise}\n *\n */\n dispose() {\n\n this.nativePlayer = null;\n this.accessToken = null;\n\n return Promise.resolve();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter/bamWebPlayerAdapter.js","/**\n *\n * @module trilithiumPlayerAdapter\n * @desc PlayerAdapter for Sony Trilithium\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerEvents.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerProperties.md\n * @see https://github.bamtech.co/fed-ce/core-trilithium-video-harness\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\nimport Drm from './../../drm/entry';\nimport QualityOfService from './../../qualityOfService/entry';\nimport PlayerAdapter from './../playerAdapter';\nimport PlaybackMetrics from './../playbackMetrics';\nimport PlaybackEventListener from './../playbackEventListener';\nimport Playlist from './../playlist';\n\nconst Util = Services.Util;\nconst DrmProvider = Drm.DrmProvider;\nconst DrmType = Services.Media.DrmType;\n\nconst AudioChangedEventData = QualityOfService.AudioChangedEventData;\nconst BitrateChangedEventData = QualityOfService.BitrateChangedEventData;\nconst MasterPlaylistFetchedEventData = QualityOfService.MasterPlaylistFetchedEvent;\nconst MediaSegmentFetchedEventData = QualityOfService.MediaSegmentFetchedEventData;\nconst PlaybackExitedEventData = QualityOfService.PlaybackExitedEventData;\nconst PlaybackInitializedEventData = QualityOfService.PlaybackInitializedEventData;\nconst PlaybackReadyEventData = QualityOfService.PlaybackReadyEventData;\nconst PlaybackSeekedEventData = QualityOfService.PlaybackSeekedEventData;\nconst PlaybackStartedEventData = QualityOfService.PlaybackStartedEventData;\nconst PlaybackPausedEventData = QualityOfService.PlaybackPausedEventData;\nconst RebufferingEndedEventData = QualityOfService.RebufferingEndedEventData;\nconst SubtitleChangedEventData = QualityOfService.SubtitleChangedEventData;\nconst VariantPlaylistFetchedEventData = QualityOfService.VariantPlaylistFetchedEventData;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class TrilithiumPlayerAdapter\n * @extends {PlayerAdapter}\n * @desc Interface used to communicate with the media player.\n *\n */\nexport default class TrilithiumPlayerAdapter extends PlayerAdapter {\n\n /**\n *\n * @param {NativePlayer} nativePlayer\n * @throws {InvalidArgumentException}\n *\n */\n constructor(nativePlayer) {\n\n const errorMessage = {\n ctor: 'TrilithiumPlayerAdapter(nativePlayer)',\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n }\n };\n\n Check.assert.function(Util.getSafe(() => nativePlayer.play), errorMessage.nativePlayer, InvalidArgumentException); // eslint-disable-line\n\n super(nativePlayer);\n\n /**\n *\n * @access private\n * @type {Function|Null}\n * @since 2.0.1\n *\n */\n this.onEncryptionKey = nativePlayer.onEncryptionKey || null;\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Callback used when prepare has been called (usually via the {PlaybackSession}).\n * Sets the source URI on the {NativePlayer} instance.\n * @returns {Promise}\n *\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: `${this.constructor.name}.setSource(playlist)`,\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n return new Promise((resolve) => {\n\n this.playlistUri = playlist.streamUri;\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @desc Gets a snapshot of information about media playback.\n * @throws {InvalidStateException} Unable to get NativePlayer playhead or bitrate data\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n * @note nativePlayer.currentBitrate - Applies only to live streaming.\n * @note nativePlayer.currentTime - The current cumulative time.\n * @note metric value is rounded down to prevent possible service issues with floats\n * @note executed by {PlaybackTelemetryDispatcher#recordStreamSample}\n *\n */\n getPlaybackMetrics() {\n\n const errorMessage = {\n method: `${this.constructor.name}.getPlaybackMetrics()`,\n get currentPlayhead() {\n return `${this.method} unable to get NativePlayer playhead data`;\n },\n get currentBitrate() {\n return `${this.method} unable to get NativePlayer bitrate data`;\n }\n };\n\n const { nativePlayer, unavailableMetric } = this;\n\n if (Check.not.assigned(nativePlayer.currentBitrate)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentBitrate)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n if (Check.not.assigned(nativePlayer.currentTime)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentPlayhead)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n const currentBitrate = Math.floor(nativePlayer.currentBitrate) || unavailableMetric;\n const currentPlayhead = Math.floor(nativePlayer.currentTime) || unavailableMetric;\n\n return Promise.resolve(new PlaybackMetrics({ currentBitrate, currentPlayhead }));\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @throws {InvalidStateException} Unable to add PlaybackEventListener\n * @returns {Promise}\n *\n */\n addListener(listener) {\n\n const errorMessage = {\n method: `${this.constructor.name}.addListener(listener)`,\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get addListener() {\n return `${this.method} unable to add PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer } = this;\n\n return new Promise((resolve, reject) => {\n\n if (Check.function(nativePlayer.play)) {\n\n this.listener = listener;\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.addListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @returns {Promise}\n *\n */\n removeListener(listener) {\n\n const errorMessage = {\n method: `${this.constructor.name}.removeListener(listener)`,\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer } = this;\n\n return new Promise((resolve) => {\n\n if (Check.function(nativePlayer.play) && Check.equal(this.listener, listener)) {\n\n this.listener = null;\n\n }\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @throws {InvalidStateException} This PlayerAdapter needs multiple SDK.Drm.DrmProvider instances,\n * please use TrilithiumPlayerAdapter#setDrmProviders(drmProviders) which takes in an\n * Array of SDK.Drm.DrmProvider instances\n *\n */\n setDrmProvider(drmProvider) { // eslint-disable-line\n\n const errorMessage = {\n method: `${this.constructor.name}.setDrmProvider(drmProvider)`\n };\n\n const reasons = [new ErrorReason('', `\n ${errorMessage.method} - this PlayerAdapter needs multiple SDK.Drm.DrmProvider instances,\n please use TrilithiumPlayerAdapter#setDrmProviders(drmProviders) which takes in an\n Array of SDK.Drm.DrmProvider instances\n `)];\n\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n /**\n *\n * @access public\n * @since 3.3.0\n * @param {Array} drmProviders\n * @note filters out unsupported drm keys before creating the drm configuration object\n * @returns {Promise}\n *\n */\n setDrmProviders(drmProviders) {\n\n const errorMessage = {\n method: `${this.constructor.name}.setDrmProviders(drmProviders)`,\n get drmProviders() {\n return `${this.method} needs Array of SDK.Drm.DrmProvider`;\n }\n };\n\n array.of.instanceStrict(drmProviders, DrmProvider, errorMessage.drmProviders, InvalidArgumentException);\n\n this.drmProviders = drmProviders;\n\n return this.attach();\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n * @returns {Promise}\n *\n */\n clean() {\n\n const { listener } = this;\n\n this.playlistUri = '';\n this.onEncryptionKey = null;\n this.drmProvider = null;\n\n if (Check.assigned(listener)) {\n return this.removeListener(listener);\n }\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @desc Completes the cleanup process by completely cleaning up all `PlayerAdapter`\n * references. This method should be executed by the application developer\n * when they no longer need to use a `PlayerAdapter` instance.\n * @note Because `clean` is automatically called by the `PlaybackSession` instance,\n * another method is necessary to handle the use case of an application developer who\n * wants to continue using a `PlayerAdapter` instance after a `PlaybackSession` has been released.\n * @returns {Promise}\n *\n */\n dispose() {\n\n this.nativePlayer = null;\n this.accessToken = null;\n this.onEncryptionKey = null;\n this.drmProvider = null;\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.AudioChangedEventData} eventData\n *\n */\n audioChangedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.audioChangedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.AudioChangedEventData instance`;\n }\n };\n\n instanceStrict(eventData, AudioChangedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onAudioChanged(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.RebufferingEndedEventData} eventData\n *\n */\n rebufferingEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.rebufferingEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.RebufferingEndedEventData instance`;\n }\n };\n\n instanceStrict(eventData, RebufferingEndedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onRebufferingEnded(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackExitedEventData} eventData\n *\n */\n playbackExitedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.playbackExitedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.PlaybackExitedEventData instance`;\n }\n };\n\n instanceStrict(eventData, PlaybackExitedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onPlaybackExited(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackInitializedEventData} eventData\n *\n */\n playbackInitializedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.playbackInitializedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.PlaybackInitializedEventData instance`;\n }\n };\n\n instanceStrict(eventData, PlaybackInitializedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onPlaybackInitialized(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackSeekedEventData} eventData\n *\n */\n playbackSeekedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.playbackSeekedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.PlaybackSeekedEventData instance`;\n }\n };\n\n instanceStrict(eventData, PlaybackSeekedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onPlaybackSeeked(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.SubtitleChangedEventData} eventData\n *\n */\n subtitleChangedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.subtitleChangedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.SubtitleChangedEventData instance`;\n }\n };\n\n instanceStrict(eventData, SubtitleChangedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onSubtitleChanged(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.BitrateChangedEventData} eventData\n *\n */\n bitrateChangedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.bitrateChangedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.BitrateChangedEventData instance`;\n }\n };\n\n instanceStrict(eventData, BitrateChangedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onBitrateChanged(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.MasterPlaylistFetchedEventData} eventData\n *\n */\n masterPlaylistFetchedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.masterPlaylistFetchedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.MasterPlaylistFetchedEventData instance`;\n }\n };\n\n instanceStrict(eventData, MasterPlaylistFetchedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onMasterPlaylistFetched(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.VariantPlaylistFetchedEventData} eventData\n *\n */\n variantPlaylistFetchedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.variantPlaylistFetchedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.VariantPlaylistFetchedEventData instance`;\n }\n };\n\n instanceStrict(eventData, VariantPlaylistFetchedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onVariantPlaylistFetched(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.MediaSegmentFetchedEventData} eventData\n *\n */\n mediaSegmentFetchedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.mediaSegmentFetchedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.MediaSegmentFetchedEventData instance`;\n }\n };\n\n instanceStrict(eventData, MediaSegmentFetchedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onMediaSegmentFetched(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackReadyEventData} eventData\n *\n */\n playbackReadyEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.playbackReadyEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.PlaybackReadyEventData instance`;\n }\n };\n\n instanceStrict(eventData, PlaybackReadyEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onPlaybackReady(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackStartedEventData} eventData\n *\n */\n playbackStartedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.playbackStartedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.PlaybackStartedEventData instance`;\n }\n };\n\n instanceStrict(eventData, PlaybackStartedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onPlaybackStarted(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.PlaybackPausedEventData} eventData\n *\n */\n playbackPausedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.playbackPausedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.PlaybackPausedEventData instance`;\n }\n };\n\n instanceStrict(eventData, PlaybackPausedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onPlaybackPaused(eventData);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @since 2.0.0\n * @returns {Promise}\n *\n */\n attach() {\n\n const callback = (keyObject) => {\n\n if (Check.assigned(keyObject.url) && Check.assigned(keyObject.method)) {\n\n this.silkCallback(\n this.getDrmProviderByType(DrmType.SILK),\n keyObject\n );\n\n } else {\n\n this.playReadyCallback(\n this.getDrmProviderByType(DrmType.PLAYREADY),\n keyObject\n );\n\n }\n\n };\n\n this.setCallback('onEncryptionKey', callback.bind(this));\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @param {String} key\n * @param {Function} eventCallback\n * @since 2.0.1\n *\n */\n setCallback(key, eventCallback) {\n\n const nativePlayer = this.nativePlayer;\n const clientCallback = this[key];\n\n if (Check.function(clientCallback)) {\n\n nativePlayer[key] = (value) => {\n\n clientCallback(value);\n eventCallback(value);\n\n };\n\n } else {\n\n nativePlayer[key] = eventCallback;\n\n }\n\n }\n\n /**\n *\n * @access private\n * @since 3.2.0\n * @param {SDK.Drm.SilkDrmProvider} drmProvider\n * @param {Object} keyObject\n * @throws {InvalidStateException} Unable to set encryption key\n * @returns {Promise}\n *\n */\n silkCallback(drmProvider, keyObject) {\n\n return new Promise((resolve, reject) => {\n\n drmProvider.getSilkKey(keyObject.url).then((key) => {\n\n keyObject.setEncryptionKey(key);\n return resolve();\n\n }).catch(() => {\n\n const reasons = [new ErrorReason('', 'Unable to set encryption key')];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.2.0\n * @param {SDK.Drm.FairPlayDrmProvider} drmProvider\n * @param {Object} keyObject\n * @throws {InvalidStateException} Unable to obtain PlayReady license\n * @returns {Promise}\n *\n */\n playReadyCallback(drmProvider, keyObject) {\n\n const { nativePlayer } = this;\n\n return new Promise((resolve, reject) => {\n\n const onLicenseRequestReady = (format, body) => {\n\n drmProvider.getPlayReadyLicense({ xmlData: body.toString() }).then((data) => {\n\n nativePlayer.setLicense(format, data);\n return resolve();\n\n }).catch((ex) => {\n\n const reasons = [new ErrorReason('', `Unable to obtain PlayReady license - \"${ex.message}\"`)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n };\n\n nativePlayer.onLicenseRequestReady = onLicenseRequestReady.bind(this);\n\n for (const key of keyObject.keyTable) {\n\n nativePlayer.generateLicenseRequest(\n Util.getSafe(() => key.format),\n Util.getSafe(() => key.url)\n );\n\n }\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Media.DrmType} drmType\n * @since 3.3.0\n * @returns {SDK.Drm.DrmProvider}\n *\n */\n getDrmProviderByType(drmType) {\n\n const { drmProviders } = this;\n let drmProvider;\n\n drmProviders.find((provider) => {\n\n if (provider.type === drmType) {\n drmProvider = provider;\n return true;\n }\n\n return false;\n\n });\n\n return drmProvider;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter/trilithiumPlayerAdapter.js","/**\n *\n * @module chromecastPlayerAdapter\n * @author Greg Babula [greg.babula@disneystreaming.com]\n * @author Eric Milliren [eric.milliren@disneystreaming.com]\n * @desc PlayerAdapter for Chromecast\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerEvents.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerProperties.md\n * @see https://developers.google.com/cast/docs/reference/player/cast.player.api.Host\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\nimport Drm from './../../drm/entry';\nimport PlayerAdapter from './../playerAdapter';\nimport PlaybackMetrics from './../playbackMetrics';\nimport PlaybackEventListener from './../playbackEventListener';\nimport Playlist from './../playlist';\n\nconst Util = Services.Util;\nconst DrmProvider = Drm.DrmProvider;\nconst DrmType = Services.Media.DrmType;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n object,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class ChromecastPlayerAdapter\n * @extends {PlayerAdapter}\n * @desc Chromecast Player Adapter. Note: this uses the\n * updateLicenseRequestInfo callback to set license\n *\n */\nexport default class ChromecastPlayerAdapter extends PlayerAdapter {\n\n /**\n *\n * @param {NativePlayer} nativePlayer\n * @param {cast.player.api} playerApi\n * @throws {InvalidArgumentException}\n * @note The ChromecastPlayerAdapter requires nativePlayer.getHost\n *\n */\n constructor(nativePlayer, playerApi) {\n\n const errorMessage = {\n ctor: 'ChromecastPlayerAdapter(nativePlayer, playerApi)',\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n },\n get playerApi() {\n return `${this.ctor} needs cast.player.api instance`;\n }\n };\n\n Check.assert.function(Util.getSafe(() => nativePlayer.getHost), errorMessage.nativePlayer, InvalidArgumentException); // eslint-disable-line\n object(playerApi, errorMessage.playerApi, InvalidArgumentException);\n\n super(nativePlayer);\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.host = nativePlayer.getHost();\n\n /**\n *\n * @access private\n * @type {cast.player.api}\n *\n */\n this.playerApi = playerApi;\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc The {HTMLMediaElement} tied to the nativePlayer instance.\n *\n */\n this.mediaElement = this.host.mediaElement;\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @type {cast.player.api.HlsSegmentFormat}\n *\n */\n this.audioSegmentFormat = undefined;\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @type {cast.player.api.HlsVideoSegmentFormat}\n *\n */\n this.videoSegmentFormat = undefined;\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Callback used when prepare has been called (usually via the {PlaybackSession}).\n * Sets the source URI on the {NativePlayer} instance.\n * @throws {InvalidStateException} Unable to set playlistUri on NativePlayer\n * @returns {Promise}\n *\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: 'ChromecastPlayerAdapter.setSource(playlist)',\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n },\n get setPlaylistUri() {\n return `${this.method} unable to set playlistUri on NativePlayer`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n const { host } = this;\n\n return new Promise((resolve, reject) => {\n\n this.playlistUri = playlist.streamUri;\n\n try {\n\n host.url = playlist.streamUri;\n host.mediaElement.setAttribute('crossorigin', 'use-credentials');\n\n return resolve();\n\n } catch (ex) {\n\n const reasons = [new ErrorReason('', `${errorMessage.setPlaylistUri} - ${ex}`)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @desc Gets a snapshot of information about media playback.\n * @throws {InvalidStateException} Unable to get NativePlayer playhead data\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n * @note nativePlayer.currentTime - The HTMLMediaElement.currentTime property gives\n * the current playback time in seconds\n * @note metric value is rounded down to prevent possible service issues with floats\n * @note executed by {PlaybackTelemetryDispatcher#recordStreamSample}\n *\n */\n getPlaybackMetrics() {\n\n const errorMessage = {\n method: 'ChromecastPlayerAdapter.getPlaybackMetrics()',\n get currentPlayhead() {\n return `${this.method} unable to get NativePlayer playhead data`;\n }\n };\n\n const { mediaElement, unavailableMetric } = this;\n\n if (Check.not.assigned(mediaElement.currentTime)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentPlayhead)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n const currentBitrate = unavailableMetric;\n const currentPlayhead = Math.floor(mediaElement.currentTime) || unavailableMetric;\n\n return Promise.resolve(new PlaybackMetrics({ currentBitrate, currentPlayhead }));\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @throws {InvalidStateException} Unable to add PlaybackEventListener\n * @returns {Promise}\n *\n */\n addListener(listener) {\n\n const errorMessage = {\n method: 'ChromecastPlayerAdapter.addListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get addListener() {\n return `${this.method} unable to add PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { boundHandlers, mediaElement } = this;\n const { onPlay, onPause, onError, onPlayedToCompletion } = this;\n\n return new Promise((resolve, reject) => {\n\n if (Check.function(mediaElement.play)) {\n\n this.listener = listener;\n\n boundHandlers.onPlay = onPlay.bind(this);\n boundHandlers.onPause = onPause.bind(this);\n boundHandlers.onError = onError.bind(this);\n boundHandlers.onPlayedToCompletion = onPlayedToCompletion.bind(this);\n\n mediaElement.onplay = boundHandlers.onPlay;\n mediaElement.onpause = boundHandlers.onPause;\n mediaElement.onerror = boundHandlers.onError;\n mediaElement.onended = boundHandlers.onPlayedToCompletion;\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.addListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @returns {Promise}\n *\n */\n removeListener(listener) {\n\n const errorMessage = {\n method: 'ChromecastPlayerAdapter.removeListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { mediaElement } = this;\n\n return new Promise((resolve) => {\n\n if (Check.function(mediaElement.play) && Check.equal(this.listener, listener)) {\n\n this.listener = null;\n\n mediaElement.onplay = null;\n mediaElement.onpause = null;\n mediaElement.onerror = null;\n mediaElement.onended = null;\n\n }\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @returns {Promise}\n *\n */\n setDrmProvider(drmProvider) {\n\n const errorMessage = {\n method: 'ChromecastPlayerAdapter.setDrmProvider(drmProvider)',\n get drmProvider() {\n return `${this.method} needs SDK.Drm.DrmProvider instance`;\n }\n };\n\n instanceStrict(drmProvider, DrmProvider, errorMessage.drmProvider, InvalidArgumentException);\n\n this.drmProvider = drmProvider;\n\n return this.attach();\n\n }\n\n /**\n *\n * @access public\n * @param {Array} audioSegmentTypes\n * @param {Array} videoSegmentTypes\n * @since 3.2.0\n * @returns {Promise}\n *\n */\n updateSegmentFormat(audioSegmentTypes, videoSegmentTypes) {\n\n this.updateAudioSegmentFormat(audioSegmentTypes).updateVideoSegmentFormat(videoSegmentTypes);\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n * @returns {Promise}\n *\n */\n clean() {\n\n const { listener } = this;\n\n this.playlistUri = '';\n this.boundHandlers = {};\n this.drmProvider = null;\n this.audioSegmentFormat = undefined;\n this.videoSegmentFormat = undefined;\n\n if (Check.assigned(listener)) {\n return this.removeListener(listener);\n }\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @since 3.6.0\n * @param {Object} adEngineData\n * @desc assigns adEngine data from the playlist service, some of which should be included in segment requests\n * @note if adEngineData is unassigned do not do anything\n *\n */\n setAdEngineData(adEngineData) {\n\n this.adEngineData = adEngineData;\n\n if (Check.nonEmptyObject(adEngineData)) {\n\n const { host } = this;\n const { ssess } = adEngineData;\n\n host.updateSegmentRequestInfo = (requestInfo) => {\n\n const isAdEngineCall = Util.adEngineRegex(requestInfo.url);\n\n // need to reset these for each segment request\n requestInfo.headers = null;\n requestInfo.crossDomain = undefined;\n requestInfo.withCredentials = false;\n\n if (ssess && isAdEngineCall) {\n\n requestInfo.headers = {};\n requestInfo.headers.ssess = ssess;\n requestInfo.crossDomain = true;\n requestInfo.withCredentials = true;\n\n }\n\n };\n\n }\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @desc Completes the cleanup process by completely cleaning up all `PlayerAdapter`\n * references. This method should be executed by the application developer\n * when they no longer need to use a `PlayerAdapter` instance.\n * @note Because `clean` is automatically called by the `PlaybackSession` instance,\n * another method is necessary to handle the use case of an application developer who\n * wants to continue using a `PlayerAdapter` instance after a `PlaybackSession` has been released.\n * @returns {Promise}\n *\n */\n dispose() {\n\n this.nativePlayer = null;\n this.accessToken = null;\n this.host = null;\n this.mediaElement = null;\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @since 3.2.0\n * @returns {Promise}\n *\n */\n attach() {\n\n const { drmProvider, playerApi } = this;\n\n if (Check.equal(drmProvider.type, DrmType.WIDEVINE)) {\n return this.attachDrm(Util.getSafe(() => playerApi.ContentProtection.WIDEVINE));\n }\n\n if (Check.equal(drmProvider.type, DrmType.PLAYREADY)) {\n return this.attachDrm(Util.getSafe(() => playerApi.ContentProtection.PLAYREADY));\n }\n\n return this.attachSilkDrm();\n\n }\n\n /**\n *\n * @access private\n * @since 3.2.0\n * @param {cast.player.api.ContentProtection} protectionSystem\n * @returns {Promise}\n * @note Uses undocument flag (disableSourceBufferTimeAdjust) provided by Google to\n * enable bypassing gap in cmaf segments when set to true\n *\n */\n attachDrm(protectionSystem) {\n\n const { host, drmProvider } = this;\n\n host.licenseUrl = drmProvider.licenseRequestUri;\n host.protectionSystem = protectionSystem;\n host.disableSourceBufferTimeAdjust = true;\n\n host.updateLicenseRequestInfo = (requestInfo) => {\n\n requestInfo.crossDomain = true;\n requestInfo.withCredentials = true;\n requestInfo.headers = drmProvider.processLicenseRequestHeaders() || {};\n\n };\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @since 3.2.0\n * @returns {Promise}\n *\n */\n attachSilkDrm() {\n\n const { host, accessToken } = this;\n\n host.disableSourceBufferTimeAdjust = false;\n\n host.updateLicenseRequestInfo = (requestInfo) => {\n\n requestInfo.withCredentials = true;\n requestInfo.headers = {};\n requestInfo.headers.Authorization = accessToken;\n\n };\n\n return Promise.resolve();\n }\n\n /**\n *\n * @access private\n * @param {Array} audioSegmentTypes\n * @since 3.2.0\n * @returns {this}\n *\n */\n updateAudioSegmentFormat(audioSegmentTypes) {\n\n const { playerApi } = this;\n\n this.audioSegmentFormat = undefined;\n\n if (Check.nonEmptyArray(audioSegmentTypes)) {\n\n if (audioSegmentTypes.includes('FMP4')) {\n this.audioSegmentFormat = Util.getSafe(() => playerApi.HlsSegmentFormat.FMP4);\n return this;\n }\n\n if (audioSegmentTypes.includes('PACKED_AUDIO')) {\n this.audioSegmentFormat = Util.getSafe(() => playerApi.HlsSegmentFormat.TS_AAC);\n return this;\n }\n\n }\n\n return this;\n\n }\n\n /**\n *\n * @access private\n * @param {Array} videoSegmentTypes\n * @since 3.2.0\n * @returns {this}\n *\n */\n updateVideoSegmentFormat(videoSegmentTypes) {\n\n const { playerApi } = this;\n\n this.videoSegmentFormat = undefined;\n\n if (Check.nonEmptyArray(videoSegmentTypes)) {\n\n if (videoSegmentTypes.includes('FMP4')) {\n this.videoSegmentFormat = Util.getSafe(() => playerApi.HlsVideoSegmentFormat.FMP4);\n return this;\n }\n\n if (videoSegmentTypes.includes('TS')) {\n this.videoSegmentFormat = Util.getSafe(() => playerApi.HlsVideoSegmentFormat.MPEG2_TS);\n return this;\n }\n\n }\n\n return this;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter/chromecastPlayerAdapter.js","/**\n *\n * @module cafPlayerAdapter\n * @author Shane Daugherty [shane@blackpixel.com]\n * @author Greg Babula [greg.babula@disneystreaming.com]\n * @author Eric Milliren [eric.milliren@disneystreaming.com]\n * @see https://developers.google.com/cast/docs/caf_receiver_overview\n * @see https://developers.google.com/cast/docs/reference/caf_receiver/cast.framework.PlayerManager\n * @see https://developers.google.com/cast/docs/reference/caf_receiver/cast.framework.PlaybackConfig\n * @see https://developers.google.com/cast/docs/reference/caf_receiver/cast.framework.messages.LoadRequestData\n * @see https://developers.google.com/cast/docs/reference/caf_receiver/cast.framework.messages.MediaInformation\n * @see https://developers.google.com/cast/docs/reference/caf_receiver/cast.framework.events#.EventType\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\nimport Drm from './../../drm/entry';\nimport QualityOfService from './../../qualityOfService/entry';\nimport PlayerAdapter from './../playerAdapter';\nimport PlaybackMetrics from './../playbackMetrics';\nimport PlaybackEventListener from './../playbackEventListener';\nimport Playlist from './../playlist';\n\nconst Util = Services.Util;\nconst DrmProvider = Drm.DrmProvider;\nconst DrmType = Services.Media.DrmType;\n\nconst AudioChangedEventData = QualityOfService.AudioChangedEventData;\nconst BitrateChangedEventData = QualityOfService.BitrateChangedEventData;\nconst MasterPlaylistFetchedEventData = QualityOfService.MasterPlaylistFetchedEvent;\nconst PlaybackExitedEventData = QualityOfService.PlaybackExitedEventData;\nconst PlaybackInitializedEventData = QualityOfService.PlaybackInitializedEventData;\nconst PlaybackReadyEventData = QualityOfService.PlaybackReadyEventData;\nconst PlaybackSeekedEventData = QualityOfService.PlaybackSeekedEventData;\nconst PlaybackStartedEventData = QualityOfService.PlaybackStartedEventData;\nconst PlaybackPausedEventData = QualityOfService.PlaybackPausedEventData;\nconst RebufferingEndedEventData = QualityOfService.RebufferingEndedEventData;\nconst RebufferingStartedEventData = QualityOfService.RebufferingStartedEventData;\nconst SubtitleChangedEventData = QualityOfService.SubtitleChangedEventData;\nconst VariantPlaylistFetchedEventData = QualityOfService.VariantPlaylistFetchedEventData;\n\nconst PlaybackExitedCause = QualityOfService.PlaybackExitedCause;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n assigned,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class CafPlayerAdapter\n * @extends {PlayerAdapter}\n * @since 3.1.0\n * @desc Chromecast Application Framework (CAF) PlayerAdapter.\n *\n */\nexport default class CafPlayerAdapter extends PlayerAdapter {\n\n /**\n *\n * @param {cast.framework.PlayerManager} nativePlayer\n * @param {cast.framework} framework\n * @throws {InvalidArgumentException}\n *\n */\n constructor(nativePlayer, framework) {\n\n const errorMessage = {\n ctor: 'CafPlayerAdapter(nativePlayer, framework)',\n get nativePlayer() {\n return `${this.ctor} needs cast.framework.PlayerManager instance`;\n },\n get nativePlayerInstance() {\n return `${this.ctor} native player should be a cast.framework.PlayerManager instance`;\n }\n };\n\n super(nativePlayer);\n\n Check.all([\n assigned(nativePlayer, errorMessage.nativePlayer, InvalidArgumentException),\n instanceStrict(nativePlayer, framework.PlayerManager, errorMessage.nativePlayerInstance, InvalidArgumentException) // eslint-disable-line\n ]);\n\n /**\n *\n * @access private\n * @type {cast.framework|null}\n * @desc Internal reference to the cast framework Object. Allows property\n * reference instead of checking against a cast global, which in turn makes this\n * PlayerAdapter easily testable.\n *\n */\n this.framework = framework;\n\n /**\n *\n * @access private\n * @type {Number}\n * @desc The current bit rate.\n * @todo see if there is a way to avoid storing this value\n * if we must do this, make sure that the value gets updated \"onEnded\" \"onPause\" etc\n *\n */\n this.currentBitrate = undefined;\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @type {cast.framework.messages.HlsSegmentFormat}\n *\n */\n this.audioSegmentFormat = undefined;\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @type {cast.framework.messages.HlsVideoSegmentFormat}\n *\n */\n this.videoSegmentFormat = null;\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Callback used when prepare has been called (usually via the {PlaybackSession}).\n * Sets the source URI on the {NativePlayer} instance.\n * @throws {InvalidStateException} Unable to set playlistUri on NativePlayer\n * @returns {Promise}\n *\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: 'CafPlayerAdapter.setSource(playlist)',\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n },\n get setPlaylistUri() {\n return `${this.method} unable to set playlistUri on NativePlayer`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n const { nativePlayer } = this;\n\n return new Promise((resolve, reject) => {\n\n this.playlistUri = playlist.streamUri;\n\n try {\n\n /**\n *\n * @type {cast.framework.PlaybackConfig}\n * @desc A copy of the current player config\n *\n */\n const playbackConfig = this.getPlaybackConfig();\n\n // undocumented Google MPL flag\n if (!Util.getSafe(() => playbackConfig.disableSourceBufferTimeAdjust)) {\n playbackConfig.disableSourceBufferTimeAdjust = true;\n }\n\n // set current player config\n nativePlayer.setPlaybackConfig(playbackConfig);\n\n // override the mediaUrl / contentId in the LOAD request\n nativePlayer.setMediaUrlResolver(() => playlist.streamUri);\n\n return resolve();\n\n } catch (ex) {\n\n const reasons = [new ErrorReason('', `${errorMessage.setPlaylistUri} - ${ex}`)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.6.0\n * @param {Object} adEngineData\n * @desc assigns adEngine data from the playlist service, some of which should be included in segment requests\n * @note if adEngineData is unassigned do not do anything\n *\n */\n setAdEngineData(adEngineData) {\n\n this.adEngineData = adEngineData;\n\n if (Check.nonEmptyObject(adEngineData)) {\n\n const { nativePlayer } = this;\n const { ssess } = adEngineData;\n\n const playbackConfig = this.getPlaybackConfig();\n\n playbackConfig.segmentRequestHandler = (requestInfo) => {\n\n const isAdEngineCall = Util.adEngineRegex(requestInfo.url);\n\n // need to reset these for each segment request\n requestInfo.headers = null;\n requestInfo.crossDomain = undefined;\n requestInfo.withCredentials = false;\n\n if (ssess && isAdEngineCall) {\n\n requestInfo.headers = {};\n requestInfo.headers.ssess = ssess;\n requestInfo.crossDomain = true;\n requestInfo.withCredentials = true;\n\n }\n\n };\n\n nativePlayer.setPlaybackConfig(playbackConfig);\n\n }\n\n }\n\n /**\n *\n * @access public\n * @desc Gets a snapshot of information about media playback.\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n *\n */\n getPlaybackMetrics() {\n\n return Promise.resolve(\n new PlaybackMetrics({\n currentBitrate: this.getCurrentBitrate(),\n currentPlayhead: this.getCurrentPlayhead()\n })\n );\n\n }\n\n /**\n *\n * @access public\n * @param {PlaybackEventListener} listener\n * @throws {InvalidStateException} Unable to add PlaybackEventListener\n * @returns {Promise}\n *\n */\n addListener(listener) {\n\n const errorMessage = {\n method: 'CafPlayerAdapter.addListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get addListener() {\n return `${this.method} unable to add PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer, boundHandlers, framework } = this;\n const { playbackExitedEvent, playbackReadyEvent, playbackStartedEvent, playbackInitializedEvent } = this;\n const { rebufferingEvent, playbackSeekedEvent, bitrateChangedEvent, playbackPausedEvent } = this;\n const { BUFFERING, PLAY, PLAYING, PAUSE, MEDIA_FINISHED, BITRATE_CHANGED } = framework.events.EventType;\n const { SEEKED, SEEKING, PLAYER_LOAD_COMPLETE } = framework.events.EventType;\n\n return new Promise((resolve, reject) => {\n\n this.listener = listener;\n\n boundHandlers.playbackReadyEvent = playbackReadyEvent.bind(this);\n boundHandlers.playbackStartedEvent = playbackStartedEvent.bind(this);\n boundHandlers.rebufferingEvent = rebufferingEvent.bind(this);\n boundHandlers.playbackExitedEvent = playbackExitedEvent.bind(this);\n boundHandlers.playbackSeekedEvent = playbackSeekedEvent.bind(this);\n boundHandlers.playbackPausedEvent = playbackPausedEvent.bind(this);\n boundHandlers.bitrateChangedEvent = bitrateChangedEvent.bind(this);\n boundHandlers.playbackInitializedEvent = playbackInitializedEvent.bind(this);\n\n try {\n\n nativePlayer.addEventListener(\n PLAY,\n boundHandlers.playbackReadyEvent\n );\n\n nativePlayer.addEventListener(\n PLAYING,\n boundHandlers.playbackStartedEvent\n );\n\n nativePlayer.addEventListener(\n BUFFERING,\n boundHandlers.rebufferingEvent\n );\n\n nativePlayer.addEventListener(\n MEDIA_FINISHED,\n boundHandlers.playbackExitedEvent\n );\n\n nativePlayer.addEventListener(\n SEEKED,\n boundHandlers.playbackSeekedEvent\n );\n\n nativePlayer.addEventListener(\n SEEKING,\n boundHandlers.playbackSeekedEvent\n );\n\n nativePlayer.addEventListener(\n BITRATE_CHANGED,\n boundHandlers.bitrateChangedEvent\n );\n\n nativePlayer.addEventListener(\n PAUSE,\n boundHandlers.playbackPausedEvent\n );\n\n nativePlayer.addEventListener(\n PLAYER_LOAD_COMPLETE,\n boundHandlers.playbackInitializedEvent\n );\n\n return resolve();\n\n } catch (ex) {\n\n const reasons = [new ErrorReason('', errorMessage.addListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {PlaybackEventListener} listener\n * @throws {InvalidStateException} Unable to remove PlaybackEventListener\n * @returns {Promise}\n *\n */\n removeListener(listener) {\n\n const errorMessage = {\n method: 'CafPlayerAdapter.removeListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get removeListener() {\n return `${this.method} unable to remove PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer, boundHandlers, framework } = this;\n const { BUFFERING, PLAY, PLAYING, PAUSE, MEDIA_FINISHED, BITRATE_CHANGED } = framework.events.EventType;\n const { SEEKED, SEEKING, PLAYER_LOAD_COMPLETE } = framework.events.EventType;\n\n return new Promise((resolve, reject) => {\n\n if (Check.equal(this.listener, listener)) {\n\n this.listener = null;\n\n try {\n\n nativePlayer.removeEventListener(\n PLAY,\n boundHandlers.playbackReadyEvent\n );\n\n nativePlayer.removeEventListener(\n PLAYING,\n boundHandlers.playbackStartedEvent\n );\n\n nativePlayer.removeEventListener(\n BUFFERING,\n boundHandlers.rebufferingEvent\n );\n\n nativePlayer.removeEventListener(\n MEDIA_FINISHED,\n boundHandlers.playbackExitedEvent\n );\n\n nativePlayer.removeEventListener(\n SEEKED,\n boundHandlers.playbackSeekedEvent\n );\n\n nativePlayer.removeEventListener(\n SEEKING,\n boundHandlers.playbackSeekedEvent\n );\n\n nativePlayer.removeEventListener(\n BITRATE_CHANGED,\n boundHandlers.bitrateChangedEvent\n );\n\n nativePlayer.removeEventListener(\n PAUSE,\n boundHandlers.playbackPausedEvent\n );\n\n nativePlayer.removeEventListener(\n PLAYER_LOAD_COMPLETE,\n boundHandlers.playbackInitializedEvent\n );\n\n } catch (ex) {\n\n const reasons = [new ErrorReason('', errorMessage.removeListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n }\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @returns {Promise}\n *\n */\n setDrmProvider(drmProvider) {\n\n const errorMessage = {\n method: 'CafPlayerAdapter.setDrmProvider(drmProvider)',\n get drmProvider() {\n return `${this.method} needs SDK.Drm.DrmProvider instance`;\n }\n };\n\n instanceStrict(drmProvider, DrmProvider, errorMessage.drmProvider, InvalidArgumentException);\n\n this.drmProvider = drmProvider;\n\n return this.attach();\n\n }\n\n /**\n *\n * @access public\n * @param {Array} audioSegmentTypes\n * @param {Array} videoSegmentTypes\n * @since 3.2.0\n * @returns {Promise}\n *\n */\n updateSegmentFormat(audioSegmentTypes, videoSegmentTypes) {\n\n this.updateAudioSegmentFormat(audioSegmentTypes).updateVideoSegmentFormat(videoSegmentTypes);\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n * @returns {Promise}\n *\n */\n clean() {\n\n const { listener, nativePlayer } = this;\n\n // clear the override the mediaUrl / contentId in the LOAD request\n nativePlayer.setMediaUrlResolver();\n\n this.playlistUri = '';\n this.boundHandlers = {};\n this.currentBitrate = null;\n this.drmProvider = null;\n this.audioSegmentFormat = undefined;\n this.videoSegmentFormat = undefined;\n\n if (Check.assigned(listener)) {\n return this.removeListener(listener);\n }\n\n return Promise.resolve();\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @desc Completes the cleanup process by completely cleaning up all `PlayerAdapter`\n * references. This method should be executed by the application developer\n * when they no longer need to use a `PlayerAdapter` instance.\n * @note Because `clean` is automatically called by the `PlaybackSession` instance,\n * another method is necessary to handle the use case of an application developer who\n * wants to continue using a `PlayerAdapter` instance after a `PlaybackSession` has been released.\n * @returns {Promise}\n *\n */\n dispose() {\n\n this.nativePlayer = null;\n this.accessToken = null;\n this.framework = null;\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @desc Gets the current bitrate\n * @returns {Number|null}\n *\n */\n getCurrentBitrate() {\n\n const { unavailableMetric } = this;\n\n return Check.number(this.currentBitrate) ? this.currentBitrate : unavailableMetric;\n\n }\n\n /**\n *\n * @access public\n * @desc Gets the current playhead position\n * @returns {Number|null}\n *\n */\n getCurrentPlayhead() {\n\n const { nativePlayer, unavailableMetric } = this;\n const currentTimeSec = nativePlayer.getCurrentTimeSec();\n\n return Math.floor(currentTimeSec) || unavailableMetric;\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.AudioChangedEventData} eventData\n * @desc Trigger when audio stream changes.\n *\n */\n audioChangedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.audioChangedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.AudioChangedEventData instance`;\n }\n };\n\n instanceStrict(eventData, AudioChangedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onAudioChanged(eventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.QualityOfService.SubtitleChangedEventData} eventData\n * @desc Trigger when the subtitle changes.\n *\n */\n subtitleChangedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.subtitleChangedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.SubtitleChangedEventData instance`;\n }\n };\n\n instanceStrict(eventData, SubtitleChangedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onSubtitleChanged(eventData);\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.QualityOfService.MasterPlaylistFetchedEventData} eventData\n * @since 4.0.0\n *\n */\n masterPlaylistFetchedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.masterPlaylistFetchedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.MasterPlaylistFetchedEventData instance`;\n }\n };\n\n instanceStrict(eventData, MasterPlaylistFetchedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onMasterPlaylistFetched(eventData);\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.QualityOfService.VariantPlaylistFetchedEventData} eventData\n * @since 4.0.0\n *\n */\n variantPlaylistFetchedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.variantPlaylistFetchedEvent(eventData)`,\n get eventData() {\n return `${this.method} needs SDK.QualityOfService.VariantPlaylistFetchedEventData instance`;\n }\n };\n\n instanceStrict(eventData, VariantPlaylistFetchedEventData, errorMessage.eventData, InvalidArgumentException);\n\n this.onVariantPlaylistFetched(eventData);\n\n }\n\n /**\n *\n * @access private\n * @since 3.2.0\n * @returns {Promise}\n *\n */\n attach() {\n\n const { drmProvider, framework } = this;\n\n if (Check.equal(drmProvider.type, DrmType.WIDEVINE)) {\n return this.attachDrm(Util.getSafe(() => framework.ContentProtection.WIDEVINE));\n }\n\n if (Check.equal(drmProvider.type, DrmType.PLAYREADY)) {\n return this.attachDrm(Util.getSafe(() => framework.ContentProtection.PLAYREADY));\n }\n\n return this.attachSilkDrm();\n\n }\n\n /**\n *\n * @access private\n * @since 3.2.0\n * @param {cast.framework.ContentProtection} protectionSystem\n * @throws {InvalidStateException} Unable to set playback configuration on NativePlayer\n * @returns {Promise}\n *\n */\n attachDrm(protectionSystem) {\n\n const errorMessage = {\n method: 'CafPlayerAdapter.attachDrm(protectionSystem)',\n get playbackConfiguration() {\n return `${this.method} unable to set playback configuration on NativePlayer`;\n }\n };\n\n const { nativePlayer, drmProvider } = this;\n\n try {\n\n /**\n *\n * @type {cast.framework.PlaybackConfig}\n * @desc A copy of the current player config\n *\n */\n const playbackConfig = this.getPlaybackConfig();\n\n playbackConfig.licenseUrl = drmProvider.licenseRequestUri;\n playbackConfig.protectionSystem = protectionSystem;\n\n // override license request handler to set credentials\n playbackConfig.licenseRequestHandler = (requestInfo) => {\n\n requestInfo.crossDomain = true;\n requestInfo.withCredentials = true;\n requestInfo.headers = drmProvider.processLicenseRequestHeaders() || {};\n\n };\n\n // set current player config\n nativePlayer.setPlaybackConfig(playbackConfig);\n\n return Promise.resolve();\n\n } catch (ex) {\n\n const reasons = [new ErrorReason('', `${errorMessage.playbackConfiguration} - ${ex}`)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n }\n\n /**\n *\n * @access private\n * @since 3.2.0\n * @throws {InvalidStateException} Unable to set playback configuration on NativePlayer\n * @returns {Promise}\n *\n */\n attachSilkDrm() {\n\n const errorMessage = {\n method: 'CafPlayerAdapter.attachSilkDrm()',\n get playbackConfiguration() {\n return `${this.method} unable to set playback configuration on NativePlayer`;\n }\n };\n\n const { nativePlayer, accessToken } = this;\n\n try {\n\n /**\n *\n * @type {cast.framework.PlaybackConfig}\n * @desc A copy of the current player config\n *\n */\n const playbackConfig = this.getPlaybackConfig();\n\n // override license request handler to set credentials\n playbackConfig.licenseRequestHandler = (requestInfo) => {\n requestInfo.withCredentials = true;\n requestInfo.headers = {};\n requestInfo.headers.Authorization = accessToken;\n };\n\n // set current player config\n nativePlayer.setPlaybackConfig(playbackConfig);\n\n return Promise.resolve();\n\n } catch (ex) {\n\n const reasons = [new ErrorReason('', `${errorMessage.playbackConfiguration} - ${ex}`)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n }\n\n /**\n *\n * @access private\n * @param {Array} audioSegmentTypes\n * @since 3.2.0\n * @returns {this}\n *\n */\n updateAudioSegmentFormat(audioSegmentTypes) {\n\n const { framework } = this;\n\n this.audioSegmentFormat = undefined;\n\n if (Check.nonEmptyArray(audioSegmentTypes)) {\n\n if (audioSegmentTypes.includes('FMP4')) {\n this.audioSegmentFormat = Util.getSafe(() => framework.messages.HlsSegmentFormat.FMP4);\n return this;\n }\n\n if (audioSegmentTypes.includes('PACKED_AUDIO')) {\n this.audioSegmentFormat = Util.getSafe(() => framework.messages.HlsSegmentFormat.TS_AAC);\n return this;\n }\n\n }\n\n return this;\n\n }\n\n /**\n *\n * @access private\n * @param {Array} videoSegmentTypes\n * @since 3.2.0\n * @returns {this}\n *\n */\n updateVideoSegmentFormat(videoSegmentTypes) {\n\n const { framework } = this;\n\n this.videoSegmentFormat = undefined;\n\n if (Check.nonEmptyArray(videoSegmentTypes)) {\n\n if (videoSegmentTypes.includes('FMP4')) {\n this.videoSegmentFormat = Util.getSafe(() => framework.messages.HlsVideoSegmentFormat.FMP4);\n return this;\n }\n\n if (videoSegmentTypes.includes('TS')) {\n this.videoSegmentFormat = Util.getSafe(() => framework.messages.HlsVideoSegmentFormat.MPEG2_TS);\n return this;\n }\n\n }\n\n return this;\n\n }\n\n /**\n *\n * @access private\n * @since 3.2.0\n * @returns {cast.framework.PlaybackConfig}\n *\n */\n getPlaybackConfig() {\n\n const { nativePlayer, framework } = this;\n\n return Object.assign(\n Check.function(nativePlayer.getPlaybackConfig) ? nativePlayer.getPlaybackConfig() || {} : {},\n new framework.PlaybackConfig()\n );\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {cast.framework.events.BufferingEvent} eventData\n * @desc Trigger when buffering starts or ends.\n *\n */\n rebufferingEvent(eventData) {\n\n if (eventData.isBuffering) {\n\n const rebufferingStartedEventData = new RebufferingStartedEventData();\n\n this.onRebufferingStarted(rebufferingStartedEventData);\n\n } else {\n\n const rebufferingEndedEventData = new RebufferingEndedEventData();\n\n this.onRebufferingEnded(rebufferingEndedEventData);\n\n }\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {cast.framework.events.MediaFinishedEvent} eventData\n * @desc Trigger when playback has been exited.\n *\n */\n playbackExitedEvent(eventData) {\n\n const { framework } = this;\n const { END_OF_STREAM, STOPPED, ERROR } = framework.events.EndedReason;\n const { endedReason, currentMediaTime } = eventData;\n\n let cause;\n\n switch (endedReason) {\n\n case END_OF_STREAM:\n cause = PlaybackExitedCause.playedToEnd;\n break;\n\n case STOPPED:\n cause = PlaybackExitedCause.user;\n break;\n\n case ERROR:\n cause = PlaybackExitedCause.error;\n break;\n\n }\n\n const playhead = currentMediaTime * 1000;\n\n const playbackExitedEventData = new PlaybackExitedEventData({ playhead, cause });\n\n this.onPlaybackExited(playbackExitedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {cast.framework.events.LoadEvent} eventData\n * @desc Trigger when playback has been initialized.\n *\n */\n playbackInitializedEvent(eventData) {\n\n const { media } = eventData;\n const { startAbsoluteTime } = media;\n\n let playhead;\n\n if (Check.assigned(startAbsoluteTime)) {\n playhead = startAbsoluteTime * 1000;\n }\n\n const playbackInitializedEventData = new PlaybackInitializedEventData({ playhead });\n\n this.onPlaybackInitialized(playbackInitializedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {cast.framework.events.MediaElementEvent} eventData\n * @desc Trigger when playback seeks.\n *\n */\n playbackSeekedEvent(eventData) {\n\n const { framework } = this;\n const { SEEKED, SEEKING } = framework.events.EventType;\n const { type, currentMediaTime } = eventData;\n\n const playhead = currentMediaTime * 1000;\n\n if (type === SEEKED) {\n\n const playbackSeekedEventData = new PlaybackSeekedEventData({ toPlayhead: playhead });\n\n this.onPlaybackSeeked(playbackSeekedEventData);\n\n }\n\n if (type === SEEKING) {\n\n const playbackSeekedEventData = new PlaybackSeekedEventData({ fromPlayhead: playhead });\n\n this.onPlaybackSeeked(playbackSeekedEventData);\n\n }\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {cast.framework.events.BitrateChangedEvent} eventData\n * @desc Trigger when the bitrate changes.\n *\n */\n bitrateChangedEvent(eventData) {\n\n try {\n this.currentBitrate = Math.round(eventData.totalBitrate / 1000);\n } catch (ex) {\n this.currentBitrate = null;\n }\n\n const bitrateChangedEventData = new BitrateChangedEventData({ bitrate: this.currentBitrate });\n\n this.onBitrateChanged(bitrateChangedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @desc Trigger when playback is ready.\n *\n */\n playbackReadyEvent() {\n\n const playbackReadyEventData = new PlaybackReadyEventData();\n\n this.onPlaybackReady(playbackReadyEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @desc Trigger when playback starts.\n *\n */\n playbackStartedEvent() {\n\n const playbackStartedEvent = new PlaybackStartedEventData();\n\n this.onPlaybackStarted(playbackStartedEvent);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @desc Trigger when playback gets paused.\n *\n */\n playbackPausedEvent() {\n\n const playbackPausedEventData = new PlaybackPausedEventData();\n\n this.onPlaybackPaused(playbackPausedEventData);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter/cafPlayerAdapter.js","/**\n *\n * @module bamHlsPlayerAdapter\n * @desc PlayerAdapter for bam-hls devices like smart tv's\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerEvents.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerProperties.md\n * @see https://github.bamtech.co/bam-hls/bam-hls.js/blob/production-drm/API.md\n * @see https://github.bamtech.co/bam-hls/bam-hls.js/blob/production-drm/API.md#drm-configuration\n * @see https://github.bamtech.co/bam-hls/bam-hls.js/blob/production-drm/demo/index.html\n * @see https://github.bamtech.co/bam-hls/bam-hls.js/blob/development/API.md\n *\n */\n\nimport Check from 'check-types';\n\nimport Logging from './../../logging/entry';\nimport Services from './../../services/entry';\nimport Drm from './../../drm/entry';\nimport PlayerAdapter from './../playerAdapter';\nimport PlaybackMetrics from './../playbackMetrics';\nimport PlaybackEventListener from './../playbackEventListener';\nimport Playlist from './../playlist';\nimport QualityOfService from './../../qualityOfService/entry';\n\nconst AudioChangedEventData = QualityOfService.AudioChangedEventData;\nconst BitrateChangedEventData = QualityOfService.BitrateChangedEventData;\nconst MasterPlaylistFetchedEventData = QualityOfService.MasterPlaylistFetchedEventData;\nconst PlaybackExitedEventData = QualityOfService.PlaybackExitedEventData;\nconst PlaybackInitializedEventData = QualityOfService.PlaybackInitializedEventData;\nconst PlaybackReadyEventData = QualityOfService.PlaybackReadyEventData;\nconst PlaybackResumedEventData = QualityOfService.PlaybackResumedEventData;\nconst PlaybackSeekedEventData = QualityOfService.PlaybackSeekedEventData;\nconst PlaybackStartedEventData = QualityOfService.PlaybackStartedEventData;\nconst PlaybackPausedEventData = QualityOfService.PlaybackPausedEventData;\nconst RebufferingEndedEventData = QualityOfService.RebufferingEndedEventData;\nconst RebufferingStartedEventData = QualityOfService.RebufferingStartedEventData;\nconst SubtitleChangedEventData = QualityOfService.SubtitleChangedEventData;\nconst VariantPlaylistFetchedEventData = QualityOfService.VariantPlaylistFetchedEventData;\nconst PlaybackExitedCause = QualityOfService.PlaybackExitedCause;\nconst PlaylistLiveType = QualityOfService.PlaylistLiveType;\nconst FetchStatus = QualityOfService.FetchStatus;\nconst ServerRequest = QualityOfService.ServerRequest;\n\nconst Util = Services.Util;\nconst DrmProvider = Drm.DrmProvider;\nconst DrmType = Services.Media.DrmType;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ServiceException = Services.Exception.ServiceException;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ErrorCode = Services.Exception.ErrorCode;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class BamHlsPlayerAdapter\n * @extends {SDK.Media.PlayerAdapter}\n * @desc Interface used to communicate with the media player.\n * @note BAM internal web player adapter\n *\n */\nexport default class BamHlsPlayerAdapter extends PlayerAdapter {\n\n /**\n *\n * @param {NativePlayer} nativePlayer An instance of the web-based bam-video-players\n * @throws {InvalidArgumentException}\n * @note The BamHlsPlayerAdapter requires nativePlayer.on && nativePlayer.off\n *\n */\n constructor(nativePlayer) {\n\n const errorMessage = {\n ctor: 'BamHlsPlayerAdapter(nativePlayer)',\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n }\n };\n\n const nativePlayerInstance = (function nativePlayerInstance() {\n return Check.assigned(nativePlayer) && Check.assigned(nativePlayer.on);\n }());\n\n Check.assert(nativePlayerInstance, errorMessage.nativePlayer, InvalidArgumentException);\n\n super(nativePlayer);\n\n const logger = Logging;\n\n /**\n *\n * @access public\n * @type {Array}\n * @desc Set of DRM providers\n *\n */\n this.drmProviders = [];\n\n /**\n *\n * @access private\n * @type {HlsStream}\n *\n */\n this.hlsStatic = this.nativePlayer.getClass();\n\n /**\n *\n * @access private\n * @type {HlsStream.Events}\n * @note Events enum\n *\n */\n this.Events = this.hlsStatic.Events;\n\n /**\n *\n * @access private\n * @type {HlsStream.States}\n * @note States Enum\n *\n */\n this.States = this.hlsStatic.States;\n\n /**\n *\n * @access private\n * @type {HlsStream.DataTypes}\n * @note DataTypes Enum\n *\n */\n this.DataTypes = this.hlsStatic.DataTypes;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Callback used when prepare has been called (usually via the {PlaybackSession}).\n * Sets the source URI on the {NativePlayer} instance.\n * @return {Promise}\n *\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: 'BamHlsPlayerAdapter.setSource(playlist)',\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n // only attempt to assign this if the user hasn't already done so when initializing bam-hls\n if (Check.not.assigned(this.nativePlayer.setupXhrCallback)) {\n this.setupXhrCallback();\n }\n\n return new Promise((resolve) => {\n\n this.playlistUri = playlist.streamUri;\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @desc Gets a snapshot of information about media playback.\n * @throws {SDK.Services.Exception.ServiceException} Unable to get NativePlayer playhead or bitrate data\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n * @note metric value is rounded down to prevent possible service issues with floats\n * @note executed by {PlaybackTelemetryDispatcher#recordStreamSample}\n * @note (chosenBitRate / 1000) - need to convert to Kbps\n *\n */\n getPlaybackMetrics() {\n\n const errorMessage = {\n method: 'BamHlsPlayerAdapter.getPlaybackMetrics()',\n get currentPlayhead() {\n return `${this.method} unable to get NativePlayer playhead data`;\n },\n get currentBitrate() {\n return `${this.method} unable to get NativePlayer bitrate data`;\n }\n };\n\n const { nativePlayer, unavailableMetric } = this;\n\n if (Check.not.function(nativePlayer.getNetworkMetrics)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentBitrate)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n if (Check.not.number(nativePlayer.currentTime)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentPlayhead)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n const currentBitrate = Math.floor(nativePlayer.getNetworkMetrics().chosenBitrate / 1000) || unavailableMetric;\n const currentPlayhead = Math.floor(nativePlayer.currentTime) || unavailableMetric;\n\n return Promise.resolve(new PlaybackMetrics({ currentBitrate, currentPlayhead }));\n\n }\n\n /**\n *\n * @access private\n * @desc Gets a snapshot of information about media playback.\n * @returns {SDK.Media.PlaybackMetrics} - instance that contains a snapshot of information about media playback.\n * @note This is similar to getPlaybackMetrics but can be called synchronously. The intention is to replace\n * getPlaybackMetrics with this version at some point.\n * @note metric value is rounded down to prevent possible service issues with floats\n * @note (chosenBitRate / 1000) - need to convert to Kbps\n *\n */\n getPlaybackMetricsSync() {\n\n const errorMessage = {\n method: 'BamHlsPlayerAdapter.getPlaybackMetricsSync()',\n get currentPlayhead() {\n return `${this.method} unable to get NativePlayer playhead data`;\n },\n get currentBitrate() {\n return `${this.method} unable to get NativePlayer bitrate data`;\n }\n };\n\n const { nativePlayer, unavailableMetric } = this;\n const { currentTime } = nativePlayer;\n\n let currentPlayhead;\n let currentBitrate;\n\n if (Check.not.number(currentTime)) {\n this.logger.warn(BamHlsPlayerAdapter.name, errorMessage.currentPlayhead);\n } else {\n currentPlayhead = Math.floor(currentTime) || unavailableMetric;\n }\n\n if (Check.not.function(nativePlayer.getNetworkMetrics)) {\n this.logger.warn(BamHlsPlayerAdapter.name, errorMessage.currentBitrate);\n } else {\n currentBitrate = Math.floor(nativePlayer.getNetworkMetrics().chosenBitrate / 1000) || unavailableMetric;\n }\n\n return new PlaybackMetrics({ currentBitrate, currentPlayhead });\n\n }\n\n /**\n *\n * @access private\n * @param {Object} exception - the exception object that bam-hls throws\n * @note exception.cause will be one value from the DRM section of this list:\n * https://github.bamtech.co/bam-hls/bam-hls.js/blob/master/src/hlsjs/errors.js\n * @desc Converts a bam-hls error to an error case object\n * @returns {Object} Associated error case for the given bam-hls error\n *\n */\n constructErrorCaseFromBamHlsError(exception) {\n\n const bamHlsError = exception.cause;\n\n let errorCode;\n\n switch (bamHlsError) {\n case 'drmLicenseRequestFailed':\n errorCode = ErrorCode.authorizationExpired;\n break;\n case 'drmLicenseExpired':\n errorCode = ErrorCode.invalidGrant;\n break;\n case 'drmHdcpError':\n errorCode = ErrorCode.mediaNotPlayable;\n break;\n case 'drmEmeMissing':\n errorCode = ErrorCode.mediaNotPlayable;\n break;\n case 'drmCdmInternalError':\n errorCode = ErrorCode.mediaNotPlayable;\n break;\n case 'drmNoSupportedKeySystem':\n errorCode = ErrorCode.mediaNotPlayable;\n break;\n case 'drmNoSupportedKeySystemConfiguration':\n errorCode = ErrorCode.unspecifiedDrmError;\n break;\n case 'drmEncryptionSchemeNotSupported':\n errorCode = ErrorCode.mediaNotPlayable;\n break;\n case 'drmVariantKeySystemMissing':\n errorCode = ErrorCode.keyNotFound;\n break;\n case 'drmMediakeysChangeFail':\n errorCode = ErrorCode.unspecifiedDrmError;\n break;\n case 'drmMultipleSessionsNotSupported':\n errorCode = ErrorCode.unspecifiedDrmError;\n break;\n case 'drmEmptyLicenseRequest':\n errorCode = ErrorCode.unspecifiedDrmError;\n break;\n default:\n errorCode = ErrorCode.unspecifiedDrmError;\n }\n\n const { code, exceptionData } = errorCode;\n const reasons = [new ErrorReason(code, null)];\n const errorCase = new ServiceException({ reasons, exceptionData });\n\n return errorCase;\n\n }\n\n /**\n *\n * @access private\n * @param {String} url - the URL to parse\n * @desc Parses the host and path components from a URL\n * @returns {Object} An Object containng the host and path values\n *\n */\n parseUrl(url) {\n\n let host;\n let path;\n\n if (Check.nonEmptyString(url)) {\n const urlRegex = '^(.*:)//?([www.]+)*([A-Za-z0-9-.]+)(:[0-9]+)?(.*)$';\n const regex = new RegExp(urlRegex, 'g');\n const parsedUrl = regex.exec(url);\n\n if (Check.nonEmptyArray(parsedUrl)) {\n host = parsedUrl[3];\n path = parsedUrl[5].split('?')[0];\n }\n }\n\n return {\n host,\n path\n };\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.PlaybackEventListener} listener\n * @throws {SDK.Services.Exception.ServiceException} Unable to add PlaybackEventListener\n * @emits {MediaFailure}\n * @returns {Promise}\n * @note messageDetailed is the error message pre-formatted with error, message and cause\n * from bam-hls STREAM_ERROR event\n *\n */\n addListener(listener) {\n\n const errorMessage = {\n method: 'BamHlsPlayerAdapter.addListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get addListener() {\n return `${this.method} unable to add PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer, boundHandlers, Events, failureEvent } = this;\n const { playbackStartedEvent, playbackPausedEvent, playbackResumedEvent, playbackInitializedEvent } = this;\n const { playbackReadyEvent, playbackSeekedEvent, bitrateChangedEvent, playbackExitedEvent } = this;\n const { rebufferingStartedEvent, rebufferingEndedEvent, subtitleChangedEvent } = this;\n const { masterPlaylistFetchedEvent, variantPlaylistFetchedEvent, audioChangedEvent } = this;\n const { PLAYBACK_PLAYING, PLAYBACK_PAUSED, STREAM_STATE_CHANGED, STREAM_PLAYBACK } = Events;\n const { STREAM_CANPLAYTHROUGH, PLAYBACK_SEEKING, STREAM_VARIANTS_CHANGED, PLAYBACK_ENDED } = Events;\n const { STREAM_BUFFERING_STARTED, STREAM_BUFFERING_FINISHED, STREAM_CURRENTSUBTITLERENDITION_CHANGED } = Events;\n const { MANIFEST_LOADED, VARIANT_UPDATED, STREAM_CURRENTAUDIOTRACK_CHANGED, STREAM_ERROR } = Events;\n\n return new Promise((resolve, reject) => {\n\n if (Check.assigned(nativePlayer.on)) {\n\n this.listener = listener;\n\n boundHandlers.playbackStartedEvent = playbackStartedEvent.bind(this);\n boundHandlers.playbackPausedEvent = playbackPausedEvent.bind(this);\n boundHandlers.playbackResumedEvent = playbackResumedEvent.bind(this);\n boundHandlers.playbackInitializedEvent = playbackInitializedEvent.bind(this);\n boundHandlers.playbackReadyEvent = playbackReadyEvent.bind(this);\n boundHandlers.playbackSeekedEvent = playbackSeekedEvent.bind(this);\n boundHandlers.bitrateChangedEvent = bitrateChangedEvent.bind(this);\n boundHandlers.playbackExitedEvent = playbackExitedEvent.bind(this);\n boundHandlers.rebufferingStartedEvent = rebufferingStartedEvent.bind(this);\n boundHandlers.rebufferingEndedEvent = rebufferingEndedEvent.bind(this);\n boundHandlers.subtitleChangedEvent = subtitleChangedEvent.bind(this);\n boundHandlers.audioChangedEvent = audioChangedEvent.bind(this);\n boundHandlers.masterPlaylistFetchedEvent = masterPlaylistFetchedEvent.bind(this);\n boundHandlers.variantPlaylistFetchedEvent = variantPlaylistFetchedEvent.bind(this);\n\n boundHandlers.onStreamError = (ex = {}) => {\n\n const { fatal = false, messageDetailed = STREAM_ERROR } = ex;\n\n if (fatal && ex.error === 'DRM_FAILED') {\n\n const errorCase = this.constructErrorCaseFromBamHlsError(ex);\n\n this.emit(failureEvent, errorCase);\n\n return boundHandlers.playbackExitedEvent.call(this, errorCase);\n\n } else if (fatal && Check.assigned(this.listener)) {\n\n return boundHandlers.playbackExitedEvent.call(this, messageDetailed);\n\n } else {\n\n return undefined;\n\n }\n\n };\n\n nativePlayer.on(PLAYBACK_PLAYING, boundHandlers.playbackStartedEvent);\n nativePlayer.on(PLAYBACK_PAUSED, boundHandlers.playbackPausedEvent);\n nativePlayer.on(STREAM_STATE_CHANGED, boundHandlers.playbackResumedEvent);\n nativePlayer.on(STREAM_PLAYBACK, boundHandlers.playbackInitializedEvent);\n nativePlayer.on(STREAM_CANPLAYTHROUGH, boundHandlers.playbackReadyEvent);\n nativePlayer.on(PLAYBACK_SEEKING, boundHandlers.playbackSeekedEvent);\n nativePlayer.on(STREAM_VARIANTS_CHANGED, boundHandlers.bitrateChangedEvent);\n nativePlayer.on(PLAYBACK_ENDED, boundHandlers.playbackExitedEvent);\n nativePlayer.on(STREAM_BUFFERING_STARTED, boundHandlers.rebufferingStartedEvent);\n nativePlayer.on(STREAM_BUFFERING_FINISHED, boundHandlers.rebufferingEndedEvent);\n nativePlayer.on(STREAM_CURRENTSUBTITLERENDITION_CHANGED, boundHandlers.subtitleChangedEvent);\n nativePlayer.on(STREAM_CURRENTAUDIOTRACK_CHANGED, boundHandlers.audioChangedEvent);\n nativePlayer.on(MANIFEST_LOADED, boundHandlers.masterPlaylistFetchedEvent);\n nativePlayer.on(VARIANT_UPDATED, boundHandlers.variantPlaylistFetchedEvent);\n nativePlayer.on(STREAM_ERROR, boundHandlers.onStreamError);\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.addListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.PlaybackEventListener} listener\n * @throws {SDK.Services.Exception.ServiceException} Unable to remove PlaybackEventListener\n * @returns {Promise}\n *\n */\n removeListener(listener) {\n\n const errorMessage = {\n method: 'BamHlsPlayerAdapter.removeListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get removeListener() {\n return `${this.method} unable to remove PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer, boundHandlers, Events } = this;\n const { PLAYBACK_PLAYING, PLAYBACK_PAUSED, STREAM_STATE_CHANGED, STREAM_PLAYBACK } = Events;\n const { STREAM_CANPLAYTHROUGH, PLAYBACK_SEEKING, STREAM_VARIANTS_CHANGED, PLAYBACK_ENDED } = Events;\n const { STREAM_BUFFERING_STARTED, STREAM_BUFFERING_FINISHED, STREAM_CURRENTSUBTITLERENDITION_CHANGED } = Events;\n const { MANIFEST_LOADED, VARIANT_UPDATED, STREAM_CURRENTAUDIOTRACK_CHANGED } = Events;\n\n if (Check.assigned(nativePlayer.off) && Check.equal(this.listener, listener)) {\n\n this.listener = null;\n\n nativePlayer.off(PLAYBACK_PLAYING, boundHandlers.playbackStartedEvent);\n nativePlayer.off(PLAYBACK_PAUSED, boundHandlers.playbackPausedEvent);\n nativePlayer.off(STREAM_STATE_CHANGED, boundHandlers.playbackResumedEvent);\n nativePlayer.off(STREAM_PLAYBACK, boundHandlers.playbackInitializedEvent);\n nativePlayer.off(STREAM_CANPLAYTHROUGH, boundHandlers.playbackReadyEvent);\n nativePlayer.off(PLAYBACK_SEEKING, boundHandlers.playbackSeekedEvent);\n nativePlayer.off(STREAM_VARIANTS_CHANGED, boundHandlers.bitrateChangedEvent);\n nativePlayer.off(PLAYBACK_ENDED, boundHandlers.playbackExitedEvent);\n nativePlayer.off(STREAM_BUFFERING_STARTED, boundHandlers.rebufferingStartedEvent);\n nativePlayer.off(STREAM_BUFFERING_FINISHED, boundHandlers.rebufferingEndedEvent);\n nativePlayer.off(STREAM_CURRENTSUBTITLERENDITION_CHANGED, boundHandlers.subtitleChangedEvent);\n nativePlayer.off(STREAM_CURRENTAUDIOTRACK_CHANGED, boundHandlers.audioChangedEvent);\n nativePlayer.off(MANIFEST_LOADED, boundHandlers.masterPlaylistFetchedEvent);\n nativePlayer.off(VARIANT_UPDATED, boundHandlers.variantPlaylistFetchedEvent);\n\n }\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @throws {SDK.Services.Exception.ServiceException} This playerAdapter needs multiple SDK.Drm.DrmProvider instances, please\n * use BamHlsPlayerAdapter#setDrmProviders(drmProviders) which takes in an Array of SDK.Drm>DrmProvider instances\n *\n */\n setDrmProvider(drmProvider) { // eslint-disable-line\n\n const errorMessage = {\n method: 'BamHlsPlayerAdapter.setDrmProvider(drmProvider)',\n get multipleDrmProviders() {\n return `${this.method} - this playerAdapter needs multiple SDK.Drm.DrmProvider instances, please use BamHlsPlayerAdapter#setDrmProviders(drmProviders) which takes in an Array of SDK.Drm.DrmProvider instances`; // eslint-disable-line max-len\n }\n };\n\n const reasons = [new ErrorReason('', errorMessage.multipleDrmProviders)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n /**\n *\n * @access public\n * @param {Array} drmProviders\n * @note filters out unsupported drm keys before creating the drm configuration object\n * @returns {Promise}\n *\n */\n setDrmProviders(drmProviders) {\n\n const errorMessage = {\n method: 'BamHlsPlayerAdapter.setDrmProviders(drmProviders)',\n get drmProviders() {\n return `${this.method} needs Array of SDK.Drm.DrmProvider`;\n }\n };\n\n array.of.instanceStrict(drmProviders, DrmProvider, errorMessage.drmProviders, InvalidArgumentException);\n\n const { nativePlayer, setDrmConfiguration } = this;\n\n this.drmProviders = drmProviders;\n\n return nativePlayer.getDrmCapabilities().then((drmCapabilities) => {\n\n const { keySystems } = drmCapabilities;\n\n let drmProvidersIndex = drmProviders.length;\n\n while (drmProvidersIndex--) {\n\n if (!Util.getSafe(() => keySystems[drmProviders[drmProvidersIndex].type].supported)) { // eslint-disable-line\n drmProviders.splice(drmProvidersIndex, 1);\n }\n\n }\n\n nativePlayer.drmConfiguration = setDrmConfiguration.bind(this)();\n\n return Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n * @returns {Promise}\n *\n */\n clean() {\n\n const { listener, nativePlayer, boundHandlers, Events } = this;\n const { PLAYBACK_PLAYING, PLAYBACK_PAUSED, STREAM_STATE_CHANGED, STREAM_PLAYBACK } = Events;\n const { STREAM_CANPLAYTHROUGH, PLAYBACK_SEEKING, STREAM_VARIANTS_CHANGED, PLAYBACK_ENDED } = Events;\n const { STREAM_BUFFERING_STARTED, STREAM_BUFFERING_FINISHED, STREAM_CURRENTAUDIOTRACK_CHANGED } = Events;\n const { MANIFEST_LOADED, VARIANT_UPDATED, STREAM_CURRENTSUBTITLERENDITION_CHANGED } = Events;\n\n if (Check.assigned(nativePlayer.off)) {\n\n nativePlayer.off(PLAYBACK_PLAYING, boundHandlers.playbackStartedEvent);\n nativePlayer.off(PLAYBACK_PAUSED, boundHandlers.playbackPausedEvent);\n nativePlayer.off(STREAM_STATE_CHANGED, boundHandlers.playbackResumedEvent);\n nativePlayer.off(STREAM_PLAYBACK, boundHandlers.playbackInitializedEvent);\n nativePlayer.off(STREAM_CANPLAYTHROUGH, boundHandlers.playbackReadyEvent);\n nativePlayer.off(PLAYBACK_SEEKING, boundHandlers.playbackSeekedEvent);\n nativePlayer.off(STREAM_VARIANTS_CHANGED, boundHandlers.bitrateChangedEvent);\n nativePlayer.off(PLAYBACK_ENDED, boundHandlers.playbackExitedEvent);\n nativePlayer.off(STREAM_BUFFERING_STARTED, boundHandlers.rebufferingStartedEvent);\n nativePlayer.off(STREAM_BUFFERING_FINISHED, boundHandlers.rebufferingEndedEvent);\n nativePlayer.off(STREAM_CURRENTSUBTITLERENDITION_CHANGED, boundHandlers.subtitleChangedEvent);\n nativePlayer.off(STREAM_CURRENTAUDIOTRACK_CHANGED, boundHandlers.audioChangedEvent);\n nativePlayer.off(MANIFEST_LOADED, boundHandlers.masterPlaylistFetchedEvent);\n nativePlayer.off(VARIANT_UPDATED, boundHandlers.variantPlaylistFetchedEvent);\n\n }\n\n this.playlistUri = '';\n this.boundHandlers = {};\n this.drmProvider = null;\n this.drmProviders = [];\n\n if (Check.assigned(listener)) {\n return this.removeListener(listener);\n }\n\n return Promise.resolve();\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc sets bam-hls.xhrSetupCallback to ensure a proper accessToken is passed on xhr requests\n * @note in the event of an AdEngine request we want to make `withCredentials=true` in case any platforms are\n * relying on cookies - not all platforms can support the `ssess` header\n *\n */\n setupXhrCallback() {\n\n const { nativePlayer, accessToken, DataTypes, adEngineData = {} } = this;\n const { ssess } = adEngineData;\n\n nativePlayer.xhrSetupCallback = (xhr, url, type) => {\n\n const isKeyCall = type === DataTypes.KEY;\n const isAdEngineCall = Util.adEngineRegex(url) && type === DataTypes.CHUNK;\n\n xhr.withCredentials = false; // Ensure no false positive from any cookies\n\n if (!xhr.readyState) {\n xhr.open('GET', url, true);\n }\n\n if (isKeyCall) {\n\n xhr.setRequestHeader('Authorization', accessToken);\n\n } else if (isAdEngineCall && Check.assigned(ssess)) {\n\n xhr.withCredentials = true;\n xhr.setRequestHeader('ssess', ssess);\n\n }\n\n };\n\n }\n\n /**\n *\n * @access private\n * @desc The DRM Configuration contains an array of key system configurations, one for\n * each supported key system. At a minimum, the key system configuration specifies\n * the key system, and a method to acquire a license, either a uri or a callback function.\n *\n * If a callback is provided, then the license request uri is optional, and would be available to the callback.\n * If no callback is provided, then the licenseRequestUri is not optional.\n *\n * @note licenseRequestHeaders expects a name/value set,\n * i.e. [{name: 'Content-Type', value: 'application/octet-stream'}]\n * @note serverCertifcate is mandatory for FAIRPLAY and recommended for WIDEVINE\n * @note serverCertificate is expected to be a Promise or BufferSource\n * @see https://github.bamtech.co/bam-hls/bam-hls.js/blob/master/API.md#keysystemconfiguration\n * @returns {Object}\n *\n */\n setDrmConfiguration() {\n\n const { drmProviders } = this;\n\n const keySystems = [];\n\n for (const drmProvider of drmProviders) {\n\n const keySystem = drmProvider.type;\n const licenseRequestUri = Util.getSafe(() => drmProvider.licenseRequestUri);\n\n keySystems.push({\n keySystem,\n licenseRequestUri,\n licenseRequestHeadersCallback: () => drmProvider.formatRequestHeadersList(\n drmProvider.processLicenseRequestHeaders()\n ),\n /**\n *\n * @note bam-hls calls `Promise.resolve(this._keySystemConfig.serverCertificate)`\n * where serverCertificate is a reference to this function, in EME.js.\n * We need to use an IIFE here so we setup a promise since they are not executing this function\n * only expecting a Promise(cert), Promise(undefined), cert or undefined\n *\n */\n serverCertificate: (() => {\n\n if (keySystem === DrmType.FAIRPLAY) {\n return drmProvider.getFairPlayCertificate();\n } else if (keySystem === DrmType.WIDEVINE) {\n return drmProvider.getWidevineCertificate();\n }\n\n // bam-hls expects undefined so they don't attempt to process this as a certificate\n return Promise.resolve(undefined);\n\n })()\n });\n\n }\n\n return {\n keySystems\n };\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @note Handles the PLAYBACK_PLAYING event\n *\n */\n playbackStartedEvent() {\n\n const playbackStartedEventData = new PlaybackStartedEventData();\n\n this.onPlaybackStarted(playbackStartedEventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @note Handles the PLAYBACK_PAUSED event\n *\n */\n playbackPausedEvent() {\n\n const playbackPausedEventData = new PlaybackPausedEventData();\n\n this.onPlaybackPaused(playbackPausedEventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @note Handles the STREAM_STATE_CHANGED event\n *\n */\n playbackResumedEvent() {\n\n const playbackResumedEventData = new PlaybackResumedEventData();\n\n this.onPlaybackResumed(playbackResumedEventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @note Handles the STREAM_PLAYBACK event\n */\n playbackInitializedEvent() {\n\n const { nativePlayer } = this;\n const { subtitleRenditions = [], areSubtitlesEnabled = false, currentSubtitleRendition } = nativePlayer;\n const { audioTracks = [], variants = [], currentAudioTrack = 0, startBitrate } = nativePlayer;\n\n const subtitleRendition = subtitleRenditions[currentSubtitleRendition] || {};\n\n const { name: subtitleName, language: subtitleLanguage } = subtitleRendition;\n\n const chosenVariant = nativePlayer.getNetworkMetrics().chosenVariant;\n const variant = variants[chosenVariant] || {};\n\n const { audioCodec = [], videoCodec } = variant;\n\n const codec = audioCodec.join() || null;\n\n const audioTrack = audioTracks[currentAudioTrack] || {};\n\n const { name: audioName, language: audioLanguage } = audioTrack;\n\n const options = {\n audioChannels: audioTracks.length,\n audioCodec: codec,\n audioLanguage,\n audioName,\n startBitrate,\n subtitleLanguage,\n subtitleName,\n subtitleVisibility: areSubtitlesEnabled,\n videoCodec\n };\n\n const playbackInitializedEventData = new PlaybackInitializedEventData(options);\n\n this.onPlaybackInitialized(playbackInitializedEventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @note Handles the STREAM_CANPLAYTHROUGH event\n *\n */\n playbackReadyEvent() {\n\n const playbackReadyEventData = new PlaybackReadyEventData();\n\n this.onPlaybackReady(playbackReadyEventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @note Handles the PLAYBACK_SEEKING event\n *\n */\n playbackSeekedEvent() {\n\n const playbackMetrics = this.getPlaybackMetricsSync();\n\n const { currentPlayhead } = playbackMetrics;\n\n const options = {\n toPlayhead: currentPlayhead\n };\n\n this.onPlaybackSeeked(new PlaybackSeekedEventData(options));\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @note Handles the STREAM_VARIANTS_CHANGED event\n * @note bitrateType is not included in the BitrateChangedEventData because there is no way to determine its origin\n * based on how the manifest is parsed.\n *\n */\n bitrateChangedEvent() {\n\n const playbackMetrics = this.getPlaybackMetricsSync();\n\n const { currentBitrate } = playbackMetrics;\n\n const options = {\n bitrate: currentBitrate\n };\n\n this.onBitrateChanged(new BitrateChangedEventData(options));\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {Object} [error]\n * @note Handles the PLAYBACK_ENDED and STREAM_ERROR events\n *\n */\n playbackExitedEvent(error) {\n\n const { nativePlayer } = this;\n const { isEnded } = nativePlayer;\n\n const playbackMetrics = this.getPlaybackMetricsSync();\n\n const { currentPlayhead } = playbackMetrics;\n\n let cause;\n\n if (Check.assigned(error)) {\n cause = PlaybackExitedCause.error;\n } else if (isEnded) {\n cause = PlaybackExitedCause.playedToEnd;\n } else {\n cause = PlaybackExitedCause.user;\n }\n\n const options = {\n cause,\n playhead: currentPlayhead\n };\n\n this.onPlaybackExited(new PlaybackExitedEventData(options));\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @note Handles the STREAM_BUFFERING_STARTED event\n *\n */\n rebufferingStartedEvent() {\n\n const rebufferingStartedEventData = new RebufferingStartedEventData();\n\n this.onRebufferingStarted(rebufferingStartedEventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @note Handles the STREAM_BUFFERING_FINISHED event\n *\n */\n rebufferingEndedEvent() {\n\n const rebufferingEndedEventData = new RebufferingEndedEventData();\n\n this.onRebufferingEnded(rebufferingEndedEventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {Object} eventData\n * @note Handles the STREAM_CURRENTSUBTITLERENDITION_CHANGED event\n *\n */\n subtitleChangedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.subtitleChangedEvent()`,\n get eventData() {\n return `${this.method} event data should be an Object`;\n }\n };\n\n const { nativePlayer } = this;\n const { subtitleRenditions = [], areSubtitlesEnabled = false } = nativePlayer;\n\n let options;\n\n if (Check.not.object(eventData)) {\n\n this.logger.warn(BamHlsPlayerAdapter.name, errorMessage.eventData);\n\n } else {\n\n const { currentSubtitleRendition } = eventData;\n\n const subtitleRendition = subtitleRenditions[currentSubtitleRendition] || {};\n\n const { name, language } = subtitleRendition;\n\n options = {\n subtitleLanguage: language,\n subtitleName: name,\n subtitleVisibility: areSubtitlesEnabled\n };\n\n }\n\n const subtitleChangedEventData = new SubtitleChangedEventData(options);\n\n this.onSubtitleChanged(subtitleChangedEventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {Object} eventData\n * @note Handles the STREAM_CURRENTAUDIOTRACK_CHANGED event\n * @note If the chosen variant contains more than one audio codec then the audioCodec array is converted to a\n * comma-separated list before passing it to the AudioChangedEventData constructor.\n *\n */\n audioChangedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.audioChangedEvent()`,\n get eventData() {\n return `${this.method} event data should be an Object`;\n }\n };\n\n const { nativePlayer } = this;\n const { audioTracks = [], variants = [] } = nativePlayer;\n\n let options;\n\n if (Check.not.object(eventData)) {\n\n this.logger.warn(BamHlsPlayerAdapter.name, errorMessage.eventData);\n\n } else {\n\n const { currentAudioTrack } = eventData;\n\n const audioTrack = audioTracks[currentAudioTrack] || {};\n\n const { name, language } = audioTrack;\n\n const chosenVariant = nativePlayer.getNetworkMetrics().chosenVariant;\n const variant = variants[chosenVariant] || {};\n\n const { audioCodec = [] } = variant;\n\n const codec = audioCodec.join() || null;\n\n options = {\n audioChannels: audioTracks.length,\n audioCodec: codec,\n audioLanguage: language,\n audioName: name\n };\n\n }\n\n const audioChangedEventData = new AudioChangedEventData(options);\n\n this.onAudioChanged(audioChangedEventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {Object} eventData\n * @note Handles the MANIFEST_LOADED event\n *\n */\n masterPlaylistFetchedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.subtitleChangedEvent()`,\n get eventData() {\n return `${this.method} event data should be an Object`;\n }\n };\n\n const { nativePlayer } = this;\n const { isLive, isSlidingWindow } = nativePlayer;\n\n let options;\n\n if (Check.not.object(eventData)) {\n\n this.logger.warn(BamHlsPlayerAdapter.name, errorMessage.eventData);\n\n } else {\n\n const { requestSynopsis = {} } = eventData;\n const { url } = requestSynopsis;\n const { host, path } = this.parseUrl(url);\n\n const offline = false;\n\n let liveType;\n\n if (isLive) {\n liveType = isSlidingWindow ? PlaylistLiveType.sliding : PlaylistLiveType.event;\n }\n\n const serverRequest = new ServerRequest({\n host,\n path,\n status: FetchStatus.completed\n });\n\n options = {\n offline,\n liveType,\n serverRequest\n };\n\n }\n\n const masterPlaylistFetchedEventData = new MasterPlaylistFetchedEventData(options);\n\n this.onMasterPlaylistFetched(masterPlaylistFetchedEventData);\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {Object} eventData\n * @note Handles the VARIANT_UPDATED event\n * @note The VariantPlaylistFetchedEventData.serverRequest.status is only set if there were no errors loading\n * the variant, e.g. nativePlayer.variants[eventData.level].loadError = 0. The status is not set if loadError > 0\n * because the nativePlayer does not expose the reason for the errors.\n *\n */\n variantPlaylistFetchedEvent(eventData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.subtitleChangedEvent()`,\n get eventData() {\n return `${this.method} event data should be an Object`;\n }\n };\n\n const { nativePlayer } = this;\n const { variants = [] } = nativePlayer;\n\n let options;\n\n if (Check.not.object(eventData)) {\n\n this.logger.warn(BamHlsPlayerAdapter.name, errorMessage.eventData);\n\n } else {\n\n const { level, details = {} } = eventData;\n\n const variant = variants[level] || {};\n\n const { attrs = {}, loadError } = variant;\n\n const { BANDWIDTH: bandwidth, CHANNELS: channels, NAME: name } = attrs;\n const { LANGUAGE: language, RESOLUTION: resolution } = attrs;\n\n const averageBandwidth = attrs['AVERAGE-BANDWIDTH'];\n\n const { url } = details;\n const { host, path } = this.parseUrl(url);\n\n const status = loadError === 0 ? FetchStatus.completed : null;\n const offline = false;\n\n const serverRequest = new ServerRequest({\n host,\n path,\n status\n });\n\n options = {\n offline,\n averageBandwidth,\n bandwidth,\n channels,\n name,\n language,\n resolution,\n serverRequest\n };\n\n }\n\n const variantPlaylistFetchedEventData = new VariantPlaylistFetchedEventData(options);\n\n this.onVariantPlaylistFetched(variantPlaylistFetchedEventData);\n\n }\n\n /**\n *\n * @access public\n * @desc Completes the cleanup process by completely cleaning up all `PlayerAdapter`\n * references. This method should be executed by the application developer\n * when they no longer need to use a `PlayerAdapter` instance.\n * @note Because `clean` is automatically called by the `PlaybackSession` instance,\n * another method is necessary to handle the use case of an application developer who\n * wants to continue using a `PlayerAdapter` instance after a `PlaybackSession` has been released.\n * @returns {Promise}\n *\n */\n dispose() {\n\n this.nativePlayer = null;\n this.accessToken = null;\n\n return Promise.resolve();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter/bamHlsPlayerAdapter.js","/**\n *\n * @module generatePlaybackScenario\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\nimport AdInsertionStrategy from './adInsertionStrategy';\nimport SupportedCodec from './supportedCodec';\nimport HdrType from './hdrType';\nimport WidevineSecurityLevel from './widevineSecurityLevel';\nimport AudioQuality from './audioQuality';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean,\n string,\n array,\n nonEmptyObject,\n nonEmptyString,\n includes\n} = Check.assert;\n\nexport default class GeneratePlaybackScenario {\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @desc Determines if atmos sound should be used in the playback scenario\n * @param {SDK.Media.AudioQuality} preferredAudioQuality\n * @param {Boolean} supportsAtmos\n * @note The type check purposefully doesn't match the error message since the error message should encourage devs\n * to use the enum. However the type checking should be more relaxed and allow any string since the if statement\n * will simply fail.\n * @returns {String}\n *\n */\n static determineAudioQuality(preferredAudioQuality, supportsAtmos) {\n\n const errorMessage = {\n method: 'GeneratePlaybackScenario.determineAudioQuality(preferredAudioQuality, supportsAtmos)',\n get preferredAudioQuality() {\n return `${this.method} preferredAudioQuality should be a value in SDK.Media.AudioQuality`;\n },\n get supportsAtmos() {\n return `${this.method} supportsAtmos should be a Boolean`;\n }\n };\n\n if (Check.assigned(preferredAudioQuality)) {\n string(preferredAudioQuality, errorMessage.preferredAudioQuality, InvalidArgumentException);\n }\n\n boolean(supportsAtmos, errorMessage.supportsAtmos, InvalidArgumentException);\n\n if (preferredAudioQuality === AudioQuality.atmos && supportsAtmos) {\n return '-atmos';\n }\n\n return '';\n\n }\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @desc Adds the correct ad insertion strategy to the playback scenario if needed\n * @param {SDK.Media.AdInsertionStrategy} adInsertionStrategy\n * @returns {String}\n *\n */\n static determineAdInsertionStrategy(adInsertionStrategy) {\n\n const errorMessage = {\n method: 'GeneratePlaybackScenario.determineAdInsertionStrategy(adInsertionStrategy)',\n get adInsertionStrategy() {\n return `${this.method} adInsertionStrategy should be a member of SDK.Media.AdInsertionStrategy`;\n }\n };\n\n includes(AdInsertionStrategy, adInsertionStrategy, errorMessage.adInsertionStrategy, InvalidArgumentException);\n\n if (adInsertionStrategy === AdInsertionStrategy.CSAI) {\n return '~csai';\n } else if (adInsertionStrategy === AdInsertionStrategy.SSAI) {\n return '~ssai';\n }\n\n return '';\n\n }\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @desc Adds the correct codec to the playback scenario if it can be supported\n * @param {Array} supportedCodecs\n * @returns {String}\n *\n */\n static determineCodecSupport(supportedCodecs) {\n\n const errorMessage = {\n method: 'GeneratePlaybackScenario.determineCodecSupport(supportedCodecs)',\n get supportedCodecs() {\n return `${this.method} supportedCodecs should be an Array of SDK.Media.SupportedCodec`;\n }\n };\n\n array(supportedCodecs, errorMessage.supportedCodecs, InvalidArgumentException);\n\n if (supportedCodecs.includes(SupportedCodec.h265)) {\n return '-h265';\n }\n\n return '';\n\n }\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @desc Adds the correct hdr type to the playback scenario if it can be supported\n * @param {Array} supportedHdrTypes\n * @returns {String}\n *\n */\n static determineHdrSupport(supportedHdrTypes) {\n\n const errorMessage = {\n method: 'GeneratePlaybackScenario.determineHdrSupport(supportedHdrTypes)',\n get supportedHdrTypes() {\n return `${this.method} supportedHdrTypes should be an Array of SDK.Media.HdrType`;\n }\n };\n\n array(supportedHdrTypes, errorMessage.supportedHdrTypes, InvalidArgumentException);\n\n if (supportedHdrTypes.includes(HdrType.dolbyVision)) {\n return '-dovi';\n } else if (supportedHdrTypes.includes(HdrType.hdr10)) {\n return '-hdr10';\n }\n\n return '';\n\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @desc Determines if the device qualifies for a higher quality stream\n * @param {Object} options\n * @param {Boolean} options.isSecurityCheckRequired - Config driven value that determines if the device needs to\n * meet the specified security level\n * @param {SDK.Media.WidevineSecurityLevel} [options.minimumSecurityLevel] - Config driven value that determines the\n * minimumSecurityLevel needed for high quality streams\n * @param {SDK.Media.WidevineSecurityLevel} [options.deviceWidevineSecurityLevel] - MediaCapabilitiesProvider driven\n * value that represents the drm level the device can support\n * @param {String} options.restrictedPlaybackScenario - Config driven value representing a\n * restrictedPlaybackScenario for devices that could get a partial high quality stream\n * @note `restrictedPlaybackScenario` is not type checked since the parameters' existence is only used and not its\n * value\n * @returns {Boolean}\n *\n */\n static deviceMeetsRequirements(options) {\n\n const errorMessage = {\n method: 'GeneratePlaybackScenario.deivceMeetsRequirements(options)',\n get options() {\n return `${this.method} options should be a non-empty Object`;\n },\n get isSecurityCheckRequired() {\n return `${this.method} isSecurityCheckRequired should be a Boolean`;\n },\n get minimumSecurityLevel() {\n return `${this.method} minimumSecurityLevel should be a String with length`;\n },\n get deviceWidevineSecurityLevel() {\n return `${this.method} deviceWidevineSecurityLevel should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { isSecurityCheckRequired = false, minimumSecurityLevel, deviceWidevineSecurityLevel } = options;\n const { restrictedPlaybackScenario } = options;\n\n boolean(isSecurityCheckRequired, errorMessage.isSecurityCheckRequired, InvalidArgumentException);\n\n if (Check.assigned(minimumSecurityLevel)) {\n\n nonEmptyString(\n minimumSecurityLevel,\n errorMessage.minimumSecurityLevel,\n InvalidArgumentException\n );\n\n }\n\n if (Check.assigned(deviceWidevineSecurityLevel)) {\n\n includes(\n WidevineSecurityLevel,\n deviceWidevineSecurityLevel,\n errorMessage.deviceWidevineSecurityLevel,\n InvalidArgumentException\n );\n\n }\n\n const configRequiresLevel1 = minimumSecurityLevel === WidevineSecurityLevel.level1;\n const deviceSupportsLevel1 = deviceWidevineSecurityLevel === WidevineSecurityLevel.level1;\n\n const drmRequirementsMets = (configRequiresLevel1 && deviceSupportsLevel1) || !configRequiresLevel1;\n const allRequirementsMet = (isSecurityCheckRequired || drmRequirementsMets) && !restrictedPlaybackScenario;\n\n return allRequirementsMet;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/generatePlaybackScenario.js","/**\n *\n * @module supportedCodec\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SupportedCodec\n * @type {Object}\n * @since 4.2.0\n * @desc Defines the supported video codecs\n * @example SupportedCodec.h264 // 'h264'\n *\n * @property {String} h264\n * @property {String} h265\n *\n */\n\n/**\n *\n * @enum\n * @type {SupportedCodec}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n h264: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n h265: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/supportedCodec.js","/**\n *\n * @module hdrType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef HdrType\n * @type {Object}\n * @since 3.8.0\n * @desc Defines the different types of HDR available\n * @example HdrType.hdr10 // 'hdr10'\n *\n * @property {String} dolbyVision - The dolby vision type.\n * @property {String} hdr10 - The Hdr10 type.\n *\n */\n\n/**\n *\n * @enum\n * @type {HdrType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n dolbyVision: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n hdr10: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/hdrType.js","/**\n *\n * @module thumbnailResolution\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef ThumbnailResolution\n * @type {Object}\n * @since 3.8.0\n * @desc Defines the possible thumbnail resolutions available\n * @example ThumbnailResolution.low // 'low'\n *\n * @property {String} low - Supplies \"low\" as the resolution parameter to MediaManager\n * @property {String} medium - Supplies \"medium\" as the resolution parameter to MediaManager\n * @property {String} high - Supplies \"high\" as the resolution parameter to MediaManager\n *\n */\n\n/**\n *\n * @enum\n * @type {ThumbnailResolution}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n low: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n medium: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n high: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/thumbnailResolution.js","/**\n *\n * @module entry\n * @desc {SDK.Paywall} entry point.\n *\n */\n\nimport PaywallApi from './paywallApi';\nimport PaywallManager from './paywallManager';\n\n/**\n *\n * @typedef SDK.Paywall\n * @type {Object}\n *\n * @property {PaywallApi} PaywallApi\n * @property {PaywallManager} PaywallManager\n *\n */\n\n/**\n *\n * @type {SDK.Paywall}\n *\n */\nexport default {\n\n PaywallApi,\n PaywallManager\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/paywall/entry.js","/**\n *\n * @module paywallManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/paywall.md\n *\n */\n\nimport Check from 'check-types';\n\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\n\nconst TokenManager = Token.TokenManager;\n\nconst PaywallManagerConfiguration = Services.Configuration.PaywallManagerConfiguration;\nconst PaywallClient = Services.Paywall.PaywallClient;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class PaywallManager\n * @since 3.9.0\n * @desc Manages the paywall and serves as a go between for the public APIs and the PaywallClient.\n *\n */\nexport default class PaywallManager {\n\n /**\n *\n * @param {SDK.Services.Configuration.PaywallManagerConfiguration} options.config\n * @param {SDK.Services.Paywall.PaywallClient} options.client\n * @param {SDK.Token.TokenManager} options.tokenManager\n * @param {SDK.Logging.Logger} [options.logger=Logging]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get config() {\n return `${this.ctor} needs SDK.Services.Configuration.PaywallManagerConfiguration instance`;\n },\n get client() {\n return `${this.ctor} needs SDK.Services.Paywall.PaywallClient instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n },\n get logger() {\n return `${this.ctor} needs SDK.Logger instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { config, client, tokenManager, logger = Logging } = options;\n\n instanceStrict(config, PaywallManagerConfiguration, errorMessage.config, InvalidArgumentException);\n instanceStrict(client, PaywallClient, errorMessage.client, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {SDK.Services.Configuration.PaywallManagerConfiguration}\n *\n */\n this.config = config;\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {SDK.Services.Paywall.PaywallClient}\n *\n */\n this.client = client;\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.log(PaywallManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @desc Returns a paywall object containing sku, campaign and account context information for\n * a given country, platform and account/device.\n * @returns {Promise}\n *\n */\n async getPaywall() {\n\n const { client, accessToken } = this;\n\n return await client.getPaywall(accessToken);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the TokenManager instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.tokenManager.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/paywall/paywallManager.js","/**\n *\n * @module entry\n * @desc {SDK.Purchase} entry point.\n *\n */\n\nimport PurchaseApi from './purchaseApi';\nimport PurchaseManager from './purchaseManager';\nimport AccessStatus from './accessStatus';\nimport Purchases from './purchases';\nimport Receipt from './receipt';\nimport PurchaseType from './purchaseType';\nimport RedeemRetryHandler from './redeemRetryHandler';\n\n/**\n *\n * @typedef SDK.Purchase\n * @type {Object}\n *\n * @property {SDK.Purchase.PurchaseApi} PurchaseApi\n * @property {SDK.Purchase.PurchaseManager} PurchaseManager\n * @property {SDK.Purchase.AccessStatus} AccessStatus\n * @property {SDK.Purchase.Purchases} Purchases\n * @property {SDK.Purchase.Receipt} Receipt\n * @property {SDK.Purchase.PurchaseType} PurchaseType\n * @property {SDK.Purchase.RedeemRetryHandler} RedeemRetryHandler\n *\n */\n\n/**\n *\n * @type {SDK.Purchase}\n *\n */\nexport default {\n\n PurchaseApi,\n PurchaseManager,\n AccessStatus,\n Purchases,\n Receipt,\n PurchaseType,\n RedeemRetryHandler\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/purchase/entry.js","/**\n *\n * @module accessStatus\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\nimport RedeemRetryHandler from './redeemRetryHandler';\n\nconst PurchaseActivationResult = Services.Purchase.PurchaseActivationResult;\nconst RetryPolicy = Services.Configuration.RetryPolicy;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class AccessStatus\n *\n */\nexport default class AccessStatus {\n\n /**\n *\n * @param {SDK.Services.Purchase.PurchaseActivationResult} purchaseActivationResult\n * @param {SDK.Services.Configuration.RetryPolicy} policy\n * @param {SDK.Purchase.RedeemRetryHandler} [handler=null]\n *\n */\n constructor(purchaseActivationResult, policy, handler = null) {\n\n const errorMessage = {\n ctor: 'AccessStatus(purchaseActivationResult)',\n get purchaseActivationResult() {\n return `${this.ctor} needs SDK.Services.Purchase.PurchaseActivationResult instance`;\n },\n get policy() {\n return `${this.ctor} needs SDK.Services.Configuration.RetryPolicy instance`;\n },\n get handler() {\n return `${this.ctor} needs SDK.Purchase.RedeemRetryHandler instance`;\n }\n };\n\n instanceStrict(purchaseActivationResult, PurchaseActivationResult, errorMessage.purchaseActivationResult, InvalidArgumentException); // eslint-disable-line\n instanceStrict(policy, RetryPolicy, errorMessage.policy, InvalidArgumentException);\n\n if (Check.assigned(handler)) {\n instanceStrict(handler, RedeemRetryHandler, errorMessage.handler, InvalidArgumentException);\n }\n\n const { retryBasePeriod, retryMaxPeriod, retryMaxAttempts, retryMultiplier } = policy;\n\n /**\n *\n * @access public\n * @type {Boolean}\n * @desc does a user have temporary access to some content\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/purchase.md#http-202\n *\n */\n this.isTemporary = purchaseActivationResult.temporaryAccessGranted || false;\n\n /**\n *\n * @access public\n * @type {Array}\n * @desc Purchase information for all activated SKUs.\n *\n */\n this.purchases = purchaseActivationResult.purchases;\n\n /**\n *\n * @access private\n * @type {SDK.Purchase.RedeemRetryHandler}\n * @desc handler used to retry redeem\n *\n */\n this.handler = handler;\n\n /**\n *\n * @access private\n * @type {Number}\n * @desc time between when to retry redeem in milliseconds\n *\n */\n this.interval = retryBasePeriod * 1000;\n\n /**\n *\n * @access private\n * @type {Number}\n * @desc max time between when to retry in milliseconds\n *\n */\n this.retryMaxPeriod = retryMaxPeriod * 1000;\n\n /**\n *\n * @access private\n * @type {Number}\n * @desc maximum number of attemps to retry\n *\n */\n this.retryMaxAttempts = retryMaxAttempts;\n\n /**\n *\n * @access private\n * @type {Number}\n * @desc amount to increase the interval\n *\n */\n this.retryMultiplier = retryMultiplier;\n\n /**\n *\n * @access private\n * @type {Number}\n * @desc number of attempts to retry redeem of purchase\n *\n */\n this.attempts = 0;\n\n }\n\n /**\n *\n * @access public\n * @desc attempts to make purchase permanant\n * @returns {Promise}\n *\n */\n makePermanent() {\n\n const { interval, retryMaxPeriod } = this;\n const hasRetryMaxPeriod = Check.assigned(retryMaxPeriod) && Check.not.zero(retryMaxPeriod);\n\n let retryDelay;\n\n if (hasRetryMaxPeriod && interval > retryMaxPeriod) {\n retryDelay = retryMaxPeriod;\n } else {\n retryDelay = interval;\n }\n\n return new Promise((resolve) => setTimeout(resolve, retryDelay)).then(() => {\n\n return this.retryRedeem();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @desc retries to redeem purchase using the handler\n * @returns {Promise}\n *\n */\n retryRedeem() {\n\n const { handler, retryMaxAttempts, retryMultiplier } = this;\n\n if (Check.not.assigned(handler)) {\n\n const reasons = [new ErrorReason('', 'Invalid: For use with Redeem')];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n return handler.run().then((result) => {\n\n this.attempts++;\n\n if (Check.nonEmptyArray(result.errors)) {\n return Promise.reject(result.errors);\n }\n\n if (result.isTemporary) {\n\n if (this.attempts >= retryMaxAttempts) {\n\n const reasons = [new ErrorReason('', 'Max Retries Reached')];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n } else {\n\n this.interval = this.interval * retryMultiplier;\n\n return this.makePermanent();\n\n }\n\n }\n\n return Promise.resolve(result);\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/purchase/accessStatus.js","/**\n *\n * @module playback\n * @desc playback sequence implementation\n * @see https://devflow.jenkins.us-east-1.bamgrid.net/job/SDK-Doc/job/spec-sdk/job/master/1766/artifact/dist/uml/architecture/scenarios/sequence-playback.svg\n *\n */\n\nimport Check from 'check-types';\nimport assert from 'assert';\n\nimport SDK from './../../sdk';\n\nimport BaseSequence from './../base';\nimport AssertionErrorMessages from './../assertionErrorMessages';\n\nimport Exception from './../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n assigned,\n boolean,\n instanceStrict,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @function getLaunchpadQaGraphQlQuery\n * @desc Basic Livewriter Test Stream 3 - VOD Type Playlist Playback - Web Media Test\n * @returns {SDK.Content.GraphQlQuery}\n *\n */\nconst getLaunchpadQaGraphQlQuery = () => {\n\n return new SDK.Content.GraphQlQuery(`{\n query(index: \"launchpad_global\", type: \"Video\") {\n meta {\n hits\n }\n hits {\n hit {\n ... on Video {\n type\n contentId\n partnerProgramId\n epgPartnerProgramId\n language\n titles {\n title\n }\n media {\n mediaId\n mediaState\n playbackUrls {\n rel\n href\n }\n }\n }\n }\n }\n }\n }`, '');\n\n};\n\n/**\n *\n * @class PlaybackSequence\n * @extends {BaseSequence}\n * @desc The primary SDK playback sequence. The playback sequence is a great choice for testing\n * complete end-to-end functionality. It interacts with the core features of the\n * SDK, i.e., Establish Anonymous Session, Establish Registered Session, Content Retrieval,\n * Media Session Establishment, and Playback Workflow.\n *\n * @example const playbackSequence = new SDK.Test.Sequences.Playback(\n * config, Html5PlayerAdapter, videoElement, queryContext, graphQlQuery, geoProvider\n * );\n *\n */\nexport default class PlaybackSequence extends BaseSequence {\n\n /**\n *\n * @param {Object} options contains all of the parameters for this function\n * @param {Object} [options.config] configuration used to build a BootstrapConfiguration instance\n * @param {SDK.Media.PlayerAdapter} options.PlayerAdapter player adapter to use in sequence\n * @param {NativePlayer} options.nativePlayer platform native player instance\n * @param {String} [options.queryContext='search'] GraphQl query context\n * @param {SDK.Content.GraphQlQuery} [options.graphQlQuery=getLaunchpadQaGraphQlQuery()] GraphQlQuery instance\n * @param {SDK.Token.GeoProvider} [options.geoProvider] GeoProvider instance to use\n * portion of the sequence should be executed\n * @param {String} [options.exceptionIdentifier=null] exception identifier,\n * i.e. 'blackout', 'stream-concurrency-violation', 'login.required', etc...\n * used for exception testing\n * @param {Boolean} [options.clearOnComplete=false] flag that determines if token refresh\n * should be cleared when the sequence is complete (useful when running tests)\n * @param {SDK.Services.Configuration.ConfigurationHostName} [options.configurationHostName=ConfigHostName.prod]\n * The configuration host name to use (dev or prod)\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const GraphQlQuery = SDK.Content.GraphQlQuery;\n const GeoProvider = SDK.Token.GeoProvider;\n\n const errorMessage = {\n ctor: 'PlaybackSequence(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get config() {\n return `${this.ctor} config should be a non-empty Object`;\n },\n get playerAdapter() {\n return `${this.ctor} needs PlayerAdapter`;\n },\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n },\n get queryContext() {\n return `${this.ctor} queryContext should be a String with length`;\n },\n get graphQlQuery() {\n return `${this.ctor} needs GraphQlQuery instance`;\n },\n get geoProvider() {\n return `${this.ctor} needs GeoProvider instance`;\n },\n get exceptionIdentifier() {\n return `${this.ctor} exceptionIdentifier should be a String with length`;\n },\n get clearOnComplete() {\n return `${this.ctor} clearOnComplete should be a Boolean`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { config, PlayerAdapter, nativePlayer, queryContext = 'search' } = options;\n const { graphQlQuery = getLaunchpadQaGraphQlQuery(), geoProvider, exceptionIdentifier = null } = options;\n const { clearOnComplete = false } = options;\n\n if (Check.assigned(config)) {\n nonEmptyObject(config, errorMessage.config, InvalidArgumentException);\n }\n\n assigned(PlayerAdapter, errorMessage.playerAdapter, InvalidArgumentException);\n assigned(nativePlayer, errorMessage.nativePlayer, InvalidArgumentException);\n nonEmptyString(queryContext, errorMessage.queryContext, InvalidArgumentException);\n instanceStrict(graphQlQuery, GraphQlQuery, errorMessage.graphQlQuery, InvalidArgumentException);\n\n if (Check.assigned(geoProvider)) {\n instanceStrict(geoProvider, GeoProvider, errorMessage.geoProvider, InvalidArgumentException);\n }\n\n if (Check.assigned(exceptionIdentifier)) {\n nonEmptyString(exceptionIdentifier, errorMessage.exceptionIdentifier, InvalidArgumentException);\n }\n\n boolean(clearOnComplete, errorMessage.clearOnComplete, InvalidArgumentException);\n\n super(options);\n\n /**\n *\n * @access public\n * @type {SDK.Media.PlayerAdapter}\n *\n */\n this.PlayerAdapter = PlayerAdapter;\n\n /**\n *\n * @access public\n * @type {NativePlayer}\n *\n */\n this.nativePlayer = nativePlayer;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.queryContext = queryContext;\n\n /**\n *\n * @access public\n * @type {SDK.Content.GraphQlQuery}\n *\n */\n this.graphQlQuery = graphQlQuery;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.exceptionIdentifier = exceptionIdentifier;\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.clearOnComplete = clearOnComplete;\n\n }\n\n /**\n *\n * @access public\n * @method execute\n * @desc runs the sequence to completion\n * @returns {Promise}\n *\n * @example playbackSequence.execute().then(() => { console.log('success'); });\n *\n */\n execute() {\n\n const { config, PlayerAdapter, nativePlayer, queryContext, graphQlQuery } = this;\n const { geoProvider, clearOnComplete } = this;\n\n const Playlist = SDK.Media.Playlist;\n const ContentQuery = SDK.Content.ContentQuery;\n const BootstrapConfiguration = SDK.Services.Configuration.BootstrapConfiguration;\n const HTML5PlayerAdapter = SDK.Media.PlayerAdapter.Html5PlayerAdapter;\n\n return new Promise((resolve, reject) => {\n\n /** @type {SDK.Services.Configuration.BootstrapConfiguration} */\n const bootstrapConfiguration = new BootstrapConfiguration(config);\n\n /** @type {SDK.Content.GraphQlQuery} */\n const contentQuery = new ContentQuery(queryContext, graphQlQuery);\n\n /** @type {SDK.SdkSession} */\n let sdkSession;\n\n /** @type {SDK.Content.ContentApi} */\n let contentApi;\n\n /** @type {SDK.Media.MediaApi} */\n let mediaApi;\n\n /** @type {SDK.Media.MediaDescriptor} */\n let mediaDescriptor;\n\n /** @type {SDK.Media.MediaItem} */\n let mediaItem;\n\n /** @type {SDK.Media.PlaybackSession} */\n let playbackSession;\n\n /** @type {SDK.Media.PlayerAdapter} */\n let playerAdapter;\n\n /** @type {String} */\n let playbackUrl;\n\n // /** 1 */\n this.createInitializedSdkSession(bootstrapConfiguration, geoProvider).then((session) => {\n\n sdkSession = session;\n /** 4 */\n /** 5 */\n /** 7 */\n /** 8 */\n /** 9 */\n /** 10 */\n\n /** Repeat authorizeSessionWithAccountGrant(Account Grant Token) each time Account is updated */\n /** e.g. Entitlements change via IAP or purchase */\n\n /** Content Retrieval (BAMTECH CMS) */\n /** Alternatively, partner CMS is used */\n\n /** 11 */\n contentApi = sdkSession.contentApi;\n\n /** 12 */\n\n /** 13 */\n return contentApi.query({\n query: contentQuery\n });\n\n }).then((contentData) => {\n\n /** Persisted GraphQL Query */\n /** 14 - JSON (including playbackUrl) */\n /** JSON typically deserialized to models */\n assert.ok(contentData, AssertionErrorMessages.contentApi.query);\n assert.ok(contentData.data, AssertionErrorMessages.contentApi.query);\n\n const data = contentData.data;\n let serializedData;\n\n try {\n serializedData = JSON.stringify(data);\n } catch (error) {\n // don't fail on invalid data, fail later when mediaApi.fetch attempts to use it\n serializedData = '';\n }\n\n /**\n *\n * @desc handle various payload structures without knowing the schema\n * @note utility logic, outside of the official sequence\n *\n * 1. serialize the content data\n * 2. grab the first valid href based on structure\n *\n */\n const hrefRegex = /(\\b(https?):\\/\\/[-A-Z0-9+&@{#\\/%?=~_|!:,.;]*[-A-Z0-9+&@}#\\/%=~_|]\\{scenario\\})/ig; // eslint-disable-line\n const serializedDataMatch = serializedData.match(hrefRegex);\n playbackUrl = serializedDataMatch && serializedDataMatch.shift() || ''; // eslint-disable-line\n\n /** 15 */\n /** @type {SDK.Media.MediaDescriptor} */\n mediaDescriptor = new SDK.Media.MediaDescriptor({\n playbackUrl\n });\n\n /** 16 */\n mediaApi = sdkSession.mediaApi;\n\n return mediaApi.fetch(mediaDescriptor);\n\n }).then((_mediaItem) => {\n\n mediaItem = _mediaItem;\n\n /** @test {SDK.Media.MediaItem} */\n assert.ok(mediaItem, AssertionErrorMessages.mediaApi.fetch);\n assert.ok(mediaItem.payload, AssertionErrorMessages.mediaApi.fetch);\n assert.ok(mediaItem.descriptor, AssertionErrorMessages.mediaApi.fetch);\n\n /** Playback Workflow */\n /** @type {SDK.Media.PlayerAdapter} */\n playerAdapter = new PlayerAdapter(nativePlayer);\n\n /** 17 */\n return mediaApi.createPlaybackSession(playerAdapter);\n\n }).then((ps) => {\n\n /** 18 */\n /** @type {SDK.Media.PlaybackSession} */\n playbackSession = ps;\n\n const createPlaybackSessionErrorMessage = AssertionErrorMessages.mediaApi.createPlaybackSession;\n\n /** @test {SDK.Media.PlaybackSession} */\n assert.ok(playbackSession, createPlaybackSessionErrorMessage);\n assert.ok(playbackSession.playerAdapter, createPlaybackSessionErrorMessage);\n assert.ok(playbackSession.tokenManager, createPlaybackSessionErrorMessage);\n assert.ok(playbackSession.authCookieProvider, createPlaybackSessionErrorMessage);\n assert.ok(playbackSession.mediaManager, createPlaybackSessionErrorMessage);\n assert.ok(playbackSession.telemetryDispatcher, createPlaybackSessionErrorMessage);\n\n /** 19 */\n /** 20 */\n /** 21 */\n /** 22 */\n return mediaItem.getTrackingData();\n\n }).then(() => {\n\n /** 23 - Initialize Analytics */\n /** 24 - Initialize Advertising */\n\n /** 25 */\n return playbackSession.prepare(mediaItem);\n\n }).then((playlist) => {\n\n const playlistErrorMessage = AssertionErrorMessages.mediaApi.playbackSession.playlist;\n const playerAdapterReadyErrorMessage = AssertionErrorMessages.playerAdapter.ready;\n\n /** 25 */\n /** @test {SDK.Media.Playlist} */\n assert.ok(playlist instanceof Playlist, playlistErrorMessage);\n\n assert.ok(playlist.streamUri, playlistErrorMessage);\n assert.ok(playlist.playlistType, playlistErrorMessage);\n assert.ok(playlist.availablePlaylistTypes, playlistErrorMessage);\n\n /** @test {SDK.Media.PlayerAdapter} */\n assert.ok(playerAdapter.playlistUri, playerAdapterReadyErrorMessage);\n assert.ok(playerAdapter.nativePlayer, playerAdapterReadyErrorMessage);\n assert.ok(playerAdapter.listener, playerAdapterReadyErrorMessage);\n assert.ok(playerAdapter.accessToken, playerAdapterReadyErrorMessage);\n assert.ok(playerAdapter.boundHandlers, playerAdapterReadyErrorMessage);\n\n /** @desc rescan the source element on HTML5 platforms */\n if (playerAdapter instanceof HTML5PlayerAdapter) {\n if (typeof nativePlayer.load === 'function') {\n nativePlayer.load();\n }\n }\n\n /** 26 */\n // nativePlayer.play();\n\n return Promise.resolve();\n\n }).then(() => {\n\n if (clearOnComplete) {\n if (sdkSession.tokenManager) {\n sdkSession.tokenManager.clearRetryRefresh();\n }\n playerAdapter.clean();\n }\n\n /** Standard Player Interaction */\n\n return resolve(playerAdapter);\n\n }).catch((ex) => {\n\n return reject(ex);\n\n });\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/sequences/media/playback.js","/**\n *\n * @module entry\n * @desc {SDK.Session} entry point.\n *\n */\n\nimport SessionManager from './sessionManager';\n\n/**\n *\n * @typedef SDK.Session\n * @type {Object}\n *\n * @property {SessionManager} SessionManager\n *\n */\n\n/**\n *\n * @type {SDK.Session}\n *\n */\nexport default {\n\n SessionManager\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/session/entry.js","/**\n *\n * @module entry\n * @desc {SDK.UserActivity} entry point.\n *\n */\n\nimport UserActivityApi from './userActivityApi';\nimport UserActivityEvent from './userActivityEvent';\nimport EventSchema from './eventSchema';\nimport EventSchemata from './eventSchemata';\nimport EventSchemataProvider from './eventSchemataProvider';\nimport EventValue from './eventValue';\nimport Glimpse from './glimpse/entry';\nimport Personalization from './personalization/entry';\n\n/**\n *\n * @typedef SDK.UserActivity\n * @type {Object}\n *\n * @property {UserActivityApi} UserActivityApi\n * @property {UserActivityEvent} UserActivityEvent\n * @property {EventSchema} EventSchema\n * @property {EventSchemata} EventSchemata\n * @property {EventSchemataProvider} EventSchemataProvider\n * @property {EventValue} EventValue\n * @property {Glimpse} Glimpse\n * @property {Personalization} Personalization\n *\n */\n\n/**\n *\n * @type {SDK.UserActivity}\n *\n */\nexport default {\n\n UserActivityApi,\n UserActivityEvent,\n EventSchema,\n EventSchemata,\n EventSchemataProvider,\n EventValue,\n Glimpse,\n Personalization\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/entry.js","/**\n *\n * @module eventSchemataProvider\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\nimport UserActivityEvent from './userActivityEvent';\nimport EventSchema from './eventSchema';\nimport EventSchemata from './eventSchemata';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyObject,\n instanceStrict,\n boolean,\n array\n} = Check.assert;\n\n/**\n *\n * @class EventSchemataProvider\n * @desc The schema provider that should be used to generate event payloads\n *\n */\nexport default class EventSchemataProvider {\n\n constructor() {\n\n /**\n *\n * @access private\n * @type {Object|Object}\n * @note the spec notes that the key should be `SDK.UserActivity.UserActivityEvent` but JS does not have the\n * ability to use an `Object` as a key so we use `SDK.UserActivity.UserActivityEvent.eventUrn` instead\n *\n */\n this.schemata = {};\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @param {SDK.UserActivity.UserActivityEvent} options.event\n * @param {Array} options.schemata\n * @param {Boolean} options.passthrough\n * @desc duplicate keys are overwritten\n * @note `schemata` is renamed `schemaArray` since we already have a `schemata` property on the constructor\n *\n */\n setSchemata(options) {\n\n const errorMessage = {\n method: 'EventSchemataProvider.setSchemata(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get event() {\n return `${this.method} event should be an instance of SDK.UserActivity.UserActivityEvent`;\n },\n get schemata() {\n return `${this.method} schemata should be an Array of SDK.UserActivity.EventSchema`;\n },\n get passthrough() {\n return `${this.method} passthrough should be a Boolean`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { schemata } = this;\n const { event, schemata: schemaArray, passthrough } = options;\n\n instanceStrict(event, UserActivityEvent, errorMessage.event, InvalidArgumentException);\n array.of.instanceStrict(schemaArray, EventSchema, errorMessage.schemata, InvalidArgumentException);\n boolean(passthrough, errorMessage.passthrough, InvalidArgumentException);\n\n schemata[event.eventUrn] = new EventSchemata(schemaArray, passthrough);\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.UserActivity.UserActivityEvent} event\n * @note if no schema is found we return a bare bones version of `SDK.UserActivity.EventSchemata` to ensure our\n * payload generator functions correctly\n * @note we are unable to use the `SDK.UserActivity.UserActivityEvent` as the key so we do the lookup via the\n * `eventUrn` property\n * @note if a schemata isn't found we create a new one using default values of `schema=[], passthrough=true`\n * @returns {SDK.UserActivity.EventSchemata}\n *\n */\n getSchemata(event) {\n\n const errorMessage = {\n method: 'EventSchemataProvider.getSchemata(event)',\n get event() {\n return `${this.method} event should be an instance of SDK.UserActivity.UserActivityEvent`;\n }\n };\n\n const { schemata } = this;\n\n instanceStrict(event, UserActivityEvent, errorMessage.event, InvalidArgumentException);\n\n return schemata[event.eventUrn] || new EventSchemata([], true);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/eventSchemataProvider.js","/**\n *\n * @module eventValue\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class EventValue\n * @desc An interface that can be implemented by application developers to provide dynamic values\n *\n */\nexport default class EventValue {\n\n /**\n *\n * @param {*} value\n * @note we do not do any type checking here since the value being passed in can be a function or any value\n *\n */\n constructor(value) {\n\n /**\n *\n * @type {Function}\n * @desc stores a static value wrapped in a function or a reference to a function\n *\n */\n this.value = Check.function(value) ? value : () => value;\n\n }\n\n /**\n *\n * @access private\n * @param {Object} payload\n * @note this method returns the string stored in `this.value` or it executes the function stored in `this.value`\n * we pass the tracking parameters that were merged in `SDK.UserActivity.EventSchema` into this method and pass it\n * into the app developer provided function or it is ignored if `this.value` is a static value\n * @note this is marked `public` in the spec but the we invoke it in our implementation so it's marked `private`\n * @returns {Object}\n *\n */\n generateValue(payload) {\n\n const errorMessage = {\n method: 'EventValue.generateValue(payload)',\n get payload() {\n return `${this.method} payload should be a non-empty Object`;\n }\n };\n\n nonEmptyObject(payload, errorMessage.payload, InvalidArgumentException);\n\n return this.value(payload);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/eventValue.js","/**\n *\n * @module eventSchemata\n *\n */\n\nimport Check from 'check-types';\nimport EventSchema from './eventSchema';\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n boolean,\n object\n} = Check.assert;\n\n/**\n *\n * @class EventSchemata\n * @desc A collection of `SDK.UserActivity.EventSchema` used by `SDK.UserActivity.EventSchemataProvider` when\n * constructing a payload\n * @note this is entirely private and is constructed within `SDK.UserActivity.EventSchemataProvider`\n *\n */\nexport default class EventSchemata {\n\n /**\n *\n * @access private\n * @param {Array} schemata\n * @param {Boolean} passthrough\n *\n */\n constructor(schemata, passthrough) {\n\n const errorMessage = {\n ctor: 'EventSchemata(schemata, passthrough)',\n get schemata() {\n return `${this.ctor} schemata should be an Array of SDK.UserActivity.EventSchema`;\n },\n get passthrough() {\n return `${this.ctor} passthrough should be a Boolean`;\n }\n };\n\n array.of.instanceStrict(schemata, EventSchema, errorMessage.schemata, InvalidArgumentException);\n boolean(passthrough, errorMessage.passthrough, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {Array}\n *\n */\n this.schemata = schemata;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc determines if we should apply global tracking parameters when the payload is generated\n *\n */\n this.passthrough = passthrough;\n\n }\n\n /**\n *\n * @access private\n * @param {Object} trackingParameters\n * @note `trackingParameters` should be cloned to avoid modifying it\n * @note this will loop through all of the available schema and generate all possible individual values\n * first it will potentially merge in the global tracking params and then start to iterate through the schemata\n * which in turn will iterate through each individual schemas values\n * @note we keep track of any failures that occur during this loop but since we are merging the object each time\n * we need to store an external variable outside of the loop to keep track of the failures\n * @returns {Object}\n *\n */\n generateEventPayload(trackingParameters) {\n\n const errorMessage = {\n method: 'EventSchemata.generateEventPayload(trackingParameters)',\n get trackingParameters() {\n return `${this.method} trackingParameters should be an Object`;\n }\n };\n\n object(trackingParameters, errorMessage.trackingParameters, InvalidArgumentException);\n\n const { schemata, passthrough } = this;\n\n const _failures = [];\n\n let eventPayload = passthrough ? trackingParameters : {};\n\n for (const schema of Object.keys(schemata)) {\n\n const schemaGeneratedData = schemata[schema].generateEventData(trackingParameters);\n\n if (Check.nonEmptyArray(schemaGeneratedData._failures)) {\n\n _failures.push(...schemaGeneratedData._failures);\n\n // not necessary but cleaner to remove it and add back the aggregate _failures array before returning\n delete schemaGeneratedData._failures;\n\n }\n\n eventPayload = Object.assign(eventPayload, schemaGeneratedData);\n\n }\n\n // since `eventPayload._failures` is overwritten in each loop we have to keep track and rewrite before returning\n if (Check.nonEmptyArray(_failures)) {\n eventPayload._failures = _failures;\n }\n\n return eventPayload;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/eventSchemata.js","/**\n *\n * @module glimpseEvent\n *\n */\n\nimport UserActivityEvent from './../userActivityEvent';\n\n/**\n *\n * @class GlimpseEvent\n *\n */\nexport default class GlimpseEvent extends UserActivityEvent {\n\n /**\n *\n * @param {String} eventUrn\n *\n */\n constructor(eventUrn) {\n\n super(eventUrn);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/glimpse/glimpseEvent.js","/**\n *\n * @module personalizationEvent\n *\n */\n\nimport UserActivityEvent from './../userActivityEvent';\n\n/**\n *\n * @class PersonalizationEvent\n *\n */\nexport default class PersonalizationEvent extends UserActivityEvent {\n\n /**\n *\n * @param {String} eventUrn\n *\n */\n constructor(eventUrn) {\n\n super(eventUrn);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/personalization/personalizationEvent.js","/**\n *\n * @module entry\n * @desc {SDK.UserProfile} entry point.\n *\n */\n\nimport UserProfileApi from './userProfileApi';\n\n/**\n *\n * @typedef SDK.UserProfile\n * @type {Object}\n *\n * @property {UserActivityApi} UserProfileApi\n *\n */\n\n/**\n *\n * @type {SDK.UserProfile}\n *\n */\nexport default {\n\n UserProfileApi\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/userProfile/entry.js","/**\n *\n * @module reauthorizationFailure\n *\n */\n\nimport Token from './token/entry';\n\n/**\n *\n * @class ReauthorizationFailure\n * @extends {SDK.Token.TokenRefreshFailure}\n * @desc The event raised when automatic token refresh fails.\n *\n */\nexport default class ReauthorizationFailure extends Token.TokenRefreshFailure {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/reauthorizationFailure.js","/**\n *\n * @module entry\n * @description\n *\n */\n\nimport Check from 'check-types';\nimport SDK from 'bam-browser-sdk';\nimport { EventEmitter } from 'events';\nimport GeoProviderMock from './geoProviderMock';\n\nconst SdkSession = SDK.SdkSession;\nconst BootstrapConfiguration = SDK.Services.Configuration.BootstrapConfiguration;\n\n/**\n *\n * @access private\n * @type {EventEmitter}\n *\n */\nconst eventEmitter = new EventEmitter();\n\n/**\n *\n * @access private\n * @type {SDK.Services.Configuration.BootstrapConfiguration}\n *\n */\nlet bootstrapConfiguration;\n\n/**\n *\n * @access private\n * @type {Promise}\n *\n */\nlet sdkSessionPromise;\n\n/**\n *\n * @access private\n * @type {SDK.Token.GeoProvider}\n *\n */\nlet geoProvider;\n\n/**\n *\n * @class SdkSessionUtil\n * @description Singleton model to get a shared instance of a SDK.SdkSession\n *\n */\nclass SdkSessionUtil {\n\n /**\n *\n * @access public\n * SdkSessionUtil.getSdkSession()\n * @param {Object} config\n * @desc Set up the bootstrap configuration for the SDK. Must be called before\n *\n */\n static setBootstrapConfiguration(config) {\n\n const { mockGeoLocation } = config;\n\n if (mockGeoLocation) {\n\n const { latitude, longitude } = mockGeoLocation;\n\n geoProvider = new GeoProviderMock(latitude, longitude);\n\n }\n\n /** Set up bootstrap configuration */\n bootstrapConfiguration = new BootstrapConfiguration(config);\n\n }\n\n /**\n *\n * @access public\n * @returns {Promise}\n *\n */\n static getSdkSession() {\n\n /** Resolve the previously created sdkSession, if exists */\n if (Check.assigned(sdkSessionPromise)) {\n\n return sdkSessionPromise;\n\n }\n\n const method = 'SdkSessionUtil.getSdkSession()';\n const bootstrapConfigurationError = `${method} needs BootstrapConfiguration instance.\n Call SdkSessionUtil.setBootstrapConfiguration(config) first.`;\n\n Check.assert.instanceStrict(\n bootstrapConfiguration,\n BootstrapConfiguration,\n bootstrapConfigurationError\n );\n\n let sdkSession;\n\n /** Create a SDK.SdkSession and initialize it */\n sdkSessionPromise = SdkSession.createSdkSession(bootstrapConfiguration, geoProvider).then((session) => {\n\n sdkSession = session;\n\n return sdkSession.initialize().catch(() => {\n\n return sdkSession.reset().then(() => {\n\n eventEmitter.emit('SdkSessionResetOnError');\n\n return Promise.resolve();\n\n });\n\n });\n\n }).then(() => {\n\n return Promise.resolve(sdkSession);\n\n });\n\n return sdkSessionPromise;\n\n }\n\n /**\n *\n * @access public\n * @param {String} event\n * @param {Function} handler\n *\n */\n static on(event, handler) {\n\n eventEmitter.on(event, handler);\n\n }\n\n /**\n *\n * @access public\n * @param {String} [event]\n * @param {Function} [handler]\n * @desc If called with no parameters, it will remove all listeners. Passing only event, it will remove\n * all listeners for that event.\n *\n */\n static off(event, handler) {\n\n if (Check.not.assigned(handler)) {\n eventEmitter.removeAllListeners(event);\n }\n\n eventEmitter.removeListener(event, handler);\n\n }\n\n}\n\n/** Unique key for referencing the SdkSessionUtil in the global scope */\nconst SDK_SESSION_UTIL_KEY = Symbol.for('BAM.SDK.SdkSessionUtil');\n\n/** npm:window-or-global */\nconst scope = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global) ||\n window;\n\n/** Get the scope's symbols */\nconst scopeSymbols = Object.getOwnPropertySymbols(scope);\n\n/** Check the scope for existing symbol */\nif (scopeSymbols.indexOf(SDK_SESSION_UTIL_KEY) === -1) {\n\n scope[SDK_SESSION_UTIL_KEY] = SdkSessionUtil;\n\n}\n\n/** Singleton API */\nclass API {\n\n /**\n *\n * @returns {SdkSessionUtil}\n *\n */\n static get instance() {\n\n return scope[SDK_SESSION_UTIL_KEY];\n\n }\n\n}\n\n/** Lock the API */\nObject.freeze(API);\n\n/** Export the singleton */\nexport default API.instance;\n\n\n\n// WEBPACK FOOTER //\n// ./src/entry.js","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/define-property.js\n// module id = 427\n// module chunks = 0","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.define-property.js\n// module id = 428\n// module chunks = 0","/**\n *\n * @module accountApi\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/account.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/AccountApi.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Subscription from './../subscription/entry';\nimport Token from './../token/entry';\nimport AccountManager from './accountManager';\n\nconst Util = Services.Util;\nconst Account = Services.Account.Account;\nconst SubscriptionManager = Subscription.SubscriptionManager;\nconst TokenManager = Token.TokenManager;\nconst AccessContextState = Token.AccessContextState;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst AccountApiDustUrnReference = Services.Internal.Dust.DustUrnReference.account.accountApi;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class AccountApi\n * @desc Provides ability to access account data and link subscriptions to the account.\n *\n */\nexport default class AccountApi {\n\n /**\n *\n * @param {AccountManager} accountManager\n * @param {TokenManager} tokenManager\n * @param {SDK.Subscription.SubscriptionManager} subscriptionManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(accountManager, tokenManager, subscriptionManager, logger = Logging) {\n\n const errorMessage = {\n ctor: 'AccountApi(accountManager, subscriptionManager, logger)',\n get accountManager() {\n return `${this.ctor} needs SDK.Account.AccountManager instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n },\n get subscriptionManager() {\n return `${this.ctor} needs SDK.Subscription.SubscriptionManager instance`;\n }\n };\n\n instanceStrict(accountManager, AccountManager, errorMessage.accountManager, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n instanceStrict(subscriptionManager, SubscriptionManager, errorMessage.subscriptionManager, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @type {AccountManager}\n *\n */\n this.accountManager = accountManager;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @type {SDK.Subscription.SubscriptionManager}\n *\n */\n this.subscriptionManager = subscriptionManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => this.accountManager.client.dustEnabled);\n\n this.logger.info(AccountApi.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {String} token\n * @param {String} provider\n * @desc Authorizes a session with an identity that has been authenticated by an external provider.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {InvalidTokenException} External identity token was invalid.\n * @note Request to obtain an account grant or create a new account with the supplied identity\n * token returns an HTTP error with code: payload.id-token.invalid.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {AccountBlockedException} Account is blocked because it has been either identified as a minor or banned\n * globally by OneID.\n * @note Request to obtain an account grant or create a new account with the supplied identity token returns an HTTP\n * 403 error with code: account.blocked. Account.attributes.blocks[].reason will say why (Minor or GlobalBlock).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n */\n async authorize(token, provider) {\n\n const errorMessage = {\n method: 'AccountApi.authorize(token, provider)',\n get token() {\n return `${this.method} token should be a String with length`;\n },\n get provider() {\n return `${this.method} provider should be a String with length`;\n }\n };\n\n nonEmptyString(token, errorMessage.token, InvalidArgumentException);\n nonEmptyString(provider, errorMessage.provider, InvalidArgumentException);\n\n const { accountManager, tokenManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountApi.name,\n urn: AccountApiDustUrnReference.authorize\n });\n\n try {\n\n const accountGrant = await accountManager.createAccountGrant(token);\n const accessContextState = new AccessContextState([provider]);\n\n return await tokenManager.exchangeGrant(accountGrant, accessContextState);\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {String} token\n * @param {Object} [attributes={}] - A set of attributes to associate with the new account. Note: certain\n * attributes may be required while others are optional.\n * @note {Object} [metadata] - Object which may hold additional information about the account\n * @desc Creates an account from an identity that has been authenticated by an external provider.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {InvalidTokenException} External identity token was invalid.\n * @note Request to obtain an account grant or create a new account with the supplied identity\n * token returns an HTTP error with code: payload.id-token.invalid.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n */\n async createAccount(token, attributes = {}, metadata) {\n\n const errorMessage = {\n method: 'AccountApi.createAccount(token, attributes, metadata)',\n get token() {\n return `${this.method} token should be a String with length`;\n },\n get attributes() {\n return `${this.method} attributes should be an Object`;\n },\n get metadata() {\n return `${this.method} metadata should be an Object`;\n }\n };\n\n nonEmptyString(token, errorMessage.token, InvalidArgumentException);\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n\n if (Check.assigned(metadata)) {\n object(metadata, errorMessage.metadata, InvalidArgumentException);\n }\n\n const { accountManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountApi.name,\n urn: AccountApiDustUrnReference.createAccount\n });\n\n try {\n\n return await accountManager.createAccount(token, attributes, metadata);\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @desc Gets an Account instance that can be used to get information about the account.\n * @throws {AccountNotFoundException} The account was not found\n * @note The account could not be found or the operation failed. Account service returns 401 or 404\n * with error: account.get.failed, account.not.found.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {InvalidTokenException} External identity token was invalid.\n * @note Request to obtain an account grant or create a new account with the supplied identity\n * token returns an HTTP error with code: payload.id-token.invalid.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n * @example sdkSession.accountApi.getAccount().then(account) => {\n * console.log(account.accountId);\n * console.log(account.attributes);\n * });\n *\n */\n async getAccount() {\n\n const { accountManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountApi.name,\n urn: AccountApiDustUrnReference.getAccount\n });\n\n try {\n\n return await accountManager.getAccount();\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @param {Account} account - account to be saved\n * @desc Saves all current changes made to the account attributes.\n * @throws {AttributeValidationException} One or more attribute was invalid.\n * @note The account service returns HTTP 404 with and code of payload.fields.incorrect.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded.\n *\n * @example const accountApi = sdkSession.accountApi;\n * @example accountApi.getAccount().then(account) => {\n * account.attributes.optInUpdates = true; // update attribute\n * account.attributes.birthDate = null; // delete attribute\n *\n * return accountApi.updateAccount(account);\n * });\n *\n */\n async updateAccount(account) {\n\n const errorMessage = {\n method: 'AccountApi.updateAccount(account)',\n get account() {\n return `${this.method} needs Account instance`;\n }\n };\n\n instanceStrict(account, Account, errorMessage.account, InvalidArgumentException);\n\n const { accountManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountApi.name,\n urn: AccountApiDustUrnReference.updateAccount\n });\n\n try {\n\n return await accountManager.updateAttributes(account.attributes);\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @desc Links (copies) all subscriptions from the user's device to the Account.\n * @throws {LinkSubscriptionPartialException} Copy partial error.\n * @note There is an error with linking the subscription to the device. Subscription service\n * returns 202 with error: copy.failure, copy.limit.reached.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded.\n *\n */\n async linkSubscriptionsFromDevice() {\n\n const { dustEnabled, logger, subscriptionManager } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountApi.name,\n urn: AccountApiDustUrnReference.updateAccount\n });\n\n try {\n\n return await subscriptionManager.linkSubscriptionsFromDevice();\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/account/accountApi.js","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/regenerator-runtime/runtime-module.js\n// module id = 430\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/regenerator-runtime/runtime.js\n// module id = 431\n// module chunks = 0","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/promise.js\n// module id = 432\n// module chunks = 0","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_string-at.js\n// module id = 433\n// module chunks = 0","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-create.js\n// module id = 434\n// module chunks = 0","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-dps.js\n// module id = 435\n// module chunks = 0","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_array-includes.js\n// module id = 436\n// module chunks = 0","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_to-absolute-index.js\n// module id = 437\n// module chunks = 0","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.array.iterator.js\n// module id = 438\n// module chunks = 0","module.exports = function () { /* empty */ };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_add-to-unscopables.js\n// module id = 439\n// module chunks = 0","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_iter-step.js\n// module id = 440\n// module chunks = 0","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.promise.js\n// module id = 441\n// module chunks = 0","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_an-instance.js\n// module id = 442\n// module chunks = 0","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_for-of.js\n// module id = 443\n// module chunks = 0","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_invoke.js\n// module id = 444\n// module chunks = 0","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_microtask.js\n// module id = 445\n// module chunks = 0","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_user-agent.js\n// module id = 446\n// module chunks = 0","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_redefine-all.js\n// module id = 447\n// module chunks = 0","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_set-species.js\n// module id = 448\n// module chunks = 0","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.promise.finally.js\n// module id = 449\n// module chunks = 0","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.promise.try.js\n// module id = 450\n// module chunks = 0","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/assign.js\n// module id = 451\n// module chunks = 0","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.assign.js\n// module id = 452\n// module chunks = 0","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-assign.js\n// module id = 453\n// module chunks = 0","/**\n *\n * @module loggingApi\n *\n */\n\n// import Check from 'check-types';\nimport Logging from './../logging/entry';\n\n/**\n *\n * @class LoggingApi\n * @desc Manages information that is used for logging purposes.\n *\n */\nexport default class LoggingApi {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.info('LoggingApi', 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {String} id - The tracking ID that should be registered.\n * @param {String} forProvider - The provider that is tracking the ID.\n * @desc Registers an ID for third party tracking.\n * @returns {Promise}\n *\n */\n registerCorrelationId(id, forProvider) { // eslint-disable-line\n\n // const method = 'LoggingApi.registerCorrelationId(id, forProvider)';\n // const idError = `${method} id should be a String with length`;\n // const forProviderError = `${method} forProvider should be a String with length`;\n\n // Check.assert.nonEmptyString(id, idError, InvalidArgumentException);\n // Check.assert.nonEmptyString(forProvider, forProviderError, InvalidArgumentException);\n\n return new Promise((resolve, reject) => {\n return reject(new Error('Not Implemented'));\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} forProvider - The provider that is tracking the ID.\n * @desc Unregisters an ID for third party tracking.\n * @returns {Promise}\n *\n */\n deregisterCorrelationId(forProvider) { // eslint-disable-line\n\n // const method = 'LoggingApi.deregisterCorrelationId(forProvider)';\n // const forProviderError = `${method} forProvider should be a String with length`;\n\n // Check.assert.nonEmptyString(forProvider, forProviderError, InvalidArgumentException);\n\n return new Promise((resolve, reject) => {\n return reject(new Error('Not Implemented'));\n });\n\n }\n\n /**\n *\n * @access private\n * @desc All currently registered third party tracking identifiers\n * @returns {Promise}\n *\n */\n correlationIds() {\n\n return new Promise((resolve, reject) => {\n return reject(new Error('Not Implemented'));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/logging/loggingApi.js","/**\n *\n * @module logger\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/logging.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/dust.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/logging/Logging.md\n *\n */\n\nimport Check from 'check-types';\nimport LogSink from './logSink';\n// import Metric from './metric';\nimport LogEvent from './logEvent';\nimport LogLevel from './logLevel';\nimport ConsoleSink from './sinks/consoleSink';\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class Logger\n * @desc A logging system that can represent both messages and metric events,\n * and push them to various Sinks (logging output locations). Each sink is responsible\n * for (optionally) processing the event and outputting it. Examples of sinks include\n * the platform console, AWS, files on disk, etc.\n *\n */\nexport default class Logger {\n\n constructor() {\n\n /**\n *\n * @access public\n * @type {LogSink[]}\n *\n */\n this.sinks = [];\n\n }\n\n /**\n *\n * @access public\n * @param {String} source\n * @param {Metric|String} metricOrMessage\n * @param {Boolean} [isPublic=false]\n * @returns {Promise}\n *\n */\n log(source, metricOrMessage, isPublic = false) {\n\n return this.logWithOverrideLevel(source, metricOrMessage, isPublic);\n\n }\n\n /**\n *\n * @access private\n * @param {LogSink} sink\n * @returns {Promise}\n *\n */\n addSink(sink) {\n\n const errorMessage = {\n method: 'Logger.addSink(sink)',\n get sink() {\n return `${this.method} needs LogSink instance`;\n }\n };\n\n instanceStrict(sink, LogSink, errorMessage.sink);\n\n return new Promise((resolve) => {\n\n if (!this.sinks.includes(sink)) {\n this.sinks.push(sink);\n }\n\n resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {LogSink} sink\n * @returns {Promise}\n *\n */\n removeSink(sink) {\n\n const errorMessage = {\n method: 'Logger.removeSink(sink)',\n get sink() {\n return `${this.method} needs LogSink instance`;\n }\n };\n\n instanceStrict(sink, LogSink, errorMessage.sink);\n\n return new Promise((resolve) => {\n\n this.sinks = this.sinks.filter((s) => s !== sink);\n\n resolve();\n\n });\n\n }\n\n /*# region: public non-api */\n\n /**\n *\n * @function none\n * @memberOf {Logger}\n * @desc shorthand for #log with level override, takes the same arguments\n *\n */\n\n /**\n *\n * @function trace\n * @memberOf {Logger}\n * @desc shorthand for #log with level override\n *\n */\n\n /**\n *\n * @function debug\n * @memberOf {Logger}\n * @desc shorthand for #log with level override\n *\n */\n\n /**\n *\n * @function info\n * @memberOf {Logger}\n * @desc shorthand for #log with level override\n *\n */\n\n /**\n *\n * @function warn\n * @memberOf {Logger}\n * @desc shorthand for #log with level override\n *\n */\n\n /**\n *\n * @function error\n * @memberOf {Logger}\n * @desc shorthand for #log with level override\n *\n */\n\n /**\n *\n * @param {Boolean} [state=true] whether to enable the console sink\n * @returns {Promise}\n *\n */\n console(state = true) {\n\n return new Promise((resolve) => {\n\n this.sinks = this.sinks.filter((sink) => {\n return !(sink instanceof ConsoleSink);\n });\n\n if (state) {\n this.sinks.push(new ConsoleSink(LogLevel.none));\n }\n\n return resolve();\n\n });\n\n }\n\n /*# region: private */\n\n /**\n *\n * @access private\n * @param {String} source\n * @param {Metric|String} metricOrMessage\n * @param {Boolean} [isPublic=false]\n * @param {LogLevel} [overrideLevel=this.baseLogLevel]\n * @returns {Promise}\n *\n */\n logWithOverrideLevel(source, metricOrMessage, isPublic = false, overrideLevel = this.baseLogLevel) {\n\n // if there is only a source and no message, treat the source as the message\n if (typeof source === 'string' && typeof metricOrMessage === 'undefined') {\n return this.logMessage('', source, isPublic, overrideLevel);\n }\n\n if (typeof metricOrMessage === 'string') {\n return this.logMessage(source, metricOrMessage, isPublic, overrideLevel);\n }\n\n if (overrideLevel) {\n metricOrMessage.level = overrideLevel;\n }\n\n return this.logMetric(source, metricOrMessage);\n\n }\n\n /**\n *\n * @access private\n * @param {*} source\n * @param {Metric} metric\n * @returns {Promise}\n *\n */\n logMetric(source, metric) {\n\n return new Promise((resolve) => {\n\n const { isPublic, level, name, extraData } = metric;\n\n const event = new LogEvent(\n isPublic,\n typeof level === 'undefined' ? LogLevel.none : level,\n source,\n name,\n extraData\n );\n\n for (const sink of this.sinks) {\n sink.log(event);\n }\n\n resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {*} source\n * @param {String} message\n * @param {Boolean} isPublic\n * @param {LogLevel} level\n * @returns {Promise}\n *\n */\n logMessage(source, message, isPublic, level) {\n\n return new Promise((resolve) => {\n\n const event = new LogEvent(\n isPublic,\n level === undefined ? LogLevel.none : level,\n source,\n message\n );\n\n for (const sink of this.sinks) {\n sink.log(event);\n }\n\n resolve();\n\n });\n\n }\n\n}\n\n/**\n *\n * @desc Adds shortcut functions for Logger#log by the name of the LogLevel\n * e.g. Logger#warn\n *\n */\nfor (const level of Object.keys(LogLevel)) {\n\n /** @type {String} level (not the LogLevel, but the name of it) */\n\n Logger.prototype[level] = function (source, metricOrMessage, isPublic = false) {\n return this.logWithOverrideLevel(source, metricOrMessage, isPublic, LogLevel[level]);\n };\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/logging/logger.js","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/keys.js\n// module id = 456\n// module chunks = 0","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.keys.js\n// module id = 457\n// module chunks = 0","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/get-iterator.js\n// module id = 458\n// module chunks = 0","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/core.get-iterator.js\n// module id = 459\n// module chunks = 0","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/create.js\n// module id = 460\n// module chunks = 0","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.create.js\n// module id = 461\n// module chunks = 0","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/json/stringify.js\n// module id = 462\n// module chunks = 0","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\n// module id = 463\n// module chunks = 0","var _Array$from = require(\"../core-js/array/from\");\n\nvar _isIterable = require(\"../core-js/is-iterable\");\n\nfunction _iterableToArray(iter) {\n if (_isIterable(Object(iter)) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return _Array$from(iter);\n}\n\nmodule.exports = _iterableToArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/iterableToArray.js\n// module id = 464\n// module chunks = 0","module.exports = require(\"core-js/library/fn/array/from\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/array/from.js\n// module id = 465\n// module chunks = 0","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/array/from.js\n// module id = 466\n// module chunks = 0","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.array.from.js\n// module id = 467\n// module chunks = 0","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_create-property.js\n// module id = 468\n// module chunks = 0","module.exports = require(\"core-js/library/fn/is-iterable\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/is-iterable.js\n// module id = 469\n// module chunks = 0","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/is-iterable.js\n// module id = 470\n// module chunks = 0","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/core.is-iterable.js\n// module id = 471\n// module chunks = 0","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/nonIterableSpread.js\n// module id = 472\n// module chunks = 0","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/symbol/iterator.js\n// module id = 473\n// module chunks = 0","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/symbol/index.js\n// module id = 474\n// module chunks = 0","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_meta.js\n// module id = 475\n// module chunks = 0","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_enum-keys.js\n// module id = 476\n// module chunks = 0","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_is-array.js\n// module id = 477\n// module chunks = 0","require('./_wks-define')('asyncIterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.symbol.async-iterator.js\n// module id = 478\n// module chunks = 0","require('./_wks-define')('observable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.symbol.observable.js\n// module id = 479\n// module chunks = 0","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/assertThisInitialized.js\n// module id = 480\n// module chunks = 0","module.exports = require(\"core-js/library/fn/object/get-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/object/get-prototype-of.js\n// module id = 481\n// module chunks = 0","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/get-prototype-of.js\n// module id = 482\n// module chunks = 0","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.get-prototype-of.js\n// module id = 483\n// module chunks = 0","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/set-prototype-of.js\n// module id = 484\n// module chunks = 0","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.set-prototype-of.js\n// module id = 485\n// module chunks = 0","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_set-proto.js\n// module id = 486\n// module chunks = 0","var _Object$setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nfunction _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/setPrototypeOf.js\n// module id = 487\n// module chunks = 0","'use strict';\nvar escapeStringRegexp = require('escape-string-regexp');\nvar ansiStyles = require('ansi-styles');\nvar stripAnsi = require('strip-ansi');\nvar hasAnsi = require('has-ansi');\nvar supportsColor = require('supports-color');\nvar defineProps = Object.defineProperties;\nvar isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM);\n\nfunction Chalk(options) {\n\t// detect mode if not set manually\n\tthis.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled;\n}\n\n// use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001b[94m';\n}\n\nvar styles = (function () {\n\tvar ret = {};\n\n\tObject.keys(ansiStyles).forEach(function (key) {\n\t\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\t\tret[key] = {\n\t\t\tget: function () {\n\t\t\t\treturn build.call(this, this._styles.concat(key));\n\t\t\t}\n\t\t};\n\t});\n\n\treturn ret;\n})();\n\nvar proto = defineProps(function chalk() {}, styles);\n\nfunction build(_styles) {\n\tvar builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder.enabled = this.enabled;\n\t// __proto__ is used because we must return a function, but there is\n\t// no way to create a function with a different prototype.\n\t/* eslint-disable no-proto */\n\tbuilder.__proto__ = proto;\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// support varags, but simply cast to string in case there's only one arg\n\tvar args = arguments;\n\tvar argsLen = args.length;\n\tvar str = argsLen !== 0 && String(arguments[0]);\n\n\tif (argsLen > 1) {\n\t\t// don't slice `arguments`, it prevents v8 optimizations\n\t\tfor (var a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || !str) {\n\t\treturn str;\n\t}\n\n\tvar nestedStyles = this._styles;\n\tvar i = nestedStyles.length;\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tvar originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\twhile (i--) {\n\t\tvar code = ansiStyles[nestedStyles[i]];\n\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\t}\n\n\t// Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue.\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction init() {\n\tvar ret = {};\n\n\tObject.keys(styles).forEach(function (name) {\n\t\tret[name] = {\n\t\t\tget: function () {\n\t\t\t\treturn build.call(this, [name]);\n\t\t\t}\n\t\t};\n\t});\n\n\treturn ret;\n}\n\ndefineProps(Chalk.prototype, init());\n\nmodule.exports = new Chalk();\nmodule.exports.styles = ansiStyles;\nmodule.exports.hasColor = hasAnsi;\nmodule.exports.stripColor = stripAnsi;\nmodule.exports.supportsColor = supportsColor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/chalk/index.js\n// module id = 488\n// module chunks = 0","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/escape-string-regexp/index.js\n// module id = 489\n// module chunks = 0","'use strict';\n\nfunction assembleStyles () {\n\tvar styles = {\n\t\tmodifiers: {\n\t\t\treset: [0, 0],\n\t\t\tbold: [1, 22], // 21 isn't widely supported and 22 does the same thing\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolors: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39]\n\t\t},\n\t\tbgColors: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49]\n\t\t}\n\t};\n\n\t// fix humans\n\tstyles.colors.grey = styles.colors.gray;\n\n\tObject.keys(styles).forEach(function (groupName) {\n\t\tvar group = styles[groupName];\n\n\t\tObject.keys(group).forEach(function (styleName) {\n\t\t\tvar style = group[styleName];\n\n\t\t\tstyles[styleName] = group[styleName] = {\n\t\t\t\topen: '\\u001b[' + style[0] + 'm',\n\t\t\t\tclose: '\\u001b[' + style[1] + 'm'\n\t\t\t};\n\t\t});\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t});\n\n\treturn styles;\n}\n\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ansi-styles/index.js\n// module id = 490\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 491\n// module chunks = 0","'use strict';\nvar ansiRegex = require('ansi-regex')();\n\nmodule.exports = function (str) {\n\treturn typeof str === 'string' ? str.replace(ansiRegex, '') : str;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/strip-ansi/index.js\n// module id = 492\n// module chunks = 0","'use strict';\nvar ansiRegex = require('ansi-regex');\nvar re = new RegExp(ansiRegex().source); // remove the `g` flag\nmodule.exports = re.test.bind(re);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/has-ansi/index.js\n// module id = 493\n// module chunks = 0","'use strict';\nvar argv = process.argv;\n\nvar terminator = argv.indexOf('--');\nvar hasFlag = function (flag) {\n\tflag = '--' + flag;\n\tvar pos = argv.indexOf(flag);\n\treturn pos !== -1 && (terminator !== -1 ? pos < terminator : true);\n};\n\nmodule.exports = (function () {\n\tif ('FORCE_COLOR' in process.env) {\n\t\treturn true;\n\t}\n\n\tif (hasFlag('no-color') ||\n\t\thasFlag('no-colors') ||\n\t\thasFlag('color=false')) {\n\t\treturn false;\n\t}\n\n\tif (hasFlag('color') ||\n\t\thasFlag('colors') ||\n\t\thasFlag('color=true') ||\n\t\thasFlag('color=always')) {\n\t\treturn true;\n\t}\n\n\tif (process.stdout && !process.stdout.isTTY) {\n\t\treturn false;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn true;\n\t}\n\n\tif ('COLORTERM' in process.env) {\n\t\treturn true;\n\t}\n\n\tif (process.env.TERM === 'dumb') {\n\t\treturn false;\n\t}\n\n\tif (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {\n\t\treturn true;\n\t}\n\n\treturn false;\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/supports-color/index.js\n// module id = 494\n// module chunks = 0","// ansi_up.js\n// version : 1.3.0\n// author : Dru Nelson\n// license : MIT\n// http://github.com/drudru/ansi_up\n\n(function (Date, undefined) {\n\n var ansi_up,\n VERSION = \"1.3.0\",\n\n // check for nodeJS\n hasModule = (typeof module !== 'undefined'),\n\n // Normal and then Bright\n ANSI_COLORS = [\n [\n { color: \"0, 0, 0\", 'class': \"ansi-black\" },\n { color: \"187, 0, 0\", 'class': \"ansi-red\" },\n { color: \"0, 187, 0\", 'class': \"ansi-green\" },\n { color: \"187, 187, 0\", 'class': \"ansi-yellow\" },\n { color: \"0, 0, 187\", 'class': \"ansi-blue\" },\n { color: \"187, 0, 187\", 'class': \"ansi-magenta\" },\n { color: \"0, 187, 187\", 'class': \"ansi-cyan\" },\n { color: \"255,255,255\", 'class': \"ansi-white\" }\n ],\n [\n { color: \"85, 85, 85\", 'class': \"ansi-bright-black\" },\n { color: \"255, 85, 85\", 'class': \"ansi-bright-red\" },\n { color: \"0, 255, 0\", 'class': \"ansi-bright-green\" },\n { color: \"255, 255, 85\", 'class': \"ansi-bright-yellow\" },\n { color: \"85, 85, 255\", 'class': \"ansi-bright-blue\" },\n { color: \"255, 85, 255\", 'class': \"ansi-bright-magenta\" },\n { color: \"85, 255, 255\", 'class': \"ansi-bright-cyan\" },\n { color: \"255, 255, 255\", 'class': \"ansi-bright-white\" }\n ]\n ],\n\n // 256 Colors Palette\n PALETTE_COLORS;\n\n function Ansi_Up() {\n this.fg = this.bg = this.fg_truecolor = this.bg_truecolor = null;\n this.bright = 0;\n }\n\n Ansi_Up.prototype.setup_palette = function() {\n PALETTE_COLORS = [];\n // Index 0..15 : System color\n (function() {\n var i, j;\n for (i = 0; i < 2; ++i) {\n for (j = 0; j < 8; ++j) {\n PALETTE_COLORS.push(ANSI_COLORS[i][j]['color']);\n }\n }\n })();\n\n // Index 16..231 : RGB 6x6x6\n // https://gist.github.com/jasonm23/2868981#file-xterm-256color-yaml\n (function() {\n var levels = [0, 95, 135, 175, 215, 255];\n var format = function (r, g, b) { return levels[r] + ', ' + levels[g] + ', ' + levels[b] };\n var r, g, b;\n for (r = 0; r < 6; ++r) {\n for (g = 0; g < 6; ++g) {\n for (b = 0; b < 6; ++b) {\n PALETTE_COLORS.push(format.call(this, r, g, b));\n }\n }\n }\n })();\n\n // Index 232..255 : Grayscale\n (function() {\n var level = 8;\n var format = function(level) { return level + ', ' + level + ', ' + level };\n var i;\n for (i = 0; i < 24; ++i, level += 10) {\n PALETTE_COLORS.push(format.call(this, level));\n }\n })();\n };\n\n Ansi_Up.prototype.escape_for_html = function (txt) {\n return txt.replace(/[&<>]/gm, function(str) {\n if (str == \"&\") return \"&\";\n if (str == \"<\") return \"<\";\n if (str == \">\") return \">\";\n });\n };\n\n Ansi_Up.prototype.linkify = function (txt) {\n return txt.replace(/(https?:\\/\\/[^\\s]+)/gm, function(str) {\n return \"\" + str + \"\";\n });\n };\n\n Ansi_Up.prototype.ansi_to_html = function (txt, options) {\n return this.process(txt, options, true);\n };\n\n Ansi_Up.prototype.ansi_to_text = function (txt) {\n var options = {};\n return this.process(txt, options, false);\n };\n\n Ansi_Up.prototype.process = function (txt, options, markup) {\n var self = this;\n var raw_text_chunks = txt.split(/\\033\\[/);\n var first_chunk = raw_text_chunks.shift(); // the first chunk is not the result of the split\n\n var color_chunks = raw_text_chunks.map(function (chunk) {\n return self.process_chunk(chunk, options, markup);\n });\n\n color_chunks.unshift(first_chunk);\n\n return color_chunks.join('');\n };\n\n Ansi_Up.prototype.process_chunk = function (text, options, markup) {\n\n // Are we using classes or styles?\n options = typeof options == 'undefined' ? {} : options;\n var use_classes = typeof options.use_classes != 'undefined' && options.use_classes;\n var key = use_classes ? 'class' : 'color';\n\n // Each 'chunk' is the text after the CSI (ESC + '[') and before the next CSI/EOF.\n //\n // This regex matches four groups within a chunk.\n //\n // The first and third groups match code type.\n // We supported only SGR command. It has empty first group and 'm' in third.\n //\n // The second group matches all of the number+semicolon command sequences\n // before the 'm' (or other trailing) character.\n // These are the graphics or SGR commands.\n //\n // The last group is the text (including newlines) that is colored by\n // the other group's commands.\n var matches = text.match(/^([!\\x3c-\\x3f]*)([\\d;]*)([\\x20-\\x2c]*[\\x40-\\x7e])([\\s\\S]*)/m);\n\n if (!matches) return text;\n\n var orig_txt = matches[4];\n var nums = matches[2].split(';');\n\n // We currently support only \"SGR\" (Select Graphic Rendition)\n // Simply ignore if not a SGR command.\n if (matches[1] !== '' || matches[3] !== 'm') {\n return orig_txt;\n }\n\n if (!markup) {\n return orig_txt;\n }\n\n var self = this;\n\n while (nums.length > 0) {\n var num_str = nums.shift();\n var num = parseInt(num_str);\n\n if (isNaN(num) || num === 0) {\n self.fg = self.bg = null;\n self.bright = 0;\n } else if (num === 1) {\n self.bright = 1;\n } else if (num == 39) {\n self.fg = null;\n } else if (num == 49) {\n self.bg = null;\n } else if ((num >= 30) && (num < 38)) {\n self.fg = ANSI_COLORS[self.bright][(num % 10)][key];\n } else if ((num >= 90) && (num < 98)) {\n self.fg = ANSI_COLORS[1][(num % 10)][key];\n } else if ((num >= 40) && (num < 48)) {\n self.bg = ANSI_COLORS[0][(num % 10)][key];\n } else if ((num >= 100) && (num < 108)) {\n self.bg = ANSI_COLORS[1][(num % 10)][key];\n } else if (num === 38 || num === 48) { // extend color (38=fg, 48=bg)\n (function() {\n var is_foreground = (num === 38);\n if (nums.length >= 1) {\n var mode = nums.shift();\n if (mode === '5' && nums.length >= 1) { // palette color\n var palette_index = parseInt(nums.shift());\n if (palette_index >= 0 && palette_index <= 255) {\n if (!use_classes) {\n if (!PALETTE_COLORS) {\n self.setup_palette.call(self);\n }\n if (is_foreground) {\n self.fg = PALETTE_COLORS[palette_index];\n } else {\n self.bg = PALETTE_COLORS[palette_index];\n }\n } else {\n var klass = (palette_index >= 16)\n ? ('ansi-palette-' + palette_index)\n : ANSI_COLORS[palette_index > 7 ? 1 : 0][palette_index % 8]['class'];\n if (is_foreground) {\n self.fg = klass;\n } else {\n self.bg = klass;\n }\n }\n }\n } else if(mode === '2' && nums.length >= 3) { // true color\n var r = parseInt(nums.shift());\n var g = parseInt(nums.shift());\n var b = parseInt(nums.shift());\n if ((r >= 0 && r <= 255) && (g >= 0 && g <= 255) && (b >= 0 && b <= 255)) {\n var color = r + ', ' + g + ', ' + b;\n if (!use_classes) {\n if (is_foreground) {\n self.fg = color;\n } else {\n self.bg = color;\n }\n } else {\n if (is_foreground) {\n self.fg = 'ansi-truecolor';\n self.fg_truecolor = color;\n } else {\n self.bg = 'ansi-truecolor';\n self.bg_truecolor = color;\n }\n }\n }\n }\n }\n })();\n }\n }\n\n if ((self.fg === null) && (self.bg === null)) {\n return orig_txt;\n } else {\n var styles = [];\n var classes = [];\n var data = {};\n var render_data = function (data) {\n var fragments = [];\n var key;\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n fragments.push('data-' + key + '=\"' + this.escape_for_html(data[key]) + '\"');\n }\n }\n return fragments.length > 0 ? ' ' + fragments.join(' ') : '';\n };\n\n if (self.fg) {\n if (use_classes) {\n classes.push(self.fg + \"-fg\");\n if (self.fg_truecolor !== null) {\n data['ansi-truecolor-fg'] = self.fg_truecolor;\n self.fg_truecolor = null;\n }\n } else {\n styles.push(\"color:rgb(\" + self.fg + \")\");\n }\n }\n if (self.bg) {\n if (use_classes) {\n classes.push(self.bg + \"-bg\");\n if (self.bg_truecolor !== null) {\n data['ansi-truecolor-bg'] = self.bg_truecolor;\n self.bg_truecolor = null;\n }\n } else {\n styles.push(\"background-color:rgb(\" + self.bg + \")\");\n }\n }\n if (use_classes) {\n return '' + orig_txt + '';\n } else {\n return '' + orig_txt + '';\n }\n }\n };\n\n // Module exports\n ansi_up = {\n\n escape_for_html: function (txt) {\n var a2h = new Ansi_Up();\n return a2h.escape_for_html(txt);\n },\n\n linkify: function (txt) {\n var a2h = new Ansi_Up();\n return a2h.linkify(txt);\n },\n\n ansi_to_html: function (txt, options) {\n var a2h = new Ansi_Up();\n return a2h.ansi_to_html(txt, options);\n },\n\n ansi_to_text: function (txt) {\n var a2h = new Ansi_Up();\n return a2h.ansi_to_text(txt);\n },\n\n ansi_to_html_obj: function () {\n return new Ansi_Up();\n }\n };\n\n // CommonJS module is defined\n if (hasModule) {\n module.exports = ansi_up;\n }\n /*global ender:false */\n if (typeof window !== 'undefined' && typeof ender === 'undefined') {\n window.ansi_up = ansi_up;\n }\n /*global define:false */\n if (typeof define === \"function\" && define.amd) {\n define(\"ansi_up\", [], function () {\n return ansi_up;\n });\n }\n})(Date);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ansi_up/ansi_up.js\n// module id = 495\n// module chunks = 0","/**\n *\n * @module metric\n *\n */\n\n/**\n *\n * @class Metric\n * @property {Boolean} isPublic\n * @property {LogLevel} level\n * @property {String} name\n * @property {Object} extraData\n *\n */\nexport default class Metric {\n\n /**\n *\n * @param {Boolean} [isPublic=false]\n * @param {LogLevel} [level=null]\n * @param {String} [name='']\n * @param {Object} [extraData = {}]\n *\n */\n constructor(isPublic = false, level = null, name = '', extraData = {}) {\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.isPublic = isPublic;\n\n /**\n *\n * @access private\n * @type {LogLevel}\n *\n */\n this.level = level;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.name = name;\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.extraData = extraData;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/logging/metric.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Account} entry point.\n *\n */\n\nimport Account from './account';\nimport AccountClient from './accountClient';\nimport AccountClientConfiguration from './accountClientConfiguration';\nimport AccountClientEndpoint from './accountClientEndpoint';\nimport AccountGrant from './accountGrant';\nimport Identity from './identity';\nimport UserProfile from './userProfile';\nimport CreateAccountResult from './createAccountResult';\nimport DeleteUserProfileResult from './deleteUserProfileResult';\nimport UpdateUserProfileResult from './updateUserProfileResult';\n\n/**\n *\n * @typedef SDK.Services.Account\n * @type {Object}\n *\n * @property {Account} Account\n * @property {AccountClient} AccountClient\n * @property {AccountClientConfiguration} AccountClientConfiguration\n * @property {AccountClientEndpoint} AccountClientEndpoint\n * @property {AccountGrant} AccountGrant\n * @property {Identity} Identity\n * @property {UserProfile} UserProfile\n * @property {CreateAccountResult} CreateAccountResult\n * @property {DeleteUserProfileResult} DeleteUserProfileResult\n * @property {UpdateUserProfileResult} UpdateUserProfileResult\n *\n */\n\n/**\n *\n * @type {SDK.Services.Account}\n *\n */\nexport default {\n\n Account,\n AccountClient,\n AccountClientConfiguration,\n AccountClientEndpoint,\n AccountGrant,\n Identity,\n UserProfile,\n CreateAccountResult,\n DeleteUserProfileResult,\n UpdateUserProfileResult\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/account/entry.js","/**\n *\n * @module accountClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/account.md\n * @see https://github.bamtech.co/services-commons/public-api/blob/master/swagger/services/account.md\n *\n */\n\n/* eslint-disable camelcase */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Exception from './../exception/entry';\nimport Token from './../token/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nimport Account from './account';\nimport AccountClientConfiguration from './accountClientConfiguration';\nimport AccountClientEndpoint from './accountClientEndpoint';\nimport AccountGrant from './accountGrant';\nimport CreateAccountResult from './createAccountResult';\nimport DeleteUserProfileResult from './deleteUserProfileResult';\nimport UserProfile from './userProfile';\nimport UpdateUserProfileResult from './updateUserProfileResult';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\nconst AccountClientDustUrnRefernce = DustUrnReference.services.account.accountClient;\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\n\nconst {\n instanceStrict,\n object,\n nonEmptyObject,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class AccountClient\n * @desc Provides a data client that can be used to access account services.\n *\n */\nexport default class AccountClient {\n\n /**\n *\n * @param {AccountClientConfiguration} accountClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(accountClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'AccountClient(accountClientConfiguration, logger, httpClient)',\n get accountClientConfiguration() {\n return `${this.ctor} needs AccountClientConfiguration instance`;\n }\n };\n\n instanceStrict(accountClientConfiguration, AccountClientConfiguration, errorMessage.accountClientConfiguration, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @type {AccountClientConfiguration}\n *\n */\n this.config = accountClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {String}\n * @desc determines if you should refresh the access token\n *\n */\n this.refreshAccessTokenHeader = 'X-BAMTech-Refresh-Access-Token';\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(AccountClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @param {String} options.identityToken - Identity to create the account from.\n * @param {Object} options.attributes - Attributes to create with the account.\n * @param {SDK.Services.Token.AccessToken} options.accessToken - The access token to provide user context\n * @note {Object} [options.metadata] - Object which may hold additional information about the account\n * @desc Create an account by providing an id token and some registration information.\n * @returns {Promise} The account ID if successfully created.\n *\n */\n createAccount(options) {\n\n const errorMessage = {\n method: 'AccountClient.createAccount(options)',\n get options() {\n return `${this.method} should be a non-empty Object`;\n },\n get identityToken() {\n return `${this.method} identityToken should be a String with length`;\n },\n get attributes() {\n return `${this.method} attributes should be an Object`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n },\n get metadata() {\n return `${this.method} metadata should be an Object`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { identityToken, attributes, accessToken, metadata } = options;\n\n nonEmptyString(identityToken, errorMessage.identityToken, InvalidArgumentException);\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n if (Check.assigned(metadata)) {\n object(metadata, errorMessage.metadata, InvalidArgumentException);\n }\n\n const { dustEnabled, logger, httpClient } = this;\n\n const body = Object.assign({ id_token: identityToken }, attributes, metadata);\n\n const payload = this.getPayload(\n accessToken,\n AccountClientEndpoint.createAccount,\n body\n );\n\n logger.info(AccountClient.name, 'Attempting to create account.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountClient.name,\n urn: AccountClientDustUrnRefernce.createAccount,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n const { accountId } = data;\n\n return Promise.resolve(new CreateAccountResult(accountId));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Get an account grant by providing some proof of identity e.g. id token.\n * @returns {Promise} The account resource identified in the access token.\n *\n */\n getCurrentAccount(accessToken) {\n\n const errorMessage = {\n method: 'AccountClient.getCurrentAccount(accessToken)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n AccountClientEndpoint.getCurrentAccount\n );\n\n logger.info(AccountClient.name, 'Get current account based on provided token.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountClient.name,\n urn: AccountClientDustUrnRefernce.getCurrentAccount,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n const { accountId, activeProfile, attributes, identities } = data;\n\n const activeUserProfile = new UserProfile(activeProfile);\n const options = {\n accountId,\n activeUserProfile,\n attributes,\n identities\n };\n\n return Promise.resolve(new Account(options));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} identityToken - Identity to get the account grant for.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Get an account grant by providing some proof of identity e.g. id token.\n * @returns {Promise} An account grant that can be exchanged for an access token if successful.\n *\n */\n createAccountGrant(identityToken, accessToken) {\n\n const errorMessage = {\n method: 'AccountClient.createAccountGrant(identityToken, accessToken)',\n get identityToken() {\n return `${this.method} identityToken should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(identityToken, errorMessage.identityToken, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n AccountClientEndpoint.createAccountGrant,\n {\n id_token: identityToken\n }\n );\n\n logger.log(AccountClient.name, 'Attempting to create account grant.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountClient.name,\n urn: AccountClientDustUrnRefernce.createAccountGrant,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n const { assertion, grant_type } = data;\n\n return Promise.resolve(new AccountGrant({\n assertion,\n grant_type\n }));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {Object} attributes - The account attributes to update.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Update the account attributes of the account identified in the access token,\n * if field(s) are missing from the request body, the original value will be left intact.\n * @returns {Promise} An awaitable task indicating settings were updated successfully.\n *\n */\n updateAttributes(attributes, accessToken) {\n\n const errorMessage = {\n method: 'AccountClient.updateAttributes(attributes, accessToken)',\n get attributes() {\n return `${this.method} attributes should be an Object`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n AccountClientEndpoint.updateAccountAttributes,\n attributes\n );\n\n logger.info(AccountClient.name, 'Update account attributes.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountClient.name,\n urn: AccountClientDustUrnRefernce.updateAttributes,\n payload,\n method: HttpMethod.PATCH\n });\n\n if (Object.keys(attributes).length) {\n logger.info(AccountClient.name, `Account attributes to update - \"${JSON.stringify(attributes)}\".`);\n }\n\n return httpClient.patch(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {String} profileName the name of the profile\n * @param {Object} [attributes={}] attributes associated with this profile\n * @param {Object} [metadata={}] optional metadata used when creating an account\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @returns {Promise}\n *\n */\n createUserProfile(profileName, attributes = {}, metadata = {}, accessToken) {\n\n const errorMessage = {\n method: 'AccountClient.createUserProfile(profileName, attributes, metadata, accessToken)',\n get profileName() {\n return `${this.method} profileName should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(profileName, errorMessage.profileName, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n AccountClientEndpoint.createUserProfile,\n {\n profileName,\n attributes,\n metadata\n }\n );\n\n logger.info(AccountClient.name, 'Create user profile.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountClient.name,\n urn: AccountClientDustUrnRefernce.createUserProfile,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(new UserProfile(data));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {String} profileId\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @returns {Promise}\n *\n */\n deleteUserProfile(profileId, accessToken) {\n\n const errorMessage = {\n method: 'AccountClient.deleteUserProfile(profileId, accessToken)',\n get profileId() {\n return `${this.method} profileId should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(profileId, errorMessage.profileId, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n AccountClientEndpoint.deleteUserProfile,\n null,\n profileId\n );\n\n logger.info(AccountClient.name, 'Delete user profile.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountClient.name,\n urn: AccountClientDustUrnRefernce.deleteUserProfile,\n payload,\n method: HttpMethod.DELETE\n });\n\n return httpClient.del(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n let accountGrant;\n\n const { data } = response;\n\n if (Check.assigned(data.assertion)) {\n accountGrant = new AccountGrant(data);\n }\n\n return Promise.resolve(new DeleteUserProfileResult(accountGrant));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {String} profileId\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @returns {Promise}\n *\n */\n getUserProfile(profileId, accessToken) {\n\n const errorMessage = {\n method: 'AccountClient.getUserProfile(profileId, accessToken)',\n get profileId() {\n return `${this.method} profileId should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(profileId, errorMessage.profileId, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n AccountClientEndpoint.getUserProfile,\n null,\n profileId\n );\n\n logger.info(AccountClient.name, 'Get user profile.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountClient.name,\n urn: AccountClientDustUrnRefernce.getUserProfile,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(new UserProfile(data));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @returns {Promise>}\n *\n */\n getUserProfiles(accessToken) {\n\n const errorMessage = {\n method: 'AccountClient.getUserProfiles(accessToken)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n AccountClientEndpoint.getUserProfiles,\n null\n );\n\n logger.info(AccountClient.name, 'Get user profiles.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountClient.name,\n urn: AccountClientDustUrnRefernce.getUserProfiles,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data = [] } = response;\n\n const userProfiles = data.map((profile) => new UserProfile(profile));\n\n return Promise.resolve(userProfiles);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {String} profileId\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @returns {Promise}\n *\n */\n setActiveUserProfile(profileId, accessToken) {\n\n const errorMessage = {\n method: 'AccountClient.setActiveUserProfile(profileId, accessToken)',\n get profileId() {\n return `${this.method} profileId should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(profileId, errorMessage.profileId, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n AccountClientEndpoint.setActiveUserProfile,\n null,\n profileId\n );\n\n logger.info(AccountClient.name, 'Set active user profile.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountClient.name,\n urn: AccountClientDustUrnRefernce.setActiveUserProfile,\n payload,\n method: HttpMethod.PUT\n });\n\n return httpClient.put(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(new AccountGrant(data));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @returns {Promise}\n *\n */\n getActiveUserProfile(accessToken) {\n\n const errorMessage = {\n method: 'AccountClient.getActiveUserProfile(accessToken)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n AccountClientEndpoint.getActiveUserProfile,\n null\n );\n\n logger.info(AccountClient.name, 'Get active user profile.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountClient.name,\n urn: AccountClientDustUrnRefernce.getActiveUserProfile,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(new UserProfile(data));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {UserProfile} userProfile\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @returns {Promise}\n *\n */\n updateUserProfile(userProfile, accessToken) {\n\n const errorMessage = {\n method: 'AccountClient.updateUserProfile(userProfile, accessToken)',\n get userProfile() {\n return `${this.method} needs UserProfile instance`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(userProfile, UserProfile, errorMessage.userProfile, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n const { profileId, profileName, attributes, metadata } = userProfile;\n\n const payload = this.getPayload(\n accessToken,\n AccountClientEndpoint.updateUserProfile,\n {\n profileId,\n profileName,\n attributes,\n metadata\n },\n profileId\n );\n\n logger.info(AccountClient.name, 'Set active user profile.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountClient.name,\n urn: AccountClientDustUrnRefernce.updateUserProfile,\n payload,\n method: HttpMethod.PATCH\n });\n\n return httpClient.patch(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { refreshAccessTokenHeader } = this;\n const { headers } = response;\n\n const refreshAccessToken = headers.get(refreshAccessTokenHeader) === 'true';\n\n return Promise.resolve(new UpdateUserProfileResult(refreshAccessToken));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {String} rel\n * @param {Object} body\n * @param {String} profileId\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, body, profileId) {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { headers } = endpoint;\n const requestBody = body ? JSON.stringify(body) : '';\n const requestHeaders = Object.assign({}, headers);\n\n let href = endpoint.href;\n\n if (endpoint.templated && profileId) {\n href = href.replace(/\\{profileId\\}/gi, profileId);\n }\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi, accessToken.token);\n\n return {\n url: href,\n body: requestBody,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/account/accountClient.js","/**\n *\n * @module errorCode\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/Error-Handling.mm\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/Error-Handling.md#error-cases\n *\n */\n\nimport ExceptionReference from './exceptionReference';\n\n/**\n *\n * @access private\n * @typedef SDK.Services.Exception.ErrorCode\n * @type {Object}\n * @since 3.7.0\n * @desc Internal error code reference object.\n *\n */\n\n/**\n *\n * @type {SDK.Services.Exception.ErrorCode}\n *\n */\nexport default {\n accountBlocked: {\n code: 'account.blocked',\n exceptionData: ExceptionReference.account.accountBlocked\n },\n accountGetFailed: {\n code: 'account.get.failed',\n exceptionData: ExceptionReference.account.accountNotFound\n },\n accountNotFound: {\n code: 'account.not.found',\n exceptionData: ExceptionReference.account.accountNotFound\n },\n accountProfileDeleteFailed: {\n code: 'account.profile.delete.failed',\n exceptionData: ExceptionReference.userProfile.userProfileDeleteFailed\n },\n accountProfileNotFound: {\n code: 'account.profile.not.found',\n exceptionData: ExceptionReference.userProfile.userProfileNotFound\n },\n accountProfileReadFailed: {\n code: 'account.profile.read.failed',\n exceptionData: ExceptionReference.userProfile.profileRetrieval\n },\n accountProfileUpdateFailed: {\n code: 'account.profile.update.failed',\n exceptionData: ExceptionReference.userProfile.userProfileUpdateFailed\n },\n accountProfilesMaxExceeded: {\n code: 'account.profiles.max.exceeded',\n exceptionData: ExceptionReference.userProfile.maximumProfilesReached\n },\n accountResolution: {\n code: 'account.resolution.failure',\n exceptionData: ExceptionReference.eligibility.accountResolution\n },\n authorizationExpired: {\n code: 'access-token.expired',\n exceptionData: ExceptionReference.media.authorizationExpired\n },\n blackout: {\n code: 'blackout',\n exceptionData: ExceptionReference.media.blackout\n },\n clientRevoked: {\n code: 'client-revoked',\n exceptionData: ExceptionReference.media.mediaNotAllowed\n },\n clockSync: {\n code: 'clock-sync',\n exceptionData: ExceptionReference.media.mediaNotAllowed\n },\n copyFailure: {\n code: 'copy.failure',\n exceptionData: ExceptionReference.account.linkSubscriptionPartial\n },\n copyLimitReached: {\n code: 'copy.limit.reached',\n exceptionData: ExceptionReference.account.linkSubscriptionPartial\n },\n huluService: {\n code: 'hulu.service.failure',\n exceptionData: ExceptionReference.eligibility.huluService\n },\n idpErrorAttributesUpdateFailed: {\n code: 'idp.error.attributes.update.failed',\n exceptionData: ExceptionReference.bamIdentity.attributeUpdateFailed\n },\n idpErrorIdentityAlreadyExists: {\n code: 'idp.error.identity.already-exists',\n exceptionData: ExceptionReference.bamIdentity.updateIdentityConflict\n },\n idpErrorIdentityBadCredentials: {\n code: 'idp.error.identity.bad-credentials',\n exceptionData: ExceptionReference.bamIdentity.invalidCredentials\n },\n idpErrorPayloadFieldsIncorrect: {\n code: 'idp.error.payload.fields.incorrect',\n exceptionData: ExceptionReference.bamIdentity.invalidEmail\n },\n idpErrorResetTokenAlreadyUsed: {\n code: 'idp.error.reset-token.already-used',\n exceptionData: ExceptionReference.bamIdentity.tokenAlreadyUsed\n },\n idpErrorResetTokenInvalid: {\n code: 'idp.error.reset-token.invalid',\n exceptionData: ExceptionReference.bamIdentity.tokenInvalid\n },\n idpErrorInvalidPassword: {\n code: 'idp.error.password.invalid-value',\n exceptionData: ExceptionReference.bamIdentity.invalidPassword\n },\n idpErrorAuthenticationBlocked: {\n code: 'idp.error.identity.blocked',\n exceptionData: ExceptionReference.bamIdentity.authenticationBlocked\n },\n idpErrorIdentityNotFound: {\n code: 'idp.error.identity.not-found',\n exceptionData: ExceptionReference.bamIdentity.notFound\n },\n invalidGrant: {\n code: 'invalid_grant',\n description: ['expired-token'],\n exceptionData: ExceptionReference.common.authenticationExpired\n },\n invalidPasscode: {\n code: 'idp.error.otp.invalid-passcode',\n exceptionData: ExceptionReference.bamIdentity.invalidPasscode\n },\n loginRequired: {\n code: 'login-required',\n exceptionData: ExceptionReference.media.loginRequired\n },\n mediaMissing: {\n code: 'media.missing',\n exceptionData: ExceptionReference.media.mediaUnavailable\n },\n mediaNotPlayable: {\n code: 'media.not-playable',\n exceptionData: ExceptionReference.media.mediaUnavailable\n },\n notEntitled: {\n code: 'not-entitled',\n exceptionData: ExceptionReference.media.notEntitled\n },\n notPermittedOffline: {\n code: 'not-permitted-offline',\n exceptionData: ExceptionReference.media.offlineNotPermitted\n },\n kidsModeEnabled: {\n code: 'kids-mode-enabled',\n exceptionData: ExceptionReference.media.kidsModeEnabled\n },\n orderProductBlocked: {\n code: 'order.product.blocked',\n exceptionData: ExceptionReference.commerce.orderProductBlocked\n },\n orderFraud: {\n code: 'order.ft.fraud',\n exceptionData: ExceptionReference.commerce.orderFraud\n },\n orderPaymentDeclined: {\n code: 'order.payment.declined',\n exceptionData: ExceptionReference.commerce.orderPaymentDeclined\n },\n payloadFieldsIncorrect: {\n code: 'payload.fields.incorrect',\n exceptionData: ExceptionReference.account.attributeValidation\n },\n payloadIdTokenInvalid: {\n code: 'payload.id-token.invalid',\n exceptionData: ExceptionReference.account.invalidToken\n },\n rateLimited: {\n code: 'idp.error.auth.otp.throttled',\n exceptionData: ExceptionReference.bamIdentity.rateLimited\n },\n securityLevel: {\n code: 'security-level',\n exceptionData: ExceptionReference.media.mediaNotAllowed\n },\n streamConcurrencyViolation: {\n code: 'stream-concurrency-violation',\n exceptionData: ExceptionReference.media.streamConcurrency\n },\n unauthorizedClient: {\n code: 'unauthorized_client',\n description: ['unknown-location', 'unreliable-location', 'forbidden-location'],\n exceptionData: ExceptionReference.common.locationNotAllowed\n },\n unspecifiedDrmError: {\n code: 'unspecified-drm-error',\n exceptionData: ExceptionReference.media.drm\n },\n tokenExpired: {\n code: 'token.expired',\n exceptionData: ExceptionReference.purchase.activationTokenExpired\n },\n tokenInvalid: {\n code: 'token.invalid',\n exceptionData: ExceptionReference.purchase.activationBadRequest\n },\n tokenMissing: {\n code: 'token.missing',\n exceptionData: ExceptionReference.purchase.activationBadRequest\n },\n linkedElsewhere: {\n code: 'linked.elsewhere',\n exceptionData: ExceptionReference.purchase.activationForbidden\n },\n tokenForbidden: {\n code: 'token.forbidden',\n exceptionData: ExceptionReference.purchase.activationForbidden\n },\n expectedSubscriptionsNotFound: {\n code: 'expected.subscriptions.not.found',\n exceptionData: ExceptionReference.purchase.bundleForbidden\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/exception/errorCode.js","/**\n *\n * @module providerException\n *\n */\n\nimport ErrorReason from './errorReason';\nimport ServiceException from './serviceException';\n\n/**\n *\n * @class ProviderException\n * @extends {ServiceException}\n * @desc An unexpected error occurred with a platform provider implementation.\n *\n */\nexport default class ProviderException extends ServiceException {\n\n /**\n *\n * @param {String} message - Human-readable description of the error.\n *\n */\n constructor(message) {\n\n const reasons = [new ErrorReason('', message)];\n const exceptionData = {\n name: 'ProviderException',\n message\n };\n\n const options = { reasons, exceptionData };\n\n super(options);\n\n }\n\n /**\n *\n * @access public\n * @returns {String}\n *\n */\n static get typeName() {\n return 'ProviderException';\n }\n\n /**\n *\n * @access public\n * @desc A brief message describing the exception\n * @returns {String}\n *\n */\n static get message() {\n return 'An unexpected error occurred with a platform provider implementation.';\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/exception/providerException.js","/**\n *\n * @module accessToken\n *\n */\n\n/**\n *\n * @class AccessToken\n * @desc Provides the interface used to exchange tokens to provide access to service requests.\n *\n */\nexport default class AccessToken {\n\n /**\n *\n * @param {String} token\n *\n */\n constructor(token) {\n\n /**\n *\n * @access public\n * @param {String} token\n * @desc The access token issued by the authorization server.\n *\n */\n this.token = token;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/accessToken.js","/**\n *\n * @module deviceGrant\n *\n */\n\nimport Grant from './grant';\n\n/**\n *\n * @class DeviceGrant\n * @extends {Grant}\n * @desc A special type of grant used for exchanging device information for a token.\n *\n */\nexport default class DeviceGrant extends Grant {\n\n /**\n *\n * @param {String} grantType\n * @param {String} assertion\n *\n */\n constructor(grantType, assertion) {\n\n super(grantType, assertion);\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Key used to lookup the subject_token_type value needed during token exchange.\n *\n */\n this.subjectTokenTypeKey = 'device';\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/deviceGrant.js","/**\n *\n * @module identityToken\n *\n */\n\nimport Check from 'check-types';\n\nimport SecurityAction from './securityAction';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyObject,\n nonEmptyString,\n number\n} = Check.assert;\n\n/**\n *\n * @class IdentityToken\n *\n */\nexport default class IdentityToken {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.token\n * @param {Number} options.expiresIn\n * @param {Number} [options.issuedAt=Date.now()]\n * @param {SDK.Services.Token.SecurityAction} [options.securityAction]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get token() {\n return `${this.ctor} token should be a String with length`;\n },\n get expiresIn() {\n return `${this.ctor} expiresIn should be a Number`;\n },\n get issuedAt() {\n return `${this.ctor} issuedAt should be a Number`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { token, expiresIn, issuedAt = Date.now(), securityAction } = options;\n\n nonEmptyString(token, errorMessage.token, InvalidArgumentException);\n number(expiresIn, errorMessage.expiresIn, InvalidArgumentException);\n number(issuedAt, errorMessage.issuedAt, InvalidArgumentException);\n\n let checkedSecurityAction = null;\n\n if (Check.nonEmptyString(securityAction)) {\n\n // It's possible the service could return a value not in the SecurityAction enum.\n // In that case we don't want to throw an error, just default to SecurityAction.other.\n checkedSecurityAction = Object.values(SecurityAction).find((p) => p === securityAction)\n || SecurityAction.other;\n\n }\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.token = token;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.expiresIn = expiresIn;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.issuedAt = issuedAt;\n\n /**\n *\n * @access private\n * @since 3.10.0\n * @type {SDK.Services.Token.SecurityAction|null}\n *\n */\n this.securityAction = checkedSecurityAction;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/identityToken.js","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/values.js\n// module id = 504\n// module chunks = 0","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es7.object.values.js\n// module id = 505\n// module chunks = 0","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/_object-to-array.js\n// module id = 506\n// module chunks = 0","/**\n *\n * @module temporaryGrant\n *\n */\n\nimport Grant from './grant';\n\n/**\n *\n * @class TemporaryGrant\n * @extends {Grant}\n * @desc A temporary grant, indicating the operation failed due to an\n * internal service error. This grant can be used to access content temporarily.\n *\n */\nexport default class TemporaryGrant extends Grant {\n\n /**\n *\n * @param {String} grantType\n * @param {String} assertion\n *\n */\n constructor(grantType, assertion) {\n\n super(grantType, assertion);\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Key used to lookup the subject_token_type value needed during token exchange.\n *\n */\n this.subjectTokenTypeKey = 'temporary';\n\n /**\n *\n * @access public\n * @type {Array}\n * @desc Gets a collection of errors responsible for why the temporary grant was provided.\n *\n */\n this.errors = [];\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/temporaryGrant.js","/**\n *\n * @module exchangeGrant\n *\n */\n\nimport Check from 'check-types';\nimport Grant from './grant';\nimport TokenRequestBuilder from './tokenRequestBuilder';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class ExchangeGrant\n * @extends {TokenRequestBuilder}\n * @desc Provides an implementation for ITokenRequestBuilder used to exchange a grant for an AccessContext.\n *\n */\nexport default class ExchangeGrant extends TokenRequestBuilder {\n\n /**\n *\n * @param {Grant} grant - The grant to build a TokenRequest for.\n * @param {String} subjectType - The subject_token_type of the grant.\n *\n */\n constructor(grant, subjectType) {\n\n const errorMessage = {\n ctor: 'ExchangeGrant(grant, subjectType)',\n get grant() {\n return `${this.ctor} needs Grant instance`;\n },\n get subjectType() {\n return `${this.ctor} subjectType should be a String with length`;\n }\n };\n\n instanceStrict(\n grant,\n Grant,\n errorMessage.grant,\n InvalidArgumentException\n );\n\n nonEmptyString(subjectType, errorMessage.subjectType, InvalidArgumentException);\n\n super();\n\n /**\n *\n * @access public\n * @type {Grant}\n *\n */\n this.grant = grant;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.subjectType = subjectType;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.grantType = 'urn:ietf:params:oauth:grant-type:token-exchange';\n\n /**\n *\n * @desc token data, used in a TokenRequest\n *\n */\n this.tokenData.subject_token_type = this.subjectType;\n this.tokenData.subject_token = this.grant.assertion;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/exchangeGrant.js","/**\n *\n * @module tokenClient\n * @desc Provides a data client that can be used to access token services.\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/token.md\n * @see https://github.bamtech.co/api-services-eng/token-service/blob/master/doc/api/WEB.md\n * @see https://github.bamtech.co/api-services-eng/token-service/tree/master/doc/api/token-exchange\n * @see https://github.bamtech.co/api-services-eng/token-service/blob/master/doc/api/token-exchange/ACCESS-TOKEN.md\n * @see https://tools.ietf.org/html/rfc6749\n * @see https://jwt.io/ (decode, verify and generate JSON Web Tokens)\n *\n */\n\n/* eslint-disable quote-props */\n/* eslint-disable camelcase */\n\nimport queryString from 'query-string';\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Exception from './../exception/entry';\nimport HttpClient from './../platforms/httpClient';\nimport AccessContext from './accessContext';\nimport TokenRequest from './tokenRequest';\nimport TokenClientEndpoint from './tokenClientEndpoint';\nimport TokenClientConfiguration from './tokenClientConfiguration';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst HttpMethod = Configuration.HttpMethod;\nconst TokenClientDustUrnReference = DustUrnReference.services.token.tokenClient;\n\nconst {\n nonEmptyString,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class TokenClient\n * @implements {ITokenClient}\n * @desc Stateless client object that is capable of calling the service to\n * exchange a TokenRequest for an AccessContext.\n *\n */\nexport default class TokenClient {\n\n /**\n *\n * @param {TokenClientConfiguration} tokenClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(tokenClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'TokenClient(tokenClientConfiguration, logger, httpClient)',\n get tokenClientConfiguration() {\n return `${this.ctor} needs TokenClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n tokenClientConfiguration,\n TokenClientConfiguration,\n errorMessage.tokenClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {TokenClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = tokenClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc Utility Object for storing platform data.\n *\n */\n this.platformData = {\n platform: this.config.extras.platformId\n };\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(TokenClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {TokenRequest} tokenRequest - An object that contains the\n * information required for making an exchange request.\n * @param {String} apiKey - The API key to provide as authorization for the request.\n * @desc Attempts to exchange a token for an access token.\n * @returns {Promise} Result indicating activation success and any active entitlements.\n *\n */\n exchange(tokenRequest, apiKey) {\n\n const errorMessage = {\n method: 'TokenClient.exchange(tokenRequest, apiKey)',\n get tokenRequest() {\n return `${this.method} needs TokenRequest instance`;\n },\n get apiKey() {\n return `${this.method} apiKey should be a String with length`;\n }\n };\n\n instanceStrict(tokenRequest, TokenRequest, errorMessage.tokenRequest, InvalidArgumentException);\n nonEmptyString(apiKey, errorMessage.apiKey, InvalidArgumentException);\n\n const { dustEnabled, httpClient, logger, platformData } = this;\n const { grantType, tokenData, latitude, longitude } = tokenRequest;\n\n const payload = this.getPayload(\n apiKey,\n TokenClientEndpoint.exchange,\n Object.assign(\n {\n grant_type: grantType,\n latitude,\n longitude\n },\n tokenData,\n platformData\n )\n );\n\n logger.info(TokenClient.name, `Exchange token request:\n originating grantType: \"${tokenData.subject_token_type}\",\n latitude: \"${latitude}\",\n longitude: \"${longitude}\",\n platform: \"${platformData.platform}\"\n `.replace(/(\\s(?=\\s))/g, ''));\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: TokenClient.name,\n urn: TokenClientDustUrnReference.exchange,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n const { access_token, token_type, refresh_token, expires_in } = data;\n\n /**\n *\n * access_token - The access token issued by the authorization server.\n * token_type - The type of the Access Token. Will always be bearer.\n * expires_in - The lifetime in seconds of the Access Token. Also known as the Access Token Expiration.\n * refresh_token - The Refresh Token, which can be used to obtain a new Access Token.\n *\n */\n return Promise.resolve(\n new AccessContext({\n token: access_token,\n tokenType: token_type,\n refreshToken: refresh_token,\n expiresIn: expires_in\n })\n );\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {String} apiKey\n * @param {TokenClientEndpoint} rel\n * @param {Object} body\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(apiKey, rel, body) {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { href, headers } = endpoint;\n const requestBody = body ? queryString.stringify(body) : '';\n const requestHeaders = Object.assign({}, headers);\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{apiKey\\}/gi, apiKey);\n\n return {\n url: href,\n body: requestBody,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/token/tokenClient.js","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/strict-uri-encode/index.js\n// module id = 510\n// module chunks = 0","var map = {\n\t\"./apple/httpClient\": 512,\n\t\"./isomorphic/httpClient\": 533,\n\t\"./sony/trilithium/httpClient\": 538\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 511;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/services/platforms ^\\.\\/.*\\/httpClient$\n// module id = 511\n// module chunks = 0","/**\n *\n * @module httpClient\n *\n */\n\n/* eslint-disable consistent-return */\n/* eslint-disable guard-for-in */\n\nimport Check from 'check-types';\nimport Logging from './../../../logging/entry';\nimport Configuration from './../../configuration/entry';\nimport Exception from './../../exception/entry';\nimport CoreHttpClientProvider from './../shared/coreHttpClientProvider';\n\nconst HttpMethod = Configuration.HttpMethod;\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\nconst ErrorReason = Exception.ErrorReason;\nconst ExceptionReference = Exception.ExceptionReference;\n\nconst {\n like\n} = Check.assert;\n\n/**\n *\n * @class HttpClient\n * @extends {CoreHttpClientProvider}\n * @desc Apple ATV Legacy HttpClient implementation.\n *\n * @example\n * const httpClient = new HttpClient(logger);\n *\n */\nexport default class HttpClient extends CoreHttpClientProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n super(logger);\n\n this.logger.log(HttpClient.name, 'Created ATV Provider.');\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {NetworkException}\n * @returns {Promise}\n *\n * @example\n * httpClient.post(options).then((response) => { console.log(response.data); });\n *\n */\n post(options) {\n\n const errorMessage = {\n method: 'HttpClient.post(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return this.makeRequest(HttpMethod.POST, options).then((response) => {\n\n return response;\n\n }).catch((ex) => {\n\n return Promise.reject(ex);\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {NetworkException}\n * @returns {Promise}\n *\n * @example\n * httpClient.get(options).then((response) => { console.log(response.data); });\n *\n */\n get(options) {\n\n const errorMessage = {\n method: 'HttpClient.get(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return this.makeRequest(HttpMethod.GET, options).then((response) => {\n\n return response;\n\n }).catch((ex) => {\n\n return Promise.reject(ex);\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {NetworkException}\n * @returns {Promise}\n *\n * @example\n * httpClient.del(options).then((response) => { console.log(response.data); });\n *\n */\n del(options) {\n\n const errorMessage = {\n method: 'HttpClient.del(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return this.makeRequest(HttpMethod.DELETE, options).then((response) => {\n\n return response;\n\n }).catch((ex) => {\n\n return Promise.reject(ex);\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {NetworkException}\n * @returns {Promise}\n *\n * @example\n * httpClient.patch(options).then((response) => { console.log(response.data); });\n *\n */\n patch(options) {\n\n const errorMessage = {\n method: 'HttpClient.patch(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return this.makeRequest(HttpMethod.PATCH, options).then((response) => {\n\n return response;\n\n }).catch((ex) => {\n\n return Promise.reject(ex);\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {NetworkException}\n * @returns {Promise}\n *\n * @example\n * httpClient.put(options).then((response) => { console.log(response.data); });\n *\n */\n put(options) {\n\n const errorMessage = {\n method: 'HttpClient.put(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return this.makeRequest(HttpMethod.PUT, options).then((response) => {\n\n return response;\n\n }).catch((ex) => {\n\n return Promise.reject(ex);\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {String} method\n * @param {Object} options\n * @desc constructs request based on provided HTTP method (i.e. GET, POST PUT, PATCH, DELETE),\n * if the response cannot be parsed, provide the response as a plain String\n * @throws {NetworkException}\n * @returns {Promise}\n *\n */\n makeRequest(method, options) {\n\n return new Promise((resolve, reject) => {\n\n const { getResponseData, onError } = this;\n const { url, headers, body, bodyType } = options;\n\n const hasArrayBufferType = Check.equal(bodyType, 'arrayBuffer');\n const xhr = new XMLHttpRequest();\n\n /**\n *\n * @method onreadystatechange\n * @returns {Promise}\n * @note executed each time readyState changes\n * @note readyState of 4 is the equivalent of `XMLHttpRequest.DONE`\n *\n */\n xhr.onreadystatechange = () => {\n\n const { parseHeaders, getHeaderWithKey } = this;\n const { status, statusText, responseText, readyState, responseDataAsBase64 } = xhr;\n\n if (readyState === 4) {\n\n if (status) {\n\n const responseHeaders = parseHeaders(xhr);\n\n return resolve({\n status,\n data: hasArrayBufferType ? responseDataAsBase64 : getResponseData(responseText),\n headers: {\n get: (key) => {\n return getHeaderWithKey(key, responseHeaders);\n }\n }\n });\n\n } else {\n\n const reasons = [new ErrorReason(status, statusText)];\n const exceptionData = ExceptionReference.common.network;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n }\n\n };\n\n /**\n *\n * @method onerror\n * @returns {Promise}\n *\n */\n xhr.onerror = onError;\n\n try {\n\n xhr.open(method, url);\n\n for (const headerKey in headers) {\n xhr.setRequestHeader(headerKey, headers[headerKey]);\n }\n\n } catch (error) {\n\n const reasons = [new ErrorReason(error.name, error.message)];\n const exceptionData = ExceptionReference.common.network;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n try {\n\n xhr.send(body);\n\n } catch (error) {\n\n const reasons = [new ErrorReason(error.name, error.message)];\n const exceptionData = ExceptionReference.common.network;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {Object} [request={}]\n * @desc retrieves then parses response headers into an object\n * @returns {Object}\n *\n */\n parseHeaders(request = {}) {\n\n const canGetHeaders = Check.function(request.getAllResponseHeaders);\n\n const headerStr = canGetHeaders ? request.getAllResponseHeaders() : '';\n const headerArr = headerStr.trim().split(/[\\r\\n]+/);\n const headers = {};\n\n headerArr.forEach((line) => {\n\n const parts = line.split(': ');\n const header = parts.shift();\n const value = parts.join(': ');\n\n headers[header] = value;\n\n });\n\n return headers;\n\n }\n\n /**\n *\n * @access private\n * @method getHeaderWithKey\n * @param {String} [key='']\n * @param {Object} [headers={}]\n * @returns {String|Null}\n *\n */\n getHeaderWithKey(key = '', headers = {}) {\n\n for (const keys in headers) {\n if (keys.toLowerCase() === key.toLowerCase()) {\n return headers[key];\n }\n }\n\n return null;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/apple/httpClient.js","/**\n *\n * @module configurationClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/configuration.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Util from './../util/entry';\nimport Exception from './../exception/entry';\nimport HttpClient from './../platforms/httpClient';\nimport EnvironmentConfiguration from './../platforms/environmentConfiguration';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\n\nimport HttpMethod from './httpMethod';\nimport ConfigurationClientConfiguration from './configurationClientConfiguration';\nimport SdkSessionConfiguration from './sdkSessionConfiguration';\nimport BootstrapConfiguration from './bootstrapConfiguration';\n\nconst ConfigurationClientDustReference = DustUrnReference.services.configuration.configurationClient;\n\nconst ServiceException = Exception.ServiceException;\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class ConfigurationClient\n * @implements {IConfigurationClient}\n * @desc Provides a data client that can be used to access configuration services.\n *\n */\nexport default class ConfigurationClient {\n\n /**\n *\n * @param {ConfigurationClientConfiguration} configurationClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(configurationClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'ConfigurationClient(configurationClientConfiguration, logger, httpClient)',\n get configurationClientConfiguration() {\n return `${this.ctor} needs ConfigurationClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n configurationClientConfiguration,\n ConfigurationClientConfiguration,\n errorMessage.configurationClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {ConfigurationClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = configurationClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(ConfigurationClient.name, 'Created.');\n\n }\n\n /**\n *\n * @param {BootstrapConfiguration} bootstrapConfiguration - The bootstrap configuration\n * information used to construct the service request.\n * @param {EnvironmentConfiguration} environmentConfiguration - The environment configuration\n * information used to construct the service request.\n * @desc Retrieves the SdkSessionConfiguration information necessary to create an SdkSession instance.\n * @returns {Promise} The configuration information.\n *\n */\n getConfiguration(bootstrapConfiguration, environmentConfiguration) {\n\n const errorMessage = {\n method: 'ConfigurationClient.getConfiguration(bootstrapConfiguration, environmentConfiguration)',\n get bootstrapConfiguration() {\n return `${this.method} needs BootstrapConfiguration instance`;\n },\n get environmentConfiguration() {\n return `${this.method} needs EnvironmentConfiguration instance`;\n }\n };\n\n instanceStrict(\n bootstrapConfiguration,\n BootstrapConfiguration,\n errorMessage.bootstrapConfiguration,\n InvalidArgumentException\n );\n\n instanceStrict(\n environmentConfiguration,\n EnvironmentConfiguration,\n errorMessage.environmentConfiguration,\n InvalidArgumentException\n );\n\n const { dustEnabled, httpClient, logger } = this;\n\n const payload = this.getPayload(bootstrapConfiguration, environmentConfiguration);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: ConfigurationClient.name,\n urn: ConfigurationClientDustReference.getConfiguration,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n const { commonHeaders, services, application } = data;\n\n const options = {\n commonHeaders,\n loggerConfiguration: data.logger,\n services,\n environmentConfiguration,\n logger,\n application\n };\n\n const sdkSessionConfiguration = new SdkSessionConfiguration(options);\n\n return Promise.resolve(sdkSessionConfiguration);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {BootstrapConfiguration} bootstrapConfiguration\n * @param {EnvironmentConfiguration} environmentConfiguration\n * @returns {Object} payload\n *\n */\n getPayload(bootstrapConfiguration, environmentConfiguration) {\n\n const { environment, clientId, configHostName } = bootstrapConfiguration;\n const { sdkVersion, deviceFamily, deviceProfile, applicationRuntime, configVersion } = environmentConfiguration;\n const { endpoints } = this.config;\n\n const endpoint = endpoints.bootstrap;\n const headers = endpoint.headers;\n\n let href = endpoint.href;\n\n if (endpoint.templated) {\n\n const baseUrl = Util.getSafe(() => this.config.extras.configHostParams[configHostName].baseUrl);\n\n href = href\n .replace(/\\{baseUrl\\}/gi, baseUrl)\n .replace(/\\{configVersion\\}/gi, configVersion)\n .replace(/\\{clientId\\}/gi, clientId)\n .replace(/\\{deviceFamily\\}/gi, deviceFamily)\n .replace(/\\{sdkVersion\\}/gi, sdkVersion)\n .replace(/\\{applicationRuntime\\}/gi, applicationRuntime)\n .replace(/\\{deviceProfile\\}/gi, deviceProfile)\n .replace(/\\{environment\\}/gi, environment);\n }\n\n return {\n url: href,\n headers\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/configurationClient.js","/**\n *\n * @module checkResponseCode\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../exception/entry';\nimport Util from './entry';\n\nconst ErrorCode = Exception.ErrorCode;\nconst ErrorReason = Exception.ErrorReason;\nconst ExceptionReference = Exception.ExceptionReference;\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst {\n object\n} = Check.assert;\n\n/**\n *\n * @access private\n * @param {Number} status\n * @param {Array} errors\n * @param {String} [methodName]\n * @note If the error case you are expecting is based on a method and status code but not error code(s) from the\n * service then you have to invoke `Util.checkResponseCode` as so `Util.checkResponseCode(status, errors, methodName)`.\n * Use the `methodName` below combined with a status code to create custom error logic so it doesn't fall into the\n * generic error handler in the else block\n * @returns {Object|undefined}\n *\n */\nexport function handleErrorCase(status, errors, methodName) {\n\n const error = Check.array(errors) ? errors[0] : {};\n const code = Util.getSafe(() => error.code);\n const description = Util.getSafe(() => error.description);\n const thumbnailMethods = ['getSpriteSheetThumbnails', 'getSpriteSheetThumbnail', 'getBifThumbnails'];\n const paymentMethods = ['getDefaultPaymentMethod', 'getPaymentCard'];\n const priceOrderCodes = [400, 422];\n\n let exceptionData;\n\n if (Check.nonEmptyString(methodName)) {\n\n if (Check.equal(status, 400) && Check.equal(methodName, 'submitOrderWithPaymentMethod')) {\n\n // InvalidDataException\n exceptionData = ExceptionReference.commerce.invalidData;\n\n } else if (Check.equal(status, 403) && Check.equal(methodName, 'lookupByZipCode')) {\n\n // InvalidZipCodeException\n exceptionData = ExceptionReference.commerce.invalidZipCode;\n\n } else if (Check.equal(status, 422) && Check.equal(methodName, 'createPaymentMethod')) {\n\n // InvalidPaymentInformationException\n exceptionData = ExceptionReference.commerce.invalidPaymentInformation;\n\n } else if (Check.equal(status, 404) && paymentMethods.includes(methodName)) {\n\n // PaymentMethodNotFoundException\n exceptionData = ExceptionReference.commerce.paymentMethodNotFound;\n\n } else if (Check.equal(status, 404) && thumbnailMethods.includes(methodName)) {\n\n // ThumbnailsNotAvailableException\n exceptionData = ExceptionReference.media.thumbnailsNotAvailable;\n\n } else if (Check.equal(status, 400) && Check.equal(methodName, 'check')) {\n\n if (Check.equal(code, ErrorCode.idpErrorPayloadFieldsIncorrect.code)) {\n\n // InvalidEmailSyntaxException\n exceptionData = ExceptionReference.bamIdentity.invalidEmailSyntax;\n\n }\n\n } else if (Check.less(status, 500) && Check.equal(methodName, 'changeEmail')) {\n\n if (Check.equal(code, ErrorCode.idpErrorPayloadFieldsIncorrect.code)) {\n\n // InvalidEmailException\n exceptionData = ExceptionReference.bamIdentity.invalidEmail;\n\n }\n\n } else if (Check.equal(status, 400) && Check.equal(methodName, 'getEligibilityStatus')) {\n\n // InvalidRequestException\n exceptionData = ExceptionReference.eligibility.invalidRequest;\n\n } else if (Check.equal(status, 500) && Check.equal(methodName, 'getEligibilityStatus')) {\n\n if (Check.equal(code, ErrorCode.huluService.code)) {\n\n // HuluServiceException\n exceptionData = ExceptionReference.eligibility.huluService;\n\n } else if (Check.equal(code, ErrorCode.accountResolution.code)) {\n\n // AccountResolutionException\n exceptionData = ExceptionReference.eligibility.accountResolution;\n\n }\n\n } else if (Check.equal(status, 400) && Check.equal(methodName, 'query')) {\n\n // InvalidRequestException\n exceptionData = ExceptionReference.content.invalidRequest;\n\n } else if (priceOrderCodes.includes(status) && Check.equal(methodName, 'priceOrder')) {\n\n // UnpriceableOrderException\n exceptionData = ExceptionReference.commerce.unpriceableOrder;\n\n } else if (Check.equal(status, 429) && Check.equal(methodName, 'getOrderStatus')) {\n\n // OrderTimeoutException\n exceptionData = ExceptionReference.commerce.orderTimeout;\n\n }\n\n } else {\n\n /**\n *\n * @note Filters through the ErrorCode reference object to determine the error case based on\n * the supplied error code from the failed service request.\n *\n */\n for (const key of Object.keys(ErrorCode)) {\n\n const errorCode = ErrorCode[key];\n\n /**\n *\n * @note Some error cases require us to check against the returned error description.\n * Currently this is only used for LocationNotAllowedException and InvalidGrantException\n *\n */\n if (Check.array(errorCode.description)) {\n\n if (Check.equal(code, errorCode.code) && errorCode.description.includes(description)) {\n\n exceptionData = errorCode.exceptionData;\n break;\n\n }\n\n } else if (Check.equal(code, errorCode.code)) {\n\n exceptionData = errorCode.exceptionData;\n break;\n\n }\n\n }\n\n }\n\n return exceptionData;\n\n}\n\n/**\n *\n * @param {Object} [options={}]\n * @param {Number} options.status\n * @param {Array} options.errors\n * @param {String} [options.methodName]\n * @returns {Array}\n *\n */\nexport function processReasons(options = {}) {\n\n const { status, errors, methodName } = options;\n const reasons = [];\n const errorCodes = [400, 401, 403, 404, 406, 409, 422, 429];\n const methods = ['getEligibilityStatus'];\n\n if (methods.includes(methodName)) {\n errorCodes.push(500);\n }\n\n if (errorCodes.includes(status) && Check.array(errors)) {\n\n errors.forEach((error) => {\n\n if (Util.getSafe(() => error.code)) {\n reasons.push(new ErrorReason(error.code, Util.getSafe(() => error.description)));\n }\n\n });\n\n }\n\n return reasons;\n\n}\n\n/**\n *\n * @param {Object} options\n * @param {Number} [status] - The HTTP status code\n * @param {String} [transactionId] - The identifier allows BAM to lookup the entire operation in DUST\n * @param {Array} [errors] - Group of errors\n * @param {String} [methodName] - name of the failed method\n * @desc Returns an exception based on the supplied parameters\n * @note Defaults exceptionData to an empty object if it is null or undefined. This will ensure a generic\n * ServiceException is created as a fallback.\n * @returns {ServiceException}\n *\n */\nexport function createException(options = {}) {\n\n const { status, transactionId, errors, methodName } = options;\n\n const reasons = processReasons({ status, errors, methodName });\n\n let exceptionData = handleErrorCase(status, errors, methodName);\n\n if (!exceptionData) {\n\n if (status >= 500) {\n exceptionData = ExceptionReference.common.temporarilyUnavailable;\n } else {\n exceptionData = {};\n }\n\n }\n\n return new ServiceException({\n transactionId,\n reasons,\n exceptionData,\n status\n });\n\n}\n\n/**\n *\n * @param {Array} errors\n * @desc Checks for error cases thrown on status code 202\n * @returns {Boolean}\n *\n */\nexport function checkAcceptedCase(errors) {\n\n const codes = [ErrorCode.copyFailure.code, ErrorCode.copyLimitReached.code];\n\n if (Check.array(errors)) {\n\n return errors.some((error) => {\n\n const code = Util.getSafe(() => error.code);\n\n return codes.includes(code);\n\n });\n\n }\n\n return false;\n\n}\n\n/**\n *\n * @access private\n * @param {Object} response\n * @param {DustLogUtility} dustLogUtility\n * @param {String} [methodName] name of the failed method\n * @returns {Promise} resolves the response or rejects with an exception\n * @note methodName is used for error cases that rely on the http status and not a service error code.\n * it is currently only used for error cases relating to the Commerce feature.\n * @see https://tools.ietf.org/html/rfc6749#section-5.1 (success)\n * @see https://tools.ietf.org/html/rfc6749#section-5.2 (error)\n *\n */\nexport default function (response, dustLogUtility, methodName) {\n\n const errorMessage = {\n method: 'CheckResponseCode(response, dustLogUtility, dustEnabled)',\n get response() {\n return `${this.method} response should be an Object`;\n }\n };\n\n object(response, errorMessage.response, InvalidArgumentException);\n\n const { status, headers, data } = response;\n const { errors = [] } = data || {};\n const { error, error_description: errorDescription } = data;\n\n const isError = status >= 400;\n\n let isAcceptedErrorCase = false;\n let transactionId = '';\n\n /**\n * create consistent error object structure\n * service only returns error string\n */\n if (isError && Check.string(error)) {\n errors.push({ code: error, description: errorDescription });\n }\n\n if (headers && headers.get) {\n transactionId = headers.get('x-request-id') || '';\n }\n\n if (dustLogUtility) {\n dustLogUtility.parseResponse({ errors, response, transactionId });\n }\n\n // Check for error case on status code 202\n if (Check.equal(status, 202)) {\n isAcceptedErrorCase = checkAcceptedCase(errors);\n }\n\n if (isError || isAcceptedErrorCase) {\n return Promise.reject(createException({ status, transactionId, errors, methodName }));\n }\n\n return Promise.resolve(response);\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/util/checkResponseCode.js","/**\n *\n * @module getSafe\n * @see https://github.com/tc39/proposal-optional-chaining\n *\n */\n\n/**\n *\n * @param {Function} fn - function exectued inside try...catch block\n * @param {Any} [defaultValue] - default value to use\n * @desc Little utility that helps avoid common `TypeError` and `ReferenceError` scenarios\n * and extraneous boilerplate code. Allows you to fetch deep properties in a single line of code.\n * @returns {Any} result of `fn` call or provided `defaultValue`\n *\n * @example getSafe(() => access.context.token)\n * @example getSafe(() => account.client.base.url, 'some default value')\n * @example getSafe(() => 1 < 2 && access.context.token, 'some default value')\n *\n */\nexport default function (fn, defaultValue) {\n\n try {\n\n const value = fn();\n\n return value !== void 0 ? value : defaultValue;\n\n } catch (error) {\n\n return defaultValue;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/util/getSafe.js","/**\n *\n * @module getScope\n * @see https://github.com/tc39/proposal-global\n * @see https://github.com/purposeindustries/window-or-global\n *\n */\n\n/**\n *\n * @desc Little utility that returns the global scope.\n * Works on all modern browsers, Node based environments, connected devices, etc...\n * @returns {Object}\n *\n * @example const scope = getScope();\n * @example const global = getScope();\n *\n */\nexport default () => {\n\n return (typeof self === 'object' && self.self === self && self)\n || (typeof global === 'object' && global.global === global && global)\n || window;\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/util/getScope.js","/**\n *\n * @module adEngineRegex\n *\n */\n\nconst adEngineRegex = new RegExp('(//)?aeng(-test)?');\n\n/**\n *\n * @param {String} url\n * @desc tests .ts chunk url strings to determine if this is an AdEngine request\n * @returns {Boolean}\n *\n * @example adEngineRegex(('http://www.nope.com')) => false)\n * @example adEngineRegex(('https://aeng.svcs.plus.espn.com') => true)\n *\n */\nexport default (url) => {\n\n return adEngineRegex.test(url);\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/util/adEngineRegex.js","/**\n *\n * @module dateRegex\n *\n */\n\nconst dateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/;\n\n/**\n *\n * @param {String} dateString\n * @desc tests a string to see if it represents a date that conforms to ISO-8601 standard\n * @returns {Boolean}\n *\n * @example dateRegex('2019-05-09T18:14:21.559Z');\n * @example dateRegex(new Date().toISOString());\n *\n */\nexport default (dateString) => {\n\n return dateRegex.test(dateString);\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/util/dateRegex.js","var map = {\n\t\"./isomorphic/environmentConfiguration\": 520,\n\t\"./sony/trilithium/environmentConfiguration\": 523\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 519;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/services/platforms ^\\.\\/.*\\/environmentConfiguration$\n// module id = 519\n// module chunks = 0","/**\n *\n * @module environmentConfiguration\n *\n */\n\nimport Device from './../device';\n\n/**\n *\n * @class EnvironmentConfiguration\n * @desc Provides configuration information that describes the current environment\n * and is used by the ConfigurationClient to retrieve the SdkSessionConfiguration\n * necessary to create an SdkSession instance.\n *\n */\nexport default class EnvironmentConfiguration {\n\n /**\n *\n * @param {String} applicationRuntime\n * @param {String} applicationRuntimeProfile\n * @param {String} applicationVersion\n * @param {String} deviceFamily\n * @param {String} deviceProfile\n * @param {String} deviceRuntimeProfile\n * @param {String} sdkVersion\n * @param {String} configVersion\n *\n */\n constructor({ applicationRuntime, applicationRuntimeProfile, applicationVersion,\n deviceFamily, deviceProfile, deviceRuntimeProfile,\n sdkVersion, configVersion, platform } = {}) {\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the application runtime.\n *\n */\n this.applicationRuntime = applicationRuntime || '';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the application runtime profile (e.g. \"debug\", \"release\").\n *\n */\n this.applicationRuntimeProfile = applicationRuntimeProfile || 'release';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the application version.\n *\n */\n this.applicationVersion = applicationVersion || '';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the device family (e.g. \"browser\").\n *\n */\n this.deviceFamily = deviceFamily || 'browser';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the device profile (e.g. \"desktop\").\n *\n */\n this.deviceProfile = deviceProfile || '';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the device runtime profile.\n *\n */\n this.deviceRuntimeProfile = deviceRuntimeProfile || '';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the SDK version (e.g. \"4.2\").\n *\n */\n this.sdkVersion = sdkVersion || '4.2';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the configuration version (e.g. \"2.0\").\n *\n */\n this.configVersion = configVersion || '2.0';\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.platform = platform || '';\n\n /**\n *\n * @access private\n * @type {Device}\n *\n */\n this.device = new Device();\n\n /**\n *\n * @desc Initialize properties based on runtime device values.\n *\n */\n this.init();\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Initialize the environment config properties based on runtime device values.\n *\n */\n init() {\n\n const { device, deviceProfile, deviceRuntimeProfile, applicationRuntime, platform } = this;\n\n if (!deviceProfile || deviceProfile.trim() === '') {\n\n if (device.is.desktop || device.is.tablet || device.is.phone || device.is.tesla) {\n this.deviceProfile = device.details.name;\n } else if (device.is.smarttv || device.is.connecteddevice) {\n this.deviceProfile = device.details.family;\n } else {\n this.deviceProfile = 'fallbackDeviceProfile';\n }\n\n }\n\n if (!deviceRuntimeProfile || deviceRuntimeProfile.trim() === '') {\n this.deviceRuntimeProfile = device.platformVersion || 'fallbackRuntimeProfile';\n }\n\n if (!applicationRuntime || applicationRuntime.trim() === '') {\n\n if (device.is.desktop || device.is.tablet || device.is.phone || device.is.tesla) {\n this.applicationRuntime = device.browser;\n } else if (device.is.smarttv || device.is.connecteddevice) {\n this.applicationRuntime = device.details.name;\n }\n\n }\n\n if (!platform || platform.trim() === '') {\n this.platform = device.platform;\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/isomorphic/environmentConfiguration.js","/**\n *\n * @module device\n * @desc Detect and classify some device specific information via userAgent.\n * Detects browser, browser version, os, form-factor.\n *\n */\n\n/* eslint-disable no-param-reassign */\n/* eslint-disable guard-for-in */\n\nimport RegExes from './device.regexs';\n\nconst CACHE = {};\nconst REGEXES_OTHER = RegExes.constants.OTHER;\nconst REGEXES_VERSION = RegExes.constants.VERSION;\nconst REGEXES_FORMFACTORS = RegExes.constants.FORMFACTORS;\n\n/**\n *\n * @access private\n * @function safeArray\n * @param {Array} ar\n * @param {Number} index\n * @returns {*}\n *\n */\nfunction safeArray(ar, index) {\n\n return ar && index ? ar[index] : ar;\n\n}\n\n/**\n *\n * @access private\n * @function version\n * @param {String} vstr The version string to parse.\n * @returns {string}\n *\n */\nfunction version(vstr) {\n\n const varr = vstr.split(/[._]/).slice(0, 3);\n\n if (vstr && varr.length < 2) {\n varr.push(0);\n }\n\n return varr.join('.');\n\n}\n\n/**\n *\n * @access private\n * @function windowsVersion\n * @param {String} vstr The version string to parse.\n * @returns {string}\n *\n */\nfunction windowsVersion(vstr) {\n\n const versionMap = {\n 'NT 6.0': 'vista',\n 'NT 6.1': '7.0',\n 'NT 6.2': '8.0',\n 'NT 6.3': '8.1',\n 'NT 6.4': '10.0',\n 'NT 10.0': '10.0'\n };\n\n return versionMap[vstr] || vstr;\n\n}\n\n/**\n *\n * @access public\n * @constructor\n * @param {String} [userAgent]\n *\n */\nfunction Device(userAgent) {\n\n userAgent = userAgent || window.navigator.userAgent;\n\n if (CACHE[userAgent]) {\n return CACHE[userAgent];\n }\n\n if (!(this instanceof Device)) {\n return new Device(userAgent);\n }\n\n CACHE[userAgent] = this;\n\n this.userAgent = userAgent;\n this.is = {};\n this.details = this.getDeviceDetails();\n this.platform = this.getPlatform();\n this.platformVersion = this.getPlatformVersion();\n this.browser = this.getBrowser();\n this.browserVersion = this.getBrowserVersion();\n this.formFactor = this.getFormFactor();\n\n}\n\nDevice.prototype = {\n\n /**\n *\n * @returns {Object} The device details.\n *\n */\n getDeviceDetails() {\n\n let details = null;\n\n for (let i = 0; i < RegExes.devices.length; i++) {\n\n const device = RegExes.devices[i];\n\n for (let j = 0; j < device.regExes.length; j++) {\n\n const re = device.regExes[j];\n let match = this.match(re, device.groupIndex);\n\n if (match) {\n if (device.done) {\n match = device.done(match);\n }\n\n details = {\n family: device.family,\n name: match.toLowerCase().replace(/(\\s|-|_)/gi, '')\n };\n\n break;\n }\n\n }\n\n if (details) {\n break;\n }\n\n }\n\n return details || {\n family: 'default',\n name: 'default'\n };\n\n },\n /**\n *\n * @returns {String} The platform value.\n *\n */\n getPlatform() {\n\n return (this.test(RegExes.platforms) || REGEXES_OTHER);\n\n },\n /**\n *\n * @returns {String} The platform version\n *\n */\n getPlatformVersion() {\n\n let platformVersion = '';\n\n if (this.platform && this.platform !== REGEXES_OTHER) {\n platformVersion = this.match(RegExes.platformVersion[this.platform.toUpperCase()], 2) || REGEXES_VERSION;\n }\n\n switch (true) {\n case this.is.android:\n case this.is.ios:\n case this.is.macintosh:\n platformVersion = version(platformVersion);\n break;\n case this.is.windows:\n case this.is.windowsphone:\n platformVersion = windowsVersion(platformVersion);\n break;\n }\n\n return platformVersion;\n\n },\n /**\n *\n * @returns {String} The browser.\n *\n */\n getBrowser() {\n\n this.test(RegExes.browserCore);\n\n return (this.test(RegExes.browser) || REGEXES_OTHER);\n\n },\n /**\n *\n * @returns {String} The browser version\n *\n */\n getBrowserVersion() {\n\n let browserVersion = '';\n\n if (this.browser) {\n\n const re = RegExes.browser[this.browser.toUpperCase()];\n\n if (re) {\n if (Array.isArray(re)) {\n for (let i = 0; i < re.length; i++) {\n browserVersion = this.match(re[i], 1);\n\n if (browserVersion !== '') {\n break;\n }\n }\n } else {\n browserVersion = this.match(re, 1);\n }\n }\n\n }\n\n return version(browserVersion);\n\n },\n /**\n *\n * @returns {String} The form factor\n * @todo different tests per platform?\n *\n */\n getFormFactor() {\n\n let formFactorTest = '';\n const formFactors = REGEXES_FORMFACTORS;\n\n if (this.is.msie) {\n formFactorTest = RegExes.formFactor.ms;\n } else {\n formFactorTest = RegExes.formFactor.default;\n }\n\n return formFactors[this.test(formFactorTest)] || formFactors.other;\n\n },\n /**\n *\n * @desc Helper method for safely running regex matches against the instances userAgent.\n * @param {RegExp} regex Regex to match.\n * @param {Number} [index] Optional captured match to return.\n * If no index is supplied, the entire match set is return as an array.\n * @return {*} String when used with index, or array of matches.\n *\n */\n match(regex, index) {\n\n const results = safeArray(regex.exec(this.userAgent), index) || '';\n\n return results;\n\n },\n /**\n *\n * @param {Object} reMap\n * @returns {*}\n *\n */\n test(reMap) {\n\n const ua = this.userAgent;\n\n let result = '';\n let key;\n let check;\n\n for (key in reMap) {\n\n const re = reMap[key];\n\n if (Array.isArray(re)) {\n for (let i = 0; i < re.length; i++) {\n check = re[i].test(ua);\n\n if (check) {\n break;\n }\n }\n } else {\n check = re.test(ua);\n }\n\n key = key.toLowerCase();\n\n this.is[key] = this.is[key] || (check && !result);\n\n if (check && !result) {\n result = key;\n }\n\n }\n\n return result;\n\n }\n\n};\n\nexport default Device;\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/device.js","/**\n *\n * @module device.regexs\n *\n */\n\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-unused-vars */\n/* eslint-disable prefer-template */\n\nconst OPEN = '(';\nconst CLOSE = ')';\nconst CASE = 'i';\nconst PIPE = '|';\nconst OTHER = 'desktop';\nconst VERSION = 'version';\n\n/**\n *\n * OS / Device\n *\n */\nconst IOS = '(ip[honead]+)(?:.*os\\\\s([\\\\w]+)*\\\\slike\\\\smac|;\\\\sopera)';\nconst BB = '\\\\((bb)(10);|(blackberry)\\\\w*\\\\/?([\\\\w\\\\.]+)*|Rim';\nconst ANDROID = '(android)[\\\\/\\\\s-]?([\\\\w\\\\.]+)*';\nconst WINDOWS = '(windows\\\\sphone(?:\\\\sos)*|windows\\\\smobile|windows)[\\\\s\\\\/]?([ntce\\\\d\\\\.\\\\s]+\\\\w)';\nconst LINUX = '(Linux)(?!.*(?:Android|Tizen|CrKey|Tivo|Web[0|O]S))[\\\\/\\\\s]([\\\\w\\\\.]+)';\nconst MAC = '(mac\\\\sos\\\\sx)\\\\s?([\\\\w\\\\s\\\\.]+\\\\w)*';\nconst WEBOS = '(Web[0|O]S)(?!Linux)[\\\\/\\\\s-]?([\\\\w\\\\.]+)*';\nconst NETCAST = '(NetCast)[\\\\/\\\\s]([\\\\w\\\\.]+)';\nconst CHROMEBOOK = '(cros)\\\\s[\\\\w]+\\\\s([\\\\w\\\\.]+\\\\w)';\nconst TIZEN = '(Tizen)[\\\\/\\\\s]([\\\\w\\\\.]+)';\nconst ORSAY = '(SMART-TV)[\\\\/\\\\s]([\\\\w\\\\.]+)';\nconst PANASONICTV = '(Viera)[\\\\/\\\\s]([\\\\w\\\\.]+)';\nconst SONYBRAVIA = '(SonyCEBrowser)[\\\\/\\\\s]([\\\\w\\\\.]+)';\nconst WINDOWS_PHONE = 'Trident(?:.*?Touch(?:.*?Mobile))';\nconst WINDOWS_PHONE_DS = 'WPDesktop'; // Windows Phone desktop mode\nconst WINDOWS_PHONE_OLD = 'windows phone';\nconst CHROMECAST = '(CrKey)[\\\\/\\\\s]([\\\\w\\\\.]+)';\nconst TIVO = '\\\\((Tivo).([^\\\\.]+).*\\\\)';\nconst HTC = '(htc)[;_\\\\s-]+([\\\\w\\\\s]+(?=\\\\))|\\\\w+)*';\nconst KINDLE = '(kf[A-z]+)\\\\sbuild\\\\/[\\\\w\\\\.]+.*silk\\\\/';\nconst APPLETV = '(AppleTV)[\\\\/\\\\s]([\\\\w\\\\.]+)';\nconst TESLA = '(Tesla|QtCarBrowser)';\n\n/**\n *\n * Form Factor\n *\n */\nconst DESKTOP = OPEN + '?:' + [\n MAC,\n WINDOWS,\n LINUX,\n CHROMEBOOK\n].join(PIPE) + '(?!.*(Tizen|SMART-TV|Tivo|Web[0|O]S))' + CLOSE;\n\nconst FORMFACTORS = {\n desktop: 'desktop',\n other: OTHER,\n phone: 'phone',\n tablet: 'tablet',\n smarttv: 'smarttv',\n connecteddevice: 'connecteddevice'\n};\n\n/**\n *\n * @function re\n * @param {String} pattern\n * @param {String} [flags]\n * @returns {RegExp}\n *\n */\nfunction re(pattern, flags) {\n return new RegExp(pattern, flags || CASE);\n}\n\n/**\n *\n * @type {Array}\n * @desc Array of supported devices regular expressions.\n * The order of regular expressions is important.\n * They should go from most specific to least specific. First one that hits, wins.\n *\n */\nconst devices = [\n {\n family: 'microsoft',\n regExes: [\n re('[\\\\s\\\\(;](xbox(?:\\\\sone)?)[\\\\s\\\\);]'), // xbox\n re('(windows\\\\sphone|windows\\\\smobile|windows)(?!.*(?:xbox|WPDesktop))'), // windows or windows phone\n re('(?:windows).+(WPDesktop)') // windows phone desktop mode\n ],\n groupIndex: 1,\n /**\n *\n * @method done\n * @param {String} match\n * @returns {String}\n *\n */\n done: (match) => {\n const windowsList = [\n 'windows',\n 'windows phone',\n 'windows mobile',\n 'wpdesktop'\n ];\n\n match = match.toLowerCase();\n\n if (windowsList.indexOf(match) !== -1) {\n match = 'windows';\n }\n\n return match;\n }\n },\n {\n family: 'apple',\n regExes: [\n re(IOS),\n re(MAC),\n re(APPLETV)\n ],\n groupIndex: 1\n },\n {\n family: 'amazon',\n regExes: [\n re(KINDLE)\n ],\n groupIndex: 1,\n /**\n *\n * @method done\n * @param {String} match\n * @returns {String}\n *\n */\n done: (match) => {\n if (match.toLowerCase() === 'kftt') {\n match = 'kindle fire';\n }\n\n return match;\n }\n },\n {\n family: 'samsung',\n regExes: [\n re('(?:Smart-TV|Linux).+(Tizen).+(?:TV)?'),\n re('(?:Smart-TV).+(Maple)'),\n re('((s[cgp]h-\\\\w+|gt-\\\\w+|galaxy\\\\snexus|sm-n900))')\n ],\n groupIndex: 1,\n /**\n *\n * @method done\n * @param {String} match\n * @returns {String}\n *\n */\n done: (match) => {\n match = match.toLowerCase();\n\n if (/^(s[cgp]h-|gt-|galaxy\\snexus|sm-n)/gi.test(match)) {\n match = 'galaxy';\n } else if (match === 'maple') {\n match = 'orsay';\n }\n\n return match;\n }\n },\n {\n family: 'google',\n regExes: [\n re(CHROMECAST),\n re(CHROMEBOOK)\n ],\n groupIndex: 1,\n /**\n *\n * @method done\n * @param {String} match\n * @returns {String}\n *\n */\n done: (match) => {\n match = match.toLowerCase();\n\n if (match === 'crkey') {\n match = 'chromecast';\n } else if (match === 'cros') {\n match = 'chromium';\n }\n\n return match;\n }\n },\n {\n family: 'tivo',\n regExes: [\n re('(Tivo)')\n ],\n groupIndex: 1\n },\n {\n family: 'panasonic',\n regExes: [\n re('(Viera)')\n ],\n groupIndex: 1,\n\n /**\n *\n * @method done\n * @param {String} match\n * @returns {String}\n *\n */\n done: (match) => {\n match = match.toLowerCase();\n\n if (match === 'viera') {\n match = 'panasonictv';\n }\n\n return match;\n }\n },\n {\n family: 'sony',\n regExes: [\n re('(SonyCEBrowser)')\n ],\n groupIndex: 1,\n\n /**\n *\n * @method done\n * @param {String} match\n * @returns {String}\n *\n */\n done: (match) => {\n match = match.toLowerCase();\n\n if (match === 'sonycebrowser') {\n match = 'sonybravia';\n }\n\n return match;\n }\n },\n {\n family: 'lg',\n regExes: [\n re('(Web[0|O]S).*(?:SmartTV)'),\n re('(NetCast).*(?:TV)')\n ],\n groupIndex: 1,\n /**\n *\n * @method done\n * @param {String} match\n * @returns {String}\n *\n */\n done: (match) => {\n match = match.toLowerCase();\n\n if (match === 'web0s' || match === 'webos') {\n match = 'webos';\n }\n\n return match;\n }\n },\n {\n family: 'blackberry',\n regExes: [\n re('(PlayBook|Blackberry 9900|BB10)')\n ],\n groupIndex: 1,\n /**\n *\n * @method done\n * @param {String} match\n * @returns {String}\n *\n */\n done: (match) => {\n match = match.toLowerCase();\n\n if (match === 'blackberry 9900') {\n match = 'bold';\n }\n\n return match;\n }\n },\n {\n family: 'tesla',\n regExes: [\n re(TESLA)\n ],\n groupIndex: 1\n },\n /**\n *\n * This is a catch all. Linux should stay last in this Array\n * because platforms like Tivo and Tizen use Linux.\n *\n */\n {\n family: 'linux',\n regExes: [\n re(LINUX)\n ],\n groupIndex: 1\n }\n];\n\n/**\n *\n * @type {Object}\n * @desc Object representing supported device platform regular expressions.\n *\n */\nconst platforms = {\n IOS: re(IOS),\n APPLETV: re(APPLETV),\n WINDOWSPHONE: re([WINDOWS_PHONE, WINDOWS_PHONE_OLD, WINDOWS_PHONE_DS].join(PIPE)),\n WINDOWS: re(WINDOWS),\n ANDROID: re(ANDROID),\n MACINTOSH: re(MAC),\n CHROMECAST: re(CHROMECAST),\n CHROMEBOOK: re(CHROMEBOOK),\n TIZEN: re(TIZEN),\n ORSAY: re(ORSAY),\n WEBOS: re(WEBOS),\n NETCAST: re(NETCAST),\n PANASONICTV: re(PANASONICTV),\n SONYBRAVIA: re(SONYBRAVIA),\n TIVO: re(TIVO),\n BLACKBERRY: re(BB),\n TESLA: re(TESLA),\n LINUX: re(LINUX) // This is a catch all. Linux should stay last because platforms like Tivo and Tizen use linux.\n};\n\n/**\n *\n * @type {RegExp}\n * @desc Regular expression for getting the platform version.\n *\n */\nconst platformVersion = {\n IOS: re(IOS),\n APPLETV: re(APPLETV),\n WINDOWSPHONE: re(WINDOWS),\n WINDOWS: re(WINDOWS),\n ANDROID: re(ANDROID),\n MACINTOSH: re(MAC),\n CHROMECAST: re(CHROMECAST),\n CHROMEBOOK: re(CHROMEBOOK),\n TIZEN: re(TIZEN),\n ORSAY: re(ORSAY),\n WEBOS: re(WEBOS),\n NETCAST: re(NETCAST),\n PANASONICTV: re(PANASONICTV),\n SONYBRAVIA: re(SONYBRAVIA),\n TIVO: re(TIVO),\n BLACKBERRY: re(BB),\n TESLA: re(TESLA),\n LINUX: re(LINUX) // This is a catch all. Linux should stay last because platforms like Tivo and Tizen use linux.\n};\n\n/**\n *\n * @type {Object}\n * @desc Object representing supported browser regular expressions.\n * The group match is the browser's version. The order of regular expressions is\n * important. They should go from most specific to least specific.\n * First one that hits, wins.\n *\n */\nconst browser = {\n ANDROID: re('(?:android).+version\\\\/([\\\\w\\\\.]+)\\\\s+(?:mobile\\\\s?safari|safari)'),\n MSIE: [\n re('(?:ms|\\\\()(?:ie)[\\\\/\\\\s]([\\\\w\\\\.]+)'),\n re('(?:trident).+rv[:\\\\s]([\\\\w\\\\.]+).+like\\\\sgecko')\n ],\n EDGE: re('(?:edge)\\\\/((\\\\d+)?[\\\\w\\\\.]+)'),\n CHROME: [\n re('(?:chrome)\\\\/v?([\\\\w\\\\.]+)'),\n re('(?:(?:android.+)crmo|crios)\\\\/([\\\\w\\\\.]+)')\n ],\n FIREFOX: re('(?:firefox|FxiOS)\\\\/([\\\\w\\\\.-]+)'),\n OPERA: [\n re('(?:opera(?!.*?mini)\\\\s[mobiletab]+).+version\\\\/([\\\\w\\\\.-]+)'),\n re('(?:opera(?!.*?mini)).+version\\\\/([\\\\w\\\\.]+)'),\n re('(?:opera(?!.*?mini))[\\\\/\\\\s]+([\\\\w\\\\.]+)'),\n re('(?:OPiOS)[\\\\/\\\\s]+([\\\\w\\\\.]+)')\n ],\n OPERAMINI: re('(?:opera\\\\smini)\\\\/([\\\\w\\\\.-]+)'),\n SILK: re('(?:silk)\\\\/([\\\\w\\\\.-]+)'),\n SAFARI: re('version\\\\/([\\\\w\\\\.]+).+?(?:mobile\\\\s?safari|safari)'),\n PHANTOMJS: re('(?:PhantomJS)\\\\/([\\\\w\\\\.-]+)')\n};\n\n/**\n *\n * @type {Object}\n * @desc Object representing supported browser core regular expressions.\n *\n */\nconst browserCore = {\n WEBKIT: re('AppleWebKit'),\n GECKO: re('gecko'),\n TRIDENT: re('trident'),\n EDGE: re('Edge')\n};\n\n/**\n *\n * @type {Object}\n * @desc Object representing supported form factor regular expressions.\n * @todo Revisit this whole default vs. microsoft thing.\n * @todo NT+winp can report incorrect matches for touch enabled win 8 desktop\n *\n */\nconst formFactor = {\n default: {\n /**\n *\n * Use Mobi for android partial match to also include Opara mobile for android\n *\n */\n tablet: re(OPEN + [\n 'Tablet|iPad',\n '\\\\sNT.*?' + WINDOWS_PHONE,\n ANDROID + '(?!.*Mobi)',\n 'silk',\n BB + '.*?Tablet'\n ].join(PIPE) + CLOSE),\n phone: re(OPEN + ['Mobi|Mobile', IOS, WINDOWS_PHONE, BB].join(PIPE) + CLOSE),\n smarttv: re(OPEN + ['Tizen', 'SMART-TV', 'SmartTV', 'NetCast', 'Viera'].join(PIPE) + CLOSE),\n connecteddevice: re(OPEN + ['CrKey', 'Tivo', 'SonyCEBrowser', APPLETV].join(PIPE) + CLOSE),\n desktop: re(DESKTOP)\n },\n ms: {\n /**\n *\n * Microsoft platform specific form factor tests to address their UA nonsense\n * without affecting other platforms treating Xbox as Tablet to avoid\n * Flash issues / push into apps when appropriate\n *\n */\n tablet: re(OPEN + [\n 'Tablet|iPad',\n '\\\\sNT.*?' + WINDOWS_PHONE,\n ANDROID + '(?!.*Mobi)',\n 'silk',\n BB + '.*?Tablet',\n 'xbox'\n ].join(PIPE) + CLOSE),\n phone: re(OPEN + ['Mobi|Mobile', 'WPDesktop', IOS, WINDOWS_PHONE, BB].join(PIPE) + CLOSE),\n smarttv: re(OPEN + ['Tizen', 'SMART-TV', 'NetCast', 'Viera'].join(PIPE) + CLOSE),\n connecteddevice: re(OPEN + ['Xbox', 'CrKey', 'Tivo', 'SonyCEBrowser', APPLETV].join(PIPE) + CLOSE),\n desktop: re('(?:Windows NT(?!.*WPDesktop)(?!.*Xbox))')\n }\n};\n\nexport default {\n constants: {\n OPEN,\n CLOSE,\n CASE,\n PIPE,\n OTHER,\n VERSION,\n FORMFACTORS\n },\n re,\n devices,\n platforms,\n platformVersion,\n browser,\n browserCore,\n formFactor\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/device.regexs.js","/**\n *\n * @module environmentConfiguration\n *\n */\n\n/**\n *\n * @class EnvironmentConfiguration\n * @desc Provides configuration information that describes the current environment\n * and is used by the ConfigurationClient to retrieve the SdkSessionConfiguration\n * necessary to create an SdkSession instance.\n *\n */\nexport default class EnvironmentConfiguration {\n\n /**\n *\n * @param {String} applicationRuntime\n * @param {String} applicationRuntimeProfile\n * @param {String} applicationVersion\n * @param {String} deviceFamily\n * @param {String} deviceProfile\n * @param {String} deviceRuntimeProfile\n * @param {String} sdkVersion\n * @param {String} configVersion\n *\n */\n constructor({ applicationRuntime, applicationRuntimeProfile, applicationVersion,\n deviceFamily, deviceProfile, deviceRuntimeProfile,\n sdkVersion, configVersion } = {}) {\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the application runtime.\n *\n */\n this.applicationRuntime = applicationRuntime || 'trilithium';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the application runtime profile (e.g. \"debug\", \"release\").\n *\n */\n this.applicationRuntimeProfile = applicationRuntimeProfile || 'release';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the application version.\n *\n */\n this.applicationVersion = applicationVersion || '';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the device family (e.g. \"browser\").\n *\n */\n this.deviceFamily = deviceFamily || 'browser';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the device profile (e.g. \"desktop\", \"sony\").\n *\n */\n this.deviceProfile = deviceProfile || 'sony';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the device runtime profile.\n *\n */\n this.deviceRuntimeProfile = deviceRuntimeProfile || '';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the SDK version (e.g. \"4.2\").\n *\n */\n this.sdkVersion = sdkVersion || '4.2';\n\n /**\n *\n * @access public\n * @type {String}\n * @desc Gets or sets the configuration version (e.g. \"2.0\").\n *\n */\n this.configVersion = configVersion || '2.0';\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.platform = '';\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.device = global.engine.stats.device;\n\n /**\n *\n * @desc Initialize properties based on runtime device values.\n *\n */\n this.init();\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Initialize the environment config properties based on runtime device values.\n *\n */\n init() {\n\n const { device, deviceRuntimeProfile } = this;\n\n const major = device.version[0] || 0;\n const minor = device.version[1] || 0;\n const revision = device.version[2] || 0;\n\n if (!deviceRuntimeProfile || deviceRuntimeProfile.trim() === '') {\n this.deviceRuntimeProfile = `${major}.${minor}.${revision}`;\n }\n\n this.platform = device.platform;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/sony/trilithium/environmentConfiguration.js","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/get-own-property-descriptor.js\n// module id = 524\n// module chunks = 0","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js\n// module id = 525\n// module chunks = 0","module.exports = require(\"core-js/library/fn/object/get-own-property-symbols\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/object/get-own-property-symbols.js\n// module id = 526\n// module chunks = 0","require('../../modules/es6.symbol');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertySymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/get-own-property-symbols.js\n// module id = 527\n// module chunks = 0","/**\n *\n * @module adEngineManagerExtrasMap\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\n\n/**\n *\n * @class AdEngineManagerExtrasMap\n * @desc Provides additional configuration information used by the manager.\n *\n */\nexport default class AdEngineManagerExtrasMap {\n\n /**\n *\n * @param {Object} adTargeting\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(adTargeting, logger = Logging) {\n\n const errorMessage = {\n ctor: 'AdEngineManagerExtrasMap(adTargeting, logger)',\n get adTargeting() {\n return `${this.ctor} adTargeting should be an Object`;\n }\n };\n\n if (Check.not.object(adTargeting)) {\n logger.warn('AdEngineManagerExtrasMap', errorMessage.adTargeting);\n }\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.adTargeting = adTargeting;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/adEngineManagerExtrasMap.js","/**\n *\n * @module contentClientExtrasMap\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n greater\n} = Check.assert;\n\n/**\n *\n * @class ContentClientExtrasMap\n * @desc Provides extra data used by the ContentClient\n *\n */\nexport default class ContentClientExtrasMap {\n\n /**\n *\n * @param {Number} urlSizeLimit\n *\n */\n constructor(urlSizeLimit) {\n\n const errorMessage = {\n ctor: 'ContentClientExtrasMap(urlSizeLimit)',\n get urlSizeLimit() {\n return `${this.ctor} urlSizeLimit should be a Number greater than 0`;\n }\n };\n\n greater(\n urlSizeLimit,\n 0,\n errorMessage.urlSizeLimit,\n InvalidArgumentException\n );\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc Gets the maximum size of the URL that can be used for GET operations.\n *\n */\n this.urlSizeLimit = urlSizeLimit;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/content/contentClientExtrasMap.js","/**\n *\n * @module configurationClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef ConfigurationClientEndpoint\n * @type {Object}\n *\n * @property {String} configuration\n *\n */\n\n/**\n *\n * @enum\n * @type {ConfigurationClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n configuration: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/configurationClientEndpoint.js","/**\n *\n * @module configurationClientHostParams\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class ConfigurationClientHostParams\n * @desc A model containing the ConfigurationClient's host params.\n *\n */\nexport default class ConfigurationClientHostParams {\n\n /**\n *\n * @param {String} baseUrl\n *\n */\n constructor(baseUrl) {\n\n const errorMessage = {\n ctor: 'ConfigurationClientHostParams(baseUrl)',\n get baseUrl() {\n return `${this.ctor} baseUrl should be a String with length`;\n }\n };\n\n nonEmptyString(baseUrl, errorMessage.baseUrl, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.baseUrl = baseUrl;\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/configurationClientHostParams.js","/**\n *\n * @module platformProfileReference\n *\n */\n\n/**\n *\n * @access private\n * @typedef SDK.Services.Configuration.PlatformProfileReference\n * @type {Object}\n * @since 3.7.0\n * @desc Internal platform hash reference.\n *\n * @property {Object} appletv\n * @property {Object} chromecast\n * @property {Object} netcast\n * @property {Object} panasonictv\n * @property {Object} orsay\n * @property {Object} sonybravia\n * @property {Object} trilithium\n * @property {Object} tivo\n * @property {Object} tizen\n * @property {Object} vizio\n * @property {Object} webos\n *\n */\n\n/**\n *\n * @type {SDK.Services.Configuration.PlatformProfileReference}\n *\n */\nexport default {\n appletv: {\n deviceProfile: 'apple',\n applicationRuntime: 'appletv',\n platform: 'appletv'\n },\n chromecast: {\n deviceProfile: 'google',\n applicationRuntime: 'chromecast',\n platform: 'chromecast'\n },\n netcast: {\n deviceProfile: 'lg',\n applicationRuntime: 'netcast',\n platform: 'netcast'\n },\n panasonictv: {\n deviceProfile: 'panasonic',\n applicationRuntime: 'panasonictv',\n platform: 'panasonictv'\n },\n orsay: {\n deviceProfile: 'samsung',\n applicationRuntime: 'orsay',\n platform: 'orsay'\n },\n sonybravia: {\n deviceProfile: 'sony',\n applicationRuntime: 'sonybravia',\n platform: 'sonybravia'\n },\n trilithium: {\n deviceProfile: 'sony',\n applicationRuntime: 'trilithium'\n },\n tivo: {\n deviceProfile: 'tivo',\n applicationRuntime: 'tivo',\n platform: 'tivo'\n },\n tizen: {\n deviceProfile: 'samsung',\n applicationRuntime: 'tizen',\n platform: 'tizen'\n },\n vizio: {\n deviceProfile: 'vizio',\n applicationRuntime: 'vizio',\n platform: 'vizio'\n },\n webos: {\n deviceProfile: 'lg',\n applicationRuntime: 'webos',\n platform: 'webos'\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/configuration/platformProfileReference.js","/**\n *\n * @module httpClient\n * @author Greg Babula [greg.babula@disneystreaming.com]\n * @see https://github.github.io/fetch/\n * @see https://fetch.spec.whatwg.org/\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch\n * @see https://github.com/bitinn/node-fetch/blob/master/LIMITS.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../../logging/entry';\nimport Configuration from './../../configuration/entry';\nimport Exception from './../../exception/entry';\nimport CoreHttpClientProvider from './../shared/coreHttpClientProvider';\n\nconst HttpMethod = Configuration.HttpMethod;\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n like\n} = Check.assert;\n\nlet fetch;\n\nif (process.env.device_family === 'node') {\n fetch = require('node-fetch');\n} else {\n fetch = require('./../../lib/whatwg-fetch');\n}\n\nconst { Request, Headers } = fetch;\n\n/**\n *\n * @class HttpClient\n * @extends {CoreHttpClientProvider}\n * @desc Isomorphic HttpClient implementation, powered by `whatwg-fetch` and `node-fetch`.\n *\n * @example\n * const httpClient = new HttpClient(logger);\n *\n */\nexport default class HttpClient extends CoreHttpClientProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n super(logger);\n\n this.logger.log(HttpClient.name, 'Created Isomorphic Provider.');\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @note By default, the `credentials` option is `include`, this can be\n * overridden if necessary, however in general its expected to be `include` for\n * majority of POST requests.\n * @throws {NetworkException}\n * @returns {Promise}\n *\n * @example\n * httpClient.post(options).then((response) => { console.log(response.data); });\n *\n */\n post(options) {\n\n const errorMessage = {\n method: 'HttpClient.post(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n const { url, headers, body, bodyType, credentials = 'include' } = options;\n const { getResponseData, onError } = this;\n\n const request = new Request(url, {\n method: HttpMethod.POST,\n body,\n headers: new Headers(headers),\n credentials\n });\n\n return fetch(request).then((response) => {\n\n return getResponseData(response, bodyType);\n\n }).catch(onError);\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @note By default, the `credentials` option is `undefined`, this is by design as\n * the majority of GET requests do not need this option. There are certain edge-cases\n * that need this option.\n * @note When the `credentials` option is `undefined` and passed in to a newly\n * constructed `Request`, the `Request` `Object` will default to the correct value.\n * @throws {NetworkException}\n * @returns {Promise}\n *\n * @example\n * httpClient.get(options).then((response) => { console.log(response.data); });\n *\n */\n get(options) {\n\n const errorMessage = {\n method: 'HttpClient.get(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n const { url, headers, bodyType, credentials } = options;\n const { getResponseData, onError } = this;\n\n const request = new Request(url, {\n method: HttpMethod.GET,\n headers: new Headers(headers),\n mode: 'cors',\n credentials\n });\n\n return fetch(request).then((response) => {\n\n return getResponseData(response, bodyType);\n\n }).catch(onError);\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @note When the `credentials` option is `undefined` and passed in to a newly\n * constructed `Request`, the `Request` `Object` will default to the correct value.\n * @throws {NetworkException}\n * @returns {Promise}\n *\n * @example\n * httpClient.del(options).then((response) => { console.log(response.data); });\n *\n */\n del(options) {\n\n const errorMessage = {\n method: 'HttpClient.del(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n const { url, headers, body, bodyType, credentials } = options;\n const { getResponseData, onError } = this;\n\n const request = new Request(url, {\n method: HttpMethod.DELETE,\n body,\n headers: new Headers(headers),\n credentials\n });\n\n return fetch(request).then((response) => {\n\n return getResponseData(response, bodyType);\n\n }).catch(onError);\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @note When the `credentials` option is `undefined` and passed in to a newly\n * constructed `Request`, the `Request` `Object` will default to the correct value.\n * @throws {NetworkException}\n * @returns {Promise}\n *\n * @example\n * httpClient.patch(options).then((response) => { console.log(response.data); });\n *\n */\n patch(options) {\n\n const errorMessage = {\n method: 'HttpClient.patch(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n const { url, headers, body, bodyType, credentials } = options;\n const { getResponseData, onError } = this;\n\n const request = new Request(url, {\n method: HttpMethod.PATCH,\n body,\n headers: new Headers(headers),\n credentials\n });\n\n return fetch(request).then((response) => {\n\n return getResponseData(response, bodyType);\n\n }).catch(onError);\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @note When the `credentials` option is `undefined` and passed in to a newly\n * constructed `Request`, the `Request` `Object` will default to the correct value.\n * @throws {NetworkException}\n * @returns {Promise}\n *\n * @example\n * httpClient.put(options).then((response) => { console.log(response.data); });\n *\n */\n put(options) {\n\n const errorMessage = {\n method: 'HttpClient.put(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n const { url, headers, body, bodyType, credentials } = options;\n const { getResponseData, onError } = this;\n\n const request = new Request(url, {\n method: HttpMethod.PUT,\n body,\n headers: new Headers(headers),\n credentials\n });\n\n return fetch(request).then((response) => {\n\n return getResponseData(response, bodyType);\n\n }).catch(onError);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {Object} [response={}] - The response Object.\n * @param {String} [bodyType=null] - The expected response data type, executed after initial JSON attempt\n * @desc Returns a consistent Object containing status, headers,\n * and data (parsed JSON output). If the response cannot be parsed, provide the\n * response as a plain String\n * @returns {Promise}\n * @note because the stream will be read multiple times, clone must be called\n * attempt to JSON.parse initially,\n *\n */\n getResponseData(response = {}, bodyType = null) {\n\n const { status, headers } = response;\n\n return response.clone().json().catch(() => {\n\n const hasBodyType = Check.assigned(bodyType);\n const hasArrayBufferType = Check.equal(bodyType, 'arrayBuffer');\n const hasArrayBufferSupport = Check.assigned(response.arrayBuffer);\n\n if (hasBodyType && hasArrayBufferType && hasArrayBufferSupport) {\n return response.arrayBuffer();\n }\n\n return response.text();\n\n }).then((data) => {\n\n return Promise.resolve({\n status,\n data,\n headers\n });\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/isomorphic/httpClient.js","/**\n *\n * @module whatwg-fetch\n * @desc fetch polyfill ported from https://github.com/github/fetch\n * this is a local fork of whatwg-fetch that exposes the\n * necessary Fetch globals\n * @note exports Fetch instead of exposing a global\n * @note based on whatwg-fetch version 2.0.4\n * @note support is determined by checking against the global for a given platform\n * @see https://github.com/github/fetch\n *\n */\n\n/* eslint-disable */\n\n// npm:window-or-global\nvar scope = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global) ||\n window;\n\n/* istanbul ignore next */\nvar self = scope || {};\n\n/* istanbul ignore next */\nvar support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function () {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\n/* istanbul ignore next */\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function (obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function (obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\n/* istanbul ignore next */\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\n/* istanbul ignore next */\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\n/* istanbul ignore next */\nfunction iteratorFor(items) {\n var iterator = {\n next: function () {\n var value = items.shift()\n return {\n done: value === undefined,\n value: value\n }\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function () {\n return iterator\n }\n }\n\n return iterator\n}\n\n/* istanbul ignore next */\nfunction Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function (value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function (header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function (name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\n/* istanbul ignore next */\nHeaders.prototype.append = function (name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ',' + value : value\n}\n\n/* istanbul ignore next */\nHeaders.prototype['delete'] = function (name) {\n delete this.map[normalizeName(name)]\n}\n\n/* istanbul ignore next */\nHeaders.prototype.get = function (name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\n/* istanbul ignore next */\nHeaders.prototype.has = function (name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\n/* istanbul ignore next */\nHeaders.prototype.set = function (name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\n/* istanbul ignore next */\nHeaders.prototype.forEach = function (callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\n/* istanbul ignore next */\nHeaders.prototype.keys = function () {\n var items = []\n this.forEach(function (value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\n/* istanbul ignore next */\nHeaders.prototype.values = function () {\n var items = []\n this.forEach(function (value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\n/* istanbul ignore next */\nHeaders.prototype.entries = function () {\n var items = []\n this.forEach(function (value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\n/* istanbul ignore next */\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\n/* istanbul ignore next */\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\n/* istanbul ignore next */\nfunction fileReaderReady(reader) {\n return new Promise(function (resolve, reject) {\n reader.onload = function () {\n resolve(reader.result)\n }\n reader.onerror = function () {\n reject(reader.error)\n }\n })\n}\n\n/* istanbul ignore next */\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\n/* istanbul ignore next */\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\n/* istanbul ignore next */\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\n/* istanbul ignore next */\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\n/* istanbul ignore next */\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function (body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function () {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function () {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function () {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function () {\n return this.text().then(decode)\n }\n }\n\n this.json = function () {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\n/* istanbul ignore next */\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n/* istanbul ignore next */\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n}\n\n/* istanbul ignore next */\nfunction Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\n/* istanbul ignore next */\nRequest.prototype.clone = function () {\n return new Request(this, {\n body: this._bodyInit\n })\n}\n\n/* istanbul ignore next */\nfunction decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function (bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\n/* istanbul ignore next */\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function (line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\n/* istanbul ignore next */\nBody.call(Request.prototype)\n\n/* istanbul ignore next */\nfunction Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\n/* istanbul ignore next */\nBody.call(Response.prototype)\n\n/* istanbul ignore next */\nResponse.prototype.clone = function () {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\n/* istanbul ignore next */\nResponse.error = function () {\n var response = new Response(null, {\n status: 0,\n statusText: ''\n })\n response.type = 'error'\n return response\n}\n\n/* istanbul ignore next */\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\n/* istanbul ignore next */\nResponse.redirect = function (url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {\n status: status,\n headers: {\n location: url\n }\n })\n}\n\n/* istanbul ignore next */\nfunction Fetch(input, init) {\n return new Promise(function (resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function () {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function () {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function () {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\n/* istanbul ignore next */\nFetch.Headers = Headers\n/* istanbul ignore next */\nFetch.Request = Request\n/* istanbul ignore next */\nFetch.Response = Response\n\nexport default Fetch;\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/lib/whatwg-fetch.js","module.exports = require(\"core-js/library/fn/object/get-own-property-names\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/object/get-own-property-names.js\n// module id = 535\n// module chunks = 0","require('../../modules/es6.object.get-own-property-names');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyNames(it) {\n return $Object.getOwnPropertyNames(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/object/get-own-property-names.js\n// module id = 536\n// module chunks = 0","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.object.get-own-property-names.js\n// module id = 537\n// module chunks = 0","/**\n *\n * @module httpClient\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../../../logging/entry';\nimport Configuration from './../../../configuration/entry';\nimport Exception from './../../../exception/entry';\nimport CoreHttpClientProvider from './../../shared/coreHttpClientProvider';\n\nconst HttpMethod = Configuration.HttpMethod;\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n like\n} = Check.assert;\n\n/**\n *\n * @class HttpClient\n * @extends {CoreHttpClientProvider}\n * @desc HttpClient implementation for Trilithium platforms.\n *\n * @example\n * const httpClient = new HttpClient(logger);\n *\n */\nexport default class HttpClient extends CoreHttpClientProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(logger = Logging) {\n\n const errorMessage = {\n ctor: 'HttpClient(logger)',\n get httpClient() {\n return `${this.ctor} needs engine.storage.local Instance`;\n }\n };\n\n const httpClientInstance = (function httpClientInstance() {\n return Check.assigned(global)\n && Check.assigned(global.engine)\n && Check.function(global.engine.createHttpClient);\n }());\n\n Check.assert(httpClientInstance, errorMessage.httpClient, InvalidArgumentException);\n\n super(logger);\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc native trilithium HttpClient implementation\n *\n */\n this.client = global.engine.createHttpClient();\n\n this.logger.log(HttpClient.name, 'Created Trilithium Provider.');\n\n }\n\n /**\n *\n * @access public\n * @method post\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {NetworkException}\n * @throws {ProviderException}\n * @returns {Promise}\n *\n * @example\n * httpClient.post(options).then((response) => { console.log(response.data); });\n *\n */\n post(options) {\n\n const errorMessage = {\n method: 'HttpClient.post(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n const { optionsBaseline, client } = this;\n\n like(\n options,\n optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return new Promise((resolve) => {\n\n const { url, headers, body } = options;\n const { getResponseData, getHeaderWithKey, onError } = this;\n\n const request = client.createRequest(HttpMethod.POST, url, { headers });\n\n let response = null;\n\n /**\n *\n * @method onResponse\n * @param {Object} httpResponse\n *\n */\n request.onResponse = (httpResponse) => {\n response = httpResponse;\n };\n\n /**\n *\n * @method onComplete\n * @param {*} responseData\n * @param {Number} responseStatus\n * @returns {Promise}\n *\n */\n request.onComplete = (responseData, responseStatus) => {\n\n if (!responseStatus) {\n\n return onError();\n\n }\n\n return resolve({\n status: responseStatus,\n data: getResponseData(responseData),\n headers: {\n get: (key) => {\n return getHeaderWithKey(key, response);\n }\n }\n });\n\n };\n\n request.sendBody(body);\n request.start();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @method get\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {NetworkException}\n * @throws {ProviderException}\n * @returns {Promise}\n *\n * @example\n * httpClient.get(options).then((response) => { console.log(response.data); });\n *\n */\n get(options) {\n\n const errorMessage = {\n method: 'HttpClient.get(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return new Promise((resolve) => {\n\n const { url, headers } = options;\n const { client, getResponseData, getHeaderWithKey, onError } = this;\n\n const request = client.createRequest(HttpMethod.GET, url, { headers });\n\n let response = null;\n\n /**\n *\n * @method onResponse\n * @param {Object} httpResponse\n *\n */\n request.onResponse = (httpResponse) => {\n response = httpResponse;\n };\n\n /**\n *\n * @method onComplete\n * @param {*} responseData\n * @param {Number} responseStatus\n * @returns {Promise}\n *\n */\n request.onComplete = (responseData, responseStatus) => {\n\n if (!responseStatus) {\n\n return onError();\n\n }\n\n return resolve({\n status: responseStatus,\n data: getResponseData(responseData),\n headers: {\n get: (key) => {\n return getHeaderWithKey(key, response);\n }\n }\n });\n\n };\n\n request.start();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @method del\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {NetworkException}\n * @throws {ProviderException}\n * @returns {Promise}\n *\n * @example\n * httpClient.del(options).then((response) => { console.log(response.data); });\n *\n */\n del(options) {\n\n const errorMessage = {\n method: 'HttpClient.del(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return new Promise((resolve) => {\n\n const { url, headers, body } = options;\n const { client, getResponseData, getHeaderWithKey, onError } = this;\n\n const request = client.createRequest(HttpMethod.DELETE, url, { headers });\n\n let response = null;\n\n /**\n *\n * @method onResponse\n * @param {Object} httpResponse\n *\n */\n request.onResponse = (httpResponse) => {\n response = httpResponse;\n };\n\n /**\n *\n * @method onComplete\n * @param {*} responseData\n * @param {Number} responseStatus\n * @returns {Promise}\n *\n */\n request.onComplete = (responseData, responseStatus) => {\n\n if (!responseStatus) {\n\n return onError();\n\n }\n\n return resolve({\n status: responseStatus,\n data: getResponseData(responseData),\n headers: {\n get: (key) => {\n return getHeaderWithKey(key, response);\n }\n }\n });\n\n };\n\n request.sendBody(body);\n request.start();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @method patch\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @note Trilithium does not natively support the HTTP PATCH method. To support legacy `HttpClient`\n * implementations, the SDK uses the `X-HTTP-Method-Override` header to\n * ensure the service properly handles the request.\n * @throws {NetworkException}\n * @throws {ProviderException}\n * @returns {Promise}\n *\n * @example\n * httpClient.patch(options).then((response) => { console.log(response.data); });\n *\n */\n patch(options) {\n\n const errorMessage = {\n method: 'HttpClient.patch(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return new Promise((resolve) => {\n\n const { url, headers, body } = options;\n const { client, getResponseData, getHeaderWithKey, onError } = this;\n\n const requestHeaders = Object.assign({}, headers);\n requestHeaders['X-HTTP-Method-Override'] = HttpMethod.PATCH;\n\n const request = client.createRequest(HttpMethod.POST, url, { headers: requestHeaders });\n\n let response = null;\n\n /**\n *\n * @method onResponse\n * @param {Object} httpResponse\n *\n */\n request.onResponse = (httpResponse) => {\n response = httpResponse;\n };\n\n /**\n *\n * @method onComplete\n * @param {*} responseData\n * @param {Number} responseStatus\n * @returns {Promise}\n *\n */\n request.onComplete = (responseData, responseStatus) => {\n\n if (!responseStatus) {\n\n return onError();\n\n }\n\n return resolve({\n status: responseStatus,\n data: getResponseData(responseData),\n headers: {\n get: (key) => {\n return getHeaderWithKey(key, response);\n }\n }\n });\n\n };\n\n request.sendBody(body);\n request.start();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @method put\n * @param {Object} options\n * @throws {InvalidArgumentException} when options are incorrect or missing\n * @throws {NetworkException}\n * @throws {ProviderException}\n * @returns {Promise}\n *\n * @example\n * httpClient.put(options).then((response) => { console.log(response.data); });\n *\n */\n put(options) {\n\n const errorMessage = {\n method: 'HttpClient.put(options)',\n get options() {\n return `${this.method} ${this.optionsMismatchError}`;\n }\n };\n\n like(\n options,\n this.optionsBaseline,\n errorMessage.options,\n InvalidArgumentException\n );\n\n return new Promise((resolve) => {\n\n const { url, headers, body } = options;\n const { client, getResponseData, getHeaderWithKey, onError } = this;\n\n const request = client.createRequest(HttpMethod.PUT, url, { headers });\n\n let response = null;\n\n /**\n *\n * @method onResponse\n * @param {Object} httpResponse\n *\n */\n request.onResponse = (httpResponse) => {\n response = httpResponse;\n };\n\n /**\n *\n * @method onComplete\n * @param {*} responseData\n * @param {Number} responseStatus\n * @returns {Promise}\n *\n */\n request.onComplete = (responseData, responseStatus) => {\n\n if (!responseStatus) {\n\n return onError();\n\n }\n\n return resolve({\n status: responseStatus,\n data: getResponseData(responseData),\n headers: {\n get: (key) => {\n return getHeaderWithKey(key, response);\n }\n }\n });\n\n };\n\n request.sendBody(body);\n request.start();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @method getHeaderWithKey\n * @param {String} [key='']\n * @param {Object} [response={}]\n * @returns {String|Null}\n *\n */\n getHeaderWithKey(key = '', response = {}) {\n\n for (const keys in response.headers) {\n if (keys.toLowerCase() === key.toLowerCase()) {\n return response.headers[key];\n }\n }\n\n return null;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/sony/trilithium/httpClient.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Commerce} entry point.\n *\n */\n\nimport CommerceClient from './commerceClient';\nimport CommerceClientConfiguration from './commerceClientConfiguration';\nimport CommerceClientEndpoint from './commerceClientEndpoint';\nimport CommerceClientExtrasMap from './commerceClientExtrasMap';\n\nimport AffiliateTracking from './affiliateTracking';\nimport BillingAddress from './billingAddress';\nimport CreatePaymentMethodPassthroughData from './createPaymentMethodPassthroughData';\nimport CreatePaymentMethodRequest from './createPaymentMethodRequest';\nimport CreatePaymentMethodResponse from './createPaymentMethodResponse';\nimport LineItem from './lineItem';\nimport OrderCampaign from './orderCampaign';\nimport OrderItem from './orderItem';\nimport OrderStatus from './orderStatus';\nimport PaymentCardType from './paymentCardType';\nimport PaymentMethodResponse from './paymentMethodResponse';\nimport PaymentMethodType from './paymentMethodType';\nimport Price from './price';\nimport PriceOrderRequest from './priceOrderRequest';\nimport PriceOrderRequestAddress from './priceOrderRequestAddress';\nimport PriceOrderResponse from './priceOrderResponse';\nimport QueryOrderResponse from './queryOrderResponse';\nimport Sku from './sku';\nimport StrongCustomerAuth from './strongCustomerAuth';\nimport StrongCustomerAuthRequirements from './strongCustomerAuthRequirements';\nimport SubmitOrderWithPaymentMethodRequest from './submitOrderWithPaymentMethodRequest';\nimport SubmitOrderWithPaymentMethodResponse from './submitOrderWithPaymentMethodResponse';\nimport ZipLocation from './zipLocation';\n\n/**\n *\n * @typedef SDK.Services.Commerce\n * @type {Object}\n *\n * @property {CommerceClient} CommerceClient\n * @property {CommerceClientConfiguration} CommerceClientConfiguration\n * @property {CommerceClientEndpoint} CommerceClientEndpoint\n * @property {CommerceClientExtrasMap} CommerceClientExtrasMap\n *\n * @property {AffiliateTracking} AffiliateTracking\n * @property {BillingAddress} BillingAddress\n * @property {CreatePaymentMethodPassthroughData} CreatePaymentMethodPassthroughData\n * @property {CreatePaymentMethodRequest} CreatePaymentMethodRequest\n * @property {CreatePaymentMethodResponse} CreatePaymentMethodResponse\n * @property {LineItem} LineItem\n * @property {OrderCampaign} OrderCampaign\n * @property {OrderItem} OrderItem\n * @property {OrderStatus} OrderStatus\n * @property {PaymentMethodResponse} PaymentMethodResponse\n * @property {PaymentCardType} PaymentCardType\n * @property {PaymentMethodType} PaymentMethodType\n * @property {Price} Price\n * @property {PriceOrderRequest} PriceOrderRequest\n * @property {PriceOrderRequestAddress} PriceOrderRequestAddress\n * @property {PriceOrderResponse} PriceOrderResponse\n * @property {QueryOrderResponse} QueryOrderResponse\n * @property {Sku} Sku\n * @property {StrongCustomerAuth} StrongCustomerAuth\n * @property {StrongCustomerAuthRequirements} StrongCustomerAuthRequirements\n * @property {SubmitOrderWithPaymentMethodRequest} SubmitOrderWithPaymentMethodRequest\n * @property {SubmitOrderWithPaymentMethodResponse} SubmitOrderWithPaymentMethodResponse\n * @property {ZipLocation} ZipLocation\n *\n */\n\n/**\n *\n * @type {SDK.Services.Commerce}\n *\n */\nexport default {\n\n CommerceClient,\n CommerceClientConfiguration,\n CommerceClientEndpoint,\n CommerceClientExtrasMap,\n\n AffiliateTracking,\n BillingAddress,\n CreatePaymentMethodPassthroughData,\n CreatePaymentMethodRequest,\n CreatePaymentMethodResponse,\n LineItem,\n OrderCampaign,\n OrderItem,\n OrderStatus,\n PaymentCardType,\n PaymentMethodResponse,\n PaymentMethodType,\n Price,\n PriceOrderRequest,\n PriceOrderRequestAddress,\n PriceOrderResponse,\n QueryOrderResponse,\n Sku,\n StrongCustomerAuth,\n StrongCustomerAuthRequirements,\n SubmitOrderWithPaymentMethodRequest,\n SubmitOrderWithPaymentMethodResponse,\n ZipLocation\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/entry.js","/**\n *\n * @module commerceClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/commerce.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Exception from './../exception/entry';\nimport Token from './../token/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nimport BillingAddress from './billingAddress';\nimport CommerceClientConfiguration from './commerceClientConfiguration';\nimport CommerceClientEndpoint from './commerceClientEndpoint';\nimport CreatePaymentMethodRequest from './createPaymentMethodRequest';\nimport CreatePaymentMethodResponse from './createPaymentMethodResponse';\nimport OrderItem from './orderItem';\nimport PaymentMethodResponse from './paymentMethodResponse';\nimport Price from './price';\nimport PriceOrderRequest from './priceOrderRequest';\nimport PriceOrderResponse from './priceOrderResponse';\nimport QueryOrderResponse from './queryOrderResponse';\nimport Sku from './sku';\nimport StrongCustomerAuthRequirements from './strongCustomerAuthRequirements';\nimport SubmitOrderWithPaymentMethodRequest from './submitOrderWithPaymentMethodRequest';\nimport SubmitOrderWithPaymentMethodResponse from './submitOrderWithPaymentMethodResponse';\nimport ZipLocation from './zipLocation';\n\nconst AccessToken = Token.AccessToken;\nconst CommerceClientDustUrnReference = DustUrnReference.services.commerce.commerceClient;\nconst HttpMethod = Configuration.HttpMethod;\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst {\n number,\n nonEmptyObject,\n nonEmptyString,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class CommerceClient\n * @desc Provides a data client that can be used to access commerce services.\n *\n */\nexport default class CommerceClient {\n\n /**\n *\n * @param {SDK.Services.Commerce.CommerceClientConfiguration} commerceClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(commerceClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(commerceClientConfiguration, logger, httpClient)`,\n get commerceClientConfiguration() {\n return `${this.ctor} needs SDK.Services.Commerce.CommerceClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n commerceClientConfiguration,\n CommerceClientConfiguration,\n errorMessage.commerceClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {SDK.Services.Commerce.CommerceClientConfiguration}\n *\n */\n this.config = commerceClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.regionHeader = 'x-bamtech-region';\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(CommerceClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Commerce.PriceOrderRequest} request\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @returns {Promise}\n *\n */\n priceOrder(request, accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.priceOrder(request, accessToken)`,\n get request() {\n return `${this.method} needs SDK.Services.Commerce.PriceOrderRequest instance`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(request, PriceOrderRequest, errorMessage.request, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, httpClient, processOrderItems, logger } = this;\n\n const payload = this.getPayload(\n accessToken,\n CommerceClientEndpoint.priceOrder,\n request\n );\n\n logger.info(CommerceClient.name, 'Attempting a price order request.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceClient.name,\n urn: CommerceClientDustUrnReference.priceOrder,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'priceOrder');\n\n }).then((response) => {\n\n const { data } = response;\n const { orderSubTotal, orderTaxAmount, orderTotalAmount, orderDiscountAmount } = data;\n const { orderItems, adjustmentTimeLength, adjustmentTimeUnit, campaignCode, voucherCode } = data;\n const { redemptionCode, paymentRequired } = data;\n const { regionHeader } = this;\n\n const region = Util.getSafe(() => response.headers.get(regionHeader)) || null;\n const processedOrderItems = processOrderItems(orderItems);\n\n return Promise.resolve(\n new PriceOrderResponse({\n region,\n orderSubTotal,\n orderTaxAmount,\n orderTotalAmount,\n orderDiscountAmount,\n orderItems: processedOrderItems,\n adjustmentTimeLength,\n adjustmentTimeUnit,\n campaignCode,\n voucherCode,\n redemptionCode,\n paymentRequired\n })\n );\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} zipCode\n * @returns {Promise>}\n *\n */\n lookupByZipCode(zipCode) {\n\n const errorMessage = {\n method: `${this.constructor.name}.lookupByZipCode(zipCode)`,\n get zipCode() {\n return `${this.method} zipCode should be a String with length`;\n }\n };\n\n nonEmptyString(zipCode, errorMessage.zipCode, InvalidArgumentException);\n\n const { dustEnabled, httpClient, processLocations, logger } = this;\n\n const payload = this.getPayload(\n null,\n CommerceClientEndpoint.lookupByZipCode,\n null,\n zipCode\n );\n\n logger.info(CommerceClient.name, `Retrieving locations by zipcode: \"${zipCode}\".`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceClient.name,\n urn: CommerceClientDustUrnReference.lookupByZipCode,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'lookupByZipCode');\n\n }).then((response) => {\n\n const { data } = response;\n\n const processedLocations = processLocations(data);\n\n return Promise.resolve(processedLocations);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {SDK.Services.Commerce.SubmitOrderWithPaymentMethodRequest} request\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @returns {Promise}\n */\n submitOrderWithPaymentMethod(request, accessToken) {\n\n const method = `${this.constructor.name}.submitOrderWithPaymentMethod(request, accessToken)`;\n const requestError = `${method} needs SDK.Services.Commerce.SubmitOrderWithPaymentMethodRequest instance`;\n const accessTokenError = `${method} needs SDK.Services.Token.AccessToken instance`;\n\n instanceStrict(request, SubmitOrderWithPaymentMethodRequest, requestError, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, accessTokenError, InvalidArgumentException);\n\n const { dustEnabled, httpClient, logger } = this;\n\n const payload = this.getPayload(\n accessToken,\n CommerceClientEndpoint.submitOrderWithPaymentMethod,\n request\n );\n\n logger.info(CommerceClient.name, 'Attempting to submit an order request with payment method.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceClient.name,\n urn: CommerceClientDustUrnReference.submitOrderWithPaymentMethod,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'submitOrderWithPaymentMethod');\n\n }).then((response) => {\n\n const { data } = response;\n const { guid } = data;\n\n return Promise.resolve(new SubmitOrderWithPaymentMethodResponse(guid));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} guid\n * @param {Number} counter\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @returns {Promise}\n * @note the spec does not contain a `counter` argument this is solely for the JS SDK\n *\n */\n getOrderStatus(guid, counter, accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getOrderStatus(guid, counter, accessToken)`,\n get guid() {\n return `${this.method} guid should be a String with length`;\n },\n get counter() {\n return `${this.method} counter should be a Number`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(guid, errorMessage.guid, InvalidArgumentException);\n number(counter, errorMessage.counter, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, httpClient, logger } = this;\n\n const payload = this.getPayload(\n accessToken,\n CommerceClientEndpoint.getOrderStatus,\n null,\n {\n guid,\n counter\n }\n );\n\n logger.info(CommerceClient.name, `Attempting to retrieve the order status for guid: \"${guid}\".`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceClient.name,\n urn: CommerceClientDustUrnReference.getOrderStatus,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'getOrderStatus');\n\n }).then((response) => {\n\n const { data } = response;\n const { guid: guidResponse, orderStatus, sca } = data;\n\n const strongCustomerAuth = Check.assigned(sca) ?\n new StrongCustomerAuthRequirements(sca.sessionId, sca.challengeToken) : null;\n\n const options = {\n guid: guidResponse,\n orderStatus,\n strongCustomerAuth\n };\n\n const queryOrderResponse = new QueryOrderResponse(options);\n\n return Promise.resolve(queryOrderResponse);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {Object} options\n * @param {SDK.Services.Commerce.CreatePaymentMethodRequest} options.request\n * @param {String} [options.region]\n * @param {SDK.Services.Token.AccessToken} options.accessToken\n * @note attempts to use `region`, if provided, to determine a region-specific endpoint to be used - if one isn't\n * found the JS SDK will use the default `createPaymentMethod` endpoint from the SDK client config\n * @returns {Promise}\n *\n */\n createPaymentMethod(options) {\n\n const errorMessage = {\n method: `${this.constructor.name}.createPaymentMethod(options)`,\n get options() {\n return `${this.method} options should be a non-empty Object`;\n },\n get request() {\n return `${this.method} needs SDK.Services.Commerce.CreatePaymentMethodRequest instance`;\n },\n get region() {\n return `${this.method} options.region should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Commerce.CreatePaymentMethodRequest instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { request, region, accessToken } = options;\n\n instanceStrict(request, CreatePaymentMethodRequest, request, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, accessToken, InvalidArgumentException);\n\n if (Check.assigned(region)) {\n nonEmptyString(region, errorMessage.region, InvalidArgumentException);\n }\n\n const { config, dustEnabled, httpClient, logger } = this;\n const { extras } = config;\n const { createPaymentMethodRegionalEndpoints = {} } = extras;\n\n const regionalEndpoint = createPaymentMethodRegionalEndpoints[region];\n const endpoint = regionalEndpoint ? CommerceClientEndpoint[regionalEndpoint] :\n CommerceClientEndpoint.createPaymentMethod;\n\n const payload = this.getPayload(\n accessToken,\n endpoint,\n request\n );\n\n logger.info(CommerceClient.name, 'Attempting to create payment method.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceClient.name,\n urn: CommerceClientDustUrnReference.createPaymentMethod,\n payload,\n method: HttpMethod.POST,\n data: {\n region\n }\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'createPaymentMethod');\n\n }).then((response) => {\n\n const id = Util.getSafe(() => response.data.paymentMethodId);\n const createPaymentMethodResponse = new CreatePaymentMethodResponse(id);\n\n return Promise.resolve(createPaymentMethodResponse);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @returns {Promise}\n *\n */\n getDefaultPaymentMethod(accessToken) {\n\n const method = `${this.constructor.name}.getDefaultPaymentMethod(accessToken)`;\n const accessTokenError = `${method} needs SDK.Services.Token.AccessToken instance`;\n\n instanceStrict(accessToken, AccessToken, accessTokenError, InvalidArgumentException);\n\n const { dustEnabled, httpClient, logger } = this;\n\n const payload = this.getPayload(\n accessToken,\n CommerceClientEndpoint.getDefaultPaymentMethod,\n null\n );\n\n logger.info(CommerceClient.name, 'Attempting to get default payment method.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceClient.name,\n urn: CommerceClientDustUrnReference.getDefaultPaymentMethod,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'getDefaultPaymentMethod');\n\n }).then((response) => {\n\n const { data } = response;\n\n const billingAddress = new BillingAddress(data.billingAddress);\n const options = Object.assign({}, data, { billingAddress });\n const paymentMethodResponse = new PaymentMethodResponse(options);\n\n return Promise.resolve(paymentMethodResponse);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @param {String} paymentMethodId\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @returns {Promise}\n *\n */\n getPaymentCard(paymentMethodId, accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getPaymentCard(paymentMethodId, accessToken)`,\n get paymentMethodId() {\n return `${this.method} paymentMethodId should be a String with length`;\n },\n get accessToken() {\n return `${this.method} accessToken should be an instance of SDK.Services.Token.AccessToken`;\n }\n };\n\n nonEmptyString(paymentMethodId, errorMessage.paymentMethodId, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, httpClient, logger } = this;\n\n const payload = this.getPayload(\n accessToken,\n CommerceClientEndpoint.getPaymentCard,\n null,\n paymentMethodId\n );\n\n logger.info(CommerceClient.name, 'Attempting to get payment card.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceClient.name,\n urn: CommerceClientDustUrnReference.getPaymentCard,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((ex) => {\n\n throw new ServiceException('', [], ex);\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'getPaymentCard');\n\n }).then((response) => {\n\n const { data } = response;\n\n const billingAddress = new BillingAddress(data.billingAddress);\n const options = Object.assign({}, data, { billingAddress });\n const paymentMethodResponse = new PaymentMethodResponse(options);\n\n return Promise.resolve(paymentMethodResponse);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {Array} orderItems\n * @returns {Array}\n *\n */\n processOrderItems(orderItems) {\n\n const processedOrderItems = [];\n\n for (const orderItem of orderItems) {\n\n const { sku, price, subscriptTimePeriod, subscriptionTimeUnit } = orderItem;\n\n processedOrderItems.push(\n new OrderItem({\n sku: new Sku(sku),\n price: new Price(price),\n subscriptTimePeriod,\n subscriptionTimeUnit\n })\n );\n\n }\n\n return processedOrderItems;\n\n }\n\n /**\n *\n * @access private\n * @param {Array} locations\n * @returns {Array}\n *\n */\n processLocations(locations) {\n\n const processedLocations = [];\n\n for (const location of locations) {\n\n const { city, state, country } = location;\n\n const zipLocation = new ZipLocation(city, state, country);\n\n processedLocations.push(zipLocation);\n\n }\n\n return processedLocations;\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {CommerceClientEndpoint} rel - endpoint type\n * @param {Object} body\n * @param {String|Object} param\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, body, param) {\n\n const { endpoints } = this.config;\n\n const endpoint = endpoints[rel];\n\n const { href, headers } = endpoint;\n\n const requestBody = body ? JSON.stringify(body) : '';\n const requestHeaders = Object.assign({}, headers);\n\n let url = href;\n let credentials;\n\n if (rel === CommerceClientEndpoint.lookupByZipCode) {\n url = href.replace(/\\{zipcode\\}/, param);\n }\n\n if (rel === CommerceClientEndpoint.getOrderStatus) {\n\n url = href.replace(/\\{guid\\}/, param.guid);\n url = url.replace(/\\{counter\\}/, param.counter);\n\n credentials = 'include';\n\n }\n\n if (rel === CommerceClientEndpoint.getPaymentCard) {\n url = href.replace(/\\{paymentMethodId\\}/, param);\n }\n\n if (Check.assigned(requestHeaders.Authorization)) {\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi, accessToken.token);\n }\n\n return {\n url,\n body: requestBody,\n headers: requestHeaders,\n credentials\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/commerce/commerceClient.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Content} entry point.\n *\n */\n\nimport ContentClient from './contentClient';\nimport ContentClientConfiguration from './contentClientConfiguration';\nimport ContentClientEndpoint from './contentClientEndpoint';\nimport GraphQlBuilder from './graphQlBuilder';\nimport GraphQlQuery from './graphQlQuery';\nimport GraphQlPersistedQuery from './graphQlPersistedQuery';\n\n/**\n *\n * @typedef SDK.Services.Content\n * @type {Object}\n *\n * @property {ContentClient} ContentClient\n * @property {ContentClientConfiguration} ContentClientConfiguration\n * @property {ContentClientEndpoint} ContentClientEndpoint\n * @property {GraphQlBuilder} GraphQlBuilder\n * @property {GraphQlQuery} GraphQlQuery\n * @property {GraphQlPersistedQuery} GraphQlPersistedQuery\n *\n */\n\n/**\n *\n * @type {SDK.Services.Content}\n *\n */\nexport default {\n\n ContentClient,\n ContentClientConfiguration,\n ContentClientEndpoint,\n GraphQlBuilder,\n GraphQlQuery,\n GraphQlPersistedQuery\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/content/entry.js","/**\n *\n * @module contentClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/content.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Exception from './../exception/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Configuration from './../configuration/entry';\nimport Token from './../token/entry';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\n\nimport ContentClientConfiguration from './contentClientConfiguration';\nimport GraphQlBuilder from './graphQlBuilder';\nimport ContentClientEndpoint from './contentClientEndpoint';\n\nimport SearchOverrides from './../../content/searchOverrides';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst ContentClientDustUrnReference = DustUrnReference.services.content.contentClient;\n\nconst {\n nonEmptyObject,\n integer,\n positive,\n nonEmptyString,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class ContentClient\n * @implements {IContentClient}\n * @desc Provides a data client that can be used to access content services.\n *\n */\nexport default class ContentClient {\n\n /**\n *\n * @param {ContentClientConfiguration} contentClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(contentClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'ContentClient(contentClientConfiguration, logger, httpClient)',\n get contentClientConfiguration() {\n return `${this.ctor} needs ContentClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n contentClientConfiguration,\n ContentClientConfiguration,\n errorMessage.contentClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {ContentClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = contentClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n /**\n *\n * @type {String}\n * @desc optional parameter that defines the country of origin for the content request\n *\n */\n this.xGeoOverride = 'X-GEO-OVERRIDE';\n\n /**\n *\n * @type {String}\n * @desc an optional parameter that can be used to limit search results to a specific time period\n * @note this is not supported in production\n *\n */\n this.xDelorean = 'X-DELOREAN';\n\n /**\n *\n * @type {String}\n * @desc an optional parameter that is supplied to content requests to identify related content requests\n *\n */\n this.xContentTransactionId = 'X-Content-Transaction-ID';\n\n this.logger.log(ContentClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @param {String} options.context - The GraphQL endpoint context.\n * @param {GraphQlBuilder} options.graphQlBuilder - A GraphQlBuilder object that creates\n * a valid GraphQL query to be used to get the content.\n * @param {SDK.Services.Token.AccessToken} options.accessToken - The current access token.\n * @param {SDK.Content.SearchOverrides} [options.overrides] - Values that can be used to override location and time\n * information that is otherwise automatically derived for search requests.\n * @param {String} [contentTransactionId] - An application developer-provided value to be included with the HTTP\n * request as the value of the `X-Content-Transaction-ID` header.\n * @param {SDK.Content.SearchOverrides} [options.overrides] - Values that can be used to override\n * @desc Returns the results for the query.\n * @returns {Promise} The results for the query.\n *\n */\n query(options) {\n\n const errorMessage = {\n method: 'ContentClient.query(options)',\n get options() {\n return `${this.method} options should be a non-empty Object`;\n },\n get context() {\n return `${this.method} options.context should be a String with length`;\n },\n get graphQlBuilder() {\n return `${this.method} needs GraphQlBuilder instance`;\n },\n get accessToken() {\n return `${this.method} needs AccessToken instance`;\n },\n get overrides() {\n return `${this.method} options.overrides should be an instance of SDK.Content.SearchOverrides`;\n },\n get contentTransactionId() {\n return `${this.method} options.contentTransactionId should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { context, graphQlBuilder, accessToken, overrides, contentTransactionId } = options;\n\n nonEmptyString(context, errorMessage.context, InvalidArgumentException);\n instanceStrict(graphQlBuilder, GraphQlBuilder, errorMessage.graphQlBuilder, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n if (Check.assigned(overrides)) {\n instanceStrict(overrides, SearchOverrides, errorMessage.overrides, InvalidArgumentException);\n }\n\n if (Check.assigned(contentTransactionId)) {\n nonEmptyString(contentTransactionId, errorMessage.contentTransactionId, InvalidArgumentException);\n }\n\n const { dustEnabled, httpClient, logger } = this;\n\n if (!ContentClientEndpoint[context]) {\n logger.warn(ContentClient.name, `ContentClientEndpoint[${context}] is not defined.`);\n }\n\n const payload = this.getPayload({\n accessToken,\n rel: context,\n graphQlBuilder,\n overrides,\n contentTransactionId\n });\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: ContentClient.name,\n urn: ContentClientDustUrnReference.query,\n payload,\n method: payload.method\n });\n\n return httpClient[payload.method](payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'query');\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(data);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} suggestionSet - The name of the data dictionary used for the suggestions.\n * You must know what valid values are ahead of time.\n * @param {String} query - The case-insensitive query term entered by a user searching for something.\n * @param {Integer} [limit=null] - Limits the maximum number of suggestions in the response.\n * Required if you are also using the filter parameter.\n * @param {String} [filter=null] - Only return suggestions which also contain this string (case insensitive).\n * @desc Queries for search suggestions.\n * @returns {Promise} A list of search suggestions.\n *\n */\n getSearchSuggestions(suggestionSet, query, limit = null, filter = null) {\n const errorMessage = {\n method: 'ContentClient.getSearchSuggestions(suggestionSet, query, limit, filter)',\n get suggestionSet() {\n return `${this.method} needs suggestionSet instance`;\n },\n get query() {\n return `${this.method} needs query instance`;\n },\n get limit() {\n return `${this.method} limit should be a positive integer`;\n },\n get filter() {\n return `${this.method} filter should be a string with length`;\n }\n };\n\n nonEmptyString(suggestionSet, errorMessage.suggestionSet, InvalidArgumentException);\n nonEmptyString(query, errorMessage.query, InvalidArgumentException);\n\n if (Check.assigned(limit)) {\n integer(limit, errorMessage.limit, InvalidArgumentException);\n positive(limit, errorMessage.limit, InvalidArgumentException);\n }\n\n if (Check.assigned(filter)) {\n nonEmptyString(filter, errorMessage.filter, InvalidArgumentException);\n }\n\n const { dustEnabled, httpClient, logger } = this;\n const { endpoints } = this.config;\n const endpoint = endpoints[ContentClientEndpoint.searchSuggestions];\n const { href, headers } = endpoint;\n const requestHeaders = Object.assign({}, headers);\n\n let url = href;\n\n url = url.replace('{dictionary}', suggestionSet);\n url = url.replace('{query}', query);\n\n url = Check.integer(limit) && Check.positive(limit) ? `${url}?limit=${limit}` : `${url}?limit=`;\n url = Check.string(filter) && Check.nonEmptyString(filter) ? `${url}&filter=${filter}` : `${url}&filter=`;\n\n const payload = {\n url,\n headers: requestHeaders\n };\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: ContentClient.name,\n urn: ContentClientDustUrnReference.getSearchSuggestions,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(data);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {Object} options\n * @param {SDK.Services.Token.AccessToken} options.accessToken\n * @param {CatalogClientEndpoint} options.rel\n * @param {GraphQlBuilder} options.graphQlBuilder\n * @param {SDK.Content.SearchOverrides} [options.overrides]\n * @param {String} [options.contentTransactionId]\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(options) {\n\n const { accessToken, rel, graphQlBuilder, overrides, contentTransactionId } = options;\n const { endpoints, urlSizeLimit } = this.config;\n const { xDelorean, xGeoOverride, xContentTransactionId } = this;\n\n const endpoint = endpoints[rel];\n\n const { href, method, headers } = endpoint;\n\n const overrideHeaders = {};\n\n if (Check.assigned(overrides)) {\n\n const { activeDate, countryCode } = overrides;\n\n if (!!activeDate) {\n overrideHeaders[xDelorean] = activeDate;\n }\n\n if (!!countryCode) {\n overrideHeaders[xGeoOverride] = countryCode;\n }\n\n }\n\n if (Check.assigned(contentTransactionId)) {\n overrideHeaders[xContentTransactionId] = contentTransactionId;\n }\n\n const requestHeaders = Object.assign({}, headers, overrideHeaders);\n\n let requestMethod = method ? HttpMethod[method.toUpperCase()] : HttpMethod.POST;\n let url = graphQlBuilder.createQueryUrl(href, requestMethod);\n let requestBody = '';\n\n if (requestMethod === HttpMethod.GET && url.length > urlSizeLimit) {\n\n requestMethod = HttpMethod.POST;\n url = graphQlBuilder.createQueryUrl(href, requestMethod);\n\n }\n\n if (requestMethod === HttpMethod.GET) {\n delete requestHeaders['Content-Type'];\n } else if (requestMethod === HttpMethod.POST) {\n requestBody = graphQlBuilder.createPostContent();\n }\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi,\n accessToken.token);\n\n return {\n url,\n body: requestBody,\n method: requestMethod.toLowerCase(),\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/content/contentClient.js","/**\n *\n * @module graphQlQuery\n *\n */\n\nimport Check from 'check-types';\nimport queryString from 'query-string';\nimport HttpMethod from './../configuration/httpMethod';\nimport GraphQlBuilder from './graphQlBuilder';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n includes,\n string,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class GraphQlQuery\n * @extends {GraphQlBuilder}\n *\n */\nexport default class GraphQlQuery extends GraphQlBuilder {\n\n /**\n *\n * @param {String} query\n * @param {String} [operationName=null]\n * @param {Object} [variables=null]\n *\n */\n constructor(query, operationName = null, variables = null) {\n\n const errorMessage = {\n ctor: 'GraphQlQuery(query, operationName, variables)',\n get query() {\n return `${this.ctor} query should be a String with length`;\n },\n get operationName() {\n return `${this.ctor} operationName should be a String with length`;\n },\n get variables() {\n return `${this.ctor} variables needs instance of Object`;\n }\n };\n\n nonEmptyString(query, errorMessage.query, InvalidArgumentException);\n\n if (Check.assigned(operationName)) {\n string(operationName, errorMessage.operationName, InvalidArgumentException);\n }\n\n if (Check.assigned(variables)) {\n object(variables, errorMessage.variables, InvalidArgumentException);\n }\n\n super();\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.query = query;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.operationName = operationName || '';\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.variables = variables || {};\n\n }\n\n\n /**\n *\n * @access private\n * @param {String} url - The URL for which to build the query.\n * @param {HttpMethod} method - The method for which to build the query.\n * @desc Returns the URL for the query.\n * @returns {String} The URL for the query.\n *\n */\n createQueryUrl(url, method) {\n\n const errorMessage = {\n mthd: 'createQueryUrl(url, method)',\n get url() {\n return `${this.mthd} url should be a String with length`;\n },\n get method() {\n return `${this.mthd} method needs a valid HttpMethod value`;\n }\n };\n\n nonEmptyString(url, errorMessage.url, InvalidArgumentException);\n\n includes(\n HttpMethod,\n method,\n errorMessage.method,\n InvalidArgumentException\n );\n\n let queryUrl = url;\n\n if (method === HttpMethod.GET) {\n\n const params = {\n query: this.query || '',\n operationName: this.operationName || '',\n variables: this.variables ? JSON.stringify(this.variables) : ''\n };\n\n const urlQueryString = queryString.stringify(params);\n\n queryUrl += `?${urlQueryString}`;\n\n }\n\n return queryUrl;\n\n }\n\n /**\n *\n * @access private\n * @desc Returns the post content for the query.\n * @returns {String} The post content for the query.\n *\n */\n createPostContent() {\n\n return JSON.stringify(this);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/content/graphQlQuery.js","/**\n *\n * @module graphQlPersistedQuery\n *\n */\n\nimport Check from 'check-types';\nimport queryString from 'query-string';\nimport HttpMethod from './../configuration/httpMethod';\nimport GraphQlBuilder from './graphQlBuilder';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n includes,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class GraphQlPersistedQuery\n * @extends {GraphQlBuilder}\n *\n */\nexport default class GraphQlPersistedQuery extends GraphQlBuilder {\n\n /**\n *\n * @param {String} queryId\n * @param {Object} [variables=null]\n *\n */\n constructor(queryId, variables = null) {\n\n const errorMessage = {\n ctor: 'GraphQlPersistedQuery(queryId, variables)',\n get queryId() {\n return `${this.ctor} queryId should be a String with length`;\n },\n get variables() {\n return `${this.ctor} variables needs instance of Object`;\n }\n };\n\n nonEmptyString(queryId, errorMessage.queryId, InvalidArgumentException);\n\n if (Check.assigned(variables)) {\n object(variables, errorMessage.variables, InvalidArgumentException);\n }\n\n super();\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.queryId = queryId;\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.variables = variables || {};\n\n }\n\n /**\n *\n * @access private\n * @param {String} url - The URL for which to build the query.\n * @param {HttpMethod} method - The method for which to build the query.\n * @desc Returns the URL for the query.\n * @returns {String} The URL for the query.\n *\n */\n createQueryUrl(url, method) {\n\n const errorMessage = {\n mthd: 'createQueryUrl(url, metho:',\n get url() {\n return `${this.mthd} url should be a String with length`;\n },\n get method() {\n return `${this.mthd} method needs a valid HttpMethod value`;\n }\n };\n\n nonEmptyString(url, errorMessage.url, InvalidArgumentException);\n\n includes(\n HttpMethod,\n method,\n errorMessage.method,\n InvalidArgumentException\n );\n\n const { queryId, variables } = this;\n\n let queryUrl = url.replace(/\\{queryId\\}/, queryId || '');\n\n if (method === HttpMethod.GET && Check.nonEmptyObject(variables)) {\n\n const queryStringParams = {\n variables: JSON.stringify(variables)\n };\n\n const urlQueryString = queryString.stringify(queryStringParams);\n\n queryUrl += `?${urlQueryString}`;\n\n }\n\n return queryUrl;\n\n }\n\n /**\n *\n * @access private\n * @desc Returns the post content for the query.\n * @returns {String} The post content for the query.\n *\n */\n createPostContent() {\n\n const { queryId, variables } = this;\n\n return JSON.stringify({\n id: queryId,\n variables\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/content/graphQlPersistedQuery.js","/**\n *\n * @module entry\n * @desc {SDK.Services.CustomerService} entry point.\n *\n */\n\nimport CustomerServiceClient from './customerServiceClient';\nimport CustomerServiceClientConfiguration from './customerServiceClientConfiguration';\nimport CustomerServiceClientEndpoint from './customerServiceClientEndpoint';\n\n/**\n *\n * @typedef SDK.Services.CustomerService\n * @type {Object}\n *\n * @property {CustomerServiceClient} CustomerServiceClient\n * @property {CustomerServiceClientConfiguration} CustomerServiceClientConfiguration\n * @property {CustomerServiceClientEndpoint} CustomerServiceClientEndpoint\n *\n */\n\n/**\n *\n * @type {SDK.Services.CustomerService}\n *\n */\nexport default {\n\n CustomerServiceClient,\n CustomerServiceClientConfiguration,\n CustomerServiceClientEndpoint\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/customerService/entry.js","/**\n *\n * @module customerServiceClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/customer-service-code.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Exception from './../exception/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Token from './../token/entry';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nimport CustomerServiceClientConfiguration from './customerServiceClientConfiguration';\nimport CustomerServiceClientEndpoint from './customerServiceClientEndpoint';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst CustomerServiceClientDustUrnReference = DustUrnReference.services.customerService.customerServiceClient;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class CustomerServiceClient\n * @desc Provides a data client that can be used to access customer services.\n *\n */\nexport default class CustomerServiceClient {\n\n /**\n *\n * @access private\n * @param {CustomerServiceClientConfiguration} customerServiceClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(customerServiceClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'CustomerServiceClient(customerServiceClientConfiguration, logger, httpClient)',\n get customerServiceClientConfiguration() {\n return `${this.ctor} needs CustomerServiceClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n customerServiceClientConfiguration,\n CustomerServiceClientConfiguration,\n errorMessage.customerServiceClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {CustomerServiceClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = customerServiceClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(CustomerServiceClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken - The current access token.\n * @desc Creates a customer service code for this user for use in support.\n * @returns {Promise}\n *\n */\n createSupportCode(accessToken) {\n\n const errorMessage = {\n method: 'customerServiceClient.createSupportCode(accessToken)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n CustomerServiceClientEndpoint.createSupportCode\n );\n\n logger.info(CustomerServiceClient.name, 'Requesting customer service support code.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CustomerServiceClient.name,\n urn: CustomerServiceClientDustUrnReference.createSupportCode,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(data);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {CustomerServiceClientEndpoint} rel\n * @param {Object} body (optional)\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, body) {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { href, headers } = endpoint;\n const requestBody = body ? JSON.stringify(body) : '';\n const requestHeaders = Object.assign({}, headers);\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi,\n accessToken.token);\n\n return {\n url: href,\n body: requestBody,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/customerService/customerServiceClient.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Device} entry point.\n *\n */\n\nimport DeviceClient from './deviceClient';\nimport DeviceClientConfiguration from './deviceClientConfiguration';\nimport DeviceClientEndpoint from './deviceClientEndpoint';\nimport DeviceMetadata from './deviceMetadata';\n\n/**\n *\n * @typedef SDK.Services.Device\n * @type {Object}\n *\n * @property {DeviceClient} DeviceClient\n * @property {DeviceClientConfiguration} DeviceClientConfiguration\n * @property {DeviceClientEndpoint} DeviceClientEndpoint\n * @property {DeviceMetadata} DeviceMetadata\n *\n */\n\n/**\n *\n * @type {SDK.Services.Device}\n *\n */\nexport default {\n\n DeviceClient,\n DeviceClientConfiguration,\n DeviceClientEndpoint,\n DeviceMetadata\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/device/entry.js","/**\n *\n * @module deviceClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/device.md\n * @see https://github.bamtech.co/services-commons/public-api/blob/master/swagger/services/device.md\n *\n */\n\n/* eslint-disable camelcase */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Exception from './../exception/entry';\nimport Token from './../token/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nimport DeviceClientConfiguration from './deviceClientConfiguration';\nimport DeviceMetadata from './deviceMetadata';\nimport DeviceClientEndpoint from './deviceClientEndpoint';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst DeviceGrant = Token.DeviceGrant;\nconst HttpMethod = Configuration.HttpMethod;\nconst DeviceClientDustReference = DustUrnReference.services.device.deviceClient;\n\nconst {\n nonEmptyString,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class DeviceClient\n * @implements {IDeviceClient}\n * @desc Provides a data client that can be used to access device services.\n *\n */\nexport default class DeviceClient {\n\n /**\n *\n * @param {DeviceClientConfiguration} deviceClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(deviceClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'DeviceClient(deviceClientConfiguration, logger, httpClient)',\n get deviceClientConfiguration() {\n return `${this.ctor} needs DeviceClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n deviceClientConfiguration,\n DeviceClientConfiguration,\n errorMessage.deviceClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {DeviceClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = deviceClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(DeviceClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {DeviceMetadata} deviceMetadata - The device metadata.\n * @param {String} apiKey - The API key to provide security.\n * @desc Creates a device grant for the provided device criteria.\n * @returns {Promise} A device grant if successful,\n * otherwise a temporary grant indicating device grant creation failed due to internal failure.\n *\n */\n createDeviceGrant(deviceMetadata, apiKey) {\n\n const errorMessage = {\n method: 'DeviceClient.createDeviceGrant(deviceMetadata, apiKey)',\n get deviceMetadata() {\n return `${this.method} needs DeviceMetadata instance`;\n },\n get apiKey() {\n return `${this.method} apiKey should be a String with length`;\n }\n };\n\n instanceStrict(deviceMetadata, DeviceMetadata, errorMessage.deviceMetadata, InvalidArgumentException);\n nonEmptyString(apiKey, errorMessage.apiKey, InvalidArgumentException);\n\n const { dustEnabled, httpClient, logger } = this;\n const { deviceFamily, applicationRuntime, deviceProfile, extraData } = deviceMetadata;\n\n const payload = this.getPayload(\n apiKey,\n DeviceClientEndpoint.createDeviceGrant,\n {\n deviceFamily,\n applicationRuntime,\n deviceProfile,\n attributes: extraData\n }\n );\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: DeviceClient.name,\n urn: DeviceClientDustReference.createDeviceGrant,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n const { grant_type, assertion } = data;\n\n return Promise.resolve(\n new DeviceGrant(grant_type, assertion)\n );\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {String} apiKey\n * @param {String} rel\n * @param {Object} body\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(apiKey, rel, body) {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { href, headers } = endpoint;\n const requestBody = body ? JSON.stringify(body) : '';\n const requestHeaders = Object.assign({}, headers);\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{apiKey\\}/gi, apiKey);\n\n return {\n url: href,\n body: requestBody,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/device/deviceClient.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Drm} entry point.\n *\n */\n\nimport DrmClient from './drmClient';\nimport DrmClientConfiguration from './drmClientConfiguration';\nimport DrmClientEndpoint from './drmClientEndpoint';\nimport PlayReadyMessage from './playReadyMessage';\n\n/**\n *\n * @typedef SDK.Services.Drm\n * @type {Object}\n *\n * @property {DrmClient} DrmClient\n * @property {DrmClientConfiguration} DrmClientConfiguration\n * @property {DrmCLientEndpoint} DrmClientEndpoint\n * @property {PlayReadyMessage} PlayReadyMessage\n *\n */\n\n/**\n *\n * @type {SDK.Services.Drm}\n *\n */\nexport default {\n\n DrmClient,\n DrmClientConfiguration,\n DrmClientEndpoint,\n PlayReadyMessage\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/drm/entry.js","/**\n *\n * @module drmClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md\n * @see https://github.bamtech.co/services-commons/mdrm/tree/master/basic_apis\n * @see https://github.bamtech.co/services-commons/mdrm/blob/master/license_acquisition_urls.md\n *\n */\n\nimport Check from 'check-types';\nimport Token from './../token/entry';\nimport Exception from './../exception/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Logging from './../../logging/entry';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nimport DrmClientEndpoint from './drmClientEndpoint';\nimport DrmClientConfiguration from './drmClientConfiguration';\nimport PlayReadyMessage from './playReadyMessage';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst DrmClientDustUrnReference = DustUrnReference.services.drm.drmClient;\n\nconst {\n nonEmptyString,\n instanceStrict\n} = Check.assert;\n\nexport default class DrmClient {\n\n /**\n *\n * @param {DrmClientConfiguration} drmClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(drmClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'DrmClient(drmClientConfiguration, logger, httpClient)',\n get drmClientConfiguration() {\n return `${this.ctor} needs DrmClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n drmClientConfiguration,\n DrmClientConfiguration,\n errorMessage.drmClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {DrmClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = drmClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(DrmClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {String} keyLocation - The URL of the decryption key.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Retrieves a SILK decryption key from the key service.\n * @returns {Promise>} The decryption key for this event.\n *\n */\n getSilkKey(keyLocation, accessToken) {\n\n const errorMessage = {\n method: 'DrmClient.getSilkKey(keyLocation, accessToken)',\n get keyLocation() {\n return `${this.method} needs keyLocation String`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(keyLocation, errorMessage.keyLocation, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n DrmClientEndpoint.silkKey,\n undefined,\n 'json'\n );\n\n // set the payload URL based on the provided key location\n payload.url = keyLocation;\n\n logger.info(DrmClient.name, `Attempting to retreive SilkKey from keyLocation: ${keyLocation}.`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: DrmClient.name,\n urn: DrmClientDustUrnReference.getSilkKey,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(data);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @desc Retrieves a SILK decryption key from the key service.\n * @returns {Promise} A Promise fulfilled by the\n * BAMTECH FairPlay Application Certificate as binary data.\n * @note This certificate is the same for all partners.\n * It will be hosted statically and can be stored on a long-term basis.\n *\n */\n getFairPlayCertificate(accessToken) {\n\n const errorMessage = {\n method: 'DrmClient.getFairPlayCertificate(accessToken)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n DrmClientEndpoint.fairPlayCertificate\n );\n\n logger.info(DrmClient.name, 'Attempting to retreive FairPlay Certificate.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: DrmClient.name,\n urn: DrmClientDustUrnReference.getFairPlayCertificate,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(data);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {Array} serverPlaybackContext - A server playback context created by the DRM client (typically\n * directly by the player or the platform).\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Requests a FairPlay content key context from the license service to autohrize and decrypt media.\n * @returns {Promise>} A Promise fulfilled by a content key context from the license server.\n * @note This certificate is the same for all partners. It will be hosted statically and can be stored on a\n * long-term basis.\n *\n */\n getFairPlayLicense(serverPlaybackContext, accessToken) {\n\n const errorMessage = {\n method: 'DrmClient.getFairPlayLicense(serverPlaybackContext, accessToken)',\n get serverPlaybackContextString() {\n return `${this.method} serverPlaybackContext should be a String with length`;\n },\n get serverPlaybackContext() {\n return `${this.method} buffer should be an ArrayBuffer view`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n if (Check.not.string(serverPlaybackContext)) {\n\n Check.assert(\n ArrayBuffer.isView(serverPlaybackContext),\n errorMessage.serverPlaybackContext,\n InvalidArgumentException\n );\n\n } else {\n\n nonEmptyString(serverPlaybackContext, errorMessage.serverPlaybackContext, InvalidArgumentException);\n\n }\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n DrmClientEndpoint.fairPlayLicense,\n serverPlaybackContext\n );\n\n logger.info(DrmClient.name, `Attempting to retreive FairPlay License: ${JSON.stringify(serverPlaybackContext)}.`); // eslint-disable-line max-len\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: DrmClient.name,\n urn: DrmClientDustUrnReference.getFairPlayLicense,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(data);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @desc Retrieves the BAMTECH Widevine Service Certificate.\n * @returns {Promise} A Promise fulfilled by the\n * BAMTECH Widevine Service Certificate as binary data.\n * @note This certificate is the same for all partners.\n * It will be hosted statically and can be stored on a long-term basis.\n *\n */\n getWidevineCertificate(accessToken) {\n\n const errorMessage = {\n method: 'DrmClient.getWidevineCertificate(accessToken)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n DrmClientEndpoint.widevineCertificate\n );\n\n logger.info(DrmClient.name, 'Attempting to retreive Widevine Certificate.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: DrmClient.name,\n urn: DrmClientDustUrnReference.getWidevineCertificate,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(data);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {Array} buffer - A protocol buffer conforming to\n * the Widevine specification identifying the asset and encryption mode.\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @desc Requests a Widevine License from the license service.\n * @returns {Promise>} A Promise fulfilled with the Widevine license as binary data.\n * @note Nearly all Widevine DRM clients will provide a mechanism to create the Widevine protocol buffer. The\n * SDK shall leverage these capabilities wherever possible.\n *\n */\n getWidevineLicense(buffer, accessToken) {\n\n const errorMessage = {\n method: 'DrmClient.getWidevineLicense(buffer, accessToken)',\n get buffer() {\n return `${this.method} buffer should be an ArrayBuffer view`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n Check.assert(ArrayBuffer.isView(buffer), errorMessage.buffer, InvalidArgumentException);\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n DrmClientEndpoint.widevineLicense,\n buffer\n );\n\n logger.info(DrmClient.name, `Attempting to retreive Widevine License with: ${JSON.stringify(buffer)}.`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: DrmClient.name,\n urn: DrmClientDustUrnReference.getWidevineLicense,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(data);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {PlayReadyMessage} message - A configured `PlayReadyMessage` containing\n * any required headers and a `PlayReadyObject`.\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @desc Reqests a PlayReady license from the license server.\n * @returns {Promise>} A Promise fulfilled with the PlayReady license as binary data.\n *\n */\n getPlayReadyLicense(message, accessToken) {\n\n const errorMessage = {\n method: 'DrmClient.getPlayReadyLicense(message, accessToken)',\n get message() {\n return `${this.method} message needs to be an instance of PlayReadyMessage`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(message, PlayReadyMessage, errorMessage.message, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n DrmClientEndpoint.playReadyLicense,\n Util.getSafe(() => message.body.xmlData) ? message.body.xmlData : undefined\n );\n\n logger.info(DrmClient.name, `Attempting to retreive PlayReady License: message: ${JSON.stringify(message.body)}.`); // eslint-disable-line max-len\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: DrmClient.name,\n urn: DrmClientDustUrnReference.getPlayReadyLicense,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(data);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {DrmClientEndpoint} rel\n * @param {Object} body\n * @param {String} [bodyType='arrayBuffer'] - default `bodyType` for DRM requests\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, body, bodyType = 'arrayBuffer') {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { href, headers } = endpoint;\n const requestHeaders = Object.assign({}, headers);\n const url = href;\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi, accessToken.token);\n\n return {\n url,\n body,\n bodyType,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/drm/drmClient.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Eligibility} entry point.\n *\n */\n\n\nimport EligibilityClient from './eligibilityClient';\nimport EligibilityClientConfiguration from './eligibilityClientConfiguration';\nimport EligibilityClientEndpoint from './eligibilityClientEndpoint';\nimport EligibilityStatus from './eligibilityStatus';\nimport EligibilityStatusResponse from './eligibilityStatusResponse';\nimport Partner from './partner';\n\n/**\n *\n * @typedef SDK.Services.Eligibility\n * @type {Object}\n *\n * @property {EligibilityClient} EligibilityClient\n * @property {EligibilityClientConfiguration} EligibilityClientConfiguration\n * @property {EligibilityClientEndpoint} EligibilityClientEndpoint\n * @property {EligibilityStatus} EligibilityStatus\n * @property {EligibilityStatusResponse} EligibilityStatusResponse\n * @property {Partner} Partner\n *\n */\n\n/**\n *\n * @type {SDK.Services.Eligibility}\n *\n */\nexport default {\n\n EligibilityClient,\n EligibilityClientConfiguration,\n EligibilityClientEndpoint,\n EligibilityStatus,\n EligibilityStatusResponse,\n Partner\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/eligibility/entry.js","/**\n *\n * @module eligibilityClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/eligibility.md\n * @see https://github.bamtech.co/services-commons/public-api/blob/master/swagger/services/eligibility.yaml\n *\n */\n\nimport Check from 'check-types';\n\nimport Logging from './../../logging/entry';\nimport Exception from './../exception/entry';\nimport Token from './../token/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nimport EligibilityClientConfiguration from './eligibilityClientConfiguration';\nimport EligibilityClientEndpoint from './eligibilityClientEndpoint';\nimport EligibilityStatusResponse from './eligibilityStatusResponse';\nimport Partner from './partner';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst EligibilityClientDustUrnRefernce = DustUrnReference.services.eligibility.eligibilityClient;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class EligibilityClient\n * @since 4.2.0\n * @desc Provides a data client that can be used to access eligibility services.\n *\n */\nexport default class EligibilityClient {\n\n /**\n *\n * @param {SDK.Services.Eligibility.EligibilityClientConfiguration} eligibilityClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(eligibilityClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(eligibilityClientConfiguration, logger, httpClient)`,\n get eligibilityClientConfiguration() {\n return `${this.ctor} needs SDK.Services.Eligibility.EligibilityClientConfiguration instance`;\n },\n get logger() {\n return `${this.ctor} needs SDK.Logger instance`;\n }\n };\n\n instanceStrict(\n eligibilityClientConfiguration,\n EligibilityClientConfiguration,\n errorMessage.eligibilityClientConfiguration,\n InvalidArgumentException\n );\n\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.Services.Eligibility.EligibilityClientConfiguration}\n *\n */\n this.config = eligibilityClientConfiguration;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {HttpClient}\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(EligibilityClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @param {String} accessToken\n * @desc Retrieves eligibility information contextually sensitive to the environment and requester.\n * @returns {Promise}\n *\n */\n getEligibilityStatus(accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getEligibilityStatus(accessToken)`,\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n EligibilityClientEndpoint.getEligibilityStatus\n );\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: EligibilityClient.name,\n urn: EligibilityClientDustUrnRefernce.getEligibilityStatus,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'getEligibilityStatus');\n\n }).then((response) => {\n\n const { data } = response;\n\n const partners = {};\n\n Object.keys(data).forEach((key) => {\n\n const hasEligibility = Check.assigned(data[key].eligibility);\n const eligibilityData = hasEligibility ? data[key].eligibility : '';\n\n partners[key] = new Partner({\n email: data[key].email,\n partner: key,\n eligibility: eligibilityData.toLowerCase()\n });\n\n });\n\n const eligibilityStatusResponse = new EligibilityStatusResponse(partners);\n\n return Promise.resolve(eligibilityStatusResponse);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {SDK.Services.Eligibility.EligibilityClientEndpoint} rel\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, body) {\n\n const endpoint = this.config.endpoints[rel];\n const { href, headers } = endpoint;\n const requestBody = body ? JSON.stringify(body) : '';\n\n const requestHeaders = {\n ...headers,\n Authorization: headers.Authorization.replace('{accessToken}', accessToken.token)\n };\n\n return {\n url: href,\n body: requestBody,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/eligibility/eligibilityClient.js","/**\n *\n * @module entry\n * @desc {SDK.Services.ExternalActivation} entry point.\n *\n */\n\nimport ActivationToken from './activationToken';\nimport ExternalActivationClient from './externalActivationClient';\nimport ExternalActivationClientConfiguration from './externalActivationClientConfiguration';\nimport ExternalActivationClientEndpoint from './externalActivationClientEndpoint';\nimport ExternalActivationResult from './externalActivationResult';\nimport TemporaryDefaultAccessActivationStatus from './temporaryDefaultAccessActivationStatus';\n\n/**\n *\n * @typedef SDK.Services.ExternalActivation\n * @type {Object}\n *\n * @property {ActivationToken} ActivationToken\n * @property {ExternalActivationClient} ExternalActivationClient\n * @property {ExternalActivationClientConfiguration} ExternalActivationClientConfiguration\n * @property {ExternalActivationClientEndpoint} ExternalActivationClientEndpoint\n * @property {ExternalActivationResult} ExternalActivationResult\n * @property {TemporaryDefaultAccessActivationStatus} TemporaryDefaultAccessActivationStatus\n *\n */\n\n/**\n *\n * @type {SDK.Services.Content}\n *\n */\nexport default {\n\n ActivationToken,\n ExternalActivationClient,\n ExternalActivationClientConfiguration,\n ExternalActivationClientEndpoint,\n ExternalActivationResult,\n TemporaryDefaultAccessActivationStatus\n\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/externalActivation/entry.js","/**\n *\n * @module externalActivationClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/external-activation.md\n *\n */\n\nimport Check from 'check-types';\nimport Token from './../token/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Exception from './../exception/entry';\nimport Logging from './../../logging/entry';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nimport ActivationToken from './activationToken';\nimport TemporaryDefaultAccessActivationStatus from './temporaryDefaultAccessActivationStatus';\nimport ExternalActivationResult from './externalActivationResult';\nimport ExternalActivationClientEndpoint from './externalActivationClientEndpoint';\nimport ExternalActivationClientConfiguration from './externalActivationClientConfiguration';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst ExternalActivationClientDustUrnReference = DustUrnReference.services.externalActivation.externalActivationClient;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class ExternalActivationClient\n * @implements {IExternalActivationClient}\n *\n */\nexport default class ExternalActivationClient {\n\n /**\n *\n * @param {ExternalActivationClientConfiguration} externalActivationClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(externalActivationClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(externalActivationClientConfiguration, logger, httpClient)`,\n get externalActivationClientConfiguration() {\n return `${this.ctor} needs ExternalActivationClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n externalActivationClientConfiguration,\n ExternalActivationClientConfiguration,\n errorMessage.externalActivationClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {ExternalActivationClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = externalActivationClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {String}\n * @desc Determines if you should refresh the access token.\n *\n */\n this.refreshAccessTokenHeader = 'X-BAMTech-Refresh-Access-Token';\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {String}\n * @desc An indicator of whether or not temporary access has been granted in the meantime.\n *\n */\n this.temporaryAccessGrantedHeader = 'X-BAMTech-Temporary-Access-Granted';\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(ExternalActivationClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {String} activationTokenString\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @note hits the bundles/incoming endpoint.\n * @note the `ExternalActivationResult` is returned in both success & error cases\n * @returns {Promise}\n *\n */\n activateToken(activationTokenString, accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.activateToken(activationTokenString, accessToken)`,\n get activationTokenString() {\n return `${this.method} activationTokenString should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(activationTokenString, errorMessage.activationTokenString, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n ExternalActivationClientEndpoint.activateToken,\n {\n linkToken: activationTokenString\n }\n );\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: ExternalActivationClient.name,\n urn: ExternalActivationClientDustUrnReference.activateToken,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n const { refreshAccessTokenHeader, temporaryAccessGrantedHeader } = this;\n const { headers, status, data } = response;\n const { errors } = data;\n\n const refreshAccessToken = !!headers.get(refreshAccessTokenHeader);\n const temporaryAccessGranted = !!headers.get(temporaryAccessGrantedHeader);\n\n let resultStatus;\n\n const externalActivationResult = new ExternalActivationResult({\n refreshAccessToken,\n temporaryAccessGranted,\n resultStatus,\n errors\n });\n\n return Util.checkResponseCode(response, dustLogUtility).then(() => {\n\n switch (status) {\n case 200:\n resultStatus = TemporaryDefaultAccessActivationStatus.activationSucceeded;\n break;\n case 202:\n if (temporaryAccessGranted) {\n resultStatus = TemporaryDefaultAccessActivationStatus.activationRetryingWithTda;\n } else {\n resultStatus = TemporaryDefaultAccessActivationStatus.activationRetryingWithoutTda;\n }\n break;\n }\n\n externalActivationResult.resultStatus = resultStatus;\n\n return Promise.resolve(externalActivationResult);\n\n }).catch((exception) => {\n\n switch (exception.status) {\n case 500:\n case 501:\n case 502:\n case 503:\n case 504:\n if (temporaryAccessGranted) {\n resultStatus = TemporaryDefaultAccessActivationStatus.activationFailedWithTda;\n } else {\n resultStatus = TemporaryDefaultAccessActivationStatus.activationFailedWithoutTda;\n }\n break;\n default:\n resultStatus = exception;\n }\n\n externalActivationResult.resultStatus = resultStatus;\n\n return Promise.resolve(externalActivationResult);\n\n });\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @note hits the bundles/outgoing endpoint.\n * @returns {Promise}\n *\n */\n getActivationToken(accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getActivationToken(accessToken)`,\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n ExternalActivationClientEndpoint.getActivationToken\n );\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: ExternalActivationClient.name,\n urn: ExternalActivationClientDustUrnReference.getActivationToken,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data = {} } = response;\n const { linkToken } = data;\n\n const activationToken = new ActivationToken(linkToken);\n\n return Promise.resolve(activationToken);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {ExternalActivationClientEndpoint} rel\n * @param {Object} data\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, data) {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { href, headers } = endpoint;\n const requestHeaders = Object.assign({}, headers);\n const body = JSON.stringify(data);\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi, accessToken.token);\n\n return {\n url: href,\n body,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/externalActivation/externalActivationClient.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Media} entry point.\n *\n */\n\nimport AdEngine from './adEngine/entry';\nimport AudioRendition from './audioRendition';\nimport BifThumbnailSet from './bifThumbnailSet';\nimport DrmType from './drmType';\nimport MediaClientConfiguration from './mediaClientConfiguration';\nimport MediaClient from './mediaClient';\nimport MediaClientEndpoint from './mediaClientEndpoint';\nimport MediaPayload from './mediaPayload';\nimport MediaPayloadStream from './mediaPayloadStream';\nimport MediaPlayhead from './mediaPlayhead';\nimport MediaPlayheadStatus from './mediaPlayheadStatus';\nimport PlaybackAttributes from './playbackAttributes';\nimport MediaThumbnailLink from './mediaThumbnailLink';\nimport MediaThumbnailLinks from './mediaThumbnailLinks';\nimport Presentation from './presentation';\nimport PlaybackRenditions from './playbackRenditions';\nimport PlaybackVariant from './playbackVariant';\nimport SpriteThumbnailSet from './spriteThumbnailSet';\nimport StreamSampleConfiguration from './streamSampleConfiguration';\nimport SubtitleRendition from './subtitleRendition';\nimport ThumbnailPresentationType from './thumbnailPresentationType';\nimport ThumbnailSet from './thumbnailSet';\n\n/**\n *\n * @typedef SDK.Services.Media\n * @type {Object}\n *\n * @property {AdEngine} AdEngine\n * @property {AudioRendition} AudioRendition\n * @property {BifThumbnailSet} BifThumbnailSet\n * @property {DrmType} DrmType\n * @property {MediaClientConfiguration} MediaClientConfiguration\n * @property {MediaClient} MediaClient\n * @property {MediaClientEndpoint} MediaClientEndpoint\n * @property {MediaPayload} MediaPayload\n * @property {MediaPayloadStream} mediaPayloadStream\n * @property {MediaPlayhead} MediaPlayhead\n * @property {MediaPlayheadStatus} MediaPlayheadStatus\n * @property {PlaybackAttributes} PlaybackAttributes\n * @property {MediaThumbnailLink} MediaThumbnailLink\n * @property {MediaThumbnailLinks} MediaThumbnailLinks\n * @property {Presentation} Presentation\n * @property {PlaybackRenditions} PlaybackRenditions\n * @property {PlaybackVariant} PlaybackVariant\n * @property {StreamSampleConfiguration} StreamSampleConfiguration\n * @property {SpriteThumbnailSet} SpriteThumbnailSet\n * @property {SubtitleRendition} SubtitleRendition\n * @property {ThumbnailPresentationType} ThumbnailPresentationType\n * @property {ThumbnailSet} ThumbnailSet\n *\n */\n\n/**\n *\n * @type {SDK.Services.Media}\n *\n */\nexport default {\n\n AdEngine,\n AudioRendition,\n BifThumbnailSet,\n DrmType,\n MediaClientConfiguration,\n MediaClient,\n MediaClientEndpoint,\n MediaPayload,\n MediaPayloadStream,\n MediaPlayhead,\n MediaPlayheadStatus,\n PlaybackAttributes,\n MediaThumbnailLink,\n MediaThumbnailLinks,\n Presentation,\n PlaybackRenditions,\n PlaybackVariant,\n StreamSampleConfiguration,\n SpriteThumbnailSet,\n SubtitleRendition,\n ThumbnailPresentationType,\n ThumbnailSet\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/entry.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Media.AdEngine} entry point.\n *\n */\n\nimport AdEngineClient from './adEngineClient';\nimport AdEngineClientConfiguration from './adEngineClientConfiguration';\nimport AdEngineClientEndpoint from './adEngineClientEndpoint';\n\n/**\n *\n * @typedef SDK.Services.Media.AdEngine\n * @type {Object}\n *\n * @property {AdEngineClient} AdEngineClient\n * @property {AdEngineClientConfiguration} AdEngineClientConfiguration\n * @property {AdEngineClientEndpoint} AdEngineClientEndpoint\n *\n */\n\n/**\n *\n * @type {SDK.Services.Media.AdEngine}\n *\n */\nexport default {\n\n AdEngineClient,\n AdEngineClientConfiguration,\n AdEngineClientEndpoint\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/adEngine/entry.js","/**\n *\n * @module mediaClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/playback-session.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/playhead.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md\n * @see https://github.bamtech.co/skynet/media-service/blob/master/docs/api/README.md\n * @see https://github.bamtech.co/skynet/playback-orchestration-service/blob/master/docs/api/WEB.md\n * @see https://github.bamtech.co/services-commons/public-api/blob/master/swagger/services/thumbnail.md\n * @see https://github.bamtech.co/skynet/playback-orchestration-service/blob/master/public/swagger-2.0/swagger.json\n *\n */\n\n/* eslint-disable quote-props */\n\nimport Check from 'check-types';\n\nimport Logging from './../../logging/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Util from './../util/entry';\nimport Token from './../token/entry';\nimport Exception from './../exception/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nimport MediaPayload from './mediaPayload';\nimport MediaPayloadStream from './mediaPayloadStream';\nimport MediaPlayhead from './mediaPlayhead';\nimport MediaPlayheadStatus from './mediaPlayheadStatus';\nimport MediaClientEndpoint from './mediaClientEndpoint';\nimport MediaClientConfiguration from './mediaClientConfiguration';\nimport PlaybackAttributes from './playbackAttributes';\nimport MediaThumbnailLink from './mediaThumbnailLink';\nimport MediaThumbnailLinks from './mediaThumbnailLinks';\n\nimport SpriteThumbnailSet from './spriteThumbnailSet';\nimport BifThumbnailSet from './bifThumbnailSet';\nimport Presentation from './presentation';\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst MediaClientDustUrnReference = DustUrnReference.services.media.mediaClient;\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\nconst ExceptionReference = Exception.ExceptionReference;\n\nconst {\n nonEmptyString,\n instanceStrict,\n nonEmptyObject,\n number\n} = Check.assert;\n\n/**\n *\n * @class SDK.Services.Media.MediaClient\n * @implements {IMediaClient}\n * @desc Provides a data client that can be used to access media services.\n *\n */\nexport default class MediaClient {\n\n /**\n *\n * @param {SDK.Services.Media.MediaClientConfiguration} mediaClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {SDK.Services.Exception.InvalidArgumentException}\n *\n */\n constructor(mediaClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(mediaClientConfiguration, logger, httpClient)`,\n get mediaClientConfiguration() {\n return `${this.ctor} needs SDK.Services.Media.MediaClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n mediaClientConfiguration,\n MediaClientConfiguration,\n errorMessage.mediaClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {SDK.Services.Media.MediaClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = mediaClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(MediaClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {String} playbackUrl - The absolute URL of the playlist service request.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @param {String} playbackScenario - The playback scenario used to construct the service request.\n * @desc Retrieves the MediaPayload from the media location using the supplied playback scenario.\n * @note we remap several items from the playlist service before constructing `SDK.Services.Media.MediaPayload`\n * @returns {Promise}\n *\n */\n getMediaPayload(playbackUrl, accessToken, playbackScenario) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getMediaPayload(playbackUrl, accessToken, playbackScenario)`,\n get playbackUrl() {\n return `${this.method} playbackUrl should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n },\n get playbackScenario() {\n return `${this.method} playbackScenario should be a String with length`;\n }\n };\n\n nonEmptyString(playbackUrl, errorMessage.playbackUrl, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n nonEmptyString(playbackScenario, errorMessage.playbackScenario, InvalidArgumentException);\n\n const { dustEnabled, httpClient, logger, getMediaPlayhead } = this;\n\n const payload = this.getPayload(\n accessToken,\n MediaClientEndpoint.mediaPayload,\n playbackUrl,\n playbackScenario\n );\n\n logger.info(MediaClient.name, `Sending get media payload request: ${payload.url}`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaClient.name,\n urn: MediaClientDustUrnReference.getMediaPayload,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n const { stream, tracking, playhead, thumbnails } = data || {};\n const { complete, slide, attributes, variants = [], renditions = {} } = stream;\n\n const playbackAttributes = attributes ? new PlaybackAttributes(attributes) : undefined;\n const mediaPlayhead = getMediaPlayhead(playhead);\n\n const mediaPayloadStream = new MediaPayloadStream({\n complete,\n slide,\n variants,\n renditions,\n attributes: playbackAttributes\n });\n\n let mediaThumbnailLinks;\n\n if (Check.assigned(thumbnails)) {\n mediaThumbnailLinks = new MediaThumbnailLinks(thumbnails);\n }\n\n logger.info(MediaClient.name, `Received get media payload response: ${complete}`);\n\n const options = {\n stream: mediaPayloadStream,\n tracking,\n playhead: mediaPlayhead,\n thumbnails: mediaThumbnailLinks\n };\n\n return Promise.resolve(new MediaPayload(options));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Creates a cookie based on the accessToken\n * @returns {Promise}\n *\n */\n createAuthCookie(accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.createAuthCookie(accessToken)`,\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, httpClient, logger } = this;\n\n const payload = this.getPayload(\n accessToken,\n MediaClientEndpoint.playbackCookie\n );\n\n logger.info(MediaClient.name, `Sending create auth cookie request: ${payload.url}`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaClient.name,\n urn: MediaClientDustUrnReference.createAuthCookie,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {Object} options\n * @param {SDK.Services.Media.ThumbnailLink} options.thumbnailLink\n * @param {?String} [options.resolution]\n * @param {SDK.Services.Token.AccessToken} options.accessToken\n * @note overwrites each `presentation` field returned from the service after converting that `Object` into\n * an instance of `SDK.Services.Media.Presentation`\n * @returns {Promise>}\n *\n */\n getSpriteSheetThumbnails(options) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getSpriteSheetThumbnail(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get thumbnailLink() {\n return `${this.method} options.thumbnailLink needs SDK.Services.Media.ThumbnailLink instance`;\n },\n get resolution() {\n return `${this.method} options.resolution should be a String with length`;\n },\n get accessToken() {\n return `${this.method} options.accessToken needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { thumbnailLink, resolution, accessToken } = options;\n\n instanceStrict(thumbnailLink, MediaThumbnailLink, errorMessage.thumbnailLink, InvalidArgumentException);\n\n if (Check.assigned(resolution)) {\n nonEmptyString(resolution, errorMessage.resolution, InvalidArgumentException);\n }\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { method } = thumbnailLink;\n const { dustEnabled, httpClient, logger } = this;\n\n const payload = this.getPayload(\n accessToken,\n MediaClientEndpoint.spriteSheetThumbnails,\n thumbnailLink,\n resolution\n );\n\n logger.info(MediaClient.name, `request spritesheet thumbnails ${thumbnailLink.url}`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaClient.name,\n urn: MediaClientDustUrnReference.getSpriteSheetThumbnails,\n payload,\n method\n });\n\n return httpClient[thumbnailLink.method.toLowerCase()](payload).catch((ex) => {\n\n throw new ServiceException('', [], ex);\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'getSpriteSheetThumbnails');\n\n }).then((response) => {\n\n const { data } = response;\n const { spritesheets } = data;\n\n if (Check.not.nonEmptyArray(spritesheets)) {\n\n const thumbnailsNotAvailableException = new ServiceException({\n exceptionData: ExceptionReference.media.thumbnailsNotAvailable\n });\n\n return Promise.reject(thumbnailsNotAvailableException);\n\n }\n\n const spriteThumbnailSets = spritesheets.map((spritesheet) => {\n\n const presentations = spritesheet.presentations.map(\n (presentation) => new Presentation(presentation)\n );\n\n return new SpriteThumbnailSet(Object.assign({}, spritesheet, { presentations }));\n\n });\n\n return Promise.resolve(spriteThumbnailSets);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {SDK.Services.Media.Presentation} presentation\n * @param {Number} index\n * @note fetches the Byte[] version of the .jpeg file - unlikely this will be used on JS platforms as it generally\n * means saving the byte array to disk and loading into memory later on\n * @returns {Promise>}\n *\n */\n getSpriteSheetThumbnail(presentation, index) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getSpriteSheetThumbnail(presentation, index)`,\n get presentation() {\n return `${this.method} presentation needs SDK.Services.Media.Presentation instance`;\n },\n get index() {\n return `${this.method} index should be a Number`;\n }\n };\n\n instanceStrict(presentation, Presentation, errorMessage.presentation, InvalidArgumentException);\n number(index, errorMessage.index, InvalidArgumentException);\n\n const { dustEnabled, httpClient, logger } = this;\n\n const payload = this.getPayload(\n null, // we do not use an accessToken for this request\n MediaClientEndpoint.spriteSheetThumbnail,\n presentation.paths[index]\n );\n\n logger.info(MediaClient.name, `request spritesheet thumbnail ${payload.url}`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaClient.name,\n urn: MediaClientDustUrnReference.getSpriteSheetThumbnail,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((ex) => {\n\n throw new ServiceException('', [], ex);\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'getSpriteSheetThumbnail');\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(data);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {Object} options\n * @param {SDK.Services.Media.MediaThumbnailLink} options.thumbnailLink\n * @param {?String} [options.resolution]\n * @param {SDK.Services.Token.AccessToken} options.accessToken\n * @note overwrites each `presentation` field returned from the service after converting that `Object` into\n * an instance of `SDK.Services.Media.Presentation`\n * @returns {Promise>}\n *\n */\n getBifThumbnails(options) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getBifThumbnails(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get thumbnailLink() {\n return `${this.method} options.thumbnailLink needs SDK.Services.Media.ThumbnailLink instance`;\n },\n get resolution() {\n return `${this.method} options.resolution should be a String with length`;\n },\n get accessToken() {\n return `${this.method} options.accessToken needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { thumbnailLink, resolution, accessToken } = options;\n\n instanceStrict(thumbnailLink, MediaThumbnailLink, errorMessage.mediaThumbnailLink, InvalidArgumentException);\n\n if (Check.assigned(resolution)) {\n nonEmptyString(resolution, errorMessage.resolution, InvalidArgumentException);\n }\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { method } = thumbnailLink;\n const { dustEnabled, httpClient, logger } = this;\n\n const payload = this.getPayload(\n accessToken,\n MediaClientEndpoint.bifThumbnails,\n thumbnailLink,\n resolution\n );\n\n logger.info(MediaClient.name, `request bif thumbnails ${thumbnailLink.url}`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaClient.name,\n urn: MediaClientDustUrnReference.getBifThumbnails,\n payload,\n method\n });\n\n return httpClient[thumbnailLink.method.toLowerCase()](payload).catch((ex) => {\n\n throw new ServiceException('', [], ex);\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'getBifThumbnails');\n\n }).then((response) => {\n\n const { data } = response;\n const { bifs } = data;\n\n if (Check.not.nonEmptyArray(bifs)) {\n\n const thumbnailsNotAvailableException = new ServiceException({\n exceptionData: ExceptionReference.media.thumbnailsNotAvailable\n });\n\n return Promise.reject(thumbnailsNotAvailableException);\n\n }\n\n const bifThumbnailSets = bifs.map((bif) => {\n\n const presentations = bif.presentations.map(\n (presentation) => new Presentation(presentation)\n );\n\n return new BifThumbnailSet(Object.assign({}, bif, { presentations }));\n\n });\n\n return Promise.resolve(bifThumbnailSets);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @note the JS SDK does not support this method\n * @returns {Promise}\n *\n */\n downloadBifThumbnail() {\n\n const errorMessage = {\n method: `${this.constructor.name}.downloadBifThumbnail()`\n };\n\n return new Promise((resolve) => {\n return resolve(new Error(`${errorMessage.method} - not-implemented`));\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {Object} [data={}] - playhead data object\n * @desc Constructs a SDK.Services.Media.MediaPlayhead instance based on the provided playhead data, returns null\n * if the data is not available. Please note, this method checks against the status property because\n * its guaranteed to exist if the playhead exists.\n * @note `last_modified` and `content_id` are remapped to align with JS\n * and SDK conventions, services returns the variable names with underscores\n * @returns {SDK.Services.Media.MediaPlayhead|Null}\n * @see https://github.bamtech.co/skynet/playback-orchestration-service/blob/master/docs/api/WEB.md\n *\n */\n getMediaPlayhead(data = {}) {\n\n const { position, last_modified: lastUpdated, status, content_id: contentId } = data; // eslint-disable-line max-len camelcase\n\n const remap = {\n PlayheadFound: MediaPlayheadStatus.Success\n };\n\n const playheadStatus = MediaPlayheadStatus[status] || remap[status] || MediaPlayheadStatus.Unavailable;\n\n const options = {\n position,\n lastUpdated,\n status: playheadStatus,\n contentId\n };\n\n return new MediaPlayhead(options);\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {SDK.Services.Media.MediaClientEndpoint} rel - endpoint type\n * @param {String} href - endpoint url template\n * @param {String} param - replaces template value in href\n * @note some methods pass in `SDK.Services.Media.MediaThumbnailLink` as the `href` argument - this will be parsed\n * to construct the correct url and query string used when fetching thumbnails\n * @note `spriteSheetThumbnail` does not need an `Authorization` header\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, href, param) {\n\n const { endpoints } = this.config;\n\n const endpoint = endpoints[rel];\n\n let headers = endpoint.headers;\n let url = href;\n let credentials;\n let bodyType;\n\n if (rel === 'playbackCookie') {\n url = endpoint.href;\n credentials = 'include';\n }\n\n if (rel === 'mediaPayload') {\n url = url.replace(/\\{scenario\\}/, param);\n }\n if (rel === 'spriteSheetThumbnails' || rel === 'bifThumbnails') {\n\n const queryChar = url.href.includes('?') ? '&' : '?';\n const resolution = param ? `resolution=${param}` : null;\n const queryString = resolution ? `${queryChar}${resolution}` : '';\n\n url = `${url.href}${queryString}`;\n headers = Object.assign({}, href.headers, headers);\n\n }\n\n if (accessToken) {\n headers.Authorization = accessToken.token;\n }\n\n if (rel === 'spriteSheetThumbnail') {\n\n delete headers.Authorization;\n\n bodyType = 'arrayBuffer';\n\n }\n\n return {\n url,\n headers,\n bodyType,\n credentials\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/mediaClient.js","/**\n *\n * @module playbackRenditions\n *\n */\n\nimport Check from 'check-types';\n\nimport AudioRendition from './audioRendition';\nimport SubtitleRendition from './subtitleRendition';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n array\n} = Check.assert;\n\n/**\n *\n * @class SDK.Services.Media.PlaybackRenditions\n * @since 4.0.0\n *\n */\nexport default class PlaybackRenditions {\n\n /**\n *\n * @param {Array} audio\n * @param {Array} subtitles\n * @throws {SDK.Services.Exception.InvalidArgumentException}\n *\n */\n constructor(audio, subtitles) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(audio, subtitles)`,\n get audio() {\n return `${this.ctor} audio should be an Array of SDK.Services.Media.AudioRendition`;\n },\n get subtitles() {\n return `${this.ctor} subtitles should be an Array of SDK.Services.Media.SubtitleRendition`;\n }\n };\n\n array.of.instanceStrict(audio, AudioRendition, errorMessage.audio, InvalidArgumentException);\n array.of.instanceStrict(subtitles, SubtitleRendition, errorMessage.subtitles, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {Array}\n *\n */\n this.audio = audio;\n\n /**\n *\n * @access public\n * @type {Array}\n *\n */\n this.subtitles = subtitles;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/playbackRenditions.js","/**\n *\n * @module playbackVariant\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n nonEmptyObject,\n nonEmptyString,\n number\n} = Check.assert;\n\n/**\n *\n * @class SDK.Services.Media.PlaybackVariant\n * @since 4.0.0\n *\n */\nexport default class PlaybackVariant {\n\n /**\n *\n * @param {Object} options\n * @param {Number} options.bandwidth\n * @param {String} options.resolution\n * @param {Number} options.videoBytes\n * @param {Number} [options.maxAudioRenditionBytes]\n * @param {Number} [options.maxSubtitleRenditionBytes]\n * @param {Number} [options.audioChannels]\n * @param {String} [options.videoRange]\n * @param {String} [options.videoCodec]\n * @param {String} [options.audioType]\n * @param {String} [options.audioCodec]\n * @throws {SDK.Services.Exception.InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get bandwidth() {\n return `${this.ctor} options.bandwidth should be a Number`;\n },\n get resolution() {\n return `${this.ctor} options.resolution should be a String with length`;\n },\n get videoBytes() {\n return `${this.ctor} options.videoBytes should be a Number`;\n },\n get maxAudioRenditionBytes() {\n return `${this.ctor} options.maxAudioRenditionBytes should be a Number`;\n },\n get maxSubtitleRenditionBytes() {\n return `${this.ctor} options.maxSubtitleRenditionBytes should be a Number`;\n },\n get audioChannels() {\n return `${this.ctor} options.audioChannels should be a Number`;\n },\n get videoRange() {\n return `${this.ctor} options.videoRange should be a String with length`;\n },\n get videoCodec() {\n return `${this.ctor} options.videoCodec should be a String with length`;\n },\n get audioType() {\n return `${this.ctor} options.audioType should be a String with length`;\n },\n get audioCodec() {\n return `${this.ctor} options.audioCodec should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { bandwidth, resolution, videoBytes, maxAudioRenditionBytes, maxSubtitleRenditionBytes } = options;\n const { audioChannels, videoRange, videoCodec, audioType, audioCodec } = options;\n\n number(bandwidth, errorMessage.bandwidth, InvalidArgumentException);\n nonEmptyString(resolution, errorMessage.resolution, InvalidArgumentException);\n number(videoBytes, errorMessage.videoBytes, InvalidArgumentException);\n\n if (Check.assigned(maxAudioRenditionBytes)) {\n number(maxAudioRenditionBytes, errorMessage.maxAudioRenditionBytes, InvalidArgumentException);\n }\n\n if (Check.assigned(maxSubtitleRenditionBytes)) {\n number(maxSubtitleRenditionBytes, errorMessage.maxSubtitleRenditionBytes, InvalidArgumentException);\n }\n\n if (Check.assigned(audioChannels)) {\n number(audioChannels, errorMessage.audioChannels, InvalidArgumentException);\n }\n\n if (Check.assigned(videoRange)) {\n nonEmptyString(videoRange, errorMessage.videoRange, InvalidArgumentException);\n }\n\n if (Check.assigned(videoCodec)) {\n nonEmptyString(videoCodec, errorMessage.videoCodec, InvalidArgumentException);\n }\n\n if (Check.assigned(audioType)) {\n nonEmptyString(audioType, errorMessage.audioType, InvalidArgumentException);\n }\n\n if (Check.assigned(audioCodec)) {\n nonEmptyString(audioCodec, errorMessage.audioCodec, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.bandwidth = bandwidth;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.resolution = resolution;\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.videoBytes = videoBytes;\n\n /**\n *\n * @access public\n * @type {Number|undefined}\n *\n */\n this.maxAudioRenditionBytes = maxAudioRenditionBytes;\n\n /**\n *\n * @access public\n * @type {Number|undefined}\n *\n */\n this.maxSubtitleRenditionBytes = maxSubtitleRenditionBytes;\n\n /**\n *\n * @access public\n * @type {Number|undefined}\n *\n */\n this.audioChannels = audioChannels;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.videoRange = videoRange;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.videoCodec = videoCodec;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.audioType = audioType;\n\n /**\n *\n * @access public\n * @type {String|undefined}\n *\n */\n this.audioCodec = audioCodec;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/playbackVariant.js","/**\n *\n * @module streamSampleConfiguration\n *\n */\n\n/**\n *\n * @class StreamSampleConfiguration\n *\n */\nexport default class StreamSampleConfiguration {\n\n /**\n *\n * @param {Number} [streamSampleInterval=30]\n *\n */\n constructor(streamSampleInterval = 30) {\n\n /**\n *\n * @access public\n * @type {Number}\n *\n */\n this.streamSampleInterval = streamSampleInterval;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/streamSampleConfiguration.js","/**\n *\n * @module thumbnailPresentationType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef ThumbnailPresentationType\n * @type {Object}\n * @desc specifies the type of Thumbnail you are using\n * @example ThumbnailPresentationType.BUMPER // 'BUMPER'\n *\n * @property {String} BUMPER\n * @property {String} MAIN\n * @property {String} DUB_CARD\n *\n */\n\n/**\n *\n * @enum\n * @type {ThumbnailPresentationType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @type {String}\n *\n */\n BUMPER: null,\n /**\n *\n * @type {String}\n *\n */\n MAIN: null,\n /**\n *\n * @type {String}\n *\n */\n DUB_CARD: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/media/thumbnailPresentationType.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Identity} entry point.\n *\n */\n\nimport Adobe from './adobe/entry';\nimport Bam from './bam/entry';\n\n/**\n *\n * @typedef SDK.Services.Identity\n * @type {Object}\n *\n * @property {Adobe} Adobe\n * @property {Bam} Bam\n *\n */\n\n/**\n *\n * @type {SDK.Services.Identity}\n *\n */\nexport default {\n\n Adobe,\n Bam\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/entry.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Identity.Adobe} entry point.\n *\n */\n\nimport AdobeIdentityClient from './adobeIdentityClient';\nimport AdobeIdentityClientConfiguration from './adobeIdentityClientConfiguration';\nimport AdobeIdentityClientEndpoint from './adobeIdentityClientEndpoint';\nimport AdobeRegistration from './adobeRegistration';\nimport GetIdentityTokenResult from './getIdentityTokenResult';\n\n/**\n *\n * @typedef SDK.Services.Identity.Adobe\n * @type {Object}\n *\n * @property {AdobeIdentityClient} AdobeIdentityClient\n * @property {AdobeIdentityClientConfiguration} AdobeIdentityClientConfiguration\n * @property {AdobeIdentityClientEndpoint} AdobeIdentityClientEndpoint\n * @property {AdobeRegistration} AdobeRegistration\n * @property {GetIdentityTokenResult} GetIdentityTokenResult\n *\n */\n\n/**\n *\n * @type {SDK.Services.Identity.Adobe}\n *\n */\nexport default {\n\n AdobeIdentityClient,\n AdobeIdentityClientConfiguration,\n AdobeIdentityClientEndpoint,\n AdobeRegistration,\n GetIdentityTokenResult\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/adobe/entry.js","/**\n *\n * @module adobeIdentityClient\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../../logging/entry';\nimport Token from './../../token/entry';\nimport Exception from './../../exception/entry';\nimport HttpClient from './../../platforms/httpClient';\n\nimport AdobeIdentityClientConfiguration from './adobeIdentityClientConfiguration';\nimport AdobeRegistration from './adobeRegistration';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst AccessToken = Token.AccessToken;\nconst ErrorReason = Exception.ErrorReason;\n\nconst {\n nonEmptyString,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class AdobeIdentityClient\n * @implements {IAdobeIdentityClient}\n * @desc Provides a data client that can be used to access Adobe identity services.\n *\n */\nexport default class AdobeIdentityClient {\n\n /**\n *\n * @param {AdobeIdentityClientConfiguration} adobeIdentityClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n *\n */\n constructor(adobeIdentityClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'AdobeIdentityClient(adobeIdentityClientConfiguration, logger, httpClient)',\n get adobeIdentityClientConfiguration() {\n return `${this.ctor} needs AdobeIdentityClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n adobeIdentityClientConfiguration,\n AdobeIdentityClientConfiguration,\n errorMessage.adobeIdentityClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {AdobeIdentityClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = adobeIdentityClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n this.logger.log(AdobeIdentityClient.name, 'Created');\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Creates a registration code to use for adding an Adobe MVPD identity (only valid for a short period).\n * @returns {Promise} The response when the client has created a registration code.\n *\n */\n getAdobeRegistration(accessToken) {\n\n const errorMessage = {\n method: 'AdobeIdentityClient.getAdobeRegistration(accessToken)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n return new Promise((resolve, reject) => {\n\n const reasons = [new ErrorReason('', `${errorMessage.method} - not-implemented`)];\n\n return reject(new ServiceException({ reasons }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {AdobeRegistration} adobeRegistration\n * @param {String} mvpdId - The service provider the user is subscribed to.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context\n * @desc Creates an identity with Adobe for the given MVPD and registration code and return an id token.\n * @returns {Promise} The response when the client attempts to create\n * an identity token from the adobe registration code\n *\n */\n getIdentityToken(adobeRegistration, mvpdId, accessToken) {\n\n const errorMessage = {\n method: 'AdobeIdentityClient.getIdentityToken(adobeRegistration, mvpdId, accessToken)',\n get adobeRegistration() {\n return `${this.method} needs AdobeRegistration instance`;\n },\n get mvpdId() {\n return `${this.method} mvpdId should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(adobeRegistration, AdobeRegistration, errorMessage.adobeRegistration, InvalidArgumentException);\n nonEmptyString(mvpdId, errorMessage.mvpdId, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n return new Promise((resolve, reject) => {\n\n const reasons = [new ErrorReason('', `${errorMessage.method} - not-implemented`)];\n\n return reject(new ServiceException({ reasons }));\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/adobe/adobeIdentityClient.js","/**\n *\n * @module adobeIdentityClientEndpoint\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef AdobeIdentityClientEndpoint\n * @type {Object}\n *\n * @property {String} getAdobeRegistration\n * @property {String} getIdentityToken\n *\n */\n\n/**\n *\n * @enum\n * @type {AdobeIdentityClientEndpoint}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getAdobeRegistration: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n getIdentityToken: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/adobe/adobeIdentityClientEndpoint.js","/**\n *\n * @module getIdentityTokenResult\n *\n */\n\nimport Check from 'check-types';\nimport Token from './../../token/entry';\n\nimport InvalidArgumentException from './../../exception/invalidArgumentException';\n\nconst IdentityToken = Token.IdentityToken;\nconst TemporaryGrant = Token.TemporaryGrant;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class GetIdentityTokenResult\n *\n */\nexport default class GetIdentityTokenResult {\n\n /**\n *\n * @param {SDK.Services.Token.IdentityToken} identityToken\n * @param {SDK.Services.Token.TemporaryGrant} temporaryGrant\n *\n */\n constructor(identityToken, temporaryGrant) {\n\n const errorMessage = {\n ctor: 'GetIdentityTokenResult(identityToken, temporaryGrant)',\n get identityToken() {\n return `${this.ctor} needs SDK.Services.Token.IdentityToken instance`;\n },\n get temporaryGrant() {\n return `${this.ctor} needs SDK.Services.Token.TemporaryGrant instance`;\n }\n };\n\n instanceStrict(\n identityToken,\n IdentityToken,\n errorMessage.identityToken,\n InvalidArgumentException\n );\n\n instanceStrict(\n temporaryGrant,\n TemporaryGrant,\n errorMessage.temporaryGrant,\n InvalidArgumentException\n );\n\n /**\n *\n * @access public\n * @type {SDK.Services.Token.IdentityToken}\n * @desc Gets an identity token.\n *\n */\n this.identityToken = identityToken;\n\n /**\n *\n * @access public\n * @type {SDK.Services.Token.TemporaryGrant}\n * @desc Gets a temporary grant indicating there was a recoverable issue.\n * This grant can be used for authorizing the temporary access to content but not\n * authenticating with the intended identity.\n *\n */\n this.temporaryGrant = temporaryGrant;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/adobe/getIdentityTokenResult.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Identity.Bam} entry point.\n *\n */\n\nimport AuthenticationFlow from './authenticationFlow';\nimport AuthenticationFlowResponse from './authenticationFlowResponse';\nimport BamIdentityClient from './bamIdentityClient';\nimport BamIdentityClientConfiguration from './bamIdentityClientConfiguration';\nimport BamIdentityClientEndpoint from './bamIdentityClientEndpoint';\nimport Identity from './identity';\nimport OneTimePasscodeRequestReason from './oneTimePasscodeRequestReason';\nimport RedeemedPasscodeToken from './redeemedPasscodeToken';\n\n/**\n *\n * @typedef SDK.Services.Identity.Bam\n * @type {Object}\n *\n * @property {AuthenticationFlow} AuthenticationFlow\n * @property {AuthenticationFlowResponse} AuthenticationFlowResponse\n * @property {BamIdentityClient} BamIdentityClient\n * @property {BamIdentityClientConfiguration} BamIdentityClientConfiguration\n * @property {BamIdentityClientEndpoint} BamIdentityClientEndpoint\n * @property {Identity} Identity\n * @property {OneTimePasscodeRequestReason} OneTimePasscodeRequestReason\n * @property {RedeemedPasscodeToken} RedeemedPasscodeToken\n *\n */\n\n/**\n *\n * @type {SDK.Services.Identity.Bam}\n *\n */\nexport default {\n\n AuthenticationFlow,\n AuthenticationFlowResponse,\n BamIdentityClient,\n BamIdentityClientConfiguration,\n BamIdentityClientEndpoint,\n Identity,\n OneTimePasscodeRequestReason,\n RedeemedPasscodeToken\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/bam/entry.js","/**\n *\n * @module bamIdentityClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/identity-bam.md\n * @see https://github.bamtech.co/services-commons/public-api/blob/master/swagger/services/bam-idp.md\n *\n */\n\n/* eslint-disable camelcase */\n\nimport Check from 'check-types';\nimport Logging from './../../../logging/entry';\nimport Exception from './../../exception/entry';\nimport HttpClient from './../../platforms/httpClient';\nimport Token from './../../token/entry';\nimport Util from './../../util/entry';\nimport DustLogUtility from './../../internal/dust/dustLogUtility';\nimport DustUrnReference from './../../internal/dust/dustUrnReference';\nimport Configuration from './../../configuration/entry';\n\nimport AuthenticationFlowResponse from './authenticationFlowResponse';\nimport BamIdentityClientConfiguration from './bamIdentityClientConfiguration';\nimport BamIdentityClientEndpoint from './bamIdentityClientEndpoint';\nimport RedeemedPasscodeToken from './redeemedPasscodeToken';\nimport OneTimePasscodeRequestReason from './oneTimePasscodeRequestReason';\nimport Identity from './identity';\n\nconst AccessToken = Token.AccessToken;\nconst IdentityToken = Token.IdentityToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst BamIdentityClientDustUrnReference = DustUrnReference.services.identity.bam.bamIdentityClient;\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst {\n nonEmptyString,\n object,\n instanceStrict,\n includes,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class BamIdentityClient\n * @implements {IBamIdentityClient}\n * @desc Provides a data client that can be used to access BAM identity services.\n *\n */\nexport default class BamIdentityClient {\n\n /**\n *\n * @param {SDK.Services.BamIdentityClient} bamIdentityClient\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n *\n */\n constructor(bamIdentityClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'BamIdentityClient(bamIdentityClientConfiguration, logger, httpClient)',\n get bamIdentityClientConfiguration() {\n return `${this.ctor} needs BamIdentityClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n bamIdentityClientConfiguration,\n BamIdentityClientConfiguration,\n errorMessage.bamIdentityClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {BamIdentityClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = bamIdentityClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(BamIdentityClient.name, 'Created');\n\n }\n\n /**\n *\n * @access public\n * @param {String} email - The email associated with the identity\n * @param {String} password - The password associated with the identity.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Exchange proof of identity (credentials) for a BAM id token.\n * @returns {Promise} The identity token if successfully created.\n *\n */\n authenticate(email, password, accessToken) {\n\n const errorMessage = {\n method: 'BamIdentityClient.authenticate(email, password, accessToken)',\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get password() {\n return `${this.method} password should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(password, errorMessage.password, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken.token,\n BamIdentityClientEndpoint.identityLogin,\n {\n email,\n password\n }\n );\n\n logger.info(BamIdentityClient.name, `Attempting to authenticate, email associated with identity: \"${email}\"`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityClient.name,\n urn: BamIdentityClientDustUrnReference.authenticate,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n const { id_token, expires_in, securityAction } = data;\n\n const now = Date.now();\n const expiresIn = new Date(now + (expires_in * 1000)).getTime();\n const identityToken = new IdentityToken({ token: id_token, expiresIn, securityAction });\n\n return Promise.resolve(identityToken);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @param {String} options.email - The email for the new identity.\n * @param {String} options.password - The password for the new identity.\n * @param {SDK.Services.Token.AccessToken} options.accessToken - The access token to provide user context.\n * @param {Object} [options.attributes]\n * @note {Object} [options.metadata] - Contains additional information about the identity being created (ex: isTest)\n * @desc Register a new identity by providing registration details.\n * @returns {Promise} An awaitable task indicating settings were updated successfully.\n *\n */\n createIdentity(options) {\n\n const errorMessage = {\n method: 'BamIdentityClient.createIdentity(options)',\n get email() {\n return `${this.method} options.email should be a String with length`;\n },\n get password() {\n return `${this.method} options.password should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n },\n get attributes() {\n return `${this.method} options.attributes should be an Object`;\n },\n get metadata() {\n return `${this.method} options.metadata should be an Object`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { email, password, accessToken, attributes, metadata } = options;\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(password, errorMessage.password, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n if (Check.assigned(attributes)) {\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n }\n\n if (Check.assigned(metadata)) {\n object(metadata, errorMessage.metadata, InvalidArgumentException);\n }\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken.token,\n BamIdentityClientEndpoint.createIdentity,\n {\n email,\n password,\n attributes,\n metadata\n },\n );\n\n logger.info(BamIdentityClient.name, `Attempting to register new identity, email: \"${email}\"`);\n\n if (Check.nonEmptyObject(attributes)) {\n logger.info(BamIdentityClient.name, `Identity attributes to create - \"${JSON.stringify(attributes)}\".`);\n }\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityClient.name,\n urn: BamIdentityClientDustUrnReference.createIdentity,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} email - The new email for associated with the identity.\n * @param {String} password - The current password associated with the\n * identity used to verify the user's credentials.\n * @param {SDK.Services.Token.IdentityToken} identityToken - The identity token to provide user context.\n * @desc Changes the email of the credentials for a given BAM identity.\n * @returns {Promise}\n *\n */\n changeEmail(email, password, identityToken) {\n\n const errorMessage = {\n method: 'BamIdentityClient.changeEmail(email, password, identityToken)',\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get password() {\n return `${this.method} password should be a String with length`;\n },\n get identityToken() {\n return `${this.method} needs SDK.Services.Token.IdentityToken instance`;\n }\n };\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(password, errorMessage.password, InvalidArgumentException);\n instanceStrict(identityToken, IdentityToken, errorMessage.identityToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n identityToken.token,\n BamIdentityClientEndpoint.changeEmail,\n {\n email,\n password\n }\n );\n\n logger.info(BamIdentityClient.name, `Attempting to update email assocaited with identity, new email: \"${email}\"`);// eslint-disable-line max-len\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityClient.name,\n urn: BamIdentityClientDustUrnReference.changeEmail,\n payload,\n method: HttpMethod.PATCH\n });\n\n return httpClient.patch(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'changeEmail');\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} newPassword - The new password to associate with the identity.\n * @param {String} [oldPassword] - The current password associated with the\n * identity used to verify the user's credentials.\n * @param {SDK.Services.Token.IdentityToken} identityToken - The identity token to provide user context.\n * @desc Change the password for a given BAM identity.\n * @returns {Promise} An awaitable task indicating settings were updated successfully.\n *\n */\n changePassword(newPassword, oldPassword, identityToken) {\n\n const errorMessage = {\n method: 'BamIdentityClient.changePassword(newPassword, oldPassword, identityToken)',\n get newPassword() {\n return `${this.method} newPassword should be a String with length`;\n },\n get oldPassword() {\n return `${this.method} oldPassword should be a String with length`;\n },\n get identityToken() {\n return `${this.method} needs SDK.Services.Token.IdentityToken instance`;\n }\n };\n\n nonEmptyString(newPassword, errorMessage.newPassword, InvalidArgumentException);\n\n if (Check.assigned(oldPassword)) {\n nonEmptyString(oldPassword, errorMessage.oldPassword, InvalidArgumentException);\n }\n\n instanceStrict(identityToken, IdentityToken, errorMessage.identityToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n identityToken.token,\n BamIdentityClientEndpoint.changePassword,\n {\n newPassword,\n oldPassword\n }\n );\n\n logger.info(BamIdentityClient.name, 'Attempting to update password assocaited with identity');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityClient.name,\n urn: BamIdentityClientDustUrnReference.changePassword,\n payload,\n method: HttpMethod.PATCH\n });\n\n return httpClient.patch(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} email - The email address to send an email to\n * containing instructions to start the password reset.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context\n * @desc Requests a password reset.\n * @returns {Promise} An awaitable task indicating settings were updated successfully.\n *\n */\n requestPasswordReset(email, accessToken) {\n\n const errorMessage = {\n method: 'BamIdentityClient.requestPasswordReset(email, accessToken)',\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken.token,\n BamIdentityClientEndpoint.startPasswordReset,\n {\n email\n }\n );\n\n logger.info(BamIdentityClient.name, `Request password reset, sending instructions to email: \"${email}\"`);\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityClient.name,\n urn: BamIdentityClientDustUrnReference.requestPasswordReset,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} newPassword - The new password to associate with the identity.\n * @param {String} resetToken - Details needed to reset the password of an identity.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Reset the password for a given MLBAM identity.\n * @returns {Promise} An awaitable task indicating settings were updated successfully.\n *\n */\n resetPassword(newPassword, passwordResetToken, accessToken) {\n\n const errorMessage = {\n method: 'BamIdentityClient.resetPassword(newPassword, resetToken, accessToken)',\n get newPassword() {\n return `${this.method} newPassword should be a String with length`;\n },\n get passwordResetToken() {\n return `${this.method} passwordResetToken should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(newPassword, errorMessage.newPassword, InvalidArgumentException);\n nonEmptyString(passwordResetToken, errorMessage.passwordResetToken, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken.token,\n BamIdentityClientEndpoint.resetPassword,\n {\n newPassword,\n passwordResetToken\n }\n );\n\n logger.info(BamIdentityClient.name, 'Attempting to reset password for the given identity.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityClient.name,\n urn: BamIdentityClientDustUrnReference.resetPassword,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Token.IdentityToken} identityToken - The identity token to provide user context.\n * @desc Returns an Identity\n * @returns {Promise}\n *\n */\n getIdentity(identityToken) {\n\n const errorMessage = {\n method: 'BamIdentityClient.getIdentity(identityToken)',\n get identityToken() {\n return `${this.method} needs SDK.Services.Token.IdentityToken instance`;\n }\n };\n\n instanceStrict(identityToken, IdentityToken, errorMessage.identityToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n identityToken.token,\n BamIdentityClientEndpoint.getIdentity\n );\n\n logger.info(BamIdentityClient.name, 'Attempting to retrieve identity.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityClient.name,\n urn: BamIdentityClientDustUrnReference.getIdentity,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n const { attributes, email, id, partner } = data;\n\n return Promise.resolve(new Identity(email, id, partner, attributes));\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {Object} attributes - The identity attributes to update.\n * @param {SDK.Services.Token.IdentityToken} identityToken - The identity token to provide user context.\n * @desc Update the identity attributes of the identity identified by the identity token,\n * if field(s) are missing from the request body, the original value will be left intact.\n * @returns {Promise}\n *\n */\n updateAttributes(attributes, identityToken) {\n\n const errorMessage = {\n method: 'BamIdentityClient.updateAttributes(attributes, identityToken)',\n get attributes() {\n return `${this.method} attributes should be an Object`;\n },\n get identityToken() {\n return `${this.method} needs SDK.Services.Token.IdentityToken instance`;\n }\n };\n\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n instanceStrict(identityToken, IdentityToken, errorMessage.identityToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n identityToken.token,\n BamIdentityClientEndpoint.updateAttributes,\n attributes\n );\n\n logger.info(BamIdentityClient.name, 'Update identity attributes.');\n\n if (Check.nonEmptyObject(attributes)) {\n logger.info(BamIdentityClient.name, `Identity attributes to update - \"${JSON.stringify(attributes)}\".`);\n }\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityClient.name,\n urn: BamIdentityClientDustUrnReference.updateAttributes,\n payload,\n method: HttpMethod.PATCH\n });\n\n return httpClient.patch(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @param {String} email\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @desc checks if the email address that is provided is registered with the BamIdp service\n * @returns {SDK.Services.Identity.Bam.AuthenticationFlowResponse}\n *\n */\n check(email, accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.check(email, accessToken)`,\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken.token,\n BamIdentityClientEndpoint.check,\n {\n email\n }\n );\n\n logger.info(BamIdentityClient.name, 'Validating email against BamIdp service.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityClient.name,\n urn: BamIdentityClientDustUrnReference.check,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((ex) => {\n\n throw new ServiceException('', [], ex);\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility, 'check');\n\n }).then((response) => {\n\n const { data } = response;\n const { operations } = data;\n\n const authenticationFlowResponse = new AuthenticationFlowResponse(operations);\n\n return Promise.resolve(authenticationFlowResponse);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @param {String} email - The email to send the passcode to.\n * @param {SDK.Services.Identity.Bam.OneTimePasscodeRequestReason} reason - The intended use of the passcode.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context\n * @desc Request that a one-time passcode be sent to an email address.\n * @returns {Promise}\n *\n */\n requestOneTimePasscode(email, reason, accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.requestOneTimePasscode(email, reason, accessToken)`,\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get reason() {\n return `${this.method} reason should be a valid SDK.Services.Identity.Bam.OneTimePasscodeRequestReason`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n includes(OneTimePasscodeRequestReason, reason, errorMessage.reason, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken.token,\n BamIdentityClientEndpoint.otpRequest,\n {\n email,\n reason\n }\n );\n\n logger.info(BamIdentityClient.name, 'Request One Time Passcode');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityClient.name,\n urn: BamIdentityClientDustUrnReference.requestOneTimePasscode,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((ex) => {\n\n throw new ServiceException('', [], ex);\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @param {String} email - The email that received the passcode.\n * @param {String} passcode - The passcode sent to the email associated with the identity.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context\n * @desc Logs the user in with the BAM identity service.\n * @returns {Promise}\n *\n */\n redeemOneTimePasscode(email, passcode, accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.redeemOneTimePasscode(email, passcode, accessToken)`,\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get passcode() {\n return `${this.method} passcode should be a String with length`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(passcode, errorMessage.passcode, InvalidArgumentException);\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken.token,\n BamIdentityClientEndpoint.otpRedeem,\n {\n email,\n passcode\n }\n );\n\n logger.info(BamIdentityClient.name, 'Redeem One Time Passcode');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityClient.name,\n urn: BamIdentityClientDustUrnReference.redeemOneTimePasscode,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((ex) => {\n\n throw new ServiceException('', [], ex);\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n const { id_token, expires_in, securityAction, reason } = data;\n\n const now = Date.now();\n const expiresIn = new Date(now + (expires_in * 1000)).getTime();\n\n const redeemedPasscodeToken = new RedeemedPasscodeToken({\n token: id_token,\n expiresIn,\n securityAction,\n reason\n });\n\n return Promise.resolve(redeemedPasscodeToken);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {String} token - The AccessToken or IdentityToken token String value\n * @param {String} rel\n * @param {Object} body\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(token, rel, body) {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { href, headers } = endpoint;\n const requestBody = body ? JSON.stringify(body) : '';\n const requestHeaders = Object.assign({}, headers);\n\n if (requestHeaders.Authorization.match(/\\{identityToken\\}/gi)) {\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{identityToken\\}/gi, token);\n } else {\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi, token);\n }\n\n return {\n url: href,\n body: requestBody,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/identity/bam/bamIdentityClient.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Internal} entry point\n *\n */\n\nimport Telemetry from './telemetry/entry';\nimport Dust from './dust/entry';\n\n/**\n *\n * @typedef SDK.Services.Internal\n * @type {Object}\n *\n * @property {Telemetry} Telemetry\n * @property {Dust} Dust\n *\n */\n\n/**\n *\n * @type {SDK.Services.Internal}\n *\n */\nexport default {\n\n Telemetry,\n Dust\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/entry.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Internal.Telemetry} entry point.\n *\n */\n\nimport TelemetryClientConfiguration from './telemetryClientConfiguration';\nimport TelemetryClient from './telemetryClient';\nimport TelemetryClientEndpoint from './telemetryClientEndpoint';\nimport TelemetryPayload from './telemetryPayload';\nimport TelemetryResponse from './telemetryResponse';\n\nimport StreamSamplePayload from './streamSamplePayload';\nimport StreamSampleClientPayload from './streamSampleClientPayload';\n\n/**\n *\n * @typedef SDK.Services.Internal.Telemetry\n * @type {Object}\n *\n * @property {TelemetryClientConfiguration} TelemetryClientConfiguration\n * @property {TelemetryClient} TelemetryClient\n * @property {TelemetryClientEndpoint} TelemetryClientEndpoint\n * @property {TelemetryPayload} TelemetryPayload\n * @property {TelemetryResponse} TelemetryResponse\n *\n * @property {StreamSamplePayload} StreamSamplePayload\n * @property {StreamSampleClientPayload} StreamSampleClientPayload\n *\n */\n\n/**\n *\n * @type {SDK.Services.Internal.Telemetry}\n *\n */\nexport default {\n\n TelemetryClientConfiguration,\n TelemetryClient,\n TelemetryClientEndpoint,\n TelemetryPayload,\n TelemetryResponse,\n\n StreamSamplePayload,\n StreamSampleClientPayload\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/telemetry/entry.js","/**\n *\n * @module telemetryClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/telemetry.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../../logging/entry';\nimport Exception from './../../exception/entry';\nimport HttpClient from './../../platforms/httpClient';\nimport Token from './../../token/entry';\nimport Util from './../../util/entry';\nimport Configuration from './../../configuration/entry';\n\nimport TelemetryClientEndpoint from './telemetryClientEndpoint';\nimport TelemetryClientConfiguration from './telemetryClientConfiguration';\nimport TelemetryPayload from './telemetryPayload';\nimport TelemetryResponse from './telemetryResponse';\nimport DustLogUtility from './../dust/dustLogUtility';\nimport DustUrnReference from './../dust/dustUrnReference';\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst TelemetryClientDustUrnReference = DustUrnReference.services.internal.telemetry.telemetryClient;\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst {\n like,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class TelemetryClient\n * @implements {ITelemetryClient}\n * @desc Provides a data client that can be used to access telemetry services.\n *\n */\nexport default class TelemetryClient {\n\n /**\n *\n * @access private\n * @param {TelemetryClientConfiguration} telemetryClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(telemetryClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'TelemetryClient(telemetryClientConfiguration, logger, httpClient)',\n get telemetryClientConfiguration() {\n return `${this.ctor} needs TelemetryClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n telemetryClientConfiguration,\n TelemetryClientConfiguration,\n errorMessage.telemetryClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {TelemetryClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = telemetryClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {String}\n * @desc indicates the buffer should retry some action after a defined amount of time\n *\n */\n this.replyAfterHeader = 'x-mlbam-reply-after';\n\n /**\n *\n * @access private\n * @type {String}\n * @desc indicates a unique tracking identifier\n *\n */\n this.requestIdHeader = 'x-request-id';\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(TelemetryClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @param {Array} telemetryPayloads The collection of TelemetryPayload(s) to send.\n * @desc Posts an event collection to the telemetry service.\n * @returns {Promise} Optional information and/or instructions about the telemetry service.\n *\n */\n postEvents(accessToken, telemetryPayloads) {\n\n const errorMessage = {\n method: 'TelemetryClient.postEvents(accessToken, telemetryPayloads)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n },\n get telemetryPayloads() {\n return `${this.method} needs Array of TelemetryPayload instances`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n Check.assert(\n (() => {\n return Check.all(telemetryPayloads.map((payload) => {\n return like(payload, TelemetryPayload);\n }));\n })(),\n errorMessage.telemetryPayloads,\n InvalidArgumentException\n );\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n TelemetryClientEndpoint.postEvent,\n telemetryPayloads\n );\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: TelemetryClient.name,\n urn: TelemetryClientDustUrnReference.postEvents,\n payload,\n method: HttpMethod.GET\n });\n\n logger.info(TelemetryClient.name, `Posting telemetry events: Count: ${telemetryPayloads.length}`);\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { headers } = response;\n const { replyAfterHeader, requestIdHeader } = this;\n\n const replyAfter = headers.get(replyAfterHeader) || null;\n const requestId = headers.get(requestIdHeader) || null;\n\n return Promise.resolve(\n new TelemetryResponse(replyAfter, requestId)\n );\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @param {Array} telemetryPayloads The collection of TelemetryPayload(s) to send.\n * @desc Posts a dust event collection to the telemetry service.\n * @note do NOT post dustEvents to the dustSink\n * @returns {Promise} Optional information and/or instructions about the telemetry service.\n *\n */\n postDustEvents(accessToken, telemetryPayloads) {\n\n const errorMessage = {\n method: 'TelemetryClient.postDustEvents(accessToken, telemetryPayloads)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n },\n get telemetryPayloads() {\n return `${this.method} needs Array of TelemetryPayload instances`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n Check.assert(\n (() => {\n return Check.all(telemetryPayloads.map((payload) => {\n return like(payload, TelemetryPayload);\n }));\n })(),\n errorMessage.telemetryPayloads,\n InvalidArgumentException\n );\n\n const { logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n TelemetryClientEndpoint.dustEvent,\n telemetryPayloads\n );\n\n logger.info(TelemetryClient.name, `Posting dust events: Count: ${telemetryPayloads.length}`);\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response);\n\n }).then((response) => {\n\n const { headers } = response;\n const { replyAfterHeader, requestIdHeader } = this;\n\n const replyAfter = headers.get(replyAfterHeader) || null;\n const requestId = headers.get(requestIdHeader) || null;\n\n return Promise.resolve(new TelemetryResponse(replyAfter, requestId));\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {TelemetryClientEndpoint} rel\n * @param {Array} body\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, body) {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { href, headers } = endpoint;\n const requestHeaders = Object.assign({}, headers);\n const requestBody = JSON.stringify(body);\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi,\n accessToken.token);\n\n return {\n url: href,\n body: requestBody,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/telemetry/telemetryClient.js","/**\n *\n * @module streamSamplePayload\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from '../../exception/invalidArgumentException';\n\nimport StreamSampleClientPayload from './streamSampleClientPayload';\n\nconst {\n instanceStrict,\n object\n} = Check.assert;\n\n/**\n *\n * @class StreamSamplePayload\n * @since 3.5.0\n * @implements {TelemetryPayload}\n *\n */\nexport default class StreamSamplePayload {\n\n /**\n *\n * @param {Object} server\n * @param {Object} client\n *\n */\n constructor(server, client) {\n\n const errorMessage = {\n ctor: 'StreamSampleEvent(server, client)',\n get server() {\n return `${this.ctor} needs a server data Object`;\n },\n get client() {\n return `${this.ctor} needs SDK.Services.Internal.Telemetry.StreamSampleClientPayload instance`;\n }\n };\n\n object(server, errorMessage.server, InvalidArgumentException);\n instanceStrict(client, StreamSampleClientPayload, errorMessage.client, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Dictionary containing server provided tracking information.\n * @note this can be an empty object\n *\n */\n this.server = server;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Dictionary containing client provided tracking information.\n *\n */\n this.client = client;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/telemetry/streamSamplePayload.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Internal.Dust} entry point.\n *\n */\n\nimport DustApplicationPayload from '../dust/dustApplicationPayload';\nimport DustCategory from '../dust/dustCategory';\nimport DustClientPayload from '../dust/dustClientPayload';\nimport DustDevicePayload from '../dust/dustDevicePayload';\nimport DustLogUtility from './../dust/dustLogUtility';\nimport DustPayload from '../dust/dustPayload';\nimport DustSdkPayload from '../dust/dustSdkPayload';\nimport DustServerPayload from '../dust/dustServerPayload';\nimport DustUrnReference from './../dust/dustUrnReference';\n\n/**\n *\n * @typedef SDK.Services.Internal.Dust\n * @type {Object}\n *\n * @property {DustApplicationPayload} DustApplicationPayload\n * @property {DustCategory} DustCategory\n * @property {DustClientPayload} DustClientPayload\n * @property {DustDevicePayload} DustDevicePayload\n * @property {DustLogUtility} DustLogUtility\n * @property {DustPayload} DustPayload\n * @property {DustSdkPayload} DustSdkPayload\n * @property {DustServerPayload} DustServerPayload\n * @property {DustUrnReference} DustUrnReference\n */\n\n/**\n *\n * @type {SDK.Services.Internal.Dust}\n *\n */\nexport default {\n\n DustApplicationPayload,\n DustCategory,\n DustClientPayload,\n DustDevicePayload,\n DustLogUtility,\n DustPayload,\n DustSdkPayload,\n DustServerPayload,\n DustUrnReference\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/dust/entry.js","\nvar rng;\n\nvar crypto = global.crypto || global.msCrypto; // for IE 11\nif (crypto && crypto.getRandomValues) {\n // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto\n // Moderately fast, high quality\n var _rnds8 = new Uint8Array(16);\n rng = function whatwgRNG() {\n crypto.getRandomValues(_rnds8);\n return _rnds8;\n };\n}\n\nif (!rng) {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var _rnds = new Array(16);\n rng = function() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return _rnds;\n };\n}\n\nmodule.exports = rng;\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/rng-browser.js\n// module id = 574\n// module chunks = 0","/**\n *\n * @module dustPayload\n *\n */\n\nimport Check from 'check-types';\nimport InvalidArgumentException from './../../exception/invalidArgumentException';\n\nimport DustServerPayload from './dustServerPayload';\nimport DustClientPayload from './dustClientPayload';\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class DustPayload\n * @implements {TelemetryPayload}\n * @since 3.4.0\n * @desc contains either client and/or server information for this event\n *\n */\nexport default class DustPayload {\n\n /**\n *\n * @access private\n * @param {SDK.Services.Internal.Dust.DustClientPayload} client\n * @param {SDK.Services.Internal.Dust.DustServerPayload} [server={}]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(client, server = {}) {\n\n const errorMessage = {\n ctor: 'DustPayload(client, server)',\n get client() {\n return `${this.ctor} needs a DustClientPayload instance`;\n },\n get server() {\n return `${this.ctor} needs a DustServerPayload instance`;\n }\n };\n\n instanceStrict(client, DustClientPayload, errorMessage.client, InvalidArgumentException);\n\n if (Check.nonEmptyObject(server)) {\n instanceStrict(server, DustServerPayload, errorMessage.server, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Dictionary containing server provided tracking information.\n *\n */\n this.server = server;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Dictionary containing client provided tracking information.\n *\n */\n this.client = client;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/internal/dust/dustPayload.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Paywall} entry point.\n *\n */\n\nimport AccountEntitlementContext from './accountEntitlementContext';\nimport Campaign from './campaign';\nimport IntroPrice from './introPrice';\nimport Paywall from './paywall';\nimport PaywallClient from './paywallClient';\nimport PaywallClientConfiguration from './paywallClientConfiguration';\nimport PaywallClientEndpoint from './paywallClientEndpoint';\nimport Product from './product';\nimport ProductType from './productType';\nimport TimeUnit from './timeUnit';\n\n/**\n *\n * @typedef SDK.Services.Paywall\n * @type {Object}\n *\n * @property {AccountEntitlementContext} AccountEntitlementContext\n * @property {Campaign} Campaign\n * @property {IntroPrice} IntroPrice\n * @property {Paywall} Paywall\n * @property {PaywallClient} PaywallClient\n * @property {PaywallClientConfiguration} PaywallClientConfiguration\n * @property {PaywallClientEndpoint} PaywallClientEndpoint\n * @property {Product} Product\n * @property {ProductType} ProductType\n * @property {TimeUnit} TimeUnit\n *\n */\n\n/**\n *\n * @type {SDK.Services.Paywall}\n *\n */\nexport default {\n\n AccountEntitlementContext,\n Campaign,\n IntroPrice,\n Paywall,\n PaywallClient,\n PaywallClientConfiguration,\n PaywallClientEndpoint,\n Product,\n ProductType,\n TimeUnit\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/paywall/entry.js","/**\n *\n * @module paywallClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/paywall.md\n * @see https://github.bamtech.co/services-commons/public-api/blob/master/swagger/services/paywall.md\n *\n */\n\n/* eslint-disable camelcase */\n\nimport Check from 'check-types';\n\nimport Logging from './../../logging/entry';\nimport Exception from './../exception/entry';\nimport Token from './../token/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nimport AccountEntitlementContext from './accountEntitlementContext';\nimport Campaign from './campaign';\nimport IntroPrice from './introPrice';\nimport Paywall from './paywall';\nimport PaywallClientConfiguration from './paywallClientConfiguration';\nimport PaywallClientEndpoint from './paywallClientEndpoint';\nimport Product from './product';\nimport ProductType from './productType';\nimport TimeUnit from './timeUnit';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst PaywallClientDustUrnRefernce = DustUrnReference.services.paywall.paywallClient;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class PaywallClient\n * @since 3.9.0\n * @desc Provides a data client that can be used to access paywall services.\n *\n */\nexport default class PaywallClient {\n\n /**\n *\n * @param {SDK.Services.Paywall.PaywallClientConfiguration} paywallClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(paywallClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(paywallClientConfiguration, logger, httpClient)`,\n get paywallClientConfiguration() {\n return `${this.ctor} needs PaywallClientConfiguration instance`;\n }\n };\n\n instanceStrict(paywallClientConfiguration, PaywallClientConfiguration, errorMessage.paywallClientConfiguration, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {SDK.Services.Paywall.PaywallClientConfiguration}\n *\n */\n this.config = paywallClientConfiguration;\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {HttpClient}\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {String}\n * @desc determines if you should refresh the access token\n *\n */\n this.refreshAccessTokenHeader = 'X-BAMTech-Refresh-Access-Token';\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(PaywallClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @param {String} accessToken\n * @desc Retrieves paywall information contextually sensitive to the environment and requester.\n * @returns {Promise}\n *\n */\n getPaywall(accessToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getPaywall(accessToken)`,\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient, processProducts } = this;\n\n const payload = this.getPayload(\n accessToken,\n PaywallClientEndpoint.paywall\n );\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: PaywallClient.name,\n urn: PaywallClientDustUrnRefernce.getPaywall,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n const { paywallHash, skus, context } = data;\n\n const keys = Object.keys(AccountEntitlementContext);\n const accountEntitlementContext = keys.find((key) => AccountEntitlementContext[key] === context);\n const products = processProducts(skus);\n\n const paywall = new Paywall({\n accountEntitlementContext,\n paywallHash,\n products\n });\n\n return Promise.resolve(paywall);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @param {Array} options\n * @returns {Array}\n *\n */\n processProducts(options) {\n\n const products = [];\n\n for (const item of options) {\n\n let _campaign;\n let _introPrice = null;\n\n const { entitlements, introPrice, name, groups, campaign, sku, productType } = item;\n const { campaignCode, voucherCode } = campaign;\n const { unit, price, length } = introPrice;\n\n if (Check.assigned(campaignCode) && Check.assigned(voucherCode)) {\n _campaign = new Campaign(campaignCode, voucherCode);\n }\n\n if (Check.assigned(unit) && Check.assigned(price) && Check.assigned(length)) {\n\n _introPrice = new IntroPrice({\n length,\n price,\n unit: TimeUnit[unit]\n });\n\n }\n\n const product = new Product({\n campaign: _campaign,\n entitlements,\n groups,\n introPrice: _introPrice,\n name,\n productType: ProductType[productType],\n sku\n });\n\n products.push(product);\n\n }\n\n return products;\n\n }\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {String} rel\n * @param {Object} body\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, body) {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { href, headers } = endpoint;\n const requestBody = body ? JSON.stringify(body) : '';\n const requestHeaders = Object.assign({}, headers);\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi, accessToken.token);\n\n return {\n url: href,\n body: requestBody,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/paywall/paywallClient.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Purchase} entry point.\n *\n */\n\nimport PurchaseClient from './purchaseClient';\nimport PurchaseClientConfiguration from './purchaseClientConfiguration';\nimport PurchaseClientEndpoint from './purchaseClientEndpoint';\nimport PurchaseActivation from './purchaseActivation';\nimport PurchaseActivationResult from './purchaseActivationResult';\nimport PurchaseActivationStatus from './purchaseActivationStatus';\nimport ReceiptCredentials from './receiptCredentials';\n\n/**\n *\n * @typedef SDK.Services.Purchase\n * @type {Object}\n *\n * @property {PurchaseClient} PurchaseClient\n * @property {PurchaseClientConfiguration} PurchaseClientConfiguration\n * @property {PurchaseClientEndpoint} PurchaseClientEndpoint\n * @property {PurchaseActivation} PurchaseActivation\n * @property {PurchaseActivationResult} PurchaseActivationResult\n * @property {PurchaseActivationStatus} PurchaseActivationStatus\n * @property {ReceiptCredentials} ReceiptCredentials\n *\n */\n\n/**\n *\n * @type {SDK.Services.Purchase}\n *\n */\nexport default {\n\n PurchaseClient,\n PurchaseClientConfiguration,\n PurchaseClientEndpoint,\n PurchaseActivation,\n PurchaseActivationResult,\n PurchaseActivationStatus,\n ReceiptCredentials\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/purchase/entry.js","/**\n *\n * @module purchaseClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/purchase.md\n * @see https://github.bamtech.co/services-commons/public-api/blob/master/swagger/services/store.md\n *\n */\n\nimport Check from 'check-types';\nimport Token from './../token/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Exception from './../exception/entry';\nimport Logging from './../../logging/entry';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nimport PurchaseActivation from './purchaseActivation';\nimport PurchaseActivationResult from './purchaseActivationResult';\nimport PurchaseActivationStatus from './purchaseActivationStatus';\nimport PurchaseClientEndpoint from './purchaseClientEndpoint';\nimport PurchaseClientConfiguration from './purchaseClientConfiguration';\nimport ReceiptCredentials from './receiptCredentials';\n\nconst ErrorReason = Exception.ErrorReason;\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst PurchaseClientDustUrnReference = DustUrnReference.services.purchase.purchaseClient;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class PurchaseClient\n * @implements {IPurchaseClient}\n * @desc Provides a data client that can be used to access purchase services.\n *\n */\nexport default class PurchaseClient {\n\n /**\n *\n * @param {PurchaseClientConfiguration} purchaseClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(purchaseClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'PurchaseClient(purchaseClientConfiguration, logger, httpClient)',\n get purchaseClientConfiguration() {\n return `${this.ctor} needs PurchaseClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n purchaseClientConfiguration,\n PurchaseClientConfiguration,\n errorMessage.purchaseClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {PurchaseClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = purchaseClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {String}\n * @desc determines if you should refresh the access token\n * @note Maybe centralize this string if it's going to be used in many places\n *\n */\n this.refreshAccessTokenHeader = 'X-BAMTech-Refresh-Access-Token';\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(PurchaseClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {ReceiptCredentails} receiptCredentials - Information about the purchase made in the Apple store.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Redeem just made purchases to watch on the current device.\n * @returns {Promise} Result indicating activation success and any active entitlements.\n *\n */\n redeemPurchases(receiptCredentials, accessToken) {\n\n const errorMessage = {\n method: 'PurchaseClient.redeemPurchases(receiptCredentials, accessToken)',\n get receiptCredentials() {\n return `${this.method} needs ReceiptCredentials instance`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(receiptCredentials, ReceiptCredentials, errorMessage.receiptCredentials, InvalidArgumentException); // eslint-disable-line\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n PurchaseClientEndpoint.redeemPurchases,\n receiptCredentials\n );\n\n logger.info(\n PurchaseClient.name,\n `redeemPurchases - receiptCredentials(${JSON.stringify(receiptCredentials, null, 2)})`\n );\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: PurchaseClient.name,\n urn: PurchaseClientDustUrnReference.redeemPurchases,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { refreshAccessTokenHeader } = this;\n const { data = {}, headers } = response;\n const { temporaryAccessGranted = false } = data;\n const { invalid = [], purchases = [] } = data;\n const refreshAccessToken = !!headers.get(refreshAccessTokenHeader);\n\n const reasons = this.getErrorReasons(invalid);\n const purchaseActivations = this.getPurchaseActivations(purchases);\n\n return Promise.resolve(\n new PurchaseActivationResult(refreshAccessToken, temporaryAccessGranted, reasons, purchaseActivations)\n );\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @param {ReceiptCredentails} receiptCredentials - Information about the purchase made in the Apple store.\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Redeem previously made purchases to watch on the current device.\n * @returns {Promise} Result indicating activation success and any active entitlements.\n *\n */\n restorePurchases(receiptCredentials, accessToken) {\n\n const errorMessage = {\n method: 'PurchaseClient.restorePurchases(receiptCredentials, accessToken)',\n get receiptCredentials() {\n return `${this.method} needs ReceiptCredentials instance`;\n },\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(receiptCredentials, ReceiptCredentials, errorMessage.receiptCredentials, InvalidArgumentException); // eslint-disable-line\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n const payload = this.getPayload(\n accessToken,\n PurchaseClientEndpoint.restorePurchases,\n receiptCredentials\n );\n\n logger.info(\n PurchaseClient.name,\n `restorePurchases - receiptCredentials(${JSON.stringify(receiptCredentials, null, 2)})`\n );\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: PurchaseClient.name,\n urn: PurchaseClientDustUrnReference.restorePurchases,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { refreshAccessTokenHeader } = this;\n const { data = {}, headers } = response;\n const { temporaryAccessGranted = false } = data;\n const { invalid = [], purchases = [] } = data;\n const refreshAccessToken = !!headers.get(refreshAccessTokenHeader);\n const reasons = this.getErrorReasons(invalid);\n const purchaseActivations = this.getPurchaseActivations(purchases);\n\n return Promise.resolve(\n new PurchaseActivationResult(refreshAccessToken, temporaryAccessGranted, reasons, purchaseActivations)\n );\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {PurchaseClientEndpoint} rel\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, receiptCredentials) {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { href, headers } = endpoint;\n const requestHeaders = Object.assign({}, headers);\n const body = JSON.stringify(receiptCredentials.payload());\n const url = href.replace('{store}', receiptCredentials.getStore());\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi, accessToken.token);\n\n return {\n url,\n body,\n headers: requestHeaders\n };\n\n }\n\n /**\n *\n * @access private\n * @param {Object} error\n * @returns {SDK.Services.Exception.ErrorReason}\n *\n */\n getErrorReason(error) {\n\n let errorReason = null;\n\n if (Util.getSafe(() => error.code)) {\n errorReason = new ErrorReason(error.code, Util.getSafe(() => error.description));\n }\n\n return errorReason;\n\n }\n\n /**\n *\n * @access private\n * @param {Array} errors\n * @returns {Array}\n *\n */\n getErrorReasons(errors) {\n\n const errorReasons = [];\n\n if (Check.array(errors)) {\n\n errors.forEach((error) => {\n\n const errorReason = this.getErrorReason(error);\n\n if (Check.assigned(errorReason)) {\n errorReasons.push(errorReason);\n }\n\n });\n\n }\n\n return errorReasons;\n\n }\n\n /**\n *\n * @access private\n * @param {Array} purchases\n * @returns {Array}\n *\n */\n getPurchaseActivations(purchases) {\n\n const purchaseActivations = [];\n\n purchases.forEach((purchase) => {\n\n const reason = this.getErrorReason(purchase.reason);\n const status = PurchaseActivationStatus[purchase.status];\n\n purchaseActivations.push(new PurchaseActivation(purchase.products, purchase.sku, status, reason));\n\n });\n\n return purchaseActivations;\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/purchase/purchaseClient.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Session} entry point.\n *\n */\n\nimport SessionClient from './sessionClient';\nimport SessionClientConfiguration from './sessionClientConfiguration';\nimport SessionClientEndpoint from './sessionClientEndpoint';\nimport SessionAccountInfo from './sessionAccountInfo';\nimport SessionDeviceInfo from './sessionDeviceInfo';\nimport SessionProfileInfo from './sessionProfileInfo';\nimport SessionEntitlement from './sessionEntitlement';\nimport SessionInfo from './sessionInfo';\nimport SessionLocation from './sessionLocation';\nimport SessionLocationType from './sessionLocationType';\n\n/**\n *\n * @typedef SDK.Services.Session\n * @type {Object}\n *\n * @property {SessionClient} SessionClient\n * @property {SessionClientConfiguration} SessionClientConfiguration\n * @property {SessionClientEndpoint} SessionClientEndpoint\n * @property {SessionLocation} SessionLocation\n * @property {SessionLocationType} SessionLocationType\n *\n */\n\n/**\n *\n * @type {SDK.Services.Session}\n *\n */\nexport default {\n\n SessionClient,\n SessionClientConfiguration,\n SessionClientEndpoint,\n SessionAccountInfo,\n SessionDeviceInfo,\n SessionProfileInfo,\n SessionEntitlement,\n SessionInfo,\n SessionLocation,\n SessionLocationType\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/session/entry.js","/**\n *\n * @module sessionClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/session.md\n *\n */\n\n/* eslint-disable camelcase */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Exception from './../exception/entry';\nimport Token from './../token/entry';\nimport HttpClient from './../platforms/httpClient';\nimport Util from './../util/entry';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\n\nimport SessionClientConfiguration from './sessionClientConfiguration';\nimport SessionClientEndpoint from './sessionClientEndpoint';\nimport SessionAccountInfo from './sessionAccountInfo';\nimport SessionDeviceInfo from './sessionDeviceInfo';\nimport SessionProfileInfo from './sessionProfileInfo';\nimport SessionEntitlement from './sessionEntitlement';\nimport SessionInfo from './sessionInfo';\nimport SessionLocation from './sessionLocation';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst SessionClientDustUrnReference = DustUrnReference.services.session.sessionClient;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class SessionClient\n *\n */\nexport default class SessionClient {\n\n /**\n *\n * @param {SessionClientConfiguration} sessionClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(sessionClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'SessionClient(sessionClientConfiguration, logger, httpClient)',\n get sessionClientConfiguration() {\n return `${this.ctor} needs SessionClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n sessionClientConfiguration,\n SessionClientConfiguration,\n errorMessage.sessionClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {SessionClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = sessionClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(SessionClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @returns {Promise}\n * @desc Gets device, location, and entitlement information on the current session.\n * @note intermediary variables are used in order to construct the SessionInfo object with the correct\n * variable names from the spec and to avoid collisions for fields with the same name in the spec.\n *\n */\n getInfo(accessToken) {\n\n const errorMessage = {\n method: 'SessionClient.getInfo(accessToken)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n SessionClientEndpoint.getInfo\n );\n\n logger.info(SessionClient.name, 'Attempting to get session information.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: SessionClient.name,\n urn: SessionClientDustUrnReference.getInfo,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n // Warning: destructuring reassigns a varname (location) that would otherwise reference a global var.\n const { session_id: sessionInfoId, account, device, location, profile, entitlements } = data;\n const { inSupportedLocation, isSubscriber } = data;\n const { id, platform } = device;\n const { type, zip_code, country_code, dma } = location;\n\n const sessionAccountInfo = account ? new SessionAccountInfo(account.id) : undefined;\n const sessionDeviceInfo = new SessionDeviceInfo(id, platform);\n const sessionLocation = new SessionLocation(type, zip_code, country_code, dma);\n const sessionProfileInfo = profile ? new SessionProfileInfo(profile.id) : undefined;\n\n const entitlementInstances = entitlements.map((entitlement) => {\n\n const { name } = entitlement;\n\n return new SessionEntitlement(name);\n\n });\n\n return Promise.resolve(\n new SessionInfo({\n id: sessionInfoId,\n account: sessionAccountInfo,\n device: sessionDeviceInfo,\n location: sessionLocation,\n profile: sessionProfileInfo,\n entitlements: entitlementInstances,\n inSupportedLocation,\n isSubscriber\n })\n );\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {String} rel\n * @param {Object} body\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, body) {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { href, headers } = endpoint;\n const requestBody = body ? JSON.stringify(body) : '';\n const requestHeaders = Object.assign({}, headers);\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi, accessToken.token);\n\n return {\n url: href,\n body: requestBody,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/session/sessionClient.js","/**\n *\n * @module entry\n * @desc {SDK.Services.Subscription} entry point.\n *\n */\n\nimport SubscriptionStatus from './subscriptionStatus';\nimport SubscriptionClient from './subscriptionClient';\nimport SubscriptionExpiryType from './subscriptionExpiryType';\nimport SubscriptionSourceSubType from './subscriptionSourceSubType';\nimport SubscriptionSourceType from './subscriptionSourceType';\nimport SubscriptionClientEndpoint from './subscriptionClientEndpoint';\nimport SubscriptionStatusSubType from './subscriptionStatusSubType';\nimport SubscriptionStatusType from './subscriptionStatusType';\nimport SubscriptionType from './subscriptionType';\nimport SubscriptionOffer from './subscriptionOffer';\nimport SubscriptionFreeTrial from './subscriptionFreeTrial';\nimport SubscriptionFreeTrialStatus from './subscriptionFreeTrialStatus';\nimport ProductRule from './productRule';\n\n/**\n *\n * @typedef SDK.Services.Subscription\n * @type {Object}\n *\n * @property {SubscriptionStatus} SubscriptionStatus\n * @property {SubscriptionClient} SubscriptionClient\n * @property {SubscriptionExpiryType} SubscriptionExpiryType\n * @property {SubscriptionSourceSubType} SubscriptionSourceSubType\n * @property {SubscriptionSourceType} SubscriptionSourceType\n * @property {SubscriptionClientEndpoint} SubscriptionClientEndpoint\n * @property {SubscriptionStatusSubType} SubscriptionStatusSubType\n * @property {SubscriptionStatusType} SubscriptionStatusType\n * @property {SubscriptionOffer} SubscriptionOffer\n * @property {SubscriptionFreeTrial} SubscriptionFreeTrial\n * @property {SubscriptionFreeTrialStatus} SubscriptionFreeTrialStatus\n * @property {SubscriptionType} SubscriptionType\n * @property {ProductRule} ProductRule\n *\n */\n\n/**\n *\n * @type {SDK.Services.Subscription}\n *\n */\nexport default {\n\n SubscriptionStatus,\n SubscriptionClient,\n SubscriptionExpiryType,\n SubscriptionSourceSubType,\n SubscriptionSourceType,\n SubscriptionClientEndpoint,\n SubscriptionStatusSubType,\n SubscriptionStatusType,\n SubscriptionType,\n SubscriptionOffer,\n SubscriptionFreeTrial,\n SubscriptionFreeTrialStatus,\n ProductRule\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/entry.js","/**\n *\n * @module subscriptionStatus\n *\n */\n\nimport Check from 'check-types';\nimport SubscriptionStatusSubType from './subscriptionStatusSubType';\nimport SubscriptionStatusType from './subscriptionStatusType';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class SubscriptionStatus\n * @desc Represents the status a subscription can have.\n *\n */\nexport default class SubscriptionStatus {\n\n /**\n *\n * @param {Object} statusObj\n * @param {SubscriptionStatusSubType} [statusObj.subType]\n * @param {SubscriptionStatusType} statusObj.type\n *\n */\n constructor(statusObj) {\n\n const errorMessage = {\n ctor: 'SubscriptionStatus({ subType, type } = statusObj)',\n get statusObj() {\n return `${this.ctor} statusObj should be a plain Object`;\n },\n get type() {\n return `${this.ctor} type should be a String with length`;\n }\n };\n\n nonEmptyObject(statusObj, errorMessage.statusObj, InvalidArgumentException);\n\n const { subType, type } = statusObj;\n\n nonEmptyString(type, errorMessage.type, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {SubscriptionStatusSubType}\n * @desc Gets the subtype of the status (optional).\n *\n */\n this.subType = SubscriptionStatusSubType[subType];\n\n /**\n *\n * @access public\n * @type {SubscriptionStatusType}\n * @desc Gets the type of the status.\n *\n */\n this.type = SubscriptionStatusType[type];\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionStatus.js","/**\n *\n * @module subscriptionClient\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/subscription.md\n * @see https://github.bamtech.co/services-commons/api-docs/tree/master/v3.0.0-subs-api\n * @see https://github.bamtech.co/services-commons/public-api/blob/master/swagger/services/subscription.yaml\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Exception from './../exception/entry';\nimport Token from './../token/entry';\nimport HttpClient from './../platforms/httpClient';\nimport DustLogUtility from './../internal/dust/dustLogUtility';\nimport DustUrnReference from './../internal/dust/dustUrnReference';\nimport Configuration from './../configuration/entry';\nimport Util from './../util/entry';\n\nimport SubscriptionClientEndpoint from './subscriptionClientEndpoint';\nimport SubscriptionClientConfiguration from './subscriptionClientConfiguration';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\n\nconst AccessToken = Token.AccessToken;\nconst HttpMethod = Configuration.HttpMethod;\nconst SubscriptionClientDustReference = DustUrnReference.services.subscription.subscriptionClient;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class SubscriptionClient\n * @implements {ISubscriptionClient}\n * @desc Provides a data client that can be used to access subscription services.\n *\n */\nexport default class SubscriptionClient {\n\n /**\n *\n * @param {SubscriptionClientConfiguration} subscriptionClientConfiguration\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {IHttpClient} [httpClient=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(subscriptionClientConfiguration, logger = Logging, httpClient = null) {\n\n const errorMessage = {\n ctor: 'SubscriptionClient(subscriptionClientConfiguration, logger, httpClient)',\n get subscriptionClientConfiguration() {\n return `${this.ctor} needs SubscriptionClientConfiguration instance`;\n }\n };\n\n instanceStrict(\n subscriptionClientConfiguration,\n SubscriptionClientConfiguration,\n errorMessage.subscriptionClientConfiguration,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @type {SubscriptionClientConfiguration}\n * @desc The configuration information to use.\n *\n */\n this.config = subscriptionClientConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {HttpClient}\n * @desc The object responsible for making HTTP requests.\n *\n */\n this.httpClient = httpClient || new HttpClient(logger);\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.log(SubscriptionClient.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Gets a list of subscriptions associated with the provided AccessToken.\n * @returns {Promise}\n *\n */\n getSubscriptions(accessToken) {\n\n const errorMessage = {\n method: 'SubscriptionClient.getSubscriptions(accessToken)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n SubscriptionClientEndpoint.getSubscriptions\n );\n\n logger.info(SubscriptionClient.name, 'Attempting to get subscriptions.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: SubscriptionClient.name,\n urn: SubscriptionClientDustReference.getSubscriptions,\n payload,\n method: HttpMethod.GET\n });\n\n return httpClient.get(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).then((response) => {\n\n const { data } = response;\n\n return Promise.resolve(data);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Token.AccessToken} accessToken - The access token to provide user context.\n * @desc Associates the subscriptions from the device to the account, which are both defined in the AccessToken.\n * @returns {Promise}\n *\n */\n linkSubscriptionsFromDevice(accessToken) {\n\n const errorMessage = {\n method: 'SubscriptionClient.linkSubscriptionsFromDevice(accessToken)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { dustEnabled, logger, httpClient } = this;\n\n const payload = this.getPayload(\n accessToken,\n SubscriptionClientEndpoint.linkSubscriptionsFromDevice\n );\n\n logger.info(SubscriptionClient.name, 'Attempting to link subscriptions from device.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: SubscriptionClient.name,\n urn: SubscriptionClientDustReference.linkSubscriptionsFromDevice,\n payload,\n method: HttpMethod.POST\n });\n\n return httpClient.post(payload).catch((exceptionData) => {\n\n throw new ServiceException({ exceptionData });\n\n }).then((response) => {\n\n return Util.checkResponseCode(response, dustLogUtility);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken\n * @param {String} rel\n * @param {Object} body\n * @returns {Object} The payload for the client call.\n *\n */\n getPayload(accessToken, rel, body) {\n\n const { endpoints } = this.config;\n const endpoint = endpoints[rel];\n const { href, headers } = endpoint;\n const requestBody = body ? JSON.stringify(body) : '';\n const requestHeaders = Object.assign({}, headers);\n\n requestHeaders.Authorization = requestHeaders.Authorization.replace(/\\{accessToken\\}/gi, accessToken.token);\n\n return {\n url: href,\n body: requestBody,\n headers: requestHeaders\n };\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionClient.js","/**\n *\n * @module subscriptionExpiryType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SubscriptionExpiryType\n * @type {Object}\n *\n * @property {String} UNKNOWN\n * @property {String} EXPIRY\n * @property {String} NO_EXPIRY\n *\n */\n\n/**\n *\n * @enum\n * @type {SubscriptionExpiryType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n UNKNOWN: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n EXPIRY: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n NO_EXPIRY: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionExpiryType.js","/**\n *\n * @module subscriptionSourceSubType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SubscriptionSourceSubType\n * @type {Object}\n *\n * @property {String} GIFT_SUB\n * @property {String} GIFT_CARD\n * @property {String} PAID\n * @property {String} PROMO_REDEMPTION\n * @property {String} COMP\n * @property {String} TEMP\n * @property {String} INITIAL\n * @property {String} OTHER\n *\n */\n\n/**\n *\n * @enum\n * @type {SubscriptionSourceSubType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access private\n * @type {String}\n * @desc The subscription was initiated with a gift subscription.\n *\n */\n GIFT_SUB: null,\n /**\n *\n * @access private\n * @type {String}\n * @desc The subscription was initiated with a gift card.\n *\n */\n GIFT_CARD: null,\n /**\n *\n * @access private\n * @type {String}\n * @desc The subscription was paid for directly.\n *\n */\n PAID: null,\n /**\n *\n * @access private\n * @type {String}\n * @desc The subscription was initiated with a promotion.\n *\n */\n PROMO_REDEMPTION: null,\n /**\n *\n * @access private\n * @type {String}\n * @desc The subscription was initiated by compensation.\n *\n */\n COMP: null,\n /**\n *\n * @access private\n * @type {String}\n * @desc The subscription is temporary.\n *\n */\n TEMP: null,\n /**\n *\n * @access private\n * @since 4.2.3\n * @type {String}\n *\n */\n INITIAL: null,\n /**\n *\n * @access private\n * @type {String}\n * @desc The subscription source sub type was not present or is unrecognized.\n *\n */\n OTHER: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionSourceSubType.js","/**\n *\n * @module subscriptionSourceType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SubscriptionSourceType\n * @type {Object}\n *\n * @property {String} D2C\n * @property {String} MVPD\n * @property {String} IAP\n * @property {String} CST\n * @property {String} EXT\n *\n */\n\n/**\n *\n * @enum\n * @type {SubscriptionSourceType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access private\n * @type {String}\n * @desc Direct to consumer: the consumer bought the subscription directly from DSS\n *\n */\n D2C: null,\n /**\n *\n * @access private\n * @type {String}\n * @desc MVPD: the consumer used MVPD activation to get the subscription. Generally\n * not used, but an example would be a free subscription from a user's cable provider.\n *\n */\n MVPD: null,\n /**\n *\n * @access private\n * @type {String}\n * @desc In-app purchase: the subscription was bought through a native store such as\n * the Apple App Store or Google Play.\n *\n */\n IAP: null,\n /**\n *\n * @access private\n * @type {String}\n * @desc Customer service: the subscription was granted to the user by DSS customer service.\n *\n */\n CST: null,\n /**\n *\n * @access private\n * @since 4.1.2\n * @type {String}\n * @desc External: the subscription was obtained via an external source, for instance a superbundle\n * purchased from Hulu (which would be distinct from a superbundle purchased from DSS - the type\n * in this case would be D2C).\n *\n */\n EXT: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionSourceType.js","/**\n *\n * @module subscriptionType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SubscriptionType\n * @type {Object}\n *\n * @property {String} BAM_IDENTITY\n * @property {String} BEARER\n * @property {String} EXTERNAL_IDENTITY\n *\n */\n\n/**\n *\n * @enum\n * @type {SubscriptionType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access private\n * @type {String}\n *\n */\n BAM_IDENTITY: null,\n /**\n *\n * @access private\n * @type {String}\n *\n */\n BEARER: null,\n /**\n *\n * @access private\n * @type {String}\n *\n */\n EXTERNAL_IDENTITY: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionType.js","/**\n *\n * @module subscriptionOffer\n *\n */\n\nimport Check from 'check-types';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n object,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SubscriptionOffer\n * @since 4.2.4\n *\n */\nexport default class SubscriptionOffer {\n\n /**\n *\n * @param {Object} options\n * @param {String} [options.campaignCode]\n * @param {String} [options.voucherCode]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a plain Object`;\n },\n get campaignCode() {\n return `${this.ctor} campaignCode should be a non-empty String`;\n },\n get voucherCode() {\n return `${this.ctor} voucherCode should be a non-empty String`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { campaignCode, voucherCode } = options;\n\n if (Check.assigned(campaignCode)) {\n nonEmptyString(campaignCode, errorMessage.campaignCode, InvalidArgumentException);\n }\n\n if (Check.assigned(voucherCode)) {\n nonEmptyString(voucherCode, errorMessage.voucherCode, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.2.4\n * @type {String}\n * @desc The campaign code this offer corresponds to.\n *\n */\n this.campaignCode = campaignCode;\n\n /**\n *\n * @access public\n * @since 4.2.4\n * @type {String}\n * @desc The voucher code this offer corresponds to.\n *\n */\n this.voucherCode = voucherCode;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionOffer.js","/**\n *\n * @module subscriptionFreeTrial\n *\n */\n\nimport Check from 'check-types';\n\nimport SubscriptionFreeTrialStatus from './subscriptionFreeTrialStatus';\n\nimport Exception from './../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n object,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SubscriptionFreeTrial\n * @since 4.2.4\n * @desc Free trial information for the subscription.\n *\n */\nexport default class SubscriptionFreeTrial {\n\n /**\n *\n * @param {Object} options\n * @param {String} options.status\n * @param {String} [options.endDate]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a plain Object`;\n },\n get status() {\n return `${this.ctor} status should be a non-empty String`;\n },\n get endDate() {\n return `${this.ctor} endDate should be a non-empty String`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { status, endDate } = options;\n\n nonEmptyString(status, errorMessage.status, InvalidArgumentException);\n\n if (Check.assigned(endDate)) {\n nonEmptyString(endDate, errorMessage.endDate, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.2.4\n * @type {SDK.Services.Subscription.SubscriptionFreeTrialStatus}\n * @desc Whether or not the subscription is in a free trial.\n * The status may be unknown if the client that created the subscription\n * cannot know for sure if the subscription is in a free trial or not.\n * For D2C subscriptions we should know with certainty if the subscription\n * is in free trial or not.\n *\n */\n this.status = SubscriptionFreeTrialStatus[status.toLowerCase()] || SubscriptionFreeTrialStatus.unknown;\n\n /**\n *\n * @access public\n * @since 4.2.4\n * @type {String|undefined}\n * @desc The projected end date of the subscription's free trial.\n * @note (\"YYYY-MM-DDThh:mm:ss.sssZ\") Should conform to ISO-8601.\n *\n */\n this.endDate = endDate;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/subscriptionFreeTrial.js","/**\n *\n * @module productRule\n *\n */\n\nimport Check from 'check-types';\n\nimport InvalidArgumentException from './../exception/invalidArgumentException';\n\nconst {\n object\n} = Check.assert;\n\n/**\n *\n * @class ProductRule\n * @desc Represents the rules on a product a user is subscribed to.\n *\n */\nexport default class ProductRule {\n\n /**\n *\n * @param {Object} ruleObj\n * @param {String} [ruleObj.description]\n * @param {String} [ruleObj.id]\n *\n */\n constructor(ruleObj) {\n\n const errorMessage = {\n ctor: 'ProductRule({ description, id } = ruleObj)',\n get ruleObj() {\n return `${this.ctor} ruleObj should be a plain Object`;\n }\n };\n\n object(ruleObj, errorMessage.ruleObj, InvalidArgumentException);\n\n const { description, id } = ruleObj;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc Gets the description (optional).\n *\n */\n this.description = description;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc Gets the ID (optional).\n *\n */\n this.id = id;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/subscription/productRule.js","/**\n *\n * @module storage\n * @desc Storage provider entry point, determines proper implementation to load\n * based on device family and the current application runtime.\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/DeploymentProfiles.md\n *\n */\n\nconst deviceFamily = process.env.device_family;\nconst applicationRuntime = process.env.application_runtime;\n\nlet strategy = 'isomorphic';\n\nif (deviceFamily === 'apple') {\n strategy = deviceFamily;\n}\n\nif (applicationRuntime === 'orsay') {\n strategy = `${deviceFamily}/${applicationRuntime}`;\n}\n\nif (applicationRuntime === 'trilithium') {\n strategy = `${deviceFamily}/${applicationRuntime}`;\n}\n\nexport default require(`./${strategy}/storage`);\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/storage.js","var map = {\n\t\"./apple/storage\": 594,\n\t\"./isomorphic/storage\": 595,\n\t\"./samsung/orsay/storage\": 596,\n\t\"./sony/trilithium/storage\": 597\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 593;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/services/platforms ^\\.\\/.*\\/storage$\n// module id = 593\n// module chunks = 0","/**\n *\n * @module storage\n *\n */\n\nimport Logging from './../../../logging/entry';\nimport CoreStorageProvider from './../shared/coreStorageProvider';\nimport MemoryStore from './../memoryStore';\n\n/**\n *\n * @class Storage\n * @extends {CoreStorageProvider}\n * @desc ATV Storage provider implementation.\n *\n * @example\n * const storage = new Storage(logger);\n *\n */\nexport default class Storage extends CoreStorageProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n const scope = global && global.atv;\n const hasLocalStorage = scope && scope.localStorage;\n const storeMessage = hasLocalStorage ? 'Using native localStorage.' : 'Using MemoryStore instance.';\n\n super(logger);\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc storage reference, uses the global ATV storage instance,\n * falls back to a plain Object implementation\n *\n */\n this.store = hasLocalStorage ? scope.localStorage : new MemoryStore();\n\n this.logger.log('Storage', 'Created ATV Provider.');\n this.logger.info('Storage', storeMessage);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/apple/storage.js","/**\n *\n * @module storage\n *\n */\n\nimport Util from './../../util/entry';\nimport Logging from './../../../logging/entry';\nimport CoreStorageProvider from './../shared/coreStorageProvider';\nimport MemoryStore from './../memoryStore';\n\n/**\n *\n * @class Storage\n * @extends {CoreStorageProvider}\n * @desc Isomorphic Storage provider implementation. Based on localStorage for browser and Node.\n *\n * @example\n * const storage = new Storage(logger);\n *\n */\nexport default class Storage extends CoreStorageProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n const scope = Util.getScope();\n const hasLocalStorage = typeof scope.localStorage !== 'undefined' && scope.localStorage !== null;\n const storeMessage = hasLocalStorage ? 'Using native localStorage.' : 'Using MemoryStore instance.';\n\n super(logger);\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc storage reference, uses the global local storage\n * instance (if available), falls back to a plain Object implementation\n *\n */\n this.store = hasLocalStorage ? scope.localStorage : new MemoryStore();\n\n this.logger.log('Storage', 'Created Isomorphic Provider.');\n this.logger.info('Storage', storeMessage);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/isomorphic/storage.js","/**\n *\n * @module storage\n * @see http://developer.samsung.com/tv/develop/legacy-platform-library/ref00001/openCommonFile\n *\n */\n\n/* global FileSystem */\n/* global curWidget */\n\nimport Check from 'check-types';\nimport Util from './../../../util/entry';\nimport Logging from './../../../../logging/entry';\nimport CoreStorageProvider from './../../shared/coreStorageProvider';\nimport Exception from './../../../exception/entry';\n\nconst ProviderException = Exception.ProviderException;\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n assigned\n} = Check.assert;\n\n/**\n *\n * @class Storage\n * @extends {CoreStorageProvider}\n * @desc Samsung Orsay Storage provider implementation.\n * @note this will create an app directory locally on the device if it doesn't exist\n * @note curWidget should be available globally on Samsung Orsay\n *\n * @example\n * const storage = new Storage(logger);\n *\n */\nexport default class Storage extends CoreStorageProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @throws {ProviderException}\n *\n */\n constructor(logger = Logging) {\n\n const errorMessage = {\n ctor: 'Storage(logger)',\n get fileSystem() {\n return `${this.ctor} expected FileSystem instance`;\n },\n get curWidget() {\n return `${this.ctor} expected curWidget instance`;\n }\n };\n\n const scope = Util.getScope();\n const fileSystemInstance = (function fileSystemInstance() {\n return Check.assigned(scope)\n && Check.assigned(scope.FileSystem)\n && Check.function(new scope.FileSystem().openCommonFile);\n }());\n\n const curWidgetInstance = (function curWidgetInstance() {\n return Check.assigned(scope)\n && Check.assigned(scope.curWidget)\n && Check.assigned(scope.curWidget.id);\n }());\n\n Check.assert(\n fileSystemInstance,\n errorMessage.fileSystem,\n ProviderException\n );\n\n Check.assert(\n curWidgetInstance,\n errorMessage.curWidget,\n ProviderException\n );\n\n const fileSystem = new scope.FileSystem();\n const widgetId = scope.curWidget.id;\n\n /**\n *\n * @note creates app directory if it doesn't exist\n *\n */\n if (!fileSystem.isValidCommonPath(widgetId)) {\n fileSystem.createCommonDir(widgetId);\n }\n\n super(logger);\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.fileSystem = fileSystem;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.fileName = 'bam-sdk.db';\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.samsungFileName = `${widgetId}/${this.fileName}`;\n\n const fileStorage = this.samsungLocalStore();\n const hasFileStorage = Check.assigned(fileStorage);\n const storeMessage = hasFileStorage ? 'Reading existing file storage.' : 'Creating new file storage';\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc storage reference\n *\n */\n this.store = fileStorage || {};\n\n this.logger.log('Storage', 'Created Samsung Orsay Provider.');\n this.logger.info('Storage', storeMessage);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {String} signature - the current active method signature\n * @param {String} key - Storage key reference\n * @param {*} value - value to store with key\n * @returns {Promise<*>}\n *\n */\n op(signature, key, value) {\n\n const errorMessage = {\n get operationError() {\n return `${signature} cannot complete successfully`;\n },\n get keyError() {\n return `${signature} key should be a String with length`;\n },\n get keyMissingWarning() {\n return `${signature} reference cache key \"${key}\" does not exist`;\n },\n get valueParseError() {\n return `${signature} unable to parse value`;\n },\n get storeError() {\n return `${signature} missing expected store reference`;\n }\n };\n\n const operation = signature.slice(signature.indexOf('.') + 1, signature.indexOf('('));\n const isClear = Check.equal(operation, 'clear');\n const isRemove = Check.equal(operation, 'remove');\n\n const store = this.store;\n\n assigned(store, errorMessage.storeError, ProviderException);\n\n return new Promise((resolve, reject) => {\n\n const { logger, storedKeys } = this;\n\n /**\n *\n * @desc verify key validity for all operations except clear\n *\n */\n if (Check.equal(isClear, false) && (Check.not.string(key) || Check.emptyString(key))) {\n return reject(new InvalidArgumentException(errorMessage.keyError));\n }\n\n /**\n *\n * @desc process given operation\n * @note all items set in Storage are expected to be stringified values\n * @note JSON operations are processed in a try...catch\n * @note if a given key is not found, fail silently and display warning\n *\n */\n try {\n\n if (isClear) {\n\n // remove all known keys\n storedKeys.map((keyInStorage) => {\n return delete store[keyInStorage];\n });\n\n this.saveSamsungLocalStorage();\n\n return resolve();\n\n }\n\n if (isRemove) {\n\n // remove item and key from reference\n storedKeys.splice(storedKeys.indexOf(key), 1);\n\n delete store[key];\n this.saveSamsungLocalStorage();\n\n return resolve();\n\n } else if (Check.not.undefined(value)) {\n\n // set item if valid value provided\n // stringify before updating stored keys reference for accuracy\n const val = JSON.stringify(value);\n\n storedKeys.push(key);\n\n store[key] = val;\n this.saveSamsungLocalStorage();\n\n return resolve();\n\n } else {\n\n // if valid value not provided, attempt to get cached item\n try {\n\n const item = store[key];\n\n if (Check.not.assigned(item)) {\n logger.warn('Storage', errorMessage.keyMissingWarning);\n return resolve();\n }\n\n return resolve(JSON.parse(item));\n\n } catch (error) {\n\n return reject(new InvalidArgumentException(`${errorMessage.valueParseError} - ${error}`));\n\n }\n\n }\n\n } catch (error) {\n\n return reject(new ProviderException(`${errorMessage.operationError} - ${error}`));\n\n }\n\n });\n\n }\n\n /**\n *\n * @access private\n * @desc write to Samsung filesystem\n *\n */\n saveSamsungLocalStorage() {\n\n const fileObj = this.fileSystem.openCommonFile(this.samsungFileName, 'w');\n\n fileObj.writeAll(JSON.stringify(this.store));\n\n this.fileSystem.closeCommonFile(fileObj);\n\n }\n\n /**\n *\n * @access private\n * @desc Reads from the local Samsung file system in order to fetch stored data.\n * If no file reference is found, returns null to signify the need for fallback logic.\n * @returns {Object|null}\n *\n */\n samsungLocalStore() {\n\n try {\n\n // r+ : Open a file for update (both reading and writing). The file must exist.\n const fileObj = this.fileSystem.openCommonFile(this.samsungFileName, 'r+');\n\n if (Check.assigned(fileObj)) {\n\n this.logger.log('Storage', 'Common file found, fetching cached data.');\n\n const dataStr = fileObj.readAll();\n\n this.fileSystem.closeCommonFile(fileObj);\n\n return JSON.parse(dataStr);\n\n }\n\n return null;\n\n } catch (error) {\n\n this.logger.error('Storage', `Failed to read file ${error}`);\n\n return null;\n\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/samsung/orsay/storage.js","/**\n *\n * @module storage\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../../../logging/entry';\nimport CoreStorageProvider from './../../shared/coreStorageProvider';\nimport Exception from './../../../exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ProviderException = Exception.ProviderException;\n\nconst {\n assigned\n} = Check.assert;\n\n/**\n *\n * @class Storage\n * @extends {CoreStorageProvider}\n * @desc Trilithium Storage provider implementation.\n *\n * @example\n * const storage = new Storage(logger);\n *\n */\nexport default class Storage extends CoreStorageProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @throws {ProviderException}\n *\n */\n constructor(logger = Logging) {\n\n const errorMessage = {\n ctor: 'Storage(logger)',\n get localStorage() {\n return `${this.ctor} expected global.engine.storage.local instance`;\n }\n };\n\n const localStorageInstance = (function localStorageInstance() {\n return Check.assigned(global)\n && Check.assigned(global.engine)\n && Check.assigned(global.engine.storage)\n && Check.assigned(global.engine.storage.local);\n }());\n\n Check.assert(localStorageInstance, errorMessage.localStorage, ProviderException);\n\n super(logger);\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc storage reference\n *\n */\n this.store = global.engine.storage.local;\n\n this.logger.log('Storage', 'Created Trilithium Provider.');\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {String} signature - the current active method signature\n * @param {String} key - Storage key reference\n * @param {*} value - value to store with key\n * @throws {InvalidArgumentException}\n * @throws {ProviderException}\n * @returns {Promise<*>}\n *\n */\n op(signature, key, value) {\n\n const errorMessage = {\n get operationError() {\n return `${signature} cannot complete successfully`;\n },\n get keyError() {\n return `${signature} key should be a String with length`;\n },\n get keyMissingWarning() {\n return `${signature} reference cache key \"${key}\" does not exist`;\n },\n get valueParseError() {\n return `${signature} unable to parse value`;\n },\n get storeError() {\n return `${signature} missing expected store reference`;\n }\n };\n\n const operation = signature.slice(signature.indexOf('.') + 1, signature.indexOf('('));\n const isClear = Check.equal(operation, 'clear');\n const isRemove = Check.equal(operation, 'remove');\n\n const store = this.store;\n\n assigned(store, errorMessage.storeError, ProviderException);\n\n return new Promise((resolve, reject) => {\n\n const { logger, storedKeys } = this;\n\n /**\n *\n * @desc verify key validity for all operations except clear\n *\n */\n if (Check.equal(isClear, false) && (Check.not.string(key) || Check.emptyString(key))) {\n return reject(new InvalidArgumentException(errorMessage.keyError));\n }\n\n /**\n *\n * @desc process given operation\n * @note all items set in Storage are expected to be stringified values\n * @note JSON operations are processed in a try...catch\n * @note if a given key is not found, fail silently and display warning\n *\n */\n try {\n\n if (isClear) {\n\n // remove all known keys\n storedKeys.map((keyInStorage) => {\n return delete store[keyInStorage];\n });\n\n return resolve();\n\n }\n\n if (isRemove) {\n\n // remove item and key from reference\n storedKeys.splice(storedKeys.indexOf(key), 1);\n\n delete store[key];\n\n return resolve();\n\n } else if (Check.not.undefined(value)) {\n\n // set item if valid value provided\n // stringify before updating stored keys reference for accuracy\n const val = JSON.stringify(value);\n\n storedKeys.push(key);\n\n store[key] = val;\n\n return resolve();\n\n } else {\n\n // if valid value not provided, attempt to get cached item\n try {\n\n const item = store[key];\n\n if (Check.not.assigned(item)) {\n logger.warn('Storage', errorMessage.keyMissingWarning);\n return resolve();\n }\n\n return resolve(JSON.parse(item));\n\n } catch (error) {\n\n return reject(new InvalidArgumentException(`${errorMessage.valueParseError} - ${error}`));\n\n }\n\n }\n\n } catch (error) {\n\n return reject(new ProviderException(`${errorMessage.operationError} - ${error}`));\n\n }\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/platforms/sony/trilithium/storage.js","/**\n *\n * @module subscriptionApi\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/subscription.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/SubscriptionApi.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport SubscriptionManager from './subscriptionManager';\n\nconst Util = Services.Util;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst SubscriptionApiDustUrnReference = Services.Internal.Dust.DustUrnReference.subscription.subscriptionApi;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class SubscriptionApi\n * @desc Provides ability to access the subscriptions that are available and associated with an account.\n *\n */\nexport default class SubscriptionApi {\n\n /**\n *\n * @param {SubscriptionManager} subscriptionManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(subscriptionManager, logger = Logging) {\n\n const errorMessage = {\n ctor: 'SubscriptionApi(subscriptionManager, logger)',\n get subscriptionManager() {\n return `${this.ctor} needs SubscriptionManager instance`;\n }\n };\n\n instanceStrict(subscriptionManager, SubscriptionManager, errorMessage.subscriptionManager, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @type {SubscriptionManager}\n *\n */\n this.subscriptionManager = subscriptionManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => this.subscriptionManager.client.dustEnabled);\n\n this.logger.info(SubscriptionApi.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @desc Gets the list of Subscriptions associated with the current account.\n * @returns {Promise>} A promise that completes when the\n * operation has succeeded and returns the requested subscriptions.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n *\n */\n getSubscriptions() {\n\n const { dustEnabled, logger, subscriptionManager } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: SubscriptionApi.name,\n urn: SubscriptionApiDustUrnReference.getSubscriptions\n });\n\n return subscriptionManager.getSubscriptions().catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/subscription/subscriptionApi.js","var map = {\n\t\"./apple/geoProvider\": 600,\n\t\"./browser/geoProvider\": 601,\n\t\"./node/geoProvider\": 602,\n\t\"./sony/trilithium/geoProvider\": 603\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 599;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/platforms ^\\.\\/.*\\/geoProvider$\n// module id = 599\n// module chunks = 0","/**\n *\n * @module geoProvider\n * @desc ATV GeoProvider\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport GeoLocation from './../../token/geoLocation';\nimport Exception from './../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n number\n} = Check.assert;\n\n/**\n *\n * @class GeoProvider\n * @desc Defines the contract for a class that can provide the current GeoLocation of the device.\n * @todo\n *\n */\nexport default class GeoProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.log(GeoProvider.name, 'Created GeoProvider.');\n\n }\n\n /**\n *\n * @access public\n * @method getGeoLocation\n * @param {Number} [timeout]\n * @returns {GeoLocation}\n *\n */\n getGeoLocation(timeout) {\n\n const errorMessage = {\n method: 'GeoProvider.getGeoLocation(timeout)',\n get timeout() {\n return `${this.method} timeout should be a Float`;\n }\n };\n\n if (Check.assigned(timeout)) {\n number(timeout, errorMessage.timeout, InvalidArgumentException);\n }\n\n return new Promise((resolve) => {\n return resolve(new GeoLocation(0, 0));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/platforms/apple/geoProvider.js","/**\n *\n * @module geoProvider\n * @desc HTML5 GeoProvider\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport GeoLocation from './../../token/geoLocation';\nimport Exception from './../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n number\n} = Check.assert;\n\n/**\n *\n * @class GeoProvider\n * @desc Defines the contract for a class that can provide the current GeoLocation of the device.\n * @todo\n *\n */\nexport default class GeoProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.log(GeoProvider.name, 'Created GeoProvider.');\n\n }\n\n /**\n *\n * @access public\n * @method getGeoLocation\n * @param {Number} [timeout]\n * @returns {GeoLocation}\n *\n */\n getGeoLocation(timeout) {\n\n const errorMessage = {\n method: 'GeoProvider.getGeoLocation(timeout)',\n get timeout() {\n return `${this.method} timeout should be a Float`;\n }\n };\n\n if (Check.assigned(timeout)) {\n number(timeout, errorMessage.timeout, InvalidArgumentException);\n }\n\n return new Promise((resolve) => {\n return resolve(new GeoLocation(0, 0));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/platforms/browser/geoProvider.js","/**\n *\n * @module geoProvider\n * @desc Node.js GeoProvider\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport GeoLocation from './../../token/geoLocation';\nimport Exception from './../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n number\n} = Check.assert;\n\n/**\n *\n * @class GeoProvider\n * @desc Defines the contract for a class that can provide the current GeoLocation of the device.\n * @todo\n *\n */\nexport default class GeoProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.log(GeoProvider.name, 'Created GeoProvider.');\n\n }\n\n /**\n *\n * @access public\n * @method getGeoLocation\n * @param {Number} [timeout]\n * @returns {GeoLocation}\n *\n */\n getGeoLocation(timeout) {\n\n const errorMessage = {\n method: 'GeoProvider.getGeoLocation(timeout)',\n get timeout() {\n return `${this.method} timeout should be a Float`;\n }\n };\n\n if (Check.assigned(timeout)) {\n number(timeout, errorMessage.timeout, InvalidArgumentException);\n }\n\n return new Promise((resolve) => {\n return resolve(new GeoLocation(0, 0));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/platforms/node/geoProvider.js","/**\n *\n * @module geoProvider\n * @desc Trilithium GeoProvider\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../../logging/entry';\nimport GeoLocation from './../../../token/geoLocation';\nimport Exception from './../../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n number\n} = Check.assert;\n\n/**\n *\n * @class GeoProvider\n * @desc Defines the contract for a class that can provide the current GeoLocation of the device.\n * @todo\n *\n */\nexport default class GeoProvider {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.log(GeoProvider.name, 'Created GeoProvider.');\n\n }\n\n /**\n *\n * @access public\n * @method getGeoLocation\n * @param {Number} [timeout]\n * @returns {GeoLocation}\n *\n */\n getGeoLocation(timeout) {\n\n const errorMessage = {\n method: 'GeoProvider.getGeoLocation(timeout)',\n get timeout() {\n return `${this.method} timeout should be a Float`;\n }\n };\n\n if (Check.assigned(timeout)) {\n number(timeout, errorMessage.timeout, InvalidArgumentException);\n }\n\n return new Promise((resolve) => {\n return resolve(new GeoLocation(0, 0));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/platforms/sony/trilithium/geoProvider.js","/**\n *\n * @module tokenManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/token.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Access from './access';\nimport AccessState from './accessState';\nimport AccessStateData from './accessStateData';\nimport AccessStorage from './accessStorage';\nimport AccessToken from './accessToken';\nimport AccessTokenProvider from './accessTokenProvider';\nimport AccessContextState from './accessContextState';\nimport TokenRefreshFailure from './tokenRefreshFailure';\nimport Device from './../device/entry';\nimport GeoProvider from './../platforms/geoProvider';\n\nconst DeviceManager = Device.DeviceManager;\nconst Util = Services.Util;\nconst DeviceGrant = Services.Token.DeviceGrant;\nconst RefreshGrant = Services.Token.RefreshGrant;\nconst ExchangeGrant = Services.Token.ExchangeGrant;\nconst Grant = Services.Token.Grant;\nconst TokenClient = Services.Token.TokenClient;\nconst TokenRequestBuilder = Services.Token.TokenRequestBuilder;\nconst TokenManagerConfiguration = Services.Configuration.TokenManagerConfiguration;\n\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ErrorReason = Services.Exception.ErrorReason;\n\nconst {\n boolean,\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class TokenManager\n * @extends {IAccessTokenProvider}\n * @implements {IAccessTokenUpdater}\n * @see https://nodejs.org/api/events.html\n * @desc Manages the current AccessContext, allows tokens to be exchanged to get a new AccessContext\n * and auto refreshes the AccessContext before it expires.\n *\n */\nexport default class TokenManager extends AccessTokenProvider {\n\n /**\n *\n * @param {String} apiKey\n * @param {SDK.Services.Configuration.TokenManagerConfiguration} tokenManagerConfiguration\n * @param {SDK.Services.Token.TokenClient} tokenClient\n * @param {GeoProvider} [geoProvider=null]\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {AccessStorage} accessStorage\n * @param {SDK.Device.DeviceManager} deviceManager\n * @param {String} versionShort\n *\n */\n constructor(apiKey, tokenManagerConfiguration, tokenClient, geoProvider = null,\n logger = Logging, accessStorage, deviceManager, versionShort) {\n\n const errorMessage = {\n ctor: `TokenManager(apiKey, tokenManagerConfiguration, tokenClient, geoProvider, logger, accessStorage, deviceManager, versionShort)`, // eslint-disable-line\n get apiKey() {\n return `${this.ctor} apiKey should be a String with length`;\n },\n get tokenManagerConfiguration() {\n return `${this.ctor} needs SDK.Services.Configuration.TokenManagerConfiguration instance`;\n },\n get tokenClient() {\n return `${this.ctor} needs SDK.Services.Token.TokenClient instance`;\n },\n get geoProvider() {\n return `${this.ctor} needs GeoProvider instance`;\n },\n get accessStorage() {\n return `${this.ctor} needs AccessStorage instance`;\n },\n get deviceManager() {\n return `${this.ctor} needs SDK.Device.DeviceManager instance`;\n },\n get versionShort() {\n return `${this.ctor} versionShort should be a String with length`;\n }\n };\n\n nonEmptyString(apiKey, errorMessage.apiKey, InvalidArgumentException);\n instanceStrict(tokenManagerConfiguration, TokenManagerConfiguration, errorMessage.tokenManagerConfiguration, InvalidArgumentException); // eslint-disable-line\n instanceStrict(tokenClient, TokenClient, errorMessage.tokenClient, InvalidArgumentException);\n\n if (Check.assigned(geoProvider)) {\n instanceStrict(geoProvider, GeoProvider, errorMessage.geoProvider, InvalidArgumentException);\n }\n\n instanceStrict(accessStorage, AccessStorage, errorMessage.accessStorage, InvalidArgumentException);\n instanceStrict(deviceManager, DeviceManager, errorMessage.deviceManager, InvalidArgumentException);\n nonEmptyString(versionShort, errorMessage.versionShort, InvalidArgumentException);\n\n super();\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.apiKey = apiKey;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.TokenManagerConfiguration}\n *\n */\n this.config = tokenManagerConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Token.TokenClient}\n *\n */\n this.client = tokenClient;\n\n /**\n *\n * @access private\n * @type {GeoProvider}\n *\n */\n this.geoProvider = geoProvider || new GeoProvider(logger);\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {AccessStorage}\n *\n */\n this.storage = accessStorage;\n\n /**\n *\n * @access private\n * @type {SDK.Device.DeviceManager}\n *\n */\n this.deviceManager = deviceManager;\n\n /**\n *\n * @access private\n * @type {Number} timeout ID or -1\n *\n */\n this.refreshTimeoutId = -1;\n\n /**\n *\n * @access private\n * @type {Number}\n * @desc retry counter for access token refresh\n *\n */\n this.retryAttempt = 0;\n\n /**\n *\n * @access private\n * @type {Number} timeout ID or -1\n *\n */\n this.retryDelay = -1;\n\n /**\n *\n * @access private\n * @type {Number}\n * @desc retry counter for device grant reset\n *\n */\n this.deviceGrantResetRetry = 0;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.deviceGrantResetMaxAttempts = 5;\n\n /**\n *\n * @access private\n * @type {String}\n * @since 3.2.0\n * @desc The shortened version String, without the build SHA.\n * @example '4.2'\n *\n */\n this.versionShort = versionShort;\n\n this.logger.log(TokenManager.name, 'Created');\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.Grant} grant\n * @param {AccessContextState} accessContextState\n * @desc Exchanges a grant for an access token.\n * @returns {Promise}\n *\n */\n exchangeGrant(grant, accessContextState) {\n\n const errorMessage = {\n method: 'TokenManager.exchangeGrant(grant, accessContextState)',\n get grant() {\n return `${this.method} needs Grant instance`;\n },\n get accessContextState() {\n return `${this.method} needs AccessContextState instance`;\n }\n };\n\n instanceStrict(grant, Grant, errorMessage.grant, InvalidArgumentException);\n instanceStrict(accessContextState, AccessContextState, errorMessage.accessContextState, InvalidArgumentException); // eslint-disable-line\n\n const { config } = this;\n const subjectTokenType = Util.getSafe(() => config.extras.subjectTokenTypes[grant.subjectTokenTypeKey]);\n const exchangeGrant = new ExchangeGrant(grant, subjectTokenType);\n\n return this.exchangeRequest(exchangeGrant, accessContextState);\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.TokenRequestBuilder} tokenRequestBuilder\n * @param {AccessContextState} accessContextState\n * @returns {Promise}\n *\n */\n exchangeRequest(tokenRequestBuilder, accessContextState) {\n\n const errorMessage = {\n method: 'TokenManager.exchangeRequest(tokenRequestBuilder, accessContextState)',\n get tokenRequestBuilder() {\n return `${this.method} needs SDK.Services.Token.TokenRequestBuilder instance`;\n },\n get accessContextState() {\n return `${this.method} needs AccessContextState instance`;\n }\n };\n\n instanceStrict(tokenRequestBuilder, TokenRequestBuilder, errorMessage.tokenRequestBuilder, InvalidArgumentException); // eslint-disable-line\n instanceStrict(accessContextState, AccessContextState, errorMessage.accessContextState, InvalidArgumentException); // eslint-disable-line\n\n const { apiKey, client, deviceManager } = this;\n\n return this.geoProvider.getGeoLocation().then((geoLocation) => {\n\n const { latitude, longitude } = geoLocation;\n\n return tokenRequestBuilder.build(latitude, longitude);\n\n }).then((tokenRequest) => {\n\n return client.exchange(tokenRequest, apiKey);\n\n }).then((accessContext) => {\n\n return this.processAccess(accessContext, accessContextState);\n\n }).catch((exception) => {\n\n const { deviceGrantResetRetry, deviceGrantResetMaxAttempts } = this;\n\n const errorCode = Util.getSafe(() => exception.reasons[0].code);\n const isDeviceGrant = Check.instanceStrict(tokenRequestBuilder.grant, DeviceGrant);\n const isInvalid = Check.equal(errorCode, 'invalid_grant');\n\n // process invalid grants or simply fail through with the exception\n if (isInvalid) {\n\n // current grant is invalid, clear out the stored device grant\n return deviceManager.deviceGrantStorage.clear().then(() => {\n\n // process the provided device grant, a new device grant (anon session)\n // will be established to replace the current invalid device grant\n if (isDeviceGrant) {\n\n // the number of attempts is capped to prevent a recursive failure loop\n if (deviceGrantResetRetry > deviceGrantResetMaxAttempts) {\n return Promise.reject(exception);\n }\n\n this.deviceGrantResetRetry++;\n\n // establish a new device grant, clear out the reset retry counter on success\n return deviceManager.createDeviceGrant().then((deviceGrant) => {\n\n return this.reset(deviceGrant);\n\n }).then(() => {\n\n this.deviceGrantResetRetry = 0;\n\n this.emit('TokenRefreshFailed', new TokenRefreshFailure(exception));\n\n return Promise.resolve();\n\n });\n\n }\n\n return Promise.reject(exception);\n\n });\n\n }\n\n return Promise.reject(exception);\n\n });\n\n }\n\n /**\n *\n * @access private\n * @desc Gets the access state of the user in a format that can be\n * used to rebuild the state in an external system.\n * @returns {AccessState}\n *\n */\n getAccessState() {\n\n const { storage, versionShort } = this;\n const access = storage.getAccess();\n\n return new AccessState(\n versionShort,\n new AccessStateData(\n Util.getSafe(() => access.context.token),\n Util.getSafe(() => access.context.refreshToken),\n Util.getSafe(() => access.contextState)\n )\n );\n\n }\n\n /**\n *\n * @access private\n * @param {Boolean} [force=false] - Forces a refresh regardless of the token's current expiration\n * @desc Refreshes the access token if it is about to expire\n * @note Ensure a proper Access is available before executing logic\n * @note The refreshToken is recast, however the contextState is not because it\n * is always expected to be a instance of AccessContextState at this point\n * @returns {Promise}\n *\n */\n refreshAccessToken(force = false) {\n\n const errorMessage = {\n method: 'TokenManager.refreshAccessToken(force)',\n get force() {\n return `${this.method} force should be a Boolean`;\n }\n };\n\n boolean(force, errorMessage.force, InvalidArgumentException);\n\n const { config, storage, deviceManager } = this;\n const access = storage.getAccess();\n\n if (Check.instanceStrict(access, Access)) {\n\n let refresh = force;\n\n if (!force) {\n\n const timeToRefresh = config.extras.refreshThreshold * (access.context.expiresIn * 1000);\n const refreshAt = (access.context.issuedAt) + timeToRefresh;\n\n if (Date.now() >= refreshAt) {\n refresh = true;\n }\n\n }\n\n if (refresh) {\n\n const refreshGrant = new RefreshGrant(access.context.refreshToken);\n\n // exchange the grant, process failures if necessary\n return this.exchangeRequest(refreshGrant, access.contextState).catch((exception) => {\n\n const deviceGrantStorage = deviceManager.deviceGrantStorage;\n const storedDeviceGrant = deviceGrantStorage.getDeviceGrant();\n\n // device grant is not stored, establish a new device grant (anon session)\n // note that a device grant must always be established\n if (Check.not.assigned(storedDeviceGrant)) {\n\n const { deviceGrantResetRetry, deviceGrantResetMaxAttempts } = this;\n\n // the number of attempts is capped to prevent a recursive failure loop\n if (deviceGrantResetRetry > deviceGrantResetMaxAttempts) {\n return Promise.reject(exception);\n }\n\n this.deviceGrantResetRetry++;\n\n // establish a new device grant, clear out the reset retry counter on success\n return deviceManager.createDeviceGrant().then((deviceGrant) => {\n\n return this.reset(deviceGrant);\n\n }).then(() => {\n\n this.deviceGrantResetRetry = 0;\n\n this.emit('TokenRefreshFailed', new TokenRefreshFailure(exception));\n\n return Promise.resolve();\n\n });\n\n }\n\n return Promise.reject(exception);\n\n });\n\n }\n\n return Promise.resolve();\n\n }\n\n const reasons = [new ErrorReason('', 'A successful token exchange is required before refresh is allowed')];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @param {Grant} grant - An object that is capable for providing all the data needed to perform a token exchange.\n * @desc Exchanges a grant for an access token and starts the auto refresh timer.\n * @returns {Promise}\n *\n */\n reset(grant) {\n\n const accessContextState = new AccessContextState();\n\n this.clearRetryRefresh();\n\n return this.exchangeGrant(grant, accessContextState);\n\n }\n\n /**\n *\n * @access private\n * @param {String} accessState - The serialized state retrieved via SdkSession#getAccessState\n * could be retrieved from another device, instance, etc...\n * @desc Exchanges a grant for an access token and starts the auto refresh timer.\n * @returns {Promise}\n *\n */\n restoreAccessState(accessState) {\n\n const errorMessage = {\n method: 'TokenManager.restoreAccessState(accessState)',\n get accessState() {\n return `${this.method} accessState should be a String with length`;\n }\n };\n\n nonEmptyString(accessState, errorMessage.accessState, InvalidArgumentException);\n\n const { data } = JSON.parse(accessState);\n const { refreshToken, contextState } = data;\n\n const refreshGrant = new RefreshGrant(refreshToken);\n const accessContextState = new AccessContextState(contextState.modes);\n\n this.clearRetryRefresh();\n\n return this.exchangeRequest(refreshGrant, accessContextState);\n\n }\n\n /**\n *\n * @access private\n * @param {String} mode - Unique key for a given state.\n * @returns {Promise} A boolean indicating whether or not the access context is set for the given state.\n *\n */\n hasAccessMode(mode) {\n\n const { storage } = this;\n\n const access = storage.getAccess();\n\n if (Check.not.assigned(access)) {\n return Promise.resolve(false);\n }\n\n const accessState = Util.getSafe(() => access.contextState.hasMode(mode), false);\n\n return Promise.resolve(accessState);\n\n }\n\n /**\n *\n * @access private\n * @param {AccessContext} accessContext\n * @param {AccessContextState} accessContextState\n * @emits {AccessChange} The event raised each time a access token is updated.\n * @desc utility function, handles common functionality for exchange\n * @returns {Promise}\n *\n */\n processAccess(accessContext, accessContextState) {\n\n const { logger } = this;\n const access = new Access(accessContext, accessContextState);\n\n return this.storage.saveAccess(access).then(() => {\n\n logger.info(TokenManager.name, 'Dispatch AccessChange event.');\n\n this.emit('AccessChange', new AccessToken(accessContext.token));\n this.enqueueRefresh();\n\n return Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @desc uses setTimeout to enqueue a call to #refreshAccessToken\n *\n */\n enqueueRefresh() {\n\n const { logger, config, storage } = this;\n\n const access = storage.getAccess();\n const now = Date.now();\n\n if (access) {\n\n this.clearRetryRefresh();\n\n const hasAccessContext = Check.assigned(access.context);\n const hasRefreshToken = hasAccessContext && Check.assigned(access.context.refreshToken);\n\n const timeToRefresh = config.extras.refreshThreshold * (access.context.expiresIn * 1000);\n const refreshAt = (access.context.issuedAt) + timeToRefresh;\n const delay = refreshAt - now;\n\n if (!hasRefreshToken) {\n logger.warn(TokenManager.name, 'refreshToken missing, skipping refresh logic.');\n return;\n }\n\n this.retryAttempt = 0;\n this.retryDelay = config.extras.autoRefreshRetryPolicy.retryBasePeriod;\n\n this.refreshTimeoutId = setTimeout(this.retryRefresh.bind(this), delay);\n\n return;\n\n }\n\n const reasons = [new ErrorReason('', 'A successful token exchange is required before refresh is allowed')];\n const exceptionData = ExceptionReference.common.invalidState;\n\n throw new ServiceException({ reasons, exceptionData });\n\n }\n\n /**\n *\n * @access private\n * @desc attempts to retry refreshing access\n * @emits {TokenRefreshFailed} The event raised when automatic token refresh fails.\n * @returns {Promise}\n *\n */\n retryRefresh() {\n\n const { config, logger } = this;\n\n const autoRefreshRetryPolicy = config.extras.autoRefreshRetryPolicy;\n const retryMaxAttempts = autoRefreshRetryPolicy.retryMaxAttempts;\n const retryMultiplier = autoRefreshRetryPolicy.retryMultiplier;\n\n this.clearRetryRefresh();\n\n return this.refreshAccessToken(true).catch((ex) => {\n\n if (this.retryAttempt < retryMaxAttempts) {\n\n this.refreshTimeoutId = setTimeout(this.retryRefresh.bind(this), this.retryDelay);\n this.retryDelay = this.retryDelay * retryMultiplier;\n this.retryAttempt++;\n\n } else {\n\n logger.error(TokenManager.name, 'Token refresh failed.');\n logger.info(TokenManager.name, 'Dispatch TokenRefreshFailed event.');\n\n this.emit('TokenRefreshFailed', new TokenRefreshFailure(ex));\n\n }\n\n });\n\n }\n\n /**\n *\n * @access private\n * @desc cancels all pending actions\n *\n */\n clearRetryRefresh() {\n\n clearTimeout(this.refreshTimeoutId);\n\n this.refreshTimeoutId = -1;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/tokenManager.js","/**\n *\n * @module deviceManager\n * @note it is necessary to import deviceGrantStorage directly to avoid circular dependency\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport DeviceGrantStorage from './../token/deviceGrantStorage';\n\nconst EnvironmentConfiguration = Services.Configuration.EnvironmentConfiguration;\nconst DeviceManagerConfiguration = Services.Configuration.DeviceManagerConfiguration;\nconst DeviceClient = Services.Device.DeviceClient;\nconst DeviceMetadata = Services.Device.DeviceMetadata;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class DeviceManager\n * @extends {DeviceGrantProvider}\n *\n */\nexport default class DeviceManager {\n\n /**\n *\n * @param {String} apiKey\n * @param {SDK.Services.Configuration.DeviceManagerConfiguration} config\n * @param {SDK.Services.Device.DeviceClient} deviceClient\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Token.DeviceGrantStorage} deviceGrantStorage\n * @param {SDK.Services.Configuration.EnvironmentConfiguration} environmentConfiguration\n * @throws {InvalidArgumentException}\n *\n */\n constructor(apiKey, config, deviceClient, logger = Logging, deviceGrantStorage, environmentConfiguration) {\n\n const errorMessage = {\n ctor: 'DeviceManager(apiKey, config, deviceClient, logger, deviceGrantStorage, environmentConfiguration)',\n get apiKey() {\n return `${this.ctor} apiKey should be a String with length`;\n },\n get config() {\n return `${this.ctor} needs SDK.Services.Configuration.DeviceManagerConfiguration instance`;\n },\n get deviceClient() {\n return `${this.ctor} needs SDK.Services.Device.DeviceClient instance`;\n },\n get deviceGrantStorage() {\n return `${this.ctor} needs SDK.Token.DeviceGrantStorage instance`;\n },\n get environmentConfiguration() {\n return `${this.ctor} needs SDK.Services.Configuration.EnvironmentConfiguration instance`;\n }\n };\n\n nonEmptyString(apiKey, errorMessage.apiKey, InvalidArgumentException);\n instanceStrict(config, DeviceManagerConfiguration, errorMessage.config, InvalidArgumentException);\n instanceStrict(deviceClient, DeviceClient, errorMessage.deviceClient, InvalidArgumentException);\n instanceStrict(deviceGrantStorage, DeviceGrantStorage, errorMessage.deviceGrantStorage, InvalidArgumentException); // eslint-disable-line\n instanceStrict(environmentConfiguration, EnvironmentConfiguration, errorMessage.environmentConfiguration, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.apiKey = apiKey;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.DeviceManagerConfiguration}\n *\n */\n this.config = config;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Device.DeviceClient}\n *\n */\n this.client = deviceClient;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n * @memberof {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Token.DeviceGrantStorage}\n *\n */\n this.deviceGrantStorage = deviceGrantStorage;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.EnvironmentConfiguration}\n *\n */\n this.environmentConfiguration = environmentConfiguration;\n\n this.logger.log(DeviceManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @returns {Promise}\n *\n */\n getDeviceGrant() {\n\n const deviceGrant = this.deviceGrantStorage.getDeviceGrant();\n\n if (Check.assigned(deviceGrant)) {\n return Promise.resolve(deviceGrant);\n }\n\n return this.createDeviceGrant();\n\n }\n\n /**\n *\n * @access private\n * @desc Create a new device grant. It should only be called if there\n * is no stored device grant\n * @returns {Promise}\n *\n */\n createDeviceGrant() {\n\n const { apiKey, client, deviceGrantStorage } = this;\n const { logger, environmentConfiguration } = this;\n const { deviceFamily, applicationRuntime, deviceProfile } = environmentConfiguration;\n\n const deviceMetadata = new DeviceMetadata(\n deviceFamily,\n applicationRuntime,\n deviceProfile\n );\n\n return client.createDeviceGrant(deviceMetadata, apiKey).then((deviceGrant) => {\n\n logger.info(DeviceManager.name, 'DeviceGrant Created');\n\n return deviceGrantStorage.saveDeviceGrant(deviceGrant).then(() => {\n return Promise.resolve(deviceGrant);\n });\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/device/deviceManager.js","/**\n *\n * @module accessTokenUpdater\n *\n */\n\n/**\n *\n * @class AccessTokenUpdater\n *\n */\nexport default class AccessTokenUpdater {\n\n /**\n *\n * @access private\n * @param {Boolean} [force=false] - Forces a refresh regardless of the token's current expiration\n * @desc Refreshes the access token if it is about to expire\n * @returns {Promise}\n *\n */\n refreshAccessToken(force = false) { // eslint-disable-line\n\n return new Promise((resolve, reject) => {\n return reject(new Error('not-implemented'));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/accessTokenUpdater.js","/**\n *\n * @module identityTokenStorage\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\n\nconst Util = Services.Util;\nconst Storage = Services.Storage;\nconst IdentityToken = Services.Token.IdentityToken;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class IdentityTokenStorage\n * @desc Provides a storage mechanism for storing the IdentityToken.\n * @since 3.2.0\n *\n */\nexport default class IdentityTokenStorage {\n\n /**\n *\n * @param {String} clientId\n * @param {String} environment\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Services.Storage} [storage=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(clientId, environment, logger = Logging, storage = null) {\n\n const errorMessage = {\n ctor: 'IdentityTokenStorage(clientId, environment, logger, storage)',\n get clientId() {\n return `${this.ctor} clientId should be a String with length`;\n },\n get environment() {\n return `${this.ctor} needs environment String`;\n },\n get storage() {\n return `${this.ctor} needs SDK.Services.Storage instance`;\n }\n };\n\n nonEmptyString(clientId, errorMessage.clientId, InvalidArgumentException);\n nonEmptyString(environment, errorMessage.environment, InvalidArgumentException);\n\n if (Check.assigned(storage)) {\n instanceStrict(storage, Storage, errorMessage.storage, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.clientId = clientId;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.environment = environment;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Storage}\n *\n */\n this.storage = storage || new Storage(this.logger);\n\n /**\n *\n * @access private\n * @type {SDK.Services.Token.IdentityToken|Null}\n *\n */\n this.identityToken = null;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc cache key scoped under client ID and environment to prevent clashes,\n * maintains the same structure as all other cacheKey(s) in the SDK\n *\n */\n this.cacheKey = `\n __bam_sdk_identity_bam_identityToken--${this.clientId}_${this.environment}\n `.replace(/(?:\\n\\s+)/g, '');\n\n this.logger.log(IdentityTokenStorage.name, 'Created.');\n\n /**\n *\n * @note attempt to fetch IdentityToken from the {SDK.Services.Storage} implementation\n *\n */\n this.getIdentityTokenFromStorage();\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.IdentityToken} identityToken\n * @desc attempts to store an IdentityToken via the Storage API\n * @returns {Promise}\n *\n */\n saveIdentityToken(identityToken) {\n\n const errorMessage = {\n method: 'IdentityTokenStorage.saveIdentityToken(identityToken)',\n get identityToken() {\n return `${this.method} needs SDK.Services.Token.IdentityToken instance`;\n }\n };\n\n instanceStrict(identityToken, IdentityToken, errorMessage.identityToken, InvalidArgumentException);\n\n const { cacheKey, logger, storage } = this;\n\n logger.info(IdentityTokenStorage.name, `Save IdentityToken to Storage using key: \"${cacheKey}\".`);\n\n this.identityToken = identityToken;\n\n return storage.set(cacheKey, this.identityToken);\n\n }\n\n /**\n *\n * @access private\n * @desc returns an IdentityToken\n * @returns {SDK.Services.Token.IdentityToken}\n *\n */\n getIdentityToken() {\n\n const { logger } = this;\n\n logger.info(IdentityTokenStorage.name, 'Get cached IdentityToken.');\n\n return this.identityToken;\n\n }\n\n /**\n *\n * @access private\n * @desc deletes the current IdentityToken from Storage\n * @returns {Promise}\n *\n */\n clear() {\n\n const { cacheKey, logger, storage } = this;\n\n logger.warn(IdentityTokenStorage.name, `Clearing cached IdentityToken for key: \"${cacheKey}\".`);\n\n this.identityToken = null;\n\n return storage.remove(cacheKey);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc executed a single time on IdentityTokenStorage instantiation\n * checks Storage to determine if IdentityToken was previously stored,\n * should fail silently if no IdentityToken found\n * @returns {Promise}\n *\n */\n getIdentityTokenFromStorage() {\n\n const { cacheKey, logger, storage } = this;\n\n logger.info(IdentityTokenStorage.name, `Get IdentityToken from Storage using cache key: \"${cacheKey}\".`);\n\n return storage.get(cacheKey).catch(() => {\n\n return Promise.resolve(this.identityToken);\n\n }).then((identityTokenFromStorage) => {\n\n const token = Util.getSafe(() => identityTokenFromStorage.token);\n const expiresIn = Util.getSafe(() => identityTokenFromStorage.expiresIn);\n const issuedAt = Util.getSafe(() => identityTokenFromStorage.issuedAt);\n const securityAction = Util.getSafe(() => identityTokenFromStorage.securityAction);\n\n if (Check.assigned(token)) {\n this.identityToken = new IdentityToken({ token, expiresIn, issuedAt, securityAction });\n }\n\n return Promise.resolve(this.identityToken);\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/token/identityTokenStorage.js","/**\n *\n * @module gender\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef Gender\n * @type {Object}\n * @desc Specifies the gender assigned to the account.\n * @example Gender.female // 'female'\n *\n * @property {String} female\n * @property {String} male\n * @property {String} unspecified\n *\n */\n\n/**\n *\n * @enum\n * @type {Gender}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @type {String}\n *\n */\n female: null,\n /**\n *\n * @type {String}\n *\n */\n male: null,\n /**\n *\n * @type {String}\n *\n */\n unspecified: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/account/gender.js","/**\n *\n * @module commerceApi\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/CommerceApi.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/commerce.md\n *\n */\n\nimport Check from 'check-types';\n\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\n\nimport CardPaymentMethodResponse from './cardPaymentMethodResponse';\nimport CommerceManager from './commerceManager';\nimport PaymentMethodInformation from './paymentMethodInformation';\nimport PaymentMethodResponse from './paymentMethodResponse';\nimport PriceOrderRequest from './priceOrderRequest';\nimport PriceOrderResponse from './priceOrderResponse';\nimport SubmitOrderWithPaymentMethodRequest from './submitOrderWithPaymentMethodRequest';\n\nconst Util = Services.Util;\n\nconst TokenManager = Token.TokenManager;\n\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst CommerceApiDustUrnReference = Services.Internal.Dust.DustUrnReference.commerce.commerceApi;\n\nconst CreatePaymentMethodRequest = Services.Commerce.CreatePaymentMethodRequest;\nconst CreatePaymentMethodPassthroughData = Services.Commerce.CreatePaymentMethodPassthroughData;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class CommerceApi\n * @desc Provides ability to access commerce data and link subscriptions to the commerce.\n *\n */\nexport default class CommerceApi {\n\n /**\n *\n * @param {CommerceManager} commerceManager\n * @param {SDK.Token.TokenManager} tokenManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(commerceManager, tokenManager, logger = Logging) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(commerceManager, tokenManager, logger)`,\n get commerceManager() {\n return `${this.ctor} needs SDK.Commerce.CommerceManager instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n }\n };\n\n instanceStrict(commerceManager, CommerceManager, errorMessage.commerceManager, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {SDK.Commerce.CommerceManager}\n *\n */\n this.commerceManager = commerceManager;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => this.commerceManager.client.dustEnabled);\n\n this.logger.info(CommerceApi.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Commerce.PriceOrderRequest} request - A description of products to be priced.\n * May include location information for results with taxes calculated.\n * @desc Gets information that can be used to display product pricing to users. Cannot submit an\n * order without this information. If user's location is provided, tax will be calculated.\n * @throws {UnpriceableOrderException} Order could not be priced due to issues with the provided data.\n * @note If the user provided a redemption code, inform them it was either invalid or has already been redeemed.\n * Otherwise tell them to contact customer service.\n * @note Response of HTTP 400 or 422. The response will contain a numerical `errorCode` that directly maps to the\n * reason the error was unprocessable, but exposition of that mapping is not yet supported by the SDK.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes\n * when the operation has succeeded and returns pricing information for an order, given products,\n * discount vouchers, and (optionally) the user's location.\n *\n */\n priceOrder(request) {\n\n const errorMessage = {\n method: `${this.constructor.name}.priceOrder(request)`,\n get request() {\n return `${this.method} needs SDK.Commerce.PriceOrderRequest instance`;\n }\n };\n\n const { commerceManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceApi.name,\n urn: CommerceApiDustUrnReference.priceOrder\n });\n\n instanceStrict(request, PriceOrderRequest, errorMessage.request, InvalidArgumentException);\n\n return commerceManager.priceOrder(request).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} zipCode - The zip code to be used for looking up potential cities and states.\n * @desc Gets a list of potential cities and states that can be used as a billing address.\n * @throws {InvalidZipCodeException} Invalid or nonexistent zip code. E.g. `asdf` or `00000` would trigger this.\n * @note Response of HTTP 403.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @note the spec states we should return `SDK.Commerce.ZipLocation` but that is essentially a direct\n * copy of `SDK.Services.Commerce.ZipLocation`\n * @returns {Promise>} A promise that completes when the operation\n * has succeeded and returns address information for potential cities and states based on the given zip code.\n *\n */\n getLocationCandidates(zipCode) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getLocationCandidates(zipCode)`,\n get zipCode() {\n return `${this.method} zipCode should be a String with length`;\n }\n };\n\n const { commerceManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceApi.name,\n urn: CommerceApiDustUrnReference.getLocationCandidates\n });\n\n nonEmptyString(zipCode, errorMessage.zipCode, InvalidArgumentException);\n\n return commerceManager.lookupByZipCode(zipCode).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {SDK.Commerce.SubmitOrderWithPaymentMethodRequest} request - A description\n * of products to be ordered and information necessary to process the order.\n * @desc Submits an order for purchasing. If the order is successfully placed, a unique\n * identifier for the order is returned.\n * @throws {InvalidDataException} Unable to submit the order due to invalid payment information.\n * @note Request to submitOrderWithPaymentMethod returned HTTP 400.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded\n * and returns a unique identifier for the order.\n *\n */\n submitOrderWithPaymentMethod(request) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}.submitOrderWithPaymentMethod(request)`,\n get request() {\n return `${this.ctor} needs SDK.Commerce.SubmitOrderWithPaymentMethodRequest instance`;\n }\n };\n\n instanceStrict(\n request,\n SubmitOrderWithPaymentMethodRequest,\n errorMessage.request,\n InvalidArgumentException\n );\n\n const { commerceManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceApi.name,\n urn: CommerceApiDustUrnReference.submitOrderWithPaymentMethod\n });\n\n return commerceManager.submitOrderWithPaymentMethod(request).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {String} orderId - The identifier for the order.\n * @desc Checks the status of the order specified by the passed in guid. Returns true if the order is complete.\n * @throws {OrderProductBlockedException} Indicated order was blocked, product is already owned by the user.\n * @note Inform user that they already own the product and cannot order it again.\n * @note Request to getOrderStatus service returns a 422 with error: order.product.blocked.\n * @throws {OrderFraudException} Indicated order failed to pass fraud prevention checks.\n * @note Inform user that their order failed and to please try again later. The specific reason should not\n * be shared with them as it may provide assistance in bypassing fraud prevention checks.\n * @note Request to getOrderStatus service returns a 422 with error: order.ft.fraud.\n * @throws {OrderPaymentDeclinedException} Indicated order failed due to the payment method being declined.\n * @note Inform user that their payment method was declined.\n * @note Request to getOrderStatus service returns a 422 with error: order.payment.declined.\n * @throws {OrderTimeoutException} The order could not be verified in a timely fashion.\n * Requests Limit reached for an order.\n * @note Inform user that their order could not be fulfilled in a timely manner. User should back later.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @note this method was previously called `getOrderStatus`\n * @returns {Promise} A promise that completes when the operation has\n * succeeded and returns an indication of whether or not the order was successfully processed.\n *\n */\n validateOrder(orderId) {\n\n const errorMessage = {\n method: `${this.constructor.name}.validateOrder(orderId)`,\n get orderId() {\n return `${this.method} orderId should be a String with length`;\n }\n };\n\n const { commerceManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceApi.name,\n urn: CommerceApiDustUrnReference.validateOrder\n });\n\n nonEmptyString(orderId, errorMessage.orderId, InvalidArgumentException);\n\n return commerceManager.validateOrder(orderId).then((queryOrderResponse) => {\n\n return Promise.resolve(queryOrderResponse);\n\n }).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {SDK.Commerce.PaymentMethodInformation} paymentInformation - info about the payment method to create.\n * @param {SDK.Commerce.PriceOrderResponse} priceOrderResponse - Information retrieved from a call to\n * `SDK.Commerce.CommerceApi.PriceOrder()`.\n * @desc Creates a new payment method which case be used later to submit an order.\n * @throws {InvalidPaymentInformationException} Unable to create payment information due to invalid data.\n * @note Request to createPaymentMethod returned HTTP 422.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} The payment method ID for the payment that was added.\n *\n */\n createPaymentMethod(paymentInformation, priceOrderResponse) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}.createPaymentMethod(paymentInformation, priceOrderResponse)`,\n get paymentInformation() {\n return `${this.ctor} needs SDK.Commerce.PaymentMethodInformation instance`;\n },\n get priceOrderResponse() {\n return `${this.ctor} needs SDK.Commerce.PriceOrderResponse instance`;\n }\n };\n\n instanceStrict(\n paymentInformation,\n PaymentMethodInformation,\n errorMessage.paymentInformation,\n InvalidArgumentException\n );\n\n instanceStrict(\n priceOrderResponse,\n PriceOrderResponse,\n errorMessage.priceOrderResponse,\n InvalidArgumentException\n );\n\n const { commerceManager, dustEnabled, logger } = this;\n const { creditCardNumber } = paymentInformation;\n const { region } = priceOrderResponse;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceApi.name,\n urn: CommerceApiDustUrnReference.createPaymentMethod\n });\n\n const namespaceId = Util.getSafe(() => commerceManager.client.config.extras.namespaceId);\n const passThroughData = new CreatePaymentMethodPassthroughData(paymentInformation);\n\n const createPaymentMethodRequest = new CreatePaymentMethodRequest(\n creditCardNumber,\n namespaceId,\n passThroughData\n );\n\n return commerceManager.createPaymentMethod(createPaymentMethodRequest, region).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @desc Retrieves the default payment method for the user which case be used to submit an order.\n * @throws {PaymentMethodNotFoundException} Unable to retrieve the payment method as it was not found.\n * @note Request to perform operation returned HTTP 404.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} Information about the payment\n * method that was successfully retrieved.\n *\n */\n getDefaultPaymentMethod() {\n\n const { commerceManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceApi.name,\n urn: CommerceApiDustUrnReference.getDefaultPaymentMethod\n });\n\n return commerceManager.getDefaultPaymentMethod().then((paymentMethodResponse) => {\n\n const processedPaymentMethodResponse = this.getPaymentMethodResponse(paymentMethodResponse);\n\n return Promise.resolve(processedPaymentMethodResponse);\n\n }).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @param {String} paymentMethodId Payment method ID retrieved from a request to create a payment method.\n * @desc Retrieves information about a specific card payment method.\n * @throws {PaymentMethodNotFoundException} Unable to retrieve the payment method as it was not found.\n * @note Request to perform operation returned HTTP 404.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} Information about the card payment method that was\n * successfully retrieved.\n *\n */\n async getPaymentCard(paymentMethodId) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getPaymentCard(paymentMethodId)`,\n get paymentMethodId() {\n return `${this.method} paymentMethodId should be a String with length`;\n }\n };\n\n nonEmptyString(paymentMethodId, errorMessage.paymentMethodId, InvalidArgumentException);\n\n const { commerceManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: CommerceApi.name,\n urn: CommerceApiDustUrnReference.getPaymentCard\n });\n\n try {\n\n const paymentMethodResponse = await commerceManager.getPaymentCard(paymentMethodId);\n\n return this.getPaymentMethodResponse(paymentMethodResponse);\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {SDK.Services.Commerce.PaymentMethodResponse} paymentMethodResponse\n * @returns {SDK.Commerce.PaymentMethodResponse|SDK.Commerce.CardPaymentMethodResponse}\n *\n */\n getPaymentMethodResponse(paymentMethodResponse) {\n\n if (Check.assigned(paymentMethodResponse.cardType)) {\n\n return new CardPaymentMethodResponse(paymentMethodResponse);\n\n } else {\n\n return new PaymentMethodResponse(paymentMethodResponse);\n\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/commerce/commerceApi.js","/**\n *\n * @module submitOrderWithCardPaymentMethodRequest\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport SubmitOrderWithPaymentMethodRequest from './submitOrderWithPaymentMethodRequest';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyObject,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SubmitOrderWithCardPaymentMethodRequest\n * @since 3.6.0\n * @desc Information necessary to place an order.\n *\n */\nexport default class SubmitOrderWithCardPaymentMethodRequest extends SubmitOrderWithPaymentMethodRequest {\n\n /**\n *\n * @param {Object} options\n * @param {Array} options.lineItems\n * @param {String} options.paymentMethodId\n * @param {Array} options.orderCampaigns\n * @param {SDK.Services.Commerce.StrongCustomerAuth} [options.sca]\n * @note params above are type-checked in the super class\n * @param {String} options.cardSecurityCode\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'SubmitOrderWithCardPaymentMethodRequest(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get cardSecurityCode() {\n return `${this.ctor} options.cardSecurityCode should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { cardSecurityCode } = options;\n\n nonEmptyString(cardSecurityCode, errorMessage.cardSecurityCode, InvalidArgumentException);\n\n super(options);\n\n /**\n *\n * @access public\n * @type {String}\n * @desc CVV in encrypted format in case of credit card. Required in case of CC payment.\n *\n */\n this.cardSecurityCode = cardSecurityCode;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/commerce/submitOrderWithCardPaymentMethodRequest.js","/**\n *\n * @module configurationManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/configuration.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport EmbeddedConfiguration from './embeddedConfiguration';\n\nconst Util = Services.Util;\nconst Storage = Services.Storage;\nconst BootstrapConfiguration = Services.Configuration.BootstrapConfiguration;\nconst EnvironmentConfiguration = Services.Configuration.EnvironmentConfiguration;\nconst SdkSessionConfiguration = Services.Configuration.SdkSessionConfiguration;\nconst ConfigurationClient = Services.Configuration.ConfigurationClient;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst ConfigurationManagerDustUrnReference = Services.Internal.Dust.DustUrnReference.configuration.configurationManager;\nconst PlatformProfileReference = Services.Configuration.PlatformProfileReference;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class ConfigurationManager\n * @desc Manages configuration information required to use the SDK.\n *\n */\nexport default class ConfigurationManager {\n\n /**\n *\n * @param {BootstrapConfiguration} bootstrapConfiguration\n * @param {Object} packageData\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Services.Storage} [storage=null]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(bootstrapConfiguration, packageData, logger = Logging, storage = null) {\n\n const errorMessage = {\n ctor: 'ConfigurationManager(bootstrapConfiguration, packageData, logger, storage)',\n get bootstrapConfiguration() {\n return `${this.ctor} needs BootstrapConfiguration instance`;\n },\n get packageData() {\n return `${this.ctor} needs plain Object instance`;\n },\n get storage() {\n return `${this.ctor} needs Storage instance`;\n }\n };\n\n instanceStrict(bootstrapConfiguration, BootstrapConfiguration, errorMessage.bootstrapConfiguration, InvalidArgumentException); // eslint-disable-line\n nonEmptyObject(packageData, errorMessage.packageData, InvalidArgumentException);\n\n if (Check.assigned(storage)) {\n instanceStrict(storage, Storage, errorMessage.storage, InvalidArgumentException);\n }\n\n /**\n *\n * @access private\n * @type {BootstrapConfiguration}\n *\n */\n this.bootstrapConfiguration = bootstrapConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Storage}\n *\n */\n this.storage = storage || new Storage(logger);\n\n /**\n *\n * @access public\n * @type {String}\n * @since 2.0.0\n * @example 3.1\n *\n */\n this.sdkVersion = packageData.sdkVersionShort;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.EnvironmentConfiguration}\n *\n */\n this.environmentConfiguration = ConfigurationManager.createEnvironmentConfiguration(\n this.sdkVersion,\n this.bootstrapConfiguration\n );\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.ConfigurationClientConfiguration}\n *\n */\n this.configurationClientConfiguration = ConfigurationManager.getClientConfiguration();\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.ConfigurationClient}\n *\n */\n this.client = new ConfigurationClient(this.configurationClientConfiguration, this.logger);\n\n /**\n *\n * @access private\n * @type {String}\n * @desc cache key scoped under client ID and environment to prevent clashes,\n * maintains the same structure as all other cacheKey(s) in the SDK\n * @since 1.1.2\n *\n */\n this.cacheKey = `\n __bam_sdk_sdkSession_configuration--\n ${this.bootstrapConfiguration.clientId}_\n ${this.bootstrapConfiguration.environment}\n `.replace(/(?:\\n\\s+)/g, '');\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => this.client.dustEnabled);\n\n this.logger.log(ConfigurationManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @desc Retrieves the remote configuration, falls back to cached version if available.\n * @returns {Promise}\n *\n */\n async getConfiguration() {\n\n const { client, cacheKey, dustEnabled, storage, logger } = this;\n const { bootstrapConfiguration, environmentConfiguration } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: ConfigurationManager.name,\n urn: ConfigurationManagerDustUrnReference.getConfiguration\n });\n\n if (!Util.getSafe(() => bootstrapConfiguration.configHostName)) {\n\n const embeddedConfiguration = ConfigurationManager.loadEmbeddedConfiguration();\n\n bootstrapConfiguration.configHostName = embeddedConfiguration.defaultConfigHostName;\n\n }\n\n logger.info(ConfigurationManager.name, `Getting configuration:\n clientId: \"${bootstrapConfiguration.clientId}\",\n environment: \"${bootstrapConfiguration.environment}\",\n deviceFamily: \"${environmentConfiguration.deviceFamily}\",\n sdkVersion: \"${environmentConfiguration.sdkVersion}\",\n configVersion: \"${environmentConfiguration.configVersion}\",\n configHostName: \"${bootstrapConfiguration.configHostName}\"\n `.replace(/(\\s(?=\\s))/g, ''));\n\n try {\n\n const sdkSessionConfiguration = await client.getConfiguration(bootstrapConfiguration, environmentConfiguration); // eslint-disable-line\n\n logger.log(ConfigurationManager.name, 'Successfully fetched configuration.');\n\n await this.cacheConfiguration(sdkSessionConfiguration);\n\n return Promise.resolve(sdkSessionConfiguration);\n\n } catch (ex) {\n\n logger.error(ConfigurationManager.name, 'Unable to get configuration.');\n logger.log(ConfigurationManager.name, `Loading from storage, cache key: \"${cacheKey}\".`);\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n try {\n\n const storedSdkSessionConfiguration = await storage.get(cacheKey);\n const sdkSessionConfiguration = new SdkSessionConfiguration(storedSdkSessionConfiguration);\n\n return Promise.resolve(sdkSessionConfiguration);\n\n } catch (e) {\n\n logger.error(ConfigurationManager.name, 'Unable to fetch cached configuration.');\n\n return await this.getFallbackConfiguration();\n\n }\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @returns {Promise}\n *\n */\n async cacheConfiguration(sdkSessionConfiguration) {\n\n const { cacheKey, storage, logger } = this;\n\n logger.log(ConfigurationManager.name, `Adding configuration to Storage, cache key: \"${cacheKey}\".`);\n\n return await storage.set(cacheKey, sdkSessionConfiguration);\n\n }\n\n /**\n *\n * @access private\n * @returns {Promise}\n *\n */\n async getFallbackConfiguration() {\n\n const isFallback = true;\n const fallbackConfiguration = new EmbeddedConfiguration(isFallback);\n const configurationClient = new ConfigurationClient(fallbackConfiguration.client);\n\n const { bootstrapConfiguration, environmentConfiguration, logger } = this;\n\n logger.log(ConfigurationManager.name, 'Fetching fallback configuration.');\n\n const config = await configurationClient.getConfiguration(bootstrapConfiguration, environmentConfiguration);\n\n return Promise.resolve(config);\n\n }\n\n /**\n *\n * @access private\n * @returns {SDK.Configuration.EmbeddedConfiguration}\n *\n */\n static loadEmbeddedConfiguration() {\n\n const isFallback = false;\n\n return new EmbeddedConfiguration(isFallback);\n\n }\n\n /**\n *\n * @access private\n * @param {String} sdkVersion\n * @param {SDK.Services.Configuration.BootstrapConfiguration} bootstrapConfiguration\n * @returns {SDK.Services.Configuration.EnvironmentConfiguration}\n *\n */\n static createEnvironmentConfiguration(sdkVersion, bootstrapConfiguration) {\n\n const platformOverride = bootstrapConfiguration.platform;\n const platformProfile = PlatformProfileReference[platformOverride];\n const applicationRuntime = Util.getSafe(() => platformProfile.applicationRuntime);\n const deviceProfile = Util.getSafe(() => platformProfile.deviceProfile);\n const platform = Util.getSafe(() => platformProfile.platform);\n\n return new EnvironmentConfiguration({\n sdkVersion,\n applicationRuntime,\n deviceProfile,\n platform\n });\n\n }\n\n /**\n *\n * @access private\n * @returns {SDK.Services.Configuration.ConfigurationClientConfiguration}\n *\n */\n static getClientConfiguration() {\n\n const embeddedConfiguration = ConfigurationManager.loadEmbeddedConfiguration();\n\n return embeddedConfiguration.client;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/configuration/configurationManager.js","/**\n *\n * @module contentApi\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/content.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/ContentApi.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport ContentManager from './contentManager';\nimport SearchOverrides from './searchOverrides';\nimport ContentQuery from './contentQuery';\n\nconst Util = Services.Util;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst ContentApiDustUrnReference = Services.Internal.Dust.DustUrnReference.content.contentApi;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class ContentApi\n * @desc Provides a way to access and discover content.\n *\n */\nexport default class ContentApi {\n\n /**\n *\n * @param {ContentManager} contentManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(contentManager, logger = Logging) {\n\n const errorMessage = {\n ctor: 'ContentApi(contentManager, logger)',\n get contentManager() {\n return `${this.ctor} needs ContentManager instance`;\n }\n };\n\n instanceStrict(contentManager, ContentManager, errorMessage.contentManager, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {ContentManager}\n *\n */\n this.contentManager = contentManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => this.contentManager.client.dustEnabled);\n\n this.logger.info(ContentApi.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @param {ContentQuery} options.query - The GraphQL query object that defines the query criteria.\n * @param {SDK.Content.SearchOverrides} [options.overrides] - Object which contains override information on the time\n * of origin and or the country of origin to apply to the query request\n * @param {String} [options.contentTransactionId] - An application developer provided value to be included with the\n * HTTP request as the value of the `X-Content-Transaction-ID` header\n * @desc Queries the content services.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {InvalidRequestException} The content query request was invalid.\n * @note Content query request returns HTTP 400. Response body is ignored.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has\n * succeeded and returns the JSON object or string to be interpreted by the application.\n *\n */\n async query(options) {\n\n const errorMessage = {\n method: 'ContentApi.query(options)',\n get options() {\n return `${this.method} options should be a non-empty Object`;\n },\n get query() {\n return `${this.method} options.query should be an instance of SDK.Content.ContentQuery`;\n },\n get overrides() {\n return `${this.method} options.overrides should be an instance of SDK.Content.SearchOverrides`;\n },\n get contentTransactionId() {\n return `${this.method} options.contentTransactionId should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { query, overrides, contentTransactionId } = options;\n\n instanceStrict(query, ContentQuery, errorMessage.query, InvalidArgumentException);\n\n if (Check.assigned(overrides)) {\n instanceStrict(overrides, SearchOverrides, errorMessage.overrides, InvalidArgumentException);\n }\n\n if (Check.assigned(contentTransactionId)) {\n nonEmptyString(contentTransactionId, errorMessage.contentTransactionId, InvalidArgumentException);\n }\n\n const { contentManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: ContentApi.name,\n urn: ContentApiDustUrnReference.query,\n data: {\n context: query.context,\n contentTransactionId\n }\n });\n\n try {\n\n return await contentManager.query(options);\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @param {String} suggestionSet - The predefined dictionary name to search.\n * @param {String} query - The predefined name of the search query.\n * @param {Number} limit - The maximum number of items that can be returned.\n * @param {String} filter - The string filter that should be applied to the query.\n * @desc Gets a set of search suggestions based on end-user input. Useful for type-ahead feature.\n * @note Alternatively, the app dev may choose to perform a query\n * instead to get a more rich set of search results as the user types.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded and\n * returns an array of string search suggestions to allow the end-user to choose from.\n *\n */\n async getSearchSuggestions(suggestionSet, query, limit, filter) {\n\n const { contentManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: ContentApi.name,\n urn: ContentApiDustUrnReference.getSearchSuggestions\n });\n\n try {\n\n return await contentManager.getSearchSuggestions(suggestionSet, query, limit, filter);\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/contentApi.js","/**\n *\n * @module entry\n * @desc {SDK.Content.Search} entry point.\n *\n */\n\nimport SearchExtensions from './searchExtensions';\nimport SearchQuery from './searchQuery';\n\n/**\n *\n * @typedef SDK.Content.Search\n * @type {Object}\n *\n * @property {SearchExtensions} SearchExtensions\n * @property {SearchQuery} SearchQuery\n *\n */\n\n/**\n *\n * @type {SDK.Content.Search}\n *\n */\nexport default {\n\n SearchExtensions,\n SearchQuery\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/search/entry.js","/**\n *\n * @module entry\n * @desc {SDK.Content.Watchlist} entry point.\n *\n */\n\nimport WatchlistExtensions from './watchlistExtensions';\nimport AddToWatchlistQuery from './addToWatchlistQuery';\nimport ClearWatchlistQuery from './clearWatchlistQuery';\nimport RemoveFromWatchlistQuery from './removeFromWatchlistQuery';\nimport WatchlistQuery from './watchlistQuery';\n\n/**\n *\n * @typedef SDK.Content.Watchlist\n * @type {Object}\n *\n * @property {Function} WatchlistExtensions\n * @property {AddToWatchlistQuery} AddToWatchlistQuery\n * @property {ClearWatchlistQuery} ClearWatchlistQuery\n * @property {RemoveFromWatchlistQuery} RemoveFromWatchlistQuery\n * @property {WatchlistQuery} WatchlistQuery\n *\n */\n\n/**\n *\n * @type {SDK.Content.Watchlist}\n *\n */\nexport default {\n\n WatchlistExtensions,\n AddToWatchlistQuery,\n ClearWatchlistQuery,\n RemoveFromWatchlistQuery,\n WatchlistQuery\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/watchlist/entry.js","/**\n *\n * @module entry\n * @desc {SDK.Content.Bookmarks} entry point.\n *\n */\n\nimport BookmarkExtensions from './bookmarkExtensions';\nimport BookmarksQuery from './bookmarksQuery';\n\n/**\n *\n * @typedef SDK.Content.Bookmarks\n * @type {Object}\n *\n * @property {Function} BookmarkExtensions\n * @property {BookmarksQuery} BookmarksQuery\n *\n */\n\n/**\n *\n * @type {SDK.Content.Bookmarks}\n *\n */\nexport default {\n\n BookmarkExtensions,\n BookmarksQuery\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/content/bookmarks/entry.js","/**\n *\n * @module customerServiceManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/customer-service-code.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\n\nconst AccessToken = Services.Token.AccessToken;\nconst CustomerServiceManagerConfiguration = Services.Configuration.CustomerServiceManagerConfiguration;\nconst CustomerServiceClient = Services.CustomerService.CustomerServiceClient;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class CustomerServiceManager\n * @desc Provides a manager to be used to find a customer's current context.\n *\n */\nexport default class CustomerServiceManager {\n\n /**\n *\n * @param {SDK.Services.Configuration.CustomerServiceManagerConfiguration} config\n * @param {SDK.Services.CustomerService.CustomerServiceClient} customerServiceClient\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(config, customerServiceClient, logger = Logging) {\n\n const errorMessage = {\n ctor: 'CustomerServiceManager(config, customerServiceClient, logger)',\n get config() {\n return `${this.ctor} needs SDK.Services.Configuration.CustomerServiceManagerConfiguration instance`;\n },\n get customerServiceClient() {\n return `${this.ctor} needs SDK.Services.CustomerService.CustomerServiceClient instance`;\n }\n };\n\n instanceStrict(config, CustomerServiceManagerConfiguration, errorMessage.config, InvalidArgumentException);\n instanceStrict(customerServiceClient, CustomerServiceClient, errorMessage.customerServiceClient, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.CustomerServiceManagerConfiguration}\n *\n */\n this.config = config;\n\n /**\n *\n * @access private\n * @type {SDK.Services.CustomerService.CustomerServiceClient}\n *\n */\n this.client = customerServiceClient;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n * @memberof {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.log(CustomerServiceManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Services.Token.AccessToken} accessToken - The current access token.\n * @desc Creates a customer service code for this user for use in support.\n * @returns {Promise}\n *\n */\n async createSupportCode(accessToken) {\n\n const errorMessage = {\n method: 'CustomerServiceManager.createSupportCode(accessToken)',\n get accessToken() {\n return `${this.method} needs SDK.Services.Token.AccessToken instance`;\n }\n };\n\n instanceStrict(accessToken, AccessToken, errorMessage.accessToken, InvalidArgumentException);\n\n const { client, logger } = this;\n const customerSupportCode = await client.createSupportCode(accessToken);\n\n logger.info(CustomerServiceManager.name, 'Customer support code created');\n\n return Promise.resolve(customerSupportCode);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/customerService/customerServiceManager.js","/**\n *\n * @module audioChangedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString,\n number,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.AudioChangedEventData\n * @since 4.0.0\n * @desc This event represents an audio stream change.\n *\n */\nexport default class AudioChangedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {Number} [options.audioChannels=null]\n * @param {String} [options.audioCodec=null]\n * @param {String} [options.audioLanguage=null]\n * @param {String} [options.audioName=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get audioChannels() {\n return `${this.ctor} options.audioChannels should be a Number`;\n },\n get audioCodec() {\n return `${this.ctor} options.audioCodec should be a String with length`;\n },\n get audioLanguage() {\n return `${this.ctor} options.audioLanguage should be a String with length`;\n },\n get audioName() {\n return `${this.ctor} options.audioName should be a String with length`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, audioChannels = null, audioCodec = null } = options;\n const { audioLanguage = null, audioName = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n if (Check.assigned(audioChannels)) {\n number(audioChannels, errorMessage.audioChannels, InvalidArgumentException);\n }\n\n if (Check.assigned(audioCodec)) {\n nonEmptyString(audioCodec, errorMessage.audioCodec, InvalidArgumentException);\n }\n\n if (Check.assigned(audioLanguage)) {\n nonEmptyString(audioLanguage, errorMessage.audioLanguage, InvalidArgumentException);\n }\n\n if (Check.assigned(audioName)) {\n nonEmptyString(audioName, errorMessage.audioName, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n * @desc Audio channels as defined by the selected playlist variant\n *\n */\n this.audioChannels = audioChannels;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Audio codec as defined by the selected playlist variant\n *\n */\n this.audioCodec = audioCodec;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Audio language as defined by the selected audio rendition\n *\n */\n this.audioLanguage = audioLanguage;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Audio name as defined by the selected audio rendition\n *\n */\n this.audioName = audioName;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/audioChangedEventData.js","/**\n *\n * @module bitrateChangedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport BitrateType from './bitrateType';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n includes,\n nonEmptyString,\n number,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.BitrateChangedEventData\n * @since 4.0.0\n * @desc This event represents a bitrate change.\n *\n */\nexport default class BitrateChangedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {Number} [options.bitrate=null]\n * @param {SDK.QualityOfService.BitrateType} [options.bitrateType=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get bitrate() {\n return `${this.ctor} options.bitrate should be a Number`;\n },\n get bitrateType() {\n return `${this.ctor} options.bitrateType should be a member of SDK.QualityOfService.BitrateType`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, bitrate = null, bitrateType = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n if (Check.assigned(bitrate)) {\n number(bitrate, errorMessage.bitrate, InvalidArgumentException);\n }\n\n if (Check.assigned(bitrateType)) {\n includes(BitrateType, bitrateType, errorMessage.bitrateType, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n * @desc The bitrate the player switched to (in bps).\n *\n */\n this.bitrate = bitrate;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.BitrateType|null}\n * @desc Average or peak (average is default). If known, we should indicate\n * whether this is the average (e.g. `AVERAGE-BANDWIDTH`) or peak (e.g. `BANDWIDTH`)\n * Alternatively, could apply logic on the backend to disambiguate based on known player behavior.\n *\n */\n this.bitrateType = bitrateType;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/bitrateChangedEventData.js","/**\n *\n * @module drmCertificateFetchedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport ServerRequest from './serverRequest';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean,\n instanceStrict,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.DrmCertificateFetchedEventData\n * @since 4.0.0\n * @desc This event represents a fetch of a resource on the network. This event\n * represents a fetch of a DRM certificate/license.\n *\n */\nexport default class DrmCertificateFetchedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {Boolean} [options.offline=false]\n * @param {SDK.QualityOfService.ServerRequest} [options.serverRequest=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get offline() {\n return `${this.ctor} options.offline should be a Boolean`;\n },\n get serverRequest() {\n return `${this.ctor} options.serverRequest should be an instance of SDK.QualityOfService.ServerRequest`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, offline = false, serverRequest = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n boolean(offline, errorMessage.offline, InvalidArgumentException);\n\n if (Check.assigned(serverRequest)) {\n instanceStrict(serverRequest, ServerRequest, errorMessage.serverRequest, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean}\n * @desc True if the media is being played from a local source, e.g. it has\n * been downloaded for offline playback or was bundled in the application.\n *\n */\n this.offline = offline;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.ServerRequest|null}\n * @desc Data about a request/response to a server.\n *\n */\n this.serverRequest = serverRequest;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/drmCertificateFetchedEventData.js","/**\n *\n * @module drmKeyFetchedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport ServerRequest from './serverRequest';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean,\n instanceStrict,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.DrmKeyFetchedEventData\n * @since 4.0.0\n * @desc This event represents a fetch of a resource on the network. This event\n * represents a fetch of a SILK key.\n *\n */\nexport default class DrmKeyFetchedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {Boolean} [options.offline=false]\n * @param {SDK.QualityOfService.ServerRequest} [options.serverRequest=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get offline() {\n return `${this.ctor} options.offline should be a Boolean`;\n },\n get serverRequest() {\n return `${this.ctor} options.serverRequest should be an instance of SDK.QualityOfService.ServerRequest`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, offline = false, serverRequest = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n boolean(offline, errorMessage.offline, InvalidArgumentException);\n\n if (Check.assigned(serverRequest)) {\n instanceStrict(serverRequest, ServerRequest, errorMessage.serverRequest, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean}\n * @desc True if the media is being played from a local source, e.g. it has\n * been downloaded for offline playback or was bundled in the application.\n *\n */\n this.offline = offline;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.ServerRequest|null}\n * @desc Data about a request/response to a server.\n *\n */\n this.serverRequest = serverRequest;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/drmKeyFetchedEventData.js","/**\n *\n * @module masterPlaylistFetchedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport PlaylistLiveType from './playlistLiveType';\nimport ServerRequest from './serverRequest';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean,\n includes,\n instanceStrict,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.MasterPlaylistFetchedEventData\n * @since 4.0.0\n * @desc This event represents a fetch of a resource on the network. This event represents a fetch of the master m3u8.\n *\n */\nexport default class MasterPlaylistFetchedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {Boolean} [options.offline=false]\n * @param {SDK.QualityOfService.PlaylistLiveType} [options.liveType=null]\n * @param {SDK.QualityOfService.ServerRequest} [options.serverRequest=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get offline() {\n return `${this.ctor} options.offline should be a Boolean`;\n },\n get liveType() {\n return `${this.ctor} options.liveType should be a member of SDK.QualityOfService.PlaylistLiveType`;\n },\n get serverRequest() {\n return `${this.ctor} options.serverRequest should be an instance of SDK.QualityOfService.ServerRequest`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, offline = false, liveType = null, serverRequest = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n boolean(offline, errorMessage.offline, InvalidArgumentException);\n\n if (Check.assigned(liveType)) {\n includes(PlaylistLiveType, liveType, errorMessage.liveType, InvalidArgumentException);\n }\n\n if (Check.assigned(serverRequest)) {\n instanceStrict(serverRequest, ServerRequest, errorMessage.serverRequest, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean}\n * @desc True if the media is being played from a local source, e.g. it has\n * been downloaded for offline playback or was bundled in the application.\n *\n */\n this.offline = offline;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.PlaylistLiveType|null}\n * @desc The variety of live playlist. Should come from Playlist.playlistType\n *\n */\n this.liveType = liveType;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.ServerRequest|null}\n * @desc Data about a request/response to a server.\n *\n */\n this.serverRequest = serverRequest;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/masterPlaylistFetchedEventData.js","/**\n *\n * @module mediaPayloadFetchedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport MediaFetchError from './mediaFetchError';\nimport ServerRequest from './serverRequest';\n\nconst PlaybackAttributes = Services.Media.PlaybackAttributes;\nconst PlaybackVariant = Services.Media.PlaybackVariant;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n boolean,\n includes,\n instanceStrict,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.MediaPayloadFetchedEventData\n * @since 4.0.0\n * @desc This event represents a fetch of a resource on the network. This event represents\n * a call to Playlist Service to get information about a stream.\n *\n */\nexport default class MediaPayloadFetchedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {Boolean} [options.offline=false]\n * @param {String} [options.playbackUrl=null]\n * @param {String} [options.playbackScenario=null]\n * @param {Boolean} [options.live=null]\n * @param {SDK.Services.Media.PlaybackAttributes} [options.attributes=null]\n * @param {Array} [options.variants=null]\n * @param {String} [options.fguid=null]\n * @param {SDK.QualityOfService.MediaFetchError} [options.error=null]\n * @param {SDK.QualityOfService.ServerRequest} [options.serverRequest=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get offline() {\n return `${this.ctor} options.offline should be a Boolean`;\n },\n get playbackUrl() {\n return `${this.ctor} options.playbackUrl should be String with length`;\n },\n get playbackScenario() {\n return `${this.ctor} options.playbackScenario should be a String with length`;\n },\n get live() {\n return `${this.ctor} options.live should be a Boolean`;\n },\n get attributes() {\n return `${this.ctor} options.attributes should be an instance of SDK.Services.Media.PlaybackAttributes`;\n },\n get variants() {\n return `${this.ctor} options.variants should be an array of SDK.Services.Media.PlaybackVariant`;\n },\n get fguid() {\n return `${this.ctor} options.fguid should be a String with length`;\n },\n get error() {\n return `${this.ctor} options.error should be a member of SDK.QualityOfService.MediaFetchError`;\n },\n get serverRequest() {\n return `${this.ctor} options.serverRequest should be an instance of SDK.QualityOfService.ServerRequest`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, offline = false, playbackUrl = null, playbackScenario = null } = options;\n const { live = null, attributes = null, variants = null, fguid = null, error = null } = options;\n const { serverRequest = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n boolean(offline, errorMessage.offline, InvalidArgumentException);\n\n if (Check.assigned(playbackUrl)) {\n nonEmptyString(playbackUrl, errorMessage.playbackUrl, InvalidArgumentException);\n }\n\n if (Check.assigned(playbackScenario)) {\n nonEmptyString(playbackScenario, errorMessage.playbackScenario, InvalidArgumentException);\n }\n\n if (Check.assigned(live)) {\n boolean(live, errorMessage.live, InvalidArgumentException);\n }\n\n if (Check.assigned(attributes)) {\n instanceStrict(attributes, PlaybackAttributes, errorMessage.attributes, InvalidArgumentException);\n }\n\n if (Check.assigned(variants)) {\n array.of.instanceStrict(variants, PlaybackVariant, errorMessage.variants, InvalidArgumentException);\n }\n\n if (Check.assigned(fguid)) {\n nonEmptyString(fguid, errorMessage.fguid, InvalidArgumentException);\n }\n\n if (Check.assigned(error)) {\n includes(MediaFetchError, error, errorMessage.error, InvalidArgumentException);\n }\n\n if (Check.assigned(serverRequest)) {\n instanceStrict(serverRequest, ServerRequest, errorMessage.serverRequest, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean}\n * @desc True if the media is being played from a local source, e.g. it has\n * been downloaded for offline playback or was bundled in the application.\n *\n */\n this.offline = offline;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc The playbackUrl before playback scenario has been injected\n *\n */\n this.playbackUrl = playbackUrl;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc One of the pre-defined PBSs\n *\n */\n this.playbackScenario = playbackScenario;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean|null}\n * @note set to true if conviva \"productType\" tracking variable exists and equals \"LIVE\"\n *\n */\n this.live = live;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.Services.Media.PlaybackAttributes|null}\n * @desc Value of `playlistResponse.stream.attributes`\n *\n */\n this.attributes = attributes;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Array|null}\n * @desc Value of `playlistResponse.stream.variants`\n *\n */\n this.variants = variants;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Server side generated ID of the stream/playback session. Get from\n * Conviva \"fguid\" tracking data property if it exists\n *\n */\n this.fguid = fguid;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.MediaFetchError|null}\n * @desc Additional error details when fetching media. `null` if no error occurred.\n *\n */\n this.error = error;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.ServerRequest|null}\n * @desc Data about a request/response to a server.\n *\n */\n this.serverRequest = serverRequest;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/mediaPayloadFetchedEventData.js","/**\n *\n * @module mediaSegmentFetchedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport ServerRequest from './serverRequest';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean,\n instanceStrict,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.MediaSegmentFetchedEventData\n * @since 4.0.0\n * @desc This event represents a fetch of a resource on the network.This event represents\n * a fetch of a media segment (video, audio, or subtitle).\n *\n */\nexport default class MediaSegmentFetchedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {Boolean} [options.offline=false]\n * @param {SDK.QualityOfService.ServerRequest} [options.serverRequest=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get offline() {\n return `${this.ctor} options.offline should be a Boolean`;\n },\n get serverRequest() {\n return `${this.ctor} options.serverRequest should be an instance of SDK.QualityOfService.ServerRequest`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, offline = false, serverRequest = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n boolean(offline, errorMessage.offline, InvalidArgumentException);\n\n if (Check.assigned(serverRequest)) {\n instanceStrict(serverRequest, ServerRequest, errorMessage.serverRequest, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean}\n * @desc True if the media is being played from a local source, e.g. it has\n * been downloaded for offline playback or was bundled in the application.\n *\n */\n this.offline = offline;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.ServerRequest|null}\n * @desc Data about a request/response to a server.\n *\n */\n this.serverRequest = serverRequest;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/mediaSegmentFetchedEventData.js","/**\n *\n * @module mediaSegmentType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef SDK.QualityOfService.MediaSegmentType\n * @type {Object}\n * @since 4.0.0\n * @desc Defines the different types of playlists.\n * @example\n * SDK.QualityOfService.MediaSegmentType.video // 'video'\n *\n * @property {String} video\n * @property {String} audio\n * @property {String} subtitle\n * @property {String} iframe\n *\n */\n\n/**\n *\n * @enum\n * @type {SDK.QualityOfService.MediaSegmentType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Video\n *\n */\n video: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Audio\n *\n */\n audio: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Subtitle\n *\n */\n subtitle: null,\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String}\n * @desc Iframe\n *\n */\n iframe: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/mediaSegmentType.js","/**\n *\n * @module playbackExitedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport PlaybackExitedCause from './playbackExitedCause';\nimport PlaybackError from './playbackError';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n includes,\n nonEmptyString,\n number,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.PlaybackExitedEventData\n * @since 4.0.0\n * @desc Generated when the video playback experience ends for any reason.\n *\n */\nexport default class PlaybackExitedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {Number} [options.playhead=null]\n * @param {SDK.QualityOfService.PlaybackExitedCause} [options.cause=null]\n * @param {SDK.QualityOfService.PlaybackError} [options.error=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get playhead() {\n return `${this.ctor} options.playhead should be a Number`;\n },\n get cause() {\n return `${this.ctor} options.cause should be a member of SDK.QualityOfService.PlaybackExitedCause`;\n },\n get error() {\n return `${this.ctor} options.error should be a member of SDK.QualityOfService.PlaybackError`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, playhead = null, cause = null, error = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n if (Check.assigned(playhead)) {\n number(playhead, errorMessage.playhead, InvalidArgumentException);\n }\n\n if (Check.assigned(cause)) {\n includes(PlaybackExitedCause, cause, errorMessage.cause, InvalidArgumentException);\n }\n\n if (Check.assigned(error)) {\n includes(PlaybackError, error, errorMessage.error, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n * @desc The location of the current playhead at the time the user exited the video, measured\n * as a millisecond offset from the start time.\n *\n */\n this.playhead = playhead;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.PlaybackEndCause|null}\n * @desc The reason for ending playback.\n *\n */\n this.cause = cause;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.PlaybackError|null}\n * @desc An error representing a fatal playback failure. `null` if no error occured.\n *\n */\n this.error = error;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackExitedEventData.js","/**\n *\n * @module playbackInitializedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean,\n nonEmptyString,\n number,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.PlaybackInitializedEventData\n * @since 4.0.0\n * @desc This event represents initialization of the player with a playlist.\n *\n */\nexport default class PlaybackInitializedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {Number} [options.audioChannels=null]\n * @param {String} [options.audioCodec=null]\n * @param {String} [options.audioLanguage=null]\n * @param {String} [options.audioName=null]\n * @param {Number} [options.playhead=null]\n * @param {Number} [options.startBitrate=null]\n * @param {String} [options.subtitleLanguage=null]\n * @param {String} [options.subtitleName=null]\n * @param {Boolean} [options.subtitleVisibility=null]\n * @param {String} [options.videoCodec=null]\n * @param {String} [options.videoRange=null]\n * @param {String} [options.videoPlayerName=null]\n * @param {String} [options.videoPlayerVersion=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get audioChannels() {\n return `${this.ctor} options.audioChannels should be a Number`;\n },\n get audioCodec() {\n return `${this.ctor} options.audioCodec should be a String with length`;\n },\n get audioLanguage() {\n return `${this.ctor} options.audioLanguage should be a String with length`;\n },\n get audioName() {\n return `${this.ctor} options.audioName should be a String with length`;\n },\n get playhead() {\n return `${this.ctor} options.playhead should be a Number`;\n },\n get startBitrate() {\n return `${this.ctor} options.startBitrate should be a Number`;\n },\n get subtitleLanguage() {\n return `${this.ctor} options.subtitleLanguage should be a String with length`;\n },\n get subtitleName() {\n return `${this.ctor} options.subtitleName should be should be a String with length`;\n },\n get subtitleVisibility() {\n return `${this.ctor} options.subtitleVisibility should be a Boolean`;\n },\n get videoCodec() {\n return `${this.ctor} options.videoCodec should be a String with length`;\n },\n get videoRange() {\n return `${this.ctor} options.videoRange should be a String with length`;\n },\n get videoPlayerName() {\n return `${this.ctor} options.videoPlayerName should be a String with length`;\n },\n get videoPlayerVersion() {\n return `${this.ctor} options.videoPlayerVersion should be a String with length`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, audioChannels = null, audioCodec = null, audioLanguage = null } = options;\n const { audioName = null, playhead = null, startBitrate = null, subtitleLanguage = null } = options;\n const { subtitleName = null, subtitleVisibility = null, videoCodec = null, videoRange = null } = options;\n const { videoPlayerName = null, videoPlayerVersion = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n if (Check.assigned(audioChannels)) {\n number(audioChannels, errorMessage.audioChannels, InvalidArgumentException);\n }\n\n if (Check.assigned(audioCodec)) {\n nonEmptyString(audioCodec, errorMessage.audioCodec, InvalidArgumentException);\n }\n\n if (Check.assigned(audioLanguage)) {\n nonEmptyString(audioLanguage, errorMessage.audioLanguage, InvalidArgumentException);\n }\n\n if (Check.assigned(audioName)) {\n nonEmptyString(audioName, errorMessage.audioName, InvalidArgumentException);\n }\n\n if (Check.assigned(playhead)) {\n number(playhead, errorMessage.playhead, InvalidArgumentException);\n }\n\n if (Check.assigned(startBitrate)) {\n number(startBitrate, errorMessage.startBitrate, InvalidArgumentException);\n }\n\n if (Check.assigned(subtitleLanguage)) {\n nonEmptyString(subtitleLanguage, errorMessage.subtitleLanguage, InvalidArgumentException);\n }\n\n if (Check.assigned(subtitleName)) {\n nonEmptyString(subtitleName, errorMessage.subtitleName, InvalidArgumentException);\n }\n\n if (Check.assigned(subtitleVisibility)) {\n boolean(subtitleVisibility, errorMessage.subtitleVisibility, InvalidArgumentException);\n }\n\n if (Check.assigned(videoCodec)) {\n nonEmptyString(videoCodec, errorMessage.videoCodec, InvalidArgumentException);\n }\n\n if (Check.assigned(videoRange)) {\n nonEmptyString(videoRange, errorMessage.videoRange, InvalidArgumentException);\n }\n\n if (Check.assigned(videoPlayerName)) {\n nonEmptyString(videoPlayerName, errorMessage.videoPlayerName, InvalidArgumentException);\n }\n\n if (Check.assigned(videoPlayerVersion)) {\n nonEmptyString(videoPlayerVersion, errorMessage.videoPlayerVersion, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n * @desc Audio channels as defined by the selected playlist variant\n *\n */\n this.audioChannels = audioChannels;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Audio codec as defined by the selected playlist variant\n *\n */\n this.audioCodec = audioCodec;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Audio language as defined by the selected audio rendition\n *\n */\n this.audioLanguage = audioLanguage;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Audio name as defined by the selected audio rendition\n *\n */\n this.audioName = audioName;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n * @desc The location of the current playhead, measured as a millisecond offset from the start time.\n *\n */\n this.playhead = playhead;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n * @desc Starting bitrate (in bps), if set by application.\n *\n */\n this.startBitrate = startBitrate;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Subtitle language as defined by a variant playlist\n *\n */\n this.subtitleLanguage = subtitleLanguage;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Name of the subtitle\n *\n */\n this.subtitleName = subtitleName;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean|null}\n * @desc Subtitle visibility\n *\n */\n this.subtitleVisibility = subtitleVisibility;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Video codec as defined by a variant playlist.\n *\n */\n this.videoCodec = videoCodec;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Video range as defined by a variant playlist.\n *\n */\n this.videoRange = videoRange;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc The name of the video player used to play a stream\n *\n */\n this.videoPlayerName = videoPlayerName;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc The version of the video player used to play a stream\n *\n */\n this.videoPlayerVersion = videoPlayerVersion;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackInitializedEventData.js","/**\n *\n * @module playbackPausedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.PlaybackPausedEventData\n * @since 4.0.0\n * @desc This event represents a player pause.\n *\n */\nexport default class PlaybackPausedEventData {\n\n /**\n *\n * @param {String} [playbackSessionId=null]\n *\n */\n constructor(playbackSessionId = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(playbackSessionId)`,\n get playbackSessionId() {\n return `${this.ctor} playbackSessionId should be a String with length`;\n }\n };\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackPausedEventData.js","/**\n *\n * @module playbackReadyEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n number\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.PlaybackReadyEventData\n * @since 4.0.0\n * @desc This event represents that the player is ready to play. Generated when enough\n * media has been buffered for playback to begin.\n *\n */\nexport default class PlaybackReadyEventData {\n\n /**\n *\n * @param {Number} [bufferedTime=null]\n * @note playbackSessionId is not included as part of the constructor due to it being used directly\n *\n */\n constructor(bufferedTime = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(bufferedTime)`,\n get bufferedTime() {\n return `${this.ctor} bufferedTime should be a Number`;\n }\n };\n\n if (Check.assigned(bufferedTime)) {\n number(bufferedTime, errorMessage.bufferedTime, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = null;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n * @desc The total number of seconds of buffered media available for playback.\n *\n */\n this.bufferedTime = bufferedTime;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackReadyEventData.js","/**\n *\n * @module playbackResumedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.PlaybackResumedEventData\n * @since 4.0.0\n * @desc These events represent playback related events. This event represents a player resume.\n *\n */\nexport default class PlaybackResumedEventData {\n\n /**\n *\n * @param {String} [playbackSessionId=null]\n *\n */\n constructor(playbackSessionId = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(playbackSessionId)`,\n get playbackSessionId() {\n return `${this.ctor} playbackSessionId should be a String with length`;\n }\n };\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackResumedEventData.js","/**\n *\n * @module playbackSampledEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport BitrateType from './bitrateType';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n includes,\n nonEmptyString,\n number,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.PlaybackSampledEventData\n * @since 4.0.0\n * @desc These events represent playback related events. This event represents current metadata about playback.\n *\n */\nexport default class PlaybackSampledEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {Number} [options.playhead=null]\n * @param {Number} [options.currentBitrate=null]\n * @param {SDK.QualityOfService.BitrateType} [options.bitrateType=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get playhead() {\n return `${this.ctor} options.playhead should be a Number`;\n },\n get currentBitrate() {\n return `${this.ctor} options.currentBitrate should be a Number`;\n },\n get bitrateType() {\n return `${this.ctor} options.bitrateType should be a member of SDK.QualityOfService.BitrateType`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, playhead = null, currentBitrate = null, bitrateType = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n if (Check.assigned(playhead)) {\n number(playhead, errorMessage.playhead, InvalidArgumentException);\n }\n\n if (Check.assigned(currentBitrate)) {\n number(currentBitrate, errorMessage.currentBitrate, InvalidArgumentException);\n }\n\n if (Check.assigned(bitrateType)) {\n includes(BitrateType, bitrateType, errorMessage.bitrateType, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n * @desc The location of the current playhead, measured as a millisecond offset from the start time.\n *\n */\n this.playhead = playhead;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n * @desc Current playing bitrate as reported by player (in bps).\n *\n */\n this.currentBitrate = currentBitrate;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.BitrateType|null}\n * @desc Average or peak (average is default). If known, we should indicate whether\n * this is the average (e.g. `AVERAGE-BANDWIDTH`) or peak (e.g. `BANDWIDTH`)\n * Alternatively, could apply logic on the backend to disambiguate based on known player behavior.\n *\n */\n this.bitrateType = bitrateType;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackSampledEventData.js","/**\n *\n * @module playbackSeekedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport PlaybackSeekCause from './playbackSeekCause';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n includes,\n nonEmptyString,\n number,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.PlaybackSeekedEventData\n * @since 4.0.0\n * @desc These events represent playback related events. This event represents a player seek.\n *\n */\nexport default class PlaybackSeekedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {SDK.QualityOfService.PlaybackSeekCause} [options.cause=null]\n * @param {Number} [options.fromPlayhead=null]\n * @param {Number} [options.toPlayhead=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get cause() {\n return `${this.ctor} options.cause should be a member of SDK.QualityOfService.PlaybackSeekCause`;\n },\n get fromPlayhead() {\n return `${this.ctor} options.fromPlayhead should be a Number`;\n },\n get toPlayhead() {\n return `${this.ctor} options.toPlayhead should be a Number`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, cause = null, fromPlayhead = null, toPlayhead = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n if (Check.assigned(cause)) {\n includes(PlaybackSeekCause, cause, errorMessage.cause, InvalidArgumentException);\n }\n\n if (Check.assigned(fromPlayhead)) {\n number(fromPlayhead, errorMessage.fromPlayhead, InvalidArgumentException);\n }\n\n if (Check.assigned(toPlayhead)) {\n number(toPlayhead, errorMessage.toPlayhead, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.PlaybackSeekCause|null}\n * @desc Reason playback seeked.\n *\n */\n this.cause = cause;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n * @desc The location of the previous playhead, measured as a millisecond offset from the start time.\n *\n */\n this.fromPlayhead = fromPlayhead;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Number|null}\n * @desc The location of the new playhead, measured as a millisecond offset from the start time.\n *\n */\n this.toPlayhead = toPlayhead;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackSeekedEventData.js","/**\n *\n * @module playbackSelectedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport PlaybackIntent from './playbackIntent';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean,\n includes,\n nonEmptyObject,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.PlaybackSelectedEventData\n * @since 4.0.0\n * @desc A playback session starts when a user attempts to play media (audio or video)\n * and ends when the media completes.\n *\n */\nexport default class PlaybackSelectedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {SDK.QualityOfService.PlaybackIntent} [options.playbackIntent=null]\n * @param {Boolean} [options.preBuffer=null]\n * @param {Boolean} [options.offline=false]\n * @param {Object} [options.data=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get playbackIntent() {\n return `${this.ctor} options.playbackIntent should be a member of SDK.QualityOfService.PlaybackIntent`;\n },\n get preBuffer() {\n return `${this.ctor} options.preBuffer should be a Boolean`;\n },\n get offline() {\n return `${this.ctor} options.offline should be a Boolean`;\n },\n get data() {\n return `${this.ctor} options.data should be a non-empty Object`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, playbackIntent = null, preBuffer = null } = options;\n const { offline = false, data = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n if (Check.assigned(playbackIntent)) {\n includes(PlaybackIntent, playbackIntent, errorMessage.playbackIntent, InvalidArgumentException);\n }\n\n if (Check.assigned(preBuffer)) {\n boolean(preBuffer, errorMessage.preBuffer, InvalidArgumentException);\n }\n\n boolean(offline, errorMessage.offline, InvalidArgumentException);\n\n if (Check.assigned(data)) {\n nonEmptyObject(data, errorMessage.data, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.PlaybackIntent|null}\n * @desc PlaybackIntent The intent which started playback.\n *\n */\n this.playbackIntent = playbackIntent;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean|null}\n * @desc Pre-buffering means that a video is loaded without intending to show\n * it right away. e.g. as a viewer approaches the end of playback for an\n * episode, the app may decide to pre-buffer the next video so it starts playback\n * quickly once the current video ends.\n *\n */\n this.preBuffer = preBuffer;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean}\n * @desc True if the media is being played from a local source, e.g. it has been\n * downloaded for offline playback or was bundled in the application.\n *\n */\n this.offline = offline;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Object|null}\n * @desc Additional partner specific data provided with the playback selection event.\n *\n */\n this.data = data;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackSelectedEventData.js","/**\n *\n * @module playbackSessionTransferredEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.PlaybackSessionTransferredEventData\n * @since 4.0.0\n * @desc This event represents a transfer of playback from the current device to another\n * device, e.g. a Chromecast- or Airplay-capable device.\n *\n */\nexport default class PlaybackSessionTransferredEventData {\n\n /**\n *\n * @param {String} [playbackSessionId=null]\n *\n */\n constructor(playbackSessionId = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(playbackSessionId)`,\n get playbackSessionId() {\n return `${this.ctor} playbackSessionId should be a String with length`;\n }\n };\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackSessionTransferredEventData.js","/**\n *\n * @module playbackStartedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.PlaybackStartedEventData\n * @since 4.0.0\n * @desc This event represents playback has begun.\n *\n */\nexport default class PlaybackStartedEventData {\n\n /**\n *\n * @param {String} [playbackSessionId=null]\n *\n */\n constructor(playbackSessionId = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(playbackSessionId)`,\n get playbackSessionId() {\n return `${this.ctor} playbackSessionId should be a String with length`;\n }\n };\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/playbackStartedEventData.js","/**\n *\n * @module rebufferingStartedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.RebufferingStartedEventData\n * @since 4.0.0\n * @desc This event indicates that the player has started rebuffering.\n *\n */\nexport default class RebufferingStartedEventData {\n\n /**\n *\n * @param {String} [playbackSessionId=null]\n *\n */\n constructor(playbackSessionId = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(playbackSessionId)`,\n get playbackSessionId() {\n return `${this.ctor} playbackSessionId should be a String with length`;\n }\n };\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/rebufferingStartedEventData.js","/**\n *\n * @module rebufferingEndedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.RebufferingEndedEventData\n * @since 4.0.0\n * @desc This event represents the player has stopped rebuffering.\n *\n */\nexport default class RebufferingEndedEventData {\n\n /**\n *\n * @param {String} [playbackSessionId=null]\n *\n */\n constructor(playbackSessionId = null) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(playbackSessionId)`,\n get playbackSessionId() {\n return `${this.ctor} playbackSessionId should be a String with length`;\n }\n };\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/rebufferingEndedEventData.js","/**\n *\n * @module subtitleChangedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.SubtitleChangedEventData\n * @since 4.0.0\n * @desc These events represent playback related events. This event represents a subtitle stream change.\n *\n */\nexport default class SubtitleChangedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {String} [options.subtitleLanguage=null]\n * @param {String} [options.subtitleName=null]\n * @param {Boolean} [options.subtitleVisibility=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get subtitleLanguage() {\n return `${this.ctor} options.subtitleLanguage should be a String with length`;\n },\n get subtitleName() {\n return `${this.ctor} options.subtitleName should be a String with length`;\n },\n get subtitleVisibility() {\n return `${this.ctor} options.subtitleVisibility should be a Boolean`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, subtitleLanguage = null } = options;\n const { subtitleName = null, subtitleVisibility = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n if (Check.assigned(subtitleLanguage)) {\n nonEmptyString(subtitleLanguage, errorMessage.subtitleLanguage, InvalidArgumentException);\n }\n\n if (Check.assigned(subtitleName)) {\n nonEmptyString(subtitleName, errorMessage.subtitleName, InvalidArgumentException);\n }\n\n if (Check.assigned(subtitleVisibility)) {\n boolean(subtitleVisibility, errorMessage.subtitleVisibility, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Subtitle language as defined by a variant playlist\n *\n */\n this.subtitleLanguage = subtitleLanguage;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Name of the subtitle\n *\n */\n this.subtitleName = subtitleName;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean|null}\n * @desc Subtitle visibility\n *\n */\n this.subtitleVisibility = subtitleVisibility;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/subtitleChangedEventData.js","/**\n *\n * @module variantPlaylistFetchedEventData\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../services/entry';\n\nimport ServerRequest from './serverRequest';\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n boolean,\n instanceStrict,\n nonEmptyString,\n object\n} = Check.assert;\n\n/**\n *\n * @class SDK.QualityOfService.VariantPlaylistFetchedEventData\n * @since 4.0.0\n * @desc This event represents a fetch of a resource on the network. This event represents a fetch of a variant m3u8.\n *\n */\nexport default class VariantPlaylistFetchedEventData {\n\n /**\n *\n * @param {Object} [options={}]\n * @param {String} [options.playbackSessionId=null]\n * @param {Boolean} [options.offline=false]\n * @param {String} [options.averageBandwidth=null]\n * @param {String} [options.bandwidth=null]\n * @param {String} [options.channels=null]\n * @param {String} [options.name=null]\n * @param {String} [options.language=null]\n * @param {String} [options.type=null]\n * @param {String} [options.resolution=null]\n * @param {SDK.QualityOfService.ServerRequest} [options.serverRequest=null]\n *\n */\n constructor(options = {}) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get offline() {\n return `${this.ctor} options.offline should be a Boolean`;\n },\n get averageBandwidth() {\n return `${this.ctor} options.averageBandwidth should be a String with length`;\n },\n get bandwidth() {\n return `${this.ctor} options.bandwidth should be a String with length`;\n },\n get channels() {\n return `${this.ctor} options.channels should be a String with length`;\n },\n get name() {\n return `${this.ctor} options.name should be a String with length`;\n },\n get language() {\n return `${this.ctor} options.language should be a String with length`;\n },\n get type() {\n return `${this.ctor} options.type should be a String with length`;\n },\n get resolution() {\n return `${this.ctor} options.resolution should be a String with length`;\n },\n get serverRequest() {\n return `${this.ctor} options.serverRequest should be an instance of SDK.QualityOfService.ServerRequest`;\n }\n };\n\n object(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId = null, offline = false, averageBandwidth = null, bandwidth = null } = options;\n const { channels = null, name = null, language = null, type = null } = options;\n const { resolution = null, serverRequest = null } = options;\n\n if (Check.assigned(playbackSessionId)) {\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n }\n\n boolean(offline, errorMessage.offline, InvalidArgumentException);\n\n if (Check.assigned(averageBandwidth)) {\n nonEmptyString(averageBandwidth, errorMessage.averageBandwidth, InvalidArgumentException);\n }\n\n if (Check.assigned(bandwidth)) {\n nonEmptyString(bandwidth, errorMessage.bandwidth, InvalidArgumentException);\n }\n\n if (Check.assigned(channels)) {\n nonEmptyString(channels, errorMessage.channels, InvalidArgumentException);\n }\n\n if (Check.assigned(name)) {\n nonEmptyString(name, errorMessage.name, InvalidArgumentException);\n }\n\n if (Check.assigned(language)) {\n nonEmptyString(language, errorMessage.language, InvalidArgumentException);\n }\n\n if (Check.assigned(type)) {\n nonEmptyString(type, errorMessage.type, InvalidArgumentException);\n }\n\n if (Check.assigned(resolution)) {\n nonEmptyString(resolution, errorMessage.resolution, InvalidArgumentException);\n }\n\n if (Check.assigned(serverRequest)) {\n instanceStrict(serverRequest, ServerRequest, errorMessage.serverRequest, InvalidArgumentException);\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc client generated ID of the stream/playback session\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {Boolean}\n * @desc True if the media is being played from a local source, e.g. it has\n * been downloaded for offline playback or was bundled in the application.\n *\n */\n this.offline = offline;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Value of `AVERAGE-BANDWIDTH` attribute of variant playlist (if a video variant).\n *\n */\n this.averageBandwidth = averageBandwidth;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Value of `BANDWIDTH` attribute of variant playlist\n *\n */\n this.bandwidth = bandwidth;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Value of `CHANNELS` attribute of variant playlist (if an audio variant).\n *\n */\n this.channels = channels;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Value of `NAME` attribute (for audio and subtitle variants).\n *\n */\n this.name = name;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Value of `LANGUAGE` attribute (for audio and subtitle variants).\n *\n */\n this.language = language;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc What type of content a media segment contains.\n *\n */\n this.type = type;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {String|null}\n * @desc Resolution as defined by a variant playlist.\n *\n */\n this.resolution = resolution;\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @type {SDK.QualityOfService.ServerRequest|null}\n * @desc Data about a request/response to a server.\n *\n */\n this.serverRequest = serverRequest;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/qualityOfService/variantPlaylistFetchedEventData.js","/**\n *\n * @module atvFairPlayDrmProvider\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md#fairplay\n * @see https://github.bamtech.co/services-commons/mdrm/blob/master/FairPlayStreaming_PG.pdf\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport FairPlayDrmProvider from './fairPlayDrmProvider';\nimport AtvFairPlayCertificateStorage from './atvFairPlayCertificateStorage';\n\nconst Util = Services.Util;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class AtvFairPlayDrmProvider\n * @desc FairPlay is the Apple content encryption standard.\n * @since 3.3.3\n *\n */\nexport default class AtvFairPlayDrmProvider extends FairPlayDrmProvider {\n\n /**\n *\n * @param {SDK.Drm.DrmManager} provider\n * @param {SDK.Token.TokenManager} tokenManager\n * @param {SDK.Logging.Logger} logger\n *\n */\n constructor(provider, tokenManager, logger = Logging) {\n\n super(provider, tokenManager, logger);\n\n /**\n *\n * @access private\n * @type {AtvFairPlayCertificateStorage}\n * @desc references the Storage API to get/set a certificate\n *\n */\n this.certificateStorage = new AtvFairPlayCertificateStorage(\n Util.getSafe(() => this.provider.clientId),\n Util.getSafe(() => this.provider.environment),\n Util.getSafe(() => this.provider.storage),\n this.logger\n );\n\n this.logger.log(AtvFairPlayDrmProvider.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @param {String} serverPlaybackContext\n * @desc Gets a license required for decrypting FairPlay protected content.\n * @emits {MediaFailure} - Raised when the method fails, describing the cause of the problem.\n * @returns {Promise>}\n *\n */\n getFairPlayLicense(serverPlaybackContext) {\n\n const errorMessage = {\n method: 'AtvFairPlayDrmProvider.getFairPlayLicense(serverPlaybackContext)',\n get serverPlaybackContext() {\n return `${this.method} serverPlaybackContext should be a String with length`;\n }\n };\n\n nonEmptyString(serverPlaybackContext, errorMessage.serverPlaybackContext, InvalidArgumentException);\n\n const { provider, logger, failureEvent, playbackContext } = this;\n\n return provider.getFairPlayLicense(serverPlaybackContext, playbackContext).then((data) => {\n\n return Promise.resolve(data);\n\n }).catch((exception) => {\n\n logger.error(AtvFairPlayDrmProvider.name, 'FairPlay license request failure.');\n logger.info(AtvFairPlayDrmProvider.name, `Dispatch ${failureEvent} event.`);\n\n this.emit(failureEvent, exception);\n\n return Promise.reject(exception);\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/atvFairPlayDrmProvider.js","/**\n *\n * @module playReadyDrmProvider\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md#playready\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\nimport DrmProvider from './drmProvider';\nimport DrmManager from './drmManager';\n\nconst Util = Services.Util;\nconst TokenManager = Token.TokenManager;\nconst DrmClientEndpoint = Services.Drm.DrmClientEndpoint;\nconst DrmType = Services.Media.DrmType;\nconst PlayReadyMessage = Services.Drm.PlayReadyMessage;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n object,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class PlayReadyDrmProvider\n * @since 3.2.0\n * @desc PlayReady is the Microsoft content encryption standard.\n *\n */\nexport default class PlayReadyDrmProvider extends DrmProvider {\n\n /**\n *\n * @param {SDK.Drm.DrmManager} provider\n * @param {SDK.Token.TokenManager} tokenManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(provider, tokenManager, logger = Logging) {\n\n const errorMessage = {\n ctor: 'PlayReadyDrmProvider(provider, tokenManager, logger)',\n get provider() {\n return `${this.ctor} needs valid provider SDK.Drm.DrmManager instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n }\n };\n\n instanceStrict(provider, DrmManager, errorMessage.provider, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n\n super(provider, tokenManager, logger);\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.licenseRequestUri = Util.getSafe(() => {\n return provider.config.client.endpoints[DrmClientEndpoint.playReadyLicense].href;\n }, '');\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.licenseRequestHeaders = Util.getSafe(() => {\n return provider.config.client.endpoints[DrmClientEndpoint.playReadyLicense].headers;\n }, {});\n\n /**\n *\n * @access private\n * @type {String}\n * @desc DRM identifier String\n *\n */\n this.type = DrmType.PLAYREADY;\n\n this.logger.log(PlayReadyDrmProvider.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {Object} [body={}]\n * @desc Gets a license required for decrypting PlayReady protected content.\n * @emits {MediaFailure} - Raised when the method fails, describing the cause of the problem.\n * @returns {Promise>}\n *\n */\n getPlayReadyLicense(body = {}) {\n\n const errorMessage = {\n method: 'PlayReadyDrmProvider.getPlayReadyLicense(body)',\n get body() {\n return `${this.method} body should be an Object`;\n }\n };\n\n object(body, errorMessage.body, InvalidArgumentException);\n\n const { provider, logger, licenseRequestHeaders, failureEvent, playbackContext } = this;\n const message = new PlayReadyMessage(body, licenseRequestHeaders);\n\n return provider.getPlayReadyLicense(message, playbackContext).then((data) => {\n\n return Promise.resolve(data);\n\n }).catch((exception) => {\n\n logger.error(PlayReadyDrmProvider.name, 'PlayReady license request failure.');\n logger.info(PlayReadyDrmProvider.name, `Dispatch ${failureEvent} event.`);\n\n this.emit(failureEvent, exception);\n\n return Promise.reject(exception);\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/playReadyDrmProvider.js","/**\n *\n * @module silkDrmProvider\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\nimport DrmManager from './drmManager';\nimport DrmProvider from './drmProvider';\n\nconst TokenManager = Token.TokenManager;\nconst DrmType = Services.Media.DrmType;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SilkDrmProvider\n * @since 3.2.0\n * @desc SILK is the existing encryption key mechanism.\n * @note A new key service will be introduced as part of the DRM service, but\n * will be fully backwards-compatible with the existing key service.\n * @note In previous versions of the SDK, a EncryptionKeyProvider existed with the same functionality.\n *\n */\nexport default class SilkDrmProvider extends DrmProvider {\n\n /**\n *\n * @param {SDK.Drm.DrmManager} provider\n * @param {SDK.Token.TokenManager} tokenManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(provider, tokenManager, logger = Logging) {\n\n const errorMessage = {\n ctor: 'SilkDrmProvider(provider, tokenManager, logger)',\n get provider() {\n return `${this.ctor} needs valid provider SDK.Drm.DrmManager instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n }\n };\n\n instanceStrict(provider, DrmManager, errorMessage.provider, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n\n super(provider, tokenManager, logger);\n\n /**\n *\n * @access private\n * @type {String}\n * @desc DRM identifier String\n *\n */\n this.type = DrmType.SILK;\n\n this.logger.log(SilkDrmProvider.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {String} uri - The encryption key endpoint.\n * @desc Gets the current encryption key via the media service.\n * @emits {MediaFailure} - Raised when a SILK key request fails describing the cause of the problem.\n * @returns {Promise>}\n *\n */\n getSilkKey(uri) {\n\n const errorMessage = {\n method: 'SilkDrmProvider.getSilkKey(uri)',\n get uri() {\n return `${this.method} uri should be a String with length`;\n }\n };\n\n nonEmptyString(uri, errorMessage.uri, InvalidArgumentException);\n\n const { provider, logger, failureEvent, playbackContext } = this;\n\n return provider.getSilkKey(uri, playbackContext).then((silkKey) => {\n\n return Promise.resolve(silkKey);\n\n }).catch((exception) => {\n\n logger.error(SilkDrmProvider.name, 'SILK key request failure.');\n logger.info(SilkDrmProvider.name, `Dispatch ${failureEvent} event.`);\n\n this.emit(failureEvent, exception);\n\n return Promise.reject(exception);\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/silkDrmProvider.js","/**\n *\n * @module widevineDrmProvider\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/drm.md#widevine\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\nimport DrmProvider from './drmProvider';\nimport DrmManager from './drmManager';\nimport WidevineCertificateStorage from './widevineCertificateStorage';\n\nconst Util = Services.Util;\nconst TokenManager = Token.TokenManager;\nconst DrmClientEndpoint = Services.Drm.DrmClientEndpoint;\nconst DrmType = Services.Media.DrmType;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class WidevineDrmProvider\n * @desc Widevine is Google's content encryption standard.\n * @since 3.2.0\n *\n */\nexport default class WidevineDrmProvider extends DrmProvider {\n\n /**\n *\n * @param {SDK.Drm.DrmManager} provider\n * @param {SDK.Token.TokenManager} tokenManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(provider, tokenManager, logger = Logging) {\n\n const errorMessage = {\n ctor: 'WidevineDrmProvider(provider, tokenManager, logger)',\n get provider() {\n return `${this.ctor} needs valid provider SDK.Drm.DrmManager instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n }\n };\n\n instanceStrict(provider, DrmManager, errorMessage.provider, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n\n super(provider, tokenManager, logger);\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.licenseRequestUri = Util.getSafe(() => {\n return provider.config.client.endpoints[DrmClientEndpoint.widevineLicense].href;\n }, '');\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.licenseRequestHeaders = Util.getSafe(() => {\n return provider.config.client.endpoints[DrmClientEndpoint.widevineLicense].headers;\n }, {});\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.certificateUri = Util.getSafe(() => {\n return provider.config.client.endpoints[DrmClientEndpoint.widevineCertificate].href;\n }, '');\n\n /**\n *\n * @access private\n * @type {Object}\n *\n */\n this.certificateHeaders = Util.getSafe(() => {\n return provider.config.client.endpoints[DrmClientEndpoint.widevineCertificate].headers;\n }, {});\n\n /**\n *\n * @access private\n * @type {String}\n * @desc DRM identifier String\n *\n */\n this.type = DrmType.WIDEVINE;\n\n /**\n *\n * @access private\n * @type {WidevineCertificateStorage}\n * @desc references the Storage API to get/set a certificate\n *\n */\n this.certificateStorage = new WidevineCertificateStorage(\n Util.getSafe(() => this.provider.clientId),\n Util.getSafe(() => this.provider.environment),\n Util.getSafe(() => this.provider.storage),\n this.logger\n );\n\n this.logger.log(WidevineDrmProvider.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {Array} buffer\n * @desc Gets a license required for decrypting Widevine protected content.\n * @emits {MediaFailure} - Raised when the method fails, describing the cause of the problem.\n * @returns {Promise>}\n *\n */\n getWidevineLicense(buffer) {\n\n const errorMessage = {\n method: 'WidevineDrmProvider.getWidevineLicense(buffer)',\n get buffer() {\n return `${this.method} buffer should be an ArrayBuffer view`;\n }\n };\n\n Check.assert(ArrayBuffer.isView(buffer), errorMessage.buffer, InvalidArgumentException);\n\n const { provider, logger, failureEvent, playbackContext } = this;\n\n return provider.getWidevineLicense(buffer, playbackContext).then((data) => {\n\n return Promise.resolve(data);\n\n }).catch((exception) => {\n\n logger.error(WidevineDrmProvider.name, 'Widevine license request failure.');\n logger.info(WidevineDrmProvider.name, `Dispatch ${failureEvent} event.`);\n\n this.emit(failureEvent, exception);\n\n return Promise.reject(exception);\n\n });\n\n }\n\n /**\n *\n * @access public\n * @desc Gets a certificate required for decrypting Widevine protected content. First we attempt to retreive the\n * certificate from storage, if that does not exist we make a new request for a new certificate, store that and\n * then return the certificate.\n * @emits {MediaFailure} - Raised when the method fails, describing the cause of the problem.\n * @returns {Promise>}\n *\n */\n getWidevineCertificate() {\n\n const { provider, logger, failureEvent, certificateStorage } = this;\n\n return certificateStorage.getStoredCertificate().then((storedCertificate) => {\n\n if (Check.assigned(storedCertificate)) {\n\n return Promise.resolve(storedCertificate);\n\n } else {\n\n return provider.getWidevineCertificate().then((certificate) => {\n\n return certificateStorage.storeCertificate(certificate).then(() => {\n return certificateStorage.getStoredCertificate();\n });\n\n }).catch((exception) => {\n\n logger.error(WidevineDrmProvider.name, 'Widevine certificate request failure.');\n logger.info(WidevineDrmProvider.name, `Dispatch ${failureEvent} event.`);\n\n this.emit(failureEvent, exception);\n\n return Promise.reject(exception);\n\n });\n }\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/drm/widevineDrmProvider.js","/**\n *\n * @module eligibilityManager\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\n\nconst AccessTokenProvider = Token.AccessTokenProvider;\nconst EligibilityManagerConfiguration = Services.Configuration.EligibilityManagerConfiguration;\nconst EligibilityClient = Services.Eligibility.EligibilityClient;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class EligibilityManager\n * @since 4.2.0\n *\n */\nexport default class EligibilityManager {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Services.Configuration.EligibilityManagerConfiguration} options.config\n * @param {SDK.Services.Eligibility.EligibilityClient} options.client\n * @param {SDK.Logging.Logger} [options.logger=Logging]\n * @param {SDK.Token.AccessTokenProvider} options.accessTokenProvider\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get config() {\n return `${this.ctor} needs SDK.Services.Configuration.EligibilityManagerConfiguration instance`;\n },\n get client() {\n return `${this.ctor} needs SDK.Services.Eligibility.EligibilityClient instance`;\n },\n get logger() {\n return `${this.ctor} needs SDK.Logger instance`;\n },\n get accessTokenProvider() {\n return `${this.ctor} needs SDK.Token.AccessTokenProvider instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { config, client, accessTokenProvider, logger = Logging } = options;\n\n instanceStrict(config, EligibilityManagerConfiguration, errorMessage.config, InvalidArgumentException);\n instanceStrict(client, EligibilityClient, errorMessage.client, InvalidArgumentException);\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n instanceStrict(\n accessTokenProvider,\n AccessTokenProvider,\n errorMessage.accessTokenProvider,\n InvalidArgumentException\n );\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.Services.Configuration.EligibilityManagerConfiguration}\n *\n */\n this.config = config;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.Services.Eligibility.EligibilityClient}\n *\n */\n this.client = client;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.Token.AccessTokenProvider}\n *\n */\n this.accessTokenProvider = accessTokenProvider;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.log(EligibilityManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @returns {Promise}\n *\n */\n async getEligibilityStatus() {\n\n const { accessToken, client } = this;\n\n return await client.getEligibilityStatus(accessToken);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.accessTokenProvider.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/eligibility/eligibilityManager.js","/**\n *\n * @module externalActivationManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/external-activation.md\n *\n */\n\nimport Check from 'check-types';\n\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\n\nconst TokenManager = Token.TokenManager;\n\nconst ExternalActivationManagerConfiguration = Services.Configuration.ExternalActivationManagerConfiguration;\nconst ExternalActivationClient = Services.ExternalActivation.ExternalActivationClient;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class ExternalActivationManager\n * @since 4.2.0\n *\n */\nexport default class ExternalActivationManager {\n\n /**\n *\n * @param {SDK.Services.Configuration.ExternalActivationManagerConfiguration} options.config\n * @param {SDK.Services.ExternalActivation.ExternalActivationClient} options.client\n * @param {SDK.Token.TokenManager} options.tokenManager\n * @param {SDK.Logging.Logger} [options.logger=Logging]\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get config() {\n return `${this.ctor} needs SDK.Services.Configuration.ExternalActivationManagerConfiguration instance`;\n },\n get client() {\n return `${this.ctor} needs SDK.Services.ExternalActivation.ExternalActivationClient instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n },\n get logger() {\n return `${this.ctor} needs SDK.Logger instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { config, client, tokenManager, logger = Logging } = options;\n\n instanceStrict(config, ExternalActivationManagerConfiguration, errorMessage.config, InvalidArgumentException);\n instanceStrict(client, ExternalActivationClient, errorMessage.client, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.Services.Configuration.ExternalActivationManagerConfiguration}\n *\n */\n this.config = config;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.Services.ExternalActivation.ExternalActivationClient}\n *\n */\n this.client = client;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.log(ExternalActivationManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @param {String} activationTokenString\n * @returns {Promise}\n *\n */\n async activateToken(activationTokenString) {\n\n const errorMessage = {\n method: `${this.constructor.name}.activateToken(activationTokenString)`,\n get activationTokenString() {\n return `${this.method} activationTokenString should be a String with length`;\n }\n };\n\n nonEmptyString(activationTokenString, errorMessage.activationTokenString, InvalidArgumentException);\n\n const { client, accessToken } = this;\n\n const externalActivationResult = await client.activateToken(activationTokenString, accessToken);\n const forceRefresh = externalActivationResult.refreshAccessToken;\n\n if (forceRefresh) {\n await this.tokenManager.refreshAccessToken(forceRefresh);\n }\n\n return externalActivationResult;\n\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @returns {Promise}\n *\n */\n async getActivationToken() {\n\n const { client, accessToken } = this;\n\n return await client.getActivationToken(accessToken);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the TokenManager instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.tokenManager.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/externalActivation/externalActivationManager.js","/**\n *\n * @module entry\n * @desc {SDK.Identity.Adobe} entry point.\n *\n */\n\nimport AdobeIdentityApi from './adobeIdentityApi';\nimport AdobeIdentityManager from './adobeIdentityManager';\nimport AdobeRegistration from './adobeRegistration';\nimport AdobeActivationResult from './adobeActivationResult';\n\n/**\n *\n * @typedef SDK.Identity.Adobe\n * @type {Object}\n *\n * @property {AdobeIdentityApi} AdobeIdentityApi\n * @property {AdobeIdentityManager} AdobeIdentityManager\n * @property {AdobeRegistration} AdobeRegistration\n * @property {AdobeActivationResult} AdobeActivationResult\n *\n */\n\n/**\n *\n * @type {SDK.Identity.Adobe}\n *\n */\nexport default {\n\n AdobeIdentityApi,\n AdobeIdentityManager,\n AdobeRegistration,\n AdobeActivationResult\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/identity/adobe/entry.js","/**\n *\n * @module adobeIdentityApi\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Account from './../../account/entry';\nimport Token from './../../token/entry';\nimport Exception from './../../services/exception/entry';\nimport AdobeIdentityManager from './adobeIdentityManager';\n\nconst AccountManager = Account.AccountManager;\nconst TokenManager = Token.TokenManager;\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class AdobeIdentityApi\n * @desc Provides a way to get an Adobe identity activated.\n *\n */\nexport default class AdobeIdentityApi {\n\n /**\n *\n * @param {AdobeIdentityManager} adobeIdentityManager\n * @param {SDK.Token.TokenManager} tokenManager\n * @param {SDK.Account.AccountManager} accountManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(adobeIdentityManager, tokenManager, accountManager, logger = Logging) {\n\n const errorMessage = {\n ctor: 'AdobeIdentityApi(adobeIdentityManager, tokenManager, accountManager, logger)',\n get adobeIdentityManager() {\n return `${this.ctor} needs AdobeIdentityManager instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n },\n get accountManager() {\n return `${this.ctor} needs SDK.Account.AccountManager instance`;\n }\n };\n\n instanceStrict(adobeIdentityManager, AdobeIdentityManager, errorMessage.adobeIdentityManager, InvalidArgumentException); // eslint-disable-line\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n instanceStrict(accountManager, AccountManager, errorMessage.accountManager, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {AdobeIdentityManager}\n *\n */\n this.adobeIdentityManager = adobeIdentityManager;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @type {SDK.Account.AccountManager}\n *\n */\n this.accountManager = accountManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n this.logger.info(AdobeIdentityApi.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @desc Gets an AdobeRegistration instance with a code that can be\n * used to activate the identity.\n * @returns {Promise} Returns an AdobeRegistration that can\n * be passed to AdobeIdentityApi#activateRegistration to activate the identity.\n *\n */\n getRegistration() {\n\n return this.adobeIdentityManager.getRegistration();\n\n }\n\n /**\n *\n * @access public\n * @param {AdobeRegistration} adobeRegistration - The AdobeRegistration that\n * was generated for the identity.\n * @param {String} adobeId - The ID of the MVPD the identity is activating with.\n * @desc Activates the Adobe identity.\n * @returns {Promise} Returns an asynchronous action that will\n * send a notification when it is complete\n *\n */\n activateRegistration(adobeRegistration, adobeId) {\n\n return this.adobeIdentityManager.activateRegistration(adobeRegistration, adobeId);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/identity/adobe/adobeIdentityApi.js","/**\n *\n * @module adobeActivationResult\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\n\nconst IdentityToken = Services.Token.IdentityToken;\nconst TemporaryGrant = Services.Token.TemporaryGrant;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class AdobeActivationResult\n *\n */\nexport default class AdobeActivationResult {\n\n /**\n *\n * @param {SDK.Services.Token.IdentityToken} identityToken\n * @param {SDK.Services.Token.TemporaryGrant} temporaryGrant\n *\n */\n constructor(identityToken, temporaryGrant) {\n\n const errorMessage = {\n ctor: 'AdobeActivationResult(identityToken, temporaryGrant)',\n get identityToken() {\n return `${this.ctor} needs IdentityToken instance`;\n },\n get temporaryGrant() {\n return `${this.ctor} needs TemporaryGrant instance`;\n }\n };\n\n instanceStrict(identityToken, IdentityToken, errorMessage.identityToken, InvalidArgumentException);\n instanceStrict(temporaryGrant, TemporaryGrant, errorMessage.temporaryGrant, InvalidArgumentException);\n\n /**\n *\n * @access public\n * @type {SDK.Services.Token.IdentityToken}\n *\n */\n this.identityToken = identityToken;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Token.TemporaryGrant}\n *\n */\n this.temporaryGrant = temporaryGrant;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/identity/adobe/adobeActivationResult.js","/**\n *\n * @module entry\n * @desc {SDK.Identity.Bam} entry point.\n *\n */\n\nimport BamIdentityApi from './bamIdentityApi';\nimport BamIdentityManager from './bamIdentityManager';\n\n/**\n *\n * @typedef SDK.Identity.Bam\n * @type {Object}\n *\n * @property {BamIdentityApi} BamIdentityApi\n * @property {BamIdentityManager} BamIdentityManager\n *\n */\n\n/**\n *\n * @type {SDK.Identity.Bam}\n *\n */\nexport default {\n\n BamIdentityApi,\n BamIdentityManager\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/identity/bam/entry.js","/**\n *\n * @module bamIdentityApi\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/identity-bam.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/BamIdentityApi.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../../logging/entry';\nimport Services from './../../services/entry';\nimport BamIdentityManager from './bamIdentityManager';\n\nconst Util = Services.Util;\nconst Identity = Services.Identity.Bam.Identity;\nconst OneTimePasscodeRequestReason = Services.Identity.Bam.OneTimePasscodeRequestReason;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst BamIdentityApiDustUrnReference = Services.Internal.Dust.DustUrnReference.identity.bam.bamIdentityApi;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n string,\n nonEmptyObject,\n object,\n instanceStrict,\n nonEmptyString,\n includes\n} = Check.assert;\n\n/**\n *\n * @class BamIdentityApi\n * @desc Provides access to the BAMTECH identity services.\n *\n */\nexport default class BamIdentityApi {\n\n /**\n *\n * @param {BamIdentityManager} bamIdentityManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(bamIdentityManager, logger = Logging) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(bamIdentityManager, logger)`,\n get bamIdentityManager() {\n return `${this.ctor} needs BamIdentityManager instance`;\n }\n };\n\n instanceStrict(bamIdentityManager, BamIdentityManager, errorMessage.bamIdentityManager, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @type {BamIdentityManager}\n *\n */\n this.bamIdentityManager = bamIdentityManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => this.bamIdentityManager.client.dustEnabled);\n\n this.logger.info(BamIdentityApi.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @desc Indicates that authentication has not been performed recently, a requirement for some methods.\n * @returns {Boolean}\n *\n */\n requiresAuthentication() {\n\n const { bamIdentityManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.requiresAuthentication\n });\n\n return bamIdentityManager.requiresAuthentication().then((authenticationRequired) => {\n\n return Promise.resolve(authenticationRequired);\n\n }).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} email - The email associated with the identity.\n * @param {String} password - The password associated with the identity.\n * @desc Logs the user in with the BAMTECH identity service.\n * @note Creates Bam identity token, exchanges for an account grant,\n * and exchanges account grant for a new AccessContext.\n * @throws {InvalidCredentialsException} Incorrect email or password.\n * @note Request to get identity token returns HTTP 401 with error code: idp.error.identity.bad-credentials\n * @throws {AuthenticationBlockedException} The user's account should be blocked for being a minor or due to\n * inappropriate behavior.\n * @note Request to get identity token returns HTPP 403 with `code`: `idp.error.identity.blocked`\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the authenticate operation has succeeded.\n * @note Creates Bam identity token. App developers must exchange for an account grant and exchange account grant\n * for a new AccessContext via the AccountApi.\n *\n */\n authenticate(email, password) {\n\n const errorMessage = {\n method: `${this.constructor.name}.authenticate(email, password)`,\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get password() {\n return `${this.method} password should be a String with length`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.authenticate\n });\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(password, errorMessage.password, InvalidArgumentException);\n\n const { bamIdentityManager } = this;\n\n return bamIdentityManager.authenticate(email, password).then((identityToken) => {\n\n logger.info(BamIdentityApi.name, 'Authenticate completed successfully.');\n\n return Promise.resolve(identityToken);\n\n }).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {Object} options\n * @param {String} options.email - The email to create a new identity for.\n * @param {String} options.password - The password to create for the new identity.\n * @param {Object} [options.attributes]\n * @note {Object} [options.metadata={}] - Contains additional information about the created identity (ex: isTest)\n * indicates if the account being created is for testing purposes and should have a temporary lifespan\n * @desc Creates a Bam Identity with the credentials provided.\n * @note Registers a new Bam identity, obtains an identity token, creates a new account,\n * exchanges for an account grant, and exchanges account grant for a new AccessContext.\n * @throws {InvalidCredentialsException} The email address already exists and the password does not match.\n * @note Request to create new identity returns HTTP 4xx with error code: idp.error.identity.already-exists\n * and a subsequent request to authenticate returns HTTP 4xx with error code: idp.error.identity.bad-credentials\n * @throws {AttributeValidationException} One or more attributes supplied are invalid.\n * @note Request to create new identity returns HTTP 4xx with error code: payload.fields.incorrect\n * @throws {InvalidPasswordException} The user entered a password that does not meet the minimum password\n * requirements.\n * @note services returns a 400 with `code`: `idp.error.password.invalid-value\n * @throws {AuthenticationBlockedException} The user's account should be blocked for being a minor or due to\n * inappropriate behavior.\n * @note Request to get identity token returns HTPP 403 with `code`: `idp.error.identity.blocked`\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded.\n * @note Creates Bam identity token. App devs must exchange for an account grant and exchange account grant\n * for a new AccessContext via the AccountApi.\n *\n */\n createIdentity(options) {\n\n const errorMessage = {\n method: `${this.constructor.name}.createIdentity(options)`,\n get options() {\n return `${this.method} options should be a non-empty Object`;\n },\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get password() {\n return `${this.method} password should be a String with length`;\n },\n get attributes() {\n return `${this.method} attributes should be an Object`;\n },\n get metadata() {\n return `${this.method} metadata should be an Object`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.createIdentity\n });\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { email, password, attributes, metadata } = options;\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(password, errorMessage.password, InvalidArgumentException);\n\n if (Check.assigned(attributes)) {\n object(attributes, errorMessage.attributes, InvalidArgumentException);\n }\n\n if (Check.assigned(metadata)) {\n object(metadata, errorMessage.metadata, InvalidArgumentException);\n }\n\n const { bamIdentityManager } = this;\n\n return bamIdentityManager.createIdentity(options).then(() => {\n\n logger.info(BamIdentityApi.name, 'Created identity.');\n\n return this.authenticate(email, password);\n\n }).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} email - The email associated with the identity that needs to reset the password.\n * @desc Given an email for the user, requests a password reset email.\n * @note Requests a password reset with the bam identity service.\n * The rest of the flow is completed by the user after receiving the email.\n * @throws {IdentityNotFoundException} The identity could not be found\n * @note Inform user that their identity could not be found and may not exist.\n * @note Request to get identity token returns HTTP 4xx with error code: `idp.error.identity.not-found`\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded.\n *\n */\n requestPasswordReset(email) {\n\n const errorMessage = {\n method: `${this.constructor.name}.requestPasswordReset(email)`,\n get email() {\n return `${this.method} email should be a String with length`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.requestPasswordReset\n });\n\n string(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n\n const { bamIdentityManager } = this;\n\n return bamIdentityManager.requestPasswordReset(email).then(() => {\n\n logger.info(BamIdentityApi.name, 'Requested password reset.');\n\n return Promise.resolve();\n\n }).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} newPassword - The new password to associate with the existing identity.\n * @param {String} resetToken - The reset token provided via email to verify the owner of the account.\n * @desc Following a requestPasswordReset, use this method to update the\n * user's password with the token provided in the password reset email.\n * @note Requests a password update using the token supplied and the new password.\n * @throws {TokenAlreadyUsedException} Unable to use the reset token, it's already been used.\n * @note services returns a 4xx with code: idp.error.reset-token.already-used\n * @throws {TokenInvalidException} Unable to reset the password as the reset token isn't recognized by the service.\n * @note services returns a 4xx with code: idp.error.reset-token.invalid\n * @throws {InvalidPasswordException} The user entered a password that does not meet the minimum password\n * requirements.\n * @note services returns a 400 with `code`: `idp.error.password.invalid-value\n * @throws {IdentityNotFoundException} The identity could not be found\n * @note Inform user that their identity could not be found and may not exist.\n * @note Request to get identity token returns HTTP 4xx with error code: `idp.error.identity.not-found`\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded.\n *\n */\n resetPassword(newPassword, resetToken) {\n\n const errorMessage = {\n method: `${this.constructor.name}.resetPassword(newPassword, resetToken)`,\n get newPassword() {\n return `${this.method} newPassword should be a String with length`;\n },\n get resetToken() {\n return `${this.method} resetToken should be a String with length`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.resetPassword\n });\n\n string(newPassword, errorMessage.newPassword, InvalidArgumentException);\n nonEmptyString(newPassword, errorMessage.newPassword, InvalidArgumentException);\n string(resetToken, errorMessage.resetToken, InvalidArgumentException);\n nonEmptyString(resetToken, errorMessage.resetToken, InvalidArgumentException);\n\n const { bamIdentityManager } = this;\n\n return bamIdentityManager.resetPassword(newPassword, resetToken).then(() => {\n\n logger.info(BamIdentityApi.name, 'Reset password successfully.');\n\n return Promise.resolve();\n\n }).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} newEmail - The new email to change the identity to use.\n * @param {String} password - The current password for verification purposes.\n * @desc Updates the user's email for the BAM Identity. The current password\n * must be provided for verification. Requires user to have recently authenticated.\n * @note Gets an identity token using the login credentials, issues request to\n * change email using that identity token and the new email.\n * @throws {AuthenticationRequiredException} User has not authenticated recently and must log in again.\n * @note The security token for this operation is either missing, or has expired.\n * @throws {InvalidCredentialsException} Incorrect email or password.\n * @note Request to get identity token returns HTTP 401 with error code: idp.error.identity.bad-credentials\n * @throws {InvalidEmailException} The new email address is invalid.\n * @note Request to update email returns HTTP 4xx with error: idp.error.payload.fields.incorrect.\n * @throws {UpdateIdentityConflictException} The new email address is already taken.\n * @note Request to update email returns HTTP 4xx with error: idp.error.identity.already-exists.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded.\n *\n */\n updateEmail(newEmail, password) {\n\n const errorMessage = {\n method: `${this.constructor.name}.updateEmail(newEmail, password)`,\n get newEmail() {\n return `${this.method} newEmail should be a String with length`;\n },\n get password() {\n return `${this.method} password should be a String with length`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.updateEmail\n });\n\n nonEmptyString(newEmail, errorMessage.newEmail, InvalidArgumentException);\n nonEmptyString(password, errorMessage.password, InvalidArgumentException);\n\n const { bamIdentityManager } = this;\n\n return bamIdentityManager.changeEmail(newEmail, password).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} newPassword - The new password to associate with the current identity.\n * @param {String} [oldPassword] - The current password for verification purposes.\n * @desc Updates the user's password for the BAM Identity. The current password can\n * be provided for verification in non-OTP flows. Requires user to have recently authenticated.\n * @note Gets an identity token using the login credentials, issues request to\n * change password using that identity token and the new password.\n * @throws {InvalidPasswordException} The user entered a password that does not meet the minimum password\n * requirements.\n * @note services returns a 400 with `code`: `idp.error.password.invalid-value\n * @throws {AuthenticationRequiredException} User has not authenticated recently and must log in again.\n * @note The security token for this operation is either missing, or has expired.\n * @throws {InvalidCredentialsException} Incorrect email or password.\n * @note Request to get identity token returns HTTP 401 with error code: idp.error.identity.bad-credentials\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded.\n *\n */\n updatePassword(newPassword, oldPassword) {\n\n const errorMessage = {\n method: `${this.constructor.name}.updatePassword(newPassword, oldPassword)`,\n get newPassword() {\n return `${this.method} newPassword should be a String with length`;\n },\n get oldPassword() {\n return `${this.method} oldPassword should be a String with length`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.updatePassword\n });\n\n nonEmptyString(newPassword, errorMessage.newPassword, InvalidArgumentException);\n\n if (Check.assigned(oldPassword)) {\n nonEmptyString(oldPassword, errorMessage.oldPassword, InvalidArgumentException);\n }\n\n const { bamIdentityManager } = this;\n\n return bamIdentityManager.changePassword(newPassword, oldPassword).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @desc Gets the user's bam identity. Requires user to have recently authenticated.\n * @throws {AuthenticationRequiredException} User has not authenticated recently and must log in again.\n * @note The security token for this operation is either missing, or has expired.\n * @throws {IdentityNotFoundException} The identity could not be found\n * @note Inform user that their identity could not be found and may not exist.\n * @note Request to get identity token returns HTTP 4xx with error code: `idp.error.identity.not-found`\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n */\n getIdentity() {\n\n const { bamIdentityManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.updateEmail\n });\n\n return bamIdentityManager.getIdentity().then((identity) => {\n\n logger.info(BamIdentityApi.name, 'Identity retrieved successfully.');\n\n return Promise.resolve(identity);\n\n }).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @desc Updates the user's bam identity. Requires user to have recently authenticated.\n * @param {Identity} identity - The identity to be updated\n * @throws {AuthenticationRequiredException} User has not authenticated recently and must log in again.\n * @note The security token for this operation is either missing, or has expired.\n * @throws {AttributeUpdateFailedException} The attributes weren't updated due to required field removal\n * or failed validation.\n * @note Request returns a 4xx error with the code:idp.error.attributes.update.failed\n * @throws {IdentityNotFoundException} The identity could not be found\n * @note Inform user that their identity could not be found and may not exist.\n * @note Request to get identity token returns HTTP 4xx with error code: `idp.error.identity.not-found`\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n */\n updateIdentity(identity) {\n\n const errorMessage = {\n method: `${this.constructor.name}.updateIdentity(identity)`,\n get identity() {\n return `${this.method} needs Identity instance`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.updateIdentity\n });\n\n instanceStrict(identity, Identity, errorMessage.identity, InvalidArgumentException);\n\n const { bamIdentityManager } = this;\n\n return bamIdentityManager.updateAttributes(identity.attributes).then(() => {\n\n logger.info(BamIdentityApi.name, 'Updated Identity attributes successfully.');\n\n return Promise.resolve();\n\n }).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @desc Checks if the Bam Identity Service recognizes this OneId account\n * @param {String} email The email used to determine if an identity exists\n * @note Apps should perform the action returned from this call\n * @throws {InvalidEmailSyntaxException} Invalid email address syntax\n * @note Inform user that the email address wasn't valid and to fix the address and try again\n * @note Unexpected response from server.\n * @note The HTTP code is 400 and the `code` will be `idp.error.payload.fields.incorrect`\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise>} resolves with a list of actions that will\n * indicate if a user's email address is registered with BamIdp\n *\n */\n async getAuthenticationFlow(email) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getAuthenticationFlow(email)`,\n get email() {\n return `${this.method} email should be a String with length`;\n }\n };\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n\n const { bamIdentityManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.getAuthenticationFlow\n });\n\n try {\n\n return await bamIdentityManager.getAuthenticationFlow(email);\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @param {String} email - The email to send the passcode to.\n * @param {SDK.Services.Identity.Bam.OneTimePasscodeRequestReason} reason - The intended use of the passcode.\n * @desc Request that a one-time passcode be sent to an email address.\n * @throws {RateLimitedException} Too many requests.\n * @note Request to get identity token returns HTTP 400 with error code: `idp.error.auth.otp.throttled`\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: `unauthorized_client` and\n * error_description: `unknown-location`, `unreliable-location`, or `forbidden-location`.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n */\n async requestOneTimePasscode(email, reason) {\n\n const errorMessage = {\n method: `${this.constructor.name}.requestOneTimePasscode(email, reason)`,\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get reason() {\n return `${this.method} reason should be a valid SDK.Services.Identity.Bam.OneTimePasscodeRequestReason`;\n }\n };\n\n const { bamIdentityManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.requestOneTimePasscode,\n data: {\n reason\n }\n });\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n includes(OneTimePasscodeRequestReason, reason, errorMessage.reason, InvalidArgumentException);\n try {\n\n return await bamIdentityManager.requestOneTimePasscode(email, reason);\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @param {String} email - The email that received the passcode.\n * @param {String} passcode - The passcode sent to the email associated with the identity.\n * @desc Logs the user in with the BAM identity service.\n * @throws {InvalidPasscodeException} Invalid passcode.\n * @note Request to get identity token returns HTTP 4xx with error code: `idp.error.otp.invalid-passcode`\n * @throws {AuthenticationBlockedException} The user's account should be blocked for being a minor or due to\n * inappropriate behavior.\n * @note Request to get identity token returns HTPP 403 with `code`: `idp.error.identity.blocked`\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: `unauthorized_client` and\n * error_description: `unknown-location`, `unreliable-location`, or `forbidden-location`.\n * @throws {IdentityNotFoundException} The identity could not be found\n * @note Inform user that their identity could not be found and may not exist.\n * @note Request to get identity token returns HTTP 4xx with error code: `idp.error.identity.not-found`\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n */\n async authenticateWithPasscode(email, passcode) {\n\n const errorMessage = {\n method: `${this.constructor.name}.authenticateWithPasscode(email, passcode)`,\n get email() {\n return `${this.method} email should be a String with length`;\n },\n get passcode() {\n return `${this.method} passcode should be a String with length`;\n }\n };\n\n const { bamIdentityManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: BamIdentityApi.name,\n urn: BamIdentityApiDustUrnReference.authenticateWithPasscode\n });\n\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n nonEmptyString(passcode, errorMessage.passcode, InvalidArgumentException);\n\n try {\n\n return await bamIdentityManager.redeemOneTimePasscode(email, passcode);\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/identity/bam/bamIdentityApi.js","/**\n *\n * @module entry\n * @desc {SDK.Internal.Dust} entry point.\n *\n */\n\nimport DustSink from './dustSink';\nimport DustEvent from './dustEvent';\n\n/**\n *\n * @typedef SDK.Internal.Dust\n * @type {Object}\n *\n * @property {DustSink} DustSink\n * @property {DustEvent} DustEvent\n *\n */\n\n/**\n *\n * @type {SDK.Internal.Dust}\n *\n */\nexport default {\n\n DustSink,\n DustEvent\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/internal/dust/entry.js","/**\n *\n * @module entry\n * @desc {SDK.Internal.Telemetry} entry point.\n *\n */\n\nimport TelemetryManager from './telemetryManager';\nimport TelemetryEvent from './telemetryEvent';\nimport EventBuffer from './eventBuffer';\nimport StreamSampleTelemetryEvent from './streamSampleTelemetryEvent';\n\n/**\n *\n * @typedef SDK.Internal.Telemetry\n * @type {Object}\n *\n * @property {TelemetryManager} TelemetryManager\n * @property {TelemetryEvent} TelemetryEvent\n * @property {EventBuffer} EventBuffer\n * @property {StreamSampleTelemetryEvent} StreamSampleTelemetryEvent\n *\n */\n\n/**\n *\n * @type {SDK.Internal.Telemetry}\n *\n */\nexport default {\n\n TelemetryManager,\n TelemetryEvent,\n EventBuffer,\n StreamSampleTelemetryEvent\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/internal/telemetry/entry.js","/**\n *\n * @module streamSampleTelemetryEvent\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n *\n */\n\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\n\nconst StreamSampleClientPayload = Services.Internal.Telemetry.StreamSampleClientPayload;\nconst StreamSamplePayload = Services.Internal.Telemetry.StreamSamplePayload;\nconst DustUrnReference = Services.Internal.Dust.DustUrnReference;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n greater,\n number,\n nonEmptyString,\n object,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class StreamSampleTelemetryEvent\n * @implements {TelemetryEvent}\n * @since 3.5.0\n * @note was previously part of SDK.Media\n *\n */\nexport default class StreamSampleTelemetryEvent {\n\n /**\n *\n * @access public\n * @param {Object} options\n * @param {String} options.playbackSessionId - a unique id for the playback session, may be UUID\n * @param {Number} options.playhead - the current playhead position in milliseconds\n * @param {Number} options.bitrate - the current playback bitrate in kbps (optional)\n * @param {Object} [options.serverData={}] - the server data returned from the Playlist Service call\n * @note server does not appear in the current UML but we need it passed in the constructor here\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'StreamSampleTelemetryEvent(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get serverData() {\n return `${this.ctor} options.serverData should be an Object`;\n },\n get playbackSessionId() {\n return `${this.ctor} options.playbackSessionId should be a String with length`;\n },\n get playhead() {\n return `${this.ctor} options.playhead should be a Number`;\n },\n get bitrate() {\n return `${this.ctor} options.bitrate should be a Number`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackSessionId, playhead, bitrate, serverData = {} } = options;\n\n nonEmptyString(playbackSessionId, errorMessage.playbackSessionId, InvalidArgumentException);\n\n if (Check.assigned(playhead)) {\n greater(playhead, 0, errorMessage.playhead, InvalidArgumentException);\n }\n\n if (Check.assigned(bitrate)) {\n number(bitrate, errorMessage.bitrate, InvalidArgumentException);\n }\n\n object(serverData, errorMessage.serverData, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {Object}\n * @note assigned in StreamSamplePayload as { server }\n *\n */\n this.serverData = serverData;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.playbackSessionId = playbackSessionId;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.playhead = playhead;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.bitrate = bitrate;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.event = DustUrnReference.streamSample;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc a timestamp in milliseconds\n *\n */\n this.timestamp = Date.now();\n\n }\n\n /**\n *\n * @access public\n * @returns {Promise}\n * @note serverData can be an empty object\n * @example\n *\n * \"serverData\": {\n * \"event\": \"stream-sample\",\n * \"media_state\": \"MEDIA_ON\",\n * \"cdn\": \"PRIMARY_AKAMAI\",\n * \"playback_scenario\": \"HTTP_CLOUD_TABLET\",\n * \"media_version\": \"3.2\",\n * \"playlist_request_id\": \"dc49356e-3afd-4e3b-9fcd-ddd5e51ba5ee\",\n * \"stream_id\": \"112342314\",\n * \"media_revision_id\": \"843e3d3f-389d-46f5-907f-3bf448324f\"\n * },\n * \"client\": {\n * \"event\": \"urn:dss:telemetry-service:event:stream-sample\",\n * \"timestamp\": 1544638712502,\n * \"play_head\": 0,\n * \"playback_session_id\": \"b21514d5-394e-4618-967a-327aad0f9873\",\n * \"bitrate\": 2\n * }\n *\n */\n getPayload() {\n\n const { serverData, event, playbackSessionId, playhead, bitrate, timestamp } = this;\n\n const streamSampleClientPayload = new StreamSampleClientPayload(\n event,\n timestamp,\n playbackSessionId,\n playhead,\n bitrate\n );\n\n return Promise.resolve(new StreamSamplePayload(serverData, streamSampleClientPayload));\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/internal/telemetry/streamSampleTelemetryEvent.js","/**\n *\n * @module entry\n * @desc {SDK.Media.AdEngine} entry point.\n *\n */\n\nimport AdEngineManager from './adEngineManager';\nimport AdvertisingIdProvider from './advertisingIdProvider';\n\n/**\n *\n * @typedef SDK.Media.AdEngine\n * @type {Object}\n *\n * @property {AdEngineManager} AdEngineManager\n * @property {AdvertistingIdProvider} AdvertistingIdProvider\n *\n */\n\n/**\n *\n * @type {SDK.Media.AdEngine}\n *\n */\nexport default {\n\n AdEngineManager,\n AdvertisingIdProvider\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/adEngine/entry.js","/**\n *\n * @module mediaApi\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/MediaApi.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport QualityOfService from './../qualityOfService/entry';\nimport MediaManager from './mediaManager';\nimport MediaDescriptor from './mediaDescriptor';\nimport MediaItem from './mediaItem';\nimport PlayerAdapter from './playerAdapter';\nimport PlaybackContext from './playbackContext';\nimport ThumbnailResolution from './thumbnailResolution';\n\nconst PlaybackIntent = QualityOfService.PlaybackIntent;\nconst PlaybackSelectedEventData = QualityOfService.PlaybackSelectedEventData;\nconst PlaybackSessionTransferredEventData = QualityOfService.PlaybackSessionTransferredEventData;\n\nconst Util = Services.Util;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst DustCategory = Services.Internal.Dust.DustCategory;\nconst MediaApiDustUrnReference = Services.Internal.Dust.DustUrnReference.media.mediaApi;\nconst QualityOfServiceDustUrnReference = Services.Internal.Dust.DustUrnReference.qualityOfService;\nconst Presentation = Services.Media.Presentation;\n\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n boolean,\n instanceStrict,\n nonEmptyObject,\n number,\n includes\n} = Check.assert;\n\n/**\n *\n * @class SDK.Media.MediaApi\n * @desc Provides a resource that can be used to help load, control, and monitor media playback.\n *\n */\nexport default class MediaApi {\n\n /**\n *\n * @param {MediaManager} mediaManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(mediaManager, logger = Logging) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(mediaManager, logger)`,\n get mediaManager() {\n return `${this.ctor} needs MediaManager instance`;\n }\n };\n\n instanceStrict(mediaManager, MediaManager, errorMessage.mediaManager, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {MediaManager}\n *\n */\n this.mediaManager = mediaManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => this.mediaManager.client.dustEnabled);\n\n this.logger.info(MediaApi.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {PlayerAdapter} playerAdapter - The player adapter you would like to create a new media session for.\n * @param {Array} [priorityDrms=null] - override DRM with a specified DRM or order\n * of DRMs\n * @desc Creates a new instance of PlaybackSession initialized with the supplied playerAdapter.\n * This is the entry point into all further interactions with media related SDK features.\n * @returns {Promise} Injected with all dependencies.\n * @example mediaApi.createPlaybackSession(playerAdapter).then((playbackSession) => {});\n *\n */\n async createPlaybackSession(playerAdapter, priorityDrms = null) {\n\n const errorMessage = {\n method: `${this.constructor.name}.createPlaybackSession(playerAdapter, priorityDrms)`,\n get playerAdapter() {\n return `${this.method} needs PlayerAdapter instance`;\n },\n get priorityDrms() {\n return `${this.method} needs an array of SDK.Service.Media.DrmType`;\n }\n };\n\n const { dustEnabled, logger, mediaManager } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaApi.name,\n urn: MediaApiDustUrnReference.createPlaybackSession\n });\n\n instanceStrict(playerAdapter, PlayerAdapter, errorMessage.playerAdapter, InvalidArgumentException);\n\n if (Check.assigned(priorityDrms)) {\n array.of.nonEmptyString(priorityDrms, errorMessage.priorityDrms, InvalidArgumentException);\n }\n\n try {\n\n return await mediaManager.createPlaybackSession(playerAdapter, priorityDrms);\n\n } catch (ex) {\n\n if (dustEnabled) {\n return Promise.reject(dustLogUtility.captureErrors(ex));\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.MediaDescriptor} mediaDescriptor - Supplies the media that should be played and\n * any relevant playback rules.\n * @param {SDK.Media.PlaybackContext} [playbackContext=null] Information about the media playback context.\n * @since 3.3.0\n * @desc Fetches a media payload\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {AuthorizationExpiredException} Could not reauthorize before attempting to access media.\n * @note When the playlist service request returns HTTP 401 with an error of access-token.expired.\n * The only case where this could occur is when reauthorization failed due to a 5xx or network connection\n * issue and the token has expired. This implies an unstable network or service state and should be treated\n * like other unexpected errors.\n * @throws {LoginRequiredException} The requested media can only be viewed after authentication.\n * @note When the playlist service request returns HTTP 401 with an error of login.required.\n * @throws {NotEntitleException} The current user does not have sufficient privileges to access the media\n * for the requested license.\n * @note When the key service request returns HTTP 403 with an error of not-entitled.\n * @throws {BlackoutException} The current user is not allowed to access the media because they are in a\n * blackout location.\n * @note When the playlist service request returns HTTP 403 with an error of blackout.\n * @throws {KidsModeEnabledException} The current user is not allowed to access the media due to parental\n * controls restrictions on the account.\n * @note When the playlist service request returns HTTP 403 with an error of `kids-mode-enabled`\n * @throws {StreamConcurrencyException} The current user is not allowed to access the media for the requested\n * license because they have too many concurrent streams.\n * @note When the playlist service request returns HTTP 403 with an error of stream-concurrency-violation.\n * @throws {MediaNotAllowedException} The current user is not allowed to access the media.\n * @note When the playlist service request returns HTTP 403 with any error other than not-entitled, blackout,\n * parental-control, or stream-concurrency-violation.\n * @throws {MediaUnavailableException} The requested media is not available.\n * @note When the playlist service request returns HTTP 404 with an error of media.not-playable or media.missing.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @throws {InvalidArgumentException} This method or a function downstream was called with an invalid argument\n * @returns {Promise}\n *\n */\n async fetch(mediaDescriptor, playbackContext = null) {\n\n const errorMessage = {\n method: `${this.constructor.name}.fetch(mediaDescriptor)`,\n get mediaDescriptor() {\n return `${this.method} mediaDescriptor should be a SDK.Media.MediaDescriptor instance`;\n },\n get playbackContext() {\n return `${this.method} playbackContext should be a SDK.Media.PlaybackContext instance`;\n }\n };\n\n const { dustEnabled, mediaManager, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaApi.name,\n urn: MediaApiDustUrnReference.fetch\n });\n\n instanceStrict(mediaDescriptor, MediaDescriptor, errorMessage.mediaDescriptor, InvalidArgumentException);\n\n if (Check.assigned(playbackContext)) {\n instanceStrict(playbackContext, PlaybackContext, errorMessage.playbackContext, InvalidArgumentException);\n }\n\n try {\n\n return await mediaManager.getMediaItem(mediaDescriptor, playbackContext);\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {Object} options\n * @param {SDK.QualityOfService.PlaybackIntent} options.playbackIntent Indicates\n * the intent which started playback.\n * @param {Boolean} [options.isPreBuffering] Indicates that pre bufferring is occuring if\n * true (the video will be loaded before we are ready to show it).\n * @param {Boolean} [options.offline=false] Indicates that user is attempting to play an offline/previously\n * downloaded video.\n * @param {Object} [options.data] Additional partner specific data to provide additional context.\n * @desc Called when initiating the action of playing media, capturing intent\n * to play content, leading into video playback.\n * @returns {SDK.Media.PlaybackContext}\n *\n */\n initializePlaybackContext(options) {\n\n const errorMessage = {\n method: `${this.constructor.name}.initializePlaybackContext(options)`,\n get options() {\n return `${this.method} options should be a non-empty Object`;\n },\n get playbackIntent() {\n return `${this.method} options.playbackIntent should be a valid SDK.QualityOfService.PlaybackIntent`;\n },\n get isPreBuffering() {\n return `${this.method} options.isPreBuffering should be a Boolean`;\n },\n get offline() {\n return `${this.method} options.offline should be a Boolean`;\n },\n get data() {\n return `${this.method} options.data should be a non-empty Object`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { playbackIntent, isPreBuffering = null, offline = false, data = null } = options;\n\n includes(PlaybackIntent, playbackIntent, errorMessage.playbackIntent, InvalidArgumentException);\n\n if (Check.assigned(isPreBuffering)) {\n boolean(isPreBuffering, errorMessage.isPreBuffering, InvalidArgumentException);\n }\n\n if (Check.assigned(offline)) {\n boolean(offline, errorMessage.offline, InvalidArgumentException);\n }\n\n if (Check.assigned(data)) {\n nonEmptyObject(data, errorMessage.data, InvalidArgumentException);\n }\n\n const playbackContext = new PlaybackContext(offline);\n const playbackSelectedEvent = new PlaybackSelectedEventData({\n playbackSessionId: playbackContext.playbackSessionId,\n playbackIntent,\n preBuffer: isPreBuffering,\n offline,\n data\n });\n\n if (dustEnabled) {\n\n const dustLogUtility = new DustLogUtility({\n category: DustCategory.qos,\n logger,\n source: MediaApi.name,\n urn: QualityOfServiceDustUrnReference.playbackSelected,\n data: {\n ...playbackSelectedEvent\n }\n });\n\n dustLogUtility.log();\n\n }\n\n\n return playbackContext;\n\n }\n\n /**\n *\n * @access public\n * @since 4.0.0\n * @param {SDK.Media.PlaybackContext} playbackContext - The value returned from the call\n * to initializePlaybackContext.\n * @desc Called when initiating the action of transferring a playback session to another device.\n *\n */\n transferPlaybackContext(playbackContext) {\n\n const errorMessage = {\n method: `${this.constructor.name}.transferPlaybackContext(playbackContext)`,\n get playbackContext() {\n return `${this.method} options.playbackContext should be an instance of SDK.Media.PlaybackContext`;\n }\n };\n\n instanceStrict(playbackContext, PlaybackContext, errorMessage.playbackContext, InvalidArgumentException);\n\n const { dustEnabled, logger } = this;\n\n const playbackSessionTransferredEventData = new PlaybackSessionTransferredEventData({\n playbackSessionId: playbackContext.playbackSessionId\n });\n\n if (dustEnabled) {\n\n const dustLogUtility = new DustLogUtility({\n category: DustCategory.qos,\n logger,\n source: MediaApi.name,\n urn: QualityOfServiceDustUrnReference.playbackSessionTransferred,\n data: {\n ...playbackSessionTransferredEventData\n }\n });\n\n dustLogUtility.log();\n\n }\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {SDK.Media.MediaItem} mediaItem - The MediaItem for the current media that was returned by a call to\n * Fetch.\n * @desc Fetches the details about the spritesheet thumbnail images that players can show to users when\n * scrubbing video.\n * @throws {ThumbnailsNotAvailableException} No thumbnails are available for the given media.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise>} A promise that returns a spritesheet\n * thumbnail set object describing the location and information about the thumbnails for all resolutions.\n *\n */\n getSpriteSheetThumbnailSets(mediaItem) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getSpriteSheetThumbnailSets(mediaItem)`,\n get mediaItem() {\n return `${this.method} mediaItem should be an instance of SDK.Media.MediaItem`;\n }\n };\n\n instanceStrict(mediaItem, MediaItem, errorMessage.mediaItem, InvalidArgumentException);\n\n const spritesheet = Util.getSafe(() => mediaItem.payload.thumbnails.spritesheet);\n\n if (Check.not.nonEmptyObject(spritesheet)) {\n\n const thumbnailsNotAvailableException = new ServiceException({\n exceptionData: ExceptionReference.media.thumbnailsNotAvailable\n });\n\n return Promise.reject(thumbnailsNotAvailableException);\n\n }\n\n const { dustEnabled, mediaManager, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaApi.name,\n urn: MediaApiDustUrnReference.getSpriteSheetThumbnailSets,\n data: {\n thumbnailUrl: spritesheet.href\n }\n });\n\n return mediaManager.getSpriteSheetThumbnailSets(mediaItem).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {SDK.Media.MediaItem} mediaItem - The MediaItem for the current media that was returned by a call to\n * Fetch.\n * @param {String} resolution - The desired resolution of thumbnails to fetch\n * @desc Fetches the details about the spritesheet thumbnail images that players can show to users when\n * scrubbing video.\n * @throws {ThumbnailsNotAvailableException} No thumbnails are available for the given media.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that returns a spritesheet thumbnail set\n * object describing the location and information about the thumbnails at the given resolution.\n *\n */\n getSpriteSheetThumbnailSet(mediaItem, resolution) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getSpriteSheetThumbnailSet(mediaItem, resolution)`,\n get mediaItem() {\n return `${this.method} mediaItem should be an instance of SDK.Media.MediaItem`;\n },\n get resolution() {\n return `${this.method} resolution should be a member of SDK.Media.ThumbnailResolution`;\n }\n };\n\n instanceStrict(mediaItem, MediaItem, errorMessage.mediaItem, InvalidArgumentException);\n includes(ThumbnailResolution, resolution, errorMessage.resolution, InvalidArgumentException);\n\n const spritesheet = Util.getSafe(() => mediaItem.payload.thumbnails.spritesheet);\n\n if (Check.not.nonEmptyObject(spritesheet)) {\n\n const thumbnailsNotAvailableException = new ServiceException({\n exceptionData: ExceptionReference.media.thumbnailsNotAvailable\n });\n\n return Promise.reject(thumbnailsNotAvailableException);\n\n }\n\n const { dustEnabled, mediaManager, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaApi.name,\n urn: MediaApiDustUrnReference.getSpriteSheetThumbnailSet,\n data: {\n thumbnailUrl: spritesheet.href,\n thumbnailResolution: resolution\n }\n });\n\n return mediaManager.getSpriteSheetThumbnailSet(mediaItem, resolution).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {SDK.Services.Media.Presentation} presentation - The thumbnail presentation to download. Typically\n * chosen by desired resolution.\n * @param {Number} index - The index of the thumbnail in the pod to download.\n * @desc Fetches the details about the spritesheet thumbnail images that players can show to users when scrubbing\n * video.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise>} Fetches an actual spritesheet thumbnail image that players can show to users\n * when scrubbing video.\n *\n */\n getSpriteSheetThumbnail(presentation, index) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getSpriteSheetThumbnail(presentation, index)`,\n get presentation() {\n return `${this.method} presentation should be an instance of SDK.Services.Media.Presentation`;\n },\n get index() {\n return `${this.method} index should be a Number`;\n }\n };\n\n instanceStrict(presentation, Presentation, errorMessage.presentation, InvalidArgumentException);\n number(index, errorMessage.index, InvalidArgumentException);\n\n const { dustEnabled, mediaManager, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaApi.name,\n urn: MediaApiDustUrnReference.getSpriteSheetThumbnail,\n data: {\n spriteSheetUrl: presentation.paths[index]\n }\n });\n\n return mediaManager.getSpriteSheetThumbnail(presentation, index).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {SDK.Media.MediaItem} mediaItem - The MediaItem for the current media that was returned by a call to\n * Fetch.\n * @desc Fetches the details about the BIF thumbnail images that players can show to users when scrubbing video.\n * @throws {ThumbnailsNotAvailableException} No thumbnails are available for the given media.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise>} A promise that returns a BIF thumbnail set object\n * describing the location and information about the thumbnails for all resolutions.\n *\n */\n getBifThumbnailSets(mediaItem) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getBifThumbnailSets(mediaItem)`,\n get mediaItem() {\n return `${this.method} mediaItem should be an instance of SDK.Media.MediaItem`;\n }\n };\n\n instanceStrict(mediaItem, MediaItem, errorMessage.mediaItem, InvalidArgumentException);\n\n const bif = Util.getSafe(() => mediaItem.payload.thumbnails.bif);\n\n if (Check.not.nonEmptyObject(bif)) {\n\n const thumbnailsNotAvailableException = new ServiceException({\n exceptionData: ExceptionReference.media.thumbnailsNotAvailable\n });\n\n return Promise.reject(thumbnailsNotAvailableException);\n\n }\n\n const { dustEnabled, mediaManager, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaApi.name,\n urn: MediaApiDustUrnReference.getBifThumbnailSets,\n data: {\n thumbnailUrl: bif.href\n }\n });\n\n return mediaManager.getBifThumbnailSets(mediaItem).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @param {SDK.Media.MediaItem} mediaItem - The MediaItem for the current media that was returned by a call to\n * Fetch.\n * @param {SDK.Media.ThumbnailResolution} resolution - The desired resolution of thumbnails to fetch.\n * @desc Fetches the details about the BIF thumbnail images that players can show to users when scrubbing video.\n * @throws {ThumbnailsNotAvailableException} No thumbnails are available for the given media.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that returns a BIF thumbnail set object\n * describing the location and information about the thumbnails for the desired resolution.\n *\n */\n getBifThumbnailSet(mediaItem, resolution) {\n\n const errorMessage = {\n method: `${this.constructor.name}.getBifThumbnailSet(mediaItem, resolution)`,\n get mediaItem() {\n return `${this.method} mediaItem should be an instance of SDK.Media.MediaItem`;\n },\n get resolution() {\n return `${this.method} resolution should be a member of SDK.Media.ThumbnailResolution`;\n }\n };\n\n instanceStrict(mediaItem, MediaItem, errorMessage.mediaItem, InvalidArgumentException);\n includes(ThumbnailResolution, resolution, errorMessage.resolution, InvalidArgumentException);\n\n const bif = Util.getSafe(() => mediaItem.payload.thumbnails.bif);\n\n if (Check.not.nonEmptyObject(bif)) {\n\n const thumbnailsNotAvailableException = new ServiceException({\n exceptionData: ExceptionReference.media.thumbnailsNotAvailable\n });\n\n return Promise.reject(thumbnailsNotAvailableException);\n\n }\n\n const { dustEnabled, mediaManager, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: MediaApi.name,\n urn: MediaApiDustUrnReference.getBifThumbnailSet,\n data: {\n thumbnailUrl: bif.href,\n thumbnailResolution: resolution\n }\n });\n\n return mediaManager.getBifThumbnailSet(mediaItem, resolution).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access private\n * @since 3.8.0\n * @note the JS SDK does not support this method\n * @returns {Promise}\n *\n */\n getBifThumbnail() {\n\n const errorMessage = {\n method: `${this.constructor.name}.getBifThumbnail()`\n };\n\n return new Promise((resolve, reject) => {\n return reject(new Error(`${errorMessage.method} - not-implemented`));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/mediaApi.js","/**\n *\n * @module html5PlayerAdapter\n * @desc Standard HTML5 PlayerAdapter\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerEvents.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerProperties.md\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\nimport Drm from './../../drm/entry';\nimport PlayerAdapter from './../playerAdapter';\nimport PlaybackMetrics from './../playbackMetrics';\nimport PlaybackEventListener from './../playbackEventListener';\nimport Playlist from './../playlist';\n\nconst Util = Services.Util;\nconst DrmProvider = Drm.DrmProvider;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class Html5PlayerAdapter\n * @extends {PlayerAdapter}\n * @desc Interface used to communicate with the media player.\n * @example const playerAdapter = new Html5PlayerAdapter(videoElement);\n *\n */\nexport default class Html5PlayerAdapter extends PlayerAdapter {\n\n /**\n *\n * @param {NativePlayer} nativePlayer\n * @throws {InvalidArgumentException}\n *\n */\n constructor(nativePlayer) {\n\n const errorMessage = {\n ctor: 'Html5PlayerAdapter(nativePlayer)',\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n }\n };\n\n Check.assert.function(Util.getSafe(() => nativePlayer.play), errorMessage.nativePlayer, InvalidArgumentException); // eslint-disable-line\n\n super(nativePlayer);\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Callback used when prepare has been called (usually via the {PlaybackSession}).\n * Sets the source URI on the {NativePlayer} instance.\n * @throws {InvalidStateException} Unable to set playlistUri on NativePlayer\n * @returns {Promise}\n *\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: 'Html5PlayerAdapter.setSource(playlist)',\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n },\n get setPlaylistUri() {\n return `${this.method} unable to set playlistUri on NativePlayer`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n const { nativePlayer } = this;\n\n return new Promise((resolve, reject) => {\n\n this.playlistUri = playlist.streamUri;\n\n try {\n\n const sourceElement = nativePlayer.getElementsByTagName('source')[0];\n\n /**\n *\n * @desc Certain HTML5 platforms like Tivo, Sony, Panasonic are not guaranteed to\n * contain a child source element. If a source element does not exist, simply\n * set the source directly on the media element.\n *\n */\n if (Check.assigned(sourceElement)) {\n sourceElement.setAttribute('src', playlist.streamUri);\n } else {\n nativePlayer.setAttribute('src', playlist.streamUri);\n }\n\n return resolve();\n\n } catch (ex) {\n\n const reasons = [new ErrorReason('', `${errorMessage.setPlaylistUri} - ${ex}`)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @desc Gets a snapshot of information about media playback.\n * @throws {InvalidStateException} Unable to get NativePlayer playhead data\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n * @note nativePlayer.currentTime - The HTMLMediaElement.currentTime property gives\n * the current playback time in seconds\n * @note metric value is rounded down to prevent possible service issues with floats\n * @note executed by {PlaybackTelemetryDispatcher#recordStreamSample}\n *\n */\n getPlaybackMetrics() {\n\n const errorMessage = {\n method: 'Html5PlayerAdapter.getPlaybackMetrics()',\n get currentPlayhead() {\n return `${this.method} unable to get NativePlayer playhead data`;\n }\n };\n\n const { nativePlayer, unavailableMetric } = this;\n\n if (Check.not.assigned(nativePlayer.currentTime)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentPlayhead)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n const currentBitrate = unavailableMetric;\n const currentPlayhead = Math.floor(nativePlayer.currentTime) || unavailableMetric;\n\n return Promise.resolve(new PlaybackMetrics({ currentBitrate, currentPlayhead }));\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @throws {InvalidStateException} Unable to add PlaybackEventListener\n * @returns {Promise}\n *\n */\n addListener(listener) {\n\n const errorMessage = {\n method: 'Html5PlayerAdapter.addListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get addListener() {\n return `${this.method} unable to add PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer, boundHandlers } = this;\n const { onPlay, onPause, onError, onPlayedToCompletion } = this;\n\n return new Promise((resolve, reject) => {\n\n if (Check.function(nativePlayer.play)) {\n\n this.listener = listener;\n\n boundHandlers.onPlay = onPlay.bind(this);\n boundHandlers.onPause = onPause.bind(this);\n boundHandlers.onError = onError.bind(this);\n boundHandlers.onPlayedToCompletion = onPlayedToCompletion.bind(this);\n\n nativePlayer.onplay = boundHandlers.onPlay;\n nativePlayer.onpause = boundHandlers.onPause;\n nativePlayer.onerror = boundHandlers.onError;\n nativePlayer.onended = boundHandlers.onPlayedToCompletion;\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.addListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @returns {Promise}\n *\n */\n removeListener(listener) {\n\n const errorMessage = {\n method: 'Html5PlayerAdapter.removeListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer } = this;\n\n return new Promise((resolve) => {\n\n if (Check.function(nativePlayer.play) && Check.equal(this.listener, listener)) {\n\n this.listener = null;\n\n nativePlayer.onplay = null;\n nativePlayer.onpause = null;\n nativePlayer.onerror = null;\n nativePlayer.onended = null;\n\n }\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @returns {Promise}\n *\n */\n setDrmProvider(drmProvider) {\n\n const errorMessage = {\n method: 'Html5PlayerAdapter.setDrmProvider(drmProvider)',\n get drmProvider() {\n return `${this.method} needs SDK.Drm.DrmProvider instance`;\n }\n };\n\n instanceStrict(drmProvider, DrmProvider, errorMessage.drmProvider, InvalidArgumentException);\n\n this.drmProvider = drmProvider;\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n * @returns {Promise}\n *\n */\n clean() {\n\n const { listener } = this;\n\n this.playlistUri = '';\n this.boundHandlers = {};\n this.drmProvider = null;\n\n if (Check.assigned(listener)) {\n return this.removeListener(listener);\n }\n\n return Promise.resolve();\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @desc Completes the cleanup process by completely cleaning up all `PlayerAdapter`\n * references. This method should be executed by the application developer\n * when they no longer need to use a `PlayerAdapter` instance.\n * @note Because `clean` is automatically called by the `PlaybackSession` instance,\n * another method is necessary to handle the use case of an application developer who\n * wants to continue using a `PlayerAdapter` instance after a `PlaybackSession` has been released.\n * @returns {Promise}\n *\n */\n dispose() {\n\n this.nativePlayer = null;\n this.accessToken = null;\n\n return Promise.resolve();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter/html5PlayerAdapter.js","/**\n *\n * @module hlsJsPlayerAdapter\n * @desc Standard HLS.js PlayerAdapter\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerEvents.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerProperties.md\n * @see https://github.com/video-dev/hls.js/blob/master/doc/API.md#runtime-events\n * @see https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\nimport Drm from './../../drm/entry';\nimport PlayerAdapter from './../playerAdapter';\nimport PlaybackMetrics from './../playbackMetrics';\nimport PlaybackEventListener from './../playbackEventListener';\nimport Playlist from './../playlist';\n\nconst Util = Services.Util;\nconst DrmProvider = Drm.DrmProvider;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class HlsJsPlayerAdapter\n * @extends {PlayerAdapter}\n * @desc Interface used to communicate with the media player.\n * @throws {InvalidArgumentException}\n *\n */\nexport default class HlsJsPlayerAdapter extends PlayerAdapter {\n\n /**\n *\n * @param {NativePlayer} nativePlayer\n * @throws {InvalidArgumentException}\n * @note The HlsJsPlayerAdapter requires nativePlayer.loadSource\n *\n */\n constructor(nativePlayer) {\n\n const errorMessage = {\n ctor: 'HlsJsPlayerAdapter(nativePlayer)',\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n }\n };\n\n Check.assert.function(Util.getSafe(() => nativePlayer.loadSource), errorMessage.nativePlayer, InvalidArgumentException); // eslint-disable-line\n\n super(nativePlayer);\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc The {HTMLMediaElement} tied to the nativePlayer instance.\n *\n */\n this.mediaElement = nativePlayer.media;\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Callback used when prepare has been called (usually via the {PlaybackSession}).\n * Sets the source URI on the {NativePlayer} instance.\n * @throws {InvalidStateException} Unable to set playlistUri on NativePlayer\n * @returns {Promise}\n *\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: 'HlsJsPlayerAdapter.setSource(playlist)',\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n },\n get setPlaylistUri() {\n return `${this.method} unable to set playlistUri on NativePlayer`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n const { nativePlayer } = this;\n\n return new Promise((resolve, reject) => {\n\n this.playlistUri = playlist.streamUri;\n\n try {\n\n nativePlayer.loadSource(playlist.streamUri);\n\n return resolve();\n\n } catch (ex) {\n\n const reasons = [new ErrorReason('', `${errorMessage.setPlaylistUri} - ${ex}`)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @desc Gets a snapshot of information about media playback.\n * @throws {InvalidStateException} Unable to get NativePlayer playhead or bitrate data\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n * @note metric value is rounded down to prevent possible service issues with floats\n * @note executed by {PlaybackTelemetryDispatcher#recordStreamSample}\n *\n */\n getPlaybackMetrics() {\n\n const errorMessage = {\n method: 'HlsJsPlayerAdapter.getPlaybackMetrics()',\n get currentPlayhead() {\n return `${this.method} unable to get NativePlayer playhead data`;\n },\n get currentBitrate() {\n return `${this.method} unable to get NativePlayer bitrate data`;\n }\n };\n\n const { nativePlayer, mediaElement, unavailableMetric } = this;\n const { currentLevel } = nativePlayer;\n\n if (Check.not.assigned(currentLevel.bitrate)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentBitrate)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n if (Check.not.assigned(mediaElement.currentTime)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentPlayhead)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n const currentBitrate = Math.floor(currentLevel.bitrate) || unavailableMetric;\n const currentPlayhead = Math.floor(mediaElement.currentTime) || unavailableMetric;\n\n return Promise.resolve(new PlaybackMetrics({ currentBitrate, currentPlayhead }));\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @throws {InvalidStateException} Unable to add PlaybackEventListener\n * @returns {Promise}\n *\n */\n addListener(listener) {\n\n const errorMessage = {\n method: 'HlsJsPlayerAdapter.addListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get addListener() {\n return `${this.method} unable to add PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { boundHandlers, mediaElement } = this;\n const { onPlay, onPause, onError, onPlayedToCompletion } = this;\n\n return new Promise((resolve, reject) => {\n\n if (Check.function(mediaElement.play)) {\n\n this.listener = listener;\n\n boundHandlers.onPlay = onPlay.bind(this);\n boundHandlers.onPause = onPause.bind(this);\n boundHandlers.onError = onError.bind(this);\n boundHandlers.onPlayedToCompletion = onPlayedToCompletion.bind(this);\n\n mediaElement.onplay = boundHandlers.onPlay;\n mediaElement.onpause = boundHandlers.onPause;\n mediaElement.onerror = boundHandlers.onError;\n mediaElement.onended = boundHandlers.onPlayedToCompletion;\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.addListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @returns {Promise}\n *\n */\n removeListener(listener) {\n\n const errorMessage = {\n method: 'HlsJsPlayerAdapter.removeListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { mediaElement } = this;\n\n return new Promise((resolve) => {\n\n if (Check.function(mediaElement.play) && Check.equal(this.listener, listener)) {\n\n this.listener = null;\n\n mediaElement.onplay = null;\n mediaElement.onpause = null;\n mediaElement.onerror = null;\n mediaElement.onended = null;\n\n }\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @returns {Promise}\n *\n */\n setDrmProvider(drmProvider) {\n\n const errorMessage = {\n method: 'HlsJsPlayerAdapter.setDrmProvider(drmProvider)',\n get drmProvider() {\n return `${this.method} needs SDK.Drm.DrmProvider instance`;\n }\n };\n\n instanceStrict(drmProvider, DrmProvider, errorMessage.drmProvider, InvalidArgumentException);\n\n this.drmProvider = drmProvider;\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n * @returns {Promise}\n *\n */\n clean() {\n\n const { listener } = this;\n\n this.playlistUri = '';\n this.boundHandlers = {};\n this.drmProvider = null;\n\n if (Check.assigned(listener)) {\n return this.removeListener(listener);\n }\n\n return Promise.resolve();\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @desc Completes the cleanup process by completely cleaning up all `PlayerAdapter`\n * references. This method should be executed by the application developer\n * when they no longer need to use a `PlayerAdapter` instance.\n * @note Because `clean` is automatically called by the `PlaybackSession` instance,\n * another method is necessary to handle the use case of an application developer who\n * wants to continue using a `PlayerAdapter` instance after a `PlaybackSession` has been released.\n * @returns {Promise}\n *\n */\n dispose() {\n\n this.nativePlayer = null;\n this.accessToken = null;\n this.mediaElement = null;\n\n return Promise.resolve();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter/hlsJsPlayerAdapter.js","/**\n *\n * @module samsungOrsayPlayerAdapter\n * @desc PlayerAdapter for Samsung Orsay\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerEvents.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerProperties.md\n * @see https://github.bamtech.co/fed-ce/hbo-appletv-app/blob/master/source/js/app/App.SecureKeyDelivery.js#L241\n * @see http://developer.samsung.com/tv/develop/legacy-platform-library/API00005/Player_172\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\nimport Drm from './../../drm/entry';\nimport PlayerAdapter from './../playerAdapter';\nimport PlaybackMetrics from './../playbackMetrics';\nimport PlaybackEventListener from './../playbackEventListener';\nimport Playlist from './../playlist';\n\nconst Util = Services.Util;\nconst DrmProvider = Drm.DrmProvider;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class SamsungOrsayPlayerAdapter\n * @extends {PlayerAdapter}\n * @desc Interface used to communicate with the media player.\n *\n */\nexport default class SamsungOrsayPlayerAdapter extends PlayerAdapter {\n\n /**\n *\n * @param {NativePlayer} nativePlayer\n * @throws {InvalidArgumentException}\n * @note The SamsungOrsayPlayerAdapter requires nativePlayer.Play\n *\n */\n constructor(nativePlayer) {\n\n const errorMessage = {\n ctor: 'SamsungOrsayPlayerAdapter(nativePlayer)',\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n }\n };\n\n Check.assert.function(Util.getSafe(() => nativePlayer.Play), errorMessage.nativePlayer, InvalidArgumentException); // eslint-disable-line\n\n super(nativePlayer);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.streamingProperty = null;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Exposed listeners for when application developer needs to call\n * nativePlayer.setListener after a playbackSession.prepare\n * @since 3.0.0\n *\n */\n this.playerListener = null;\n\n /**\n *\n * @access private\n * @type {Number}\n *\n */\n this.currentPlayhead = null;\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Callback used when prepare has been called (usually via the {PlaybackSession}).\n * Sets the source URI on the {NativePlayer} instance.\n * @throws {InvalidStateException} Needs valid accessToken\n * @returns {Promise}\n *\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: 'SamsungOrsayPlayerAdapter.setSource(playlist)',\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n },\n get accessToken() {\n return `${this.method} needs valid accessToken`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n const { accessToken } = this;\n\n return new Promise((resolve, reject) => {\n\n if (Check.assigned(accessToken)) {\n\n const streamingProperty = `|COOKIE={Authorization=${accessToken}}|COMPONENT=HLS`;\n const url = `${playlist.streamUri}${streamingProperty}`;\n\n this.playlistUri = url;\n this.streamingProperty = streamingProperty;\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.accessToken)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @desc Gets a snapshot of information about media playback.\n * @throws {InvalidStateException} Unable to get NativePlayer playhead or bitrate data\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n * @note metric value is rounded down to prevent possible service issues with floats\n * @note executed by {PlaybackTelemetryDispatcher#recordStreamSample}\n *\n */\n getPlaybackMetrics() {\n\n const errorMessage = {\n method: 'SamsungOrsayPlayerAdapter.getPlaybackMetrics()',\n get currentPlayhead() {\n return `${this.method} unable to get NativePlayer playhead data`;\n },\n get currentBitrate() {\n return `${this.method} unable to get NativePlayer bitrate data`;\n }\n };\n\n const { nativePlayer, unavailableMetric } = this;\n\n if (Check.not.function(nativePlayer.OnCurrentPlayTime)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentPlayhead)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n if (Check.not.function(nativePlayer.getCurrentBitrates)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentBitrate)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n const currentBitrate = Math.floor(nativePlayer.getCurrentBitrates() / 1000) || unavailableMetric;\n const currentPlayhead = Math.floor(this.currentPlayhead / 1000) || unavailableMetric;\n\n return Promise.resolve(new PlaybackMetrics({ currentBitrate, currentPlayhead }));\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @throws {InvalidStateException} Unable to add PlaybackEventListener\n * @returns {Promise}\n * @todo find a better event for onPlay (documentation does not contain anything that applies)\n * @todo find a better event for onPause (documentation does not contain anything that applies)\n *\n */\n addListener(listener) {\n\n const errorMessage = {\n method: 'SamsungOrsayPlayerAdapter.addListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get addListener() {\n return `${this.method} unable to add PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer, boundHandlers } = this;\n const { onPlay, onError, onPlayedToCompletion } = this;\n const { onCurrentPlayTime } = this;\n\n return new Promise((resolve, reject) => {\n\n if (Check.function(nativePlayer.OnStreamInfoReady)) {\n\n this.listener = listener;\n\n boundHandlers.onPlay = onPlay.bind(this);\n boundHandlers.onError = onError.bind(this);\n boundHandlers.onPlayedToCompletion = onPlayedToCompletion.bind(this);\n boundHandlers.onCurrentPlayTime = onCurrentPlayTime.bind(this);\n\n const playerListener = {\n onbufferingstart: boundHandlers.onPlay,\n onerror: boundHandlers.onError,\n onstreamcompleted: boundHandlers.onPlayedToCompletion,\n oncurrentplaytime: boundHandlers.onCurrentPlayTime\n };\n\n this.playerListener = playerListener;\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.addListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @returns {Promise}\n *\n */\n removeListener(listener) {\n\n const errorMessage = {\n method: 'SamsungOrsayPlayerAdapter.removeListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer } = this;\n\n return new Promise((resolve) => {\n\n if (Check.function(nativePlayer.OnStreamInfoReady) && Check.equal(this.listener, listener)) {\n\n this.listener = null;\n this.playerListener = null;\n\n }\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @returns {Promise}\n *\n */\n setDrmProvider(drmProvider) {\n\n const errorMessage = {\n method: 'SamsungOrsayPlayerAdapter.setDrmProvider(drmProvider)',\n get drmProvider() {\n return `${this.method} needs SDK.Drm.DrmProvider instance`;\n }\n };\n\n instanceStrict(drmProvider, DrmProvider, errorMessage.drmProvider, InvalidArgumentException);\n\n this.drmProvider = drmProvider;\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n * @returns {Promise}\n *\n */\n clean() {\n\n const { listener } = this;\n\n this.playlistUri = '';\n this.boundHandlers = {};\n this.currentPlayhead = null;\n this.drmProvider = null;\n\n if (Check.assigned(listener)) {\n return this.removeListener(listener);\n }\n\n return Promise.resolve();\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @desc Completes the cleanup process by completely cleaning up all `PlayerAdapter`\n * references. This method should be executed by the application developer\n * when they no longer need to use a `PlayerAdapter` instance.\n * @note Because `clean` is automatically called by the `PlaybackSession` instance,\n * another method is necessary to handle the use case of an application developer who\n * wants to continue using a `PlayerAdapter` instance after a `PlaybackSession` has been released.\n * @returns {Promise}\n *\n */\n dispose() {\n\n this.nativePlayer = null;\n this.accessToken = null;\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @since 2.0.0\n * @param {Number} currentTime\n * @returns {Promise}\n *\n */\n onCurrentPlayTime(currentTime) {\n\n return new Promise((resolve) => {\n\n this.currentPlayhead = currentTime;\n\n return resolve();\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter/samsungOrsayPlayerAdapter.js","/**\n *\n * @module samsungTizenPlayerAdapter\n * @desc PlayerAdapter for Samsung Tizen TVs\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerEvents.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerProperties.md\n * @see http://developer.samsung.com/tv/develop/api-references/samsung-product-api-references/avplay-api\n *\n */\n\nimport Check from 'check-types';\nimport Services from './../../services/entry';\nimport Drm from './../../drm/entry';\nimport PlayerAdapter from './../playerAdapter';\nimport PlaybackMetrics from './../playbackMetrics';\nimport PlaybackEventListener from './../playbackEventListener';\nimport Playlist from './../playlist';\n\nconst DrmProvider = Drm.DrmProvider;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n object,\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class SamsungTizenPlayerAdapter\n * @extends {PlayerAdapter}\n * @desc Interface used to communicate with the media player.\n *\n */\nexport default class SamsungTizenPlayerAdapter extends PlayerAdapter {\n\n /**\n *\n * @param {NativePlayer} nativePlayer\n * @param {Object|Null} [clientListener=null]\n * @throws {InvalidArgumentException}\n * @note The SamsungTizenPlayerAdapter requires nativePlayer.setStreamingProperty,\n * nativePlayer.open, and nativePlayer.setListener\n *\n */\n constructor(nativePlayer, clientListener = null) {\n\n const errorMessage = {\n ctor: 'SamsungTizenPlayerAdapter(nativePlayer, clientListener)',\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n },\n get clientListener() {\n return `${this.ctor} needs clientListener instance`;\n }\n };\n\n const nativePlayerInstance = (function nativePlayerInstance() {\n return Check.assigned(nativePlayer)\n && Check.function(nativePlayer.setStreamingProperty)\n && Check.function(nativePlayer.setListener)\n && Check.function(nativePlayer.open);\n }());\n\n Check.assert(nativePlayerInstance, errorMessage.nativePlayer, InvalidArgumentException);\n\n if (Check.assigned(clientListener)) {\n object(clientListener, errorMessage.clientListener, InvalidArgumentException);\n }\n\n super(nativePlayer);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.streamingProperty = null;\n\n /**\n *\n * @access public\n * @type {Object}\n * @desc Exposed listeners for when application developer needs to call\n * nativePlayer.setListener after a playbackSession.prepare\n * @since 2.2.1\n *\n */\n this.playerListener = null;\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc Listeners that are set by application developer\n * @since 2.2.1\n *\n */\n this.clientListener = clientListener;\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Callback used when prepare has been called (usually via the {PlaybackSession}).\n * Sets the source URI on the {NativePlayer} instance.\n * @throws {InvalidStateException} Unable to set playlistUri on NativePlayer\n * @returns {Promise}\n *\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: 'SamsungTizenPlayerAdapter.setSource(playlist)',\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n },\n get accessToken() {\n return `${this.method} needs valid accessToken`;\n },\n get setPlaylistUri() {\n return `${this.method} unable to set playlistUri on NativePlayer`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n const { accessToken, nativePlayer } = this;\n\n return new Promise((resolve, reject) => {\n\n this.playlistUri = playlist.streamUri;\n\n try {\n\n if (Check.assigned(accessToken)) {\n\n const streamingProperty = `|COOKIE={Authorization=${accessToken};}`;\n\n this.playlistUri = playlist.streamUri;\n this.streamingProperty = streamingProperty;\n\n nativePlayer.open(playlist.streamUri);\n nativePlayer.setStreamingProperty('ADAPTIVE_INFO', streamingProperty);\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.accessToken)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n } catch (ex) {\n\n const reasons = [new ErrorReason('', `${errorMessage.setPlaylistUri} - ${ex}`)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @desc Gets a snapshot of information about media playback.\n * @throws {InvalidStateException} Unable to get NativePlayer playhead or bitrate data\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n * @note nativePlayer.getCurrentTime - Time returned in milliseconds.\n * @note metric value is rounded down to prevent possible service issues with floats\n * @note executed by {PlaybackTelemetryDispatcher#recordStreamSample}\n *\n */\n getPlaybackMetrics() {\n\n const errorMessage = {\n method: 'SamsungTizenPlayerAdapter.getPlaybackMetrics()',\n get currentPlayhead() {\n return `${this.method} unable to get NativePlayer playhead data`;\n },\n get currentBitrate() {\n return `${this.method} unable to get NativePlayer bitrate data`;\n }\n };\n\n const { nativePlayer, getBitrate, unavailableMetric } = this;\n\n if (Check.not.function(nativePlayer.getCurrentStreamInfo)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentBitrate)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n if (Check.not.function(nativePlayer.getCurrentTime)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentPlayhead)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return Promise.reject(new ServiceException({ reasons, exceptionData }));\n\n }\n\n const currentStreamInfo = nativePlayer.getCurrentStreamInfo();\n const currentBitrate = Math.floor(getBitrate(currentStreamInfo)) || unavailableMetric;\n const currentPlayhead = Math.floor(nativePlayer.getCurrentTime() / 1000) || unavailableMetric;\n\n return Promise.resolve(new PlaybackMetrics({ currentBitrate, currentPlayhead }));\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @throws {InvalidStateException} Unable to add PlaybackEventListener\n * @returns {Promise}\n * @note Samsung Tizen has several events that can be fired by the player.\n * Callbacks for these events are defined and then set to the player.\n *\n */\n addListener(listener) {\n\n const errorMessage = {\n method: 'SamsungTizenPlayerAdapter.addListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n },\n get addListener() {\n return `${this.method} unable to add PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { boundHandlers, nativePlayer, clientListener } = this;\n const { onPlay, onError, onPlayedToCompletion } = this;\n\n return new Promise((resolve, reject) => {\n\n if (Check.function(nativePlayer.setListener)) {\n\n this.listener = listener;\n\n boundHandlers.onPlay = onPlay.bind(this);\n boundHandlers.onError = onError.bind(this);\n boundHandlers.onPlayedToCompletion = onPlayedToCompletion.bind(this);\n\n const playerListener = {\n onbufferingstart: boundHandlers.onPlay,\n onerror: boundHandlers.onError,\n onstreamcompleted: boundHandlers.onPlayedToCompletion\n };\n\n if (Check.assigned(clientListener)) {\n\n for (const key in clientListener) { // eslint-disable-line\n\n const hasClientListener = Check.assigned(clientListener[key]) && Check.function(clientListener[key]); // eslint-disable-line\n const hasPlayerListener = Check.assigned(playerListener[key]) && Check.function(playerListener[key]); // eslint-disable-line\n\n if (hasClientListener && hasPlayerListener) {\n\n playerListener[key] = (value) => {\n\n clientListener[key](value);\n playerListener[key](value);\n\n };\n\n }\n\n if (hasClientListener && !hasPlayerListener) {\n playerListener[key] = clientListener[key];\n }\n\n }\n\n }\n\n this.playerListener = playerListener;\n\n nativePlayer.setListener(this.playerListener);\n\n return resolve();\n\n }\n\n const reasons = [new ErrorReason('', errorMessage.addListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 2.0.0\n * @param {PlaybackEventListener} listener\n * @returns {Promise}\n *\n */\n removeListener(listener) {\n\n const errorMessage = {\n method: 'SamsungTizenPlayerAdapter.removeListener(listener)',\n get listener() {\n return `${this.method} needs PlaybackEventListener instance`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer } = this;\n\n return new Promise((resolve) => {\n\n if (Check.function(nativePlayer.setListener) && Check.equal(this.listener, listener)) {\n\n this.listener = null;\n this.playerListener = null;\n\n nativePlayer.onbufferingstart = null;\n nativePlayer.onerror = null;\n nativePlayer.onstreamcompleted = null;\n\n }\n\n return resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @since 3.2.0\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @returns {Promise}\n *\n */\n setDrmProvider(drmProvider) {\n\n const errorMessage = {\n method: 'SamsungTizenPlayerAdapter.setDrmProvider(drmProvider)',\n get drmProvider() {\n return `${this.method} needs SDK.Drm.DrmProvider instance`;\n }\n };\n\n instanceStrict(drmProvider, DrmProvider, errorMessage.drmProvider, InvalidArgumentException);\n\n this.drmProvider = drmProvider;\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n * @returns {Promise}\n *\n */\n clean() {\n\n const { listener } = this;\n\n this.playlistUri = '';\n this.boundHandlers = {};\n this.drmProvider = null;\n\n if (Check.assigned(listener)) {\n return this.removeListener(listener);\n }\n\n return Promise.resolve();\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @desc Completes the cleanup process by completely cleaning up all `PlayerAdapter`\n * references. This method should be executed by the application developer\n * when they no longer need to use a `PlayerAdapter` instance.\n * @note Because `clean` is automatically called by the `PlaybackSession` instance,\n * another method is necessary to handle the use case of an application developer who\n * wants to continue using a `PlayerAdapter` instance after a `PlaybackSession` has been released.\n * @returns {Promise}\n *\n */\n dispose() {\n\n this.nativePlayer = null;\n this.accessToken = null;\n this.playerListener = null;\n\n return Promise.resolve();\n\n }\n\n /**\n *\n * @access private\n * @since 2.0.0\n * @returns {Promise}\n * @todo implement #addListener onPlay and onPause via #setState()\n *\n */\n // onPlayerDidPause() {\n //\n // const { nativePlayer } = this;\n //\n // return new Promise((resolve) => {\n //\n // // nativePlayer.getState();\n // // \"NONE\", \"IDLE\", \"READY\", \"PLAYING\" or \"PAUSED\" is logged.\n //\n // resolve();\n //\n // });\n //\n // }\n\n /**\n *\n * @access private\n * @since 2.0.0\n * @param {Array} currentStreamInfo\n * @returns {Number|Null}\n *\n */\n getBitrate(currentStreamInfo) {\n\n let bitrate = null;\n\n for (let i = 0; i < currentStreamInfo.length; i += 1) {\n\n if (currentStreamInfo[i].type === 'VIDEO') {\n const extraInfo = JSON.parse(currentStreamInfo[i].extra_info);\n bitrate = parseInt(extraInfo.Bit_rate, 10);\n }\n\n }\n\n return bitrate;\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter/samsungTizenPlayerAdapter.js","/**\n *\n * @module dssWebPlayerAdapter\n * @desc The SDK.Media.PlayerAdapter instance for the Disney Streaming web player.\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/media.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/stream-sample.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerEvents.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/reference/PlayerProperties.md\n * @see https://github.bamtech.co/pages/btm-browser-media-platform/documentation/jsdoc/btm-browser-media-platform-common/MediaPlatform.html\n * @see https://github.bamtech.co/pages/btm-browser-media-platform/documentation/jsdoc/btm-browser-media-platform-common/MediaPlatform.Common.Constants.Events.html\n * @see https://github.bamtech.co/btm-browser-media-platform\n *\n */\n\nimport Check from 'check-types';\n\nimport Services from './../../services/entry';\nimport Drm from './../../drm/entry';\nimport QualityOfService from './../../qualityOfService/entry';\nimport PlayerAdapter from './../playerAdapter';\nimport PlaybackMetrics from './../playbackMetrics';\nimport PlaybackEventListener from './../playbackEventListener';\nimport Playlist from './../playlist';\n\nconst DrmProvider = Drm.DrmProvider;\nconst DrmType = Services.Media.DrmType;\n\nconst AudioChangedEventData = QualityOfService.AudioChangedEventData;\nconst BitrateChangedEventData = QualityOfService.BitrateChangedEventData;\nconst MasterPlaylistFetchedEventData = QualityOfService.MasterPlaylistFetchedEventData;\nconst MediaSegmentFetchedEventData = QualityOfService.MediaSegmentFetchedEventData;\nconst PlaybackExitedEventData = QualityOfService.PlaybackExitedEventData;\nconst PlaybackInitializedEventData = QualityOfService.PlaybackInitializedEventData;\nconst PlaybackReadyEventData = QualityOfService.PlaybackReadyEventData;\nconst PlaybackResumedEventData = QualityOfService.PlaybackResumedEventData;\nconst PlaybackSeekedEventData = QualityOfService.PlaybackSeekedEventData;\nconst PlaybackStartedEventData = QualityOfService.PlaybackStartedEventData;\nconst PlaybackPausedEventData = QualityOfService.PlaybackPausedEventData;\nconst RebufferingEndedEventData = QualityOfService.RebufferingEndedEventData;\nconst RebufferingStartedEventData = QualityOfService.RebufferingStartedEventData;\nconst SubtitleChangedEventData = QualityOfService.SubtitleChangedEventData;\nconst ServerRequest = QualityOfService.ServerRequest;\nconst VariantPlaylistFetchedEventData = QualityOfService.VariantPlaylistFetchedEventData;\n\nconst ErrorReason = Services.Exception.ErrorReason;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ServiceException = Services.Exception.ServiceException;\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n assigned,\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class DssWebPlayerAdapter\n * @extends {SDK.Media.PlayerAdapter}\n * @since 3.9.0\n * @desc Interface used to communicate with the Disney Streaming web player.\n * @note Disney Streaming web player.\n *\n */\nexport default class DssWebPlayerAdapter extends PlayerAdapter {\n\n /**\n *\n * @param {NativePlayer} nativePlayer - An instance of the BAMTECH web player.\n * @throws {InvalidArgumentException}\n *\n */\n constructor(nativePlayer) {\n\n const errorMessage = {\n ctor: 'DssWebPlayerAdapter(nativePlayer)',\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n }\n };\n\n assigned(nativePlayer, errorMessage.nativePlayer, InvalidArgumentException);\n\n super(nativePlayer);\n\n /**\n *\n * @access public\n * @type {Array}\n * @desc Set of DRM providers\n *\n */\n this.drmProviders = [];\n\n /**\n *\n * @access private\n * @type {Object|null}\n *\n */\n this.trackingData = null;\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Media.Playlist} playlist - The playlist to be used during playback.\n * @desc Sets the source URI on the NativePlayer instance,\n * callback used when prepare has been called (usually via the {@link PlaybackSession}).\n * @note ensure a proper accessToken is passed on xhr requests for the NativePlayer DRM\n */\n setSource(playlist) {\n\n const errorMessage = {\n method: `${this.constructor.name}.setSource(playlist)`,\n get playlist() {\n return `${this.method} playlist should be an instance of SDK.Media.Playlist`;\n }\n };\n\n instanceStrict(playlist, Playlist, errorMessage.playlist, InvalidArgumentException);\n\n this.playlistUri = playlist.streamUri;\n\n this.nativePlayer.drm.setXhrConfigProvider(() => ({\n headers: {\n key: {\n Authorization: this.accessToken\n }\n }\n }));\n\n }\n\n /**\n *\n * @access public\n * @desc Gets a snapshot of information about media playback.\n * @throws {ServiceException}\n * @returns {Promise} - instance that contains a snapshot\n * of information about media playback.\n * @note metric value is rounded down to prevent possible service issues with floats\n * @note executed by `PlaybackTelemetryDispatcher.recordStreamSample`\n *\n */\n async getPlaybackMetrics() {\n\n const errorMessage = {\n method: `${this.constructor.name}.getPlaybackMetrics()`,\n get currentPlayhead() {\n return `${this.method} unable to get NativePlayer playhead data`;\n },\n get currentBitrate() {\n return `${this.method} unable to get NativePlayer bitrate data`;\n }\n };\n\n const { nativePlayer, unavailableMetric } = this;\n\n if (Check.not.assigned(nativePlayer.quality)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentBitrate)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n throw new ServiceException({ reasons, exceptionData });\n\n }\n\n if (Check.not.assigned(nativePlayer.currentTime)) {\n\n const reasons = [new ErrorReason('', errorMessage.currentPlayhead)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n throw new ServiceException({ reasons, exceptionData });\n\n }\n\n const currentBitrate = Math.floor(nativePlayer.quality.currentKbps) || unavailableMetric;\n const currentPlayhead = Math.floor(nativePlayer.currentTime) || unavailableMetric;\n\n return new PlaybackMetrics({ currentBitrate, currentPlayhead });\n\n }\n\n /**\n *\n * @access public\n * @param {PlaybackEventListener} listener - The instance of the `PlaybackEventListener` to use.\n * @desc Adds listener from PlaybackTelemetryDispatcher -> PlaybackEventListener\n * @returns {Promise} - A promise that resolves after the listeners have been added.\n *\n */\n async addListener(listener) {\n\n const errorMessage = {\n method: `${this.constructor.name}.addListener(listener)`,\n get listener() {\n return `${this.method} should be an instance of PlaybackEventListener`;\n },\n get addListener() {\n return `${this.method} unable to add PlaybackEventListener`;\n }\n };\n\n instanceStrict(listener, PlaybackEventListener, errorMessage.listener, InvalidArgumentException);\n\n const { nativePlayer, boundHandlers } = this;\n const { playbackStartedEvent, playbackPausedEvent, playbackResumedEvent, playbackInitializedEvent } = this;\n const { playbackReadyEvent, playbackSeekedEvent, bitrateChangedEvent, playbackExitedEvent } = this;\n const { rebufferingStartedEvent, rebufferingEndedEvent, subtitleChangedEvent, audioChangedEvent } = this;\n const { masterPlaylistFetchedEvent, variantPlaylistFetchedEvent, mediaSegmentFetchedEvent } = this;\n\n const { PlayerEvents } = nativePlayer.events;\n const { MEDIA_PAUSED, MEDIA_RESUMED, MEDIA_STARTED, INITIALIZED } = PlayerEvents.PLAYBACK;\n const { READY, MEDIA_SEEK_COMPLETE, EXITED, BUFFERING_STARTED, BUFFERING_ENDED } = PlayerEvents.PLAYBACK;\n const { MANIFEST_LOADED, VARIANT_LOADED, CHUNK_LOADED } = PlayerEvents.PLAYBACK;\n const { ACTIVE_PROFILE_CHANGED } = PlayerEvents.QUALITY;\n const { SELECTED_TRACK_CHANGED: SUBTITLE_SELECTED_TRACK_CHANGED } = PlayerEvents.CAPTIONS;\n const { SELECTED_TRACK_CHANGED: AUDIO_SELECTED_TRACK_CHANGED } = PlayerEvents.AUDIO;\n\n if (Check.not.function(nativePlayer.on) || Check.not.function(nativePlayer.off)) {\n\n const reasons = [new ErrorReason('', errorMessage.addListener)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n throw new ServiceException({ reasons, exceptionData });\n\n }\n\n this.listener = listener;\n\n boundHandlers.playbackStartedEvent = playbackStartedEvent.bind(this);\n boundHandlers.playbackPausedEvent = playbackPausedEvent.bind(this);\n boundHandlers.playbackResumedEvent = playbackResumedEvent.bind(this);\n boundHandlers.playbackInitializedEvent = playbackInitializedEvent.bind(this);\n boundHandlers.playbackReadyEvent = playbackReadyEvent.bind(this);\n boundHandlers.playbackSeekedEvent = playbackSeekedEvent.bind(this);\n boundHandlers.bitrateChangedEvent = bitrateChangedEvent.bind(this);\n boundHandlers.playbackExitedEvent = playbackExitedEvent.bind(this);\n boundHandlers.rebufferingStartedEvent = rebufferingStartedEvent.bind(this);\n boundHandlers.rebufferingEndedEvent = rebufferingEndedEvent.bind(this);\n boundHandlers.subtitleChangedEvent = subtitleChangedEvent.bind(this);\n boundHandlers.audioChangedEvent = audioChangedEvent.bind(this);\n boundHandlers.masterPlaylistFetchedEvent = masterPlaylistFetchedEvent.bind(this);\n boundHandlers.variantPlaylistFetchedEvent = variantPlaylistFetchedEvent.bind(this);\n boundHandlers.mediaSegmentFetchedEvent = mediaSegmentFetchedEvent.bind(this);\n\n nativePlayer.on(MEDIA_STARTED, boundHandlers.playbackStartedEvent);\n nativePlayer.on(MEDIA_RESUMED, boundHandlers.playbackResumedEvent);\n nativePlayer.on(MEDIA_PAUSED, boundHandlers.playbackPausedEvent);\n nativePlayer.on(INITIALIZED, boundHandlers.playbackInitializedEvent);\n nativePlayer.on(READY, boundHandlers.playbackReadyEvent);\n nativePlayer.on(MEDIA_SEEK_COMPLETE, boundHandlers.playbackSeekedEvent);\n nativePlayer.on(ACTIVE_PROFILE_CHANGED, boundHandlers.bitrateChangedEvent);\n nativePlayer.on(EXITED, boundHandlers.playbackExitedEvent);\n nativePlayer.on(BUFFERING_STARTED, boundHandlers.rebufferingStartedEvent);\n nativePlayer.on(BUFFERING_ENDED, boundHandlers.rebufferingEndedEvent);\n nativePlayer.on(SUBTITLE_SELECTED_TRACK_CHANGED, boundHandlers.subtitleChangedEvent);\n nativePlayer.on(AUDIO_SELECTED_TRACK_CHANGED, boundHandlers.audioChangedEvent);\n nativePlayer.on(MANIFEST_LOADED, boundHandlers.masterPlaylistFetchedEvent);\n nativePlayer.on(VARIANT_LOADED, boundHandlers.variantPlaylistFetchedEvent);\n nativePlayer.on(CHUNK_LOADED, boundHandlers.mediaSegmentFetchedEvent);\n\n }\n\n /**\n *\n * @access public\n * @param {PlaybackEventListener} listener - The instance of the {@link PlaybackEventListener} to use.\n * @desc Removes listener\n *\n */\n removeListener(listener) {\n\n const { nativePlayer } = this;\n\n const isCorrectListener = Check.assigned(this.listener) && Check.equal(this.listener, listener);\n\n if (Check.not.function(nativePlayer.off) || isCorrectListener === false) {\n return;\n }\n\n const { boundHandlers } = this;\n const { PlayerEvents } = nativePlayer.events;\n const { MEDIA_PAUSED, MEDIA_RESUMED, MEDIA_STARTED, INITIALIZED } = PlayerEvents.PLAYBACK;\n const { READY, MEDIA_SEEK_COMPLETE, EXITED, BUFFERING_STARTED, BUFFERING_ENDED } = PlayerEvents.PLAYBACK;\n const { MANIFEST_LOADED, VARIANT_LOADED, CHUNK_LOADED } = PlayerEvents.PLAYBACK;\n const { ACTIVE_PROFILE_CHANGED } = PlayerEvents.QUALITY;\n const { SELECTED_TRACK_CHANGED: SUBTITLE_SELECTED_TRACK_CHANGED } = PlayerEvents.CAPTIONS;\n const { SELECTED_TRACK_CHANGED: AUDIO_SELECTED_TRACK_CHANGED } = PlayerEvents.AUDIO;\n\n this.listener = null;\n\n nativePlayer.off(MEDIA_STARTED, boundHandlers.playbackStartedEvent);\n nativePlayer.off(MEDIA_RESUMED, boundHandlers.playbackResumedEvent);\n nativePlayer.off(MEDIA_PAUSED, boundHandlers.playbackPausedEvent);\n nativePlayer.off(INITIALIZED, boundHandlers.playbackInitializedEvent);\n nativePlayer.off(READY, boundHandlers.playbackReadyEvent);\n nativePlayer.off(MEDIA_SEEK_COMPLETE, boundHandlers.playbackSeekedEvent);\n nativePlayer.off(ACTIVE_PROFILE_CHANGED, boundHandlers.bitrateChangedEvent);\n nativePlayer.off(EXITED, boundHandlers.playbackExitedEvent);\n nativePlayer.off(BUFFERING_STARTED, boundHandlers.rebufferingStartedEvent);\n nativePlayer.off(BUFFERING_ENDED, boundHandlers.rebufferingEndedEvent);\n nativePlayer.off(SUBTITLE_SELECTED_TRACK_CHANGED, boundHandlers.subtitleChangedEvent);\n nativePlayer.off(AUDIO_SELECTED_TRACK_CHANGED, boundHandlers.audioChangedEvent);\n nativePlayer.off(MANIFEST_LOADED, boundHandlers.masterPlaylistFetchedEvent);\n nativePlayer.off(VARIANT_LOADED, boundHandlers.variantPlaylistFetchedEvent);\n nativePlayer.off(CHUNK_LOADED, boundHandlers.mediaSegmentFetchedEvent);\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Drm.DrmProvider} drmProvider - The DRM provider from the playlist service\n * @returns {Promise} A promise that rejects because this player adapter requires multiple\n * `SDK.Drm.DrmProvider` instances.\n *\n */\n async setDrmProvider(drmProvider) { // eslint-disable-line no-unused-vars\n\n const errorMessage = {\n method: `${this.constructor.name}.setDrmProvider(drmProvider)`,\n get multipleDrmProviders() {\n return `${this.method} - this playerAdapter needs multiple SDK.Drm.DrmProvider instances, please use DssWebPlayerAdapter#setDrmProviders(drmProviders) which takes in an Array of SDK.Drm.DrmProvider instances`; // eslint-disable-line max-len\n }\n };\n\n const reasons = [new ErrorReason('', errorMessage.multipleDrmProviders)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n throw ServiceException({ reasons, exceptionData });\n\n }\n\n /**\n *\n * @access public\n * @param {Array} drmProviders - The array DRM providers from the playlist service\n * @desc Sets an array of DrmProviders\n * @returns {Promise} A promise that when resolved indicates the DRM providers have been set\n *\n */\n async setDrmProviders(drmProviders) {\n\n const errorMessage = {\n method: `${this.constructor.name}.setDrmProviders(drmProviders)`,\n get drmProviders() {\n return `${this.method} should be an Array of SDK.Drm.DrmProvider`;\n }\n };\n\n array.of.instanceStrict(drmProviders, DrmProvider, errorMessage.drmProviders, InvalidArgumentException);\n\n this.drmProviders = drmProviders;\n this.nativePlayer.drm.configuration = this.getDrmConfiguration(drmProviders);\n\n }\n\n /**\n *\n * @access public\n * @desc Resets player adapter state. Removes all playback listeners.\n *\n */\n clean() {\n\n this.boundHandlers = {};\n\n this.resetSource();\n this.resetDrmProviders();\n\n this.removeListener(this.listener);\n\n }\n\n /**\n *\n * @access public\n * @param {Object} trackingData - The tracking data for the current `playlistUri`\n * @desc Sets tracking data\n *\n */\n setTrackingData(trackingData) {\n\n const errorMessage = {\n method: `${this.constructor.name}.setTrackingData(trackingData)`,\n get trackingData() {\n return `${this.method} should be an Object`;\n }\n };\n\n nonEmptyObject(trackingData, errorMessage.trackingData, InvalidArgumentException);\n\n this.trackingData = trackingData;\n\n }\n\n // #region private methods\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @param {Object} adEngineData\n * @desc overwrites local adEngine object in playbackSession.prepare()\n * @note used in xhrCallbacks for bam-hls and other platforms that need to reuse adEngine data\n */\n setAdEngineData(adEngineData) {\n\n super.setAdEngineData(adEngineData);\n\n const { ssess } = adEngineData;\n\n this.nativePlayer.drm.setXhrConfigProvider(() => ({\n headers: {\n adEngine: { ssess }\n }\n }));\n\n }\n\n /**\n *\n * @access private\n * @desc Resets the `playlistUri`.\n *\n */\n resetSource() {\n\n this.playlistUri = '';\n\n }\n\n /**\n *\n * @access private\n * @desc Resets the DRM providers\n *\n */\n resetDrmProviders() {\n\n this.drmProviders = [];\n this.nativePlayer.drm.configuration = null;\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Drm.DrmProvider} drmProvider\n * @desc Builds and returns a KeySystem object from a given drmProvider\n * @returns {Object}\n *\n */\n getKeySystem(drmProvider) {\n\n const keySystem = drmProvider.type;\n const licenseRequestUri = drmProvider.licenseRequestUri;\n const licenseRequestHeaders = drmProvider.processLicenseRequestHeaders();\n\n return {\n keySystem,\n licenseRequestUri,\n licenseRequestHeaders: Object.keys(licenseRequestHeaders).map((item) => ({\n name: item,\n value: licenseRequestHeaders[item]\n })),\n /**\n *\n * @note bam-hls calls `Promise.resolve(this._keySystemConfig.serverCertificate)`\n * where serverCertificate is a reference to this function, in EME.js.\n * We need to use an IIFE here so we setup a promise since they are not executing this function\n * only expecting a Promise(cert), Promise(undefined), cert or undefined\n *\n */\n serverCertificate: (() => {\n\n if (keySystem === DrmType.FAIRPLAY) {\n\n return drmProvider.getFairPlayCertificate();\n\n } else if (keySystem === DrmType.WIDEVINE) {\n\n return drmProvider.getWidevineCertificate();\n\n }\n\n // bam-hls expects undefined so they don't attempt to process this as a certificate\n return Promise.resolve(undefined);\n\n })()\n };\n\n }\n\n /**\n *\n * @access private\n * @param {SDK.Drm.DrmProvider} drmProviders - The array DRM providers from the playlist service\n * @desc The DRM Configuration contains an array of key system configurations, one for\n * each supported key system. At a minimum, the key system configuration specifies\n * the key system, and a method to acquire a license, either a uri or a callback function.\n *\n * If a callback is provided, then the license request uri is optional, and would be available to the callback.\n * If no callback is provided, then the licenseRequestUri is not optional.\n *\n * @note licenseRequestHeaders expects a name/value set,\n * i.e. [{name: 'Content-Type', value: 'application/octet-stream'}]\n * @note serverCertifcate is mandatory for FAIRPLAY and recommended for WIDEVINE\n * @note serverCertificate is expected to be a Promise or BufferSource\n * @see https://github.bamtech.co/bam-hls/bam-hls.js/blob/master/API.md#keysystemconfiguration\n * @returns {{ Array }} The DRM configuration object wrapping an array of keySystems\n *\n */\n getDrmConfiguration(drmProviders) {\n\n const keySystems = drmProviders.map((item) => this.getKeySystem(item));\n\n return {\n keySystems\n };\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {Object} eventData\n * @desc Trigger when audio stream changes.\n *\n */\n audioChangedEvent(eventData) {\n\n const { audio = {}, variant = {} } = eventData;\n const { audioChannels, audioCodec } = variant;\n const { name: audioName, language: audioLanguage } = audio;\n\n const options = {\n audioChannels,\n audioCodec,\n audioName,\n audioLanguage\n };\n\n const audioChangedEventData = new AudioChangedEventData(options);\n\n this.onAudioChanged(audioChangedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @desc Trigger when buffering starts.\n *\n */\n rebufferingStartedEvent() {\n\n const rebufferingStartedEventData = new RebufferingStartedEventData();\n\n this.onRebufferingStarted(rebufferingStartedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @desc Trigger when buffering ends.\n *\n */\n rebufferingEndedEvent() {\n\n const rebufferingEndedEventData = new RebufferingEndedEventData();\n\n this.onRebufferingEnded(rebufferingEndedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {Object} eventData\n * @desc Trigger when playback has been exited.\n * @note avoids NaN\n *\n */\n playbackExitedEvent(eventData) {\n\n const { cause, error, playhead } = eventData;\n\n const options = {\n cause,\n error,\n playhead: playhead * 1000 || null\n };\n\n const playbackExitedEventData = new PlaybackExitedEventData(options);\n\n this.onPlaybackExited(playbackExitedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @desc Trigger when playback has been initialized.\n * @note avoids NaN\n *\n */\n playbackInitializedEvent(eventData) {\n\n const { variant = {}, audio = {}, subtitle = {}, startupPosition, startupBitrate: startBitrate } = eventData;\n const { areSubtitlesVisible: subtitleVisibility } = eventData;\n const { name: audioName, language: audioLanguage } = audio;\n const { name: subtitleName, language: subtitleLanguage } = subtitle;\n const { audioChannels, audioCodec, videoCodec, videoRange } = variant;\n\n const playhead = startupPosition * 1000 || null;\n\n const options = {\n playhead,\n audioChannels,\n audioCodec,\n videoCodec,\n videoRange,\n subtitleName,\n subtitleLanguage,\n audioName,\n audioLanguage,\n subtitleVisibility,\n startBitrate\n };\n\n const playbackInitializedEventData = new PlaybackInitializedEventData(options);\n\n this.onPlaybackInitialized(playbackInitializedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {Object} eventData\n * @desc Trigger when playback seeks.\n * @note avoids NaN\n *\n */\n playbackSeekedEvent(eventData) {\n\n const { cause, fromPlayhead, toPlayhead } = eventData;\n\n const options = {\n cause,\n fromPlayhead: fromPlayhead * 1000 || null,\n toPlayhead: toPlayhead * 1000 || null\n };\n\n const playbackSeekedEventData = new PlaybackSeekedEventData(options);\n\n this.onPlaybackSeeked(playbackSeekedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {Object} eventData\n * @desc Trigger when the subtitle changes.\n *\n */\n subtitleChangedEvent(eventData) {\n\n const { subtitle = {}, areSubtitlesVisible: subtitleVisibility } = eventData;\n const { name: subtitleName, language: subtitleLanguage } = subtitle;\n\n const options = {\n subtitleName,\n subtitleLanguage,\n subtitleVisibility\n };\n\n const subtitleChangedEventData = new SubtitleChangedEventData(options);\n\n this.onSubtitleChanged(subtitleChangedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {Object} eventData\n * @desc Trigger when the bitrate changes.\n *\n */\n bitrateChangedEvent(eventData) {\n\n const bitrateChangedEventData = new BitrateChangedEventData(eventData);\n\n this.onBitrateChanged(bitrateChangedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {Object} eventData\n * @desc Trigger when playback is ready.\n *\n */\n playbackReadyEvent(eventData) {\n\n const { mediaBufferedTime: bufferedTime } = eventData;\n\n const playbackReadyEventData = new PlaybackReadyEventData(bufferedTime);\n\n this.onPlaybackReady(playbackReadyEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @desc Trigger when playback starts.\n *\n */\n playbackStartedEvent() {\n\n const playbackStartedEvent = new PlaybackStartedEventData();\n\n this.onPlaybackStarted(playbackStartedEvent);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @desc Trigger when playback gets paused.\n *\n */\n playbackPausedEvent() {\n\n const playbackPausedEventData = new PlaybackPausedEventData();\n\n this.onPlaybackPaused(playbackPausedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @desc Trigger when playback gets resumed.\n *\n */\n playbackResumedEvent() {\n\n const playbackResumedEventData = new PlaybackResumedEventData();\n\n this.onPlaybackResumed(playbackResumedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {Object} eventData\n *\n */\n masterPlaylistFetchedEvent(eventData) {\n\n const { liveType, serverRequest: server = {} } = eventData;\n const { status, serverIp, cdnName, networkType, timeToFirstByte, error } = server;\n\n const serverRequest = new ServerRequest({\n status,\n serverIp,\n cdnName,\n networkType,\n timeToFirstByte,\n error\n });\n\n const masterPlaylistFetchedEventData = new MasterPlaylistFetchedEventData({\n liveType,\n serverRequest\n });\n\n this.onMasterPlaylistFetched(masterPlaylistFetchedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {Object} eventData\n *\n */\n variantPlaylistFetchedEvent(eventData) {\n\n const { averageBandwidth, bandwidth, channels, name, language } = eventData;\n const { type, resolution, serverRequest: server = {} } = eventData;\n const { status, serverIp, cdnName, networkType, timeToFirstByte, error } = server;\n\n const serverRequest = new ServerRequest({\n status,\n serverIp,\n cdnName,\n networkType,\n timeToFirstByte,\n error\n });\n\n const variantPlaylistFetchedEventData = new VariantPlaylistFetchedEventData({\n averageBandwidth,\n bandwidth,\n channels,\n name,\n language,\n type,\n resolution,\n serverRequest\n });\n\n this.onVariantPlaylistFetched(variantPlaylistFetchedEventData);\n\n }\n\n /**\n *\n * @access private\n * @since 4.0.0\n * @param {Object} eventData\n * @desc Log is made only when there is an error.\n *\n */\n mediaSegmentFetchedEvent(eventData) {\n\n const { serverRequest: server = {} } = eventData;\n const { status, serverIp, cdnName, networkType, timeToFirstByte, error } = server;\n\n if (Check.not.assigned(error)) {\n return;\n }\n\n const serverRequest = new ServerRequest({\n status,\n serverIp,\n cdnName,\n networkType,\n timeToFirstByte,\n error\n });\n\n const mediaSegmentFetchedEventData = new MediaSegmentFetchedEventData({ serverRequest });\n\n this.onMediaSegmentFetched(mediaSegmentFetchedEventData);\n\n }\n\n /**\n *\n * @access public\n * @desc Completes the cleanup process by completely cleaning up all {@link PlayerAdapter} references.\n * This method should be executed by the application developer\n * when they no longer need to use a `PlayerAdapter` instance.\n * @note Because `clean` is automatically called by the `PlaybackSession` instance,\n * another method is necessary to handle the use case of an application developer who\n * wants to continue using a `PlayerAdapter` instance after a `PlaybackSession` has been released.\n *\n */\n dispose() {\n\n this.nativePlayer = null;\n this.accessToken = null;\n\n }\n\n // #endregion\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/media/playerAdapter/dssWebPlayerAdapter.js","var _Object$getOwnPropertyDescriptor = require(\"../core-js/object/get-own-property-descriptor\");\n\nvar _Reflect$get = require(\"../core-js/reflect/get\");\n\nvar getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && _Reflect$get) {\n module.exports = _get = _Reflect$get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n\n var desc = _Object$getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/get.js\n// module id = 660\n// module chunks = 0","module.exports = require(\"core-js/library/fn/reflect/get\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/core-js/reflect/get.js\n// module id = 661\n// module chunks = 0","require('../../modules/es6.reflect.get');\nmodule.exports = require('../../modules/_core').Reflect.get;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/fn/reflect/get.js\n// module id = 662\n// module chunks = 0","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js/library/modules/es6.reflect.get.js\n// module id = 663\n// module chunks = 0","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/superPropBase.js\n// module id = 664\n// module chunks = 0","/**\n *\n * @module paywallApi\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/paywall.md\n *\n */\n\nimport Check from 'check-types';\n\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\nimport PaywallManager from './paywallManager';\n\nconst TokenManager = Token.TokenManager;\n\nconst Util = Services.Util;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst PaywallApiDustUrnReference = Services.Internal.Dust.DustUrnReference.paywall.paywallApi;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class PaywallApi\n * @since 3.9.0\n * @desc Provides available product information and account context.\n *\n */\nexport default class PaywallApi {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Paywall.PaywallManager} options.paywallManager\n * @param {SDK.Token.TokenManager} options.tokenManager\n * @param {SDK.Logging.Logger} [options.logger=Logging]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get paywallManager() {\n return `${this.ctor} needs SDK.Paywall.PaywallManager instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs SDK.Token.TokenManager instance`;\n },\n get logger() {\n return `${this.ctor} needs SDK.Logger instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { paywallManager, tokenManager, logger = Logging } = options;\n\n instanceStrict(paywallManager, PaywallManager, errorMessage.paywallManager, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {SDK.Paywall.PaywallManager}\n *\n */\n this.paywallManager = paywallManager;\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => this.paywallManager.client.dustEnabled);\n\n this.logger.info(PaywallApi.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @since 3.9.0\n * @desc Returns a paywall object containing sku, campaign and account context information for\n * a given country, platform and account/device.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n */\n async getPaywall() {\n\n const { paywallManager, dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: PaywallApi.name,\n urn: PaywallApiDustUrnReference.getPaywall\n });\n\n try {\n\n return await paywallManager.getPaywall();\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n return Promise.reject(ex);\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/paywall/paywallApi.js","/**\n *\n * @module purchaseApi\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/purchase.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/PurchaseApi.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/external-activation.md\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/eligibility.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Eligibility from './../eligibility/entry';\nimport Subscription from './../subscription/entry';\nimport ExternalActivation from './../externalActivation/entry';\nimport PurchaseManager from './purchaseManager';\nimport RedeemRetryHandler from './redeemRetryHandler';\nimport Receipt from './receipt';\n\nconst Util = Services.Util;\nconst EligibilityManager = Eligibility.EligibilityManager;\nconst SubscriptionManager = Subscription.SubscriptionManager;\nconst ExternalActivationManager = ExternalActivation.ExternalActivationManager;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst PurchaseApiDustUrnReference = Services.Internal.Dust.DustUrnReference.purchase.purchaseApi;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyObject,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class PurchaseApi\n * @desc Provides a way to redeem and restore purchases.\n *\n */\nexport default class PurchaseApi {\n\n /**\n *\n * @param {Object} options\n * @param {SDK.Purchase.PurchaseManager} options.purchaseManager\n * @param {SDK.Subscription.SubscriptionManager} options.subscriptionManager\n * @param {SDK.ExternalActivation.ExternalActivationManager} options.externalActivationManager\n * @param {SDK.Eligibility.EligibilityManager} options.eligibilityManager\n * @param {SDK.Logging.Logger} [options.logger=Logging]\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: `${this.constructor.name}(options)`,\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get purchaseManager() {\n return `${this.ctor} needs PurchaseManager instance`;\n },\n get subscriptionManager() {\n return `${this.ctor} needs SDK.Subscription.SubscriptionManager instance`;\n },\n get externalActivationManager() {\n return `${this.ctor} needs SDK.ExternalActivation.ExternalActivationManager instance`;\n },\n get eligibilityManager() {\n return `${this.ctor} needs SDK.Eligibility.EligibilityManager instance`;\n },\n get logger() {\n return `${this.ctor} needs SDK.Logger instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { purchaseManager, subscriptionManager, externalActivationManager } = options;\n const { eligibilityManager, logger = Logging } = options;\n\n instanceStrict(purchaseManager, PurchaseManager, errorMessage.purchaseManager, InvalidArgumentException);\n\n instanceStrict(\n subscriptionManager,\n SubscriptionManager,\n errorMessage.subscriptionManager,\n InvalidArgumentException\n );\n\n instanceStrict(\n externalActivationManager,\n ExternalActivationManager,\n errorMessage.externalActivationManager,\n InvalidArgumentException\n );\n\n instanceStrict(\n eligibilityManager,\n EligibilityManager,\n errorMessage.eligibilityManager,\n InvalidArgumentException\n );\n\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {PurchaseManager}\n *\n */\n this.purchaseManager = purchaseManager;\n\n /**\n *\n * @access private\n * @type {SDK.Subscription.SubscriptionManager}\n *\n */\n this.subscriptionManager = subscriptionManager;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.ExternalActivation.ExternalActivationManager}\n *\n */\n this.externalActivationManager = externalActivationManager;\n\n /**\n *\n * @access private\n * @since 4.2.0\n * @type {SDK.Eligibility.EligibilityManager}\n *\n */\n this.eligibilityManager = eligibilityManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => this.purchaseManager.client.dustEnabled);\n\n this.logger.info(PurchaseApi.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {Receipt} receipt - The Receipt for the purchase being redeemed.\n * @desc Redeem new purchases with the activation service and apply them to the access context.\n * @throws {ActivationFailedException} The service failed to activate the receipt.\n * @note This error should be thrown if the service responds with a 202 code and temporaryAccessGranted: false\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} Returns an asynchronous action that\n * will send a notification when it is complete.\n *\n */\n redeem(receipt) {\n\n const errorMessage = {\n method: `${this.constructor.name}.redeem(receipt)`,\n get receipt() {\n return `${this.method} needs Receipt instance`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: PurchaseApi.name,\n urn: PurchaseApiDustUrnReference.redeem\n });\n\n instanceStrict(receipt, Receipt, errorMessage.receipt, InvalidArgumentException);\n\n const { purchaseManager } = this;\n\n const handler = new RedeemRetryHandler(purchaseManager, receipt);\n\n return handler.run().catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {Receipt} receipt - The Receipt for the purchase being restored.\n * @desc Restore existing purchases by validating them with the activation\n * service and applying them to the access context.\n * @throws {ActivationFailedException} The service failed to activate the receipt.\n * @note This error should be thrown if the service responds with a 202 code and temporaryAccessGranted: false\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} Returns an asynchronous action that\n * will send a notification when it is complete.\n *\n */\n restore(receipt) {\n\n const errorMessage = {\n method: `${this.constructor.name}.restore(receipt)`,\n get receipt() {\n return `${this.method} needs Receipt instance`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: PurchaseApi.name,\n urn: PurchaseApiDustUrnReference.restore\n });\n\n instanceStrict(receipt, Receipt, errorMessage.receipt, InvalidArgumentException);\n\n const { purchaseManager } = this;\n\n return purchaseManager.restorePurchases(receipt.receiptCredentials).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} activationTokenString - The activationToken string.\n * @desc Creates a new link between account in header and account in token body. Checks if any subscription exists,\n * then new account is linked to that subscription as well. Can only be called Hulu linking.\n * @note Send as `linkToken` in the JSON payload.\n * @note Calls the `ExternalActivationManager.activateToken()` function.\n * @throws {ActivationTokenExpiredException} The service failed to activate due to the\n * activation token being expired.\n * @note This error should be thrown if the service responds with a 400 code with the reason \"token.expired\"\n * @throws {ActivationBadRequestException} The service failed to activate due to a bad request.\n * @note This error should be thrown if the service responds with a 400 code. The possible reasons include, but are\n * not limited to, \"token.invalid\" and \"token.missing\"\n * @throws {ActivationForbiddenException} The service failed to activate due to linking being forbidden.\n * @note This error should be thrown if the service responds with a 403 code. The possible reasons include, but are\n * not limited to, \"linked.elsewhere\" and \"token.forbidden\"\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} Returns the\n * `ExternalActivationResult` which can be inspected by the application developer to\n * verify `temporaryAccessGranted` & `resultStatus`.\n * @example Checking the external activation result to verify activation status\n *\n * const ExternalActivation = SDK.Services.ExternalActivation;\n * const TemporaryDefaultAccessActivationStatus = ExternalActivation.TemporaryDefaultAccessActivationStatus;\n * const externalActivationResult = await purchaseApi.activateExternalToken(activationString);\n * const resultStatus = externalActivationResult.resultStatus;\n *\n * if (resultStatus === TemporaryDefaultAccessActivationStatus.activationSucceeded) {\n * console.log('Activation Succeeded.');\n * }\n *\n */\n async activateExternalToken(activationTokenString) {\n\n const errorMessage = {\n method: `${this.constructor.name}.activateExternalToken(activationTokenString)`,\n get activationTokenString() {\n return `${this.method} activationTokenString should be a String with length`;\n }\n };\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: PurchaseApi.name,\n urn: PurchaseApiDustUrnReference.activateExternalToken\n });\n\n nonEmptyString(activationTokenString, errorMessage.activationTokenString, InvalidArgumentException);\n\n const { externalActivationManager } = this;\n\n try {\n\n const externalActivationResult = await externalActivationManager.activateToken(activationTokenString);\n const temporaryAccessGranted = externalActivationResult.temporaryAccessGranted;\n const resultStatus = externalActivationResult.resultStatus;\n\n if (temporaryAccessGranted) {\n logger.info(ExternalActivationManager.name, 'Temporary access has been granted.');\n }\n\n if (resultStatus) {\n logger.info(ExternalActivationManager.name, `Temporary access, result status: ${resultStatus}`);\n }\n\n if (dustEnabled) {\n dustLogUtility.logData({\n result: externalActivationResult\n });\n }\n\n return externalActivationResult;\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n throw ex;\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @desc Retrieves a JWT link token based on user's bundle purchase. Authorized third\n * party should be able to validate this token and grant user access. Can only be called from D+ partner.\n * @note Calls the `ExternalActivationManager.getActivationToken()` function.\n * @throws {BundleForbiddenException} The service failed to return the ActivationToken for the bundle purchase.\n * @note This error should be thrown if the service responds with a 403 code. The possible reasons include, but are\n * not limited to, \"expected.subscriptions.not.found\"\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that returns information\n * about the link token when it succeeds.\n *\n */\n async getExternalActivationToken() {\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: PurchaseApi.name,\n urn: PurchaseApiDustUrnReference.getExternalActivationToken\n });\n\n const { externalActivationManager } = this;\n\n try {\n\n return await externalActivationManager.getActivationToken();\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n throw ex;\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 4.2.0\n * @desc Request eligibility status for a given product\n * @throws {InvalidRequestException} Response returned in case of invalid request.\n * @note This error should be thrown if the service responds with a 400 HTTP code. The possible error\n * codes include `invalid.request`\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} Returns an asynchronous action that\n * will send a notification when it is complete.\n *\n */\n async getEligibilityStatus() {\n\n const { dustEnabled, logger } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: PurchaseApi.name,\n urn: PurchaseApiDustUrnReference.getEligibilityStatus\n });\n\n const { eligibilityManager } = this;\n\n try {\n\n return await eligibilityManager.getEligibilityStatus();\n\n } catch (ex) {\n\n if (dustEnabled) {\n dustLogUtility.captureErrors(ex);\n }\n\n throw ex;\n\n } finally {\n\n if (dustEnabled) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/purchase/purchaseApi.js","/**\n *\n * @module purchases\n *\n */\n\nimport Check from 'check-types';\nimport Exception from './../services/exception/entry';\nimport PurchaseManager from './purchaseManager';\nimport Receipt from './receipt';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class Purchases\n *\n */\nexport default class Purchases {\n\n /**\n *\n * @param {PurchaseManager} purchaseManager\n *\n */\n constructor(purchaseManager) {\n\n const errorMessage = {\n ctor: 'Purchases(PurchaseManager)',\n get purchaseManager() {\n return `${this.ctor} needs PurchaseManager instance`;\n }\n };\n\n instanceStrict(purchaseManager, PurchaseManager, errorMessage.purchaseManager, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {PurchaseManager}\n *\n */\n this.purchaseManager = purchaseManager;\n\n }\n\n /**\n *\n * @access private\n * @param {Receipt} receipt\n * @returns {Promise}\n *\n */\n redeem(receipt) {\n\n const errorMessage = {\n method: 'Purchases.redeem(receipt)',\n get receipt() {\n return `${this.method} needs Receipt instance`;\n }\n };\n\n instanceStrict(receipt, Receipt, errorMessage.receipt, InvalidArgumentException);\n\n return new Promise((resolve, reject) => {\n return reject(new Error('not-implemented'));\n });\n\n }\n\n /**\n *\n * @access private\n * @param {Receipt} receipt\n * @returns {Promise}\n *\n */\n restore(receipt) {\n\n const errorMessage = {\n method: 'Purchases.restore(receipt)',\n get receipt() {\n return `${this.method} needs Receipt instance`;\n }\n };\n\n instanceStrict(receipt, Receipt, errorMessage.receipt, InvalidArgumentException);\n\n return new Promise((resolve, reject) => {\n return reject(new Error('not-implemented'));\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/purchase/purchases.js","/**\n *\n * @module purchaseType\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef PurchaseType\n * @type {Object}\n * @desc Defines the different types of purchases that are supported.\n * @example PurchaseType.AppleIAP // 'AppleIAP'\n *\n * @property {String} AppleIAP - Apple in app purchase.\n * @property {String} GoogleIAP\n * @property {String} DirectToConsumer - Direct to consumer purchase.\n *\n */\n\n/**\n *\n * @enum\n * @type {PurchaseType}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n AppleIAP: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n GoogleIAP: null,\n /**\n *\n * @access public\n * @type {String}\n *\n */\n DirectToConsumer: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/purchase/purchaseType.js","/**\n *\n * @module entry\n * @desc {SDK.Test.Sequences} entry point.\n *\n */\n\nimport Playback from './media/playback';\nimport PlaybackCleanup from './media/playbackCleanup';\nimport PlaybackExternalAccount from './media/playbackExternalAccount';\nimport UserProfile from './userProfile/userProfile';\nimport CommerceStoredPayment from './commerce/commerceStoredPayment';\nimport UserActivity from './userActivity/userActivity';\nimport OneTimePasscode from './identity/bam/oneTimePasscode';\n\n/**\n *\n * @typedef SDK.Test.Sequences\n * @type {Object}\n *\n * @property {Playback} Playback\n * @property {PlaybackCleanup} PlaybackCleanup\n * @property {PlaybackExternalAccount} PlaybackExternalAccount\n * @property {UserProfile} UserProfile\n * @property {CommerceStoredPayment} commerceStoredPayment\n * @property {UserActivity} UserActivity\n * @property {OneTimePasscode} OneTimePasscode\n *\n */\n\n/**\n *\n * @type {SDK.Test.Sequences}\n *\n */\nexport default {\n\n Playback,\n PlaybackCleanup,\n PlaybackExternalAccount,\n UserProfile,\n CommerceStoredPayment,\n UserActivity,\n OneTimePasscode\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/sequences/entry.js","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/util/util.js\n// module id = 670\n// module chunks = 0","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/util/support/isBufferBrowser.js\n// module id = 671\n// module chunks = 0","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/util/node_modules/inherits/inherits_browser.js\n// module id = 672\n// module chunks = 0","/**\n *\n * @module playbackCleanup\n * @see https://devflow.jenkins.us-east-1.bamgrid.net/job/SDK-Doc/job/spec-sdk/job/master/1766/artifact/dist/uml/architecture/scenarios/sequence-playback.svg\n *\n */\n\nimport Check from 'check-types';\nimport assert from 'assert';\n\nimport SDK from './../../sdk';\n\nimport BaseSequence from './../base';\nimport AssertionErrorMessages from './../assertionErrorMessages';\n\nimport PlaybackSequence from './playback';\n\nimport Exception from './../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n assigned,\n instanceStrict,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class PlaybackCleanupSequence\n * @extends {BaseSequence}\n * @desc The cleanup portion of the primary playback sequence. Executes the `PlaybackSequence` internally.\n * @todo Update sequence to v3\n *\n * @example const playbackCleanupSequence = new SDK.Test.Sequences.PlaybackCleanup(\n * config, Html5PlayerAdapter, videoElement, queryContext, graphQlQuery\n * );\n *\n */\nexport default class PlaybackCleanupSequence extends BaseSequence {\n\n /**\n *\n * @param {Object} options contains all of the parameters for this function\n * @param {Object} [options.config] configuration used to build a BootstrapConfiguration instance\n * @param {SDK.Media.PlayerAdapter} options.PlayerAdapter player adapter to use in sequence\n * @param {NativePlayer} options.nativePlayer platform native player instance\n * @param {String} [options.queryContext] GraphQl query context\n * @param {SDK.Content.GraphQlQuery} [options.graphQlQuery] GraphQlQuery instance\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const GraphQlQuery = SDK.Content.GraphQlQuery;\n\n const errorMessage = {\n ctor: 'PlaybackCleanupSequence(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get config() {\n return `${this.ctor} config should be a non-empty Object`;\n },\n get playerAdapter() {\n return `${this.ctor} needs PlayerAdapter`;\n },\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n },\n get queryContext() {\n return `${this.ctor} queryContext should be a String with length`;\n },\n get graphQlQuery() {\n return `${this.ctor} needs GraphQlQuery instance`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { config, PlayerAdapter, nativePlayer, queryContext, graphQlQuery } = options;\n\n if (Check.assigned(config)) {\n nonEmptyObject(config, errorMessage.config, InvalidArgumentException);\n }\n\n assigned(PlayerAdapter, errorMessage.playerAdapter, InvalidArgumentException);\n assigned(nativePlayer, errorMessage.nativePlayer, InvalidArgumentException);\n\n if (Check.assigned(queryContext)) {\n nonEmptyString(queryContext, errorMessage.queryContext, InvalidArgumentException);\n }\n\n if (Check.assigned(graphQlQuery)) {\n instanceStrict(graphQlQuery, GraphQlQuery, errorMessage.graphQlQuery, InvalidArgumentException);\n }\n\n super(options);\n\n /**\n *\n * @access public\n * @type {SDK.Media.PlayerAdapter}\n *\n */\n this.PlayerAdapter = PlayerAdapter;\n\n /**\n *\n * @access public\n * @type {NativePlayer}\n *\n */\n this.nativePlayer = nativePlayer;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.queryContext = queryContext;\n\n /**\n *\n * @access public\n * @type {SDK.Content.GraphQlQuery}\n *\n */\n this.graphQlQuery = graphQlQuery;\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.options = options;\n\n }\n\n /**\n *\n * @method execute\n * @desc runs the sequence to completion\n * @returns {Promise}\n *\n * @example playbackCleanupSequence.execute().then(() => { console.log('success'); });\n *\n */\n execute() {\n\n const { options } = this;\n\n return new Promise((resolve, reject) => {\n\n const sequenceOptions = Object.assign({}, options, { clearOnComplete: true });\n const playbackSequence = new PlaybackSequence(sequenceOptions);\n\n return playbackSequence.execute().then((playerAdapter) => {\n\n /** @test SDK.Media.PlayerAdapter */\n const playerAdapterErrorMessage = AssertionErrorMessages.playerAdapter.reset;\n\n assert.ok(!playerAdapter.playlistUri.length, playerAdapterErrorMessage);\n assert.ok(!Object.keys(playerAdapter.boundHandlers).length, playerAdapterErrorMessage);\n\n assert.ok(!playerAdapter.listener, playerAdapterErrorMessage);\n assert.ok(!playerAdapter.unavailableMetric, playerAdapterErrorMessage);\n\n return resolve(playerAdapter);\n\n }).catch((ex) => {\n\n return reject(ex);\n\n });\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/sequences/media/playbackCleanup.js","/**\n *\n * @module externalAccount\n * @desc external account sequence implementation\n * @see https://devflow.jenkins.us-east-1.bamgrid.net/job/SDK-Doc/job/spec-sdk/job/master/1766/artifact/dist/uml/architecture/scenarios/sequence-external-account.svg\n *\n */\n\n/* eslint-disable no-console */\n\nimport Check from 'check-types';\nimport assert from 'assert';\n\nimport SDK from './../../sdk';\n\nimport BaseSequence from './../base';\nimport AssertionErrorMessages from './../assertionErrorMessages';\n\nimport Exception from './../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n assigned,\n boolean,\n instanceStrict,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @function getLaunchpadQaGraphQlQuery\n * @returns {SDK.Content.GraphQlQuery}\n *\n */\nconst getLaunchpadQaGraphQlQuery = () => {\n\n return new SDK.Content.GraphQlQuery(`{\n query(index: \"launchpad_global\", type: \"Video\") {\n meta {\n hits\n }\n hits {\n hit {\n ... on Video {\n type\n contentId\n partnerProgramId\n epgPartnerProgramId\n language\n titles {\n title\n }\n media {\n mediaId\n mediaState\n playbackUrls {\n rel\n href\n }\n }\n }\n }\n }\n }\n }`, '');\n\n};\n\n/** Obtain third-party identity token */\nconst fetchExternalAccountToken = () => {\n\n return [\n 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyMDUwMzQxZS1iMTA2LTRkND',\n 'EtYjViZS1kZWMzMjE5MGU1YzUiLCJhdWQiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOnRva2VuI',\n 'iwibmJmIjoxNTMyMzgzMTIxLCJpZHAiOiJ1cm46YmFtdGVjaDpzZXJ2aWNlOmlkcCIsImlz',\n 'cyI6InVybjpiYW10ZWNoOnNlcnZpY2U6YWNjb3VudCIsInBpZCI6ImQxYWQ2MWEzLWMwM2U',\n 'tNGJkYS04OWFiLTg2MWMxNzVlMTc4MiIsImV4cCI6MjM4MjQ4NTU2MCwiYWlkIjoiNDdjMj',\n 'VlMGYtZjgxZi00MWYzLWFmOTYtN2M4OGU5NDdmMDU5IiwiZGlkIjoiNmZlZDhiN2ItMjA3M',\n 'y00MjZiLTk4NGUtY2EyMGJmYzkyYzQ5In0.fR48CVqPiBiEMOWZXpAGux0UFM_4HwEauGZE',\n 'nS-gZdw'\n ].join('');\n\n};\n\n/**\n *\n * @class PlaybackExternalAccountSequence\n * @extends {BaseSequence}\n * @desc Sequence designed to verify a `ExternalAccount`. Executes the `PlaybackSequence` internally.\n *\n * @example const playbackExternalAccountSequence = new SDK.Test.Sequences.PlaybackExternalAccount(\n * config, Html5PlayerAdapter, videoElement, queryContext, graphQlQuery, geoProvider\n * );\n *\n */\nexport default class PlaybackExternalAccountSequence extends BaseSequence {\n\n /**\n *\n * @param {Object} options contains all of the parameters for this function\n * @param {Object} [options.config] configuration used to build a BootstrapConfiguration instance\n * @param {SDK.Media.PlayerAdapter} options.PlayerAdapter player adapter to use in sequence\n * @param {NativePlayer} options.nativePlayer platform native player instance\n * @param {String} [options.queryContext='search'] GraphQl query context\n * @param {SDK.Content.GraphQlQuery} [options.graphQlQuery=getLaunchpadQaGraphQlQuery()] GraphQlQuery instance\n * @param {SDK.Token.GeoProvider} [options.geoProvider] GeoProvider instance to use\n * portion of the sequence should be executed\n * @param {String} [options.exceptionIdentifier=null] exception identifier,\n * i.e. 'blackout', 'stream-concurrency-violation', 'login.required', etc...\n * used for exception testing\n * @param {Boolean} [options.clearOnComplete=false] flag that determines if token refresh\n * should be cleared when the sequence is complete (useful when running tests)\n * @param {SDK.Services.Configuration.ConfigurationHostName} [options.configurationHostName] configuration host name\n * Defaults to ConfigurationHostName.prod\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const GraphQlQuery = SDK.Content.GraphQlQuery;\n const GeoProvider = SDK.Token.GeoProvider;\n\n const errorMessage = {\n ctor: 'PlaybackExternalAccountSequence(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get config() {\n return `${this.ctor} config should be a non-empty Object`;\n },\n get playerAdapter() {\n return `${this.ctor} needs PlayerAdapter`;\n },\n get nativePlayer() {\n return `${this.ctor} needs NativePlayer instance`;\n },\n get queryContext() {\n return `${this.ctor} queryContext should be a String with length`;\n },\n get graphQlQuery() {\n return `${this.ctor} needs GraphQlQuery instance`;\n },\n get geoProvider() {\n return `${this.ctor} needs GeoProvider instance`;\n },\n get accountToken() {\n return `${this.ctor} accountToken should be a String with length`;\n },\n get exceptionIdentifier() {\n return `${this.ctor} exceptionIdentifier should be a String with length`;\n },\n get clearOnComplete() {\n return `${this.ctor} clearOnComplete should be a Boolean`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { config, PlayerAdapter, nativePlayer, queryContext = 'search' } = options;\n const { graphQlQuery = getLaunchpadQaGraphQlQuery(), provider = 'launchpad' } = options;\n const { accountToken = fetchExternalAccountToken(), geoProvider, exceptionIdentifier = null } = options;\n const { clearOnComplete = false } = options;\n\n if (Check.assigned(config)) {\n nonEmptyObject(config, errorMessage.config, InvalidArgumentException);\n }\n\n assigned(PlayerAdapter, errorMessage.playerAdapter, InvalidArgumentException);\n assigned(nativePlayer, errorMessage.nativePlayer, InvalidArgumentException);\n nonEmptyString(queryContext, errorMessage.queryContext, InvalidArgumentException);\n nonEmptyString(accountToken, errorMessage.accountToken, InvalidArgumentException);\n instanceStrict(graphQlQuery, GraphQlQuery, errorMessage.graphQlQuery, InvalidArgumentException);\n\n if (Check.assigned(geoProvider)) {\n instanceStrict(geoProvider, GeoProvider, errorMessage.geoProvider, InvalidArgumentException);\n }\n\n if (Check.assigned(exceptionIdentifier)) {\n nonEmptyString(exceptionIdentifier, errorMessage.exceptionIdentifier, InvalidArgumentException);\n }\n\n boolean(clearOnComplete, errorMessage.clearOnComplete, InvalidArgumentException);\n\n super(options);\n\n /**\n *\n * @access public\n * @type {SDK.Media.PlayerAdapter}\n *\n */\n this.PlayerAdapter = PlayerAdapter;\n\n /**\n *\n * @access public\n * @type {NativePlayer}\n *\n */\n this.nativePlayer = nativePlayer;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.queryContext = queryContext;\n\n /**\n *\n * @access public\n * @type {SDK.Content.GraphQlQuery}\n *\n */\n this.graphQlQuery = graphQlQuery;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.provider = provider;\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.accountToken = accountToken;\n\n /**\n *\n * @access private\n * @type {String}\n *\n */\n this.exceptionIdentifier = exceptionIdentifier;\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.clearOnComplete = clearOnComplete;\n\n }\n\n /**\n *\n * @access public\n * @method execute\n * @desc runs the sequence to completion\n * @returns {Promise}\n *\n * @example playbackExternalAccountSequence.execute().then(() => { console.log('success'); });\n *\n */\n execute() {\n\n const { config, PlayerAdapter, nativePlayer, queryContext, graphQlQuery, clearOnComplete } = this;\n const { provider, accountToken, geoProvider, platform, configurationHostName } = this;\n const { clientId, clientApiKey, environment, debugEnabled } = config;\n\n const Playlist = SDK.Media.Playlist;\n const ContentQuery = SDK.Content.ContentQuery;\n const BootstrapConfiguration = SDK.Services.Configuration.BootstrapConfiguration;\n const HTML5PlayerAdapter = SDK.Media.PlayerAdapter.Html5PlayerAdapter;\n\n return new Promise((resolve, reject) => {\n\n /** @type {SDK.Services.Configuration.BootstrapConfiguration} */\n const bootstrapConfiguration = new BootstrapConfiguration({\n clientId,\n clientApiKey,\n environment,\n debugEnabled,\n platform,\n configHostName: configurationHostName,\n application: {\n name: 'name',\n id: 'id',\n version: 'version'\n }\n });\n\n /** @type {SDK.Content.GraphQlQuery} */\n const contentQuery = new ContentQuery(queryContext, graphQlQuery);\n\n /** @type {SDK.SdkSession} */\n let sdkSession;\n\n /** @type {String} */\n let accountGrantToken;\n\n /** @type {SDK.Content.ContentApi} */\n let contentApi;\n\n /** @type {SDK.Media.MediaApi} */\n let mediaApi;\n\n /** @type {SDK.Media.MediaDescriptor} */\n let mediaDescriptor;\n\n /** @type {SDK.Media.MediaItem} */\n let mediaItem;\n\n /** @type {SDK.Media.PlaybackSession} */\n let playbackSession;\n\n /** @type {SDK.Media.PlayerAdapter} */\n let playerAdapter;\n\n /** @type {String} */\n let playbackUrl;\n\n /** 1 */\n this.createInitializedSdkSession(bootstrapConfiguration, geoProvider).then((session) => {\n\n sdkSession = session;\n /** 4 */\n\n /** Identify and Authorize User */\n\n /** 5 */\n /** Authenticate and Authorize User */\n /** External Account, AuthN/AuthZ flows occur outside of the SDK */\n\n /** Obtain third-party identity token */\n accountGrantToken = accountToken;\n\n /** Authorize User */\n /** 7 */\n /** 8 */\n /** 9 */\n return sdkSession.authorize(accountGrantToken, provider);\n\n }).then(() => {\n\n /** 10 */\n\n /** Repeat authorizeSessionWithAccountGrant(Account Grant Token) each time Account is updated */\n /** e.g. Entitlements change via IAP or purchase */\n\n /** Content Retrieval (BAMTECH CMS) */\n /** Alternatively, partner CMS is used */\n\n /** 11 */\n contentApi = sdkSession.contentApi;\n\n /** 12 */\n\n /** 13 */\n return contentApi.query({\n query: contentQuery\n });\n\n }).then((contentData) => {\n\n /** Persisted GraphQL Query */\n /** 14 - JSON (including playbackUrl) */\n /** JSON typically deserialized to models */\n\n const data = contentData.data;\n let serializedData;\n\n try {\n serializedData = JSON.stringify(data);\n } catch (error) {\n // don't fail on invalid data, fail later when mediaApi.fetch attempts to use it\n serializedData = '';\n }\n\n /**\n *\n * @desc handle various payload structures without knowing the schema\n * @note utility logic, outside of the official sequence\n *\n * 1. serialize the content data\n * 2. grab the first valid href based on structure\n *\n */\n const hrefRegex = /(\\b(https?):\\/\\/[-A-Z0-9+&@{#\\/%?=~_|!:,.;]*[-A-Z0-9+&@}#\\/%=~_|]\\{scenario\\})/ig; // eslint-disable-line\n const serializedDataMatch = serializedData.match(hrefRegex);\n playbackUrl = serializedDataMatch && serializedDataMatch.shift() || ''; // eslint-disable-line\n\n /** 15 */\n /** 16 */\n /** @type {SDK.Media.MediaDescriptor} */\n mediaDescriptor = new SDK.Media.MediaDescriptor({ playbackUrl });\n\n mediaApi = sdkSession.mediaApi;\n\n return mediaApi.fetch(mediaDescriptor);\n\n }).then((_mediaItem) => {\n\n mediaItem = _mediaItem;\n\n /** @test {SDK.Media.MediaItem} */\n assert.ok(mediaItem.payload, AssertionErrorMessages.mediaApi.fetch);\n assert.ok(mediaItem.descriptor, AssertionErrorMessages.mediaApi.fetch);\n\n /** Playback Workflow */\n /** @type {SDK.Media.PlayerAdapter} */\n playerAdapter = new PlayerAdapter(nativePlayer);\n\n /** 17 */\n return mediaApi.createPlaybackSession(playerAdapter);\n\n }).then((ps) => {\n\n /** 18 */\n /** @type {SDK.Media.PlaybackSession} */\n playbackSession = ps;\n\n const playbackSessionErrorMessage = AssertionErrorMessages.mediaApi.createPlaybackSession;\n\n /** @test {SDK.Media.PlaybackSession} */\n assert.ok(playbackSession.playerAdapter, playbackSessionErrorMessage);\n assert.ok(playbackSession.tokenManager, playbackSessionErrorMessage);\n assert.ok(playbackSession.authCookieProvider, playbackSessionErrorMessage);\n assert.ok(playbackSession.mediaManager, playbackSessionErrorMessage);\n assert.ok(playbackSession.telemetryDispatcher, playbackSessionErrorMessage);\n\n /** 19 */\n /** 20 */\n /** 21 */\n /** 22 */\n return mediaItem.getTrackingData();\n\n }).then(() => {\n\n /** 23 - Initialize Analytics */\n /** 24 - Initialize Advertising */\n\n /** 25 */\n return playbackSession.prepare(mediaItem);\n\n }).then((playlist) => {\n\n const playlistErrorMessage = AssertionErrorMessages.mediaApi.playbackSession.playlist;\n const playerAdapterReadyErrorMessage = AssertionErrorMessages.playerAdapter.ready;\n\n /** @test {SDK.Media.Playlist} */\n assert.ok(playlist instanceof Playlist, playlistErrorMessage);\n\n assert.ok(playlist.streamUri, playlistErrorMessage);\n assert.ok(playlist.playlistType, playlistErrorMessage);\n assert.ok(playlist.availablePlaylistTypes, playlistErrorMessage);\n\n /** @test {SDK.Media.PlayerAdapter} */\n assert.ok(playerAdapter.playlistUri, playerAdapterReadyErrorMessage);\n assert.ok(playerAdapter.nativePlayer, playerAdapterReadyErrorMessage);\n assert.ok(playerAdapter.listener, playerAdapterReadyErrorMessage);\n assert.ok(playerAdapter.accessToken, playerAdapterReadyErrorMessage);\n assert.ok(playerAdapter.boundHandlers, playerAdapterReadyErrorMessage);\n\n /** @desc rescan the source element on HTML5 platforms */\n if (playerAdapter instanceof HTML5PlayerAdapter) {\n if (typeof nativePlayer.load === 'function') {\n nativePlayer.load();\n }\n }\n\n /** 26 */\n // nativePlayer.play();\n\n return Promise.resolve();\n\n }).then(() => {\n\n if (clearOnComplete) {\n if (sdkSession.tokenManager) {\n sdkSession.tokenManager.clearRetryRefresh();\n }\n }\n\n /** Standard Player Interaction */\n\n return resolve(playerAdapter);\n\n }).catch((ex) => {\n\n return reject(ex);\n\n });\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/sequences/media/playbackExternalAccount.js","/**\n *\n * @module userProfile\n * @desc userProfile sequence implementation\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/UserProfileApi.md\n *\n */\n\nimport Check from 'check-types';\nimport assert from 'assert';\n\nimport SDK from './../../sdk';\n\nimport BaseSequence from './../base';\nimport AssertionErrorMessages from './../assertionErrorMessages';\n\nimport Exception from './../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n object,\n nonEmptyObject,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class UserProfileSequence\n * @extends {BaseSequence}\n *\n * @example const userProfileSequence = new SDK.Test.Sequences.UserProfile(config, options);\n *\n */\nexport default class UserProfileSequence extends BaseSequence {\n\n /**\n *\n * @param {Object} options contains all of the parameters for this function\n * @param {Object} options.config configuration used to build a BootstrapConfiguration instance\n * @param {String} options.profileName the name of the profile to create\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'UserProfileSequence(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get config() {\n return `${this.ctor} config should be a non-empty Object`;\n },\n get profileName() {\n return `${this.ctor} profileName should be a String with length`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { config, profileName } = options;\n\n object(config, errorMessage.config, InvalidArgumentException);\n nonEmptyString(profileName, errorMessage.profileName, InvalidArgumentException);\n\n super(options);\n\n /**\n *\n * @access public\n * @type {Object}\n *\n */\n this.profileName = profileName;\n\n }\n\n /**\n *\n * @param {SDK.SdkSession} session\n * @param {String} endpoint the name of the endpoint to add the mock and auth headers for\n * @note The Authorization header was created using the instructions from\n * https://wiki.bamtechmedia.com/display/DEVOPS/Multiple+Profiles+Mocks\n * with 8ca3290d-bc08-4cc2-98f8-c59009b347a0 as the account id\n *\n */\n addMockHeaders(session, endpoint) {\n\n const endpoints = SDK.Services.Util.getSafe(() => session.accountManager.client.config.endpoints);\n\n endpoints[endpoint].headers.Authorization = 'Bearer eyJraWQiOiJlNzliMTEyYS1jZmExLTExZTctYWJjNC1jZWMyNzhiNmI1MGEiLCJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI3YTEzNGVlMy0xMTQyLTQ3MGUtYWM3Yi1lOGUzNDIwZDEzMTQiLCJuYmYiOjE1NDMzNjYyNTksInBhcnRuZXJOYW1lIjoiZXNwbiIsImlzcyI6InVybjpiYW10ZWNoOnNlcnZpY2U6dG9rZW4iLCJjb250ZXh0Ijp7InZlcnNpb24iOiJWMi4wLjAiLCJpZCI6ImFjNDk1ZjMwLWYyYTctMTFlOC1iMGIwLTAyNDJhYzExMDAwOSIsInBhcnRuZXIiOnsibmFtZSI6ImVzcG4ifSwidHlwZSI6IlJFR0lTVEVSRUQiLCJpcF9hZGRyZXNzIjoiMTM5LjEwNC4xOTIuMTAiLCJkZXZpY2UiOnsiaWQiOiI4ZDE3NzA0Mi0yMmQyLTQxMWQtOTkwMS1hMDY5YWJiYjI0MzAiLCJwbGF0Zm9ybSI6ImFwcGxlIn0sImxvY2F0aW9uIjp7InR5cGUiOiJaSVBfQ09ERSIsInppcF9jb2RlIjoiMTAxMCIsImNvdW50cnlfY29kZSI6Im5sIn0sInByb2ZpbGVzIjpbeyJhY3RpdmUiOnRydWUsInR5cGUiOiJ1cm46YmFtdGVjaDpwcm9maWxlIiwiaWQiOiI0NjYxOGEyNS0wOWQ1LTRhYmQtYWQ4My0wNWVkNGIzNjI3ZTYiLCJwYXJlbnRhbF9jb250cm9scyI6eyJlbmFibGVkIjpmYWxzZX19LHsiYWN0aXZlIjpmYWxzZSwidHlwZSI6InVybjpiYW10ZWNoOnByb2ZpbGUiLCJpZCI6IjdjNzI3MDk1LTA3OTEtNDI0YS05YmQ2LTM3OWI2YjI1NzIxYiIsInBhcmVudGFsX2NvbnRyb2xzIjp7ImVuYWJsZWQiOmZhbHNlfX1dLCJnZW5lcmF0ZWRfb24iOiIyMDE4LTExLTI4VDAwOjUwOjU5Ljg3NSswMDAwIiwidXBkYXRlZF9vbiI6IjIwMTgtMTEtMjhUMDA6NTA6NTkuODc1KzAwMDAiLCJleHBpcmVzX29uIjoiMjAxOC0xMS0yOFQwMTowMDo1OS44NzUrMDAwMCIsIm1lZGlhX3Blcm1pc3Npb25zIjp7ImVudGl0bGVtZW50cyI6WyJFU1BOX1BMVVMiXSwicnVsZXMiOnsicGFzc2VkIjpbXX0sImRhdGEiOnt9fSwiYmxhY2tvdXRzIjp7InJ1bGVzIjp7InZpb2xhdGVkIjpbXX0sImRhdGEiOnt9fSwiYWNjb3VudCI6eyJ0eXBlIjoidXJuOmJhbXRlY2g6YWNjb3VudCIsImlkIjoiOGNhMzI5MGQtYmMwOC00Y2MyLTk4ZjgtYzU5MDA5YjM0N2EwIiwiaG9tZV9sb2NhdGlvbiI6eyJ0eXBlIjoiVU5LTk9XTiJ9LCJkYXRhIjp7fX0sImxvZ2luX2NvbnRleHQiOnsiaWRwIjoiaHR0cHM6Ly9zdGcuYXV0aG9yaXphdGlvbi5nby5jb20iLCJhaWQiOiJ7QkVGMTQ3OTgtNzZCMS00QzM4LTkxOEUtQjQyMDdCMUIzMzZBfSJ9fSwic2Vzc2lvbklkIjoiYWM0OTVmMzAtZjJhNy0xMWU4LWIwYjAtMDI0MmFjMTEwMDA5IiwiZXhwIjoxNTQzMzY2ODU5LCJlbnYiOiJxYSIsImlhdCI6MTU0MzM2NjI1OSwianRpIjoiYWM0OTg2NDAtZjJhNy0xMWU4LWIwYjAtMDI0MmFjMTEwMDA5In0.5Dgxx8IZ_NDPpORisYvLI5pkFvCVP8FAs1SwzgvD2i8'; // eslint-disable-line\n endpoints[endpoint].headers['Mock-Magic-Value'] = 'persisted';\n\n }\n\n /**\n *\n * @access public\n * @method execute\n * @desc runs the sequence to completion\n *\n * @example userProfileSequence.execute().then(() => { console.log('success'); });\n *\n */\n execute() {\n\n const { config, profileName } = this;\n const { clientId, clientApiKey, environment, debugEnabled } = config;\n\n const BootstrapConfiguration = SDK.Services.Configuration.BootstrapConfiguration;\n const UserProfile = SDK.Services.Account.UserProfile;\n\n return new Promise((resolve, reject) => {\n\n /** @type {SDK.Services.Configuration.BootstrapConfiguration} */\n const bootstrapConfiguration = new BootstrapConfiguration({\n clientId,\n clientApiKey,\n environment,\n debugEnabled,\n application: {\n name: 'name',\n id: 'id',\n version: 'version'\n }\n });\n\n /** @type {SDK.SdkSession} */\n let sdkSession;\n\n /** @type {SDK.UserProfile.UserProfileApi} */\n let userProfileApi;\n\n /** @type {SDK.Services.Account.UserProfile} */\n let userProfile;\n\n const languagePreference = 'FR';\n const autoPlaySetting = false;\n const badLanguageOption = false;\n\n this.createInitializedSdkSession(bootstrapConfiguration).then((session) => {\n\n /** @type {SDK.SdkSession} sa */\n sdkSession = session;\n\n /** @type {SDK.UserProfile.UserProfileApi} */\n userProfileApi = sdkSession.userProfileApi;\n\n if (environment === 'mock') {\n /** Add the mock and auth headers for each of the user profile methods being used below */\n this.addMockHeaders(sdkSession, 'createUserProfile');\n this.addMockHeaders(sdkSession, 'deleteUserProfile');\n this.addMockHeaders(sdkSession, 'getUserProfile');\n this.addMockHeaders(sdkSession, 'getUserProfiles');\n this.addMockHeaders(sdkSession, 'setActiveUserProfile');\n this.addMockHeaders(sdkSession, 'getActiveUserProfile');\n this.addMockHeaders(sdkSession, 'getCurrentAccount');\n this.addMockHeaders(sdkSession, 'updateUserProfile');\n }\n\n const attributes = {\n languagePreferences: {\n playbackLanguage: 'EN',\n subtitleAppearance: {\n backgroundColor: '#000',\n size: 'small',\n description: 'description',\n backgroundOpacity: 2,\n textColor: '#FFF',\n font: 'Arial'\n },\n subtitleLanguage: 'EN',\n appLanguage: 'EN'\n },\n parentalControls: {\n tv: {\n restrictions: {\n contentMaturityRating: 'AL',\n advisoryFilters: {\n drugs: true,\n badLanguage: true,\n discrimination: true,\n scary: true,\n sexual: true,\n violence: true\n }\n },\n ratingSystem: 'kijkwijzer'\n },\n movie: {\n restrictions: {\n contentMaturityRating: 'AL',\n advisoryFilters: {\n drugs: true,\n badLanguage: true,\n discrimination: true,\n scary: true,\n sexual: true,\n violence: true\n }\n },\n ratingSystem: 'kijkwijzer'\n }\n },\n playbackSettings: {\n previewAudioOnHome: true,\n previewVideoOnHome: true,\n autoplay: true\n }\n };\n\n const metadata = {\n isTest: true\n };\n\n return userProfileApi.createUserProfile(profileName, attributes, metadata);\n\n }).then((_userProfile) => {\n\n /** @type {SDK.Services.Account.UserProfile} */\n userProfile = _userProfile;\n\n /** @test */\n assert.ok(userProfile instanceof UserProfile, AssertionErrorMessages.userProfileApi.createUserProfile);\n\n return userProfileApi.setActiveUserProfile(userProfile);\n\n }).then(() => {\n\n return userProfileApi.getActiveUserProfile();\n\n }).then((_userProfile) => {\n\n /** @test */\n assert.equal(_userProfile.profileId, userProfile.profileId);\n\n return userProfileApi.getUserProfiles();\n\n }).then((_userProfiles) => { //eslint-disable-line\n\n /** @test */\n assert(_userProfiles.length, AssertionErrorMessages.userProfileApi.getUserProfiles);\n\n const updatedProfile = new UserProfile(userProfile);\n const attributes = updatedProfile.attributes;\n\n attributes.playbackSettings.autoplay = autoPlaySetting;\n attributes.languagePreferences.subtitleLanguage = languagePreference;\n attributes.parentalControls.movie.restrictions.advisoryFilters.badLanguage = badLanguageOption;\n\n return userProfileApi.updateUserProfile(updatedProfile);\n\n }).then((_userProfile) => { //eslint-disable-line\n\n return userProfileApi.getUserProfile(userProfile.profileId);\n\n }).then((_userProfile) => {\n\n const attributes = _userProfile.attributes;\n const getUserProfileErrorMessage = AssertionErrorMessages.userProfileApi.getUserProfile;\n\n /** @test */\n assert.equal(attributes.playbackSettings.autoplay, autoPlaySetting, getUserProfileErrorMessage);\n assert.equal(\n attributes.languagePreferences.subtitleLanguage,\n languagePreference,\n getUserProfileErrorMessage\n );\n assert.equal(\n attributes.parentalControls.movie.restrictions.advisoryFilters.badLanguage,\n badLanguageOption,\n getUserProfileErrorMessage\n );\n\n return userProfileApi.deleteUserProfile(userProfile);\n\n }).then(() => {\n\n if (sdkSession.tokenManager) {\n sdkSession.tokenManager.clearRetryRefresh();\n }\n\n return resolve();\n\n }).catch((ex) => {\n\n return reject(ex);\n\n });\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/sequences/userProfile/userProfile.js","/**\n *\n * @module commerce\n * @desc commerce stored payment sequence\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/commerce.md#stored-payments\n *\n */\n\nimport Check from 'check-types';\nimport assert from 'assert';\n\nimport SDK from './../../sdk';\n\nimport BaseSequence from './../base';\nimport AssertionErrorMessages from './../assertionErrorMessages';\n\nimport Exception from './../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n object,\n nonEmptyObject,\n boolean\n} = Check.assert;\n\n/**\n *\n * @class CommerceStoredPayment\n * @extends {BaseSequence}\n *\n * @example const commerceStoredPayment = new SDK.Test.Sequences.CommerceStoredPayment(\n * config, clearOnComplete\n * );\n *\n */\nexport default class CommerceStoredPayment extends BaseSequence {\n\n /**\n *\n * @param {Object} options contains all of the parameters for this function\n * @param {Object} options.config configuration used to build a BootstrapConfiguration instance\n * @param {Boolean} [options.clearOnComplete=false] flag that determines if token refresh\n * should be cleared when the sequence is complete (useful when running tests)\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'CommerceStoredPayment(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get config() {\n return `${this.ctor} config should be a plain Object`;\n },\n get clearOnComplete() {\n return `${this.ctor} clearOnComplete should be a Boolean`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { config, clearOnComplete = false } = options;\n\n if (Check.assigned(config)) {\n object(config, errorMessage.config, InvalidArgumentException);\n }\n\n boolean(clearOnComplete, errorMessage.clearOnComplete, InvalidArgumentException);\n\n super(options);\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.clearOnComplete = clearOnComplete;\n\n }\n\n /**\n *\n * @access public\n * @method execute\n * @desc runs the sequence to completion\n *\n * @example commerceStoredPayment.execute().then(() => { console.log('success'); });\n *\n */\n execute() {\n\n const { config, clearOnComplete } = this;\n const { clientId, clientApiKey, environment, debugEnabled } = config;\n\n const Services = SDK.Services;\n\n const BootstrapConfiguration = Services.Configuration.BootstrapConfiguration;\n const ConfigurationHostName = Services.Configuration.ConfigurationHostName;\n\n const PaymentMethodInformation = SDK.Commerce.PaymentMethodInformation;\n const PriceOrderRequest = SDK.Commerce.PriceOrderRequest;\n\n const BillingAddress = Services.Commerce.BillingAddress;\n const LineItem = Services.Commerce.LineItem;\n const OrderCampaign = Services.Commerce.OrderCampaign;\n const PaymentMethodResponse = SDK.Services.Commerce.PaymentMethodResponse;\n const PriceOrderRequestAddress = SDK.Services.Commerce.PriceOrderRequestAddress;\n const SubmitOrderWithPaymentMethodRequest = SDK.Services.Commerce.SubmitOrderWithPaymentMethodRequest;\n const StrongCustomerAuth = Services.Commerce.StrongCustomerAuth;\n const campaignCode = 'campaignCode';\n const voucherCode = 'voucherCode';\n const zipCode = '07029';\n const city = 'NY';\n const state = 'NY';\n const country = 'US';\n const isDefault = true;\n\n return new Promise((resolve, reject) => {\n\n /** @type {SDK.Services.Configuration.BootstrapConfiguration} */\n const bootstrapConfiguration = new BootstrapConfiguration({\n clientId,\n clientApiKey,\n environment,\n debugEnabled,\n configHostName: ConfigurationHostName.dev,\n application: {\n name: 'name',\n id: 'id',\n version: 'version'\n }\n });\n\n /** @type {SDK.SdkSession} */\n let sdkSession;\n\n /** @type {SDK.Commerce.CommerceApi} */\n let commerceApi;\n\n this.createInitializedSdkSession(bootstrapConfiguration).then((sa) => {\n\n /** @type {SDK.SdkSession} sa */\n sdkSession = sa;\n\n /** @type {SDK.Commerce.CommerceApi} */\n commerceApi = sdkSession.commerceApi;\n\n return Promise.resolve();\n\n }).then(() => {\n\n /** @type {SDK.Services.Commerce.PriceOrderRequestAddress} */\n const priceOrderRequestAddress = new PriceOrderRequestAddress({\n zipCode,\n city,\n state,\n country\n });\n\n /** @type {SDK.Services.Commerce.OrderCampaign} */\n const orderCampaign = new OrderCampaign({\n campaignCode,\n voucherCode\n });\n\n const priceOrderRequest = new PriceOrderRequest({\n productIdentifiers: ['productIdentifiers'],\n identifierType: 0,\n orderCampaign,\n address: priceOrderRequestAddress\n });\n\n return commerceApi.priceOrder(priceOrderRequest);\n\n }).then((priceOrderResponse) => {\n\n /** setup a default payment method */\n\n const firstName = 'firstName';\n const middleName = 'middleName';\n const lastName = 'lastName';\n const email = 'email@test.com';\n const line1 = 'line1';\n const line2 = 'line2';\n const line3 = 'line3';\n const postalCode = '12345';\n\n // only country is required for NL\n const addressObj = {\n city,\n country,\n email,\n firstName,\n lastName,\n line1,\n line2,\n line3,\n middleName,\n postalCode,\n state\n };\n\n /** @type {SDK.Services.Commerce.BillingAddress} */\n const billingAddress = new BillingAddress(addressObj);\n\n const ownerFullName = `${firstName} ${middleName} ${lastName}`;\n const alternateName = 'alternateName';\n const expiryMonth = 10;\n const expiryYear = 2020;\n const creditCardNumber = 'creditCardNumber';\n const isReusable = false;\n const isShared = false;\n\n const paymentMethodInformationOptions = {\n isDefault,\n creditCardNumber,\n alternateName,\n billingAddress,\n expiryMonth,\n expiryYear,\n ownerFullName,\n isReusable,\n isShared\n };\n\n /** @type {SDK.Commerce.PaymentMethodInformation} */\n const paymentMethodInformation = new PaymentMethodInformation(paymentMethodInformationOptions);\n\n return commerceApi.createPaymentMethod(paymentMethodInformation, priceOrderResponse);\n\n }).then((paymentMethodId) => {\n\n /** @test */\n Check.assert.nonEmptyString(paymentMethodId, AssertionErrorMessages.commerceApi.createPaymentMethod);\n\n return commerceApi.getPaymentCard(paymentMethodId);\n\n }).then((paymentMethodResponse) => {\n\n /** @test */\n assert.ok(\n paymentMethodResponse instanceof PaymentMethodResponse,\n AssertionErrorMessages.commerceApi.getPaymentCard\n );\n\n return commerceApi.getDefaultPaymentMethod();\n\n }).then((paymentMethodResponse) => {\n\n /** @test */\n assert.ok(\n paymentMethodResponse instanceof PaymentMethodResponse,\n AssertionErrorMessages.commerceApi.getDefaultPaymentMethod\n );\n\n return Promise.resolve();\n\n }).then(() => {\n\n const paymentMethodId = '12345';\n const sessionId = 'sessionId';\n const returnUrl = 'returnUrl';\n const sca = new StrongCustomerAuth(sessionId, returnUrl);\n\n /** @type {Array} */\n const orderCampaigns = [new OrderCampaign({\n campaignCode,\n voucherCode\n })];\n\n /** @type {Array} */\n const lineItems = [new LineItem('sku')];\n\n /** @type {SDK.Commerce.SubmitOrderWithCardPaymentMethodRequest} */\n const request = new SubmitOrderWithPaymentMethodRequest({\n lineItems,\n paymentMethodId,\n orderCampaigns,\n sca\n });\n\n return commerceApi.submitOrderWithPaymentMethod(request);\n\n }).then((guid) => {\n\n /** @test */\n Check.assert.nonEmptyString(\n guid,\n `${AssertionErrorMessages.actualTest} - submittedOrder guid = ${guid}`\n );\n\n if (clearOnComplete) {\n if (sdkSession.tokenManager) {\n sdkSession.tokenManager.clearRetryRefresh();\n }\n }\n\n return resolve();\n\n }).catch((ex) => {\n\n return reject(ex);\n\n });\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/sequences/commerce/commerceStoredPayment.js","/**\n *\n * @module userActivity\n * @desc userActivity sequence implementation\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/UserActivityApi.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/userActivity/UserActivityApi.md\n *\n */\n\nimport Check from 'check-types';\nimport assert from 'assert';\n\nimport SDK from './../../sdk';\n\nimport BaseSequence from './../base';\n\nimport Exception from './../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\n\nconst {\n boolean,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class UserActivitySequence\n * @extends {BaseSequence}\n *\n * @example const userActivitySequence = new SDK.Test.Sequences.UserActivity(config);\n *\n */\nexport default class UserActivitySequence extends BaseSequence {\n\n /**\n *\n * @param {Object} options contains all of the parameters for this function\n * @param {Object} options.config configuration used to build a BootstrapConfiguration instance\n * @param {Boolean} [options.clearOnComplete=false] flag that determines if token refresh\n * should be cleared when the sequence is complete (useful when running tests)\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'UserActivitySequence(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get config() {\n return `${this.ctor} config should be a non-empty Object`;\n },\n get clearOnComplete() {\n return `${this.ctor} clearOnComplete should be a Boolean`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { config, clearOnComplete = false } = options;\n\n nonEmptyObject(config, errorMessage.config, InvalidArgumentException);\n boolean(clearOnComplete, errorMessage.clearOnComplete, InvalidArgumentException);\n\n super(options);\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.clearOnComplete = clearOnComplete;\n\n }\n\n /**\n *\n * @access public\n * @method execute\n * @desc runs the sequence to completion\n *\n * @example userActivitySequence.execute().then(() => { console.log('success'); });\n *\n */\n execute() {\n\n const { config, clearOnComplete } = this;\n const { clientId, clientApiKey, environment, debugEnabled } = config;\n\n const BootstrapConfiguration = SDK.Services.Configuration.BootstrapConfiguration;\n const DustGlimpseReference = SDK.Services.Internal.Dust.DustUrnReference.userActivity.glimpse;\n const UserActivityAction = SDK.UserActivity.Personalization.UserActivityAction;\n const GlimpseEvents = SDK.UserActivity.Glimpse.GlimpseEvents;\n const EventSchema = SDK.UserActivity.EventSchema;\n const EventValue = SDK.UserActivity.EventValue;\n\n return new Promise((resolve, reject) => {\n\n /** @type {SDK.Services.Configuration.BootstrapConfiguration} */\n const bootstrapConfiguration = new BootstrapConfiguration({\n clientId,\n clientApiKey,\n environment,\n debugEnabled,\n application: {\n name: 'name',\n id: 'id',\n version: 'version'\n }\n });\n\n /** @type {SDK.SdkSession} */\n let sdkSession;\n\n /** @type {SDK.UserActivity.UserActivityApi} */\n let userActivityApi;\n\n const globalCountryCode = 'US';\n const overriddenGlobalCountryCode = 'NL';\n const appLaunchedUrn = DustGlimpseReference.appLaunched;\n const contentSelectedUrn = DustGlimpseReference.contentSelected;\n const mashupParameter1 = 'ABCD';\n const mashupParameter2 = '1234';\n const rewardToken = 'E8C9A38F-C773-4E48-B3E8-187375736854';\n const rewardContentId = '324DDA5D-DA1A-4CA3-9C1B-4EE9D0E3DE6D';\n const action = UserActivityAction.CLICK;\n const recommendedContentIds = [\n '69E58F96-9355-4B16-B77E-AFB54E9EDACB',\n '3877E6EE-99EE-49D6-A82F-F381883E5DB7'\n ];\n\n const trackingParameters = {\n globalCountryCode\n };\n\n this.createInitializedSdkSession(bootstrapConfiguration).then((session) => {\n\n /** @type {SDK.SdkSession} sa */\n sdkSession = session;\n\n /** @type {SDK.UserActivity.UserActivityApi} */\n userActivityApi = sdkSession.userActivityApi;\n\n userActivityApi.setTrackingParameters(trackingParameters);\n\n /** @test */\n assert.deepEqual(userActivityApi.trackingParameters, trackingParameters);\n\n /** @type {Array} */\n const schemaArray = [\n new EventSchema({\n appLaunched: new EventValue(appLaunchedUrn)\n })\n ];\n\n /** @type {SDK.UserActivity.Glimpse.GlimpseEvent} */\n const event = GlimpseEvents.appLaunched;\n\n /** @type {Object} */\n const schemataOptions = {\n event,\n schemata: schemaArray,\n passthrough: true // include all tracking parameters with the payload\n };\n\n userActivityApi.schemataProvider.setSchemata(schemataOptions);\n\n return userActivityApi.trackEvent(event, {});\n\n }).then((payload) => {\n\n /** @test verify that the payload is correct given the schema inputs and passthrough value */\n assert.equal(payload.globalCountryCode, trackingParameters.globalCountryCode);\n assert.equal(payload.appLaunched, appLaunchedUrn);\n\n /** @type {Array} */\n const schemaArray = [\n new EventSchema({\n contentSelected: new EventValue(contentSelectedUrn)\n })\n ];\n\n /** @type {SDK.UserActivity.Glimpse.GlimpseEvent} */\n const event = GlimpseEvents.contentSelected;\n\n /** @type {Object} */\n const schemataOptions = {\n event,\n schemata: schemaArray,\n passthrough: false // exclude all tracking parameters from the payload\n };\n\n userActivityApi.schemataProvider.setSchemata(schemataOptions);\n\n const additionalParameters = {\n additionalTrackingParameter: mashupParameter1\n };\n\n return userActivityApi.trackEvent(event, additionalParameters);\n\n }).then((payload) => {\n\n /** @test verify that the payload is correct given the schema inputs and passthrough value */\n assert.equal(payload.contentSelected, contentSelectedUrn);\n assert.equal(payload.globalCountryCode, undefined);\n assert.equal(payload.additionalTrackingParameter, undefined);\n\n /** @type {Array} */\n const schemaArray = [\n new EventSchema({\n purchaseCompleted: new EventValue(() => this.createFailure())\n })\n ];\n\n /** @type {SDK.UserActivity.Glimpse.GlimpseEvent} */\n const event = GlimpseEvents.purchaseCompleted;\n\n /** @type {Object} */\n const schemataOptions = {\n event,\n schemata: schemaArray,\n passthrough: false // exclude all tracking parameters from the payload\n };\n\n userActivityApi.schemataProvider.setSchemata(schemataOptions);\n\n return userActivityApi.trackEvent(event, {});\n\n }).then((payload) => {\n\n /** @test verify that the payload is correct given the schema inputs and passthrough value */\n assert.equal(payload._failures.length, 1);\n assert.equal(payload.purchaseCompleted, undefined);\n assert.equal(payload.globalCountryCode, undefined);\n\n /** @type {Array} */\n const schemaArray = [\n new EventSchema({\n appLaunched: new EventValue(appLaunchedUrn)\n })\n ];\n\n /** @type {SDK.UserActivity.Glimpse.GlimpseEvent} */\n const event = GlimpseEvents.appLaunched;\n\n /** @type {Object} */\n const schemataOptions = {\n event,\n schemata: schemaArray,\n passthrough: true // include all tracking parameters with the payload\n };\n\n userActivityApi.schemataProvider.setSchemata(schemataOptions);\n\n /** @type {Object} */\n const overriddenParameters = {\n globalCountryCode: overriddenGlobalCountryCode\n };\n\n return userActivityApi.trackEvent(event, overriddenParameters);\n\n }).then((payload) => {\n\n /** @test verify that the payload is correct given the schema inputs and passthrough value */\n assert.equal(payload.globalCountryCode, overriddenGlobalCountryCode);\n assert.equal(payload.appLaunched, appLaunchedUrn);\n\n return userActivityApi.sendContentReward(\n rewardToken,\n rewardContentId,\n action,\n recommendedContentIds\n );\n\n }).then((payload) => {\n\n /** @test verify that the payload is correct given the sendContentReward inputs */\n assert.equal(payload.rewardToken, rewardToken);\n assert.equal(payload.rewardContentId, rewardContentId);\n assert.equal(payload.action, action);\n assert.equal(payload.recommendedContentIds, recommendedContentIds);\n\n /** @type {Array} */\n const schemaArray = [\n new EventSchema({\n appLaunched: new EventValue(appLaunchedUrn)\n }),\n new EventSchema({\n appLaunched: new EventValue(contentSelectedUrn)\n }),\n new EventSchema({\n contentSelected: new EventValue(contentSelectedUrn)\n })\n ];\n\n /** @type {SDK.UserActivity.Glimpse.GlimpseEvent} */\n const event = GlimpseEvents.appLaunched;\n\n /** @type {Object} */\n const schemataOptions = {\n event,\n schemata: schemaArray,\n passthrough: true // include all tracking parameters with the payload\n };\n\n userActivityApi.schemataProvider.setSchemata(schemataOptions);\n\n return userActivityApi.trackEvent(event, {});\n\n }).then((payload) => {\n\n /** @test verify that the payload is correct given the schema inputs and passthrough value */\n assert.equal(payload.globalCountryCode, trackingParameters.globalCountryCode);\n assert.equal(payload.appLaunched, contentSelectedUrn);\n assert.equal(payload.contentSelected, contentSelectedUrn);\n\n /** @type {Array} */\n const schemaArray = [\n new EventSchema({\n purchaseCompleted: new EventValue((payloadParams) => {\n return payloadParams.mashupParameter1 + payloadParams.mashupParameter2;\n })\n })\n ];\n\n /** @type {SDK.UserActivity.Glimpse.GlimpseEvent} */\n const event = GlimpseEvents.purchaseCompleted;\n\n /** @type {Object} */\n const schemataOptions = {\n event,\n schemata: schemaArray,\n passthrough: false // exclude global trackingParameters from the payload\n };\n\n userActivityApi.schemataProvider.setSchemata(schemataOptions);\n\n /** @type {Object} */\n const extraParameters = {\n mashupParameter1,\n mashupParameter2\n };\n\n return userActivityApi.trackEvent(event, extraParameters);\n\n }).then((payload) => {\n\n /** @test verify that the payload is correct given the schema inputs and passthrough value */\n assert.equal(payload.globalCountryCode, undefined);\n assert.equal(payload.purchaseCompleted, mashupParameter1 + mashupParameter2);\n\n if (clearOnComplete) {\n if (sdkSession.tokenManager) {\n sdkSession.tokenManager.clearRetryRefresh();\n }\n }\n\n return resolve();\n\n }).catch((ex) => {\n\n return reject(ex);\n\n });\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/sequences/userActivity/userActivity.js","/**\n *\n * @module oneTimePasscode\n * @desc oneTimePasscode sequence implementation\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/specs/feature_overviews/identity-bam.md#one-time-passcodes\n *\n */\n\nimport Check from 'check-types';\nimport assert from 'assert';\n\nimport SDK from './../../../sdk';\n\nimport BaseSequence from './../../base';\nimport AssertionErrorMessages from './../../assertionErrorMessages';\n\nimport Exception from './../../../services/exception/entry';\n\nconst InvalidArgumentException = Exception.InvalidArgumentException;\nconst ServiceException = Exception.ServiceException;\nconst ErrorReason = Exception.ErrorReason;\nconst ExceptionReference = Exception.ExceptionReference;\n\nconst {\n nonEmptyObject,\n nonEmptyString,\n boolean\n} = Check.assert;\n\n/**\n *\n * @class OneTimePasscodeSequence\n * @extends {BaseSequence}\n *\n * @example const oneTimePasscodeSequence = new SDK.Test.Sequences.OneTimePasscode(config, options);\n *\n */\nexport default class OneTimePasscodeSequence extends BaseSequence {\n\n /**\n *\n * @param {Object} options contains all of the parameters for this function\n * @param {Object} options.config configuration used to build a BootstrapConfiguration instance\n * @param {String} options.email the email to login\n * @param {Boolean} [options.clearOnComplete=false] flag that determines if token refresh\n * should be cleared when the sequence is complete (useful when running tests)\n * @throws {InvalidArgumentException}\n *\n */\n constructor(options) {\n\n const errorMessage = {\n ctor: 'OneTimePasscodeSequence(options)',\n get options() {\n return `${this.ctor} options should be a non-empty Object`;\n },\n get config() {\n return `${this.ctor} config should be a non-empty Object`;\n },\n get email() {\n return `${this.ctor} email should be a String with length`;\n },\n get clearOnComplete() {\n return `${this.ctor} clearOnComplete should be a Boolean`;\n }\n };\n\n nonEmptyObject(options, errorMessage.options, InvalidArgumentException);\n\n const { config, email, clearOnComplete = false } = options;\n\n nonEmptyObject(config, errorMessage.config, InvalidArgumentException);\n nonEmptyString(email, errorMessage.email, InvalidArgumentException);\n boolean(clearOnComplete, errorMessage.clearOnComplete, InvalidArgumentException);\n\n super(options);\n\n /**\n *\n * @access public\n * @type {String}\n *\n */\n this.email = email;\n\n /**\n *\n * @access private\n * @type {Boolean}\n *\n */\n this.clearOnComplete = clearOnComplete;\n\n }\n\n /**\n *\n * @param {SDK.SdkSession} session\n * @param {String} endpoint the name of the endpoint to add the mock and auth headers for\n * @note The Authorization header was created using the instructions from\n * https://wiki.bamtechmedia.com/display/DEVOPS/Multiple+Profiles+Mocks\n * with 8ca3290d-bc08-4cc2-98f8-c59009b347a0 as the account id\n *\n */\n addMockHeaders(session, endpoint) {\n\n const endpoints = SDK.Services.Util.getSafe(() => session.accountManager.client.config.endpoints);\n\n endpoints[endpoint].headers.Authorization = 'Bearer eyJraWQiOiJlNzliMTEyYS1jZmExLTExZTctYWJjNC1jZWMyNzhiNmI1MGEiLCJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI3YTEzNGVlMy0xMTQyLTQ3MGUtYWM3Yi1lOGUzNDIwZDEzMTQiLCJuYmYiOjE1NDMzNjYyNTksInBhcnRuZXJOYW1lIjoiZXNwbiIsImlzcyI6InVybjpiYW10ZWNoOnNlcnZpY2U6dG9rZW4iLCJjb250ZXh0Ijp7InZlcnNpb24iOiJWMi4wLjAiLCJpZCI6ImFjNDk1ZjMwLWYyYTctMTFlOC1iMGIwLTAyNDJhYzExMDAwOSIsInBhcnRuZXIiOnsibmFtZSI6ImVzcG4ifSwidHlwZSI6IlJFR0lTVEVSRUQiLCJpcF9hZGRyZXNzIjoiMTM5LjEwNC4xOTIuMTAiLCJkZXZpY2UiOnsiaWQiOiI4ZDE3NzA0Mi0yMmQyLTQxMWQtOTkwMS1hMDY5YWJiYjI0MzAiLCJwbGF0Zm9ybSI6ImFwcGxlIn0sImxvY2F0aW9uIjp7InR5cGUiOiJaSVBfQ09ERSIsInppcF9jb2RlIjoiMTAxMCIsImNvdW50cnlfY29kZSI6Im5sIn0sInByb2ZpbGVzIjpbeyJhY3RpdmUiOnRydWUsInR5cGUiOiJ1cm46YmFtdGVjaDpwcm9maWxlIiwiaWQiOiI0NjYxOGEyNS0wOWQ1LTRhYmQtYWQ4My0wNWVkNGIzNjI3ZTYiLCJwYXJlbnRhbF9jb250cm9scyI6eyJlbmFibGVkIjpmYWxzZX19LHsiYWN0aXZlIjpmYWxzZSwidHlwZSI6InVybjpiYW10ZWNoOnByb2ZpbGUiLCJpZCI6IjdjNzI3MDk1LTA3OTEtNDI0YS05YmQ2LTM3OWI2YjI1NzIxYiIsInBhcmVudGFsX2NvbnRyb2xzIjp7ImVuYWJsZWQiOmZhbHNlfX1dLCJnZW5lcmF0ZWRfb24iOiIyMDE4LTExLTI4VDAwOjUwOjU5Ljg3NSswMDAwIiwidXBkYXRlZF9vbiI6IjIwMTgtMTEtMjhUMDA6NTA6NTkuODc1KzAwMDAiLCJleHBpcmVzX29uIjoiMjAxOC0xMS0yOFQwMTowMDo1OS44NzUrMDAwMCIsIm1lZGlhX3Blcm1pc3Npb25zIjp7ImVudGl0bGVtZW50cyI6WyJFU1BOX1BMVVMiXSwicnVsZXMiOnsicGFzc2VkIjpbXX0sImRhdGEiOnt9fSwiYmxhY2tvdXRzIjp7InJ1bGVzIjp7InZpb2xhdGVkIjpbXX0sImRhdGEiOnt9fSwiYWNjb3VudCI6eyJ0eXBlIjoidXJuOmJhbXRlY2g6YWNjb3VudCIsImlkIjoiOGNhMzI5MGQtYmMwOC00Y2MyLTk4ZjgtYzU5MDA5YjM0N2EwIiwiaG9tZV9sb2NhdGlvbiI6eyJ0eXBlIjoiVU5LTk9XTiJ9LCJkYXRhIjp7fX0sImxvZ2luX2NvbnRleHQiOnsiaWRwIjoiaHR0cHM6Ly9zdGcuYXV0aG9yaXphdGlvbi5nby5jb20iLCJhaWQiOiJ7QkVGMTQ3OTgtNzZCMS00QzM4LTkxOEUtQjQyMDdCMUIzMzZBfSJ9fSwic2Vzc2lvbklkIjoiYWM0OTVmMzAtZjJhNy0xMWU4LWIwYjAtMDI0MmFjMTEwMDA5IiwiZXhwIjoxNTQzMzY2ODU5LCJlbnYiOiJxYSIsImlhdCI6MTU0MzM2NjI1OSwianRpIjoiYWM0OTg2NDAtZjJhNy0xMWU4LWIwYjAtMDI0MmFjMTEwMDA5In0.5Dgxx8IZ_NDPpORisYvLI5pkFvCVP8FAs1SwzgvD2i8'; // eslint-disable-line\n endpoints[endpoint].headers['Mock-Magic-Value'] = 'persisted';\n\n }\n\n /**\n *\n * @access public\n * @method execute\n * @desc runs the sequence to completion\n *\n * @example userProfileSequence.execute().then(() => { console.log('success'); });\n *\n */\n execute() {\n\n const { config, email = 'bam@disneystreaming.com' } = this;\n const { clientId, clientApiKey, environment, debugEnabled } = config;\n\n const BootstrapConfiguration = SDK.Services.Configuration.BootstrapConfiguration;\n const OneTimePasscodeRequestReason = SDK.Services.Identity.Bam.OneTimePasscodeRequestReason;\n const AuthenticationFlow = SDK.Services.Identity.Bam.AuthenticationFlow;\n const RedeemedPasscodeToken = SDK.Services.Identity.Bam.RedeemedPasscodeToken;\n\n return new Promise((resolve, reject) => {\n\n /** @type {SDK.Services.Configuration.BootstrapConfiguration} */\n const bootstrapConfiguration = new BootstrapConfiguration({\n clientId,\n clientApiKey,\n environment,\n debugEnabled,\n application: {\n name: 'name',\n id: 'id',\n version: 'version'\n }\n });\n\n /** @type {SDK.SdkSession} */\n let sdkSession;\n\n /** @type {SDK.Identity.Bam.BamIdentityApi} */\n let bamIdentityApi;\n\n /** @type {SDK.Account.AccountApi} */\n let accountApi;\n\n /** @type {SDK.Services.Identity.Bam.AuthenticationFlow[]} */\n let authenticationFlows;\n\n this.createInitializedSdkSession(bootstrapConfiguration).then((session) => {\n\n /** @type {SDK.SdkSession} sa */\n sdkSession = session;\n\n /** @type {SDK.Identity.Bam.BamIdentityApi} */\n bamIdentityApi = sdkSession.bamIdentityApi;\n\n return bamIdentityApi.getAuthenticationFlow(email);\n\n }).then((flows) => {\n\n authenticationFlows = flows;\n\n if (authenticationFlows.includes(AuthenticationFlow.oneTimePasscode)) {\n\n return bamIdentityApi.requestOneTimePasscode(email, OneTimePasscodeRequestReason.forgotPassword);\n\n }\n\n const reasons = [new ErrorReason('', AssertionErrorMessages.bamIdentityApi.getAuthenticationFlow)];\n const authenticationFlowErrorMessage = {\n message: AssertionErrorMessages.bamIdentityApi.getAuthenticationFlow\n };\n const exceptionData = Object.assign(\n {},\n ExceptionReference.common.invalidState,\n authenticationFlowErrorMessage\n );\n\n return reject(new ServiceException({ reasons, exceptionData }));\n\n }).then(() => {\n\n const passcode = '0000'; // value used in mock\n\n return bamIdentityApi.authenticateWithPasscode(email, passcode);\n\n }).then((redeemedPasscodeToken) => {\n\n /** @test */\n assert.ok(\n redeemedPasscodeToken instanceof RedeemedPasscodeToken,\n AssertionErrorMessages.bamIdentityApi.authenticateWithPasscode\n );\n\n accountApi = sdkSession.accountApi;\n\n return accountApi.authorize(redeemedPasscodeToken.token, 'sdk-team');\n\n }).then(() => {\n\n if (sdkSession.tokenManager) {\n sdkSession.tokenManager.clearRetryRefresh();\n }\n\n return resolve();\n\n }).catch((ex) => {\n\n return reject(ex);\n\n });\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/sequences/identity/bam/oneTimePasscode.js","/**\n *\n * @module entry\n * @desc {SDK.Status} entry point\n *\n */\n\nimport TemporaryAccess from './temporaryAccess';\n\n/**\n *\n * @typedef SDK.Status\n * @type {Object}\n *\n * @property {TemporaryAccess} TemporaryAccess\n *\n */\n\n/**\n *\n * @type {SDK.Status}\n *\n */\nexport default {\n\n TemporaryAccess\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/status/entry.js","/**\n *\n * @module temporaryAccess\n *\n */\n\n/**\n *\n * @class TemporaryAccess\n *\n */\nexport default class TemporaryAccess {\n\n constructor() {\n\n /**\n *\n * @access public\n *\n */\n this.error = {};\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/status/temporaryAccess.js","/**\n *\n * @module sessionManager\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/session.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Token from './../token/entry';\n\nconst AccessTokenProvider = Token.AccessTokenProvider;\nconst SessionManagerConfiguration = Services.Configuration.SessionManagerConfiguration;\nconst SessionClient = Services.Session.SessionClient;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict\n} = Check.assert;\n\n/**\n *\n * @class SessionManager\n * @desc Manages the current session and serves as a go\n * between for the public APIs and the SessionClient.\n *\n */\nexport default class SessionManager {\n\n /**\n *\n * @param {SDK.Services.Configuration.SessionManagerConfiguration} config\n * @param {SDK.Services.Session.SessionClient} client\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Token.AccessTokenProvider} accessTokenProvider\n * @throws {InvalidArgumentException}\n *\n */\n constructor(config, client, logger = Logging, accessTokenProvider) {\n\n const errorMessage = {\n ctor: 'SessionManager(config, client, logger, accessTokenProvider)',\n get config() {\n return `${this.ctor} needs SDK.Services.Configuration.SessionManagerConfiguration instance`;\n },\n get client() {\n return `${this.ctor} needs SDK.Services.Session.SessionClient instance`;\n },\n get accessTokenProvider() {\n return `${this.ctor} needs SDK.Token.AccessTokenProvider instance`;\n }\n };\n\n instanceStrict(config, SessionManagerConfiguration, errorMessage.config, InvalidArgumentException);\n instanceStrict(client, SessionClient, errorMessage.client, InvalidArgumentException);\n instanceStrict(accessTokenProvider, AccessTokenProvider, errorMessage.accessTokenProvider, InvalidArgumentException); // eslint-disable-line\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.SessionManagerConfiguration}\n *\n */\n this.config = config;\n\n /**\n *\n * @access private\n * @type {SDK.Services.Session.SessionClient}\n *\n */\n this.client = client;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Token.AccessTokenProvider}\n *\n */\n this.accessTokenProvider = accessTokenProvider;\n\n this.logger.log(SessionManager.name, 'Created.');\n\n }\n\n /**\n *\n * @access private\n * @since 3.1.0\n * @desc Gets information about the current session.\n * @returns {Promise}\n *\n */\n getInfo() {\n\n const { accessToken } = this;\n\n return this.client.getInfo(accessToken);\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc Grabs a fresh AccessToken from the AccessTokenProvider instance\n * @returns {SDK.Token.AccessToken}\n *\n */\n get accessToken() {\n\n return this.accessTokenProvider.getAccessToken();\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/session/sessionManager.js","/**\n *\n * @module userActivityApi\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/user-activity.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/UserActivityApi.md\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport UserActivityEvent from './userActivityEvent';\nimport EventSchemataProvider from './eventSchemataProvider';\n\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst DustUrnReference = Services.Internal.Dust.DustUrnReference;\nconst DustCategory = Services.Internal.Dust.DustCategory;\nconst PersonalizationApiDustUrnReference = DustUrnReference.userActivity.personalization;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n array,\n object,\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class UserActivityApi\n * @desc The User Activity Api is a public interface for DUST. This api will allow app devs to send custom events,\n * related to user activity while using an app.\n * @since 3.4.0\n *\n */\nexport default class UserActivityApi {\n\n /**\n *\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(logger = Logging) {\n\n const errorMessage = {\n ctor: 'UserActivityApi(logger)',\n get logger() {\n return `${this.ctor} needs Logger instance`;\n }\n };\n\n instanceStrict(logger, Logging.Logger, errorMessage.logger, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc global tracking parameters for Glimpse that we try to apply to all Glimpse payloads\n * @note event specific tracking parameters will overwrite what is in here\n * @note spec says public but we mark this private because we want you to use `this.setTrackingParameters`\n *\n */\n this.trackingParameters = {};\n\n /**\n *\n * @access public\n * @type {SDK.UserActivity.EventSchemataProvider}\n * @desc stores and uses schemata to generate event payloads\n * @readonly\n *\n */\n this.schemataProvider = new EventSchemataProvider();\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @note needs to default to true to collect dust events before the configuration is fetched and we can\n * determine if this should be enabled\n *\n */\n this.dustEnabled = true;\n\n this.logger.info(UserActivityApi.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {String} rewardToken - The reward token associated with this content recommendation.\n * @param {String} contentId - The ID of content being rewarded, by the defined action.\n * @param {String} action - The action of the reward.\n * @param {Array} recommendedContentIds - Array of content id(s) that were recommended and viewable\n * when the user action occurred.\n * @desc Posts an event for a users content recommendation reward.\n * @returns {Promise} returns the payload that is sent to dust (for debugging purposes only)\n *\n */\n sendContentReward(rewardToken, contentId, action, recommendedContentIds) {\n\n const errorMessage = {\n method: 'UserActivityApi.sendContentReward(rewardToken, contentId, action, recommendedContentIds)',\n get rewardToken() {\n return `${this.method} rewardToken should be a String with length`;\n },\n get contentId() {\n return `${this.method} contentId should be a String with length`;\n },\n get action() {\n return `${this.method} action should be a String with length`;\n },\n get recommendedContentIds() {\n return `${this.method} recommendedContentIds should be an Array of Strings with length`;\n }\n };\n\n nonEmptyString(rewardToken, errorMessage.rewardToken, InvalidArgumentException);\n nonEmptyString(contentId, errorMessage.contentId, InvalidArgumentException);\n nonEmptyString(action, errorMessage.action, InvalidArgumentException);\n array.of.nonEmptyString(recommendedContentIds, errorMessage.recommendedContentIds, InvalidArgumentException);\n\n const { logger, dustEnabled } = this;\n\n const data = {\n rewardToken,\n rewardContentId: contentId,\n action,\n recommendedContentIds\n };\n\n if (dustEnabled) {\n\n const dustLogUtility = new DustLogUtility({\n category: DustCategory.personalization,\n logger,\n source: UserActivityApi.name,\n urn: PersonalizationApiDustUrnReference.contentRecommendationAward,\n data\n });\n\n dustLogUtility.log();\n\n }\n\n return Promise.resolve(data);\n\n }\n\n /**\n *\n * @access public\n * @since 3.8.0\n * @param {SDK.UserActivity.UserActivityEvent} event\n * @param {Object} parameters\n * @note we provide an additional `_failures` array on the debugging payload that is returned so the application\n * developer can determine if any schema values were not generated properly\n * @note generally we avoid using underscore pre-fixed names like `_failures` but in this case it's done to ensure\n * we don't accidentally overwrite a value provided by the app dev that is called `failures`\n * @returns {Promise} returns the payload that is sent to dust (for debugging purposes only)\n *\n */\n trackEvent(event, parameters = {}) {\n\n const errorMessage = {\n method: 'UserActivityApi.trackEvent(event, parameters)',\n get event() {\n return `${this.method} event should be an instance of SDK.UserActivity.UserActivityEvent`;\n },\n get parameters() {\n return `${this.method} parameters should be an Object`;\n }\n };\n\n const { logger, dustEnabled, schemataProvider } = this;\n\n instanceStrict(event, UserActivityEvent, errorMessage.event, InvalidArgumentException);\n object(parameters, errorMessage.parameters, InvalidArgumentException);\n\n const globalTrackingData = Object.assign({}, this.trackingParameters, parameters);\n const schemata = schemataProvider.getSchemata(event);\n const debuggingPayload = schemata.generateEventPayload(globalTrackingData);\n\n if (dustEnabled) {\n\n const dustLogUtility = new DustLogUtility({\n category: DustCategory.glimpse,\n logger,\n source: UserActivityApi.name,\n urn: event.eventUrn,\n data: {\n ...debuggingPayload,\n _failures: undefined // make sure `_failures` is not included\n }\n });\n\n dustLogUtility.log();\n\n }\n\n return Promise.resolve(debuggingPayload);\n\n }\n\n /**\n *\n * @access public\n * @since 3.8.0\n * @param {Object} trackingParameters\n * @desc merges the input to this function with the trackingParameters field on the UserActivityApi - this will\n * overwrite any existing duplicate keys that currently exist\n * @note this method is not in the spec - we provide a setter so app devs don't modify the UserActivityApi instance\n * directly\n *\n */\n setTrackingParameters(trackingParameters) {\n\n const errorMessage = {\n method: 'UserActivityApi.setTrackingParameters(trackingParameters)',\n get trackingParameters() {\n return `${this.method} trackingParameters should be an Object`;\n }\n };\n\n object(trackingParameters, errorMessage.trackingParameters, InvalidArgumentException);\n\n this.trackingParameters = Object.assign(this.trackingParameters, trackingParameters);\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/userActivityApi.js","/**\n *\n * @module entry\n * @desc {SDK.UserActivity.Glimpse} entry point.\n *\n */\n\nimport GlimpseEvent from './glimpseEvent';\nimport GlimpseEvents from './glimpseEvents';\n\n\n/**\n *\n * @type {Object}\n *\n * @property {GlimpseEvent} GlimpseEvent\n * @property {GlimpseEvents} GlimpseEvents\n *\n */\n\n/**\n *\n * @type {SDK.UserActivity.Glimpse}\n *\n */\nexport default {\n\n GlimpseEvent,\n GlimpseEvents\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/glimpse/entry.js","/**\n *\n * @module glimpseEvents\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/user-activity.md#known-events\n *\n */\n\nimport Services from './../../services/entry';\n\nimport GlimpseEvent from './glimpseEvent';\n\nconst GlimpseUrnReference = Services.Internal.Dust.DustUrnReference.userActivity.glimpse;\n\n/**\n *\n * @access public\n * @type {Object}\n * @desc contains a list of predefined Glimpse events\n * @note the IIFE is required as the application developer will not be expecting to invoke this method\n *\n */\nexport default {\n appLaunched: (() => new GlimpseEvent(GlimpseUrnReference.appLaunched))(),\n contentSelected: (() => new GlimpseEvent(GlimpseUrnReference.contentSelected))(),\n searchViewLoaded: (() => new GlimpseEvent(GlimpseUrnReference.searchViewLoaded))(),\n playbackSelected: (() => new GlimpseEvent(GlimpseUrnReference.playbackSelected))(),\n playbackExited: (() => new GlimpseEvent(GlimpseUrnReference.playbackExited))(),\n purchaseCompleted: (() => new GlimpseEvent(GlimpseUrnReference.purchaseCompleted))(),\n viewLoaded: (() => new GlimpseEvent(GlimpseUrnReference.viewLoaded))()\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/glimpse/glimpseEvents.js","/**\n *\n * @module entry\n * @desc {SDK.UserActivity.Personalization} entry point.\n *\n */\n\nimport PersonalizationEvent from './personalizationEvent';\nimport PersonalizationEvents from './personalizationEvents';\nimport UserActivityAction from './userActivityAction';\n\n\n/**\n *\n * @typedef SDK.UserActivity.Personalization\n * @type {Object}\n *\n * @property {PersonalizationEvent} PersonalizationEvent\n * @property {PersonalizationEvents} PersonalizationEvents\n * @property {UserActivityAction} UserActivityAction\n *\n */\n\n/**\n *\n * @type {SDK.UserActivity.Personalization}\n *\n */\nexport default {\n\n PersonalizationEvent,\n PersonalizationEvents,\n UserActivityAction\n\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/personalization/entry.js","/**\n *\n * @module personalizationEvents\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/user-activity.md#known-events\n *\n */\n\nimport Services from './../../services/entry';\n\nimport PersonalizationEvent from './personalizationEvent';\n\nconst PersonalizationDustUrnReference = Services.Internal.Dust.DustUrnReference.userActivity.personalization;\n\n/**\n *\n * @access public\n * @type {Object})\n * @note the IIFE is required as the application developer will not be expecting to invoke this method\n *\n */\nexport default {\n contentRecommendationAward: (() => new PersonalizationEvent(\n PersonalizationDustUrnReference.contentRecommendationAward\n ))()\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/personalization/personalizationEvents.js","/**\n *\n * @module userActivityAction\n * @see https://github.com/STRML/keyMirror\n *\n */\n\n/* eslint new-cap: 'off' */\n\nimport KeyMirror from 'keymirror';\n\n/**\n *\n * @typedef UserActivityAction\n * @type {Object}\n * @since 3.4.0\n *\n * @property {String} CLICK\n *\n */\n\n/**\n *\n * @enum\n * @type {UserActivityAction}\n *\n */\nexport default KeyMirror({\n /**\n *\n * @access public\n * @type {String}\n *\n */\n CLICK: null\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/userActivity/personalization/userActivityAction.js","/**\n *\n * @module userProfileApi\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/features_overviews/user-profile.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/UserProfileApi.md\n * @desc An account may have multiple user profiles associated with it. The UserProfileApi will be used by\n * applications to control the creation, modification, deletion of user profiles, and setting a user profile as active.\n *\n */\n\nimport Check from 'check-types';\nimport Logging from './../logging/entry';\nimport Services from './../services/entry';\nimport Account from './../account/entry';\nimport Token from './../token/entry';\n\nconst Util = Services.Util;\nconst AccountManager = Account.AccountManager;\nconst TokenManager = Token.TokenManager;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst UserProfile = Services.Account.UserProfile;\nconst UserProfileApiDustUrnReference = Services.Internal.Dust.DustUrnReference.userProfile.userProfileApi;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\n\nconst {\n instanceStrict,\n nonEmptyString,\n nonEmptyObject\n} = Check.assert;\n\n/**\n *\n * @class UserProfileApi\n * @since 3.5.0\n * @desc Provides the ability to manipulate user profiles.\n *\n */\nexport default class UserProfileApi {\n\n /**\n *\n * @param {SDK.Account.AccountManager} accountManager\n * @param {SDK.Token.TokenManager} tokenManager\n * @param {SDK.Logging.Logger} [logger=Logging]\n *\n */\n constructor(accountManager, tokenManager, logger = Logging) {\n\n const errorMessage = {\n ctor: 'UserProfileApi(accountManager, tokenManager, logger)',\n get accountManager() {\n return `${this.ctor} needs AccountManager instance`;\n },\n get tokenManager() {\n return `${this.ctor} needs TokenManager instance`;\n }\n };\n\n instanceStrict(accountManager, AccountManager, errorMessage.accountManager, InvalidArgumentException);\n instanceStrict(tokenManager, TokenManager, errorMessage.tokenManager, InvalidArgumentException);\n\n /**\n *\n * @access private\n * @type {SDK.Account.AccountManager}\n *\n */\n this.accountManager = accountManager;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = tokenManager;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc used to enable dust logging\n *\n */\n this.dustEnabled = Util.getSafe(() => this.accountManager.client.dustEnabled);\n\n this.logger.info(UserProfileApi.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {String} profileName - The name of the profile.\n * @param {Object} [attributes=null] - The attributes to use when creating the profile.\n * @param {Object} [metadata=null] - The metadata to use when creating the profile.\n * @desc Creates a user profile.\n * @throws {AccountNotFoundException} The account was not found\n * @note The account could not be found or the operation failed. Account service returns 401 or 404 with\n * error: account.get.failed, account.not.found.\n * @throws {MaximumProfilesReachedException} The maximum number of profiles for the user's account has already\n * been reached.\n * @note Request to create a profile returns HTTP 400 with code of account.profiles.max.exceeded\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded.\n *\n */\n createUserProfile(profileName, attributes = null, metadata = null) {\n\n const errorMessage = {\n method: 'AccountApi.createUserProfile(profileName, attributes, metadata)',\n get profileName() {\n return `${this.method} profileName should be a String with length`;\n },\n get attributes() {\n return `${this.method} attributes should be a non empty Object`;\n },\n get metadata() {\n return `${this.method} metadata should be a non empty Object`;\n }\n };\n\n nonEmptyString(profileName, errorMessage.profileName, InvalidArgumentException);\n\n if (Check.assigned(attributes)) {\n nonEmptyObject(attributes, errorMessage.attributes, InvalidArgumentException);\n }\n\n if (Check.assigned(metadata)) {\n nonEmptyObject(metadata, errorMessage.metadata, InvalidArgumentException);\n }\n\n const { dustEnabled, logger, accountManager } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: UserProfileApi.name,\n urn: UserProfileApiDustUrnReference.createUserProfile\n });\n\n return accountManager.createUserProfile(profileName, attributes, metadata).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Account.UserProfile} profile - The user profile to delete.\n * @desc Deletes the user profile.\n * @note if services returns an account grant it will be exchanged for a access token.\n * @throws {UserProfileNotFoundException} The userProfile was not found\n * @note The userProfile could not be found. UserProfile service returns\n * 400, 401 or 404 with error: account.profile.not.found.\n * @throws {UserProfileDeleteFailedException} The userProfile failed to be deleted.\n * @note The userProfile could not be deleted. UserProfile service returns a 400 with\n * error: account.profile.delete.failed.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded.\n *\n */\n deleteUserProfile(profile) {\n\n const errorMessage = {\n method: 'AccountApi.deleteUserProfile(profile)',\n get profile() {\n return `${this.method} profile should be an instance of UserProfile`;\n }\n };\n\n instanceStrict(profile, UserProfile, errorMessage.profile, InvalidArgumentException);\n\n const { dustEnabled, logger, accountManager } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: UserProfileApi.name,\n urn: UserProfileApiDustUrnReference.deleteUserProfile\n });\n\n return accountManager.deleteUserProfile(profile).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @desc Returns the user profile currently active for the account.\n * @throws {AccountNotFoundException} The account was not found\n * @note The account could not be found or the operation failed. Account service returns 401 or 404 with\n * error: account.get.failed, account.not.found.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when\n * the operation has succeeded and returns the user profile.\n *\n */\n getActiveUserProfile() {\n\n const { dustEnabled, logger, accountManager } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: UserProfileApi.name,\n urn: UserProfileApiDustUrnReference.getActiveUserProfile\n });\n\n return accountManager.getActiveUserProfile().catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {String} profileId - The ID of the user profile to activate.\n * @desc Returns the user profile specified by the profileId.\n * @note Retrieves the Account, and returns the `activeProfile` property from it.\n * @throws {AccountNotFoundException} The account was not found\n * @note The account could not be found or the operation failed. Account service returns 401 or 404 with\n * error: account.get.failed, account.not.found.\n * @throws {UserProfileNotFoundException} The userProfile was not found\n * @note The userProfile could not be found. UserProfile service returns\n * 400, 401 or 404 with error: account.profile.not.found.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when\n * the operation has succeeded and returns the user profile.\n *\n */\n getUserProfile(profileId) {\n\n const errorMessage = {\n method: 'AccountApi.getUserProfile(profileId)',\n get profileId() {\n return `${this.method} profileId should be a String with length`;\n }\n };\n\n nonEmptyString(profileId, errorMessage.profileId, InvalidArgumentException);\n\n const { dustEnabled, logger, accountManager } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: UserProfileApi.name,\n urn: UserProfileApiDustUrnReference.getUserProfile\n });\n\n return accountManager.getUserProfile(profileId).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @desc Returns the user profiles.\n * @throws {AccountNotFoundException} The account was not found\n * @note The account could not be found or the operation failed. Account service returns 401 or 404 with\n * error: account.get.failed, account.not.found.\n * @throws {ProfileRetrievalException} The profiles for the user's account could not be retrieved.\n * @note Profiles for the user's account could not be read. UserProfile service returns\n * 404 with error: account.profile.read.failed.\n * @throws {MaximumProfilesReachedException} The maximum number of profiles for the user's account has already\n * been reached.\n * @note Request to create a profile returns HTTP 400 with code of account.profiles.max.exceeded\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise>} A promise that completes when\n * the operation has succeeded and returns all user profiles.\n *\n */\n getUserProfiles() {\n\n const { dustEnabled, logger, accountManager } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: UserProfileApi.name,\n urn: UserProfileApiDustUrnReference.getUserProfiles\n });\n\n return accountManager.getUserProfiles().catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Account.UserProfile} profile - The user profile to activate.\n * @desc Sets the active user profile.\n * @note Activates the user profile, and exchanges the account grant\n * returned by AccountClient.setActiveUserProfile() for a new AccessContext.\n * @throws {AccountNotFoundException} The account was not found\n * @note The account could not be found or the operation failed. Account service returns 401 or 404 with\n * error: account.get.failed, account.not.found.\n * @throws {UserProfileNotFoundException} The userProfile was not found\n * @note The userProfile could not be found. UserProfile service returns\n * 400, 401 or 404 with error: account.profile.not.found.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded.\n *\n */\n setActiveUserProfile(profile) {\n\n const errorMessage = {\n method: 'AccountApi.setActiveUserProfile(profile)',\n get profile() {\n return `${this.method} profile should be an instance of UserProfile`;\n }\n };\n\n instanceStrict(profile, UserProfile, errorMessage.profile, InvalidArgumentException);\n\n const { dustEnabled, logger, accountManager } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: UserProfileApi.name,\n urn: UserProfileApiDustUrnReference.setActiveUserProfile\n });\n\n return accountManager.setActiveUserProfile(profile).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Account.UserProfile} profile - The user profile to update.\n * @desc Saves all changes made to the user profile.\n * @note The service may change the profile name or attributes, so the SDK\n * should ensure that the updated user profile is returned.\n * @throws {AccountNotFoundException} The account was not found\n * @note The account could not be found or the operation failed. Account service returns 401 or 404 with\n * error: account.get.failed, account.not.found.\n * @throws {UserProfileNotFoundException} The userProfile was not found\n * @note The userProfile could not be found. UserProfile service returns\n * 400, 401 or 404 with error: account.profile.not.found.\n * @throws {UserProfileUpdateFailedException} The userProfile update failed\n * @note The userProfile update failed. UserProfile service returns\n * 400, 401 or 404 with error: account.profile.update.failed.\n * @throws {AuthenticationExpiredException} Authentication has expired and needs to be updated before proceeding.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A promise that completes when the operation has succeeded.\n *\n */\n updateUserProfile(profile) {\n\n const errorMessage = {\n method: 'AccountApi.updateUserProfile(profile)',\n get profile() {\n return `${this.method} profile should be an instance of UserProfile`;\n }\n };\n\n instanceStrict(profile, UserProfile, errorMessage.profile, InvalidArgumentException);\n\n const { dustEnabled, logger, accountManager } = this;\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: UserProfileApi.name,\n urn: UserProfileApiDustUrnReference.updateUserProfile\n });\n\n return accountManager.updateUserProfile(profile).catch((ex) => {\n\n return dustEnabled ? Promise.reject(dustLogUtility.captureErrors(ex)) : Promise.reject(ex);\n\n }).finally(() => {\n\n return dustEnabled ? dustLogUtility.log() : Promise.resolve();\n\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/userProfile/userProfileApi.js","/**\n *\n * @module sdkSession\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/feature_overviews/sdkSession.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk#feature-overviews\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/SdkSession.md\n * @see https://github.bamtech.co/sdk-distribution/bam-sdk/blob/master/Features/Error-Handling.md\n *\n */\n\n/* eslint camelcase: \"off\" */\n\nimport Check from 'check-types';\nimport EventEmitter from 'events';\n\nimport Services from './services/entry';\nimport Account from './account/entry';\nimport Commerce from './commerce/entry';\nimport Configuration from './configuration/entry';\nimport Content from './content/entry';\nimport CustomerService from './customerService/entry';\nimport Device from './device/entry';\nimport Drm from './drm/entry';\nimport Eligibility from './eligibility/entry';\nimport ExternalActivation from './externalActivation/entry';\nimport Identity from './identity/entry';\nimport Internal from './internal/entry';\nimport Media from './media/entry';\nimport Paywall from './paywall/entry';\nimport Purchase from './purchase/entry';\nimport Session from './session/entry';\nimport Subscription from './subscription/entry';\nimport Token from './token/entry';\nimport UserActivity from './userActivity/entry';\nimport UserProfile from './userProfile/entry';\nimport Logging from './logging/entry';\n\nimport DustSink from './internal/dust/dustSink';\nimport ReauthorizationFailure from './reauthorizationFailure';\nimport AdEngineManager from './media/adEngine/adEngineManager';\nimport AdEngineClient from './services/media/adEngine/adEngineClient';\n\nconst LoggingApi = Logging.LoggingApi;\nconst Util = Services.Util;\nconst Storage = Services.Storage;\nconst HttpClient = Services.HttpClient;\nconst BootstrapConfiguration = Services.Configuration.BootstrapConfiguration;\nconst SdkSessionConfiguration = Services.Configuration.SdkSessionConfiguration;\nconst AccountGrant = Services.Account.AccountGrant;\nconst DustLogUtility = Services.Internal.Dust.DustLogUtility;\nconst SdkSessionDustUrnReference = Services.Internal.Dust.DustUrnReference.sdkSession;\n\nconst AccountClient = Services.Account.AccountClient;\nconst AdobeIdentityClient = Services.Identity.Adobe.AdobeIdentityClient;\nconst BamIdentityClient = Services.Identity.Bam.BamIdentityClient;\nconst CommerceClient = Services.Commerce.CommerceClient;\nconst ContentClient = Services.Content.ContentClient;\nconst CustomerServiceClient = Services.CustomerService.CustomerServiceClient;\nconst DeviceClient = Services.Device.DeviceClient;\nconst DrmClient = Services.Drm.DrmClient;\nconst EligibilityClient = Services.Eligibility.EligibilityClient;\nconst ExternalActivationClient = Services.ExternalActivation.ExternalActivationClient;\nconst MediaClient = Services.Media.MediaClient;\nconst TokenClient = Services.Token.TokenClient;\nconst TelemetryClient = Services.Internal.Telemetry.TelemetryClient;\nconst PaywallClient = Services.Paywall.PaywallClient;\nconst PurchaseClient = Services.Purchase.PurchaseClient;\nconst SubscriptionClient = Services.Subscription.SubscriptionClient;\nconst SessionClient = Services.Session.SessionClient;\n\nconst AccountManager = Account.AccountManager;\nconst AdobeIdentityManager = Identity.Adobe.AdobeIdentityManager;\nconst BamIdentityManager = Identity.Bam.BamIdentityManager;\nconst CommerceManager = Commerce.CommerceManager;\nconst ContentManager = Content.ContentManager;\nconst ConfigurationManager = Configuration.ConfigurationManager;\nconst CustomerServiceManager = CustomerService.CustomerServiceManager;\nconst DeviceManager = Device.DeviceManager;\nconst DrmManager = Drm.DrmManager;\nconst EligibilityManager = Eligibility.EligibilityManager;\nconst ExternalActivationManager = ExternalActivation.ExternalActivationManager;\nconst MediaManager = Media.MediaManager;\nconst MediaCapabilitiesProvider = Media.MediaCapabilitiesProvider;\nconst TokenManager = Token.TokenManager;\nconst TelemetryManager = Internal.Telemetry.TelemetryManager;\nconst PaywallManager = Paywall.PaywallManager;\nconst PurchaseManager = Purchase.PurchaseManager;\nconst SubscriptionManager = Subscription.SubscriptionManager;\nconst SessionManager = Session.SessionManager;\n\nconst AccessContextState = Token.AccessContextState;\nconst AccessTokenProvider = Token.AccessTokenProvider;\nconst DeviceGrantStorage = Token.DeviceGrantStorage;\nconst AccessStorage = Token.AccessStorage;\nconst GeoProvider = Token.GeoProvider;\nconst IdentityTokenStorage = Token.IdentityTokenStorage;\n\nconst AccountApi = Account.AccountApi;\nconst AdobeIdentityApi = Identity.Adobe.AdobeIdentityApi;\nconst BamIdentityApi = Identity.Bam.BamIdentityApi;\nconst CommerceApi = Commerce.CommerceApi;\nconst ContentApi = Content.ContentApi;\nconst MediaApi = Media.MediaApi;\nconst PaywallApi = Paywall.PaywallApi;\nconst PurchaseApi = Purchase.PurchaseApi;\nconst SubscriptionApi = Subscription.SubscriptionApi;\nconst UserActivityApi = UserActivity.UserActivityApi;\nconst UserProfileApi = UserProfile.UserProfileApi;\n\nconst InvalidArgumentException = Services.Exception.InvalidArgumentException;\nconst ServiceException = Services.Exception.ServiceException;\nconst ExceptionReference = Services.Exception.ExceptionReference;\nconst ErrorReason = Services.Exception.ErrorReason;\n\nconst {\n assigned,\n instanceStrict,\n nonEmptyString\n} = Check.assert;\n\n/**\n *\n * @class SdkSession\n * @extends {EventEmitter}\n * @see https://nodejs.org/api/events.html\n * @emits {ReauthorizationFailure} The event raised when automatic token refresh fails.\n * @desc Represents an SDK session for the application to interact with.\n *\n */\nexport default class SdkSession extends EventEmitter {\n\n /**\n *\n * @param {SDK.Services.Configuration.SdkSessionConfiguration} sdkSessionConfiguration\n * @param {SDK.Token.AccessStorage} accessStorage\n * @param {SDK.Logging.Logger} [logger=Logging]\n * @param {SDK.Token.GeoProvider} [geoProvider=null]\n * @param {SDK.Media.MediaCapabilitiesProvider} [mediaCapabilitiesProvider=null]\n * @param {SDK.Services.Storage} [storage=null]\n * @param {SDK.Services.HttpClient} [httpClient=null]\n * @param {Object} managers\n * @param {Object} metadata\n * @param {SDK.Token.AccessTokenProvider} accessTokenProvider\n * @throws {InvalidArgumentException}\n *\n */\n constructor(sdkSessionConfiguration, accessStorage, logger = Logging, geoProvider = null,\n mediaCapabilitiesProvider = null, storage = null, httpClient = null, managers, metadata, accessTokenProvider) {\n\n const errorMessage = {\n ctor: `SdkSession(sdkSessionConfiguration, accessStorage, logger, geoProvider, storage,\n httpClient, managers, metadata, accessTokenProvider)`,\n get sdkSessionConfiguration() {\n return `${this.ctor} needs SDK.Services.Configuration.SdkSessionConfiguration instance`;\n },\n get accessStorage() {\n return `${this.ctor} needs SDK.Token.AccessStorage instance`;\n },\n get storage() {\n return `${this.ctor} needs SDK.Services.Storage instance`;\n },\n get managersInstance() {\n return `${this.ctor} needs structured managers Object`;\n },\n get metadataInstance() {\n return `${this.ctor} needs structured session metadata Object`;\n },\n get accessTokenProvider() {\n return `${this.ctor} needs SDK.Token.AccessTokenProvider instance`;\n }\n };\n\n instanceStrict(sdkSessionConfiguration, SdkSessionConfiguration, errorMessage.sdkSessionConfiguration, InvalidArgumentException); // eslint-disable-line\n instanceStrict(accessStorage, AccessStorage, errorMessage.accessStorage, InvalidArgumentException);\n\n if (Check.assigned(storage)) {\n instanceStrict(storage, Storage, errorMessage.storage, InvalidArgumentException);\n }\n\n assigned(Util.getSafe(() => managers.tokenManager), errorMessage.managersInstance, InvalidArgumentException);\n assigned(Util.getSafe(() => metadata.version), errorMessage.metadataInstance, InvalidArgumentException);\n instanceStrict(accessTokenProvider, AccessTokenProvider, errorMessage.accessTokenProvider, InvalidArgumentException); // eslint-disable-line\n\n super();\n\n /**\n *\n * @access private\n * @type {SDK.Services.Configuration.SdkSessionConfiguration}\n *\n */\n this.config = sdkSessionConfiguration;\n\n /**\n *\n * @access private\n * @type {SDK.Token.AccessStorage}\n *\n */\n this.accessStorage = accessStorage;\n\n /**\n *\n * @access private\n * @type {SDK.Logging.Logger}\n * @desc Single Logger instance to be reused throughout the SDK.\n *\n */\n this.logger = logger;\n\n /**\n *\n * @access private\n * @type {SDK.Token.GeoProvider}\n *\n */\n this.geoProvider = geoProvider || new GeoProvider(this.logger);\n\n /**\n *\n * @access public\n * @type {SDK.Media.MediaCapabilitiesProvider}\n *\n */\n this.mediaCapabilitiesProvider = mediaCapabilitiesProvider || new MediaCapabilitiesProvider(this.logger);\n\n /**\n *\n * @access public\n * @type {SDK.Services.Storage}\n * @desc Single Storage instance to be reused throughout the SDK.\n * Exposed publicly for use in util modules, and to allow application developers\n * to reference the platform specific {SDK.Services.Storage} implementation.\n *\n */\n this.storage = storage || new Storage(this.logger);\n\n /**\n *\n * @access private\n * @since 2.0.0\n * @type {SDK.Services.HttpClient}\n * @desc Single HttpClient instance to be reused in all FeatureClient(s).\n *\n */\n this.httpClient = httpClient || new HttpClient(this.logger);\n\n /**\n *\n * @access private\n * @type {Object}\n * @desc Structured map with all expected managers.\n *\n */\n this.managers = managers;\n\n /**\n *\n * @access private\n * @type {SDK.Token.AccessTokenProvider}\n * @since 3.0.0\n *\n */\n this.accessTokenProvider = accessTokenProvider;\n\n /**\n *\n * @access private\n * @type {String}\n * @desc The public application key for the SDK.\n *\n */\n this.clientApiKey = metadata.clientApiKey || '';\n\n /**\n *\n * @access public\n * @type {String}\n * @since 1.1.2\n * @desc The client ID to use the SDK against.\n * @note exposed publicly for use in util modules, etc...\n *\n */\n this.clientId = metadata.clientId || '';\n\n /**\n *\n * @access public\n * @type {String}\n * @since 1.1.2\n * @desc The environment that the SDK services should run in.\n * @note exposed publicly for use in util modules, etc...\n *\n */\n this.environment = metadata.environment || '';\n\n /**\n *\n * @access public\n * @type {String}\n * @since 2.0.0\n * @desc The SDK version. The format of the version is `SemVer`-`Built SHA`.\n * @example '4.2.0-23c141d'\n * @note using a shortened SHA String.\n *\n */\n this.version = metadata.version || '';\n\n /**\n *\n * @access public\n * @type {String}\n * @since 2.0.0\n * @desc The shortened version String, without the build SHA.\n * @example '4.2'\n *\n */\n this.versionShort = metadata.versionShort || '';\n\n /**\n *\n * @access public\n * @type {Boolean}\n * @desc Whether the service account was created with debug logging enabled.\n *\n */\n this.debugEnabled = metadata.debugEnabled || false;\n\n /**\n *\n * @access private\n * @type {SDK.Account.AccountManager}\n *\n */\n this.accountManager = this.managers.accountManager;\n\n /**\n *\n * @access private\n * @type {SDK.Media.MediaManager}\n *\n */\n this.mediaManager = this.managers.mediaManager;\n\n /**\n *\n * @access private\n * @type {SDK.Content.CommerceManager}\n *\n */\n this.commerceManager = this.managers.commerceManager;\n\n /**\n *\n * @access private\n * @type {SDK.Content.ContentManager}\n *\n */\n this.contentManager = this.managers.contentManager;\n\n /**\n *\n * @access private\n * @type {SDK.CustomerService.CustomerServiceManager}\n *\n */\n this.customerServiceManager = this.managers.customerServiceManager;\n\n /**\n *\n * @access private\n * @type {SDK.Token.TokenManager}\n *\n */\n this.tokenManager = this.managers.tokenManager;\n\n /**\n *\n * @access private\n * @type {SDK.Internal.Telemetry.TelemetryManager}\n *\n */\n this.telemetryManager = this.managers.telemetryManager;\n\n /**\n *\n * @access private\n * @type {SDK.Device.DeviceManager}\n *\n */\n this.deviceManager = this.managers.deviceManager;\n\n /**\n *\n * @access private\n * @type {SDK.Drm.DrmManager}\n * @since 3.2.0\n *\n */\n this.drmManager = this.managers.drmManager;\n\n /**\n *\n * @access private\n * @type {SDK.Eligibility.EligibilityManager}\n * @since 4.2.0\n *\n */\n this.eligibilityManager = this.managers.eligibilityManager;\n\n /**\n *\n * @access private\n * @type {SDK.ExternalActivation.ExternalActivationManager}\n * @since 4.2.0\n *\n */\n this.externalActivationManager = this.managers.externalActivationManager;\n\n /**\n *\n * @access private\n * @since 3.9.0\n * @type {SDK.Paywall.PaywallManager}\n *\n */\n this.paywallManager = this.managers.paywallManager;\n\n /**\n *\n * @access private\n * @type {SDK.Purchase.PurchaseManager}\n *\n */\n this.purchaseManager = this.managers.purchaseManager;\n\n /**\n *\n * @access private\n * @type {SDK.Subscription.SubscriptionManager}\n *\n */\n this.subscriptionManager = this.managers.subscriptionManager;\n\n /**\n *\n * @access private\n * @type {SDK.Identity.Bam.BamIdentityManager}\n *\n */\n this.bamIdentityManager = this.managers.bamIdentityManager;\n\n /**\n *\n * @access private\n * @type {SDK.Identity.Adobe.AdobeIdentityManager}\n *\n */\n this.adobeIdentityManager = this.managers.adobeIdentityManager;\n\n /**\n *\n * @access private\n * @type {SDK.Session.SessionManager}\n *\n */\n this.sessionManager = this.managers.sessionManager;\n\n /**\n *\n * @access public\n * @type {SDK.Logging.LoggingApi}\n * @desc Gets the Logging instance for access to logging related features.\n *\n */\n this.loggingApi = new LoggingApi(\n this.logger\n );\n\n /**\n *\n * @access public\n * @type {SDK.Media.MediaApi}\n * @desc Gets the media resource used to support media playback.\n *\n */\n this.mediaApi = new MediaApi(\n this.mediaManager,\n this.logger\n );\n\n /**\n *\n * @access public\n * @type {SDK.Content.ContentApi}\n * @desc Gets the content resource used to support content discovery.\n *\n */\n this.contentApi = new ContentApi(\n this.contentManager,\n this.logger\n );\n\n /**\n *\n * @access public\n * @type {SDK.Purchase.PurchaseApi}\n * @desc Gets the purchases resource used to support and retrieve in app purchases.\n *\n */\n this.purchaseApi = new PurchaseApi({\n purchaseManager: this.purchaseManager,\n subscriptionManager: this.subscriptionManager,\n eligibilityManager: this.eligibilityManager,\n externalActivationManager: this.externalActivationManager,\n logger: this.logger\n });\n\n /**\n *\n * @access public\n * @type {SDK.Subscription.SubscriptionApi}\n * @desc Gets the subscription resource used to support and retrieve subscriptions.\n *\n */\n this.subscriptionApi = new SubscriptionApi(\n this.subscriptionManager,\n this.logger\n );\n\n /**\n *\n * @access public\n * @type {SDK.Account.AccountApi}\n * @desc Gets the account resource to access account properties.\n *\n */\n this.accountApi = new AccountApi(\n this.accountManager,\n this.tokenManager,\n this.subscriptionManager,\n this.logger\n );\n\n /**\n *\n * @access public\n * @type {SDK.Identity.Bam.BamIdentityApi}\n * @desc Gets an object used to access BAM identity services.\n *\n */\n this.bamIdentityApi = new BamIdentityApi(\n this.bamIdentityManager,\n this.logger\n );\n\n /**\n *\n * @access public\n * @type {SDK.Identity.Adobe.AdobeIdentityApi}\n * @desc Gets an object used to access Adobe identity services.\n *\n */\n this.adobeIdentityApi = new AdobeIdentityApi(\n this.adobeIdentityManager,\n this.tokenManager,\n this.accountManager,\n this.logger\n );\n\n /**\n *\n * @access public\n * @type {SDK.UserActivity.UserActivityApi}\n * @desc Gets an object used to allow application developers to send custom events, related to\n * user activity while using an app.\n *\n */\n this.userActivityApi = new UserActivityApi(\n this.logger\n );\n\n /**\n *\n * @access public\n * @type {SDK.Commerce.CommerceApi}\n *\n */\n this.commerceApi = new CommerceApi(\n this.commerceManager,\n this.tokenManager,\n this.logger\n );\n\n /**\n *\n * @access public\n * @type {SDK.UserProfile.UserProfileApi}\n * @since 3.5.0\n * @desc Provides an object used to access and maintain user profiles.\n *\n */\n this.userProfileApi = new UserProfileApi(\n this.accountManager,\n this.tokenManager,\n this.logger\n );\n\n /**\n *\n * @access public\n * @type {SDK.Paywall.PaywallApi}\n * @since 3.9.0\n * @desc Provides an object used to access and maintain paywall.\n *\n */\n this.paywallApi = new PaywallApi({\n paywallManager: this.paywallManager,\n tokenManager: this.tokenManager,\n logger: this.logger\n });\n\n /**\n *\n * @access private\n * @type {Boolean}\n * @desc Determines if the current session instance is in a initialized state.\n *\n */\n this.isInitialized = false;\n\n this.logger.info(SdkSession.name, 'Created.');\n\n }\n\n /**\n *\n * @access public\n * @param {SDK.Services.Configuration.BootstrapConfiguration} bootstrapConfiguration - The bootstrap\n * information used to initialize the SDK.\n * @param {SDK.Token.GeoProvider} [geoProvider=null]\n * @param {SDK.Media.MediaCapabilitiesProvider} [mediaCapabilitiesProvider=null]\n * @desc Creates a new instance of `SdkSession` initialized with the supplied\n * bootstrapConfiguration information. This is the entry point into all further interactions with the SDK.\n * the provided BootstrapConfiguration information.\n * @throws {InvalidDustConfigurationException}\n * @note thrown if an incorrect or incomplete `application` is provided with\n * `SDK.Services.Configuration.BootstrapConfiguration` and the SDK Client Config or if the `environment` cannot\n * be determined\n * @throws {InvalidArgumentException}\n * @throws {ConfigurationNotFoundException} Unable to locate configuration data based on the supplied\n * bootstrap parameter.\n * @note The SDK config service could not find the requested config.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n * @example SDK.SdkSession.createSdkSession(bootstrapConfiguration).then((session) => {\n * console.log(session.version); // '4.2.0-23c141d'\n * });\n *\n */\n static async createSdkSession(bootstrapConfiguration, geoProvider = null, mediaCapabilitiesProvider = null) {\n\n const errorMessage = {\n method: 'SdkSession.createSdkSession(bootstrapConfiguration, geoProvider, mediaCapabilitiesProvider)',\n processedDirective: 'The SDK should be loaded with a proper device runtime profile distribution.',\n get bootstrapConfiguration() {\n return `${this.method} needs SDK.Services.Configuration.BootstrapConfiguration instance`;\n }\n };\n\n instanceStrict(bootstrapConfiguration, BootstrapConfiguration, errorMessage.bootstrapConfiguration, InvalidArgumentException); // eslint-disable-line\n\n const SDK_VERSION = SdkSession.hasProcess() ? process.env.SDK_VERSION : '4.2.0';\n const SDK_VERSION_SHA = SdkSession.hasProcess() ? process.env.SDK_VERSION_SHA : '23c141d';\n const sdkVersion = `${SDK_VERSION}-${SDK_VERSION_SHA}`;\n const sdkVersionShort = SDK_VERSION && SDK_VERSION.substring(0, SDK_VERSION.lastIndexOf('.'));\n\n const { clientId, clientApiKey, environment, debugEnabled, application } = bootstrapConfiguration;\n\n const packageData = { sdkVersionShort };\n const logger = Logging;\n\n let dustSink = logger.sinks.find((sink) => {\n return Check.instanceStrict(sink, DustSink) ? sink : null;\n });\n\n if (!dustSink) {\n\n dustSink = new DustSink(logger);\n\n logger.addSink(dustSink);\n\n }\n\n logger.console(debugEnabled);\n logger.info(SdkSession.name, `Create SDK session instance, ${clientId}/${environment}.`);\n logger.info(SdkSession.name, `Version, ${sdkVersion}.`);\n logger.info(SdkSession.name, 'Debug mode enabled.');\n\n if (Check.equal(SdkSession.hasProcessedDirectives(), false)) {\n logger.error(SdkSession.name, errorMessage.processedDirectives);\n }\n\n // do not check for dustEnabled here because we need to log dust events until we get the config\n const dustLogUtility = new DustLogUtility({\n logger,\n source: SdkSession.name,\n urn: SdkSessionDustUrnReference.createSdkSession\n });\n\n const storage = new Storage(logger);\n const httpClient = new HttpClient(logger);\n const accessStorage = new AccessStorage(clientId, environment, logger, null, storage);\n const deviceGrantStorage = new DeviceGrantStorage(clientId, environment, logger, null, storage);\n const identityTokenStorage = new IdentityTokenStorage(clientId, environment, logger, storage);\n const configurationManager = new ConfigurationManager(bootstrapConfiguration, packageData, logger, storage);\n const accessTokenProvider = new AccessTokenProvider(accessStorage, logger);\n\n try {\n\n const sdkSessionConfiguration = await configurationManager.getConfiguration();\n const managers = Object.create(null);\n\n const { services } = sdkSessionConfiguration;\n\n managers.deviceManager = new DeviceManager(\n clientApiKey,\n services.device,\n new DeviceClient(services.device.client, logger, httpClient),\n logger,\n deviceGrantStorage,\n configurationManager.environmentConfiguration\n );\n\n managers.tokenManager = new TokenManager(\n clientApiKey,\n services.token,\n new TokenClient(services.token.client, logger, httpClient),\n geoProvider,\n logger,\n accessStorage,\n managers.deviceManager,\n sdkVersionShort\n );\n\n managers.telemetryManager = new TelemetryManager(\n services.telemetry,\n managers.tokenManager,\n new TelemetryClient(services.telemetry.client, logger, httpClient),\n logger\n );\n\n managers.accountManager = new AccountManager(\n services.account,\n new AccountClient(services.account.client, logger, httpClient),\n logger,\n managers.tokenManager\n );\n\n managers.purchaseManager = new PurchaseManager(\n services.purchase,\n new PurchaseClient(services.purchase.client, logger, httpClient),\n logger,\n managers.tokenManager\n );\n\n managers.drmManager = new DrmManager(\n services.drm,\n new DrmClient(services.drm.client, logger, httpClient),\n accessTokenProvider,\n clientId,\n environment,\n storage,\n logger\n );\n\n managers.eligibilityManager = new EligibilityManager({\n config: services.eligibility,\n client: new EligibilityClient(services.eligibility.client, logger, httpClient),\n accessTokenProvider,\n logger\n });\n\n managers.adEngineManager = new AdEngineManager({\n config: services.adEngine,\n client: new AdEngineClient(services.adEngine.client, logger, httpClient),\n tokenManager: managers.tokenManager,\n sdkver: managers.deviceManager.environmentConfiguration.sdkVersion,\n logger,\n geoProvider\n });\n\n managers.mediaManager = new MediaManager({\n mediaManagerConfiguration: services.media,\n tokenManager: managers.tokenManager,\n drmManager: managers.drmManager,\n telemetryManager: managers.telemetryManager,\n mediaCapabilitiesProvider,\n mediaClient: new MediaClient(services.media.client, logger, httpClient),\n adEngineManager: managers.adEngineManager,\n logger\n });\n\n managers.contentManager = new ContentManager(\n services.content,\n new ContentClient(services.content.client, logger, httpClient),\n logger,\n accessTokenProvider\n );\n\n managers.subscriptionManager = new SubscriptionManager(\n services.subscription,\n new SubscriptionClient(services.subscription.client, logger, httpClient),\n logger,\n accessTokenProvider\n );\n\n managers.bamIdentityManager = new BamIdentityManager(\n services.bamIdentity,\n new BamIdentityClient(services.bamIdentity.client, logger, httpClient),\n logger,\n managers.tokenManager,\n identityTokenStorage,\n );\n\n managers.adobeIdentityManager = new AdobeIdentityManager(\n services.adobeIdentity,\n new AdobeIdentityClient(services.adobeIdentity.client, logger, httpClient),\n logger,\n accessTokenProvider\n );\n\n managers.sessionManager = new SessionManager(\n services.session,\n new SessionClient(services.session.client, logger, httpClient),\n logger,\n accessTokenProvider\n );\n\n managers.customerServiceManager = new CustomerServiceManager(\n services.customerService,\n new CustomerServiceClient(services.customerService.client, logger, httpClient),\n logger\n );\n\n managers.commerceManager = new CommerceManager(\n services.commerce,\n new CommerceClient(services.commerce.client, logger, httpClient),\n accessTokenProvider,\n logger\n );\n\n managers.paywallManager = new PaywallManager({\n config: services.paywall,\n client: new PaywallClient(services.paywall.client, logger, httpClient),\n tokenManager: managers.tokenManager,\n logger\n });\n\n managers.externalActivationManager = new ExternalActivationManager({\n config: services.externalActivation,\n client: new ExternalActivationClient(services.externalActivation.client, logger, httpClient),\n tokenManager: managers.tokenManager,\n logger\n });\n\n const metadata = {\n clientId,\n clientApiKey,\n environment,\n debugEnabled,\n version: sdkVersion,\n versionShort: sdkVersionShort\n };\n\n const sdkSession = new SdkSession(\n sdkSessionConfiguration,\n accessStorage,\n logger,\n geoProvider,\n mediaCapabilitiesProvider,\n storage,\n httpClient,\n managers,\n metadata,\n accessTokenProvider\n );\n\n sdkSession.tokenManager.on('TokenRefreshFailed', (tokenRefreshFailure) => {\n logger.info(SdkSession.name, 'Dispatch ReauthorizationFailure event.');\n sdkSession.emit('ReauthorizationFailure', new ReauthorizationFailure(tokenRefreshFailure.error));\n });\n\n const dustEnabled = !services.telemetry.disabled;\n\n if (dustEnabled) {\n\n const { deviceManager, telemetryManager } = managers;\n const { environmentConfiguration } = deviceManager;\n const { deviceRuntimeProfile, deviceProfile, sdkVersion: version, platform } = environmentConfiguration;\n\n dustSink.initializeDustSink({\n telemetryManager,\n environment: {\n device: {\n os: deviceRuntimeProfile,\n model: deviceProfile\n },\n sdk: {\n version,\n platform\n }\n },\n sdkConfigApplication: sdkSessionConfiguration.application,\n application\n });\n\n } else {\n\n dustSink.disableDustSink();\n\n }\n\n Object.keys(managers).forEach((key) => {\n\n if (Util.getSafe(() => managers[key].client.dustEnabled)) {\n managers[key].client.dustEnabled = dustEnabled;\n }\n\n });\n\n return Promise.resolve(sdkSession);\n\n } catch (ex) {\n\n // even if there is an error we want to try to capture this\n dustLogUtility.captureErrors(ex);\n\n throw ex;\n\n } finally {\n\n // even if there is an error we want to try to capture this\n dustLogUtility.log();\n\n }\n\n }\n\n /**\n *\n * @access public\n * @desc Initializes the SDK and restores previous state if it exists.\n * @note If the operation fails, it can be retried or call reset to\n * reset the state and start in an anonymous state.\n * @note this.initialized MUST come before we try to initialize the DustSink\n * @throws {AuthenticationExpiredException} Could not reauthorize because authentication information\n * used to create authorization state has expired.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} An awaitable action that returns when it succeeds.\n *\n * @example sdkSession.initialize().then() => {\n * console.log(sdkSession.isInitialized); // true\n * });\n *\n */\n async initialize() {\n\n const { dustEnabled, logger } = this;\n\n logger.info(SdkSession.name, 'Initialize.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: SdkSession.name,\n urn: SdkSessionDustUrnReference.initialize\n });\n\n if (this.isInitialized) {\n\n logger.error(SdkSession.name, 'Already initialized.');\n\n const reasons = [new ErrorReason('', `${SdkSession.name} already initialized.`)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n const exception = new ServiceException({ reasons, exceptionData });\n\n if (dustLogUtility) {\n\n dustLogUtility.captureErrors(exception);\n dustLogUtility.log();\n\n }\n\n throw exception;\n\n }\n\n try {\n\n await this.reauthorize();\n\n logger.info(SdkSession.name, 'Successfully initialized.');\n\n this.isInitialized = true;\n\n this.enableDustSink();\n\n } catch (ex) {\n\n logger.info(SdkSession.name, 'Dispatch ReauthorizationFailure event.');\n\n if (dustLogUtility) {\n dustLogUtility.captureErrors(ex);\n }\n\n this.emit('ReauthorizationFailure', new ReauthorizationFailure(ex));\n\n throw ex;\n\n } finally {\n\n if (dustLogUtility) {\n dustLogUtility.log();\n }\n\n }\n }\n\n /**\n *\n * @access public\n * @desc Resets the SdkSession to an anonymous state.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n * @example sdkSession.reset().then() => {\n * console.log('Reset SDK to original state');\n * });\n *\n */\n async reset() {\n\n const { dustEnabled, deviceManager, tokenManager, bamIdentityManager, logger } = this;\n\n logger.info(SdkSession.name, 'Reset SDK to an anonymous state.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: SdkSession.name,\n urn: SdkSessionDustUrnReference.reset\n });\n\n try {\n\n await bamIdentityManager.identityTokenStorage.clear();\n const deviceGrant = await deviceManager.getDeviceGrant();\n await tokenManager.reset(deviceGrant);\n\n this.isInitialized = true;\n\n } catch (ex) {\n\n if (dustLogUtility) {\n dustLogUtility.captureErrors(ex);\n }\n\n } finally {\n\n if (dustLogUtility) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @desc Reauthorizes the current access of the SDK.\n * @throws {AuthenticationExpiredException} Could not reauthorize because authentication information\n * used to create authorization state has expired.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n * @example sdkSession.reauthorize().then() => {\n * console.log('success');\n * });\n *\n */\n async reauthorize() {\n\n const { dustEnabled, deviceManager, tokenManager, logger, accountManager } = this;\n\n logger.info(SdkSession.name, 'Reauthorize the current access.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: SdkSession.name,\n urn: SdkSessionDustUrnReference.reauthorize\n });\n\n // check if an access context was stored in the previous session\n if (Check.assigned(tokenManager.getAccessToken())) {\n\n try {\n\n await tokenManager.refreshAccessToken(true);\n\n const storage = tokenManager.storage;\n const isLegacyToken = storage.isLegacyToken;\n const access = storage.access;\n\n if (isLegacyToken && Check.emptyArray(access.contextState.modes)) {\n\n try {\n\n // will fail if the token you are using is not associated with an account\n await accountManager.getAccount();\n\n // only give the user bamIdentity authorization if they make it here\n access.contextState.modes.push('bamIdentity');\n\n await storage.saveAccess(access);\n\n } catch (ex) {\n\n if (dustLogUtility) {\n dustLogUtility.captureErrors(ex);\n }\n\n }\n\n }\n\n } catch (ex) {\n\n if (dustLogUtility) {\n dustLogUtility.captureErrors(ex);\n }\n\n throw ex;\n\n } finally {\n\n if (dustLogUtility) {\n dustLogUtility.log();\n }\n\n }\n\n } else {\n\n try {\n\n // no token, get or create device registration\n const deviceGrant = await deviceManager.getDeviceGrant();\n\n await tokenManager.exchangeGrant(deviceGrant, new AccessContextState());\n\n } catch (ex) {\n\n if (dustLogUtility) {\n dustLogUtility.captureErrors(ex);\n }\n\n throw ex;\n\n } finally {\n\n if (dustLogUtility) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @desc Returns a token appropriate for sharing with external services.\n * @note Returns the current access token. If the access token needs to be refreshed,\n * perform refresh before fulfilling the promise. Applications should not count on\n * this being a raw access token. The contract does not guarantee an access token.\n * Warning: Applications should not store this token, since the token\n * lifecycle is managed by the SDK. Call this method immediately before use.\n * Applications should not assume any use cases with this token,\n * or try to use it to hit BAM services directly.\n * @throws {AuthenticationExpiredException} Could not reauthorize because authentication information\n * used to create authorization state has expired.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n * @example sdkSession.getSessionToken().then((sessionToken) => {\n * console.log(sessionToken);\n * });\n *\n */\n async getSessionToken() {\n\n const { dustEnabled, accessTokenProvider, logger } = this;\n\n logger.info(SdkSession.name, 'Get current access token.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: SdkSession.name,\n urn: SdkSessionDustUrnReference.reauthorize\n });\n\n const accessToken = accessTokenProvider.getAccessToken();\n const token = Util.getSafe(() => accessToken.token);\n\n if (dustLogUtility) {\n dustLogUtility.log();\n }\n\n return Promise.resolve(token);\n\n }\n\n /**\n *\n * @access public\n * @desc Gets the access state of the user in a format that\n * can be used to rebuild the state in an external system.\n * @note Contains version information as well as access state data;\n * including the token, refreshToken, and access context state.\n * @returns {Promise}\n *\n * @example sdkSession.getAccessState().then((accessState) => {\n * console.log(accessState); // serialized AccessState\n * });\n *\n */\n async getAccessState() {\n\n const { dustEnabled, tokenManager, logger } = this;\n\n logger.info(SdkSession.name, 'Get access state.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: SdkSession.name,\n urn: SdkSessionDustUrnReference.reauthorize\n });\n\n const accessState = JSON.stringify(tokenManager.getAccessState());\n\n if (dustLogUtility) {\n dustLogUtility.log();\n }\n\n return Promise.resolve(accessState);\n\n }\n\n /**\n *\n * @access public\n * @param {String} accessState - The serialized state retrieved from another\n * device via SdkSession#getAccessState\n * @desc Initializes the SDK and restores the state retrieved from another device.\n * @note If the operation fails, it can be retried or call SdkSession#reset to\n * reset the state and start in an anonymous state.\n * @throws {AuthenticationExpiredException} Could not reauthorize because authentication information\n * used to create authorization state has expired.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n * @example sdkSession.restoreAccessState(accessState).then() => {\n * console.log(sdkSession.isInitialized); // true\n * });\n *\n */\n async restoreAccessState(accessState) {\n\n const { dustEnabled, logger } = this;\n\n const errorMessage = {\n method: 'SdkSession.restoreAccessState(accessState)',\n get accessState() {\n return `${this.method} accessState should be a String with length`;\n }\n };\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: SdkSession.name,\n urn: SdkSessionDustUrnReference.restoreAccessState\n });\n\n nonEmptyString(accessState, errorMessage.accessState, InvalidArgumentException);\n\n const { tokenManager } = this;\n\n logger.info(SdkSession.name, 'Restore access state from another device or SDK instance.');\n\n if (this.isInitialized) {\n\n logger.warn(SdkSession.name, 'Already initialized.');\n\n const reasons = [new ErrorReason('', `${SdkSession.name} already initialized.`)];\n const exceptionData = ExceptionReference.common.invalidState;\n\n const exception = new ServiceException({ reasons, exceptionData });\n\n if (dustLogUtility) {\n\n dustLogUtility.captureErrors(exception);\n dustLogUtility.log();\n\n }\n\n throw exception;\n\n }\n\n try {\n\n await tokenManager.restoreAccessState(accessState);\n\n this.isInitialized = true;\n\n this.enableDustSink();\n\n } catch (ex) {\n\n if (dustLogUtility) {\n dustLogUtility.captureErrors(ex);\n }\n\n } finally {\n\n if (dustLogUtility) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @since 3.5.0\n * @param {String} grant\n * @param {String} provider - An unique key representing the authorization type\n * @desc Authorizes the session with an external account that was authenticated and created by an external provider.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n */\n authorize(grant, provider) {\n\n const errorMessage = {\n method: 'SdkSession.authorize(grant, provider)',\n get grant() {\n return `${this.method} grant should be a String with length`;\n },\n get provider() {\n return `${this.method} provider should be a String with length`;\n }\n };\n\n nonEmptyString(grant, errorMessage.grant, InvalidArgumentException);\n nonEmptyString(provider, errorMessage.providerError, InvalidArgumentException);\n\n const { tokenManager } = this;\n\n const accessContextState = new AccessContextState([provider]);\n const accountGrant = new AccountGrant({ assertion: grant });\n\n return tokenManager.exchangeGrant(accountGrant, accessContextState);\n\n }\n\n /**\n *\n * @access public\n * @param {String} provider - An unique key representing the authorization type (i.e. 'espn').\n * @desc Tests whether the SDK is currently in an \"authorized\" state for the given authorization type.\n * @returns {Promise} A boolean indicating whether or not the SDK is\n * currently authorized for the given type of authorization.\n *\n * @example sdkSession.isAuthorized('espn').then((isAuthorized) => {\n * console.log(isAuthorized); // true or false\n * });\n *\n */\n async isAuthorized(provider) {\n\n const errorMessage = {\n method: 'SdkSession.isAuthorized(provider)',\n get provider() {\n return `${this.method} provider should be a String with length`;\n }\n };\n\n nonEmptyString(provider, errorMessage.provider, InvalidArgumentException);\n\n const { tokenManager, logger } = this;\n\n logger.info(SdkSession.name, `Check authorization state for \"${provider}\"`);\n\n return await tokenManager.hasAccessMode(provider);\n\n }\n\n /**\n *\n * @access public\n * @since 3.1.0\n * @desc Gets information about the current session.\n * @throws {AuthenticationExpiredException} Could not reauthorize because authentication information\n * used to create authorization state has expired.\n * @note Request to exchange token returns HTTP 400 with error: invalid_grant and error_description: expired-token.\n * @throws {LocationNotAllowedException} User is not allowed to use the app in their current location.\n * Some products prohibit the use of the app in certain locations.\n * @note Request to exchange token returns HTTP 400 with error: unauthorized_client and\n * error_description: unknown-location, unreliable-location, or forbidden-location.\n * @throws {LocationAcquisitionException} Unable to get user location due to location service being disabled.\n * @note Only applicable on certain platforms.\n * @note GeoProvider throws exception while trying to acquire location.\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise}\n *\n * @example sdkSession.getSessionInfo().then((sessionInfo) => {\n * console.log(sessionInfo.device);\n * console.log(sessionInfo.location);\n * console.log(sessionInfo.entitlements);\n * });\n *\n */\n async getSessionInfo() {\n\n const { dustEnabled, sessionManager, logger } = this;\n\n logger.info(SdkSession.name, 'Get session information.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: AccountApi.name,\n urn: SdkSessionDustUrnReference.getSessionInfo\n });\n\n try {\n\n return await sessionManager.getInfo();\n\n } catch (ex) {\n\n if (dustLogUtility) {\n dustLogUtility.captureErrors(ex);\n }\n\n throw ex;\n\n } finally {\n\n if (dustLogUtility) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /**\n *\n * @access public\n * @desc Creates a code to show the end user when an error is displayed.\n * @note This code can be used to find a customer's current context (such as\n * device ID).\n * @throws {TemporarilyUnavailableException} Server is too busy and rejected request.\n * @note Any request returns HTTP 5xx.\n * @throws {NetworkException} Internet connection or timeout error.\n * @note Unable to contact service for any reason (no server response received).\n * @throws {ServiceException} An unexpected error has occurred.\n * @note Unexpected response from server. This could be an unexpected HTTP code or invalid or\n * missing response data. Most likely indicates a bug in the services or SDK.\n * @returns {Promise} A Customer Service Support Code.\n *\n */\n async createCustomerSupportCode() {\n\n const { dustEnabled, customerServiceManager, accessTokenProvider, logger } = this;\n\n logger.info(SdkSession.name, 'Get customer service support code.');\n\n const dustLogUtility = dustEnabled && new DustLogUtility({\n logger,\n source: SdkSession.name,\n urn: SdkSessionDustUrnReference.createCustomerSupportCode\n });\n\n const accessToken = accessTokenProvider.getAccessToken();\n\n try {\n\n return await customerServiceManager.createSupportCode(accessToken);\n\n } catch (ex) {\n\n if (dustLogUtility) {\n dustLogUtility.captureErrors(ex);\n }\n\n throw ex;\n\n } finally {\n\n if (dustLogUtility) {\n dustLogUtility.log();\n }\n\n }\n\n }\n\n /* #region private: */\n\n /**\n *\n * @access private\n * @desc sets up Dust logging if it is enabled and empties the sink\n *\n */\n enableDustSink() {\n\n const dustSink = this.logger.sinks.find((sink) => {\n return Check.instanceStrict(sink, DustSink) ? sink : null;\n });\n\n if (dustSink.initialized) {\n\n dustSink.enableDustSink();\n dustSink.emptySink();\n\n }\n\n }\n\n /**\n *\n * @access private\n * @since 2.1.0\n * @desc determines if running in a Node process\n * @returns {Boolean}\n *\n */\n static hasProcess() {\n\n if ((typeof process !== 'undefined') && (process.env !== 'undefined')) {\n return true;\n }\n\n return false;\n\n }\n\n /**\n *\n * @access private\n * @since 2.0.1\n * @see https://webpack.js.org/plugins/define-plugin/#usage\n * @see https://nodejs.org/api/process.html#process_process_env\n * @desc determines if the SDK was loaded with a proper device runtime profile\n * distribution by checking if the expected global directives are populated\n * @returns {Boolean}\n *\n */\n static hasProcessedDirectives() {\n\n if (Check.equal(SdkSession.hasProcess(), false)) {\n return false;\n }\n\n const SDK_VERSION = process.env.SDK_VERSION;\n const SDK_VERSION_SHA = process.env.SDK_VERSION_SHA;\n const device_family = process.env.device_family;\n const device_profile = process.env.device_profile;\n const application_runtime = process.env.application_runtime;\n\n const directives = [\n SDK_VERSION,\n SDK_VERSION_SHA,\n device_family,\n device_profile,\n application_runtime\n ];\n\n return Check.all(Check.apply(directives, Check.nonEmptyString));\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/sdkSession.js","/**\n *\n * @module endpoint\n *\n */\n\nimport Services from './services/entry';\n\n/**\n *\n * @class Endpoint\n * @extends {SDK.Services.ServiceEndpoint}\n *\n */\nexport default class Endpoint extends Services.ServiceEndpoint {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/endpoint.js","/*!\n * Copyright (c) 2017 BAMTech, LLC an MLB Advanced Media company.\n * \n * All use of this software development kit (\"SDK\") is subject to the\n * applicable licensing terms between BAMTech, LLC (\"BAMTech\") and its\n * authorized licensees. Any use in violation of such licensing terms\n * shall result in revocation of access to the SDK in addition to any\n * rights and remedies of BAMTech available pursuant to the applicable SDK\n * license.\n * \n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"bam-browser-sdk\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"bam-browser-sdk\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"bam-browser-sdk-sdkSession-util\"] = factory(require(\"bam-browser-sdk\"));\n\telse\n\t\troot[\"bam-browser-sdk-sdkSession-util\"] = factory(root[\"bam-browser-sdk\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /**\n\t *\n\t * @module entry\n\t * @description\n\t *\n\t */\n\t\n\tvar _checkTypes = __webpack_require__(3);\n\t\n\tvar _checkTypes2 = _interopRequireDefault(_checkTypes);\n\t\n\tvar _bamBrowserSdk = __webpack_require__(1);\n\t\n\tvar _bamBrowserSdk2 = _interopRequireDefault(_bamBrowserSdk);\n\t\n\tvar _events = __webpack_require__(4);\n\t\n\tvar _geoProviderMock = __webpack_require__(2);\n\t\n\tvar _geoProviderMock2 = _interopRequireDefault(_geoProviderMock);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar SdkSession = _bamBrowserSdk2.default.SdkSession;\n\tvar BootstrapConfiguration = _bamBrowserSdk2.default.Services.Configuration.BootstrapConfiguration;\n\t\n\t/**\n\t *\n\t * @access private\n\t * @type {EventEmitter}\n\t *\n\t */\n\tvar eventEmitter = new _events.EventEmitter();\n\t\n\t/**\n\t *\n\t * @access private\n\t * @type {SDK.Services.Configuration.BootstrapConfiguration}\n\t *\n\t */\n\tvar bootstrapConfiguration = void 0;\n\t\n\t/**\n\t *\n\t * @access private\n\t * @type {Promise}\n\t *\n\t */\n\tvar sdkSessionPromise = void 0;\n\t\n\t/**\n\t *\n\t * @access private\n\t * @type {SDK.Token.GeoProvider}\n\t *\n\t */\n\tvar geoProvider = void 0;\n\t\n\t/**\n\t *\n\t * @class SdkSessionUtil\n\t * @description Singleton model to get a shared instance of a SDK.SdkSession\n\t *\n\t */\n\t\n\tvar SdkSessionUtil = function () {\n\t function SdkSessionUtil() {\n\t _classCallCheck(this, SdkSessionUtil);\n\t }\n\t\n\t _createClass(SdkSessionUtil, null, [{\n\t key: 'setBootstrapConfiguration',\n\t\n\t\n\t /**\n\t *\n\t * @access public\n\t * SdkSessionUtil.getSdkSession()\n\t * @param {Object} config\n\t * @desc Set up the bootstrap configuration for the SDK. Must be called before\n\t *\n\t */\n\t value: function setBootstrapConfiguration(config) {\n\t var mockGeoLocation = config.mockGeoLocation;\n\t\n\t\n\t if (mockGeoLocation) {\n\t var latitude = mockGeoLocation.latitude,\n\t longitude = mockGeoLocation.longitude;\n\t\n\t\n\t geoProvider = new _geoProviderMock2.default(latitude, longitude);\n\t }\n\t\n\t /** Set up bootstrap configuration */\n\t bootstrapConfiguration = new BootstrapConfiguration(config);\n\t }\n\t\n\t /**\n\t *\n\t * @access public\n\t * @returns {Promise}\n\t *\n\t */\n\t\n\t }, {\n\t key: 'getSdkSession',\n\t value: function getSdkSession() {\n\t\n\t /** Resolve the previously created sdkSession, if exists */\n\t if (_checkTypes2.default.assigned(sdkSessionPromise)) {\n\t\n\t return sdkSessionPromise;\n\t }\n\t\n\t var method = 'SdkSessionUtil.getSdkSession()';\n\t var bootstrapConfigurationError = method + ' needs BootstrapConfiguration instance.\\n Call SdkSessionUtil.setBootstrapConfiguration(config) first.';\n\t\n\t _checkTypes2.default.assert.instanceStrict(bootstrapConfiguration, BootstrapConfiguration, bootstrapConfigurationError);\n\t\n\t var sdkSession = void 0;\n\t\n\t /** Create a SDK.SdkSession and initialize it */\n\t sdkSessionPromise = SdkSession.createSdkSession(bootstrapConfiguration, geoProvider).then(function (session) {\n\t\n\t sdkSession = session;\n\t\n\t return sdkSession.initialize().catch(function () {\n\t\n\t return sdkSession.reset().then(function () {\n\t\n\t eventEmitter.emit('SdkSessionResetOnError');\n\t\n\t return Promise.resolve();\n\t });\n\t });\n\t }).then(function () {\n\t\n\t return Promise.resolve(sdkSession);\n\t });\n\t\n\t return sdkSessionPromise;\n\t }\n\t\n\t /**\n\t *\n\t * @access public\n\t * @param {String} event\n\t * @param {Function} handler\n\t *\n\t */\n\t\n\t }, {\n\t key: 'on',\n\t value: function on(event, handler) {\n\t\n\t eventEmitter.on(event, handler);\n\t }\n\t\n\t /**\n\t *\n\t * @access public\n\t * @param {String} [event]\n\t * @param {Function} [handler]\n\t * @desc If called with no parameters, it will remove all listeners. Passing only event, it will remove\n\t * all listeners for that event.\n\t *\n\t */\n\t\n\t }, {\n\t key: 'off',\n\t value: function off(event, handler) {\n\t\n\t if (_checkTypes2.default.not.assigned(handler)) {\n\t eventEmitter.removeAllListeners(event);\n\t }\n\t\n\t eventEmitter.removeListener(event, handler);\n\t }\n\t }]);\n\t\n\t return SdkSessionUtil;\n\t}();\n\t\n\t/** Unique key for referencing the SdkSessionUtil in the global scope */\n\t\n\t\n\tvar SDK_SESSION_UTIL_KEY = Symbol.for('BAM.SDK.SdkSessionUtil');\n\t\n\t/** npm:window-or-global */\n\tvar scope = (typeof self === 'undefined' ? 'undefined' : _typeof(self)) === 'object' && self.self === self && self || (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' && global.global === global && global || window;\n\t\n\t/** Get the scope's symbols */\n\tvar scopeSymbols = Object.getOwnPropertySymbols(scope);\n\t\n\t/** Check the scope for existing symbol */\n\tif (scopeSymbols.indexOf(SDK_SESSION_UTIL_KEY) === -1) {\n\t\n\t scope[SDK_SESSION_UTIL_KEY] = SdkSessionUtil;\n\t}\n\t\n\t/** Singleton API */\n\t\n\tvar API = function () {\n\t function API() {\n\t _classCallCheck(this, API);\n\t }\n\t\n\t _createClass(API, null, [{\n\t key: 'instance',\n\t\n\t\n\t /**\n\t *\n\t * @returns {SdkSessionUtil}\n\t *\n\t */\n\t get: function get() {\n\t\n\t return scope[SDK_SESSION_UTIL_KEY];\n\t }\n\t }]);\n\t\n\t return API;\n\t}();\n\t\n\t/** Lock the API */\n\t\n\t\n\tObject.freeze(API);\n\t\n\t/** Export the singleton */\n\texports.default = API.instance;\n\tmodule.exports = exports['default'];\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _bamBrowserSdk = __webpack_require__(1);\n\t\n\tvar _bamBrowserSdk2 = _interopRequireDefault(_bamBrowserSdk);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t/**\n\t *\n\t * @class GeoProviderMock\n\t * @description A mock GeoProvider to pass to SDK.SdkSession.createSdkSession\n\t * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/services/GeoProvider.md\n\t * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/usage/Examples.md#create-sdksession\n\t * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/features/sdkSession.md#createsdksession\n\t *\n\t */\n\tvar GeoProviderMock = function (_SDK$Token$GeoProvide) {\n\t _inherits(GeoProviderMock, _SDK$Token$GeoProvide);\n\t\n\t /**\n\t *\n\t * @param {Number} [latitude=0]\n\t * @param {Number} [longitude=0]\n\t *\n\t */\n\t function GeoProviderMock() {\n\t var latitude = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var longitude = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t _classCallCheck(this, GeoProviderMock);\n\t\n\t /**\n\t *\n\t * @access public\n\t * @type {Number}\n\t * @desc The latitude of the location.\n\t *\n\t */\n\t var _this = _possibleConstructorReturn(this, (GeoProviderMock.__proto__ || Object.getPrototypeOf(GeoProviderMock)).call(this));\n\t\n\t _this.latitude = latitude;\n\t\n\t /**\n\t *\n\t * @access public\n\t * @type {Number}\n\t * @desc The longitude of the location.\n\t *\n\t */\n\t _this.longitude = longitude;\n\t\n\t return _this;\n\t }\n\t\n\t /**\n\t *\n\t * @access public\n\t * @desc Retrieves the current GeoLocation of the device.\n\t * @returns {Promise}\n\t *\n\t */\n\t\n\t\n\t _createClass(GeoProviderMock, [{\n\t key: 'getGeoLocation',\n\t value: function getGeoLocation() {\n\t var latitude = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.latitude;\n\t var longitude = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.longitude;\n\t\n\t\n\t return Promise.resolve({\n\t latitude: latitude,\n\t longitude: longitude\n\t });\n\t }\n\t }]);\n\t\n\t return GeoProviderMock;\n\t}(_bamBrowserSdk2.default.Token.GeoProvider);\n\t\n\texports.default = GeoProviderMock;\n\tmodule.exports = exports['default'];\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/*globals define, module, Symbol */\n\t/*jshint -W056 */\n\t\n\t(function (globals) {\n\t 'use strict';\n\t\n\t var strings, messages, predicates, functions, assert, not, maybe,\n\t collections, slice, neginf, posinf, isArray, haveSymbols;\n\t\n\t strings = {\n\t v: 'value',\n\t n: 'number',\n\t s: 'string',\n\t b: 'boolean',\n\t o: 'object',\n\t t: 'type',\n\t a: 'array',\n\t al: 'array-like',\n\t i: 'iterable',\n\t d: 'date',\n\t f: 'function',\n\t l: 'length'\n\t };\n\t\n\t messages = {};\n\t predicates = {};\n\t\n\t [\n\t { n: 'equal', f: equal, s: 'v' },\n\t { n: 'undefined', f: isUndefined, s: 'v' },\n\t { n: 'null', f: isNull, s: 'v' },\n\t { n: 'assigned', f: assigned, s: 'v' },\n\t { n: 'primitive', f: primitive, s: 'v' },\n\t { n: 'includes', f: includes, s: 'v' },\n\t { n: 'zero', f: zero },\n\t { n: 'infinity', f: infinity },\n\t { n: 'number', f: number },\n\t { n: 'integer', f: integer },\n\t { n: 'even', f: even },\n\t { n: 'odd', f: odd },\n\t { n: 'greater', f: greater },\n\t { n: 'less', f: less },\n\t { n: 'between', f: between },\n\t { n: 'greaterOrEqual', f: greaterOrEqual },\n\t { n: 'lessOrEqual', f: lessOrEqual },\n\t { n: 'inRange', f: inRange },\n\t { n: 'positive', f: positive },\n\t { n: 'negative', f: negative },\n\t { n: 'string', f: string, s: 's' },\n\t { n: 'emptyString', f: emptyString, s: 's' },\n\t { n: 'nonEmptyString', f: nonEmptyString, s: 's' },\n\t { n: 'contains', f: contains, s: 's' },\n\t { n: 'match', f: match, s: 's' },\n\t { n: 'boolean', f: boolean, s: 'b' },\n\t { n: 'object', f: object, s: 'o' },\n\t { n: 'emptyObject', f: emptyObject, s: 'o' },\n\t { n: 'nonEmptyObject', f: nonEmptyObject, s: 'o' },\n\t { n: 'instanceStrict', f: instanceStrict, s: 't' },\n\t { n: 'instance', f: instance, s: 't' },\n\t { n: 'like', f: like, s: 't' },\n\t { n: 'array', f: array, s: 'a' },\n\t { n: 'emptyArray', f: emptyArray, s: 'a' },\n\t { n: 'nonEmptyArray', f: nonEmptyArray, s: 'a' },\n\t { n: 'arrayLike', f: arrayLike, s: 'al' },\n\t { n: 'iterable', f: iterable, s: 'i' },\n\t { n: 'date', f: date, s: 'd' },\n\t { n: 'function', f: isFunction, s: 'f' },\n\t { n: 'hasLength', f: hasLength, s: 'l' },\n\t ].map(function (data) {\n\t var n = data.n;\n\t messages[n] = 'Invalid ' + strings[data.s || 'n'];\n\t predicates[n] = data.f;\n\t });\n\t\n\t functions = {\n\t apply: apply,\n\t map: map,\n\t all: all,\n\t any: any\n\t };\n\t\n\t collections = [ 'array', 'arrayLike', 'iterable', 'object' ];\n\t slice = Array.prototype.slice;\n\t neginf = Number.NEGATIVE_INFINITY;\n\t posinf = Number.POSITIVE_INFINITY;\n\t isArray = Array.isArray;\n\t haveSymbols = typeof Symbol === 'function';\n\t\n\t functions = mixin(functions, predicates);\n\t assert = createModifiedPredicates(assertModifier, assertImpl);\n\t not = createModifiedPredicates(notModifier, notImpl);\n\t maybe = createModifiedPredicates(maybeModifier, maybeImpl);\n\t assert.not = createModifiedModifier(assertModifier, not);\n\t assert.maybe = createModifiedModifier(assertModifier, maybe);\n\t\n\t collections.forEach(createOfPredicates);\n\t createOfModifiers(assert, assertModifier);\n\t createOfModifiers(not, notModifier);\n\t collections.forEach(createMaybeOfModifiers);\n\t\n\t exportFunctions(mixin(functions, {\n\t assert: assert,\n\t not: not,\n\t maybe: maybe\n\t }));\n\t\n\t /**\n\t * Public function `equal`.\n\t *\n\t * Returns true if `lhs` and `rhs` are strictly equal, without coercion.\n\t * Returns false otherwise.\n\t */\n\t function equal (lhs, rhs) {\n\t return lhs === rhs;\n\t }\n\t\n\t /**\n\t * Public function `undefined`.\n\t *\n\t * Returns true if `data` is undefined, false otherwise.\n\t */\n\t function isUndefined (data) {\n\t return data === undefined;\n\t }\n\t\n\t /**\n\t * Public function `null`.\n\t *\n\t * Returns true if `data` is null, false otherwise.\n\t */\n\t function isNull (data) {\n\t return data === null;\n\t }\n\t\n\t /**\n\t * Public function `assigned`.\n\t *\n\t * Returns true if `data` is not null or undefined, false otherwise.\n\t */\n\t function assigned (data) {\n\t return data !== undefined && data !== null;\n\t }\n\t\n\t /**\n\t * Public function `primitive`.\n\t *\n\t * Returns true if `data` is a primitive type, false otherwise.\n\t */\n\t function primitive (data) {\n\t var type;\n\t\n\t switch (data) {\n\t case null:\n\t case undefined:\n\t case false:\n\t case true:\n\t return true;\n\t }\n\t\n\t type = typeof data;\n\t return type === 'string' || type === 'number' || (haveSymbols && type === 'symbol');\n\t }\n\t\n\t /**\n\t * Public function `zero`.\n\t *\n\t * Returns true if `data` is zero, false otherwise.\n\t */\n\t function zero (data) {\n\t return data === 0;\n\t }\n\t\n\t /**\n\t * Public function `infinity`.\n\t *\n\t * Returns true if `data` is positive or negative infinity, false otherwise.\n\t */\n\t function infinity (data) {\n\t return data === neginf || data === posinf;\n\t }\n\t\n\t /**\n\t * Public function `number`.\n\t *\n\t * Returns true if `data` is a number, false otherwise.\n\t */\n\t function number (data) {\n\t return typeof data === 'number' && data > neginf && data < posinf;\n\t }\n\t\n\t /**\n\t * Public function `integer`.\n\t *\n\t * Returns true if `data` is an integer, false otherwise.\n\t */\n\t function integer (data) {\n\t return typeof data === 'number' && data % 1 === 0;\n\t }\n\t\n\t /**\n\t * Public function `even`.\n\t *\n\t * Returns true if `data` is an even number, false otherwise.\n\t */\n\t function even (data) {\n\t return typeof data === 'number' && data % 2 === 0;\n\t }\n\t\n\t /**\n\t * Public function `odd`.\n\t *\n\t * Returns true if `data` is an odd number, false otherwise.\n\t */\n\t function odd (data) {\n\t return integer(data) && data % 2 !== 0;\n\t }\n\t\n\t /**\n\t * Public function `greater`.\n\t *\n\t * Returns true if `lhs` is a number greater than `rhs`, false otherwise.\n\t */\n\t function greater (lhs, rhs) {\n\t return number(lhs) && lhs > rhs;\n\t }\n\t\n\t /**\n\t * Public function `less`.\n\t *\n\t * Returns true if `lhs` is a number less than `rhs`, false otherwise.\n\t */\n\t function less (lhs, rhs) {\n\t return number(lhs) && lhs < rhs;\n\t }\n\t\n\t /**\n\t * Public function `between`.\n\t *\n\t * Returns true if `data` is a number between `x` and `y`, false otherwise.\n\t */\n\t function between (data, x, y) {\n\t if (x < y) {\n\t return greater(data, x) && data < y;\n\t }\n\t\n\t return less(data, x) && data > y;\n\t }\n\t\n\t /**\n\t * Public function `greaterOrEqual`.\n\t *\n\t * Returns true if `lhs` is a number greater than or equal to `rhs`, false\n\t * otherwise.\n\t */\n\t function greaterOrEqual (lhs, rhs) {\n\t return number(lhs) && lhs >= rhs;\n\t }\n\t\n\t /**\n\t * Public function `lessOrEqual`.\n\t *\n\t * Returns true if `lhs` is a number less than or equal to `rhs`, false\n\t * otherwise.\n\t */\n\t function lessOrEqual (lhs, rhs) {\n\t return number(lhs) && lhs <= rhs;\n\t }\n\t\n\t /**\n\t * Public function `inRange`.\n\t *\n\t * Returns true if `data` is a number in the range `x..y`, false otherwise.\n\t */\n\t function inRange (data, x, y) {\n\t if (x < y) {\n\t return greaterOrEqual(data, x) && data <= y;\n\t }\n\t\n\t return lessOrEqual(data, x) && data >= y;\n\t }\n\t\n\t /**\n\t * Public function `positive`.\n\t *\n\t * Returns true if `data` is a positive number, false otherwise.\n\t */\n\t function positive (data) {\n\t return greater(data, 0);\n\t }\n\t\n\t /**\n\t * Public function `negative`.\n\t *\n\t * Returns true if `data` is a negative number, false otherwise.\n\t */\n\t function negative (data) {\n\t return less(data, 0);\n\t }\n\t\n\t /**\n\t * Public function `string`.\n\t *\n\t * Returns true if `data` is a string, false otherwise.\n\t */\n\t function string (data) {\n\t return typeof data === 'string';\n\t }\n\t\n\t /**\n\t * Public function `emptyString`.\n\t *\n\t * Returns true if `data` is the empty string, false otherwise.\n\t */\n\t function emptyString (data) {\n\t return data === '';\n\t }\n\t\n\t /**\n\t * Public function `nonEmptyString`.\n\t *\n\t * Returns true if `data` is a non-empty string, false otherwise.\n\t */\n\t function nonEmptyString (data) {\n\t return string(data) && data !== '';\n\t }\n\t\n\t /**\n\t * Public function `contains`.\n\t *\n\t * Returns true if `data` is a string that contains `substring`, false\n\t * otherwise.\n\t */\n\t function contains (data, substring) {\n\t return string(data) && data.indexOf(substring) !== -1;\n\t }\n\t\n\t /**\n\t * Public function `match`.\n\t *\n\t * Returns true if `data` is a string that matches `regex`, false otherwise.\n\t */\n\t function match (data, regex) {\n\t return string(data) && !! data.match(regex);\n\t }\n\t\n\t /**\n\t * Public function `boolean`.\n\t *\n\t * Returns true if `data` is a boolean value, false otherwise.\n\t */\n\t function boolean (data) {\n\t return data === false || data === true;\n\t }\n\t\n\t /**\n\t * Public function `object`.\n\t *\n\t * Returns true if `data` is a plain-old JS object, false otherwise.\n\t */\n\t function object (data) {\n\t return Object.prototype.toString.call(data) === '[object Object]';\n\t }\n\t\n\t /**\n\t * Public function `emptyObject`.\n\t *\n\t * Returns true if `data` is an empty object, false otherwise.\n\t */\n\t function emptyObject (data) {\n\t return object(data) && Object.keys(data).length === 0;\n\t }\n\t\n\t /**\n\t * Public function `nonEmptyObject`.\n\t *\n\t * Returns true if `data` is a non-empty object, false otherwise.\n\t */\n\t function nonEmptyObject (data) {\n\t return object(data) && Object.keys(data).length > 0;\n\t }\n\t\n\t /**\n\t * Public function `instanceStrict`.\n\t *\n\t * Returns true if `data` is an instance of `prototype`, false otherwise.\n\t */\n\t function instanceStrict (data, prototype) {\n\t try {\n\t return data instanceof prototype;\n\t } catch (error) {\n\t return false;\n\t }\n\t }\n\t\n\t /**\n\t * Public function `instance`.\n\t *\n\t * Returns true if `data` is an instance of `prototype`, false otherwise.\n\t * Falls back to testing constructor.name and Object.prototype.toString\n\t * if the initial instanceof test fails.\n\t */\n\t function instance (data, prototype) {\n\t try {\n\t return instanceStrict(data, prototype) ||\n\t data.constructor.name === prototype.name ||\n\t Object.prototype.toString.call(data) === '[object ' + prototype.name + ']';\n\t } catch (error) {\n\t return false;\n\t }\n\t }\n\t\n\t /**\n\t * Public function `like`.\n\t *\n\t * Tests whether `data` 'quacks like a duck'. Returns true if `data` has all\n\t * of the properties of `archetype` (the 'duck'), false otherwise.\n\t */\n\t function like (data, archetype) {\n\t var name;\n\t\n\t for (name in archetype) {\n\t if (archetype.hasOwnProperty(name)) {\n\t if (data.hasOwnProperty(name) === false || typeof data[name] !== typeof archetype[name]) {\n\t return false;\n\t }\n\t\n\t if (object(data[name]) && like(data[name], archetype[name]) === false) {\n\t return false;\n\t }\n\t }\n\t }\n\t\n\t return true;\n\t }\n\t\n\t /**\n\t * Public function `array`.\n\t *\n\t * Returns true if `data` is an array, false otherwise.\n\t */\n\t function array (data) {\n\t return isArray(data);\n\t }\n\t\n\t /**\n\t * Public function `emptyArray`.\n\t *\n\t * Returns true if `data` is an empty array, false otherwise.\n\t */\n\t function emptyArray (data) {\n\t return array(data) && data.length === 0;\n\t }\n\t\n\t /**\n\t * Public function `nonEmptyArray`.\n\t *\n\t * Returns true if `data` is a non-empty array, false otherwise.\n\t */\n\t function nonEmptyArray (data) {\n\t return array(data) && greater(data.length, 0);\n\t }\n\t\n\t /**\n\t * Public function `arrayLike`.\n\t *\n\t * Returns true if `data` is an array-like object, false otherwise.\n\t */\n\t function arrayLike (data) {\n\t return assigned(data) && greaterOrEqual(data.length, 0);\n\t }\n\t\n\t /**\n\t * Public function `iterable`.\n\t *\n\t * Returns true if `data` is an iterable, false otherwise.\n\t */\n\t function iterable (data) {\n\t if (! haveSymbols) {\n\t // Fall back to `arrayLike` predicate in pre-ES6 environments.\n\t return arrayLike(data);\n\t }\n\t\n\t return assigned(data) && isFunction(data[Symbol.iterator]);\n\t }\n\t\n\t /**\n\t * Public function `includes`.\n\t *\n\t * Returns true if `data` contains `value`, false otherwise.\n\t */\n\t function includes (data, value) {\n\t var iterator, iteration, keys, length, i;\n\t\n\t if (! assigned(data)) {\n\t return false;\n\t }\n\t\n\t if (haveSymbols && data[Symbol.iterator] && isFunction(data.values)) {\n\t iterator = data.values();\n\t\n\t do {\n\t iteration = iterator.next();\n\t\n\t if (iteration.value === value) {\n\t return true;\n\t }\n\t } while (! iteration.done);\n\t\n\t return false;\n\t }\n\t\n\t keys = Object.keys(data);\n\t length = keys.length;\n\t for (i = 0; i < length; ++i) {\n\t if (data[keys[i]] === value) {\n\t return true;\n\t }\n\t }\n\t\n\t return false;\n\t }\n\t\n\t /**\n\t * Public function `hasLength`.\n\t *\n\t * Returns true if `data` has a length property that equals `length`, false\n\t * otherwise.\n\t */\n\t function hasLength (data, length) {\n\t return assigned(data) && data.length === length;\n\t }\n\t\n\t /**\n\t * Public function `date`.\n\t *\n\t * Returns true if `data` is a valid date, false otherwise.\n\t */\n\t function date (data) {\n\t return instanceStrict(data, Date) && integer(data.getTime());\n\t }\n\t\n\t /**\n\t * Public function `function`.\n\t *\n\t * Returns true if `data` is a function, false otherwise.\n\t */\n\t function isFunction (data) {\n\t return typeof data === 'function';\n\t }\n\t\n\t /**\n\t * Public function `apply`.\n\t *\n\t * Maps each value from the `data` to the corresponding predicate and returns\n\t * the result array. If the same function is to be applied across all of the\n\t * data, a single predicate function may be passed in.\n\t *\n\t */\n\t function apply (data, predicates) {\n\t assert.array(data);\n\t\n\t if (isFunction(predicates)) {\n\t return data.map(function (value) {\n\t return predicates(value);\n\t });\n\t }\n\t\n\t assert.array(predicates);\n\t assert.hasLength(data, predicates.length);\n\t\n\t return data.map(function (value, index) {\n\t return predicates[index](value);\n\t });\n\t }\n\t\n\t /**\n\t * Public function `map`.\n\t *\n\t * Maps each value from the `data` to the corresponding predicate and returns\n\t * the result object. Supports nested objects. If the `data` is not nested and\n\t * the same function is to be applied across all of it, a single predicate\n\t * function may be passed in.\n\t *\n\t */\n\t function map (data, predicates) {\n\t assert.object(data);\n\t\n\t if (isFunction(predicates)) {\n\t return mapSimple(data, predicates);\n\t }\n\t\n\t assert.object(predicates);\n\t\n\t return mapComplex(data, predicates);\n\t }\n\t\n\t function mapSimple (data, predicate) {\n\t var result = {};\n\t\n\t Object.keys(data).forEach(function (key) {\n\t result[key] = predicate(data[key]);\n\t });\n\t\n\t return result;\n\t }\n\t\n\t function mapComplex (data, predicates) {\n\t var result = {};\n\t\n\t Object.keys(predicates).forEach(function (key) {\n\t var predicate = predicates[key];\n\t\n\t if (isFunction(predicate)) {\n\t if (not.assigned(data)) {\n\t result[key] = !!predicate.m;\n\t } else {\n\t result[key] = predicate(data[key]);\n\t }\n\t } else if (object(predicate)) {\n\t result[key] = mapComplex(data[key], predicate);\n\t }\n\t });\n\t\n\t return result;\n\t }\n\t\n\t /**\n\t * Public function `all`\n\t *\n\t * Check that all boolean values are true\n\t * in an array (returned from `apply`)\n\t * or object (returned from `map`).\n\t *\n\t */\n\t function all (data) {\n\t if (array(data)) {\n\t return testArray(data, false);\n\t }\n\t\n\t assert.object(data);\n\t\n\t return testObject(data, false);\n\t }\n\t\n\t function testArray (data, result) {\n\t var i;\n\t\n\t for (i = 0; i < data.length; i += 1) {\n\t if (data[i] === result) {\n\t return result;\n\t }\n\t }\n\t\n\t return !result;\n\t }\n\t\n\t function testObject (data, result) {\n\t var key, value;\n\t\n\t for (key in data) {\n\t if (data.hasOwnProperty(key)) {\n\t value = data[key];\n\t\n\t if (object(value) && testObject(value, result) === result) {\n\t return result;\n\t }\n\t\n\t if (value === result) {\n\t return result;\n\t }\n\t }\n\t }\n\t\n\t return !result;\n\t }\n\t\n\t /**\n\t * Public function `any`\n\t *\n\t * Check that at least one boolean value is true\n\t * in an array (returned from `apply`)\n\t * or object (returned from `map`).\n\t *\n\t */\n\t function any (data) {\n\t if (array(data)) {\n\t return testArray(data, true);\n\t }\n\t\n\t assert.object(data);\n\t\n\t return testObject(data, true);\n\t }\n\t\n\t function mixin (target, source) {\n\t Object.keys(source).forEach(function (key) {\n\t target[key] = source[key];\n\t });\n\t\n\t return target;\n\t }\n\t\n\t /**\n\t * Public modifier `assert`.\n\t *\n\t * Throws if `predicate` returns false.\n\t */\n\t function assertModifier (predicate, defaultMessage) {\n\t return function () {\n\t return assertPredicate(predicate, arguments, defaultMessage);\n\t };\n\t }\n\t\n\t function assertPredicate (predicate, args, defaultMessage) {\n\t var argCount = predicate.l || predicate.length;\n\t var message = args[argCount];\n\t var ErrorType = args[argCount + 1];\n\t assertImpl(\n\t predicate.apply(null, args),\n\t nonEmptyString(message) ? message : defaultMessage,\n\t isFunction(ErrorType) ? ErrorType : TypeError\n\t );\n\t return args[0];\n\t }\n\t\n\t function assertImpl (value, message, ErrorType) {\n\t if (value) {\n\t return value;\n\t }\n\t throw new (ErrorType || Error)(message || 'Assertion failed');\n\t }\n\t\n\t /**\n\t * Public modifier `not`.\n\t *\n\t * Negates `predicate`.\n\t */\n\t function notModifier (predicate) {\n\t var modifiedPredicate = function () {\n\t return notImpl(predicate.apply(null, arguments));\n\t };\n\t modifiedPredicate.l = predicate.length;\n\t return modifiedPredicate;\n\t }\n\t\n\t function notImpl (value) {\n\t return !value;\n\t }\n\t\n\t /**\n\t * Public modifier `maybe`.\n\t *\n\t * Returns true if predicate argument is null or undefined,\n\t * otherwise propagates the return value from `predicate`.\n\t */\n\t function maybeModifier (predicate) {\n\t var modifiedPredicate = function () {\n\t if (not.assigned(arguments[0])) {\n\t return true;\n\t }\n\t\n\t return predicate.apply(null, arguments);\n\t };\n\t modifiedPredicate.l = predicate.length;\n\t\n\t // Hackishly indicate that this is a maybe.xxx predicate.\n\t // Without this flag, the alternative would be to iterate\n\t // through the maybe predicates or use indexOf to check,\n\t // which would be time-consuming.\n\t modifiedPredicate.m = true;\n\t\n\t return modifiedPredicate;\n\t }\n\t\n\t function maybeImpl (value) {\n\t if (assigned(value) === false) {\n\t return true;\n\t }\n\t\n\t return value;\n\t }\n\t\n\t /**\n\t * Public modifier `of`.\n\t *\n\t * Applies the chained predicate to members of the collection.\n\t */\n\t function ofModifier (target, type, predicate) {\n\t var modifiedPredicate = function () {\n\t var collection, args;\n\t\n\t collection = arguments[0];\n\t\n\t if (target === 'maybe' && not.assigned(collection)) {\n\t return true;\n\t }\n\t\n\t if (!type(collection)) {\n\t return false;\n\t }\n\t\n\t collection = coerceCollection(type, collection);\n\t args = slice.call(arguments, 1);\n\t\n\t try {\n\t collection.forEach(function (item) {\n\t if (\n\t (target !== 'maybe' || assigned(item)) &&\n\t !predicate.apply(null, [ item ].concat(args))\n\t ) {\n\t // TODO: Replace with for...of when ES6 is required.\n\t throw 0;\n\t }\n\t });\n\t } catch (ignore) {\n\t return false;\n\t }\n\t\n\t return true;\n\t };\n\t modifiedPredicate.l = predicate.length;\n\t return modifiedPredicate;\n\t }\n\t\n\t function coerceCollection (type, collection) {\n\t switch (type) {\n\t case arrayLike:\n\t return slice.call(collection);\n\t case object:\n\t return Object.keys(collection).map(function (key) {\n\t return collection[key];\n\t });\n\t default:\n\t return collection;\n\t }\n\t }\n\t\n\t function createModifiedPredicates (modifier, object) {\n\t return createModifiedFunctions([ modifier, predicates, object ]);\n\t }\n\t\n\t function createModifiedFunctions (args) {\n\t var modifier, object, functions, result;\n\t\n\t modifier = args.shift();\n\t object = args.pop();\n\t functions = args.pop();\n\t\n\t result = object || {};\n\t\n\t Object.keys(functions).forEach(function (key) {\n\t Object.defineProperty(result, key, {\n\t configurable: false,\n\t enumerable: true,\n\t writable: false,\n\t value: modifier.apply(null, args.concat(functions[key], messages[key]))\n\t });\n\t });\n\t\n\t return result;\n\t }\n\t\n\t function createModifiedModifier (modifier, modified) {\n\t return createModifiedFunctions([ modifier, modified, null ]);\n\t }\n\t\n\t function createOfPredicates (key) {\n\t predicates[key].of = createModifiedFunctions(\n\t [ ofModifier.bind(null, null), predicates[key], predicates, null ]\n\t );\n\t }\n\t\n\t function createOfModifiers (base, modifier) {\n\t collections.forEach(function (key) {\n\t base[key].of = createModifiedModifier(modifier, predicates[key].of);\n\t });\n\t }\n\t\n\t function createMaybeOfModifiers (key) {\n\t maybe[key].of = createModifiedFunctions(\n\t [ ofModifier.bind(null, 'maybe'), predicates[key], predicates, null ]\n\t );\n\t assert.maybe[key].of = createModifiedModifier(assertModifier, maybe[key].of);\n\t assert.not[key].of = createModifiedModifier(assertModifier, not[key].of);\n\t }\n\t\n\t function exportFunctions (functions) {\n\t if (true) {\n\t !(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t return functions;\n\t }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t } else if (typeof module !== 'undefined' && module !== null && module.exports) {\n\t module.exports = functions;\n\t } else {\n\t globals.check = functions;\n\t }\n\t }\n\t}(this));\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\tfunction EventEmitter() {\n\t this._events = this._events || {};\n\t this._maxListeners = this._maxListeners || undefined;\n\t}\n\tmodule.exports = EventEmitter;\n\t\n\t// Backwards-compat with node 0.10.x\n\tEventEmitter.EventEmitter = EventEmitter;\n\t\n\tEventEmitter.prototype._events = undefined;\n\tEventEmitter.prototype._maxListeners = undefined;\n\t\n\t// By default EventEmitters will print a warning if more than 10 listeners are\n\t// added to it. This is a useful default which helps finding memory leaks.\n\tEventEmitter.defaultMaxListeners = 10;\n\t\n\t// Obviously not all Emitters should be limited to 10. This function allows\n\t// that to be increased. Set to zero for unlimited.\n\tEventEmitter.prototype.setMaxListeners = function(n) {\n\t if (!isNumber(n) || n < 0 || isNaN(n))\n\t throw TypeError('n must be a positive number');\n\t this._maxListeners = n;\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.emit = function(type) {\n\t var er, handler, len, args, i, listeners;\n\t\n\t if (!this._events)\n\t this._events = {};\n\t\n\t // If there is no 'error' event listener then throw.\n\t if (type === 'error') {\n\t if (!this._events.error ||\n\t (isObject(this._events.error) && !this._events.error.length)) {\n\t er = arguments[1];\n\t if (er instanceof Error) {\n\t throw er; // Unhandled 'error' event\n\t } else {\n\t // At least give some kind of context to the user\n\t var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n\t err.context = er;\n\t throw err;\n\t }\n\t }\n\t }\n\t\n\t handler = this._events[type];\n\t\n\t if (isUndefined(handler))\n\t return false;\n\t\n\t if (isFunction(handler)) {\n\t switch (arguments.length) {\n\t // fast cases\n\t case 1:\n\t handler.call(this);\n\t break;\n\t case 2:\n\t handler.call(this, arguments[1]);\n\t break;\n\t case 3:\n\t handler.call(this, arguments[1], arguments[2]);\n\t break;\n\t // slower\n\t default:\n\t args = Array.prototype.slice.call(arguments, 1);\n\t handler.apply(this, args);\n\t }\n\t } else if (isObject(handler)) {\n\t args = Array.prototype.slice.call(arguments, 1);\n\t listeners = handler.slice();\n\t len = listeners.length;\n\t for (i = 0; i < len; i++)\n\t listeners[i].apply(this, args);\n\t }\n\t\n\t return true;\n\t};\n\t\n\tEventEmitter.prototype.addListener = function(type, listener) {\n\t var m;\n\t\n\t if (!isFunction(listener))\n\t throw TypeError('listener must be a function');\n\t\n\t if (!this._events)\n\t this._events = {};\n\t\n\t // To avoid recursion in the case that type === \"newListener\"! Before\n\t // adding it to the listeners, first emit \"newListener\".\n\t if (this._events.newListener)\n\t this.emit('newListener', type,\n\t isFunction(listener.listener) ?\n\t listener.listener : listener);\n\t\n\t if (!this._events[type])\n\t // Optimize the case of one listener. Don't need the extra array object.\n\t this._events[type] = listener;\n\t else if (isObject(this._events[type]))\n\t // If we've already got an array, just append.\n\t this._events[type].push(listener);\n\t else\n\t // Adding the second element, need to change to array.\n\t this._events[type] = [this._events[type], listener];\n\t\n\t // Check for listener leak\n\t if (isObject(this._events[type]) && !this._events[type].warned) {\n\t if (!isUndefined(this._maxListeners)) {\n\t m = this._maxListeners;\n\t } else {\n\t m = EventEmitter.defaultMaxListeners;\n\t }\n\t\n\t if (m && m > 0 && this._events[type].length > m) {\n\t this._events[type].warned = true;\n\t console.error('(node) warning: possible EventEmitter memory ' +\n\t 'leak detected. %d listeners added. ' +\n\t 'Use emitter.setMaxListeners() to increase limit.',\n\t this._events[type].length);\n\t if (typeof console.trace === 'function') {\n\t // not supported in IE 10\n\t console.trace();\n\t }\n\t }\n\t }\n\t\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\t\n\tEventEmitter.prototype.once = function(type, listener) {\n\t if (!isFunction(listener))\n\t throw TypeError('listener must be a function');\n\t\n\t var fired = false;\n\t\n\t function g() {\n\t this.removeListener(type, g);\n\t\n\t if (!fired) {\n\t fired = true;\n\t listener.apply(this, arguments);\n\t }\n\t }\n\t\n\t g.listener = listener;\n\t this.on(type, g);\n\t\n\t return this;\n\t};\n\t\n\t// emits a 'removeListener' event iff the listener was removed\n\tEventEmitter.prototype.removeListener = function(type, listener) {\n\t var list, position, length, i;\n\t\n\t if (!isFunction(listener))\n\t throw TypeError('listener must be a function');\n\t\n\t if (!this._events || !this._events[type])\n\t return this;\n\t\n\t list = this._events[type];\n\t length = list.length;\n\t position = -1;\n\t\n\t if (list === listener ||\n\t (isFunction(list.listener) && list.listener === listener)) {\n\t delete this._events[type];\n\t if (this._events.removeListener)\n\t this.emit('removeListener', type, listener);\n\t\n\t } else if (isObject(list)) {\n\t for (i = length; i-- > 0;) {\n\t if (list[i] === listener ||\n\t (list[i].listener && list[i].listener === listener)) {\n\t position = i;\n\t break;\n\t }\n\t }\n\t\n\t if (position < 0)\n\t return this;\n\t\n\t if (list.length === 1) {\n\t list.length = 0;\n\t delete this._events[type];\n\t } else {\n\t list.splice(position, 1);\n\t }\n\t\n\t if (this._events.removeListener)\n\t this.emit('removeListener', type, listener);\n\t }\n\t\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.removeAllListeners = function(type) {\n\t var key, listeners;\n\t\n\t if (!this._events)\n\t return this;\n\t\n\t // not listening for removeListener, no need to emit\n\t if (!this._events.removeListener) {\n\t if (arguments.length === 0)\n\t this._events = {};\n\t else if (this._events[type])\n\t delete this._events[type];\n\t return this;\n\t }\n\t\n\t // emit removeListener for all listeners on all events\n\t if (arguments.length === 0) {\n\t for (key in this._events) {\n\t if (key === 'removeListener') continue;\n\t this.removeAllListeners(key);\n\t }\n\t this.removeAllListeners('removeListener');\n\t this._events = {};\n\t return this;\n\t }\n\t\n\t listeners = this._events[type];\n\t\n\t if (isFunction(listeners)) {\n\t this.removeListener(type, listeners);\n\t } else if (listeners) {\n\t // LIFO order\n\t while (listeners.length)\n\t this.removeListener(type, listeners[listeners.length - 1]);\n\t }\n\t delete this._events[type];\n\t\n\t return this;\n\t};\n\t\n\tEventEmitter.prototype.listeners = function(type) {\n\t var ret;\n\t if (!this._events || !this._events[type])\n\t ret = [];\n\t else if (isFunction(this._events[type]))\n\t ret = [this._events[type]];\n\t else\n\t ret = this._events[type].slice();\n\t return ret;\n\t};\n\t\n\tEventEmitter.prototype.listenerCount = function(type) {\n\t if (this._events) {\n\t var evlistener = this._events[type];\n\t\n\t if (isFunction(evlistener))\n\t return 1;\n\t else if (evlistener)\n\t return evlistener.length;\n\t }\n\t return 0;\n\t};\n\t\n\tEventEmitter.listenerCount = function(emitter, type) {\n\t return emitter.listenerCount(type);\n\t};\n\t\n\tfunction isFunction(arg) {\n\t return typeof arg === 'function';\n\t}\n\t\n\tfunction isNumber(arg) {\n\t return typeof arg === 'number';\n\t}\n\t\n\tfunction isObject(arg) {\n\t return typeof arg === 'object' && arg !== null;\n\t}\n\t\n\tfunction isUndefined(arg) {\n\t return arg === void 0;\n\t}\n\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// bam-browser-sdk-sdkSession-util.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 83db718786ee72f675a4","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"amd\":\"bam-browser-sdk\",\"commonjs\":\"bam-browser-sdk\",\"commonjs2\":\"bam-browser-sdk\",\"root\":\"bam-browser-sdk\"}\n// module id = 1\n// module chunks = 0","import SDK from 'bam-browser-sdk';\n\n/**\n *\n * @class GeoProviderMock\n * @description A mock GeoProvider to pass to SDK.SdkSession.createSdkSession\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/services/GeoProvider.md\n * @see https://github.bamtech.co/fed-core/browser-sdk/blob/master/docs/usage/Examples.md#create-sdksession\n * @see https://github.bamtech.co/sdk-doc/spec-sdk/blob/master/specs/features/sdkSession.md#createsdksession\n *\n */\nexport default class GeoProviderMock extends SDK.Token.GeoProvider {\n\n /**\n *\n * @param {Number} [latitude=0]\n * @param {Number} [longitude=0]\n *\n */\n constructor(latitude = 0, longitude = 0) {\n\n super();\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The latitude of the location.\n *\n */\n this.latitude = latitude;\n\n /**\n *\n * @access public\n * @type {Number}\n * @desc The longitude of the location.\n *\n */\n this.longitude = longitude;\n\n }\n\n /**\n *\n * @access public\n * @desc Retrieves the current GeoLocation of the device.\n * @returns {Promise}\n *\n */\n getGeoLocation(latitude = this.latitude, longitude = this.longitude) {\n\n return Promise.resolve({\n latitude,\n longitude\n });\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/geoProviderMock.js","/*globals define, module, Symbol */\n/*jshint -W056 */\n\n(function (globals) {\n 'use strict';\n\n var strings, messages, predicates, functions, assert, not, maybe,\n collections, slice, neginf, posinf, isArray, haveSymbols;\n\n strings = {\n v: 'value',\n n: 'number',\n s: 'string',\n b: 'boolean',\n o: 'object',\n t: 'type',\n a: 'array',\n al: 'array-like',\n i: 'iterable',\n d: 'date',\n f: 'function',\n l: 'length'\n };\n\n messages = {};\n predicates = {};\n\n [\n { n: 'equal', f: equal, s: 'v' },\n { n: 'undefined', f: isUndefined, s: 'v' },\n { n: 'null', f: isNull, s: 'v' },\n { n: 'assigned', f: assigned, s: 'v' },\n { n: 'primitive', f: primitive, s: 'v' },\n { n: 'includes', f: includes, s: 'v' },\n { n: 'zero', f: zero },\n { n: 'infinity', f: infinity },\n { n: 'number', f: number },\n { n: 'integer', f: integer },\n { n: 'even', f: even },\n { n: 'odd', f: odd },\n { n: 'greater', f: greater },\n { n: 'less', f: less },\n { n: 'between', f: between },\n { n: 'greaterOrEqual', f: greaterOrEqual },\n { n: 'lessOrEqual', f: lessOrEqual },\n { n: 'inRange', f: inRange },\n { n: 'positive', f: positive },\n { n: 'negative', f: negative },\n { n: 'string', f: string, s: 's' },\n { n: 'emptyString', f: emptyString, s: 's' },\n { n: 'nonEmptyString', f: nonEmptyString, s: 's' },\n { n: 'contains', f: contains, s: 's' },\n { n: 'match', f: match, s: 's' },\n { n: 'boolean', f: boolean, s: 'b' },\n { n: 'object', f: object, s: 'o' },\n { n: 'emptyObject', f: emptyObject, s: 'o' },\n { n: 'nonEmptyObject', f: nonEmptyObject, s: 'o' },\n { n: 'instanceStrict', f: instanceStrict, s: 't' },\n { n: 'instance', f: instance, s: 't' },\n { n: 'like', f: like, s: 't' },\n { n: 'array', f: array, s: 'a' },\n { n: 'emptyArray', f: emptyArray, s: 'a' },\n { n: 'nonEmptyArray', f: nonEmptyArray, s: 'a' },\n { n: 'arrayLike', f: arrayLike, s: 'al' },\n { n: 'iterable', f: iterable, s: 'i' },\n { n: 'date', f: date, s: 'd' },\n { n: 'function', f: isFunction, s: 'f' },\n { n: 'hasLength', f: hasLength, s: 'l' },\n ].map(function (data) {\n var n = data.n;\n messages[n] = 'Invalid ' + strings[data.s || 'n'];\n predicates[n] = data.f;\n });\n\n functions = {\n apply: apply,\n map: map,\n all: all,\n any: any\n };\n\n collections = [ 'array', 'arrayLike', 'iterable', 'object' ];\n slice = Array.prototype.slice;\n neginf = Number.NEGATIVE_INFINITY;\n posinf = Number.POSITIVE_INFINITY;\n isArray = Array.isArray;\n haveSymbols = typeof Symbol === 'function';\n\n functions = mixin(functions, predicates);\n assert = createModifiedPredicates(assertModifier, assertImpl);\n not = createModifiedPredicates(notModifier, notImpl);\n maybe = createModifiedPredicates(maybeModifier, maybeImpl);\n assert.not = createModifiedModifier(assertModifier, not);\n assert.maybe = createModifiedModifier(assertModifier, maybe);\n\n collections.forEach(createOfPredicates);\n createOfModifiers(assert, assertModifier);\n createOfModifiers(not, notModifier);\n collections.forEach(createMaybeOfModifiers);\n\n exportFunctions(mixin(functions, {\n assert: assert,\n not: not,\n maybe: maybe\n }));\n\n /**\n * Public function `equal`.\n *\n * Returns true if `lhs` and `rhs` are strictly equal, without coercion.\n * Returns false otherwise.\n */\n function equal (lhs, rhs) {\n return lhs === rhs;\n }\n\n /**\n * Public function `undefined`.\n *\n * Returns true if `data` is undefined, false otherwise.\n */\n function isUndefined (data) {\n return data === undefined;\n }\n\n /**\n * Public function `null`.\n *\n * Returns true if `data` is null, false otherwise.\n */\n function isNull (data) {\n return data === null;\n }\n\n /**\n * Public function `assigned`.\n *\n * Returns true if `data` is not null or undefined, false otherwise.\n */\n function assigned (data) {\n return data !== undefined && data !== null;\n }\n\n /**\n * Public function `primitive`.\n *\n * Returns true if `data` is a primitive type, false otherwise.\n */\n function primitive (data) {\n var type;\n\n switch (data) {\n case null:\n case undefined:\n case false:\n case true:\n return true;\n }\n\n type = typeof data;\n return type === 'string' || type === 'number' || (haveSymbols && type === 'symbol');\n }\n\n /**\n * Public function `zero`.\n *\n * Returns true if `data` is zero, false otherwise.\n */\n function zero (data) {\n return data === 0;\n }\n\n /**\n * Public function `infinity`.\n *\n * Returns true if `data` is positive or negative infinity, false otherwise.\n */\n function infinity (data) {\n return data === neginf || data === posinf;\n }\n\n /**\n * Public function `number`.\n *\n * Returns true if `data` is a number, false otherwise.\n */\n function number (data) {\n return typeof data === 'number' && data > neginf && data < posinf;\n }\n\n /**\n * Public function `integer`.\n *\n * Returns true if `data` is an integer, false otherwise.\n */\n function integer (data) {\n return typeof data === 'number' && data % 1 === 0;\n }\n\n /**\n * Public function `even`.\n *\n * Returns true if `data` is an even number, false otherwise.\n */\n function even (data) {\n return typeof data === 'number' && data % 2 === 0;\n }\n\n /**\n * Public function `odd`.\n *\n * Returns true if `data` is an odd number, false otherwise.\n */\n function odd (data) {\n return integer(data) && data % 2 !== 0;\n }\n\n /**\n * Public function `greater`.\n *\n * Returns true if `lhs` is a number greater than `rhs`, false otherwise.\n */\n function greater (lhs, rhs) {\n return number(lhs) && lhs > rhs;\n }\n\n /**\n * Public function `less`.\n *\n * Returns true if `lhs` is a number less than `rhs`, false otherwise.\n */\n function less (lhs, rhs) {\n return number(lhs) && lhs < rhs;\n }\n\n /**\n * Public function `between`.\n *\n * Returns true if `data` is a number between `x` and `y`, false otherwise.\n */\n function between (data, x, y) {\n if (x < y) {\n return greater(data, x) && data < y;\n }\n\n return less(data, x) && data > y;\n }\n\n /**\n * Public function `greaterOrEqual`.\n *\n * Returns true if `lhs` is a number greater than or equal to `rhs`, false\n * otherwise.\n */\n function greaterOrEqual (lhs, rhs) {\n return number(lhs) && lhs >= rhs;\n }\n\n /**\n * Public function `lessOrEqual`.\n *\n * Returns true if `lhs` is a number less than or equal to `rhs`, false\n * otherwise.\n */\n function lessOrEqual (lhs, rhs) {\n return number(lhs) && lhs <= rhs;\n }\n\n /**\n * Public function `inRange`.\n *\n * Returns true if `data` is a number in the range `x..y`, false otherwise.\n */\n function inRange (data, x, y) {\n if (x < y) {\n return greaterOrEqual(data, x) && data <= y;\n }\n\n return lessOrEqual(data, x) && data >= y;\n }\n\n /**\n * Public function `positive`.\n *\n * Returns true if `data` is a positive number, false otherwise.\n */\n function positive (data) {\n return greater(data, 0);\n }\n\n /**\n * Public function `negative`.\n *\n * Returns true if `data` is a negative number, false otherwise.\n */\n function negative (data) {\n return less(data, 0);\n }\n\n /**\n * Public function `string`.\n *\n * Returns true if `data` is a string, false otherwise.\n */\n function string (data) {\n return typeof data === 'string';\n }\n\n /**\n * Public function `emptyString`.\n *\n * Returns true if `data` is the empty string, false otherwise.\n */\n function emptyString (data) {\n return data === '';\n }\n\n /**\n * Public function `nonEmptyString`.\n *\n * Returns true if `data` is a non-empty string, false otherwise.\n */\n function nonEmptyString (data) {\n return string(data) && data !== '';\n }\n\n /**\n * Public function `contains`.\n *\n * Returns true if `data` is a string that contains `substring`, false\n * otherwise.\n */\n function contains (data, substring) {\n return string(data) && data.indexOf(substring) !== -1;\n }\n\n /**\n * Public function `match`.\n *\n * Returns true if `data` is a string that matches `regex`, false otherwise.\n */\n function match (data, regex) {\n return string(data) && !! data.match(regex);\n }\n\n /**\n * Public function `boolean`.\n *\n * Returns true if `data` is a boolean value, false otherwise.\n */\n function boolean (data) {\n return data === false || data === true;\n }\n\n /**\n * Public function `object`.\n *\n * Returns true if `data` is a plain-old JS object, false otherwise.\n */\n function object (data) {\n return Object.prototype.toString.call(data) === '[object Object]';\n }\n\n /**\n * Public function `emptyObject`.\n *\n * Returns true if `data` is an empty object, false otherwise.\n */\n function emptyObject (data) {\n return object(data) && Object.keys(data).length === 0;\n }\n\n /**\n * Public function `nonEmptyObject`.\n *\n * Returns true if `data` is a non-empty object, false otherwise.\n */\n function nonEmptyObject (data) {\n return object(data) && Object.keys(data).length > 0;\n }\n\n /**\n * Public function `instanceStrict`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n */\n function instanceStrict (data, prototype) {\n try {\n return data instanceof prototype;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `instance`.\n *\n * Returns true if `data` is an instance of `prototype`, false otherwise.\n * Falls back to testing constructor.name and Object.prototype.toString\n * if the initial instanceof test fails.\n */\n function instance (data, prototype) {\n try {\n return instanceStrict(data, prototype) ||\n data.constructor.name === prototype.name ||\n Object.prototype.toString.call(data) === '[object ' + prototype.name + ']';\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Public function `like`.\n *\n * Tests whether `data` 'quacks like a duck'. Returns true if `data` has all\n * of the properties of `archetype` (the 'duck'), false otherwise.\n */\n function like (data, archetype) {\n var name;\n\n for (name in archetype) {\n if (archetype.hasOwnProperty(name)) {\n if (data.hasOwnProperty(name) === false || typeof data[name] !== typeof archetype[name]) {\n return false;\n }\n\n if (object(data[name]) && like(data[name], archetype[name]) === false) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Public function `array`.\n *\n * Returns true if `data` is an array, false otherwise.\n */\n function array (data) {\n return isArray(data);\n }\n\n /**\n * Public function `emptyArray`.\n *\n * Returns true if `data` is an empty array, false otherwise.\n */\n function emptyArray (data) {\n return array(data) && data.length === 0;\n }\n\n /**\n * Public function `nonEmptyArray`.\n *\n * Returns true if `data` is a non-empty array, false otherwise.\n */\n function nonEmptyArray (data) {\n return array(data) && greater(data.length, 0);\n }\n\n /**\n * Public function `arrayLike`.\n *\n * Returns true if `data` is an array-like object, false otherwise.\n */\n function arrayLike (data) {\n return assigned(data) && greaterOrEqual(data.length, 0);\n }\n\n /**\n * Public function `iterable`.\n *\n * Returns true if `data` is an iterable, false otherwise.\n */\n function iterable (data) {\n if (! haveSymbols) {\n // Fall back to `arrayLike` predicate in pre-ES6 environments.\n return arrayLike(data);\n }\n\n return assigned(data) && isFunction(data[Symbol.iterator]);\n }\n\n /**\n * Public function `includes`.\n *\n * Returns true if `data` contains `value`, false otherwise.\n */\n function includes (data, value) {\n var iterator, iteration, keys, length, i;\n\n if (! assigned(data)) {\n return false;\n }\n\n if (haveSymbols && data[Symbol.iterator] && isFunction(data.values)) {\n iterator = data.values();\n\n do {\n iteration = iterator.next();\n\n if (iteration.value === value) {\n return true;\n }\n } while (! iteration.done);\n\n return false;\n }\n\n keys = Object.keys(data);\n length = keys.length;\n for (i = 0; i < length; ++i) {\n if (data[keys[i]] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Public function `hasLength`.\n *\n * Returns true if `data` has a length property that equals `length`, false\n * otherwise.\n */\n function hasLength (data, length) {\n return assigned(data) && data.length === length;\n }\n\n /**\n * Public function `date`.\n *\n * Returns true if `data` is a valid date, false otherwise.\n */\n function date (data) {\n return instanceStrict(data, Date) && integer(data.getTime());\n }\n\n /**\n * Public function `function`.\n *\n * Returns true if `data` is a function, false otherwise.\n */\n function isFunction (data) {\n return typeof data === 'function';\n }\n\n /**\n * Public function `apply`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result array. If the same function is to be applied across all of the\n * data, a single predicate function may be passed in.\n *\n */\n function apply (data, predicates) {\n assert.array(data);\n\n if (isFunction(predicates)) {\n return data.map(function (value) {\n return predicates(value);\n });\n }\n\n assert.array(predicates);\n assert.hasLength(data, predicates.length);\n\n return data.map(function (value, index) {\n return predicates[index](value);\n });\n }\n\n /**\n * Public function `map`.\n *\n * Maps each value from the `data` to the corresponding predicate and returns\n * the result object. Supports nested objects. If the `data` is not nested and\n * the same function is to be applied across all of it, a single predicate\n * function may be passed in.\n *\n */\n function map (data, predicates) {\n assert.object(data);\n\n if (isFunction(predicates)) {\n return mapSimple(data, predicates);\n }\n\n assert.object(predicates);\n\n return mapComplex(data, predicates);\n }\n\n function mapSimple (data, predicate) {\n var result = {};\n\n Object.keys(data).forEach(function (key) {\n result[key] = predicate(data[key]);\n });\n\n return result;\n }\n\n function mapComplex (data, predicates) {\n var result = {};\n\n Object.keys(predicates).forEach(function (key) {\n var predicate = predicates[key];\n\n if (isFunction(predicate)) {\n if (not.assigned(data)) {\n result[key] = !!predicate.m;\n } else {\n result[key] = predicate(data[key]);\n }\n } else if (object(predicate)) {\n result[key] = mapComplex(data[key], predicate);\n }\n });\n\n return result;\n }\n\n /**\n * Public function `all`\n *\n * Check that all boolean values are true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function all (data) {\n if (array(data)) {\n return testArray(data, false);\n }\n\n assert.object(data);\n\n return testObject(data, false);\n }\n\n function testArray (data, result) {\n var i;\n\n for (i = 0; i < data.length; i += 1) {\n if (data[i] === result) {\n return result;\n }\n }\n\n return !result;\n }\n\n function testObject (data, result) {\n var key, value;\n\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n value = data[key];\n\n if (object(value) && testObject(value, result) === result) {\n return result;\n }\n\n if (value === result) {\n return result;\n }\n }\n }\n\n return !result;\n }\n\n /**\n * Public function `any`\n *\n * Check that at least one boolean value is true\n * in an array (returned from `apply`)\n * or object (returned from `map`).\n *\n */\n function any (data) {\n if (array(data)) {\n return testArray(data, true);\n }\n\n assert.object(data);\n\n return testObject(data, true);\n }\n\n function mixin (target, source) {\n Object.keys(source).forEach(function (key) {\n target[key] = source[key];\n });\n\n return target;\n }\n\n /**\n * Public modifier `assert`.\n *\n * Throws if `predicate` returns false.\n */\n function assertModifier (predicate, defaultMessage) {\n return function () {\n return assertPredicate(predicate, arguments, defaultMessage);\n };\n }\n\n function assertPredicate (predicate, args, defaultMessage) {\n var argCount = predicate.l || predicate.length;\n var message = args[argCount];\n var ErrorType = args[argCount + 1];\n assertImpl(\n predicate.apply(null, args),\n nonEmptyString(message) ? message : defaultMessage,\n isFunction(ErrorType) ? ErrorType : TypeError\n );\n return args[0];\n }\n\n function assertImpl (value, message, ErrorType) {\n if (value) {\n return value;\n }\n throw new (ErrorType || Error)(message || 'Assertion failed');\n }\n\n /**\n * Public modifier `not`.\n *\n * Negates `predicate`.\n */\n function notModifier (predicate) {\n var modifiedPredicate = function () {\n return notImpl(predicate.apply(null, arguments));\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function notImpl (value) {\n return !value;\n }\n\n /**\n * Public modifier `maybe`.\n *\n * Returns true if predicate argument is null or undefined,\n * otherwise propagates the return value from `predicate`.\n */\n function maybeModifier (predicate) {\n var modifiedPredicate = function () {\n if (not.assigned(arguments[0])) {\n return true;\n }\n\n return predicate.apply(null, arguments);\n };\n modifiedPredicate.l = predicate.length;\n\n // Hackishly indicate that this is a maybe.xxx predicate.\n // Without this flag, the alternative would be to iterate\n // through the maybe predicates or use indexOf to check,\n // which would be time-consuming.\n modifiedPredicate.m = true;\n\n return modifiedPredicate;\n }\n\n function maybeImpl (value) {\n if (assigned(value) === false) {\n return true;\n }\n\n return value;\n }\n\n /**\n * Public modifier `of`.\n *\n * Applies the chained predicate to members of the collection.\n */\n function ofModifier (target, type, predicate) {\n var modifiedPredicate = function () {\n var collection, args;\n\n collection = arguments[0];\n\n if (target === 'maybe' && not.assigned(collection)) {\n return true;\n }\n\n if (!type(collection)) {\n return false;\n }\n\n collection = coerceCollection(type, collection);\n args = slice.call(arguments, 1);\n\n try {\n collection.forEach(function (item) {\n if (\n (target !== 'maybe' || assigned(item)) &&\n !predicate.apply(null, [ item ].concat(args))\n ) {\n // TODO: Replace with for...of when ES6 is required.\n throw 0;\n }\n });\n } catch (ignore) {\n return false;\n }\n\n return true;\n };\n modifiedPredicate.l = predicate.length;\n return modifiedPredicate;\n }\n\n function coerceCollection (type, collection) {\n switch (type) {\n case arrayLike:\n return slice.call(collection);\n case object:\n return Object.keys(collection).map(function (key) {\n return collection[key];\n });\n default:\n return collection;\n }\n }\n\n function createModifiedPredicates (modifier, object) {\n return createModifiedFunctions([ modifier, predicates, object ]);\n }\n\n function createModifiedFunctions (args) {\n var modifier, object, functions, result;\n\n modifier = args.shift();\n object = args.pop();\n functions = args.pop();\n\n result = object || {};\n\n Object.keys(functions).forEach(function (key) {\n Object.defineProperty(result, key, {\n configurable: false,\n enumerable: true,\n writable: false,\n value: modifier.apply(null, args.concat(functions[key], messages[key]))\n });\n });\n\n return result;\n }\n\n function createModifiedModifier (modifier, modified) {\n return createModifiedFunctions([ modifier, modified, null ]);\n }\n\n function createOfPredicates (key) {\n predicates[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, null), predicates[key], predicates, null ]\n );\n }\n\n function createOfModifiers (base, modifier) {\n collections.forEach(function (key) {\n base[key].of = createModifiedModifier(modifier, predicates[key].of);\n });\n }\n\n function createMaybeOfModifiers (key) {\n maybe[key].of = createModifiedFunctions(\n [ ofModifier.bind(null, 'maybe'), predicates[key], predicates, null ]\n );\n assert.maybe[key].of = createModifiedModifier(assertModifier, maybe[key].of);\n assert.not[key].of = createModifiedModifier(assertModifier, not[key].of);\n }\n\n function exportFunctions (functions) {\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return functions;\n });\n } else if (typeof module !== 'undefined' && module !== null && module.exports) {\n module.exports = functions;\n } else {\n globals.check = functions;\n }\n }\n}(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/check-types/src/check-types.js\n// module id = 3\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/events/events.js\n// module id = 4\n// module chunks = 0","if(!global[\"btmShared\"]) global[\"btmShared\"] = {};\nmodule.exports = global[\"btmShared\"][\"userManager\"] = require(\"-!/usr/workdir/__shared/__app/node_modules/babel-loader/lib/index.js!./btm-user-manager.js\");","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"bam-browser-sdk-sdkSession-util\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"bam-browser-sdk-sdkSession-util\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"btm-user-manager\"] = factory(require(\"bam-browser-sdk-sdkSession-util\"));\n\telse\n\t\troot[\"btm-user-manager\"] = factory(root[\"bam-browser-sdk-sdkSession-util\"]);\n})(window, function(__WEBPACK_EXTERNAL_MODULE__4__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","module.exports = require(\"regenerator-runtime\");\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","/* eslint-disable import/no-extraneous-dependencies */\nimport sdkSessionUtil from 'bam-browser-sdk-sdkSession-util';\n\nlet _sdkSession;\n\nexport default async function getSdkSession() {\n\n if (!_sdkSession) {\n _sdkSession = await sdkSessionUtil.getSdkSession();\n }\n return _sdkSession;\n}\n","export default class UserManagerException {\n\n constructor(options) {\n\n const { code, message, source } = options;\n\n this.code = code;\n this.message = message;\n this.source = source;\n\n }\n\n}\n","import UserManagerException from './exceptions/UserManagerException';\nimport errorConstants from './exceptions/constants';\nimport getSdkSession from './utils/getSdkSession';\n\nconst Account = {\n\n getSdkSession,\n\n async getAccount() {\n const sdkSession = await Account.getSdkSession();\n const account = await sdkSession.accountApi.getAccount();\n return account;\n },\n\n /**\n *\n * @access public\n * @desc Gets the user's stored email from the SDK.\n * The current email & password must be provided for verification.\n * @returns {Promise} Resolves with email string.\n *\n */\n async getEmail() {\n const attributes = await Account.getAttributes();\n return attributes.email;\n },\n\n async getAttribute(key) {\n if (!key || (typeof key !== 'string')) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass an key to getAttribute.',\n source: 'getAttribute'\n });\n }\n\n const attributes = await Account.getAttributes();\n\n if (attributes[key] === undefined) {\n console.warn(`${key} attribute not found on account.`);\n }\n return attributes[key];\n },\n\n async getAttributes() {\n const account = await Account.getAccount();\n return account.attributes;\n },\n\n async setAttribute(key, newValue) {\n if ((typeof key !== 'string') || (newValue === undefined)) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass key and newValue<*> to setAttribute.',\n source: 'setAttribute'\n });\n }\n const newAttribute = {};\n newAttribute[key] = newValue;\n return Account.setAttributes(newAttribute);\n },\n\n async setAttributes(newAttributes) {\n if (!newAttributes || (typeof newAttributes !== 'object')) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass newAttributes to setAttributes that contains the key/value pairs of attributes you want to update.',\n source: 'setAttributes'\n });\n }\n const account = await Account.getAccount();\n const sdkSession = await Account.getSdkSession();\n const { accountApi } = sdkSession;\n for (const key in newAttributes) {\n if ({}.hasOwnProperty.call(newAttributes, key)) {\n account.attributes[key] = newAttributes[key];\n }\n }\n return accountApi.updateAccount(account);\n },\n\n async removeAttribute(key) {\n if ((typeof key !== 'string') || !key) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass key to removeAttribute.',\n source: 'removeAttribute'\n });\n }\n const account = await Account.getAccount();\n const sdkSession = await Account.getSdkSession();\n const { accountApi } = sdkSession;\n account.attributes[key] = null;\n return accountApi.updateAccount(account);\n }\n\n};\n\nexport default Account;\n","import UserManagerException from './exceptions/UserManagerException';\nimport errorConstants from './exceptions/constants';\nimport getSdkSession from './utils/getSdkSession';\n\nconst Activation = {\n\n getSdkSession,\n\n async activateToken(token) {\n if (!token || typeof token !== 'string') {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass token to activateToken function.',\n source: 'activateToken'\n });\n }\n const sdkSession = await Activation.getSdkSession();\n const { purchaseApi } = sdkSession;\n const activationResult = await purchaseApi.activateExternalToken(token);\n const activationError = activationResult.errors && activationResult.errors[0];\n if (activationError) {\n throw new UserManagerException({\n code: activationError.code,\n message: activationError.description,\n source: 'activateToken'\n });\n }\n return activationResult;\n },\n\n async getActivationToken() {\n const sdkSession = await Activation.getSdkSession();\n const { purchaseApi } = sdkSession;\n return purchaseApi.getExternalActivationToken();\n }\n\n};\n\nexport default Activation;\n","import UserManagerException from '../exceptions/UserManagerException';\nimport errorConstants from '../exceptions/constants';\nimport getSdkSession from '../utils/getSdkSession';\n\nconst Bam = {\n\n /**\n *\n * @returns {Object} - a reference to the SDK session singleton\n *\n */\n\n getSdkSession,\n\n /**\n *\n * @access public\n * @desc Determines whether the user has successfully logged in with the BAMTECH identity service.\n * Does not check localStorage.\n * @returns {Promise} Resolves true if logged in, false if logged out.\n *\n */\n async isLoggedIn() {\n const sdkSession = await Bam.getSdkSession();\n const loggedInState = await sdkSession.isAuthorized('bamIdentity');\n return loggedInState;\n },\n\n /**\n *\n * @access public\n * @param {String} email - The email entered by the user.\n * @desc Check against user service to determine if the email exists in our system.\n * @note Users who have unverified identities with OneID may be sent through One-Time Passcode flow.\n * @returns {Promise} Resolves with an array of flows.\n *\n */\n async getAuthenticationFlow(email) {\n if (!email || typeof email !== 'string') {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass email to getAuthenticationFlow function.',\n source: 'getAuthenticationFlow'\n });\n }\n const sdkSession = await Bam.getSdkSession();\n const { bamIdentityApi } = sdkSession;\n const flows = await bamIdentityApi.getAuthenticationFlow(email);\n return flows;\n },\n\n /**\n *\n * @access public\n * @param {String} email - The email associated with the identity.\n * @param {String} password - The password associated with the identity.\n * @desc exchanges an email and password for an identity token.\n * @returns {Promise} Resolves with an identity token.\n *\n */\n async authenticate(email, password) {\n if (\n !email ||\n !password ||\n typeof email !== 'string' ||\n typeof password !== 'string'\n ) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass email and password to authenticate function.',\n source: 'authenticate'\n });\n }\n const sdkSession = await Bam.getSdkSession();\n const { bamIdentityApi } = sdkSession;\n return bamIdentityApi.authenticate(email, password);\n },\n\n /**\n *\n * @access public\n * @param {String} identityToken - an identity token to be exchanged for an accountGrant\n * @desc Exchanges an identity token for an account grant.\n * @returns {Promise} Resolves with an access token.\n *\n */\n async authorize(identityToken) {\n if (!identityToken || typeof identityToken !== 'string') {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass identityToken to authorize.',\n source: 'authorize'\n });\n }\n const sdkSession = await Bam.getSdkSession();\n const { accountApi } = sdkSession;\n try {\n const result = await accountApi.authorize(identityToken, 'bamIdentity');\n return result;\n } catch (error) {\n if (\n error &&\n error.reasons &&\n error.reasons[0] &&\n error.reasons[0].code === 'account.not.found'\n ) {\n await accountApi.createAccount(identityToken);\n return await accountApi.authorize(identityToken, 'bamIdentity');\n } else {\n throw error;\n }\n }\n },\n\n /**\n *\n * @access public\n * @param {String} email - The email associated with the identity.\n * @param {String} password - The password associated with the identity.\n * @desc Logs the user in with the BAMTECH identity service.\n * @note Creates Bam identity token, exchanges for an account grant.\n * @returns {Promise} Resolves with the called SDK authentiate function.\n *\n */\n async login(email, password) {\n if (\n !email ||\n !password ||\n typeof email !== 'string' ||\n typeof password !== 'string'\n ) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass email and password to login function.',\n source: 'login'\n });\n }\n const identityTokenObject = await Bam.authenticate(email, password);\n const { token } = identityTokenObject;\n return Bam.authorize(token);\n },\n\n /**\n *\n * @access public\n * @desc Logs the user out by resetting the access token to an anonymous state.\n * @returns {Promise} Resolves with the called SDK reset function.\n *\n */\n async logout() {\n const sdkSession = await Bam.getSdkSession();\n return sdkSession.reset();\n },\n\n /**\n *\n * @access public\n * @param {String} email - The email to create a new identity for.\n * @param {String} password - The password to create for the new identity.\n * @desc Creates a Bam Identity with the credentials provided.\n * @note Registers a new Bam identity, obtains an identity token, creates a new account,\n * exchanges for an account grant, and exchanges account grant for a new AccessContext.\n * @returns {Promise} Resolves with the called SDK createIdentity function.\n *\n */\n async createIdentity(email, password, attributes) {\n if (\n !email ||\n !password ||\n !attributes ||\n typeof email !== 'string' ||\n typeof password !== 'string' ||\n typeof attributes !== 'object'\n ) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass email, password, and attributes to createIdentity function.',\n source: 'createIdentity'\n });\n }\n const sdkSession = await Bam.getSdkSession();\n const { bamIdentityApi } = sdkSession;\n const identityTokenObject = await bamIdentityApi.createIdentity({\n attributes,\n email,\n password\n });\n const { token } = identityTokenObject;\n return Bam.authorize(token);\n },\n\n /**\n *\n * @access public\n * @param {String} email - The email associated with the identity that needs to reset the password.\n * @desc Given an email for the user, requests a password reset email.\n * @note Requests a password reset with the bam identity service. This is part of the email clickback flow.\n * The rest of the flow is completed by the user after receiving the email.\n * @returns {Promise} Resolves with the called SDK requestPasswordReset function.\n *\n */\n async requestPasswordReset(email) {\n if (!email || typeof email !== 'string') {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass email to requestPasswordReset function.',\n source: 'requestPasswordReset'\n });\n }\n const sdkSession = await Bam.getSdkSession();\n return sdkSession.bamIdentityApi.requestPasswordReset(email);\n },\n\n /**\n *\n * @access public\n * @param {String} newPassword - The new password to associate with the existing identity.\n * @param {String} resetToken - The reset token provided via email to verify the owner of the account.\n * @desc Following a requestPasswordReset, use this method to update the\n * user's password with the token provided in the password reset email.\n * @note Requests a password update using the token supplied and the new password.\n * @returns {Promise} Resolves with the called SDK resetPassword function.\n *\n */\n async resetPassword(newPassword, resetToken) {\n if (\n !newPassword ||\n !resetToken ||\n typeof newPassword !== 'string' ||\n typeof resetToken !== 'string'\n ) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass newPassword and resetToken to resetPassword function.',\n source: 'resetPassword'\n });\n }\n const sdkSession = await Bam.getSdkSession();\n return sdkSession.bamIdentityApi.resetPassword(newPassword, resetToken);\n },\n\n /**\n *\n * @access public\n * @param {String} email - User's email\n * @param {String} reason - Either \"Login\" or \"ForgotPassword\"\n * @desc Request one time passcode to the specified email\n * @note Step one of the one time passcode flow.\n * @returns {Promise} Resolves with the called SDK requestOneTimePasscode function.\n *\n */\n async requestOneTimePasscode(email, reason) {\n if (\n !email ||\n !reason ||\n typeof email !== 'string' ||\n typeof reason !== 'string'\n ) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass email and reason to requestOneTimePasscode function.',\n source: 'requestOneTimePasscode'\n });\n }\n\n const sdkSession = await Bam.getSdkSession();\n const { bamIdentityApi } = sdkSession;\n\n return bamIdentityApi.requestOneTimePasscode(email, reason);\n },\n\n /**\n *\n * @access public\n * @param {String} email - User's email\n * @param {String} passcode - One time passcode is a six digit string\n * @desc Redeems a one time passcode for an identity token\n * @note Step two of the one time passcode flow.\n * @returns {Promise} Resolves with the identity token.\n *\n */\n async authenticateWithPasscode(email, passcode) {\n if (\n !email ||\n !passcode ||\n typeof email !== 'string' ||\n typeof passcode !== 'string'\n ) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass email and passcode to authenticateWithPasscode function.',\n source: 'authenticateWithPasscode'\n });\n }\n\n const sdkSession = await Bam.getSdkSession();\n const { bamIdentityApi } = sdkSession;\n\n return bamIdentityApi.authenticateWithPasscode(email, passcode);\n },\n\n /**\n *\n * @access public\n * @desc Indicates if authentication is needed\n * @note Certain actions require that the user authenticated recently\n * This method will return true if the user is requried to re-authenticate\n * @returns {Promise} Resolves with called SDK requiresAuthentication function.\n *\n */\n async requiresAuthentication() {\n const sdkSession = await Bam.getSdkSession();\n const { bamIdentityApi } = sdkSession;\n\n return bamIdentityApi.requiresAuthentication();\n },\n\n /**\n *\n * @access public\n * @param {String} newEmail - The new email to change the identity to use.\n * @param {String} password - The current password for verification purposes.\n * @desc Updates the user's email for the BAMTECH Identity.\n * The current email & password must be provided for verification.\n * @note Gets an identity token using the login credentials, issues request to\n * change email using that identity token and the new email.\n * @returns {Promise} Resolves with called SDK updateEmail function.\n *\n */\n async updateEmail(newEmail, password) {\n if (\n !newEmail ||\n !password ||\n typeof newEmail !== 'string' ||\n typeof password !== 'string'\n ) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass newEmail and password to updateEmail function.',\n source: 'updateEmail'\n });\n }\n const sdkSession = await Bam.getSdkSession();\n return sdkSession.bamIdentityApi.updateEmail(newEmail, password);\n },\n\n /**\n *\n * @access public\n * @param {String} newPassword - The new password to associate with the current identity.\n * @param {String} [oldPassword] - The current password for verification purposes.\n * @desc Updates the user's password for the BAMTECH Identity.\n * The current email & password must be provided for verification.\n * @note Gets an identity token using the login credentials, issues request to\n * change password using that identity token and the new password.\n * @returns {Promise} Resolves with called SDK updatePassword function.\n *\n */\n async updatePassword(newPassword, oldPassword) {\n if (!newPassword || typeof newPassword !== 'string') {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass newPassword to updatePassword function.',\n source: 'updatePassword'\n });\n }\n if (oldPassword && typeof oldPassword !== 'string') {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'oldPassword must be of type string.',\n source: 'updatePassword'\n });\n }\n const sdkSession = await Bam.getSdkSession();\n return sdkSession.bamIdentityApi.updatePassword(newPassword, oldPassword);\n },\n\n async getAttribute(key) {\n if (!key || typeof key !== 'string') {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass key to getAttribute.',\n source: 'getAttribute'\n });\n }\n const attributes = await Bam.getAttributes();\n const attribute = attributes[key];\n if (attribute === undefined) {\n console.error(`${key} attribute not found on bamIdentityApi.`);\n }\n return attribute;\n },\n\n async getAttributes() {\n const sdkSession = await Bam.getSdkSession();\n const { bamIdentityApi } = sdkSession;\n return bamIdentityApi.attributes;\n },\n\n async setAttribute(key, newValue) {\n if ((typeof key !== 'string') || (newValue === undefined)) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass key and newValue<*> to setAttribute.',\n source: 'setAttribute'\n });\n }\n const newAttribute = {};\n newAttribute[key] = newValue;\n return Bam.setAttributes(newAttribute);\n },\n\n async setAttributes(newAttributes) {\n if (!newAttributes || (typeof newAttributes !== 'object')) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass newAttributes to setAttributes that contains the key/value pairs of attributes you want to update.',\n source: 'setAttributes'\n });\n }\n const sdkSession = await Bam.getSdkSession();\n const { bamIdentityApi } = sdkSession;\n const identity = await bamIdentityApi.getIdentity();\n identity.attributes = newAttributes;\n return bamIdentityApi.updateIdentity(identity);\n },\n\n async getIdentityAttributes() {\n const sdkSession = await Bam.getSdkSession();\n const { bamIdentityApi } = sdkSession;\n const identity = await bamIdentityApi.getIdentity();\n const attributes = identity.attributes;\n\n return attributes;\n }\n\n};\n\nexport default Bam;\n","import getSdkSession from './utils/getSdkSession';\n\nconst Eligibility = {\n\n getSdkSession,\n\n async getEligibilityStatus() {\n const { purchaseApi } = await Eligibility.getSdkSession();\n\n return purchaseApi.getEligibilityStatus();\n }\n};\n\nexport default Eligibility;\n","export default {\n INVALID_INPUT: 'invalid-input'\n};\n","export default function isExpired(timestamp) {\n const currentDate = new Date();\n const expirationDate = Date.parse(timestamp);\n return currentDate > expirationDate;\n}\n","import UserManagerException from './exceptions/UserManagerException';\nimport errorConstants from './exceptions/constants';\nimport getSdkSession from './utils/getSdkSession';\nimport isExpired from './utils/isExpired';\n\nconst localStorageSubscriptionsKey = '__btm__web_user_subscriptions';\n\nconst Subscription = {\n\n getSdkSession,\n\n isExpired,\n\n localStorageSubscriptionsKey,\n\n async getSubscriptions() {\n const sdkSession = await Subscription.getSdkSession();\n const { subscriptionApi } = sdkSession;\n const subs = await subscriptionApi.getSubscriptions();\n return subs;\n },\n\n async setSubscriptionsInLocalStorage(subscriptions, externalId) {\n if (!Array.isArray(subscriptions) || (typeof externalId !== 'string')) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass subscriptions and externalId to setSubscriptionsInLocalStorage.',\n source: 'setSubscriptionsInLocalStorage'\n });\n }\n const activeSubscriptions = subscriptions.filter((sub) => {\n return sub.isActive &&\n sub.status.type === 'SUBSCRIBED' &&\n sub.products[0] &&\n sub.products[0].entitlements[0] &&\n sub.products[0].entitlements[0].name;\n }).map((sub) => {\n return sub.products[0].entitlements[0].name;\n });\n const expires = new Date();\n expires.setDate(expires.getDate() + 1);\n const localStorageSubscriptionsObj = {\n expires,\n data: {\n externalId,\n activeSubscriptions\n }\n };\n\n const stringifiedSubscriptionsObj = JSON.stringify(localStorageSubscriptionsObj);\n localStorage.setItem(localStorageSubscriptionsKey, stringifiedSubscriptionsObj);\n return true;\n },\n\n async getSubscriptionsFromLocalStorage() {\n\n const localStorageItem = JSON.parse(localStorage.getItem(localStorageSubscriptionsKey));\n if (localStorageItem && !isExpired(localStorageItem.expires)) {\n return localStorageItem;\n }\n\n return null;\n },\n\n async removeSubscriptionsFromLocalStorage() {\n return localStorage.removeItem(localStorageSubscriptionsKey);\n }\n\n};\n\nexport default Subscription;\n","import UserManagerException from '../exceptions/UserManagerException';\nimport errorConstants from '../exceptions/constants';\nimport getSdkSession from '../utils/getSdkSession'; // reference in this module as `External.getSdkSession`\nimport isExpired from '../utils/isExpired'; // reference in this module as `External.isExpired`\nimport subscription from '../subscription';\n\nconst localStorageExternalIdKey = '__btm__web_user_externalId';\n\nconst External = {\n\n defaultProvider: undefined, // <-- setProvider\n\n localStorageExternalIdKey,\n\n /**\n *\n * @returns {Object} - a reference to the SDK session singleton\n *\n */\n\n getSdkSession,\n\n /**\n *\n * @returns {Function} - a function to determine if a token is expired\n *\n */\n\n isExpired,\n\n /**\n *\n * @access public\n * @param {String} prodiver - Unique identifier representing the provider\n * @desc Sets the defaultProvider module-scoped variable.\n * @returns {Promise} resolves with true if provider set or error if provider param is falsy.\n *\n */\n async setProvider(provider) {\n if (!provider) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'Please specify a provider.',\n source: 'setProvider'\n });\n }\n External.defaultProvider = provider;\n return true;\n },\n\n /**\n *\n * @access public\n * @param {String} key - The key to retrieve from localStorage\n * @desc Gets the external id from local storage.\n * @returns {Promise} resolves with the external id if successful or if not rejects with an error.\n *\n */\n async getExternalIdFromLocalStorage() {\n\n const localStorageItem = JSON.parse(localStorage.getItem(External.localStorageExternalIdKey));\n\n if (!localStorageItem || External.isExpired(localStorageItem.expires)) {\n return null;\n }\n const { externalId } = localStorageItem.data;\n return externalId;\n },\n\n /**\n *\n * @access public\n * @param {String} externalId - A new external id to set in localStorage\n * @desc Sets or updates the externalID in localStorage\n * @returns {Promise} resolves with true if successful or if not rejects with an error.\n *\n */\n async setExternalIdInLocalStorage(externalId) {\n if (!externalId) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass externalId to setExternalIdinLocalStorage function.',\n source: 'setExternalIdInLocalStorage'\n });\n }\n const expires = new Date();\n expires.setHours(expires.getHours() + 4);\n const localStorageItem = {\n data: {\n externalId\n },\n expires\n };\n const stringifiedStorageItem = JSON.stringify(localStorageItem);\n localStorage.setItem(External.localStorageExternalIdKey, stringifiedStorageItem);\n return true;\n },\n\n /**\n *\n * @access public\n * @param {String} externalId - Unique identifier value from the external identity provider\n * @desc Checks the externalId paramter value against the externalId value in local storage\n * @returns {Promise} Resolves with true if swids match, false if they don't, or rejects with any error.\n * matches the value in local storage.\n *\n */\n async checkExternalIdMatches(externalId) {\n /**\n * Cases Handled\n * --------------\n * 1) iframe created without giving us a swid:\n * log user out and delete swid from localStorage\n * 2) we don't have a swid stored:\n * store the swid they gave us\n * 3) we have a different swid than one they gave us:\n * update our swid to match theirs\n * 4) our swid matches their swid:\n * return true\n */\n const _externalId = externalId ? String(externalId).trim() : '';\n if (!_externalId) {\n localStorage.removeItem(External.localStorageExternalIdKey);\n return false;\n }\n const storedId = await External.getExternalIdFromLocalStorage();\n if (!storedId || storedId !== _externalId) {\n External.setExternalIdInLocalStorage(_externalId);\n return false;\n }\n return true;\n },\n\n /**\n *\n * @access public\n * @param {String} provider - The external identity provider ID\n * (if a defaultProvider was set earlier, it will be used in lieu of a param value)\n * @desc Tests whether the current user is logged in / authorized with the given\n * external identity provider\n * @returns {Promise} Returns a function that returns a promise or rejects with an error.\n * currently authorized with the given provider ID\n *\n */\n async isLoggedIn(provider = External.defaultProvider) {\n if (!provider) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass a provider to isLoggedIn or set a default provider with setProvider.',\n source: 'isLoggedIn'\n });\n }\n const sdkSession = await External.getSdkSession();\n return sdkSession.isAuthorized(provider);\n },\n\n /**\n *\n * @access public\n * @param {String} externalToken - JWT token from the external identity provider\n * @param {String} externalId - Unique identifier value from the external identity provider\n * @param {String} provider - The external identity provider ID\n * (if a defaultProvider was set earlier, it will be used in lieu of a param value)\n * @desc Authorizes the user via a third-party identity token\n * Exchanges the external JWT token for a registered Bamtech access token\n * Stores the externalId into local storage to prevent excessive logins\n * @returns {Promise} Resolves with true if successfully logged in, otherwise rejects with error.\n *\n */\n async login(externalToken, externalId, provider = External.defaultProvider) {\n if (!externalToken || !externalId || !provider) {\n // eslint-disable-next-line max-len\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass externalToken and externalId to login, and you must also either pass provider or set it beforehand with setProvider.',\n source: 'login'\n });\n }\n return await Promise.all([\n External.isLoggedIn(provider),\n External.getSdkSession(),\n External.getExternalIdFromLocalStorage()\n ]).then(async ([isLoggedIn, sdkSession, storedId]) => {\n if (!isLoggedIn || !storedId || storedId !== externalId) {\n return await sdkSession.accountApi.authorize(\n externalToken,\n provider\n ).then(() => {\n return External.setExternalIdInLocalStorage(externalId);\n }).catch((error) => {\n if (\n error &&\n error.reasons &&\n error.reasons[0] &&\n error.reasons[0].code === 'account.not.found'\n ) {\n return sdkSession.accountApi.createAccount(externalToken).then(() => {\n return sdkSession.accountApi.authorize(externalToken, provider);\n });\n } else {\n throw error;\n }\n });\n }\n return true;\n });\n },\n\n /**\n *\n * @access public\n * @desc Logs the user out and resets the access token to an anonymous state.\n * @returns {Promise} A promise that resolves with true or rejects with an error.\n *\n */\n async logout() {\n const sdkSession = await External.getSdkSession();\n return Promise.all([\n sdkSession.reset(),\n subscription.removeSubscriptionsFromLocalStorage()\n ]).then(() => {\n localStorage.removeItem(External.localStorageExternalIdKey);\n });\n },\n\n /**\n *\n * @access public\n * @param {Boolean} externalLoggedIn - A boolean indicating whether the user is currently\n * logged in or logged out via the external provider.\n * @param {String} externalToken - JWT token from the external identity provider\n * @param {String} externalId - Unique identifier value from the external identity provider\n * @param {String} provider - The external identity provider ID\n * (if a defaultProvider was set earlier, it will be used in lieu of a param value)\n * @desc Syncs the user's access state in the Bamtech SDK to match the state of the external auth.\n * @returns {Promise} Resolves with a function that returns a promise or rejects with an error.\n *\n */\n async syncExternalToBtm(externalLoggedIn, externalToken, externalId, provider = External.defaultProvider) {\n if (typeof externalLoggedIn !== 'boolean') {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass externalLoggedIn as the first param to syncExternalToBtm',\n source: 'syncExternalToBtm'\n });\n }\n if (!provider) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass provider to syncExternalToBtm function or set it prior to calling syncExternalToBtm.',\n source: 'syncExternalToBtm'\n });\n }\n if (externalLoggedIn && (!externalToken || !externalId)) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass externalToken and externalId to syncExternalToBtm function when externalLoggedIn is true.',\n source: 'syncExternalToBtm'\n });\n }\n const isLoggedInBtm = await External.isLoggedIn(provider);\n if (externalLoggedIn) {\n if (!isLoggedInBtm) {\n // If user is logged in via external but not Bamtech, log them in on Bamtech\n return External.login(externalToken, externalId, provider);\n }\n /**\n * If different users are logged in on external side and Bamtech side,\n * log them out on Bamtech side, then log them back in using the external token,\n * and store the new externalId to local storage\n */\n const localStorageVal = await External.getExternalIdFromLocalStorage();\n if (!localStorageVal || externalId !== localStorageVal) {\n await External.logout();\n return External.login(externalToken, externalId, provider);\n }\n return true;\n } else {\n if (isLoggedInBtm) {\n /**\n * If user is logged in on Bamtech side but not external side,\n * log the user out on Bamtech side and delete the externalId\n * from local storage\n */\n return External.logout();\n }\n return true;\n }\n }\n};\n\nexport default External;\n","import UserManagerException from './exceptions/UserManagerException';\nimport errorConstants from './exceptions/constants';\nimport getSdkSession from './utils/getSdkSession';\n\nconst Profile = {\n\n getSdkSession,\n\n /**\n * @description Gets the active profile.\n * @returns {Promise}\n */\n async getActiveProfile() {\n\n const { userProfileApi } = await Profile.getSdkSession();\n\n return userProfileApi.getActiveUserProfile();\n\n },\n\n /**\n * @description Gets all the account profiles.\n * @returns {Promise}\n */\n async getProfiles() {\n\n const { userProfileApi } = await Profile.getSdkSession();\n\n return userProfileApi.getUserProfiles();\n },\n\n /**\n * @description Gets a profile from userProfileApi.\n * @param {String} id - the profile id\n * @returns {Promise} - the user profile\n */\n async getProfile(id) {\n\n if (!id || (typeof id !== 'string')) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass id to getProfile.',\n source: 'getProfile'\n });\n }\n\n const { userProfileApi } = await Profile.getSdkSession();\n\n return userProfileApi.getUserProfile(id);\n\n },\n\n /**\n * @description Creates a new user profile.\n * @note Both attributes and metadata are optional parameters.\n * @param {String} name - profile name\n * @param {Object} attributes - optional profile attributes\n * @param {Object} metadata - optional metadata\n * @returns {Promise} - returns a user profile\n */\n async createProfile(name, attributes, metadata) {\n\n if (!name || (typeof name !== 'string')) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass name to createProfile.',\n source: 'createProfile'\n });\n }\n\n if (\n (attributes && (typeof attributes !== 'object')) ||\n (metadata && (typeof metadata !== 'object'))\n ) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'Optional params attributes and metadata must be of correct type for createProfile function.',\n source: 'createProfile'\n });\n }\n const { userProfileApi } = await Profile.getSdkSession();\n\n return userProfileApi.createUserProfile(name.trim(), attributes, metadata);\n\n },\n\n /**\n * @description Sets the active user profile.\n * @param {Object} profile - the profile to set active\n * @returns {Promise}\n */\n async setActiveProfile(profile) {\n\n if (!profile || (typeof profile !== 'object')) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass profile to setActiveProfile.',\n source: 'setActiveProfile'\n });\n }\n\n const { userProfileApi } = await Profile.getSdkSession();\n\n return userProfileApi.setActiveUserProfile(profile);\n\n },\n\n /**\n * @description Delete a profile.\n * @param {Object} profile - the profile to delete\n * @return {Promise}\n */\n async deleteProfile(profile) {\n\n if (!profile || (typeof profile !== 'object')) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass profile to deleteProfile.',\n source: 'deleteProfile'\n });\n }\n\n const { userProfileApi } = await Profile.getSdkSession();\n\n return userProfileApi.deleteUserProfile(profile);\n\n },\n\n /**\n * @description Updates a profile's attributes.\n * @param {String} id - profile id\n * @param {Object} attributes - attributes to update\n * @param {Class} UserProfile - have to inject this here until SDK updated\n * @returns {Promise}\n */\n async updateAttributes(id, attributes, UserProfile) {\n\n if (\n !id ||\n (typeof id !== 'string') ||\n !attributes ||\n (typeof attributes !== 'object')\n ) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass id and attributes to updateAttributes.',\n source: 'updateAttributes'\n });\n }\n\n const sdkSession = await Profile.getSdkSession();\n const { userProfileApi } = sdkSession;\n const initialProfile = await Profile.getProfile(id);\n const updatedAttributes = { ...initialProfile.attributes, ...attributes };\n const updatedProfile = new UserProfile({ ...initialProfile, attributes: updatedAttributes });\n\n return userProfileApi.updateUserProfile(updatedProfile);\n\n },\n\n /**\n * @description Updates a profile name.\n * @param {String} id - profile id\n * @param {String} newName - new profile name\n * @param {Class} UserProfile - have to inject this here until SDK updated\n * @returns {Promise}\n */\n async updateName(id, newName, UserProfile) {\n\n if (\n !id ||\n (typeof id !== 'string') ||\n !newName ||\n (typeof newName !== 'string')\n ) {\n throw new UserManagerException({\n code: errorConstants.INVALID_INPUT,\n message: 'You must pass id and newName to updateName.',\n source: 'updateName'\n });\n }\n\n const sdkSession = await Profile.getSdkSession();\n const { userProfileApi } = sdkSession;\n const initialProfile = await Profile.getProfile(id);\n const updatedProperties = { ...initialProfile, profileName: newName.trim() };\n const updatedProfile = new UserProfile(updatedProperties);\n\n return userProfileApi.updateUserProfile(updatedProfile);\n\n }\n\n};\n\nexport default Profile;\n","import getSdkSession from './utils/getSdkSession';\n\nconst Session = {\n\n /**\n *\n * @returns {Object} - a reference to the SDK session singleton\n *\n */\n\n getSdkSession,\n\n /**\n *\n * @access public\n * @desc Returns the current session info\n * @returns {Promise} Returns a promise that resolves with the session info\n *\n */\n async getSessionInfo() {\n const sdkSession = await Session.getSdkSession();\n const sessionInfo = await sdkSession.getSessionInfo();\n return sessionInfo;\n }\n\n};\n\nexport default Session;\n","import getSdkSession from './utils/getSdkSession';\n\nconst Token = {\n\n /**\n *\n * @returns {Object} - a reference to the SDK session singleton\n *\n */\n\n getSdkSession,\n\n /**\n *\n * @access public\n * @desc Returns the current access state from local storage\n * @returns {Promise} Returns a promise that resolves with the user's access state\n *\n */\n async getAccessState() {\n const sdkSession = await Token.getSdkSession();\n return sdkSession.getAccessState();\n },\n\n /**\n *\n * @access public\n * @desc Gets an access token from SDK Session.\n * @returns {Promise} Resolves with access Token.\n *\n */\n async getAccessToken() {\n const sdkSession = await Token.getSdkSession();\n return await sdkSession.getSessionToken();\n }\n\n};\n\nexport default Token;\n","import UserManagerException from './exceptions/UserManagerException';\nimport getSdkSession from './utils/getSdkSession';\n\nimport account from './account';\nimport activation from './activation';\nimport bam from './identity/bam';\nimport eligibility from './eligibility';\nimport external from './identity/external';\nimport profile from './profile';\nimport session from './session';\nimport subscription from './subscription';\nimport token from './token';\n\nclass UserManager {\n\n constructor() {\n\n this.account = account;\n this.activation = activation;\n this.bam = bam;\n this.eligibility = eligibility;\n this.external = external;\n this.getSdkSession = getSdkSession;\n this.profile = profile;\n this.session = session;\n this.subscription = subscription;\n this.token = token;\n\n }\n\n}\n\nconst instance = new UserManager();\n\nexport default instance;\n\nexport { UserManagerException };\n","if(!global[\"btmShared\"]) global[\"btmShared\"] = {};\nmodule.exports = global[\"btmShared\"][\"dssDevice\"] = require(\"-!/usr/workdir/__shared/__app/node_modules/babel-loader/lib/index.js!./main.js\");","!function(e,o){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=o();else if(\"function\"==typeof define&&define.amd)define([],o);else{var n=o();for(var i in n)(\"object\"==typeof exports?exports:e)[i]=n[i]}}(this,function(){return function(e){var o={};function n(i){if(o[i])return o[i].exports;var r=o[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=o,n.d=function(e,o,i){n.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:i})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,o){if(1&o&&(e=n(e)),8&o)return e;if(4&o&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&o&&\"string\"!=typeof e)for(var r in e)n.d(i,r,function(o){return e[o]}.bind(null,r));return i},n.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(o,\"a\",o),o},n.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},n.p=\"\",n(n.s=0)}([function(e,o,n){\"use strict\";n.r(o),n.d(o,\"getDevice\",function(){return i});var i=function(){var e={},o=null,n=null,i=navigator.userAgent,r=function(e,o){return new RegExp(e,o||\"i\")},t={ios:\"iP(?:hone|ad|od)\",bb:\"(?:BlackBerry|BB10| RIM )\",android:\"Android\",windows:\"Windows\",winpdsk:\"WPDesktop\",winpold:\"Windows Phone\",winphone:\"Trident(?:.*?Touch(?:.*?Mobile))\",linux:\"Linux(?!.*Android)\",mac:\"Macintosh\",chromebook:\"CrOS\"},s=\"(?:\"+[t.mac,t.windows,t.linux,t.chromebook].join(\"|\")+\")\",a=/[._]/,d={windowsphone:r(t.winphone+\"|\"+t.winpold+\"|\"+t.winpdsk),windows:r(t.windows),ios:r(t.ios),blackberry:r(t.bb),android:r(t.android),linux:r(t.linux),macintosh:r(t.mac),chromebook:r(t.chromebook)},u={desktop:/(?:Windows NT(?!.*WPDesktop)(?!.*Xbox))/i,tablet:r(\"(\"+[\"Tablet|iPad\",\"\\\\sNT.*?\"+t.winphone,t.android+\"(?!.*Mobi)\",\"silk\",t.bb+\".*?Tablet\",\"xbox\"].join(\"|\")+\")\"),phone:r(\"(\"+[\"Mobi|Mobile\",\"WPDesktop\",t.ios,t.winphone,t.bb].join(\"|\")+\")\")},l={tablet:r(\"(\"+[\"Tablet|iPad\",\"\\\\sNT.*?\"+t.winphone,t.android+\"(?!.*Mobi)\",\"silk\",t.bb+\".*?Tablet\"].join(\"|\")+\")\"),phone:r(\"(\"+[\"Mobi|Mobile\",t.ios,t.winphone,t.bb].join(\"|\")+\")\"),desktop:r(s)},c={msie:/msie|iemobile|trident/i,edge:/edge/i,android:/android(?!.+(?:chrome|silk))/i,chrome:/chrome|crios/i,firefox:/firefox/i,opera:/opera(?!.*?mini)\\//i,operamini:/opera mini/i,silk:/silk/i,safari:/safari/i},p={webkit:/AppleWebKit/i,gecko:/gecko\\//i,trident:/trident/i,edge:/Edge/i},b={desktop:\"desktop\",other:\"desktop\",phone:\"phone\",tablet:\"tablet\"},f=function(e){var o=e.split(a).slice(0,3);return e&&o.length<2&&o.push(0),o.join(\".\")},m=function(o){var n,r,t,s=i;for(n in o)({}).hasOwnProperty.call(o,n)&&(r=o[n].test(s),e[n]=e[n]||r&&!t,r&&!t&&(t=n));return t},h=function(e,o){return function(e,o){return e&&o?e[o]:e}(e.exec(i),o)||\"\"};return{userAgent:i,platform:n=m(d)||\"desktop\",platformVersion:f(h(r(\"(?:\"+(e.blackberry?\"version\":n)+\"|\"+t.winpold+\"|OS)[^\\\\d]+([\\\\d\\\\.\\\\_]+)\",\"ig\"),1)),browser:(m(p),o=m(c)||\"desktop\"),browserVersion:function(){var n=o,i=\"[\\\\/\\\\s]\";return e.chrome&&e.ios?n=\"crios\":e.opera?n=\"version\":e.msie&&(n+=\"|IEMobile|rv\",i=\"[\\\\/\\\\:\\\\s]\"),f(h(r(\"(?:\"+n+\"|version)\"+i+\"([\\\\d\\\\.]+)\",\"i\"),1))}(),formFactor:function(){var o=\"\";return o=e.msie?u:l,b[m(o)]||b.other}(),screenOrientation:window.matchMedia(\"(orientation: portrait)\").matches?\"portrait\":\"landscape\"}}}])});","function customEventPolyfill() {\n\n const window = window || {}; // eslint-disable-line no-use-before-define\n\n if (typeof window.CustomEvent === 'function') return false;\n\n function CustomEvent(event, params) {\n const parameters = params || { bubbles: false, cancelable: false, detail: null };\n const evt = document.createEvent('CustomEvent');\n\n evt.initCustomEvent(event, parameters.bubbles, parameters.cancelable, parameters.detail);\n\n return evt;\n }\n\n window.CustomEvent = CustomEvent;\n\n return true;\n}\n\ncustomEventPolyfill();\n"],"sourceRoot":""}